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.

241 lines
4.8 KiB

8 months ago
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. terId : this.$route.query.terId
  143. }, res => {
  144. if(res.code == 200){
  145. uni.showToast({
  146. mask: true,
  147. duration: 1000,
  148. title: res.message,
  149. });
  150. setTimeout(() => {
  151. uni.switchTab({
  152. url: '/pages/index/order'
  153. })
  154. }, 500)
  155. }
  156. })
  157. }
  158. }
  159. }
  160. </script>
  161. <style scoped lang="scss">
  162. body{
  163. background-color: #f3f3f3;
  164. font-family: PingFang SC;
  165. }
  166. .box{
  167. padding: 20rpx;
  168. font-size: 28rpx;
  169. .line{
  170. display: flex;
  171. justify-content: space-between;
  172. align-items: center;
  173. background-color: #fff;
  174. padding: 20rpx;
  175. border-radius: 10rpx;
  176. .rate{
  177. font-size: 24rpx;
  178. color: #999;
  179. display: flex;
  180. align-items: center;
  181. .t{
  182. width: 90rpx;
  183. text-align: right;
  184. }
  185. }
  186. }
  187. .box-detail{
  188. margin: 20rpx 0;
  189. border-radius: 10rpx;
  190. background-color: #fff;
  191. .info{
  192. text-align: center;
  193. padding: 40rpx;
  194. color: #999;
  195. font-size: 26rpx;
  196. }
  197. .select{
  198. display: flex;
  199. flex-wrap: wrap;
  200. text-align: center;
  201. .item{
  202. width: calc(25% - 80rpx);
  203. padding: 10rpx 20rpx;
  204. margin: 20rpx;
  205. font-size: 24rpx;
  206. background-color: #f3f3f3;
  207. color: #777;
  208. border-radius: 24rpx;
  209. }
  210. .act{
  211. background-color: var(--van-primary-color);
  212. color: #fff;
  213. }
  214. }
  215. .input{
  216. display: flex;
  217. justify-content: center;
  218. align-items: center;
  219. padding: 20rpx;
  220. textarea{
  221. background-color: #f7f7f7;
  222. width: 100%;
  223. box-sizing: border-box;
  224. padding: 20rpx;
  225. border-radius: 20rpx;
  226. font-size: 26rpx;
  227. }
  228. }
  229. }
  230. }
  231. </style>