|
@@ -0,0 +1,224 @@
|
|
|
+<template>
|
|
|
+ <div class="template">
|
|
|
+ <!-- 查询条件 -->
|
|
|
+ <div class="template-search">
|
|
|
+ <div>
|
|
|
+ <el-input
|
|
|
+ v-model="name"
|
|
|
+ class="search-name"
|
|
|
+ prefix-icon="el-icon-search"
|
|
|
+ @change="queryCourseList"
|
|
|
+ >
|
|
|
+ <el-button slot="append" @click="queryCourseList">搜索</el-button>
|
|
|
+ </el-input>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <el-select v-model="release_status">
|
|
|
+ <el-option
|
|
|
+ v-for="item in releaseStatusList"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.name"
|
|
|
+ :value="item.value"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ <el-button class="query-button" type="primary" @click="queryCourseList">查询</el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- 模板列表 -->
|
|
|
+ <div class="template-container">
|
|
|
+ <div class="template-container-title">
|
|
|
+ <span>模板库</span>
|
|
|
+ <el-button class="create" @click="$router.push('/create_course?isTemplate=true')">
|
|
|
+ <div><svg-icon icon-class="create" /><span>创建模板</span></div>
|
|
|
+ </el-button>
|
|
|
+ </div>
|
|
|
+ <div class="template-container-list">
|
|
|
+ <el-table :data="courseList">
|
|
|
+ <el-table-column prop="name" label="课程名称" width="320" />
|
|
|
+ <el-table-column label="课程周期" width="210">
|
|
|
+ <template slot-scope="{ row }">
|
|
|
+ <i class="el-icon-date" /> {{ row.begin_date }} - {{ row.end_date }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="已发布">
|
|
|
+ <template slot-scope="{ row }">
|
|
|
+ {{ row.is_release === 'true' ? '√' : '' }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column fixed="right" width="80">
|
|
|
+ <template slot-scope="{ row }">
|
|
|
+ <el-dropdown trigger="click">
|
|
|
+ <span class="el-dropdown-link">
|
|
|
+ <svg-icon icon-class="more" />
|
|
|
+ </span>
|
|
|
+ <el-dropdown-menu slot="dropdown">
|
|
|
+ <el-dropdown-item @click.native="edit(row.id)">
|
|
|
+ <svg-icon icon-class="edit" /> 编辑
|
|
|
+ </el-dropdown-item>
|
|
|
+ <el-dropdown-item
|
|
|
+ v-if="row.is_release === 'false'"
|
|
|
+ @click.native="releaseCourse(row.id, true)"
|
|
|
+ >
|
|
|
+ <svg-icon icon-class="publish" /> 发布
|
|
|
+ </el-dropdown-item>
|
|
|
+ <el-dropdown-item v-else @click.native="releaseCourse(row.id, false)">
|
|
|
+ <svg-icon icon-class="undo" /> 取消发布
|
|
|
+ </el-dropdown-item>
|
|
|
+ </el-dropdown-menu>
|
|
|
+ </el-dropdown>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <el-pagination
|
|
|
+ background
|
|
|
+ :page-sizes="[10, 20, 30, 40, 50]"
|
|
|
+ :page-size="page_capacity"
|
|
|
+ layout="prev, pager, next, total, sizes, jumper"
|
|
|
+ :total="total_count"
|
|
|
+ :current-page="cur_page"
|
|
|
+ @prev-click="changePage"
|
|
|
+ @next-click="changePage"
|
|
|
+ @current-change="changePage"
|
|
|
+ @size-change="changePageSize"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import { PageQueryCourseList } from '@/api/table';
|
|
|
+import { ReleaseCourse } from '@/api/course';
|
|
|
+
|
|
|
+export default {
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ // 查询条件
|
|
|
+ name: '',
|
|
|
+ page_capacity: 10,
|
|
|
+ cur_page: 0,
|
|
|
+ total_count: 0,
|
|
|
+ release_status: -1,
|
|
|
+ releaseStatusList: [
|
|
|
+ {
|
|
|
+ name: '全部',
|
|
|
+ value: -1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '已发布',
|
|
|
+ value: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '未发布',
|
|
|
+ value: 0
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ // 课程列表
|
|
|
+ courseList: []
|
|
|
+ };
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ this.queryCourseList();
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ changePage(newPage) {
|
|
|
+ this.cur_page = newPage;
|
|
|
+ this.queryCourseList();
|
|
|
+ },
|
|
|
+ changePageSize(pageSize) {
|
|
|
+ this.page_capacity = pageSize;
|
|
|
+ this.queryCourseList();
|
|
|
+ },
|
|
|
+ queryCourseList() {
|
|
|
+ const queryCriteria = {
|
|
|
+ is_template: true,
|
|
|
+ name: this.name,
|
|
|
+ page_capacity: this.page_capacity,
|
|
|
+ cur_page: this.cur_page,
|
|
|
+ release_status: this.release_status
|
|
|
+ };
|
|
|
+ PageQueryCourseList(queryCriteria).then(({ course_list, total_count }) => {
|
|
|
+ this.courseList = course_list;
|
|
|
+ this.total_count = total_count;
|
|
|
+ });
|
|
|
+ },
|
|
|
+ edit(id) {
|
|
|
+ this.$router.push(`/create_course_step_table/course_info?id=${id}&isTemplate=true`);
|
|
|
+ },
|
|
|
+ releaseCourse(course_id, is_release) {
|
|
|
+ ReleaseCourse({ course_id, is_release }).then(() => {
|
|
|
+ this.queryCourseList();
|
|
|
+ this.$message.success(`${is_release ? '' : '取消'}发布课程成功`);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss">
|
|
|
+@import '~@/styles/mixin.scss';
|
|
|
+
|
|
|
+.template {
|
|
|
+ @include pagination;
|
|
|
+
|
|
|
+ &-search {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+
|
|
|
+ .search-name {
|
|
|
+ width: 528px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .query-button {
|
|
|
+ width: 114px;
|
|
|
+ margin-left: 12px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ &-container {
|
|
|
+ width: 100%;
|
|
|
+ min-height: calc(100vh - 325px);
|
|
|
+ margin-top: 16px;
|
|
|
+ background-color: #fff;
|
|
|
+ border-radius: 8px;
|
|
|
+
|
|
|
+ &-title {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ font-size: 20px;
|
|
|
+ font-weight: bold;
|
|
|
+ padding: 32px;
|
|
|
+
|
|
|
+ .create {
|
|
|
+ width: 138px;
|
|
|
+
|
|
|
+ div {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-around;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ &-list {
|
|
|
+ @include list;
|
|
|
+
|
|
|
+ margin-top: 0;
|
|
|
+
|
|
|
+ .el-dropdown {
|
|
|
+ cursor: pointer;
|
|
|
+
|
|
|
+ .svg-icon {
|
|
|
+ font-size: 19px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|
|
|
+
|
|
|
+<style scoped>
|
|
|
+.el-dropdown-menu .svg-icon {
|
|
|
+ margin-right: 8px;
|
|
|
+}
|
|
|
+</style>
|