Selaa lähdekoodia

直播课增删改查

natasha 1 vuosi sitten
vanhempi
commit
1d897db3a7

+ 184 - 32
src/views/content_manage/course_manage/CreateLive.vue

@@ -24,43 +24,47 @@
             </div>
             <div class="create-bottom">
                 <el-form :model="organizeForm" :rules="rulesOrganize" ref="organizeForm" label-width="100px" class="registerForm" v-if="stepIndex===0">
-                    <el-form-item label="课程封面" prop="avatar">
-                        <el-upload
-                            class="avatar-uploader"
-                            action="https://jsonplaceholder.typicode.com/posts/"
-                            :show-file-list="false"
-                            :on-success="handleAvatarSuccess"
-                            :before-upload="beforeAvatarUpload">
-                            <el-image v-if="organizeForm.avatar" :src="organizeForm.avatar" fit="contain"></el-image>
-                            <i v-else class="el-icon-plus avatar-uploader-icon">Upload</i>
-                        </el-upload>
+                    <el-form-item label="课程封面" prop="cover_image_url">
+                        <upload :datafileList="organizeForm.cover_image_list" :changeFillId="handleAvatarSuccess" :fileName="'cover'" :showList="true" uploadType="image" :filleNumber="1" v-if="!organizeForm.cover_image_url" />
+                        <div class="cover-box" v-else @mouseover="Imagemouseover('coverFlag',true)" @mouseout="Imagemouseover('coverFlag',false)">
+                            <el-image :src="organizeForm.cover_image_url" fit="contain" style="max-width:200px;max-height:200px;"></el-image>
+                            <p v-show="coverFlag" @click="handleDeleteFile('cover',0)"><i class="el-icon-delete"></i></p>
+                        </div>
                     </el-form-item>
                     <el-form-item label="课程名称" prop="title">
-                        <el-input v-model="organizeForm.title" placeholder="请输入课程名称"></el-input>
+                        <el-input v-model="organizeForm.title" placeholder="请输入课程名称" @blur="handleTrim('organizeForm','title')"></el-input>
                     </el-form-item>
                     <el-form-item label="机构" prop="orgName">
-                        <el-input v-model="organizeForm.orgName" placeholder="请输入机构"></el-input>
+                        <el-select v-model="organizeForm.orgName" filterable allow-create default-first-option placeholder="请选择">
+                            <el-option
+                                v-for="item in orgList"
+                                :key="item.id"
+                                :label="item.name"
+                                :value="item.name">
+                            </el-option>
+                        </el-select>
                     </el-form-item>
                     <el-form-item label="教师" prop="teacher">
-                        <el-select v-model="organizeForm.teacher" multiple placeholder="请选择">
+                        <el-select v-model="organizeForm.teacher" multiple filterable allow-create default-first-option placeholder="请选择">
                             <el-option
-                                v-for="item in $orgType"
-                                :key="item.value"
-                                :label="item.label"
-                                :value="item.value"
-                                :disabled="item.disabled">
+                                v-for="(item,i) in teacherList"
+                                :key="item+i"
+                                :label="item"
+                                :value="item">
                             </el-option>
                         </el-select>
                     </el-form-item>
                     <el-form-item label="开始时间" prop="startData">
                         <el-date-picker
                             v-model="organizeForm.startData"
-                            type="date"
-                            placeholder="选择日期">
+                            type="datetime"
+                            placeholder="选择日期"
+                            value-format="yyyy-MM-dd HH:mm:ss"
+                            format="yyyy-MM-dd HH:mm">
                         </el-date-picker>
                     </el-form-item>
                     <el-form-item label="直播链接" prop="liveLink" class="live-link">
-                        <el-input v-model="organizeForm.liveLink" placeholder="请输入直播链接">
+                        <el-input v-model="organizeForm.liveLink" placeholder="请输入直播链接" @blur="handleTrim('organizeForm','liveLink')">
                             <template slot="prepend">Http://</template>
                         </el-input>
                     </el-form-item>
@@ -97,10 +101,12 @@
 import Header from "../../../components/Header.vue";
 import NavMenu from "../../../components/NavMenu.vue"
 import Breadcrumb from '../../../components/Breadcrumb.vue';
