index.vue 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. <template>
  2. <div class="upload-tab">
  3. <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="100px" class="demo-ruleForm">
  4. <el-form-item label="学龄" prop="code">
  5. <el-select v-model="ruleForm.code" placeholder="请选择活动学龄">
  6. <el-option label="小学一年级" value="PRIMARY_FIRST_GRADE" />
  7. <el-option label="小学二年级" value="PRIMARY_SECOND_GRADE" />
  8. <el-option label="小学三年级" value="PRIMARY_THREE_GRADE" />
  9. <el-option label="小学四年级" value="PRIMARY_SENIOR_GRADE" />
  10. <el-option label="中学英语特殊句式" value="MIDDLE_ENGLISH" />
  11. <el-option label="爱上幼儿园" value="KINDERGARTEN" />
  12. <el-option label="学前领先班" value="PRESCHOOL" />
  13. </el-select>
  14. </el-form-item>
  15. <el-form-item label="标题" prop="title">
  16. <el-input v-model="ruleForm.title" />
  17. </el-form-item>
  18. <el-form-item label="周" prop="weekSeq">
  19. <el-input v-model="ruleForm.weekSeq" />
  20. </el-form-item>
  21. <el-upload
  22. class="image-uploader"
  23. :multiple="false"
  24. :drag="true"
  25. action=""
  26. :limit="1"
  27. :on-exceed="handleExceed"
  28. :http-request="uploadFile"
  29. >
  30. <i class="el-icon-upload" />
  31. <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
  32. </el-upload>
  33. <el-form-item>
  34. <el-button type="primary" @click="submitForm('ruleForm')">立即创建</el-button>
  35. <el-button @click="resetForm('ruleForm')">重置</el-button>
  36. </el-form-item>
  37. </el-form>
  38. </div>
  39. </template>
  40. <script>
  41. import { upLoad } from '@/api/schoolTimetable'
  42. export default {
  43. data() {
  44. return {
  45. ruleForm: {
  46. title: '',
  47. code: '',
  48. weekSeq: '',
  49. file: ''
  50. },
  51. rules: {
  52. title: [
  53. { required: true, message: '请输入标题', trigger: 'blur' }
  54. ],
  55. code: [
  56. { required: true, message: '请选择学龄', trigger: 'change' }
  57. ],
  58. weekSeq: [
  59. { required: true, message: '请输入周', trigger: 'blur' }
  60. ]
  61. }
  62. }
  63. },
  64. methods: {
  65. codeGrade(code) {
  66. console.log(code)
  67. let grade = ''
  68. switch (code) {
  69. case 'PRIMARY_FIRST_GRADE':
  70. grade = '小学一年级'
  71. break
  72. case 'PRIMARY_SECOND_GRADE':
  73. grade = '小学二年级'
  74. break
  75. case 'PRIMARY_THREE_GRADE':
  76. grade = '小学三年级'
  77. break
  78. case 'PRIMARY_SENIOR_GRADE':
  79. grade = '小学四年级'
  80. break
  81. case 'MIDDLE_ENGLISH':
  82. grade = '中学英语特殊句式'
  83. break
  84. case 'KINDERGARTEN':
  85. grade = '爱上幼儿园'
  86. break
  87. case 'PRESCHOOL':
  88. grade = '学前领先班'
  89. break
  90. }
  91. return grade
  92. },
  93. // 上传文件之前的钩子
  94. beforeUpload(file) {
  95. console.log('beforeUpload')
  96. console.log(file.type)
  97. const isText = file.type === 'application/vnd.ms-excel'
  98. const isTextComputer = file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
  99. return (isText | isTextComputer)
  100. },
  101. // 上传文件个数超过定义的数量
  102. handleExceed(files, fileList) {
  103. this.$message.warning(`当前限制选择 1 个文件,请删除后继续上传`)
  104. },
  105. // 上传文件
  106. uploadFile(item) {
  107. console.log('=====', item)
  108. const fileObj = item.file
  109. // FormData 对象
  110. const form = new FormData()
  111. // 文件对象
  112. form.append('file', fileObj)
  113. for (var value of form.values()) {
  114. console.log(value)
  115. this.ruleForm.file = value
  116. }
  117. // form.append('comId', this.comId)
  118. // console.log((JSON.stringify(fileObj))
  119. // console.log(JSON.stringify(form.get('file')))
  120. // this.ruleForm.file = value
  121. },
  122. submitForm(formName) {
  123. this.$refs[formName].validate((valid) => {
  124. if (valid) {
  125. console.log(this.ruleForm)
  126. // alert('submit!')
  127. upLoad(this.ruleForm).then(res => {
  128. console.log(res)
  129. })
  130. } else {
  131. console.log('error submit!!')
  132. return false
  133. }
  134. })
  135. },
  136. resetForm(formName) {
  137. this.$refs[formName].resetFields()
  138. }
  139. }
  140. }
  141. </script>
  142. <style lang="scss" scoped>
  143. .upload-tab {
  144. margin-top: 30px;
  145. }
  146. .el-input {
  147. width: 300px;
  148. }
  149. .el-select>.el-input {
  150. width: 300px;
  151. }
  152. .image-uploader {
  153. margin-left: 30px;
  154. }
  155. </style>