基于SSM+Vue的在线课堂学习做题系统Java试题答疑管理系统(源码调试+讲解+文档)

💕💕作者:计算机源码社
💕💕个人简介:本人七年开发经验,擅长Java、微信小程序、Python、Android等,大家有这一块的问题可以一起交流!
💕💕学习资料、程序开发、技术解答、代码讲解、文档报告

💕💕JavaWeb项目
💕💕微信小程序项目
💕💕Python项目
💕💕Android项目

1、绪论

1.1 项目背景

   随着计算机行业的发展,知识的获取手段不仅局限于纸质笔记,越来越多的学生也喜欢在计算机平台上进行学习,继而衍生出各式各样的学习网站和系统。该类产品的诞生也推动了整个学习模式从传统线下转向信息化,给学生提供学习经验分享的新型沟通平台,打破无形的信息屏障。现如今社会处于紧急疫情防控状态,为了避免出现有接触学习方式,为了方便用户学习,就是在互联网时代,借助计算机手段设计一个基于SSM+Vue的在线课堂学习做题系统,达到方便、灵活、高效、实用的效果,符合当今智能化和现代化管理模式。

1.2 项目意义

  本系统主要根据用户和管理员的需求做出分析,让用户更好的在线查看课程视频、在线做题、在线答疑等,管理人员更好的管理信息,还可以给用户提供课程资料的学习,在线交流问答等功能。管理员对信息进行管理等。从这个系统的操作来说:它能够有效的进行信息的添加、修改、查询、删除一些信息并进行管理,在一定的程序上能够实现了自动化。设计该系统的主要目的是为实现通过网络来减少人力和财力的投入,不断提高工作效率。 最终我们希望通过在线课堂设计与实现可以达到以下目的:
1、提高在在线课堂学习做题系统设计与实现信息管理的效率,实现管理上的井井有条。
2、实现用户通过计算机平台及时进行更新网站信息,查看信息等。
3、解决在线课堂学习做题系统设计与实现,存在的弊端。
计算机技术在现代管理中的应用,使计算机成为用户应用现代技术的重要工具。能够有效的解决获取信息便捷化、全面化的问题,提高效率。

2、核心功能模块

2.1 系统功能模块分析

  基于SSM+Vue的在线课堂学习做题系统采用B/S的结构,Java语言进行设计,后台上采用Mysql数据库。
  在线课堂学习做题系统的主要使用者分为管理员和用户,实现功能包括:
  ①管理员功能:首页、个人中心、用户管理、课程分类管理、在线学习管理、试卷管理、试题管理、系统论坛、系统管理、考试管理。

  ②用户功能:首页、在线学习、系统论坛、试卷列表、系统公告、个人中心、在线答疑,我的收藏管理、线上做题等操作。

2.2 系统功能结构图

在这里插入图片描述

2.3 文档报告目录

在这里插入图片描述

3、项目页面展示


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、 核心代码

