classList.vue 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. <template>
  2. <div class="c-container">
  3. <!-- 搜索标题 -->
  4. <!-- <el-form :inline="true"
  5. class="searchForm"
  6. v-model="searchForm">
  7. <el-form-item>
  8. <el-select v-model="searchForm.name"
  9. placeholder="课程类型">
  10. <el-option label="哈哈哈"
  11. value="1"></el-option>
  12. </el-select>
  13. </el-form-item>
  14. </el-form> -->
  15. <!-- 列表 -->
  16. <!-- <div class="newBand"
  17. @click="resetClass">班级调整</div> -->
  18. <div class="newBand"
  19. @click="postpone">课程顺延</div>
  20. <div class="tableWrap">
  21. <el-table :data='tableList'
  22. :header-cell-style="{background:'#EDEEF0',color:'#444'}"
  23. @selection-change="handleSelectionChange">
  24. <el-table-column type="selection"
  25. width="55">
  26. </el-table-column>
  27. <el-table-column align='center'
  28. prop="classGroupName"
  29. label="班级名称">
  30. </el-table-column>
  31. <el-table-column align='center'
  32. label="班级类型">
  33. <template slot-scope="scope">
  34. <div>
  35. {{ scope.row.classGroupType | classType}}
  36. </div>
  37. </template>
  38. </el-table-column>
  39. <el-table-column align='center'
  40. prop="masterTeacher"
  41. label="主教老师">
  42. </el-table-column>
  43. <el-table-column align='center'
  44. prop='subTeacher'
  45. label="助教老师">
  46. </el-table-column>
  47. <el-table-column align='center'
  48. prop="currentClassTimes"
  49. label="当前课次">
  50. <template slot-scope="scope">
  51. <div>
  52. {{ scope.row.currentClassTimes+'/'+scope.row.totalClassTimes}}
  53. </div>
  54. </template>
  55. </el-table-column>
  56. <el-table-column align='center'
  57. prop="studyNum"
  58. label="在读人数">
  59. </el-table-column>
  60. <el-table-column align='center'
  61. label="操作">
  62. <template slot-scope="scope">
  63. <div>
  64. <el-button type='text'
  65. @click="signPostpone(scope.row)">顺延课程</el-button>
  66. </div>
  67. </template>
  68. </el-table-column>
  69. <!-- <el-table-column align='center'
  70. prop="quitNum"
  71. label="退团人数">
  72. </el-table-column> -->
  73. <!-- <el-table-column align='center'
  74. label="新增人数">
  75. </el-table-column> -->
  76. <!-- <el-table-column align='center'
  77. label="退团人数">
  78. <template slot-scope="scope">
  79. <div>
  80. <el-button type='text'>添加学员</el-button>
  81. <el-button type='text'>老师修改</el-button>
  82. </div>
  83. </template>
  84. </el-table-column> -->
  85. </el-table>
  86. <pagination :total="rules.total"
  87. :page.sync="rules.page"
  88. :limit.sync="rules.limit"
  89. :page-sizes="rules.page_size"
  90. @pagination="getList" />
  91. </div>
  92. <el-dialog title="课程顺延"
  93. :visible.sync="postponeVisible"
  94. width="600px"
  95. :before-close="handleClose">
  96. <el-form :model="postponeForm"
  97. ref="postponeForm"
  98. :rules='postponeRules'>
  99. <el-form-item label="顺延起始时间"
  100. prop="stopTime">
  101. <el-date-picker v-model="postponeForm.stopTime"
  102. type="date"
  103. :picker-options="bigin"
  104. value-format="yyyy-MM-dd"
  105. placeholder="选择日期">
  106. </el-date-picker>
  107. </el-form-item>
  108. <el-form-item label="顺延结束时间"
  109. prop="resetTime">
  110. <el-date-picker v-model="postponeForm.resetTime"
  111. type="date"
  112. :picker-options="options"
  113. value-format="yyyy-MM-dd"
  114. placeholder="选择日期">
  115. </el-date-picker>
  116. </el-form-item>
  117. <el-form-item label="跳过节假日">
  118. <el-checkbox v-model="postponeForm.holiday"></el-checkbox>
  119. </el-form-item>
  120. </el-form>
  121. <span style='color:#F56C6C;'>注意:将会把所选班级的课表,「顺延起始时间」之后的全部未开始课程;
  122. 调整到「顺延结束时间」之后重新排课,可以勾选跳过节假日;</span>
  123. <span slot="footer"
  124. class="dialog-footer">
  125. <el-button @click="postponeVisible = false">取 消</el-button>
  126. <el-button type="primary"
  127. @click="submitInfo">确 定</el-button>
  128. </span>
  129. </el-dialog>
  130. </div>
  131. </template>
  132. <script>
  133. import pagination from '@/components/Pagination/index'
  134. import { getClassList, coursePostpone } from '@/api/buildTeam'
  135. export default {
  136. props: {
  137. teamid: {
  138. type: String,
  139. required: true
  140. },
  141. },
  142. data () {
  143. return {
  144. postponeVisible: false,
  145. searchLsit: [],
  146. searchForm: {
  147. name: '',
  148. status: ''
  149. },
  150. tableList: [],
  151. rules: {
  152. // 分页规则
  153. limit: 10, // 限制显示条数
  154. page: 1, // 当前页
  155. total: 0, // 总条数
  156. page_size: [10, 20, 40, 50] // 选择限制显示条数
  157. },
  158. postponeForm: {
  159. stopTime: '',
  160. resetTime: '',
  161. holiday: false
  162. },
  163. postponeRules: {
  164. stopTime: [{ required: true, message: '请选择顺延开始时间', trigger: 'blur' },],
  165. resetTime: [{ required: true, message: '请选择恢复开始时间', trigger: 'blur' },],
  166. },
  167. activeClass: '',
  168. activeList: [],
  169. options: this.processDate(),
  170. bigin: this.beginDate()
  171. }
  172. },
  173. components: {
  174. pagination
  175. },
  176. mounted () {
  177. this.getList();
  178. },
  179. methods: {
  180. getList () {
  181. // search: this.teamid
  182. getClassList({ search: this.teamid, page: this.rules.page, rows: this.rules.limit }).then(res => {
  183. if (res.code == 200) {
  184. this.tableList = res.data.rows;
  185. this.rules.total = res.data.total
  186. }
  187. })
  188. },
  189. resetClass () {
  190. // 跳转到班级详情页
  191. this.$router.push({ path: '/business/resetClass', query: { id: this.teamid } })
  192. },
  193. postpone () {
  194. if (this.activeList.length <= 0) {
  195. this.$message.error('请至少选择一个班级');
  196. return
  197. }
  198. this.postponeVisible = true;
  199. },
  200. signPostpone (row) {
  201. this.activeClass = row.classGroupId;
  202. this.postponeVisible = true;
  203. },
  204. handleClose () {
  205. // 弹窗关闭之前
  206. this.postponeVisible = false;
  207. this.$refs['postponeForm'].resetFields();
  208. },
  209. handleSelectionChange (val) {
  210. this.activeList = val;
  211. let arr = val.map(item => {
  212. return item.classGroupId
  213. })
  214. this.activeClass = arr.join(',')
  215. },
  216. submitInfo () {
  217. this.$refs['postponeForm'].validate(res => {
  218. if (res) {
  219. let classGroupIds = this.activeClass;
  220. let pauseDate = this.postponeForm.stopTime;
  221. let recoveryDate = this.postponeForm.resetTime;
  222. let skipHoliday = this.postponeForm.holiday;
  223. let obj = {
  224. classGroupIds,
  225. pauseDate,
  226. recoveryDate,
  227. skipHoliday
  228. }
  229. coursePostpone(obj).then(res => {
  230. if (res.code == 200) {
  231. this.$message.success('修改成功')
  232. }
  233. })
  234. }
  235. })
  236. },
  237. processDate () {//提出结束时间必须大于提出开始时间
  238. let self = this
  239. return {
  240. disabledDate (time) {
  241. if (self.postponeForm.stopTime) {
  242. return new Date(self.postponeForm.stopTime).getTime() > time.getTime()
  243. } else {
  244. return time.getTime() > Date.now()
  245. //开始时间不选时,结束时间最大值小于等于当天
  246. }
  247. }
  248. }
  249. },
  250. beginDate () {
  251. let self = this
  252. return {
  253. disabledDate (time) {
  254. return time.getTime() + 86400000 <= new Date().getTime()//开始时间不选时,结束时间最大值小于等于当天
  255. }
  256. }
  257. },
  258. }
  259. }
  260. </script>
  261. <style lang="scss" scope>
  262. </style>