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.

240 lines
4.8 KiB

8 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:
  98. linear-gradient(178deg, #4FD3BC, #60C285);;"
  99. type="primary" round block @click="submit">提交</van-button>
  100. </view>
  101. </view>
  102. </template>
  103. <script>
  104. import mNavbar from '@/components/base/m-navbar.vue'
  105. export default {
  106. components : {
  107. mNavbar,
  108. },
  109. data() {
  110. return {
  111. evaluate : {
  112. serviceNum : 5,//服务评价
  113. responseNum : 5,//专业性
  114. attitudeNum : 5,//服务态度
  115. majorNum : 5,//服务响应速度
  116. content : ''
  117. },
  118. text : ['非常差', '很差', '一般', '很好', '非常好'],
  119. tags: ['专业性强', '态度谦和', '手法精湛', '力道恰好', '声音甜美', '耐心十足', '沟通顺畅', '注重细节'],
  120. select : []
  121. }
  122. },
  123. methods: {
  124. leftClick(){
  125. uni.navigateBack(-1)
  126. },
  127. selectTags(item){
  128. let i = this.select.indexOf(item)
  129. if(i == -1){
  130. this.select.push(item)
  131. }else{
  132. this.select.splice(i, 1)
  133. }
  134. },
  135. submit(){
  136. this.$api('evaluateVipOrder', {
  137. ...this.evaluate,
  138. labelText : this.select.join(','),
  139. type : 0,
  140. orderId : this.$route.query.id,
  141. shopId : this.$route.query.projectId
  142. }, res => {
  143. if(res.code == 200){
  144. uni.showToast({
  145. mask: true,
  146. duration: 1000,
  147. title: res.message,
  148. });
  149. setTimeout(() => {
  150. uni.switchTab({
  151. url: '/pages/index/order'
  152. })
  153. }, 500)
  154. }
  155. })
  156. }
  157. }
  158. }
  159. </script>
  160. <style scoped lang="scss">
  161. body{
  162. background-color: #f3f3f3;
  163. font-family: PingFang SC;
  164. }
  165. .box{
  166. padding: 20rpx;
  167. font-size: 28rpx;
  168. .line{
  169. display: flex;
  170. justify-content: space-between;
  171. align-items: center;
  172. background-color: #fff;
  173. padding: 20rpx;
  174. border-radius: 10rpx;
  175. .rate{
  176. font-size: 24rpx;
  177. color: #999;
  178. display: flex;
  179. align-items: center;
  180. .t{
  181. width: 90rpx;
  182. text-align: right;
  183. }
  184. }
  185. }
  186. .box-detail{
  187. margin: 20rpx 0;
  188. border-radius: 10rpx;
  189. background-color: #fff;
  190. .info{
  191. text-align: center;
  192. padding: 40rpx;
  193. color: #999;
  194. font-size: 26rpx;
  195. }
  196. .select{
  197. display: flex;
  198. flex-wrap: wrap;
  199. text-align: center;
  200. .item{
  201. width: calc(25% - 80rpx);
  202. padding: 10rpx 20rpx;
  203. margin: 20rpx;
  204. font-size: 24rpx;
  205. background-color: #f3f3f3;
  206. color: #777;
  207. border-radius: 24rpx;
  208. }
  209. .act{
  210. background-color: var(--van-primary-color);
  211. color: #fff;
  212. }
  213. }
  214. .input{
  215. display: flex;
  216. justify-content: center;
  217. align-items: center;
  218. padding: 20rpx;
  219. textarea{
  220. background-color: #f7f7f7;
  221. width: 100%;
  222. box-sizing: border-box;
  223. padding: 20rpx;
  224. border-radius: 20rpx;
  225. font-size: 26rpx;
  226. }
  227. }
  228. }
  229. }
  230. </style>