Course.vue 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. <template>
  2. <div class="course">
  3. <el-card class="box-card">
  4. <div slot="header" class="clearfix">
  5. <span>课程管理</span>
  6. </div>
  7. <el-table
  8. :data="courseList.list"
  9. style="width: 100%"
  10. height="700">
  11. <el-table-column
  12. label="课程 CODE"
  13. prop="code">
  14. </el-table-column>
  15. <el-table-column
  16. label="课程名称"
  17. prop="title">
  18. </el-table-column>
  19. <el-table-column
  20. label="课程图片"
  21. prop="iconImg">
  22. </el-table-column>
  23. <el-table-column
  24. label="关键字"
  25. prop="keyWords">
  26. </el-table-column>
  27. <el-table-column
  28. label="短标题"
  29. prop="subTitle">
  30. </el-table-column>
  31. <el-table-column
  32. label="播放状态">
  33. <template slot-scope="scope">
  34. {{scope.row.continuity == 'CONTINUOUS' ? '连续' : '重复'}}
  35. </template>
  36. </el-table-column>
  37. <el-table-column
  38. label="模板"
  39. prop="template">
  40. </el-table-column>
  41. <el-table-column label="操作">
  42. <template slot-scope="scope">
  43. <el-button
  44. size="mini"
  45. @click="handleEdit(scope.row)">编辑</el-button>
  46. </template>
  47. </el-table-column>
  48. </el-table>
  49. <el-pagination
  50. background
  51. layout="prev, pager, next"
  52. :total="courseList.totalSize"
  53. @current-change="changePage">
  54. </el-pagination>
  55. </el-card>
  56. <el-dialog
  57. title="编辑课程"
  58. :visible.sync="dialogVisible"
  59. width="50%"
  60. center>
  61. <el-form :model="courseFrom" ref="channelEdit" label-position="left">
  62. <el-form-item label="名称" label-width="90px" >
  63. <el-input size="small" v-model="courseFrom.title" autocomplete="off"></el-input>
  64. </el-form-item>
  65. <el-form-item label="短标题" label-width="90px" >
  66. <el-input size="small" v-model="courseFrom.subTitle" autocomplete="off"></el-input>
  67. </el-form-item>
  68. <el-form-item label="关键字" label-width="90px" >
  69. <el-input size="small" v-model="courseFrom.keyWords" autocomplete="off"></el-input>
  70. </el-form-item>
  71. <el-form-item label="模板" label-width="90px" >
  72. <el-select v-model="courseFrom.template" placeholder="请选择">
  73. <el-option
  74. v-for="item in templateOptions"
  75. :key="item.value"
  76. :label="item.label"
  77. :value="item.value">
  78. </el-option>
  79. </el-select>
  80. </el-form-item>
  81. <el-form-item label="播放状态" label-width="90px" >
  82. <el-select v-model="courseFrom.continuity" placeholder="请选择">
  83. <el-option
  84. v-for="item in continuityOptions"
  85. :key="item.value"
  86. :label="item.label"
  87. :value="item.value">
  88. </el-option>
  89. </el-select>
  90. </el-form-item>
  91. </el-form>
  92. <span slot="footer" class="dialog-footer">
  93. <el-button @click="dialogVisible = false">取 消</el-button>
  94. <el-button type="primary" @click="setTable('channelEdit')">确 定</el-button>
  95. </span>
  96. </el-dialog>
  97. </div>
  98. </template>
  99. <script>
  100. import { mapGetters } from 'vuex';
  101. export default {
  102. data() {
  103. return {
  104. dialogVisible: false,
  105. courseFrom: {
  106. id: '',
  107. title: '',
  108. subTitle: '',
  109. keyWords: '',
  110. template: '',
  111. continuity: '',
  112. status: "NORMAL"
  113. },
  114. templateOptions: [{
  115. value: 'ICON',
  116. label: '课件ICON式'
  117. }, {
  118. value: 'LIST',
  119. label: '课件列表式'
  120. }],
  121. continuityOptions:[{
  122. value: 'CONTINUOUS',
  123. label: '连续播放'
  124. }, {
  125. value: 'REPEAT',
  126. label: '重复播放'
  127. }],
  128. page: 1
  129. }
  130. },
  131. computed: {
  132. ...mapGetters(['courseList'])
  133. },
  134. created () {
  135. this.$store.dispatch('getCourseList', {pageNo: 1, pageSize: 10, key: ''})
  136. },
  137. methods: {
  138. handleEdit (row) {
  139. this.dialogVisible = true;
  140. console.log(row.id);
  141. this.courseFrom = {
  142. id: row.id,
  143. title: row.title,
  144. subTitle: row.subTitle,
  145. keyWords: row.keyWords,
  146. template: row.template,
  147. continuity: row.continuity,
  148. status: "NORMAL"
  149. }
  150. },
  151. // 分页
  152. changePage (e) {
  153. this.page = e;
  154. this.$store.dispatch('getCourseList', {pageNo: e, pageSize: 10, key: ''})
  155. },
  156. // 提交确认
  157. setTable (formName) {
  158. this.$refs[formName].validate((valid) => {
  159. if (valid) {
  160. console.log(this.courseFrom)
  161. this.$store.dispatch('setCourseList', {
  162. data: this.courseFrom,
  163. params: {pageNo: this.page, pageSize: 10}
  164. })
  165. } else {
  166. console.log('error submit!!');
  167. return false;
  168. }
  169. });
  170. this.dialogVisible = false;
  171. }
  172. },
  173. }
  174. </script>
  175. <style lang="less">
  176. .el-pagination {
  177. text-align: center;
  178. margin-top: 20px;
  179. }
  180. .el-form-item__content {
  181. width: 50%;
  182. }
  183. </style>