evaluateForm.vue 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <template>
  2. <view class="content">
  3. <u-form :model="form" ref="form" label-width="140">
  4. <u-form-item label="评价星级" prop="level" required>
  5. <u-rate :count="5" v-model="form.level" :active-color="mainColor"></u-rate>
  6. </u-form-item>
  7. <u-form-item label="评价内容" prop="estimateContent" required>
  8. <u-input v-model="form.estimateContent" placeholder="请输入评价内容" type="textarea" auto-height :height="100" />
  9. </u-form-item>
  10. </u-form>
  11. <view class="handle-fix-box">
  12. <u-button type="warning" shape="circle" :ripple="true" :custom-style="customStyle" @click="submitForm()">提交</u-button>
  13. </view>
  14. <u-top-tips ref="uTips"></u-top-tips>
  15. </view>
  16. </template>
  17. <script>
  18. import {
  19. mapGetters
  20. } from 'vuex'
  21. const NET = require('@/utils/request')
  22. const API = require('@/config/api')
  23. export default {
  24. computed: {
  25. ...mapGetters([
  26. 'mainColor',
  27. 'customStyle',
  28. ])
  29. },
  30. data() {
  31. return {
  32. classId: '',
  33. form: {
  34. level: 0,
  35. estimateContent: '',
  36. },
  37. rules: {
  38. level: [{
  39. required: true,
  40. message: '请选择评价星级',
  41. trigger: 'change'
  42. }],
  43. estimateContent: [{
  44. required: true,
  45. message: '请输入评价内容',
  46. trigger: 'change'
  47. }],
  48. },
  49. }
  50. },
  51. onLoad(options) {
  52. this.classId = options.id
  53. },
  54. onReady() {
  55. this.$refs.form.setRules(this.rules);
  56. },
  57. methods: {
  58. // 提交表单
  59. submitForm() {
  60. this.$refs.form.validate(valid => {
  61. if (valid) {
  62. NET.request(API.submitEvaluateForm, {
  63. classId: this.classId,
  64. ...this.form
  65. }, 'POST').then(res => {
  66. this.$refs.uTips.show({
  67. title: '评价成功',
  68. type: 'success',
  69. })
  70. setTimeout(() => {
  71. uni.navigateBack()
  72. }, 1000)
  73. }).catch(error => {
  74. this.$refs.uTips.show({
  75. title: '评价失败',
  76. type: 'warning',
  77. })
  78. })
  79. }
  80. });
  81. },
  82. },
  83. }
  84. </script>
  85. <style>
  86. page {
  87. width: 100%;
  88. height: 100%;
  89. position: relative;
  90. }
  91. </style>
  92. <style lang="scss" scoped>
  93. @import "@/static/css/themes.scss";
  94. .content {
  95. width: 100%;
  96. float: left;
  97. padding: 0 15px 60px 15px;
  98. box-sizing: border-box;
  99. }
  100. </style>