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.

order-detail-logistics.vue 5.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. <!-- 订单详情-查看物流 -->
  2. <template>
  3. <view class="main">
  4. <view class="card-box padding-all">
  5. <view class="as-layout-horizontal as-gravity-center-start">
  6. <image :src="`${$imgUrl}order/logistics.png`" class="icon"></image>
  7. <view class="as-layout-horizontal">
  8. <text class="txt-grey" style="flex:1">中国邮政速递 Y1281937337287283</text>
  9. <text class="txt-grey copy" @click="copyTxt('Y1281937337287283')">复制</text>
  10. </view>
  11. </view>
  12. <view class="logistics-layout">
  13. <order-logistics :options="state.logisticsList" @more="state.popupVisible = true"></order-logistics>
  14. </view>
  15. </view>
  16. <view class="card-box padding-top-bottom">
  17. <view class="as-layout-horizontal as-gravity-center-start title">
  18. <image :src="`${$imgUrl}order/icon-star-green.png`" class="icon"></image>
  19. <text class="txt-title">某产品A</text>
  20. </view>
  21. <view style="border-bottom: 1px solid #DCDCDC;" />
  22. <!-- 订单信息 -->
  23. <view class="order-box" :class="{show:state.isShow}">
  24. <view class="order-line" v-for="(item,index) in state.orderShowInfo" :key="index">
  25. <order-info-item :label="item.label" :value="item.value"></order-info-item>
  26. </view>
  27. <view class="order-line" v-for="(item,index) in state.orderHideInfo" :key="index">
  28. <order-info-item :label="item.label" :value="item.value"></order-info-item>
  29. </view>
  30. </view>
  31. <view class="show-or-noshow as-layout-horizontal as-gravity-center" @click = "state.isShow = !state.isShow">
  32. <text>{{state.isShow?"收起部分订单信息":"查看全部订单信息"}}</text>
  33. <image class="arror" :src="`${$imgUrl}common/arror-${state.isShow? 'right' : 'down'}.png`"></image>
  34. </view>
  35. </view>
  36. </view>
  37. <!-- 查看更多物流信息 -->
  38. <popup-bottom ref="popup" v-model:visible="state.popupVisible" title="详细信息" radius="40" maxHeight="75%" >
  39. <view class="log-popup" v-if="state.popupVisible">
  40. <order-logistics :options="state.logisticsAllList" :flag="2"></order-logistics>
  41. </view>
  42. </popup-bottom>
  43. </template>
  44. <script setup lang="ts">
  45. import {reactive} from "vue";
  46. import orderInfoItem from "./components/order-info-item";
  47. import orderLogistics from "./components/order-logistics";
  48. import popupBottom from "./components/popup-bottom.vue";
  49. import { msg } from "@/utils/utils";
  50. const state = reactive({
  51. //是否显示更多订单信息
  52. isShow:false,
  53. //显示更多物流信息
  54. popupVisible:false,
  55. //显示部分订单信息
  56. orderShowInfo: [{
  57. label: '新办单号:',
  58. value: '01872753475754'
  59. },
  60. {
  61. label: '业务类型:',
  62. value: '新办发行'
  63. },
  64. {
  65. label: '订单车牌:',
  66. value: '贵A01234'
  67. },
  68. {
  69. label: '所属类型:',
  70. value: '个人'
  71. },
  72. {
  73. label: '车辆类型:',
  74. value: '客车'
  75. },
  76. {
  77. label: '订单状态:',
  78. value: '已完成'
  79. },
  80. ],
  81. //隐藏部分订单信息
  82. orderHideInfo: [{
  83. label: '创建时间:',
  84. value: '2022-12-25 22:14:44'
  85. },
  86. {
  87. label: '付款时间:',
  88. value: '2022-11-25 22:14:44'
  89. },
  90. {
  91. label: '发货时间:',
  92. value: '2022-06-25 22:14:44'
  93. },
  94. {
  95. label: '业务员:',
  96. value: '张三'
  97. },
  98. {
  99. label: '物流单号:',
  100. value: 'YT56374359468'
  101. },
  102. {
  103. label: '物流公司:',
  104. value: '圆通快递'
  105. },
  106. ],
  107. //物流信息
  108. logisticsList:[
  109. {title:'已签收 02-01 10:18:09',desc:'贵州省贵阳市具体地址贵阳市具体地址贵阳市具体贵阳市具体地址 已签收 签收人:【代收点】贵阳市…',right:true},
  110. {title:'送至 俊发城 A 区 5 栋 1021',desc:'李先生 86-178****8911'},
  111. ],
  112. logisticsAllList:[
  113. {title:'已签收 02-01 10:18:09',desc:'贵州省贵阳市具体地址 签收人:高先生'},
  114. {title:'派送中 02-01 09:38',desc:'贵州省贵阳市具体地址贵阳市具体地址贵阳市 派件员:张三 手机号:15620608655'},
  115. {title:'运输中 ',desc:'贵州省贵阳市XXXXXXX 已收入'},
  116. {title:'01-12 16:27 ',desc:'贵州省贵阳市XXXXXXX 已出发'},
  117. {title:'01-12 09:31 ',desc:'贵州省贵阳市XXXXXXX 已打包'},
  118. {title:'01-12 09:12 ',desc:'贵州省贵阳市XXXXXXX 已收入'},
  119. {title:'物流异常提醒 01-11 12:09 ',desc:'目前快递运力正在全力以赴恢复中,您目前快递运力正 在全力以赴恢复中,您目前快递运力正在全力以赴恢复 中您,敬请谅解!'},
  120. {title:'等待揽件 ',desc:'上海市 浦江'},
  121. ],
  122. })
  123. const copyTxt = (value:string) => {
  124. uni.setClipboardData({
  125. data:value,
  126. success:()=>{//复制成功的回调函数
  127. msg('复制成功!');
  128. }
  129. });
  130. }
  131. </script>
  132. <style>
  133. page {
  134. background-color: #EEF7F7;
  135. padding-bottom:30rpx;
  136. }
  137. </style>
  138. <style lang="scss" scoped>
  139. .log-popup{
  140. margin: -8rpx 10rpx 0px;
  141. background-color: white;
  142. border-top-left-radius: 40rpx;
  143. border-top-right-radius: 40rpx;
  144. padding: 50rpx 45rpx 30px;
  145. overflow: visible;
  146. }
  147. .main {
  148. margin: 30rpx;
  149. .card-box {
  150. background-color: white;
  151. border-radius: 20rpx;
  152. box-shadow: 0px 0px 6rpx 2rpx rgba(223, 223, 223, 0.3);
  153. margin-bottom: 30rpx;
  154. }
  155. .padding-all {
  156. padding: 30rpx;
  157. }
  158. .padding-top-bottom {
  159. padding: 25rpx 0px 30rpx;
  160. }
  161. .icon {
  162. width: 48rpx;
  163. height: 48rpx;
  164. margin-right: 12rpx;
  165. }
  166. .copy {
  167. &:hover {
  168. color: red;
  169. }
  170. }
  171. .txt-grey {
  172. font-size: 24rpx;
  173. color: #999999;
  174. }
  175. .txt-title {
  176. font-size: 30rpx;
  177. color: #333333;
  178. }
  179. .title {
  180. padding: 0 30rpx 25rpx;
  181. }
  182. .order-line {
  183. padding: 28rpx 30rpx 0;
  184. }
  185. .order-box{
  186. height: 380rpx;
  187. overflow: hidden;
  188. }
  189. .show{
  190. height: auto;
  191. overflow: visible;
  192. }
  193. .show-or-noshow{
  194. font-size: 26rpx;
  195. color: #999999;
  196. text-align: center;
  197. padding: 28rpx 0 8rpx;
  198. }
  199. .arror{
  200. width: 28rpx;
  201. height: 28rpx;
  202. padding-left: 6rpx;
  203. margin-top: 2rpx;
  204. }
  205. .logistics-layout{
  206. margin-top: 40rpx;
  207. margin-left: 20rpx;
  208. }
  209. }
  210. </style>