index.vue 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <template>
  2. <van-form
  3. class="fbt-form"
  4. @submit="debounceSubmit">
  5. <van-field
  6. v-model="content"
  7. name="content"
  8. rows="8"
  9. autosize
  10. type="textarea"
  11. placeholder="请输入你宝贵的意见"/>
  12. <van-button
  13. block
  14. type="info"
  15. native-type="submit">提交
  16. </van-button>
  17. </van-form>
  18. </template>
  19. <script>
  20. import { Form, Field, Button, Toast } from 'vant'
  21. import { apiFeedback } from './api/api'
  22. import _ from 'lodash'
  23. export default {
  24. components: {
  25. 'van-form': Form,
  26. 'van-field': Field,
  27. 'van-button': Button
  28. },
  29. data () {
  30. return {
  31. content: ''
  32. }
  33. },
  34. created () {
  35. this.debounceSubmit = _.debounce(this.onSubmit, 1000)
  36. },
  37. methods: {
  38. async onSubmit (values) {
  39. const vm = this
  40. const { content } = values
  41. if (!content.length) {
  42. Toast('反馈内容不能为空')
  43. return
  44. }
  45. try {
  46. const { status, msg } = await apiFeedback(this.content)
  47. if (status) {
  48. Toast({
  49. message: '反馈成功,工作人员将会\n认真查看你的反馈',
  50. onClose () {
  51. vm.$router.replace({ name: 'Mine' })
  52. }
  53. })
  54. } else {
  55. Toast(msg)
  56. }
  57. } catch (e) {}
  58. }
  59. }
  60. }
  61. </script>
  62. <style lang="scss" scoped>
  63. .fbt-form {
  64. display: flex;
  65. min-height: 100vh;
  66. flex-direction: column;
  67. align-items: center;
  68. padding-top: 30px;
  69. background: #f4f5f5;
  70. ::v-deep .van-cell {
  71. width: 346px;
  72. border-radius: 12px;
  73. background: #fefefe;
  74. box-shadow: 2px 2px 6px 5px #f4f5f5;
  75. textarea {
  76. width: 100%;
  77. min-height: 172px;
  78. font-size: 14px;
  79. color: #333;
  80. word-break: break-all;
  81. resize: none;
  82. outline: 0 none;
  83. overflow: hidden;
  84. background: transparent;
  85. -webkit-text-fill-color: #333;
  86. opacity: 1;
  87. &::-webkit-input-placeholder {
  88. color: #999;
  89. -webkit-text-fill-color: #999;
  90. opacity: 1;
  91. }
  92. }
  93. }
  94. ::v-deep .van-button {
  95. width: 346px;
  96. margin-top: 30px;
  97. border: none;
  98. color: #333333;
  99. background: #f8d65a;
  100. .van-button__text {
  101. font-size: 15px;
  102. }
  103. }
  104. }
  105. </style>