subscribeInfo.vue 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. <template>
  2. <view class="content">
  3. <u-form :model="subscribelForm" ref="subscribelForm" label-width="140">
  4. <u-form-item label="学生姓名" prop="studentName" required>
  5. <u-input v-model="subscribelForm.studentName" placeholder="请输入学生姓名" />
  6. </u-form-item>
  7. <!-- <u-form-item label="家长姓名" prop="fatherName" required>
  8. <u-input v-model="subscribelForm.fatherName" placeholder="请输入家长姓名" />
  9. </u-form-item> -->
  10. <u-form-item label="学生性别" prop="sex" required>
  11. <u-input v-model="subscribelForm.sex" placeholder="请选择学生性别" :select-open="sexShow" type="select" @click="sexShow = true" />
  12. </u-form-item>
  13. <u-form-item label="学生年龄" prop="age" required>
  14. <u-input v-model="subscribelForm.age" placeholder="请输入学生年龄" type="number" />
  15. </u-form-item>
  16. <u-form-item label="学生班级" prop="grade" required>
  17. <u-input v-model="subscribelForm.grade" placeholder="请输入学生班级" />
  18. </u-form-item>
  19. <!-- <u-form-item label="学生生日" prop="birthday" required>
  20. <u-input v-model="subscribelForm.birthday" placeholder="请选择学生生日" :select-open="birthdayShow" type="select" @click="birthdayShow = true" />
  21. </u-form-item> -->
  22. <!-- <u-form-item label="手机号码" prop="phone" required>
  23. <u-input v-model="subscribelForm.phone" type="number" placeholder="请输入手机号码" />
  24. </u-form-item> -->
  25. <u-form-item label="体验日期" placeholder="请选择体验日期" prop="experience">
  26. <u-input v-model="subscribelForm.experience" :select-open="experienceShow" type="select" @click="experienceShow = true" />
  27. </u-form-item>
  28. <u-form-item label="上课教练" placeholder="请选择上课教练" prop="coach">
  29. <u-input v-model="subscribelForm.coach" type="select" @click="coachShow = true" />
  30. </u-form-item>
  31. </u-form>
  32. <!-- 性别 -->
  33. <u-action-sheet :list="sexList" v-model="sexShow" @click="setSex"></u-action-sheet>
  34. <!-- 教练 -->
  35. <u-action-sheet :list="coachList" v-model="coachShow" @click="HandleChooseCoachClick"></u-action-sheet>
  36. <!-- 学生生日 -->
  37. <u-picker v-model="birthdayShow" mode="time" :params="params" @confirm="setBirthday"></u-picker>
  38. <!-- 体验日期 -->
  39. <u-calendar v-model="experienceShow" mode="date" :active-bg-color="mainColor" btn-type="error" availableText="有课"
  40. :available="availableList" @change="setExperience" max-date="2300-12-31"></u-calendar>
  41. <view class="handle-fix-box">
  42. <u-button type="warning" shape="circle" :ripple="true" :custom-style="customStyle" @click="submitForm()">保存</u-button>
  43. </view>
  44. <u-top-tips ref="uTips"></u-top-tips>
  45. </view>
  46. </template>
  47. <script>
  48. import {
  49. mapGetters
  50. } from 'vuex'
  51. const NET = require('@/utils/request')
  52. const API = require('@/config/api')
  53. export default {
  54. computed: {
  55. ...mapGetters([
  56. 'mainColor',
  57. 'customStyle',
  58. ])
  59. },
  60. data() {
  61. return {
  62. subscribelForm: {
  63. studentName: '',
  64. sex: '',
  65. age: '',
  66. grade: '',
  67. experience: '',
  68. coachId: '',
  69. coach: ''
  70. },
  71. rules: {
  72. studentName: [{
  73. required: true,
  74. message: '请输入学生姓名',
  75. trigger: 'change'
  76. }],
  77. fatherName: [{
  78. required: true,
  79. message: '请输入家长姓名',
  80. trigger: 'change'
  81. }],
  82. sex: [{
  83. required: true,
  84. message: '请选择学生性别',
  85. trigger: 'change'
  86. }],
  87. age: [{
  88. required: true,
  89. message: '请输入学生年龄',
  90. trigger: 'change'
  91. }],
  92. birthday: [{
  93. required: true,
  94. message: '请选择学生生日',
  95. trigger: 'change'
  96. }],
  97. phone: [{
  98. required: true,
  99. message: '请输入手机号码',
  100. trigger: 'change'
  101. },
  102. {
  103. pattern: /^1[0-9]{10}$/g,
  104. transform(value) {
  105. return String(value);
  106. },
  107. message: '请输入正确格式的手机号码'
  108. },
  109. ],
  110. },
  111. sexShow: false,
  112. sexList: [{
  113. text: '男'
  114. },
  115. {
  116. text: '女'
  117. }
  118. ],
  119. birthdayShow: false,
  120. params: {
  121. year: true,
  122. month: true,
  123. day: true,
  124. hour: false,
  125. minute: false,
  126. second: false
  127. },
  128. experienceShow: false,
  129. availableList: [],
  130. coachShow: false,
  131. coachList: [{
  132. id: 1,
  133. text: '大代礼'
  134. },
  135. {
  136. id: 2,
  137. text: '冀朝明'
  138. }
  139. ],
  140. }
  141. },
  142. onLoad(options) {
  143. // this.subscribelForm.phone = uni.getStorageSync('userData').phone
  144. },
  145. onReady() {
  146. this.$refs.subscribelForm.setRules(this.rules);
  147. },
  148. methods: {
  149. // 设置性别
  150. setSex(index) {
  151. this.subscribelForm.sex = this.sexList[index].text
  152. },
  153. // 设置生日
  154. setBirthday(object) {
  155. this.subscribelForm.birthday = object.year + '-' + object.month + '-' + object.day
  156. },
  157. // 设置体验日期
  158. setExperience(object) {
  159. let date = object.year + '-' + object.month + '-' + object.day
  160. if (this.availableList.filter(site => site == date).length) {
  161. this.subscribelForm.experience = date
  162. } else {
  163. this.subscribelForm.experience = ''
  164. this.$refs.uTips.show({
  165. title: '请选择可用日期',
  166. type: 'error',
  167. })
  168. }
  169. },
  170. // 选择教练
  171. HandleChooseCoachClick(index) {
  172. this.subscribelForm.coachId = this.coachList[index].id
  173. this.subscribelForm.coach = this.coachList[index].text
  174. console.log(this.subscribelForm)
  175. },
  176. // 提交表单
  177. submitForm() {
  178. this.$refs.subscribelForm.validate(valid => {
  179. if (valid) {
  180. NET.request(API.submitStudentForm, this.subscribelForm, 'POST').then(res => {
  181. this.$refs.uTips.show({
  182. title: '新增成功',
  183. type: 'success',
  184. })
  185. setTimeout(() => {
  186. uni.redirectTo({
  187. url: '/pagesMember/subscribelSuccess'
  188. });
  189. }, 1000)
  190. }).catch(error => {
  191. this.$refs.uTips.show({
  192. title: error.message,
  193. type: 'warning',
  194. })
  195. })
  196. }
  197. });
  198. },
  199. },
  200. }
  201. </script>
  202. <style>
  203. page {
  204. width: 100%;
  205. height: 100%;
  206. position: relative;
  207. }
  208. </style>
  209. <style lang="scss" scoped>
  210. @import "@/static/css/themes.scss";
  211. .content {
  212. width: 100%;
  213. float: left;
  214. padding: 0 15px 60px 15px;
  215. box-sizing: border-box;
  216. }
  217. </style>