course-plan.tsx 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import { Button, Field, Form, Sticky } from 'vant'
  2. import { defineComponent } from 'vue'
  3. import { 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. autosize
  58. rules={[{ required: true, message: '请输入课程计划' }]}
  59. type="textarea"
  60. />
  61. </ColField>
  62. </ColFieldGroup>
  63. ))}
  64. <Sticky offsetBottom={0} position="bottom">
  65. <div class={['btnGroup', 'btnMore']}>
  66. <Button
  67. block
  68. round
  69. type="primary"
  70. plain
  71. onClick={() => {
  72. createState.active = 1
  73. }}
  74. >
  75. 上一步
  76. </Button>
  77. <Button block round type="primary" native-type="submit">
  78. 下一步
  79. </Button>
  80. </div>
  81. </Sticky>
  82. </Form>
  83. )
  84. }
  85. })