+import { getLogin } from "@/api/ajax";
+import Upload from "../../../components/Upload.vue"
 
 export default {
   //import引入的组件需要注入到对象中才能使用
-  components: { Header, NavMenu, Breadcrumb },
+  components: { Header, NavMenu, Breadcrumb, Upload },
   props: {},
   data() {
     //这里存放数据
@@ -155,7 +161,9 @@ export default {
         newPwdFlag: false, // 查看新密码
         comfirmPwdFlag: false, // 查看确认密码
         organizeForm:{
-            avatar: '',
+            cover_image_url: '',
+            cover_image_list: [],
+            cover_image_id: null,
             title: '',
             orgName: '',
             teacher: [],
@@ -186,7 +194,10 @@ export default {
             currentPrice:[
                 { required: true, validator: validatePrice, trigger: 'blur' },
             ],
-        }
+        },
+        teacherList:['李老师','赵老师'],
+        orgList:[],
+        coverFlag: false,
     }
   },
   //计算属性 类似于data概念
@@ -204,7 +215,15 @@ export default {
         if(type=='-'){
             if(this.stepIndex>0) this.stepIndex--
         }else{
-            if(this.stepIndex<1) this.stepIndex++
+            if(this.stepIndex<1) {
+                this.$refs['organizeForm'].validate((valid) => {
+                    if (valid) {
+                        this.handleAddCourse()
+                    } else {
+                        return false;
+                    }
+                });
+            }
         }
     },
     // 级联选择器
@@ -232,15 +251,122 @@ export default {
     handleChange(value) {
         // console.log(value)
     },
-    handleAvatarSuccess(res, file) {
-        this.organizeForm.avatar = URL.createObjectURL(file.raw);
+    handleAvatarSuccess(fileList,name) {
+        if(name==='cover'){
+            this.organizeForm.cover_image_list = fileList
+            this.organizeForm.cover_image_id = fileList[0]&&fileList[0].response&&fileList[0].response.file_info_list&&fileList[0].response.file_info_list[0]?fileList[0].response.file_info_list[0].file_id:''
+            this.organizeForm.cover_image_url = fileList[0]&&fileList[0].response&&fileList[0].response.file_info_list&&fileList[0].response.file_info_list[0]?fileList[0].response.file_info_list[0].file_url:''
+        }else if(name==='courseVideo'){
+            this.createCourseForm.videoResource = fileList
+            this.createCourseForm.file_id = fileList[0]&&fileList[0].response&&fileList[0].response.file_info_list&&fileList[0].response.file_info_list[0]?fileList[0].response.file_info_list[0].file_id:''
+            this.createCourseForm.file_url = fileList[0]&&fileList[0].response&&fileList[0].response.file_info_list&&fileList[0].response.file_info_list[0]?fileList[0].response.file_info_list[0].file_url:''
+        }else if(name==='courseAudio'){
+            this.createCourseForm.audioResource = fileList
+            this.createCourseForm.file_id = fileList[0]&&fileList[0].response&&fileList[0].response.file_info_list&&fileList[0].response.file_info_list[0]?fileList[0].response.file_info_list[0].file_id:''
+            this.createCourseForm.file_url = fileList[0]&&fileList[0].response&&fileList[0].response.file_info_list&&fileList[0].response.file_info_list[0]?fileList[0].response.file_info_list[0].file_url:''
+        }else if(name==='courseResource'){
+            fileList.forEach(item=>{
+                if(item.response&&item.response.file_info_list&&item.response.file_info_list[0]){
+                    let index = item.response.file_info_list[0].file_name.lastIndexOf('.');
+                    item.name = item.response.file_info_list[0].file_name
+                    let type = item.response.file_info_list[0].file_name.substring(index + 1).toLowerCase()
+                    item.type = this.handleJudgeType(type)
+                    item.file_id = item.response.file_info_list[0].file_id
+                }
+            })
+            this.createCourseForm.resource = fileList
+        }
+    },
+    Imagemouseover(item,flag) {
+      this[item] = flag
+    },
+    handleDeleteFile(item,i) {
+      this.$confirm("确定删除吗?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      }).then(() => {
+        if(item==='cover'){
+            this.organizeForm.cover_image_list.splice(i, 1);
+            this.organizeForm.cover_image_url = ''
+            this.organizeForm.cover_image_id = null
+        }
+      });
+    },
+    handleAddCourse(){
+        let MethodName = "/CourseServer/Manager/ZBCourseManager/AddZBCourse";
+        let form = this.organizeForm
+        let data = {
+            cover_image_id: form.cover_image_id,
+            name: form.title,
+            org_id: form.orgName,
+            teacher_name_list:form.teacher,
+            begin_time: form.startData,
+            price: form.price,
+            price_discount: form.currentPrice,
+            url: form.liveLink
+        }
+        if(this.id){
+            MethodName = "/CourseServer/Manager/ZBCourseManager/UpdateZBCourse"
+            data.id = this.id
+        }
+        getLogin(MethodName, data)
+        .then((res) => {
+            if(res.status===1){
+               this.recordedId = res.id
+               this.stepIndex++
+            }
+        })
+        .catch(() => {
+            this.loading = false
+        });
+    },
+    // 去掉前后空格
+    handleTrim(form,fild){
+        this[form][fild] = this[form][fild].trim()
+    },
+    // 查询机构列表
+    getOrgList(){
+        let MethodName = "/OrgServer/Client/OrgManager/GetOrgIndexList";
+        let data = {
+            status: 1
+        }
+        getLogin(MethodName, data)
+        .then((res) => {
+            if(res.status===1){
+               this.orgList = res.org_index_list
+            }
+        })
+        .catch(() => {
+        });
     },
-    beforeAvatarUpload(file) {
-        const isLt2M = file.size / 1024 / 1024 < 2;
-        if (!isLt2M) {
-            this.$message.error('上传头像图片大小不能超过 2MB!');
+    // 获取课程信息
+    getCourseInfo(){
+        let MethodName = "/CourseServer/Manager/ZBCourseManager/GetZBCourseInfo";
+        let data = {
+            id: this.id
         }
-        return isLt2M;
+        getLogin(MethodName, data)
+        .then((res) => {
+            if(res.status===1){
+                let form = this.organizeForm
+                form.cover_image_id = res.zb_course.cover_image_id
+                form.cover_image_url = res.zb_course.cover_image_url
+                form.cover_image_list.push[{
+                    id: res.zb_course.cover_image_id
+                }]
+                form.title = res.zb_course.name
+                form.orgName = res.zb_course.org_id
+                form.teacher = res.zb_course.teacher_name_list
+                form.price = res.zb_course.price
+                form.currentPrice = res.zb_course.price_discount
+                form.liveLink = res.zb_course.url
+                form.startData = res.zb_course.begin_time
+            }
+        })
+        .catch(() => {
+            this.loading = false
+        });
     },
   },
   //生命周期 - 创建完成(可以访问当前this实例)
@@ -252,8 +378,10 @@ export default {
     }
     if(this.id){
         obj.text = '编辑课程'
+        this.getCourseInfo()
     }
     this.breadcrumbList.push(obj)
+    this.getOrgList()
   },
   //生命周期 - 挂载完成(可以访问DOM元素)
   mounted() {
@@ -299,6 +427,25 @@ export default {
         line-height: 20px;
     }
 }
+.cover-box{
+    position: relative;
+    width: 200px;
+    height: 200px;
+    p{
+        position: absolute;
+        bottom: 0;
+        left: 0;
+        width: 100%;
+        height: 200px;
+        line-height: 200px;
+        font-size: 20px;
+        text-align: center;
+        cursor: pointer;
+        background: rgba(0, 0, 0, 0.3);
+        color: #F2F3F5;
+        margin: 0;
+    }
+}
 </style>
 
 <style lang="scss">
@@ -341,4 +488,9 @@ export default {
         }
     }
 }
