course-plan.tsx 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. import { Button, Field, Form, Sticky } from 'vant'
  2. import { defineComponent } from 'vue'
  3. import { basePlan, createState } from './createState'
  4. import styles from './course-plan.module.less'
  5. import ColField from '@/components/col-field'
  6. import ColFieldGroup from '@/components/col-field-group'
  7. export default defineComponent({
  8. name: 'course-plan',
  9. data() {
  10. return {}
  11. },
  12. async mounted() {
  13. let list = createState.live.coursePlanList
  14. let listLength = list.length || 0
  15. console.log(list)
  16. if (createState.live.courseNum > listLength) {
  17. for (let i = 0; i < createState.live.courseNum - listLength; i++) {
  18. await this.addPlan()
  19. }
  20. } else if (createState.live.courseNum < listLength) {
  21. for (let i = 0; i < listLength - createState.live.courseNum; i++) {
  22. await this.delPlan()
  23. }
  24. }
  25. },
  26. methods: {
  27. async addPlan() {
  28. let list = createState.live.coursePlanList || []
  29. list.push({
  30. plan: '',
  31. startTime: '',
  32. endTime: '',
  33. classNum: list.length + 1
  34. })
  35. createState.live.coursePlanList = list
  36. },
  37. async delPlan(index?: number) {
  38. let list = createState.live.coursePlanList || []
  39. list.splice(index || list.length - 1, 1)
  40. createState.live.coursePlanList = list
  41. }
  42. },
  43. render() {
  44. return (
  45. <Form class={styles.coursePlan} onSubmit={() => (createState.active = 3)}>
  46. {/* scrollToError */}
  47. {createState.live.coursePlanList &&
  48. createState.live.coursePlanList.map((item: any) => (
  49. <ColFieldGroup>
  50. <ColField title={`第${item.classNum}课`} required border={false}>
  51. <Field
  52. v-model={item.plan}
  53. name="plan"
  54. placeholder="请输入课程计划"
  55. rows="3"
  56. maxlength={200}
  57. showWordLimit
  58. autosize
  59. rules={[{ required: true, message: '请输入课程计划' }]}
  60. type="textarea"
  61. />
  62. </ColField>
  63. </ColFieldGroup>
  64. ))}
  65. <Sticky offsetBottom={0} position="bottom">
  66. <div class={['btnGroup', 'btnMore']}>
  67. <Button
  68. block
  69. round
  70. type="primary"
  71. plain
  72. onClick={() => {
  73. createState.active = 1
  74. if (!createState.live.courseGroupId){ // 修改时不重置
  75. createState.live.coursePlanList = [{ ...basePlan }]
  76. }
  77. }}
  78. >
  79. 上一步
  80. </Button>
  81. <Button block round type="primary" native-type="submit">
  82. 下一步
  83. </Button>
  84. </div>
  85. </Sticky>
  86. </Form>
  87. )
  88. }
  89. })