|
@@ -6,7 +6,7 @@
|
|
|
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
|
|
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
|
|
|
<el-form-item label="小节名称" prop="title">
|
|
<el-form-item label="小节名称" prop="title">
|
|
|
<el-input v-model="queryParams.title" placeholder="请输入小节名称" clearable size="small"
|
|
<el-input v-model="queryParams.title" placeholder="请输入小节名称" clearable size="small"
|
|
|
- @keyup.enter.native="handleQuery" />
|
|
|
|
|
|
|
+ @keyup.enter.native="handleQuery"/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item>
|
|
<el-form-item>
|
|
|
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
|
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
|
@@ -16,34 +16,45 @@
|
|
|
<el-row :gutter="10" class="mb8">
|
|
<el-row :gutter="10" class="mb8">
|
|
|
<el-col :span="1.5">
|
|
<el-col :span="1.5">
|
|
|
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
|
|
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
|
|
|
- v-hasPermi="['course:userCourseVideo:add']">新增目录</el-button>
|
|
|
|
|
|
|
+ v-hasPermi="['course:userCourseVideo:add']">新增目录
|
|
|
|
|
+ </el-button>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="1.5">
|
|
<el-col :span="1.5">
|
|
|
<el-button type="primary" plain :disabled="!ids || ids.length <= 0" size="mini" @click="openUpdates"
|
|
<el-button type="primary" plain :disabled="!ids || ids.length <= 0" size="mini" @click="openUpdates"
|
|
|
- v-hasPermi="['course:userCourseVideo:updateTime']">修改时间</el-button>
|
|
|
|
|
|
|
+ v-hasPermi="['course:userCourseVideo:updateTime']">修改时间
|
|
|
|
|
+ </el-button>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="1.5">
|
|
<el-col :span="1.5">
|
|
|
<el-button type="primary" plain size="mini" @click="openAdds"
|
|
<el-button type="primary" plain size="mini" @click="openAdds"
|
|
|
- v-hasPermi="['course:userCourseVideo:batchAdd']">批量添加</el-button>
|
|
|
|
|
|
|
+ v-hasPermi="['course:userCourseVideo:batchAdd']">批量添加
|
|
|
|
|
+ </el-button>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="1.5">
|
|
<el-col :span="1.5">
|
|
|
<el-button type="primary" plain size="mini" @click="updateRedPageckeOpen"
|
|
<el-button type="primary" plain size="mini" @click="updateRedPageckeOpen"
|
|
|
- v-hasPermi="['course:userCourseVideo:updateRed']">修改红包</el-button>
|
|
|
|
|
|
|
+ v-hasPermi="['course:userCourseVideo:updateRed']">修改红包
|
|
|
|
|
+ </el-button>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="1.5">
|
|
<el-col :span="1.5">
|
|
|
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
|
|
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
|
|
|
- v-hasPermi="['course:userCourseVideo:remove']">删除</el-button>
|
|
|
|
|
|
|
+ v-hasPermi="['course:userCourseVideo:remove']">删除
|
|
|
|
|
+ </el-button>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="1.5">
|
|
<el-col :span="1.5">
|
|
|
<el-button type="warning" plain icon="el-icon-edit" size="mini" @click="handleCourseSort"
|
|
<el-button type="warning" plain icon="el-icon-edit" size="mini" @click="handleCourseSort"
|
|
|
- v-hasPermi="['course:userCourseVideo:sort']">修改课节排序</el-button>
|
|
|
|
|
|
|
+ v-hasPermi="['course:userCourseVideo:sort']">修改课节排序
|
|
|
|
|
+ </el-button>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="1.5">
|
|
|
|
|
+ <el-button type="primary" plain icon="el-icon-delete" size="mini" @click="handleSync"
|
|
|
|
|
+ v-hasPermi="['course:userCourseVideo:sync']">同步模板数据
|
|
|
|
|
+ </el-button>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
|
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
|
|
</el-row>
|
|
</el-row>
|
|
|
<el-table border v-loading="loading" :data="userCourseVideoList" @selection-change="handleSelectionChange">
|
|
<el-table border v-loading="loading" :data="userCourseVideoList" @selection-change="handleSelectionChange">
|
|
|
- <el-table-column type="selection" width="55" align="center" />
|
|
|
|
|
- <el-table-column label="视频ID" align="center" prop="videoId" />
|
|
|
|
|
- <el-table-column label="小节名称" align="center" show-overflow-tooltip prop="title" />
|
|
|
|
|
|
|
+ <el-table-column type="selection" width="55" align="center"/>
|
|
|
|
|
+ <el-table-column label="视频ID" align="center" prop="videoId"/>
|
|
|
|
|
+ <el-table-column label="小节名称" align="center" show-overflow-tooltip prop="title"/>
|
|
|
<el-table-column label="视频文件名称" align="center" show-overflow-tooltip prop="fileName">
|
|
<el-table-column label="视频文件名称" align="center" show-overflow-tooltip prop="fileName">
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
<el-table-column label="视频时长" align="center" prop="duration">
|
|
<el-table-column label="视频时长" align="center" prop="duration">
|
|
@@ -69,30 +80,33 @@
|
|
|
<el-tag type="danger" v-if="!row.lastJoinTime">无</el-tag>
|
|
<el-tag type="danger" v-if="!row.lastJoinTime">无</el-tag>
|
|
|
</template>
|
|
</template>
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
- <el-table-column label="红包金额" align="center" prop="redPacketMoney" />
|
|
|
|
|
- <el-table-column label="排序" align="center" prop="courseSort" />
|
|
|
|
|
- <el-table-column label="上传时间" align="center" prop="createTime" />
|
|
|
|
|
|
|
+ <el-table-column label="红包金额" align="center" prop="redPacketMoney"/>
|
|
|
|
|
+ <el-table-column label="排序" align="center" prop="courseSort"/>
|
|
|
|
|
+ <el-table-column label="上传时间" align="center" prop="createTime"/>
|
|
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
|
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
|
|
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
|
|
|
- v-hasPermi="['course:userCourseVideo:edit']">修改</el-button>
|
|
|
|
|
|
|
+ v-hasPermi="['course:userCourseVideo:edit']">修改
|
|
|
|
|
+ </el-button>
|
|
|
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleComment(scope.row)"
|
|
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleComment(scope.row)"
|
|
|
- v-hasPermi="['course:courseWatchComment:list']">查看评论</el-button>
|
|
|
|
|
|
|
+ v-hasPermi="['course:courseWatchComment:list']">查看评论
|
|
|
|
|
+ </el-button>
|
|
|
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
|
|
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
|
|
|
- v-hasPermi="['course:userCourseVideo:remove']">删除</el-button>
|
|
|
|
|
|
|
+ v-hasPermi="['course:userCourseVideo:remove']">删除
|
|
|
|
|
+ </el-button>
|
|
|
</template>
|
|
</template>
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
</el-table>
|
|
</el-table>
|
|
|
|
|
|
|
|
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
|
|
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
|
|
|
- @pagination="getList" />
|
|
|
|
|
|
|
+ @pagination="getList"/>
|
|
|
<el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body>
|
|
<el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body>
|
|
|
<el-form ref="form" :model="form" :rules="rules" label-width="110px" v-loading="uploadLoading">
|
|
<el-form ref="form" :model="form" :rules="rules" label-width="110px" v-loading="uploadLoading">
|
|
|
<el-form-item label="视频标题" prop="title">
|
|
<el-form-item label="视频标题" prop="title">
|
|
|
- <el-input v-model="form.title" placeholder="请输入内容" />
|
|
|
|
|
|
|
+ <el-input v-model="form.title" placeholder="请输入内容"/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item label="视频描述" prop="description">
|
|
<el-form-item label="视频描述" prop="description">
|
|
|
- <el-input v-model="form.description" type="textarea" :rows="2" placeholder="请输入内容" />
|
|
|
|
|
|
|
+ <el-input v-model="form.description" type="textarea" :rows="2" placeholder="请输入内容"/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item label="课程排序" prop="courseSort">
|
|
<el-form-item label="课程排序" prop="courseSort">
|
|
|
<el-input-number v-model="form.courseSort" :min="1"></el-input-number>
|
|
<el-input-number v-model="form.courseSort" :min="1"></el-input-number>
|
|
@@ -110,7 +124,8 @@
|
|
|
:line_2.sync="form.lineTwo" :line_3.sync="form.lineThree" :thumbnail.sync="form.thumbnail"
|
|
:line_2.sync="form.lineTwo" :line_3.sync="form.lineThree" :thumbnail.sync="form.thumbnail"
|
|
|
:uploadType.sync="form.uploadType" :isTranscode.sync="form.isTranscode"
|
|
:uploadType.sync="form.uploadType" :isTranscode.sync="form.isTranscode"
|
|
|
:transcodeFileKey.sync="form.transcodeFileKey" @video-duration="handleVideoDuration"
|
|
:transcodeFileKey.sync="form.transcodeFileKey" @video-duration="handleVideoDuration"
|
|
|
- @change="handleVideoChange" @selectProjects="handleSelectProjects" ref="videoUpload" append-to-body />
|
|
|
|
|
|
|
+ @change="handleVideoChange" @selectProjects="handleSelectProjects" ref="videoUpload"
|
|
|
|
|
+ append-to-body/>
|
|
|
|
|
|
|
|
<el-form-item label="课题选择" prop="questionBankId">
|
|
<el-form-item label="课题选择" prop="questionBankId">
|
|
|
<el-button size="small" type="primary" @click="chooseQuestionBank">选取课题</el-button>
|
|
<el-button size="small" type="primary" @click="chooseQuestionBank">选取课题</el-button>
|
|
@@ -127,14 +142,15 @@
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
<el-table-column label="类别" align="center" prop="type">
|
|
<el-table-column label="类别" align="center" prop="type">
|
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
|
- <dict-tag :options="typeOptions" :value="scope.row.type" />
|
|
|
|
|
|
|
+ <dict-tag :options="typeOptions" :value="scope.row.type"/>
|
|
|
</template>
|
|
</template>
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
- <el-table-column label="答案" align="center" prop="answer" />
|
|
|
|
|
|
|
+ <el-table-column label="答案" align="center" prop="answer"/>
|
|
|
<el-table-column label="操作" align="center" width="100px" fixed="right">
|
|
<el-table-column label="操作" align="center" width="100px" fixed="right">
|
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
|
<el-button size="mini" type="text" icon="el-icon-delete"
|
|
<el-button size="mini" type="text" icon="el-icon-delete"
|
|
|
- @click="handleQuestionBankDelete(scope.row)">删除</el-button>
|
|
|
|
|
|
|
+ @click="handleQuestionBankDelete(scope.row)">删除
|
|
|
|
|
+ </el-button>
|
|
|
</template>
|
|
</template>
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
</el-table>
|
|
</el-table>
|
|
@@ -155,14 +171,15 @@
|
|
|
<el-form-item label="商品选择" v-if="form.isProduct === 1">
|
|
<el-form-item label="商品选择" v-if="form.isProduct === 1">
|
|
|
<el-button size="small" type="primary" @click="chooseCourseProduct">选取商品</el-button>
|
|
<el-button size="small" type="primary" @click="chooseCourseProduct">选取商品</el-button>
|
|
|
<el-table border width="100%" style="margin-top:5px;" :data="form.courseProducts">
|
|
<el-table border width="100%" style="margin-top:5px;" :data="form.courseProducts">
|
|
|
- <el-table-column label="商品名称" align="center" prop="productName" />
|
|
|
|
|
- <el-table-column label="产品条码" align="center" prop="barCode" />
|
|
|
|
|
- <el-table-column label="商品价格" align="center" prop="productPrice" />
|
|
|
|
|
- <el-table-column label="库存" align="center" prop="stock" />
|
|
|
|
|
|
|
+ <el-table-column label="商品名称" align="center" prop="productName"/>
|
|
|
|
|
+ <el-table-column label="产品条码" align="center" prop="barCode"/>
|
|
|
|
|
+ <el-table-column label="商品价格" align="center" prop="productPrice"/>
|
|
|
|
|
+ <el-table-column label="库存" align="center" prop="stock"/>
|
|
|
<el-table-column label="操作" align="center" width="100px" fixed="right">
|
|
<el-table-column label="操作" align="center" width="100px" fixed="right">
|
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
|
<el-button size="mini" type="text" icon="el-icon-delete"
|
|
<el-button size="mini" type="text" icon="el-icon-delete"
|
|
|
- @click="handleCourseProductDelete(scope.row)">删除</el-button>
|
|
|
|
|
|
|
+ @click="handleCourseProductDelete(scope.row)">删除
|
|
|
|
|
+ </el-button>
|
|
|
</template>
|
|
</template>
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
</el-table>
|
|
</el-table>
|
|
@@ -188,7 +205,8 @@
|
|
|
<el-dialog :title="title" :visible.sync="updateBatchData.open" width="1000px" append-to-body>
|
|
<el-dialog :title="title" :visible.sync="updateBatchData.open" width="1000px" append-to-body>
|
|
|
<el-form ref="form" :model="updateBatchData.form" label-width="110px">
|
|
<el-form ref="form" :model="updateBatchData.form" label-width="110px">
|
|
|
<el-form-item label="看课时间" prop="timeRange">
|
|
<el-form-item label="看课时间" prop="timeRange">
|
|
|
- <el-time-picker is-range v-model="updateBatchData.form.timeRange" range-separator="至" start-placeholder="开始时间"
|
|
|
|
|
|
|
+ <el-time-picker is-range v-model="updateBatchData.form.timeRange" range-separator="至"
|
|
|
|
|
+ start-placeholder="开始时间"
|
|
|
value-format="HH:mm:ss" end-placeholder="结束时间" placeholder="选择时间范围">
|
|
value-format="HH:mm:ss" end-placeholder="结束时间" placeholder="选择时间范围">
|
|
|
</el-time-picker>
|
|
</el-time-picker>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
@@ -215,19 +233,20 @@
|
|
|
<el-form :inline="true" :model="addBatchData.queryParams" class="library-search">
|
|
<el-form :inline="true" :model="addBatchData.queryParams" class="library-search">
|
|
|
<el-form-item label="素材名称">
|
|
<el-form-item label="素材名称">
|
|
|
<el-input v-model="addBatchData.queryParams.resourceName" placeholder="请输入素材名称" clearable size="small"
|
|
<el-input v-model="addBatchData.queryParams.resourceName" placeholder="请输入素材名称" clearable size="small"
|
|
|
- @keyup.enter.native="resourceList" />
|
|
|
|
|
|
|
+ @keyup.enter.native="resourceList"/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item label="类型">
|
|
<el-form-item label="类型">
|
|
|
- <el-select v-model="addBatchData.queryParams.typeId" @change="changeCateType" placeholder="请选择素材类型" clearable
|
|
|
|
|
|
|
+ <el-select v-model="addBatchData.queryParams.typeId" @change="changeCateType" placeholder="请选择素材类型"
|
|
|
|
|
+ clearable
|
|
|
size="small">
|
|
size="small">
|
|
|
<el-option v-for="item in addBatchData.typeOptions" :key="item.dictValue" :label="item.dictLabel"
|
|
<el-option v-for="item in addBatchData.typeOptions" :key="item.dictValue" :label="item.dictLabel"
|
|
|
- :value="item.dictValue" />
|
|
|
|
|
|
|
+ :value="item.dictValue"/>
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item label="子类型">
|
|
<el-form-item label="子类型">
|
|
|
<el-select v-model="addBatchData.queryParams.typeSubId" placeholder="请选择素材子类型" clearable size="small">
|
|
<el-select v-model="addBatchData.queryParams.typeSubId" placeholder="请选择素材子类型" clearable size="small">
|
|
|
<el-option v-for="item in addBatchData.typeSubOptions" :key="item.dictValue" :label="item.dictLabel"
|
|
<el-option v-for="item in addBatchData.typeSubOptions" :key="item.dictValue" :label="item.dictLabel"
|
|
|
- :value="item.dictValue" />
|
|
|
|
|
|
|
+ :value="item.dictValue"/>
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item>
|
|
<el-form-item>
|
|
@@ -238,15 +257,15 @@
|
|
|
<!-- 视频列表 -->
|
|
<!-- 视频列表 -->
|
|
|
<el-table v-loading="addBatchData.loading" :data="addBatchData.list"
|
|
<el-table v-loading="addBatchData.loading" :data="addBatchData.list"
|
|
|
@selection-change="handVideoleSelectionChange" height="400px">
|
|
@selection-change="handVideoleSelectionChange" height="400px">
|
|
|
- <el-table-column type="selection" width="55" align="center" />
|
|
|
|
|
- <el-table-column label="素材名称" align="center" prop="resourceName" />
|
|
|
|
|
- <el-table-column label="文件名称" align="center" prop="fileName" />
|
|
|
|
|
- <el-table-column label="排序" align="center" prop="sort" />
|
|
|
|
|
|
|
+ <el-table-column type="selection" width="55" align="center"/>
|
|
|
|
|
+ <el-table-column label="素材名称" align="center" prop="resourceName"/>
|
|
|
|
|
+ <el-table-column label="文件名称" align="center" prop="fileName"/>
|
|
|
|
|
+ <el-table-column label="排序" align="center" prop="sort"/>
|
|
|
<el-table-column label="缩略图" align="center">
|
|
<el-table-column label="缩略图" align="center">
|
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
|
<el-popover placement="right" title="" trigger="hover">
|
|
<el-popover placement="right" title="" trigger="hover">
|
|
|
- <img alt="" slot="reference" :src="scope.row.thumbnail" style="width: 80px; height: 50px" />
|
|
|
|
|
- <img alt="" :src="scope.row.thumbnail" style="max-width: 150px;" />
|
|
|
|
|
|
|
+ <img alt="" slot="reference" :src="scope.row.thumbnail" style="width: 80px; height: 50px"/>
|
|
|
|
|
+ <img alt="" :src="scope.row.thumbnail" style="max-width: 150px;"/>
|
|
|
</el-popover>
|
|
</el-popover>
|
|
|
</template>
|
|
</template>
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
@@ -260,7 +279,7 @@
|
|
|
<!-- 分页 -->
|
|
<!-- 分页 -->
|
|
|
<pagination v-show="addBatchData.total > 0" :total="addBatchData.total"
|
|
<pagination v-show="addBatchData.total > 0" :total="addBatchData.total"
|
|
|
:page.sync="addBatchData.queryParams.pageNum" :limit.sync="addBatchData.queryParams.pageSize"
|
|
:page.sync="addBatchData.queryParams.pageNum" :limit.sync="addBatchData.queryParams.pageSize"
|
|
|
- @pagination="resourceList" />
|
|
|
|
|
|
|
+ @pagination="resourceList"/>
|
|
|
|
|
|
|
|
<div slot="footer" class="dialog-footer">
|
|
<div slot="footer" class="dialog-footer">
|
|
|
<el-button type="primary" @click="batchVideoSave">确 定</el-button>
|
|
<el-button type="primary" @click="batchVideoSave">确 定</el-button>
|
|
@@ -268,7 +287,7 @@
|
|
|
</el-dialog>
|
|
</el-dialog>
|
|
|
<el-dialog title="章节红包" :visible.sync="redData.open" width="900px" append-to-body>
|
|
<el-dialog title="章节红包" :visible.sync="redData.open" width="900px" append-to-body>
|
|
|
<el-table border v-loading="redData.loading" :data="redData.list" height="600px">
|
|
<el-table border v-loading="redData.loading" :data="redData.list" height="600px">
|
|
|
- <el-table-column label="小节名称" align="center" show-overflow-tooltip prop="title" />
|
|
|
|
|
|
|
+ <el-table-column label="小节名称" align="center" show-overflow-tooltip prop="title"/>
|
|
|
<el-table-column label="视频文件名称" align="center" show-overflow-tooltip prop="fileName">
|
|
<el-table-column label="视频文件名称" align="center" show-overflow-tooltip prop="fileName">
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
<el-table-column label="视频时长" align="center" prop="duration">
|
|
<el-table-column label="视频时长" align="center" prop="duration">
|
|
@@ -278,11 +297,11 @@
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
<el-table-column label="红包金额" align="center" prop="redPacketMoney">
|
|
<el-table-column label="红包金额" align="center" prop="redPacketMoney">
|
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
|
- <el-input class="el-input" v-model="scope.row.redPacketMoney" />
|
|
|
|
|
|
|
+ <el-input class="el-input" v-model="scope.row.redPacketMoney"/>
|
|
|
</template>
|
|
</template>
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
- <el-table-column label="排序" align="center" prop="courseSort" />
|
|
|
|
|
- <el-table-column label="上传时间" align="center" prop="createTime" />
|
|
|
|
|
|
|
+ <el-table-column label="排序" align="center" prop="courseSort"/>
|
|
|
|
|
+ <el-table-column label="上传时间" align="center" prop="createTime"/>
|
|
|
</el-table>
|
|
</el-table>
|
|
|
<div slot="footer" class="dialog-footer">
|
|
<div slot="footer" class="dialog-footer">
|
|
|
<el-button type="primary" @click="batchRedSave">确 定</el-button>
|
|
<el-button type="primary" @click="batchRedSave">确 定</el-button>
|
|
@@ -298,7 +317,8 @@
|
|
|
|
|
|
|
|
<el-dialog title="修改课节排序" :visible.sync="openVideoSort" style="width: 1600px;" append-to-body>
|
|
<el-dialog title="修改课节排序" :visible.sync="openVideoSort" style="width: 1600px;" append-to-body>
|
|
|
<draggable v-model="userCourseVideoSortList" @end="onDragEndDay" style="padding: 10px">
|
|
<draggable v-model="userCourseVideoSortList" @end="onDragEndDay" style="padding: 10px">
|
|
|
- <el-button style="margin: 8px 4px;" v-for="(item, index) in userCourseVideoSortList" :class="item.newCourseSort != item.courseSort ? 'red':''">第{{
|
|
|
|
|
|
|
+ <el-button style="margin: 8px 4px;" v-for="(item, index) in userCourseVideoSortList"
|
|
|
|
|
+ :class="item.newCourseSort != item.courseSort ? 'red':''">第{{
|
|
|
item.newCourseSort
|
|
item.newCourseSort
|
|
|
}}序(原排序第{{ item.courseSort }})
|
|
}}序(原排序第{{ item.courseSort }})
|
|
|
</el-button>
|
|
</el-button>
|
|
@@ -314,27 +334,31 @@
|
|
|
<script>
|
|
<script>
|
|
|
import {
|
|
import {
|
|
|
addUserCourseVideo,
|
|
addUserCourseVideo,
|
|
|
|
|
+ batchSaveVideo,
|
|
|
|
|
+ batchUpdateRed,
|
|
|
delUserCourseVideo,
|
|
delUserCourseVideo,
|
|
|
getSort,
|
|
getSort,
|
|
|
getUserCourseVideo,
|
|
getUserCourseVideo,
|
|
|
getVideoListByCourseId,
|
|
getVideoListByCourseId,
|
|
|
|
|
+ getVideoListByCourseIdAll,
|
|
|
|
|
+ sortCourseVideo,
|
|
|
updates,
|
|
updates,
|
|
|
- batchSaveVideo,
|
|
|
|
|
- batchUpdateRed,
|
|
|
|
|
- updateUserCourseVideo, getVideoListByCourseIdAll, sortCourseVideo
|
|
|
|
|
|
|
+ updateUserCourseVideo,
|
|
|
|
|
+ syncTemplate
|
|
|
} from '@/api/course/userCourseVideo'
|
|
} from '@/api/course/userCourseVideo'
|
|
|
|
|
+// import {syncTemplate} from '@/api/course/userCourse'
|
|
|
import QuestionBank from "@/views/course/courseQuestionBank/QuestionBank.vue";
|
|
import QuestionBank from "@/views/course/courseQuestionBank/QuestionBank.vue";
|
|
|
import CourseProduct from "@/views/course/fsCourseProduct/CourseProduct.vue";
|
|
import CourseProduct from "@/views/course/fsCourseProduct/CourseProduct.vue";
|
|
|
import VideoUpload from "@/components/VideoUpload/index.vue";
|
|
import VideoUpload from "@/components/VideoUpload/index.vue";
|
|
|
-import { listVideoResource } from '@/api/course/videoResource';
|
|
|
|
|
-import { getByIds } from '@/api/course/courseQuestionBank'
|
|
|
|
|
|
|
+import {listVideoResource} from '@/api/course/videoResource';
|
|
|
|
|
+import {getByIds} from '@/api/course/courseQuestionBank'
|
|
|
import CourseWatchComment from "./courseWatchComment.vue";
|
|
import CourseWatchComment from "./courseWatchComment.vue";
|
|
|
-import { getCateListByPid, getCatePidList } from '@/api/course/userCourseCategory'
|
|
|
|
|
|
|
+import {getCateListByPid, getCatePidList} from '@/api/course/userCourseCategory'
|
|
|
import draggable from 'vuedraggable'
|
|
import draggable from 'vuedraggable'
|
|
|
|
|
|
|
|
export default {
|
|
export default {
|
|
|
name: "userCourseCatalog",
|
|
name: "userCourseCatalog",
|
|
|
- components: { VideoUpload, QuestionBank, CourseWatchComment, CourseProduct, draggable },
|
|
|
|
|
|
|
+ components: {VideoUpload, QuestionBank, CourseWatchComment, CourseProduct, draggable},
|
|
|
data() {
|
|
data() {
|
|
|
return {
|
|
return {
|
|
|
duration: null,
|
|
duration: null,
|
|
@@ -357,8 +381,8 @@ export default {
|
|
|
isPrivate: null,
|
|
isPrivate: null,
|
|
|
videoUrl: "",
|
|
videoUrl: "",
|
|
|
uploadTypeOptions: [
|
|
uploadTypeOptions: [
|
|
|
- { dictLabel: "线路一", dictValue: 2 },
|
|
|
|
|
- { dictLabel: "线路二", dictValue: 3 },
|
|
|
|
|
|
|
+ {dictLabel: "线路一", dictValue: 2},
|
|
|
|
|
+ {dictLabel: "线路二", dictValue: 3},
|
|
|
],
|
|
],
|
|
|
uploadLoading: false,
|
|
uploadLoading: false,
|
|
|
courseId: null,
|
|
courseId: null,
|
|
@@ -390,8 +414,7 @@ export default {
|
|
|
list: [],
|
|
list: [],
|
|
|
open: false,
|
|
open: false,
|
|
|
loading: true,
|
|
loading: true,
|
|
|
- form: {
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ form: {}
|
|
|
},
|
|
},
|
|
|
queryParams: {
|
|
queryParams: {
|
|
|
pageNum: 1,
|
|
pageNum: 1,
|
|
@@ -440,10 +463,10 @@ export default {
|
|
|
// 表单校验
|
|
// 表单校验
|
|
|
rules: {
|
|
rules: {
|
|
|
title: [
|
|
title: [
|
|
|
- { required: true, message: "小节名称不能为空", trigger: "change" }
|
|
|
|
|
|
|
+ {required: true, message: "小节名称不能为空", trigger: "change"}
|
|
|
],
|
|
],
|
|
|
courseSort: [
|
|
courseSort: [
|
|
|
- { required: true, message: "排序不能为空", trigger: "change" }
|
|
|
|
|
|
|
+ {required: true, message: "排序不能为空", trigger: "change"}
|
|
|
],
|
|
],
|
|
|
|
|
|
|
|
},
|
|
},
|
|
@@ -581,7 +604,7 @@ export default {
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- const params = { ids: projectIds }
|
|
|
|
|
|
|
+ const params = {ids: projectIds}
|
|
|
getByIds(params).then(response => {
|
|
getByIds(params).then(response => {
|
|
|
if (response.code === 200) {
|
|
if (response.code === 200) {
|
|
|
response.data.forEach(item => {
|
|
response.data.forEach(item => {
|
|
@@ -851,7 +874,23 @@ export default {
|
|
|
}).then(() => {
|
|
}).then(() => {
|
|
|
this.getList();
|
|
this.getList();
|
|
|
this.msgSuccess("删除成功");
|
|
this.msgSuccess("删除成功");
|
|
|
- }).catch(() => { });
|
|
|
|
|
|
|
+ }).catch(() => {
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+ /** 同步模板数据*/
|
|
|
|
|
+ handleSync() {
|
|
|
|
|
+ const courseId = this.courseId;
|
|
|
|
|
+ this.$confirm('是否同步课程数据至模板', "确认", {
|
|
|
|
|
+ confirmButtonText: "确定",
|
|
|
|
|
+ cancelButtonText: "取消",
|
|
|
|
|
+ type: "warning"
|
|
|
|
|
+ }).then(function () {
|
|
|
|
|
+ return syncTemplate(courseId);
|
|
|
|
|
+ }).then(() => {
|
|
|
|
|
+ this.getList();
|
|
|
|
|
+ this.msgSuccess("同步成功");
|
|
|
|
|
+ }).catch(() => {
|
|
|
|
|
+ });
|
|
|
},
|
|
},
|
|
|
|
|
|
|
|
handleCourseSort() {
|
|
handleCourseSort() {
|
|
@@ -879,7 +918,7 @@ export default {
|
|
|
|
|
|
|
|
saveSorts() {
|
|
saveSorts() {
|
|
|
let list = this.userCourseVideoSortList.filter(e => e.courseSort != e.newCourseSort).map(e => {
|
|
let list = this.userCourseVideoSortList.filter(e => e.courseSort != e.newCourseSort).map(e => {
|
|
|
- return { courseSort: e.newCourseSort, videoId: e.videoId }
|
|
|
|
|
|
|
+ return {courseSort: e.newCourseSort, videoId: e.videoId}
|
|
|
})
|
|
})
|
|
|
this.loading3 = true;
|
|
this.loading3 = true;
|
|
|
sortCourseVideo(list).then(e => {
|
|
sortCourseVideo(list).then(e => {
|