<template>
  <div class="addEdit-block">
    <el-form
      class="detail-form-content"
      ref="ruleForm"
      :model="ruleForm"
      :rules="rules"
      label-width="80px"
	  :style="{backgroundColor:addEditForm.addEditBoxColor}"
    >
      <el-row>
                        <el-col :span="12">
        <el-form-item class="input" v-if="type!='info'" label="课程编号" prop="kechengbianhao">
            <el-input v-model="ruleForm.kechengbianhao" 
                placeholder="课程编号" readonly></el-input>
        </el-form-item>
        <div v-else>
          <el-form-item class="input" v-if="ruleForm.kechengbianhao" label="课程编号" prop="kechengbianhao">
              <el-input v-model="ruleForm.kechengbianhao" 
                placeholder="课程编号" readonly></el-input>
          </el-form-item>
        </div>
      </el-col>
                                    <el-col :span="12">
        <el-form-item class="input" v-if="type!='info'"  label="课程名称" prop="kechengmingcheng">
          <el-input v-model="ruleForm.kechengmingcheng" 
              placeholder="课程名称" clearable  :readonly="ro.kechengmingcheng"></el-input>
        </el-form-item>
        <div v-else>
          <el-form-item class="input" label="课程名称" prop="kechengmingcheng">
              <el-input v-model="ruleForm.kechengmingcheng" 
                placeholder="课程名称" readonly></el-input>
          </el-form-item>
        </div>
      </el-col>
                                    <el-col :span="12">
        <el-form-item class="select" v-if="type!='info'"  label="课程类型" prop="kechengleixing">
          <el-select v-model="ruleForm.kechengleixing" placeholder="请选择课程类型">
            <el-option
                v-for="(item,index) in kechengleixingOptions"
                v-bind:key="index"
                :label="item"
                :value="item">
            </el-option>
          </el-select>
        </el-form-item>
        <div v-else>
          <el-form-item class="input" label="课程类型" prop="kechengleixing">
	      <el-input v-model="ruleForm.kechengleixing"
                placeholder="课程类型" readonly></el-input>
          </el-form-item>
        </div>
      </el-col>
                                    <el-col :span="24">  
        <el-form-item class="upload" v-if="type!='info' && !ro.tupian" label="图片" prop="tupian">
          <file-upload
          tip="点击上传图片"
          action="file/upload"
          :limit="3"
          :multiple="true"
          :fileUrls="ruleForm.tupian?ruleForm.tupian:''"
          @change="tupianUploadChange"
          ></file-upload>
        </el-form-item>
        <div v-else>
          <el-form-item v-if="ruleForm.tupian" label="图片" prop="tupian">
            <img style="margin-right:20px;" v-bind:key="index" v-for="(item,index) in ruleForm.tupian.split(',')" :src="item" width="100" height="100">
          </el-form-item>
        </div>
      </el-col>
                                    <el-col :span="24">  
        <el-form-item class="upload" v-if="type!='info'" label="视频" prop="shipin">
          <file-upload
          tip="点击上传视频"
          action="file/upload"
          :limit="1"
          :multiple="true"
          :fileUrls="ruleForm.shipin?ruleForm.shipin:''"
          @change="shipinUploadChange"
          ></file-upload>
        </el-form-item> 
        <div v-else>
          <el-form-item v-if="ruleForm.shipin" label="视频" prop="shipin">
            <el-button type="text" size="small" @click="download(ruleForm.shipin)">预览</el-button>
          </el-form-item>
        </div>
      </el-col>
                                    <el-col :span="24">  
        <el-form-item class="upload" v-if="type!='info'" label="学习资料" prop="xuexiziliao">
          <file-upload
          tip="点击上传学习资料"
          action="file/upload"
          :limit="1"
          :multiple="true"
          :fileUrls="ruleForm.xuexiziliao?ruleForm.xuexiziliao:''"
          @change="xuexiziliaoUploadChange"
          ></file-upload>
        </el-form-item>  
        <div v-else>
          <el-form-item v-if="ruleForm.xuexiziliao" label="学习资料" prop="xuexiziliao">
            <el-button type="text" size="small" @click="download(ruleForm.xuexiziliao)">下载</el-button>
          </el-form-item>
        </div>    
      </el-col>      
                                                                                                                                                                                    </el-row>
                                                                                                            <el-row>
            <el-col :span="24">
              <el-form-item class="textarea" v-if="type!='info'" label="课程内容" prop="kechengneirong">
                <el-input
                  style="min-width: 200px; max-width: 600px;"
                  type="textarea"
                  :rows="8"
                  placeholder="课程内容"
                  v-model="ruleForm.kechengneirong" >
                </el-input>
              </el-form-item>
              <div v-else>
                <el-form-item v-if="ruleForm.kechengneirong" label="课程内容" prop="kechengneirong">
                    <span>{{ruleForm.kechengneirong}}</span>
                </el-form-item>
              </div>
            </el-col>
          </el-row>
                                <el-row>
            <el-col :span="24">
              <el-form-item class="textarea" v-if="type!='info'" label="课程亮点" prop="kechengliangdian">
                <el-input
                  style="min-width: 200px; max-width: 600px;"
                  type="textarea"
                  :rows="8"
                  placeholder="课程亮点"
                  v-model="ruleForm.kechengliangdian" >
                </el-input>
              </el-form-item>
              <div v-else>
                <el-form-item v-if="ruleForm.kechengliangdian" label="课程亮点" prop="kechengliangdian">
                    <span>{{ruleForm.kechengliangdian}}</span>
                </el-form-item>
              </div>
            </el-col>
          </el-row>
                                                                                                                                                                                                <el-row>
            <el-col :span="24">
              <el-form-item v-if="type!='info'"  label="课程介绍" prop="kechengjieshao">
                <editor 
                    style="min-width: 200px; max-width: 600px;"
                    v-model="ruleForm.kechengjieshao" 
                    class="editor" 
                    action="file/upload">
                </editor>
              </el-form-item>
              <div v-else>
                <el-form-item v-if="ruleForm.kechengjieshao" label="课程介绍" prop="kechengjieshao">
                    <span v-html="ruleForm.kechengjieshao"></span>
                </el-form-item>
              </div>
            </el-col>
          </el-row>
                                                <el-form-item class="btn">
                <el-button v-if="type!='info'" type="primary" class="btn-success" @click="onSubmit">提交</el-button>
        <el-button v-if="type!='info'" class="btn-close" @click="back()">取消</el-button>
        <el-button v-if="type=='info'" class="btn-close" @click="back()">返回</el-button>
      </el-form-item>
    </el-form>
    
    
  </div>
