item.vue 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. <template>
  2. <view class="order-item">
  3. <view class="order-status">{{ data.orderStatus === '3' ? '进行中' : '待服务' }}</view>
  4. <view class="order-content">
  5. <image :show-loading="true" :src="data.volunteerPicture" class="item-img"></image>
  6. <view class="order-info">
  7. <view class="order-title">
  8. <view class="order-name">{{ data.name }}</view>
  9. <view class="order-price">¥{{ data.serviceOnePrice }}</view>
  10. </view>
  11. <view class="order-text">服务地址:{{ data.address }}</view>
  12. <view class="order-text">上门时间:{{ data.workDate }} {{ data.workStartTime }}</view>
  13. </view>
  14. </view>
  15. <view class="order-btns">
  16. <view class="order-btn1" @click="onSee">查看</view>
  17. <view class="order-btn2" @click="onTalk">
  18. <view class="message-icon"></view>
  19. 去沟通
  20. </view>
  21. <view class="order-btn2" @click="onHandle" v-if="data.orderStatus === '1'">
  22. <view class="handle-icon"></view>
  23. 去服务
  24. </view>
  25. <view class="order-btn2" @click="onPot" v-if="data.orderStatus === '3'">
  26. <view class="pot-icon"></view>
  27. 去拍照
  28. </view>
  29. </view>
  30. </view>
  31. </template>
  32. <script setup>
  33. import { getVolunteerOrderList } from '@/api/volunteer.js'
  34. import { onMounted, ref } from 'vue';
  35. import NoneView from '@/components/NoneView/index.vue'
  36. import { onShow, onReachBottom, onUnload, onPageScroll } from '@dcloudio/uni-app'
  37. const props = defineProps({
  38. data: {
  39. type: Object,
  40. default: () => { }
  41. },
  42. })
  43. const onSee = () => {
  44. uni.navigateTo({
  45. url: `/pages_classify/pages/details/index?secondOrderId=${props.data.secondOrderId}`,
  46. })
  47. }
  48. const onTalk = () => {
  49. uni.navigateTo({
  50. url: `/pages_orderuser/pages/talk/pages/index/index?orderId=${props.data.mainOrderId}&conversationType=2`
  51. });
  52. }
  53. const onHandle = () => {
  54. uni.navigateTo({
  55. url: `/pages_classify/pages/handle/index?secondOrderId=${props.data.secondOrderId}`,
  56. })
  57. }
  58. const onPot = () => {
  59. uni.navigateTo({
  60. url: `/pages_classify/pages/order/index?secondOrderId=${props.data.secondOrderId}`,
  61. })
  62. }
  63. </script>
  64. <style scoped lang="scss">
  65. .order-item {
  66. border-radius: 16.46rpx;
  67. background: #FFFFFF;
  68. box-shadow: 0rpx 3.66rpx 9.14rpx 6rpx rgba(0, 0, 0, 0.04);
  69. position: relative;
  70. margin-bottom: 20rpx;
  71. padding: 29rpx 32rpx;
  72. .order-status {
  73. position: absolute;
  74. background: linear-gradient(90deg, #FED593 0%, #FDC58C 100%);
  75. height: 47rpx;
  76. position: absolute;
  77. left: 0;
  78. top: 0;
  79. border-top-left-radius: 16rpx;
  80. border-bottom-right-radius: 16rpx;
  81. font-size: 24rpx;
  82. font-weight: 500;
  83. line-height: 44rpx;
  84. letter-spacing: normal;
  85. color: #843816;
  86. padding: 0 21rpx;
  87. }
  88. .order-content {
  89. display: flex;
  90. gap: 25rpx;
  91. .item-img {
  92. width: 106.1rpx;
  93. height: 106.45rpx;
  94. }
  95. .order-info {
  96. flex: 1;
  97. display: flex;
  98. flex-direction: column;
  99. gap: 9rpx;
  100. .order-title {
  101. display: flex;
  102. align-items: flex-start;
  103. width: 100%;
  104. justify-content: space-between;
  105. .order-name {
  106. font-family: PingFang SC;
  107. font-size: 29.26rpx;
  108. font-weight: 600;
  109. line-height: 38.41rpx;
  110. letter-spacing: normal;
  111. color: rgba(0, 0, 0, 0.8);
  112. margin-top: 20rpx;
  113. }
  114. .order-price {
  115. font-family: PingFang SC;
  116. font-size: 29.26rpx;
  117. font-weight: 600;
  118. line-height: 38.41rpx;
  119. letter-spacing: normal;
  120. color: rgba(0, 0, 0, 0.8);
  121. }
  122. }
  123. .order-text {
  124. font-family: PingFang SC;
  125. font-size: 25.6rpx;
  126. font-weight: normal;
  127. line-height: 31.09rpx;
  128. letter-spacing: normal;
  129. color: rgba(0, 0, 0, 0.5);
  130. }
  131. }
  132. }
  133. .order-btns {
  134. display: flex;
  135. align-items: center;
  136. justify-content: flex-end;
  137. gap: 24rpx;
  138. margin-top: 27rpx;
  139. .isbtn {
  140. width: 130rpx;
  141. height: 56rpx;
  142. display: flex;
  143. align-items: center;
  144. justify-content: center;
  145. font-size: 22rpx;
  146. font-weight: 500;
  147. line-height: 28rpx;
  148. letter-spacing: normal;
  149. border-radius: 32.92rpx;
  150. }
  151. .order-btn1 {
  152. @extend .isbtn;
  153. border: 0.91rpx solid #D94342;
  154. color: #D94342;
  155. }
  156. .order-btn2 {
  157. @extend .isbtn;
  158. border: 0.91rpx solid #D94342;
  159. background: #D94342;
  160. color: #FFFFFF;
  161. }
  162. .order-icon {
  163. width: 24rpx;
  164. height: 24rpx;
  165. margin-right: 6rpx;
  166. background-position: center;
  167. background-size: 24rpx auto;
  168. background-repeat: no-repeat;
  169. }
  170. .message-icon {
  171. @extend .order-icon;
  172. background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAGrSURBVEiJ3ZWxalRREIa/I1uk2DJFii0sFCwsttiAD7BFICl8Ay0UfADBgHkDS2uxSJNS2BUfII2gYMCAAQNbRNBiC4uAgQQ+izurZ0/2bm6SbfSHC/eemfn/OefMzIV/HWmeUW0B68B9oAushGkM7AMnRchP4FVKaf9CAbUPvATuBNFH4DDMN+Mp0Qnf1ZTSwbzMn1thpD5Ul2qdp+M66qn6Yp7TVpAP1XYT4iJ+pL6uM/Yjg2Gc/6VRK6C21E/q96tkXieQZ7lGVSmPU0rHVxUocSN7X6eqgJ0F8P5JPBfoAnsLyH5MVdrnBFaAb9ckBzgAlmcJLApTPZML/KDqxOuiE1znBPaAblmi6lP1i9rL1u6qn9VnhW8b6AXXNNSN6OBHZZD6Jhsdo6zTlwvfJ2Fbm6ylzNgCPlBd9u2ymtRbwL34fJ9SOizsbeBrHM9qSuls1i4mo2JwmVERU+BdxPYvct6MbQ6ajIw4wkHEbDbNaDJRj9QHs8a1uhS2o8i8GXlG0I/qUf2l7qrb8ezGmuFTeyxNfpkbVHOqx98OHVP94d4Cw5kX+t/gNz+IaThao3wSAAAAAElFTkSuQmCC);
  173. }
  174. .handle-icon {
  175. @extend .order-icon;
  176. background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAFzSURBVDiN5ZQvTEJRFId/bzJHIBhxe+EFAoFgIBgMbhqYIzhncLNi0sgGkegmjWgwGAm66SbNYDAQDAYCgWCQjWDQjWD4DBy3N7jvIaDJ0+75893fuefuSP/SgFUg9RugFeAQuAQGjOwT2JkHlgMqwINBAB6BGpAH2kDjOz8RA0pK2pJUlFSQFEj6kNSSdCSp5XleP5TvSxpEwQLgGLgDhqaqA9SBTcApBFi33A1X8NyCQwOfAJkIUAYohc41YFItsGzQ6rTpAlngFXgO+drAhSt5CXizhLUYaNqepgOkzeebqIOoojzwZBM/G1fugpq/ZDXRnQIJoAy8Az2gGAe12BVwHwkdSw6AW2uxGQNNmojyj8Chwn3gxVr1HfGCXe78PdPgWQNXHbEG0J0ZGgKc2v8Oxvw9oL4IOGmQm5AvZ8+wPTfYQEUD7dq5YoOL3DezwK9tmClGW665MNTAvqnshtW7zJsDnpe0J6nred7kfvhr+wKviuaczrVBzwAAAABJRU5ErkJggg==);
  177. }
  178. .pot-icon {
  179. @extend .order-icon;
  180. background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAGgSURBVEiJ7ZShTxxhEMV/X4No0g1BnKhAnKioQFzSCiQOc38EdYiebpMaUIhDNLk6DIKkAoG55EgwiCaQtE0FtqKiSeWJo6HJiV8Fc3CFb/eWYplkkt03772Z3Z394CHuE+qcuqWeqSOvYxTYljpX5VFZBHrAOtAHDoHfgT8BngNvgQLo/M/0LXWsbldw3gdnqa5pQ+2qn9UL9Ze6UMFfCM5FaLpqo4y8OEUeqNtqs8ZQzeAOpoZazBH34+O1aj3utW5e7aiFuqQO1Y854kjdKTEp1HfqUeQbtYhaJzarE/c9dZgzUd0oMT+L+kmkgRWR6+p88DdU79JgsikrU9hKYN0M/58Gj3Kv5EasAv2U0vEEiOs+0J4lrtPgMXCewc+jdu8Gp0BbfToB4roNfJolnnVUAGyG2Td1N7C10G7W0F9NNVR7JbVWrOc48qjseKha04P4C4vaU932KMLjIFdcjukGpedJtXkjtGN1eYKnG6Q1YAf4A3wBftT0bwIvudyqVymlvWyDaPIMeA28AG4fWvn4CXwFPqSUvtfUPMRl/AU/GbOVti98AAAAAABJRU5ErkJggg==);
  181. }
  182. }
  183. }
  184. </style>