+.el-date-picker__editor-wrap{
+    .el-input, .el-textarea{
+        width: auto;
+    }
+}
 </style>

+ 3 - 10
src/views/content_manage/course_manage/CreateRecorded.vue

@@ -385,7 +385,6 @@ export default {
             }else if(this.stepIndex===1){
                 this.stepIndex++
             }
-            
         }
     },
     // 返回列表
@@ -562,20 +561,14 @@ export default {
     },
     // 查询机构列表
     getOrgList(){
-        let MethodName = "/OrgServer/Manager/PageQuery/PageQueryOrgList";
+        let MethodName = "/OrgServer/Client/OrgManager/GetOrgIndexList";
         let data = {
-            name: '',
-            type: -1,
-            status: 1,
-            area_id: '',
-            creator_id: '',
-            page_capacity:50,
-            cur_page:1
+            status: 1
         }
         getLogin(MethodName, data)
         .then((res) => {
             if(res.status===1){
-               this.orgList = res.org_list
+               this.orgList = res.org_index_list
             }
         })
         .catch(() => {

+ 61 - 166
src/views/content_manage/course_manage/LiveCourse.vue

@@ -95,13 +95,6 @@
                         width="220">
                         <template slot-scope="scope">
                             <el-button
-                                @click.native.prevent="handleLookInfo(scope.row)"
-                                type="text"
-                                size="small"
-                                class="primary-btn">
-                                信息
-                            </el-button>
-                            <el-button
                                 @click.native.prevent="handleEdit(scope.row)"
                                 type="text"
                                 size="small"
@@ -109,11 +102,11 @@
                                 编辑
                             </el-button>
                             <el-button
-                                @click.native.prevent="handleUp(scope.row, scope.$index)"
+                                @click.native.prevent="handleCheck(scope.row, scope.$index)"
                                 type="text"
                                 size="small"
                                 class="primary-btn"
-                                v-if="scope.row.status==='2'||scope.row.status==='3'">
+                                v-if="scope.row.status===0||scope.row.status===3">
                                 审核
                             </el-button>
                             <el-button
@@ -121,7 +114,7 @@
                                 type="text"
                                 size="small"
                                 class="primary-btn"
-                                v-if="scope.row.status==='0'">
+                                v-if="scope.row.status===1">
                                 上架
                             </el-button>
                             <el-button
@@ -129,7 +122,7 @@
                                 type="text"
                                 size="small"
                                 class="red-btn"
-                                v-else-if="scope.row.status==='1'">
+                                v-else-if="scope.row.status===2">
                                 下架
                             </el-button>
                             <el-button
@@ -203,130 +196,8 @@ export default {
             }
         ],
         searchInput:'',
-        searchStatus: '',
-        searchStudy: '',
-        tableData:[
-            {
-                id:'1',
-                title:'高考特辑',
-                teacher:['张老师','李老师'],
-                study:'2',
-                type:'0',
-                price:'12',
-                oldPrice:'16',
-                status:'1',
-                creator:'张三',
-                data:'2018-02-03'
-            },
-            {
-                id:'1',
-                title:'高考特辑',
-                teacher:['张老师','李老师'],
-                study:'1',
-                type:'1',
-                price:'12',
-                oldPrice:'16',
-                status:'0',
-                creator:'张三',
-                data:'2018-02-03'
-            },
-            {
-                id:'1',
-                title:'高考特辑',
-                teacher:['张老师','李老师'],
-                study:'2',
-                type:'0',
-                price:'12',
-                oldPrice:'16',
-                status:'2',
-                creator:'张三',
-                data:'2018-02-03'
-            },
-            {
-                id:'1',
-                title:'高考特辑',
-                teacher:['张老师','李老师'],
-                study:'2',
-                type:'0',
-                price:'12',
-                oldPrice:'16',
-                status:'3',
-                creator:'张三',
-                data:'2018-02-03'
-            },
-            {
-                id:'1',
-                title:'高考特辑',
-                teacher:['张老师','李老师'],
-                study:'2',
-                type:'0',
-                price:'12',
-                oldPrice:'16',
-                status:'3',
-                creator:'张三',
-                data:'2018-02-03'
-            },
-            {
-                id:'1',
-                title:'高考特辑',
-                teacher:['张老师','李老师'],
-                study:'2',
-                type:'0',
-                price:'12',
-                oldPrice:'16',
-                status:'2',
-                creator:'张三',
-                data:'2018-02-03'
-            },
-            {
-                id:'1',
-                title:'高考特辑',
-                teacher:['张老师','李老师'],
-                study:'2',
-                type:'0',
-                price:'12',
-                oldPrice:'16',
-                status:'1',
-                creator:'张三',
-                data:'2018-02-03'
-            },
-            {
-                id:'1',
-                title:'高考特辑',
-                teacher:['张老师','李老师'],
-                study:'2',
-                type:'0',
-                price:'12',
-                oldPrice:'16',
-                status:'1',
-                creator:'张三',
-                data:'2018-02-03'
-            },
-            {
-                id:'1',
-                title:'高考特辑',
-                teacher:['张老师','李老师'],
-                study:'2',
-                type:'0',
-                price:'12',
-                oldPrice:'16',
-                status:'1',
-                creator:'张三',
-                data:'2018-02-03'
-            },
-            {
-                id:'1',
-                title:'高考特辑',
-                teacher:['张老师','李老师'],
-                study:'2',
-                type:'0',
-                price:'12',
-                oldPrice:'16',
-                status:'1',
-                creator:'张三',
-                data:'2018-02-03'
-            }
-        ],
+        searchStatus: -1,
+        tableData:[],
         pageSize: window.localStorage.getItem('pageSize')?Number(window.localStorage.getItem('pageSize')):10, 
         pageNumber: window.localStorage.getItem('pageNumber')?Number(window.localStorage.getItem('pageNumber')):1,
         tableHeight: "" // 表格高度
@@ -377,36 +248,25 @@ export default {
             },
         });
     },
