You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

238 lines
4.7 KiB

10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
  1. <template>
  2. <view class="eval">
  3. <mNavbar title="服务评价"
  4. :leftClick="leftClick"/>
  5. <view class="box">
  6. <view class="line">
  7. <view class="text">
  8. 服务评价
  9. </view>
  10. <view class="rate">
  11. <van-rate
  12. v-model="evaluate.serviceNum"
  13. :size="15"
  14. color="#ffb54c"
  15. void-icon="star"
  16. void-color="#eee"
  17. />
  18. <view class="t">
  19. {{ text[evaluate.serviceNum - 1] }}
  20. </view>
  21. </view>
  22. </view>
  23. <view class="box-detail">
  24. <view class="info">
  25. ~具体说说看~
  26. </view>
  27. <view class="line">
  28. <view class="text">
  29. 专业性
  30. </view>
  31. <view class="rate">
  32. <van-rate
  33. v-model="evaluate.responseNum"
  34. :size="15"
  35. color="#ffb54c"
  36. void-icon="star"
  37. void-color="#eee"
  38. />
  39. <view class="t">
  40. {{ text[evaluate.responseNum - 1] }}
  41. </view>
  42. </view>
  43. </view>
  44. <view class="line">
  45. <view class="text">
  46. 服务态度
  47. </view>
  48. <view class="rate">
  49. <van-rate
  50. v-model="evaluate.attitudeNum"
  51. :size="15"
  52. color="#ffb54c"
  53. void-icon="star"
  54. void-color="#eee"
  55. />
  56. <view class="t">
  57. {{ text[evaluate.attitudeNum - 1] }}
  58. </view>
  59. </view>
  60. </view>
  61. <view class="line">
  62. <view class="text">
  63. 服务响应速度
  64. </view>
  65. <view class="rate">
  66. <van-rate
  67. v-model="evaluate.majorNum"
  68. :size="15"
  69. color="#ffb54c"
  70. void-icon="star"
  71. void-color="#eee"
  72. />
  73. <view class="t">
  74. {{ text[evaluate.majorNum - 1] }}
  75. </view>
  76. </view>
  77. </view>
  78. <view class="info">
  79. ~选择或自定义任意标签~
  80. </view>
  81. <view class="select">
  82. <view class="item"
  83. :key="index"
  84. @click="selectTags(item)"
  85. :class="{item : true, act : select.includes(item)}"
  86. v-for="(item,index) in tags">
  87. {{ item }}
  88. </view>
  89. </view>
  90. <view class="input">
  91. <textarea placeholder="说点什么吧..." cols="30" rows="10" v-model="evaluate.content"></textarea>
  92. </view>
  93. </view>
  94. </view>
  95. <view class="btn">
  96. <van-button
  97. style="width: 80%;margin-left: 10%;background:#EF8C94;color: white;" round block @click="submit">提交</van-button>
  98. </view>
  99. </view>
  100. </template>
  101. <script>
  102. import mNavbar from '@/components/base/m-navbar.vue'
  103. export default {
  104. components : {
  105. mNavbar,
  106. },
  107. data() {
  108. return {
  109. evaluate : {
  110. serviceNum : 5,//服务评价
  111. responseNum : 5,//专业性
  112. attitudeNum : 5,//服务态度
  113. majorNum : 5,//服务响应速度
  114. content : ''
  115. },
  116. text : ['非常差', '很差', '一般', '很好', '非常好'],
  117. tags: ['专业性强', '态度谦和', '手法精湛', '力道恰好', '声音甜美', '耐心十足', '沟通顺畅', '注重细节'],
  118. select : []
  119. }
  120. },
  121. methods: {
  122. leftClick(){
  123. uni.navigateBack(-1)
  124. },
  125. selectTags(item){
  126. let i = this.select.indexOf(item)
  127. if(i == -1){
  128. this.select.push(item)
  129. }else{
  130. this.select.splice(i, 1)
  131. }
  132. },
  133. submit(){
  134. this.$api('evaluateVipOrder', {
  135. ...this.evaluate,
  136. labelText : this.select.join(','),
  137. type : 0,
  138. orderId : this.$route.query.id,
  139. shopId : this.$route.query.projectId
  140. }, res => {
  141. if(res.code == 200){
  142. uni.showToast({
  143. mask: true,
  144. duration: 1000,
  145. title: res.message,
  146. });
  147. setTimeout(() => {
  148. uni.switchTab({
  149. url: '/pages/index/order'
  150. })
  151. }, 500)
  152. }
  153. })
  154. }
  155. }
  156. }
  157. </script>
  158. <style scoped lang="scss">
  159. body{
  160. background-color: #f3f3f3;
  161. font-family: PingFang SC;
  162. }
  163. .box{
  164. padding: 20rpx;
  165. font-size: 28rpx;
  166. .line{
  167. display: flex;
  168. justify-content: space-between;
  169. align-items: center;
  170. background-color: #fff;
  171. padding: 20rpx;
  172. border-radius: 10rpx;
  173. .rate{
  174. font-size: 24rpx;
  175. color: #999;
  176. display: flex;
  177. align-items: center;
  178. .t{
  179. width: 90rpx;
  180. text-align: right;
  181. }
  182. }
  183. }
  184. .box-detail{
  185. margin: 20rpx 0;
  186. border-radius: 10rpx;
  187. background-color: #fff;
  188. .info{
  189. text-align: center;
  190. padding: 40rpx;
  191. color: #999;
  192. font-size: 26rpx;
  193. }
  194. .select{
  195. display: flex;
  196. flex-wrap: wrap;
  197. text-align: center;
  198. .item{
  199. width: calc(25% - 80rpx);
  200. padding: 10rpx 20rpx;
  201. margin: 20rpx;
  202. font-size: 24rpx;
  203. background-color: #f3f3f3;
  204. color: #777;
  205. border-radius: 24rpx;
  206. }
  207. .act{
  208. background-color: #EF8C94;
  209. color: #fff;
  210. }
  211. }
  212. .input{
  213. display: flex;
  214. justify-content: center;
  215. align-items: center;
  216. padding: 20rpx;
  217. textarea{
  218. background-color: #f7f7f7;
  219. width: 100%;
  220. box-sizing: border-box;
  221. padding: 20rpx;
  222. border-radius: 20rpx;
  223. font-size: 26rpx;
  224. }
  225. }
  226. }
  227. }
  228. </style>