</template>
<script>
// 数字,邮件,手机,url,身份证校验
import { isNumber,isIntNumer,isEmail,isPhone, isMobile,isURL,checkIdCard } from "@/utils/validate";
export default {
  data() {
    let self = this
    var validateIdCard = (rule, value, callback) => {
      if(!value){
        callback();
      } else if (!checkIdCard(value)) {
        callback(new Error("请输入正确的身份证号码"));
      } else {
        callback();
      }
    };
    var validateUrl = (rule, value, callback) => {
      if(!value){
        callback();
      } else if (!isURL(value)) {
        callback(new Error("请输入正确的URL地址"));
      } else {
        callback();
      }
    };
    var validateMobile = (rule, value, callback) => {
      if(!value){
        callback();
      } else if (!isMobile(value)) {
        callback(new Error("请输入正确的手机号码"));
      } else {
        callback();
      }
    };
    var validatePhone = (rule, value, callback) => {
      if(!value){
        callback();
      } else if (!isPhone(value)) {
        callback(new Error("请输入正确的电话号码"));
      } else {
        callback();
      }
    };
    var validateEmail = (rule, value, callback) => {
      if(!value){
        callback();
      } else if (!isEmail(value)) {
        callback(new Error("请输入正确的邮箱地址"));
      } else {
        callback();
      }
    };
    var validateNumber = (rule, value, callback) => {
      if(!value){
        callback();
      } else if (!isNumber(value)) {
        callback(new Error("请输入数字"));
      } else {
        callback();
      }
    };
    var validateIntNumber = (rule, value, callback) => {
      if(!value){
        callback();
      } else if (!isIntNumer(value)) {
        callback(new Error("请输入整数"));
      } else {
        callback();
      }
    };
    return {
	  addEditForm: {"btnSaveFontColor":"#fff","selectFontSize":"14px","btnCancelBorderColor":"#DCDFE6","inputBorderRadius":"4px","inputFontSize":"14px","textareaBgColor":"#fff","btnSaveFontSize":"14px","textareaBorderRadius":"4px","uploadBgColor":"#fff","textareaBorderStyle":"solid","btnCancelWidth":"88px","textareaHeight":"120px","dateBgColor":"#fff","btnSaveBorderRadius":"4px","uploadLableFontSize":"14px","textareaBorderWidth":"1px","inputLableColor":"#606266","addEditBoxColor":"rgba(255, 255, 255, 1)","dateIconFontSize":"14px","btnSaveBgColor":"#409EFF","uploadIconFontColor":"#8c939d","textareaBorderColor":"#DCDFE6","btnCancelBgColor":"#ecf5ff","selectLableColor":"#606266","btnSaveBorderStyle":"solid","dateBorderWidth":"1px","dateLableFontSize":"14px","dateBorderRadius":"4px","btnCancelBorderStyle":"solid","selectLableFontSize":"14px","selectBorderStyle":"solid","selectIconFontColor":"#C0C4CC","btnCancelHeight":"44px","inputHeight":"40px","btnCancelFontColor":"#606266","dateBorderColor":"#DCDFE6","dateIconFontColor":"#C0C4CC","uploadBorderStyle":"solid","dateBorderStyle":"solid","dateLableColor":"#606266","dateFontSize":"14px","inputBorderWidth":"1px","uploadIconFontSize":"28px","selectHeight":"40px","inputFontColor":"#606266","uploadHeight":"148px","textareaLableColor":"#606266","textareaLableFontSize":"14px","btnCancelFontSize":"14px","inputBorderStyle":"solid","btnCancelBorderRadius":"4px","inputBgColor":"#fff","inputLableFontSize":"14px","uploadLableColor":"#606266","uploadBorderRadius":"4px","btnSaveHeight":"44px","selectBgColor":"#fff","btnSaveWidth":"88px","selectIconFontSize":"14px","dateHeight":"40px","selectBorderColor":"#DCDFE6","inputBorderColor":"#DCDFE6","uploadBorderColor":"#DCDFE6","textareaFontColor":"#606266","selectBorderWidth":"1px","dateFontColor":"#606266","btnCancelBorderWidth":"1px","uploadBorderWidth":"1px","textareaFontSize":"14px","selectBorderRadius":"4px","selectFontColor":"#606266","btnSaveBorderColor":"#409EFF","btnSaveBorderWidth":"1px"},
      id: '',
      type: '',
      ro:{
	kechengbianhao : false,
	kechengmingcheng : false,
	kechengleixing : false,
	tupian : false,
	shipin : false,
	xuexiziliao : false,
	kechengneirong : false,
	kechengliangdian : false,
	kechengjieshao : false,
	thumbsupnum : false,
	crazilynum : false,
      },
            ruleForm: {
                        kechengbianhao: this.getUUID(),
                        	        kechengmingcheng: '',
	                        	        kechengleixing: '',
	                        	        tupian: '',
	                        	        shipin: '',
	                        	        xuexiziliao: '',
	                        	        kechengneirong: '',
	                        	        kechengliangdian: '',
	                        	        kechengjieshao: '',
	                        	                        	                      },
                                                    kechengleixingOptions: [],
                                                                                                                                    rules: {
                  kechengbianhao: [
                                    	                                                              ],
                  kechengmingcheng: [
                                    	                                                              ],
                  kechengleixing: [
                                    	                                                              ],
                  tupian: [
                                    	                                                              ],
                  shipin: [
                                    	                                                              ],
                  xuexiziliao: [
                                    	                                                              ],
                  kechengneirong: [
                                    	                                                              ],
                  kechengliangdian: [
                                    	                                                              ],
                  kechengjieshao: [
                                    	                                                              ],
                  thumbsupnum: [
                                        { validator: validateIntNumber, trigger: 'blur' },
                        	                                                              ],
                  crazilynum: [
                                        { validator: validateIntNumber, trigger: 'blur' },
                        	                                                              ],
              }
    };
  },
  props: ["parent"],
  computed: {
                                                                                                                                          },
  created() {
	this.addEditStyleChange()
	this.addEditUploadStyleChange()
  },
  methods: {
        // 下载
    download(file){
      window.open(`${file}`)
    },
    // 初始化
    init(id,type) {
      if (id) {
        this.id = id;
        this.type = type;
      }
      if(this.type=='info'||this.type=='else'){
        this.info(id);
      }else if(this.type=='cross'){
        var obj = this.$storage.getObj('crossObj');
        for (var o in obj){
          	            if(o=='kechengbianhao'){
            this.ruleForm.kechengbianhao = obj[o];
	    this.ro.kechengbianhao = true;
            continue;
          }
	            	            if(o=='kechengmingcheng'){
            this.ruleForm.kechengmingcheng = obj[o];
	    this.ro.kechengmingcheng = true;
            continue;
          }
	            	            if(o=='kechengleixing'){
            this.ruleForm.kechengleixing = obj[o];
	    this.ro.kechengleixing = true;
            continue;
          }
	            	            if(o=='tupian'){
            this.ruleForm.tupian = obj[o];
	    this.ro.tupian = true;
            continue;
          }
	            	            if(o=='shipin'){
            this.ruleForm.shipin = obj[o];
	    this.ro.shipin = true;
            continue;
          }
	            	            if(o=='xuexiziliao'){
            this.ruleForm.xuexiziliao = obj[o];
	    this.ro.xuexiziliao = true;
            continue;
          }
	            	            if(o=='kechengneirong'){
            this.ruleForm.kechengneirong = obj[o];
	    this.ro.kechengneirong = true;
            continue;
          }
	            	            if(o=='kechengliangdian'){
            this.ruleForm.kechengliangdian = obj[o];
	    this.ro.kechengliangdian = true;
            continue;
          }
	            	            if(o=='kechengjieshao'){
            this.ruleForm.kechengjieshao = obj[o];
	    this.ro.kechengjieshao = true;
            continue;
          }
	            	            if(o=='thumbsupnum'){
            this.ruleForm.thumbsupnum = obj[o];
	    this.ro.thumbsupnum = true;
            continue;
          }
	            	            if(o=='crazilynum'){
            this.ruleForm.crazilynum = obj[o];
	    this.ro.crazilynum = true;
            continue;
          }
	                    }
                                                                                                                                                                                              }
            // 获取用户信息
      this.$http({
        url: `${this.$storage.get('sessionTable')}/session`,
        method: "get"
      }).then(({ data }) => {
        if (data && data.code === 0) {
          var json = data.data;
                                                                                                                                                                                                                                                                    } else {
          this.$message.error(data.msg);
        }
      });
                                                                              this.$http({
              url: `option/kechengfenlei/kechengleixing`,
              method: "get"
            }).then(({ data }) => {
              if (data && data.code === 0) {
                this.kechengleixingOptions = data.data;
              } else {
                this.$message.error(data.msg);
              }
            });
         
                                                                                                                                                                            },
                                                                                                // 多级联动参数
                                                                                                                          info(id) {
      this.$http({
        url: `zaixianxuexi/info/${id}`,
        method: "get"
      }).then(({ data }) => {
        if (data && data.code === 0) {
          this.ruleForm = data.data;
        } else {
          this.$message.error(data.msg);
        }
      });
    },
        // 提交
    onSubmit() {
                  // ${column.compare}
                              // ${column.compare}
                              // ${column.compare}
                              // ${column.compare}
                              // ${column.compare}
                              // ${column.compare}
                              // ${column.compare}
                              // ${column.compare}
                              // ${column.compare}
                              // ${column.compare}
                              // ${column.compare}
                                                                                                                                                                                                                                          this.$refs["ruleForm"].validate(valid => {
        if (valid) {
          this.$http({
            url: `zaixianxuexi/${!this.ruleForm.id ? "save" : "update"}`,
            method: "post",
            data: this.ruleForm
          }).then(({ data }) => {
            if (data && data.code === 0) {
              this.$message({
                message: "操作成功",
                type: "success",
                duration: 1500,
                onClose: () => {
                  this.parent.showFlag = true;
                  this.parent.addOrUpdateFlag = false;
                  this.parent.zaixianxuexiCrossAddOrUpdateFlag = false;
                  this.parent.search();
                  this.parent.contentStyleChange();
                }
              });
            } else {
              this.$message.error(data.msg);
            }
          });
        }
      });
    },
    // 获取uuid
    getUUID () {
      return new Date().getTime();
    },
    // 返回
    back() {
      this.parent.showFlag = true;
      this.parent.addOrUpdateFlag = false;
      this.parent.zaixianxuexiCrossAddOrUpdateFlag = false;
      this.parent.contentStyleChange();
    },
                                                            tupianUploadChange(fileUrls) {
                this.ruleForm.tupian = fileUrls;
				this.addEditUploadStyleChange()
            },
                                shipinUploadChange(fileUrls) {
                this.ruleForm.shipin = fileUrls;
				this.addEditUploadStyleChange()
            },
                                xuexiziliaoUploadChange(fileUrls) {
                this.ruleForm.xuexiziliao = fileUrls;
				this.addEditUploadStyleChange()
            },
                                                                        	addEditStyleChange() {
	  this.$nextTick(()=>{
	    // input
	    document.querySelectorAll('.addEdit-block .input .el-input__inner').forEach(el=>{
	      el.style.height = this.addEditForm.inputHeight
	      el.style.color = this.addEditForm.inputFontColor
	      el.style.fontSize = this.addEditForm.inputFontSize
	      el.style.borderWidth = this.addEditForm.inputBorderWidth
	      el.style.borderStyle = this.addEditForm.inputBorderStyle
	      el.style.borderColor = this.addEditForm.inputBorderColor
	      el.style.borderRadius = this.addEditForm.inputBorderRadius
	      el.style.backgroundColor = this.addEditForm.inputBgColor
	    })
	    document.querySelectorAll('.addEdit-block .input .el-form-item__label').forEach(el=>{
	      el.style.lineHeight = this.addEditForm.inputHeight
	      el.style.color = this.addEditForm.inputLableColor
	      el.style.fontSize = this.addEditForm.inputLableFontSize
	    })
	    // select
	    document.querySelectorAll('.addEdit-block .select .el-input__inner').forEach(el=>{
	      el.style.height = this.addEditForm.selectHeight
	      el.style.color = this.addEditForm.selectFontColor
	      el.style.fontSize = this.addEditForm.selectFontSize
	      el.style.borderWidth = this.addEditForm.selectBorderWidth
	      el.style.borderStyle = this.addEditForm.selectBorderStyle
	      el.style.borderColor = this.addEditForm.selectBorderColor
	      el.style.borderRadius = this.addEditForm.selectBorderRadius
	      el.style.backgroundColor = this.addEditForm.selectBgColor
	    })
	    document.querySelectorAll('.addEdit-block .select .el-form-item__label').forEach(el=>{
	      el.style.lineHeight = this.addEditForm.selectHeight
	      el.style.color = this.addEditForm.selectLableColor
	      el.style.fontSize = this.addEditForm.selectLableFontSize
	    })
	    document.querySelectorAll('.addEdit-block .select .el-select__caret').forEach(el=>{
	      el.style.color = this.addEditForm.selectIconFontColor
	      el.style.fontSize = this.addEditForm.selectIconFontSize
	    })
	    // date
	    document.querySelectorAll('.addEdit-block .date .el-input__inner').forEach(el=>{
	      el.style.height = this.addEditForm.dateHeight
	      el.style.color = this.addEditForm.dateFontColor
	      el.style.fontSize = this.addEditForm.dateFontSize
	      el.style.borderWidth = this.addEditForm.dateBorderWidth
	      el.style.borderStyle = this.addEditForm.dateBorderStyle
	      el.style.borderColor = this.addEditForm.dateBorderColor
	      el.style.borderRadius = this.addEditForm.dateBorderRadius
	      el.style.backgroundColor = this.addEditForm.dateBgColor
	    })
	    document.querySelectorAll('.addEdit-block .date .el-form-item__label').forEach(el=>{
	      el.style.lineHeight = this.addEditForm.dateHeight
	      el.style.color = this.addEditForm.dateLableColor
	      el.style.fontSize = this.addEditForm.dateLableFontSize
	    })
	    document.querySelectorAll('.addEdit-block .date .el-input__icon').forEach(el=>{
	      el.style.color = this.addEditForm.dateIconFontColor
	      el.style.fontSize = this.addEditForm.dateIconFontSize
	      el.style.lineHeight = this.addEditForm.dateHeight
	    })
	    // upload
	    let iconLineHeight = parseInt(this.addEditForm.uploadHeight) - parseInt(this.addEditForm.uploadBorderWidth) * 2 + 'px'
	    document.querySelectorAll('.addEdit-block .upload .el-upload--picture-card').forEach(el=>{
	      el.style.width = this.addEditForm.uploadHeight
	      el.style.height = this.addEditForm.uploadHeight
	      el.style.borderWidth = this.addEditForm.uploadBorderWidth
	      el.style.borderStyle = this.addEditForm.uploadBorderStyle
	      el.style.borderColor = this.addEditForm.uploadBorderColor
	      el.style.borderRadius = this.addEditForm.uploadBorderRadius
	      el.style.backgroundColor = this.addEditForm.uploadBgColor
	    })
	    document.querySelectorAll('.addEdit-block .upload .el-form-item__label').forEach(el=>{
	      el.style.lineHeight = this.addEditForm.uploadHeight
	      el.style.color = this.addEditForm.uploadLableColor
	      el.style.fontSize = this.addEditForm.uploadLableFontSize
	    })
	    document.querySelectorAll('.addEdit-block .upload .el-icon-plus').forEach(el=>{
	      el.style.color = this.addEditForm.uploadIconFontColor
	      el.style.fontSize = this.addEditForm.uploadIconFontSize
	      el.style.lineHeight = iconLineHeight
	      el.style.display = 'block'
	    })
	    // 多文本输入框
	    document.querySelectorAll('.addEdit-block .textarea .el-textarea__inner').forEach(el=>{
	      el.style.height = this.addEditForm.textareaHeight
	      el.style.color = this.addEditForm.textareaFontColor
	      el.style.fontSize = this.addEditForm.textareaFontSize
	      el.style.borderWidth = this.addEditForm.textareaBorderWidth
	      el.style.borderStyle = this.addEditForm.textareaBorderStyle
	      el.style.borderColor = this.addEditForm.textareaBorderColor
	      el.style.borderRadius = this.addEditForm.textareaBorderRadius
	      el.style.backgroundColor = this.addEditForm.textareaBgColor
	    })
	    document.querySelectorAll('.addEdit-block .textarea .el-form-item__label').forEach(el=>{
	      // el.style.lineHeight = this.addEditForm.textareaHeight
	      el.style.color = this.addEditForm.textareaLableColor
	      el.style.fontSize = this.addEditForm.textareaLableFontSize
	    })
	    // 保存
	    document.querySelectorAll('.addEdit-block .btn .btn-success').forEach(el=>{
	      el.style.width = this.addEditForm.btnSaveWidth
	      el.style.height = this.addEditForm.btnSaveHeight
	      el.style.color = this.addEditForm.btnSaveFontColor
	      el.style.fontSize = this.addEditForm.btnSaveFontSize
	      el.style.borderWidth = this.addEditForm.btnSaveBorderWidth
	      el.style.borderStyle = this.addEditForm.btnSaveBorderStyle
	      el.style.borderColor = this.addEditForm.btnSaveBorderColor
	      el.style.borderRadius = this.addEditForm.btnSaveBorderRadius
	      el.style.backgroundColor = this.addEditForm.btnSaveBgColor
	    })
	    // 返回
	    document.querySelectorAll('.addEdit-block .btn .btn-close').forEach(el=>{
	      el.style.width = this.addEditForm.btnCancelWidth
	      el.style.height = this.addEditForm.btnCancelHeight
	      el.style.color = this.addEditForm.btnCancelFontColor
	      el.style.fontSize = this.addEditForm.btnCancelFontSize
	      el.style.borderWidth = this.addEditForm.btnCancelBorderWidth
	      el.style.borderStyle = this.addEditForm.btnCancelBorderStyle
	      el.style.borderColor = this.addEditForm.btnCancelBorderColor
	      el.style.borderRadius = this.addEditForm.btnCancelBorderRadius
	      el.style.backgroundColor = this.addEditForm.btnCancelBgColor
	    })
	  })
	},
	addEditUploadStyleChange() {
		this.$nextTick(()=>{
		  document.querySelectorAll('.addEdit-block .upload .el-upload-list--picture-card .el-upload-list__item').forEach(el=>{
			el.style.width = this.addEditForm.uploadHeight
			el.style.height = this.addEditForm.uploadHeight
			el.style.borderWidth = this.addEditForm.uploadBorderWidth
			el.style.borderStyle = this.addEditForm.uploadBorderStyle
			el.style.borderColor = this.addEditForm.uploadBorderColor
			el.style.borderRadius = this.addEditForm.uploadBorderRadius
			el.style.backgroundColor = this.addEditForm.uploadBgColor
		  })
	  })
	},
  }
};
</script>
<style lang="scss">
.editor{
  height: 500px;
  
  & /deep/ .ql-container {
	  height: 310px;
  }
}
.amap-wrapper {
  width: 100%;
  height: 500px;
}
.search-box {
  position: absolute;
}
.addEdit-block {
	margin: -10px;
}
.detail-form-content {
	padding: 12px;
}
.btn .el-button {
  padding: 0;
}
</style>


  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