-    // 信息
-    handleLookInfo(row){
-        window.localStorage.setItem('pageSize',this.pageSize)
-        window.localStorage.setItem('pageNumber',this.pageNumber)
-        this.$router.push({
-            path: "/peopleList",
-            query: {
-                id: row?row.id:''
-            },
-        });
-    },
     // 停用 启用
     handleUp(row, index) {
-      let Mname = "book-book_manager-SetPublishStatusForBook";
+      let Mname = "/CourseServer/Manager/ZBCourseManager/ShelveZBCourse";
       let updataData = JSON.parse(JSON.stringify(row));
       let data = {
-        book_id: row.id
+        id: row.id
       };
-      if (row.publish_status == 0) {
+      if (row.status === 1) {
         // 下架状态
-        data.publish_status = 1;
-        updataData.publish_status = 1;
-      } else if (row.publish_status == 1) {
-        data.publish_status = 0;
-        updataData.publish_status = 0;
+        data.is_pass = "true";
+        updataData.status = 2;
+      } else if (row.status === 2) {
+        data.is_pass = "false";
+        updataData.status = 1;
       }
-    //   getContent(Mname, data).then(res => {
-    //     this.$message.success("操作成功");
-    //     this.$set(this.tableData, index, updataData);
-    //   });
+      getLogin(Mname, data).then(res => {
+        this.$message.success("操作成功");
+        this.$set(this.tableData, index, updataData);
+      });
     },
     // 删除
     handleDelete(row){
@@ -415,22 +275,57 @@ export default {
           cancelButtonText: '取消',
           type: 'warning'
         }).then(() => {
-          this.$message({
-            type: 'success',
-            message: '删除成功!'
-          });
+            let Mname = "/CourseServer/Manager/ZBCourseManager/DeleteZBCourse";
+            let data = {
+                id: row.id,
+                is_force_delete: "true"
+            };
+            getLogin(Mname, data).then(res => {
+                this.$message({
+                    type: 'success',
+                    message: '删除成功!'
+                });
+                this.getList(1)
+            });
+        }).catch(() => {
+               
+        });
+    },
+    // 审核
+    handleCheck(row, index){
+        let Mname = "/CourseServer/Manager/ZBCourseManager/AuditZBCourse";
+        let updataData = JSON.parse(JSON.stringify(row));
+        let data = {
+            id: row.id
+        };
+        this.$confirm('审核', '提示', {
+          confirmButtonText: '审核通过',
+          cancelButtonText: '驳回',
+          type: 'warning'
+        }).then(() => {
+            data.is_pass = "true";
+            updataData.status = 1;
+            getLogin(Mname, data).then(res => {
+                this.$message.success("操作成功");
+                this.$set(this.tableData, index, updataData);
+            });
         }).catch(() => {
-          this.$message({
-            type: 'info',
-            message: '已取消删除'
-          });          
+            data.is_pass = "false";
+            updataData.status = 3;
+            getLogin(Mname, data).then(res => {
+                this.$message.success("操作成功");
+                this.$set(this.tableData, index, updataData);
+            });      
         });
     },
     handleSizeChange(val) {
         this.pageSize = val
+        this.pageNumber = 1
+        this.getList()
     },
     handleCurrentChange(val) {
         this.pageNumber = val
+        this.getList()
     },
     //计算table高度(动态设置table高度)
     getTableHeight() {