leaveForm.vue 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <template>
  2. <view class="content">
  3. <u-form :model="form" ref="form" label-width="140">
  4. <u-form-item label="请假时间" prop="leaveTime" required>
  5. <u-input v-model="form.leaveTime" placeholder="请选择请假时间" :select-open="leaveTimeShow" type="select" @click="leaveTimeShow = true" />
  6. </u-form-item>
  7. <u-form-item label="请假理由" prop="leaveReason" required>
  8. <u-input v-model="form.leaveReason" placeholder="请输入请假理由" type="textarea" auto-height :height="100" />
  9. </u-form-item>
  10. </u-form>
  11. <u-calendar v-model="leaveTimeShow" mode="date" :active-bg-color="mainColor" btn-type="error" availableText="有课"
  12. :available="availableList" @change="setLeaveTime" max-date="2300-12-31"></u-calendar>
  13. <view class="handle-fix-box">
  14. <u-button type="warning" shape="circle" :ripple="true" :custom-style="customStyle" @click="submitForm()">提交</u-button>
  15. </view>
  16. <u-top-tips ref="uTips"></u-top-tips>
  17. </view>
  18. </template>
  19. <script>
  20. import {
  21. mapGetters
  22. } from 'vuex'
  23. const NET = require('@/utils/request')
  24. const API = require('@/config/api')
  25. export default {
  26. computed: {
  27. ...mapGetters([
  28. 'mainColor',
  29. 'customStyle',
  30. ])
  31. },
  32. data() {
  33. return {
  34. classId: '',
  35. form: {
  36. leaveTime: '',
  37. leaveReason: '',
  38. },
  39. rules: {
  40. leaveTime: [{
  41. required: true,
  42. message: '请选择请假时间',
  43. trigger: 'change'
  44. }],
  45. leaveReason: [{
  46. required: true,
  47. message: '请输入请假理由',
  48. trigger: 'change'
  49. }],
  50. },
  51. leaveTimeShow: false,
  52. availableList: []
  53. }
  54. },
  55. onLoad(options) {
  56. this.classId = options.id
  57. },
  58. onReady() {
  59. this.$refs.form.setRules(this.rules);
  60. },
  61. methods: {
  62. // 设置请假日期
  63. setLeaveTime(object) {
  64. let date = object.year + '-' + object.month + '-' + object.day
  65. if (this.availableList.filter(site => site == date).length) {
  66. this.form.leaveTime = date
  67. } else {
  68. this.form.leaveTime = ''
  69. this.$refs.uTips.show({
  70. title: '请选择可用日期',
  71. type: 'error',
  72. })
  73. }
  74. },
  75. // 提交表单
  76. submitForm() {
  77. this.$refs.form.validate(valid => {
  78. if (valid) {
  79. NET.request(API.submitLevelForm, {
  80. classId: this.classId,
  81. ...this.form
  82. }, 'POST').then(res => {
  83. this.$refs.uTips.show({
  84. title: '请假成功',
  85. type: 'success',
  86. })
  87. setTimeout(() => {
  88. uni.navigateBack()
  89. }, 1000)
  90. }).catch(error => {
  91. this.$refs.uTips.show({
  92. title: '请假失败',
  93. type: 'warning',
  94. })
  95. })
  96. }
  97. });
  98. },
  99. },
  100. }
  101. </script>
  102. <style>
  103. page {
  104. width: 100%;
  105. height: 100%;
  106. position: relative;
  107. }
  108. </style>
  109. <style lang="scss" scoped>
  110. @import "@/static/css/themes.scss";
  111. .content {
  112. width: 100%;
  113. float: left;
  114. padding: 0 15px 60px 15px;
  115. box-sizing: border-box;
  116. }
  117. </style>