基于SSM(Spring+SpringMVC+Mybatis)和Vue.js的酒店管理系统源码是一种用于酒店管理的软件系统,它的方便程度和管理性能使其能够被广泛应用于很多酒店。该系统实现了酒店常见操作和管理,包括房间管理、订单管理、员工管理、客户管理、报表查询等功能。 首先,该系统具有良好的前后端分离,前端使用Vue.js制作而后端使用ssm框架,通过ajax异步请求,使页面具有更快的响应速度和更好的用户交互体验。 其次,这个酒店管理系统还考虑到了用户角色权限管理,以确保数据的安全性。管理员可以添加、修改、删除用户以及设置用户的角色及权限,例如前台管理员只能查看房间信息和订单信息,不能进行修改操作;而后台管理员具有更高的权限,并可以进行更高级别的操作。 此外,该系统还提供了详细的房间管理模块,具体包括房间预定、房间信息管理、房态管理等功能。在订单管理模块中,用户可以针对不同的订单状态进行查找、修改、删除等操作,并可以在订单详情页中查看订单的用户名字、入住时间、房型等详细信息。员工管理模块中,管理员可以添加、修改、删除员工,以确保拥有完整的员工信息数据库。 还有一个重要的功能模块是报表查询,在查询模块中,用户可以指定关键词来查找相应的数据,以便于管理员进行数据分析。此外,系统还提供了一个后台管理系统,用于管理员查看和管理系统中的所有数据,使数据管理变得更简单和统一。 综上,基于SSMVue.js的酒店管理系统源码具有良好的用户体验、良好的设计风格和丰富的功能模块,适用于酒店的日常运营和管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值