comment.vue 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. <template>
  2. <div class="app-content">
  3. <div class="order-det">
  4. <div class="order-det-left">
  5. <img src alt="商品图片" mode="center" />
  6. </div>
  7. <div class="order-det-right">
  8. <div class="app-size-28 app-color-2">{{ data.orderSn }}</div>
  9. <div class="app-color-3">{{ data.addTime | formatTime }}</div>
  10. <div class="app-size-28 app-bold">¥{{ data.prePrice }}</div>
  11. </div>
  12. </div>
  13. <!-- separae -->
  14. <div class="separae-wrap">欢迎您对本次服务作出评价</div>
  15. <!-- comment -->
  16. <div class="comment-wrap">
  17. <div class="comment-textarea">
  18. <textarea v-model="form.evaluate" class="textarea-wrap" placeholder-class="textarea-place" name="evaluate" placeholder="您的关注,是我们前进的动力" />
  19. </div>
  20. <div class="comment-star">
  21. <div class="star-list" v-for="(item, index) in rateData" :key="index">
  22. <span class="star-label">{{ item.name }}</span>
  23. <rate-module :current="form[item.key]" @change="changeRateFn($event, item)"></rate-module>
  24. </div>
  25. </div>
  26. </div>
  27. <!-- button -->
  28. <div class="btn-wrap">
  29. <button class="button-com red big" @click="commnetFn">提交</button>
  30. </div>
  31. </div>
  32. </template>
  33. <script>
  34. import RateModule from '@/components/plugin/rate'
  35. // api
  36. import { getDetail, comment } from '@/api/order'
  37. export default {
  38. name: 'order-comment',
  39. components: {
  40. RateModule
  41. },
  42. data() {
  43. return {
  44. data: {},
  45. form: {
  46. grade: 1,
  47. gradeService: 1,
  48. gradeQuality: 1,
  49. gradeSend: 1,
  50. evaluate: ''
  51. },
  52. rateData: [
  53. {
  54. name: '整体评分',
  55. key: 'grade'
  56. },
  57. {
  58. name: '服务态度',
  59. key: 'gradeService'
  60. },
  61. {
  62. name: '鲜花品质',
  63. key: 'gradeQuality'
  64. },
  65. {
  66. name: '配送服务',
  67. key: 'gradeSend'
  68. }
  69. ]
  70. }
  71. },
  72. onLoad() {
  73. // this.init()
  74. },
  75. methods: {
  76. init() {
  77. this.data = uni.getStorageSync('orderDetialComment') || {}
  78. },
  79. commnetFn() {
  80. // this.form = {
  81. // grade: 1,
  82. // gradeService: 1,
  83. // gradeQuality: 1,
  84. // gradeSend: 1,
  85. // evaluate: ''
  86. // }
  87. comment({
  88. id: this.data.id,
  89. ...this.form
  90. }).then(res => {
  91. this.$msg('评价成功!')
  92. setTimeout(() => {
  93. uni.removeStorageSync('orderDetialComment')
  94. this.$util.pageTo({
  95. url: '/pages/callback/index',
  96. query: {
  97. pagestatus: 4,
  98. orderSn: this.data.orderSn
  99. },
  100. type: 2
  101. })
  102. }, 1000)
  103. })
  104. },
  105. // operate
  106. changeRateFn(e, item) {
  107. this.form[item.key] = e.index
  108. }
  109. }
  110. }
  111. </script>
  112. <style lang="scss" scoped>
  113. .order-det {
  114. background-color: #fff;
  115. @include disFlex(center, flex-start);
  116. padding: 30px;
  117. width: calc(100% - 60px);
  118. .order-det-left {
  119. width: 140px;
  120. }
  121. .order-det-right {
  122. width: calc(100% - 160px);
  123. margin-left: 20px;
  124. & > div {
  125. margin-bottom: 12px;
  126. }
  127. .app-bold {
  128. margin-top: 30px;
  129. margin-bottom: 0;
  130. }
  131. }
  132. }
  133. .separae-wrap {
  134. color: $fontColor3;
  135. padding: 30px 30px 20px 30px;
  136. }
  137. .comment-wrap {
  138. padding: 20px 30px;
  139. background-color: #fff;
  140. .comment-textarea {
  141. border-bottom: 1px solid $borderColor;
  142. .textarea-wrap {
  143. width: 100%;
  144. height: 340px;
  145. }
  146. /deep/.textarea-place {
  147. font-size: 28px;
  148. color: #ccc;
  149. }
  150. }
  151. .comment-star {
  152. padding-bottom: 20px;
  153. .star-list {
  154. margin-top: 20px;
  155. @include disFlex(center, flex-start);
  156. .star-label {
  157. font-size: 26px;
  158. margin-right: 108px;
  159. }
  160. }
  161. }
  162. }
  163. // button
  164. .btn-wrap {
  165. width: 90%;
  166. margin: 90px auto 0;
  167. .button-com {
  168. width: 100%;
  169. }
  170. }
  171. </style>