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 7.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  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">{{state.orderInfo.productName}}</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, getOrderTypeName, getCarTypeName, getOrderStatusName, getOrderTime } from "@/utils/utils";
  50. import { onLoad } from "@dcloudio/uni-app";
  51. import {getCodeName} from "@/datas/queryKey.js";
  52. const state = reactive({
  53. orderInfo: "",
  54. //是否显示更多订单信息
  55. isShow: false,
  56. //显示更多物流信息
  57. popupVisible: false,
  58. //显示部分订单信息
  59. orderShowInfo: [{
  60. label: '新办单号:',
  61. value: ''
  62. },
  63. {
  64. label: '业务类型:',
  65. value: ''
  66. },
  67. {
  68. label: '订单车牌:',
  69. value: ''
  70. },
  71. {
  72. label: '所属类型:',
  73. value: ''
  74. },
  75. {
  76. label: '车辆类型:',
  77. value: ''
  78. },
  79. {
  80. label: '订单状态:',
  81. value: ''
  82. },
  83. {
  84. label: '创建时间:',
  85. value: ''
  86. },
  87. {
  88. label: '物流单号:',
  89. value: ''
  90. },
  91. {
  92. label: '物流公司:',
  93. value: ''
  94. },
  95. ],
  96. //隐藏部分订单信息
  97. orderHideInfo: [{
  98. label: '创建时间:',
  99. value: ''
  100. },
  101. // {
  102. // label: '付款时间:',
  103. // value: ''
  104. // },
  105. // {
  106. // label: '发货时间:',
  107. // value: ''
  108. // },
  109. // {
  110. // label: '业务员:',
  111. // value: '张三'
  112. // },
  113. {
  114. label: '物流单号:',
  115. value: ''
  116. },
  117. {
  118. label: '物流公司:',
  119. value: ''
  120. },
  121. ],
  122. //物流信息
  123. logisticsList: [
  124. { title: '已签收 02-01 10:18:09', desc: '贵州省贵阳市具体地址贵阳市具体地址贵阳市具体贵阳市具体地址 已签收 签收人:【代收点】贵阳市…', right: true },
  125. { title: '送至 俊发城 A 区 5 栋 1021', desc: '李先生 86-178****8911' },
  126. ],
  127. logisticsAllList: [
  128. { title: '已签收 02-01 10:18:09', desc: '贵州省贵阳市具体地址 签收人:高先生' },
  129. { title: '派送中 02-01 09:38', desc: '贵州省贵阳市具体地址贵阳市具体地址贵阳市 派件员:张三 手机号:15620608655' },
  130. { title: '运输中 ', desc: '贵州省贵阳市XXXXXXX 已收入' },
  131. { title: '01-12 16:27 ', desc: '贵州省贵阳市XXXXXXX 已出发' },
  132. { title: '01-12 09:31 ', desc: '贵州省贵阳市XXXXXXX 已打包' },
  133. { title: '01-12 09:12 ', desc: '贵州省贵阳市XXXXXXX 已收入' },
  134. { title: '物流异常提醒 01-11 12:09 ', desc: '目前快递运力正在全力以赴恢复中,您目前快递运力正 在全力以赴恢复中,您目前快递运力正在全力以赴恢复 中您,敬请谅解!' },
  135. { title: '等待揽件 ', desc: '上海市 浦江' },
  136. ],
  137. })
  138. const copyTxt = (value : string) => {
  139. uni.setClipboardData({
  140. data: value,
  141. success: () => {//复制成功的回调函数
  142. msg('复制成功!');
  143. }
  144. });
  145. }
  146. onLoad((options) => {
  147. console.log("state.orderInfo", options)
  148. state.orderInfo = JSON.parse(decodeURIComponent(options.orderInfo));
  149. console.log("state.orderInfo", state.orderInfo)
  150. state.orderShowInfo[0].value = state.orderInfo['orderId']?state.orderInfo['orderId']:state.orderInfo['orderNo']
  151. state.orderShowInfo[1].value = '新办'
  152. state.orderShowInfo[2].value = state.orderInfo['vehiclePlate']
  153. state.orderShowInfo[3].value = state.orderInfo['userType'] === 'UNIT_USER' ? '单位' : '个人'
  154. state.orderShowInfo[4].value = getCarTypeName(state.orderInfo["type"]?state.orderInfo["type"]:state.orderInfo["vanType"])
  155. state.orderShowInfo[5].value = getOrderStatusName(state.orderInfo['orderStep'])
  156. state.orderShowInfo[6].value = getOrderTime(state.orderInfo['insertTime'])
  157. state.orderShowInfo[7].value = state.orderInfo['trackingNumber']
  158. state.orderShowInfo[8].value = getCodeName('快递物流公司',state.orderInfo.courierCompany)
  159. })
  160. </script>
  161. <style>
  162. page {
  163. background-color: #EEF7F7;
  164. padding-bottom: 30rpx;
  165. }
  166. </style>
  167. <style lang="scss" scoped>
  168. .log-popup {
  169. margin: -8rpx 10rpx 0px;
  170. background-color: white;
  171. border-top-left-radius: 40rpx;
  172. border-top-right-radius: 40rpx;
  173. padding: 50rpx 45rpx 30px;
  174. overflow: visible;
  175. }
  176. .main {
  177. margin: 30rpx;
  178. .card-box {
  179. background-color: white;
  180. border-radius: 20rpx;
  181. box-shadow: 0px 0px 6rpx 2rpx rgba(223, 223, 223, 0.3);
  182. margin-bottom: 30rpx;
  183. }
  184. .padding-all {
  185. padding: 30rpx;
  186. }
  187. .padding-top-bottom {
  188. padding: 25rpx 0px 30rpx;
  189. }
  190. .icon {
  191. width: 48rpx;
  192. height: 48rpx;
  193. margin-right: 12rpx;
  194. }
  195. .copy {
  196. &:hover {
  197. color: red;
  198. }
  199. }
  200. .txt-grey {
  201. font-size: 24rpx;
  202. color: #999999;
  203. }
  204. .txt-title {
  205. font-size: 30rpx;
  206. color: #333333;
  207. }
  208. .title {
  209. padding: 0 30rpx 25rpx;
  210. }
  211. .order-line {
  212. padding: 28rpx 30rpx 0;
  213. }
  214. // .order-box {
  215. // height: 380rpx;
  216. // overflow: hidden;
  217. // }
  218. .show {
  219. height: auto;
  220. overflow: visible;
  221. }
  222. .show-or-noshow {
  223. font-size: 26rpx;
  224. color: #999999;
  225. text-align: center;
  226. padding: 28rpx 0 8rpx;
  227. }
  228. .arror {
  229. width: 28rpx;
  230. height: 28rpx;
  231. padding-left: 6rpx;
  232. margin-top: 2rpx;
  233. }
  234. .logistics-layout {
  235. margin-top: 40rpx;
  236. margin-left: 20rpx;
  237. }
  238. }
  239. </style>