|
@@ -0,0 +1,587 @@
|
|
|
+<template>
|
|
|
+ <!-- 创建课程 -->
|
|
|
+ <div class="createCourse">
|
|
|
+ <el-card>
|
|
|
+ <div style="padding: 0 75px">
|
|
|
+ <span class="title">同步教研</span>
|
|
|
+ <span class="subTitle"
|
|
|
+ >我的课程 - 我创建的 -
|
|
|
+ <span class="pointer" @click="goBack">同步教研</span> -
|
|
|
+ <span style="color: #000">创建</span></span
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ </el-card>
|
|
|
+
|
|
|
+ <el-card>
|
|
|
+ <div style="color: #050026; font-size: 18px; font-weight: 400">创建</div>
|
|
|
+ <div class="formContent">
|
|
|
+ <el-form
|
|
|
+ :model="formline"
|
|
|
+ ref="formline"
|
|
|
+ size="large"
|
|
|
+ label-position="top"
|
|
|
+ class="demo-ruleForm"
|
|
|
+ >
|
|
|
+ <div class="must">
|
|
|
+ <div class="label">课程封面图</div>
|
|
|
+ <div class="uploadDiv">
|
|
|
+ <div style="display: flex">
|
|
|
+ <el-upload
|
|
|
+ class="mainUpload"
|
|
|
+ action=""
|
|
|
+ accept=".png, .jpg, .jpeg"
|
|
|
+ :auto-upload="false"
|
|
|
+ list-type="picture-card"
|
|
|
+ :on-change="handleMainChange"
|
|
|
+ :file-list="fileList"
|
|
|
+ >
|
|
|
+ <el-icon v-if="fileList.length == 0">
|
|
|
+ <Picture />
|
|
|
+ </el-icon>
|
|
|
+ <img
|
|
|
+ v-else
|
|
|
+ :src="fileList[0].url"
|
|
|
+ alt=""
|
|
|
+ style="width: 100%; height: 100%"
|
|
|
+ />
|
|
|
+ </el-upload>
|
|
|
+ <div
|
|
|
+ style="font-size: 12px; margin-left: 20px; position: relative"
|
|
|
+ >
|
|
|
+ <div style="color: #949494">
|
|
|
+ 支持格式:jpg,png,jpeg(200kb以内) 建议尺寸600x320
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ style="color: #f35421; position: absolute; bottom: 0"
|
|
|
+ v-if="fileList.length == 0"
|
|
|
+ >
|
|
|
+ {{ mainTip }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <el-form-item label="主讲老师" prop="zjjs">
|
|
|
+ <el-input v-model="formline.zjjs" placeholder="请输入主讲" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="教研简介" prop="jyjj">
|
|
|
+ <el-input
|
|
|
+ v-model="formline.jyjj"
|
|
|
+ type="textarea"
|
|
|
+ rows="5"
|
|
|
+ placeholder="请输入教研简介"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="教研名称" prop="jymc">
|
|
|
+ <el-input v-model="formline.jymc" placeholder="请输入教研名称" />
|
|
|
+ </el-form-item>
|
|
|
+ <div class="type flex">
|
|
|
+ <el-form-item class="el-nj" label="年级" prop="nj">
|
|
|
+ <el-select v-model="formline.nj" placeholder="请选择年级">
|
|
|
+ <el-option
|
|
|
+ v-for="(item, index) in gradeData"
|
|
|
+ :key="index"
|
|
|
+ label="item.grade_name"
|
|
|
+ value="item.grade_name"
|
|
|
+ ></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="学科" prop="xk">
|
|
|
+ <el-select v-model="formline.xk" placeholder="请选择学科">
|
|
|
+ <el-option label="区域一" value="shanghai"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ <div style="display: flex">
|
|
|
+ <el-form-item
|
|
|
+ style="flex: 1"
|
|
|
+ label="开始时间"
|
|
|
+ prop="ks_start_datetime"
|
|
|
+ >
|
|
|
+ <el-config-provider :locale="local">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="formline.kssj"
|
|
|
+ :disabled-date="pickerStartTime"
|
|
|
+ type="datetime"
|
|
|
+ placeholder="选择日期时间"
|
|
|
+ ></el-date-picker>
|
|
|
+ </el-config-provider>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item
|
|
|
+ style="flex: 1; margin-left: 20px"
|
|
|
+ label="结束时间"
|
|
|
+ prop="ks_end_datetime"
|
|
|
+ >
|
|
|
+ <el-config-provider :locale="local">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="formline.jssj"
|
|
|
+ :disabled-date="pickerEndTime"
|
|
|
+ type="datetime"
|
|
|
+ placeholder="选择日期时间"
|
|
|
+ ></el-date-picker>
|
|
|
+ </el-config-provider>
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <el-form-item label="备课老师">
|
|
|
+ <!-- <el-input v-model="formline.zy" /> -->
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-checkbox
|
|
|
+ class="read"
|
|
|
+ v-model="isRead"
|
|
|
+ label="已阅读并同意《课程上传协议》"
|
|
|
+ size="large"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <div class="btnDiv">
|
|
|
+ <el-button type="primary" @click="formSubmit()">提 交</el-button>
|
|
|
+ <el-button>关 闭</el-button>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ </el-card>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+ <script>
|
|
|
+import {
|
|
|
+ grade_list,
|
|
|
+ subject_list,
|
|
|
+ tbjy_add,
|
|
|
+ tbjy_edit,
|
|
|
+ upload_file,
|
|
|
+} from "./api";
|
|
|
+
|
|
|
+import { Picture, FolderOpened } from "@element-plus/icons-vue";
|
|
|
+import { ElConfigProvider } from "element-plus";
|
|
|
+import zhcn from "element-plus/lib/locale/lang/zh-cn";
|
|
|
+export default {
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ local: zhcn,
|
|
|
+ formline: {
|
|
|
+ fm: "",
|
|
|
+ jyzj: "",
|
|
|
+ jyjj: "",
|
|
|
+ jymc: "",
|
|
|
+ nj: "",
|
|
|
+ xk: "",
|
|
|
+ kssj: "",
|
|
|
+ jssj: "",
|
|
|
+ bkls: "",
|
|
|
+ },
|
|
|
+ // rules: {
|
|
|
+ // ks_name: [{ required: true, message: "请输入主讲", trigger: "blur" }],
|
|
|
+ // ks_kss: [
|
|
|
+ // { required: true, message: "请输入教研简介", trigger: "blur" },
|
|
|
+ // ],
|
|
|
+ // ks_brief: [
|
|
|
+ // { required: true, message: "请输入教研名称", trigger: "blur" },
|
|
|
+ // ],
|
|
|
+ // ks_nj: [{ required: true, message: "请选择年级", trigger: "change" }],
|
|
|
+ // ks_xk: [{ required: true, message: "请选择学科", trigger: "change" }],
|
|
|
+ // ks_start_datetime: [
|
|
|
+ // {
|
|
|
+ // required: true,
|
|
|
+ // message: "请选择开始时间",
|
|
|
+ // trigger: "change",
|
|
|
+ // type: "date",
|
|
|
+ // },
|
|
|
+ // ],
|
|
|
+ // ks_end_datetime: [
|
|
|
+ // {
|
|
|
+ // required: true,
|
|
|
+ // message: "请选择结束时间",
|
|
|
+ // trigger: "change",
|
|
|
+ // type: "date",
|
|
|
+ // },
|
|
|
+ // ],
|
|
|
+ // },
|
|
|
+ fileList: [],
|
|
|
+ mainFileData: ["png", "jpg", "jpeg"],
|
|
|
+ mainFileSize: 200,
|
|
|
+ mainTip: "",
|
|
|
+ attachList: [],
|
|
|
+ attachFileData: ["ppt", "pptx", "pdf", "mp4"],
|
|
|
+ attachFileSize: 500,
|
|
|
+ attachTip: "",
|
|
|
+ gradeData: [],
|
|
|
+ subjectData: [],
|
|
|
+ isRead: false,
|
|
|
+ pickerStartTime: (time) => {
|
|
|
+ let beginDateVal = this.formline.ks_end_datetime;
|
|
|
+ if (beginDateVal) {
|
|
|
+ return time.getTime() > new Date(beginDateVal).getTime();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ pickerEndTime: (time) => {
|
|
|
+ let beginDateVal = this.formline.ks_start_datetime;
|
|
|
+ if (beginDateVal) {
|
|
|
+ return time.getTime() < new Date(beginDateVal).getTime();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ };
|
|
|
+ },
|
|
|
+ components: { Picture, FolderOpened, ElConfigProvider },
|
|
|
+ methods: {
|
|
|
+ goBack() {
|
|
|
+ this.$router.go(-1);
|
|
|
+ },
|
|
|
+
|
|
|
+ addData() {
|
|
|
+ this.formline = {
|
|
|
+ fm: "",
|
|
|
+ jyzj: "",
|
|
|
+ jyjj: "",
|
|
|
+ jymc: "",
|
|
|
+ nj: "",
|
|
|
+ xk: "",
|
|
|
+ kssj: "",
|
|
|
+ jssj: "",
|
|
|
+ bkls: "",
|
|
|
+ };
|
|
|
+ },
|
|
|
+ editData(item) {
|
|
|
+ this.id = item.zt_id;
|
|
|
+ this.formline.fm = item.zt_img;
|
|
|
+ this.formline.zjjs = item.zt_zrjs;
|
|
|
+ this.formline.jyjj = item.zt_content;
|
|
|
+ this.formline.jymc = item.grade_name;
|
|
|
+ this.formline.nj = item.subject_name;
|
|
|
+ this.formline.xk = item.zt_name;
|
|
|
+ // this.formline.kssj = item.zt_name;
|
|
|
+ // this.formline.jssj = item.zt_name;
|
|
|
+ },
|
|
|
+ formSubmit() {
|
|
|
+ let data = {
|
|
|
+ zt_img: this.formline.fm,
|
|
|
+ zt_zrjs: this.formline.zjjs,
|
|
|
+ zt_content: this.formline.jyjj,
|
|
|
+ zt_name: this.formline.jymc,
|
|
|
+ grade_name: this.formline.nj,
|
|
|
+ subject_name: this.formline.xk,
|
|
|
+ };
|
|
|
+ if (!this.isEdit) {
|
|
|
+ tbjy_add(data).then((res) => {
|
|
|
+ if (res.code == 1) {
|
|
|
+ this.$message({
|
|
|
+ message: "添加成功!",
|
|
|
+ type: "success",
|
|
|
+ });
|
|
|
+
|
|
|
+ this.formlineVisible = false;
|
|
|
+ this.getListData();
|
|
|
+ } else {
|
|
|
+ this.$message({
|
|
|
+ message: res.msg,
|
|
|
+ type: "error",
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ data.zt_id = this.id;
|
|
|
+ tbjy_edit(data).then((res) => {
|
|
|
+ if (res.code == 1) {
|
|
|
+ this.$message({
|
|
|
+ message: "编辑成功!",
|
|
|
+ type: "success",
|
|
|
+ });
|
|
|
+
|
|
|
+ this.getListData();
|
|
|
+ } else {
|
|
|
+ this.$message({
|
|
|
+ message: res.msg,
|
|
|
+ type: "error",
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+ //年级
|
|
|
+ gradeListData() {
|
|
|
+ let data = {
|
|
|
+ page: 1,
|
|
|
+ limit: 9999,
|
|
|
+ };
|
|
|
+ grade_list(data).then((res) => {
|
|
|
+ if (res.code == 1) {
|
|
|
+ this.gradeList = res.data.page_data;
|
|
|
+ let obj = {
|
|
|
+ grade_id: "",
|
|
|
+ grade_name: "全部",
|
|
|
+ };
|
|
|
+ this.gradeList.unshift(obj);
|
|
|
+ console.log(this.gradeList);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //科目列表
|
|
|
+ subjectListData() {
|
|
|
+ let data = {
|
|
|
+ page: 1,
|
|
|
+ limit: 9999,
|
|
|
+ };
|
|
|
+ subject_list(data).then((res) => {
|
|
|
+ if (res.code == 1) {
|
|
|
+ this.subjectList = res.data.page_data;
|
|
|
+ let obj = {
|
|
|
+ subject_id: "",
|
|
|
+ subject_name: "全部",
|
|
|
+ };
|
|
|
+ this.subjectList.unshift(obj);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 封面图
|
|
|
+ handleMainChange(file) {
|
|
|
+ let fileType = file.name.substring(file.name.lastIndexOf(".") + 1);
|
|
|
+ const isJPG = this.mainFileData.includes(fileType);
|
|
|
+ const sizeLimit = file.size / 1024 < this.mainFileSize;
|
|
|
+ if (!isJPG) {
|
|
|
+ this.mainTip = "上传文件只能是jpg,png,jpeg格式";
|
|
|
+ }
|
|
|
+ if (!sizeLimit) {
|
|
|
+ this.mainTip = "上传文件不能超过200KB";
|
|
|
+ }
|
|
|
+ if (isJPG && sizeLimit) {
|
|
|
+ this.fileList = [file];
|
|
|
+ } else {
|
|
|
+ this.fileList = [];
|
|
|
+ }
|
|
|
+
|
|
|
+ if (this.fileList.length == 0) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ upload_file(file.raw).then((res) => {
|
|
|
+ if (res.code == 1) {
|
|
|
+ this.formline.ks_img = res.data.url;
|
|
|
+ } else {
|
|
|
+ this.mainTip = "上传失败";
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ submitForm(formName) {
|
|
|
+ this.$refs[formName].validate((valid) => {
|
|
|
+ if (valid && this.formline.ks_img != "" && this.formline.ks_kj == "") {
|
|
|
+ // alert('submit!');
|
|
|
+ console.log(this.formline);
|
|
|
+ } else {
|
|
|
+ if (this.formline.ks_img == "") {
|
|
|
+ this.mainTip = "请上传课程封面图";
|
|
|
+ }
|
|
|
+ if (this.formline.ks_kj == "") {
|
|
|
+ this.attachTip = "请上传源文件";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ this.gradeListData();
|
|
|
+ this.subjectListData();
|
|
|
+ },
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+ <style lang="scss" scoped>
|
|
|
+.createCourse {
|
|
|
+ .el-card {
|
|
|
+ margin-bottom: 15px;
|
|
|
+ background: #fff;
|
|
|
+ }
|
|
|
+ .pointer {
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
+ .title {
|
|
|
+ font-size: 18px;
|
|
|
+ color: #050026;
|
|
|
+ }
|
|
|
+ .subTitle {
|
|
|
+ font-size: 14px;
|
|
|
+ color: #949494;
|
|
|
+ margin-left: 45px;
|
|
|
+ }
|
|
|
+ .formContent {
|
|
|
+ width: 575px;
|
|
|
+ margin: auto;
|
|
|
+ .must {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ margin-bottom: 22px;
|
|
|
+ .label {
|
|
|
+ color: #949494;
|
|
|
+ font-size: 14px;
|
|
|
+ margin-right: 15px;
|
|
|
+ &::after {
|
|
|
+ content: "*";
|
|
|
+ color: #f35421;
|
|
|
+ margin-left: 4px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .uploadDiv {
|
|
|
+ flex: 1;
|
|
|
+ .el-upload--picture-card {
|
|
|
+ width: 180px;
|
|
|
+ height: 96px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .showType {
|
|
|
+ width: 100%;
|
|
|
+ height: 40px;
|
|
|
+ background: #f9f9f9;
|
|
|
+ border-radius: 6px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ padding: 0 20px;
|
|
|
+ .typeItem {
|
|
|
+ color: #fff;
|
|
|
+ font-size: 13px;
|
|
|
+ padding: 3px 8px;
|
|
|
+ border-radius: 6px;
|
|
|
+ margin-right: 20px;
|
|
|
+ line-height: 22px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .type {
|
|
|
+ margin-bottom: 10px;
|
|
|
+ justify-content: space-between;
|
|
|
+ .el-form-item {
|
|
|
+ width: 273px;
|
|
|
+ }
|
|
|
+ .flex {
|
|
|
+ display: flex;
|
|
|
+ align-items: baseline;
|
|
|
+ .label {
|
|
|
+ font-size: 13px;
|
|
|
+ color: #333;
|
|
|
+ &::after {
|
|
|
+ content: "*";
|
|
|
+ color: #f35421;
|
|
|
+ margin-left: 4px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .valueDiv {
|
|
|
+ margin-left: 15px;
|
|
|
+ flex: 1;
|
|
|
+ display: flex;
|
|
|
+ flex-wrap: wrap;
|
|
|
+ color: #949494;
|
|
|
+ padding-bottom: 15px;
|
|
|
+ font-weight: 400;
|
|
|
+ font-size: 14px;
|
|
|
+ .item {
|
|
|
+ padding: 3px 5px;
|
|
|
+ margin-right: 20px;
|
|
|
+ margin-bottom: 5px;
|
|
|
+ &.active {
|
|
|
+ color: #00a3ff;
|
|
|
+ border-radius: 6px;
|
|
|
+ background: rgba($color: #00a3ff, $alpha: 0.1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .btnDiv {
|
|
|
+ text-align: center;
|
|
|
+ width: 100%;
|
|
|
+ .el-button {
|
|
|
+ background: #f4f4f4;
|
|
|
+ border: none;
|
|
|
+ width: 160px;
|
|
|
+ height: 50px;
|
|
|
+ color: #41387f;
|
|
|
+ font-family: PingFangSC, PingFangSC-Semibold;
|
|
|
+ }
|
|
|
+ .el-button--primary {
|
|
|
+ background: #00a3ff;
|
|
|
+ margin-right: 80px;
|
|
|
+ color: #fff;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|
|
|
+
|
|
|
+ <style lang="scss">
|
|
|
+.createCourse {
|
|
|
+ .el-card {
|
|
|
+ margin-bottom: 15px;
|
|
|
+ background: #fff;
|
|
|
+ .el-form {
|
|
|
+ .el-form-item {
|
|
|
+ &.is-required {
|
|
|
+ .el-form-item__label {
|
|
|
+ &::before {
|
|
|
+ display: none;
|
|
|
+ }
|
|
|
+ &::after {
|
|
|
+ content: "*";
|
|
|
+ color: #f35421;
|
|
|
+ margin-left: 4px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .el-form-item__label {
|
|
|
+ color: #949494;
|
|
|
+ font-size: 14px;
|
|
|
+ position: relative;
|
|
|
+ }
|
|
|
+ .el-form-item__content {
|
|
|
+ .el-select {
|
|
|
+ width: 100%;
|
|
|
+ }
|
|
|
+ .el-input {
|
|
|
+ width: 100%;
|
|
|
+ .el-input__wrapper {
|
|
|
+ width: 100%;
|
|
|
+ box-shadow: none;
|
|
|
+ background: #f9f9f9;
|
|
|
+ border-radius: 6px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .el-textarea {
|
|
|
+ .el-textarea__inner {
|
|
|
+ box-shadow: none;
|
|
|
+ background: #f9f9f9;
|
|
|
+ border-radius: 6px;
|
|
|
+ // color: #d0d0d0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .el-checkbox.read {
|
|
|
+ .el-checkbox__inner {
|
|
|
+ border-radius: 50%;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .el-input__inner {
|
|
|
+ // color: #d0d0d0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .uploadDiv {
|
|
|
+ .mainUpload {
|
|
|
+ .el-upload--picture-card {
|
|
|
+ width: 180px;
|
|
|
+ height: 96px;
|
|
|
+ }
|
|
|
+ .el-upload-list--picture-card .el-upload-list__item {
|
|
|
+ display: none;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .attachUpload {
|
|
|
+ .el-upload--picture-card {
|
|
|
+ width: 65px;
|
|
|
+ height: 65px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|