铝交易,微信公众号
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.

549 lines
11 KiB

4 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
1 month ago
2 months ago
1 month ago
2 months ago
1 month ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
4 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
1 month ago
2 months ago
2 months ago
2 months ago
4 months ago
2 months ago
2 months ago
1 month ago
2 months ago
1 month ago
2 months ago
1 month ago
2 months ago
4 months ago
  1. <template>
  2. <view class="page">
  3. <navbar :title="$t('pageTitle.orderDetails')" leftClick @leftClick="$utils.navigateBack" />
  4. <view class="info">
  5. <view class="flex">
  6. <!--订单基本信息-->
  7. <view class="server-item">
  8. <view class="img-box">
  9. <img :src="orderInfo.pic" style="width: 100%;height: 100%;" />
  10. </view>
  11. <view class="server-info">
  12. <view class="server-title">
  13. <!-- {{ $t('other.aluminumProducts') }} -->
  14. {{ orderInfo.specsName }}
  15. </view>
  16. <!-- <view class="current-price">
  17. <text class="unit">{{ $t('components.productSpecification') }}</text>
  18. <text class="text"> {{ $t('other.specification') }}</text>
  19. </view> -->
  20. <view class="sales-volume" style="margin-top: 5px;">
  21. <view class="desc">交货时间{{ orderInfo.transactionTime }}</view>
  22. </view>
  23. </view>
  24. </view>
  25. <!-- 商品信息 -->
  26. <view class="line imageAndVideo">
  27. <view class="min_tips"
  28. v-if="orderInfo.picDetail">
  29. <view class="">
  30. 商品图片
  31. </view>
  32. <view class=""
  33. style="width: 690rpx;">
  34. <uv-swiper
  35. :list="orderInfo.picDetail.split(',')"
  36. indicator
  37. :autoplay="false"
  38. @click="index => previewFullImage(index,
  39. orderInfo.picDetail.split(','))"
  40. height="350rpx"></uv-swiper>
  41. <!-- <uv-album
  42. multipleSize="180"
  43. :urls="orderInfo.picDetail.split(',')">
  44. </uv-album> -->
  45. </view>
  46. </view>
  47. <view class="min_tips"
  48. v-if="orderInfo.video">
  49. <view class="">
  50. 商品视频
  51. </view>
  52. <view class="">
  53. <view class="list-video">
  54. <view class="video"
  55. :key="index"
  56. v-for="(item, index) in orderInfo.video.split(',')">
  57. <video :src="item"></video>
  58. </view>
  59. </view>
  60. </view>
  61. </view>
  62. <view class="min_tips"
  63. v-if="orderInfo.report">
  64. <view class="">
  65. 检测报告
  66. </view>
  67. <view class=""
  68. style="width: 690rpx;">
  69. <uv-swiper
  70. :list="orderInfo.report.split(',')"
  71. indicator
  72. :autoplay="false"
  73. @click="index => previewFullImage(index,
  74. orderInfo.report.split(','))"
  75. height="350rpx"></uv-swiper>
  76. <!-- <uv-album
  77. multipleSize="180"
  78. :urls="orderInfo.report.split(',')"></uv-album> -->
  79. </view>
  80. </view>
  81. <view class="min_tips"
  82. v-if="orderInfo.reportVideo">
  83. <view class="">
  84. 检测视频
  85. </view>
  86. <view class="">
  87. <view class="list-video">
  88. <view class="video"
  89. :key="index"
  90. v-for="(item, index) in orderInfo.reportVideo.split(',')">
  91. <video :src="item"></video>
  92. </view>
  93. </view>
  94. </view>
  95. </view>
  96. </view>
  97. <!--收货地址-->
  98. <view class="line address">
  99. <view class="address-top">
  100. <view class="">
  101. <!-- {{ $t('components.shippingAddress') }} -->
  102. 提货地址
  103. </view>
  104. <view class="copy">
  105. <img style="width:40rpx;height:40rpx;"
  106. @click="$utils.copyText(orderInfo.address)"
  107. src="../static/order/copy.png">
  108. </view>
  109. </view>
  110. <view class="addressDetail">
  111. <view class="">
  112. {{ orderInfo.address }}
  113. </view>
  114. </view>
  115. </view>
  116. <!-- 挂单信息 -->
  117. <view class="line">
  118. <view class="t min_tips">
  119. <view class="">
  120. <!-- {{ $t('components.orderInfo') }} -->
  121. 挂单信息
  122. </view>
  123. </view>
  124. <view class="min_tips">
  125. <view class="">
  126. <!-- {{ $t('components.orderNumber') }} -->
  127. 挂单编号
  128. </view>
  129. <view class="">
  130. {{ orderInfo.id }}
  131. </view>
  132. </view>
  133. <view class="min_tips">
  134. <view class="">
  135. <!-- {{ $t('components.orderTime') }} -->
  136. 挂单时间
  137. </view>
  138. <view class="">
  139. {{ orderInfo.createTime }}
  140. </view>
  141. </view>
  142. </view>
  143. <!-- 下单须知 -->
  144. <!-- <view class="line">
  145. <view class="t min_tips">
  146. <view class="">
  147. {{ $t('components.orderNotice') }}
  148. </view>
  149. </view>
  150. <view class="xdxz" style="line-height: 40rpx;">
  151. <uv-parse :content="content"></uv-parse>
  152. <view>1. 请您在收货时间前15分钟内到货否则将视为放弃挂单</view>
  153. <view>2. 请您在收货地址提供的手机号码收到货物</view>
  154. </view>
  155. </view> -->
  156. </view>
  157. <!--我要撤单和联系客服-->
  158. <view class="btns">
  159. <!-- <view @click="backOrder" class="oneBtn"
  160. v-if="orderInfo.showStatus == 0">
  161. {{ $t('other.withdrawOrder') }}
  162. </view> -->
  163. <view @click="$refs.customerServicePopup.open()" class="twoBtn">
  164. {{ $t('components.contactCustomerService') }}
  165. </view>
  166. </view>
  167. </view>
  168. <!-- 联系客服弹框 -->
  169. <customerServicePopup ref="customerServicePopup" />
  170. </view>
  171. </template>
  172. <script>
  173. import customerServicePopup from "@/components/config/customerServicePopup.vue";
  174. export default {
  175. name: "orderDetail2",
  176. components: {
  177. customerServicePopup
  178. },
  179. onLoad(options) {
  180. this.orderInfo = this.$store.state.orderDetail
  181. },
  182. data() {
  183. return {
  184. orderInfo: {},
  185. }
  186. },
  187. methods: {
  188. // 供应商根据挂单id查询挂单详情的接口
  189. queryOrderInfo() {
  190. this.$api('getProductInfo', this.orderId, res => {
  191. console.log(res, "挂单详情信息")
  192. this.orderInfo = res.result
  193. })
  194. },
  195. previewFullImage(index, images){
  196. uni.previewImage({
  197. urls: images,
  198. current: index,
  199. })
  200. },
  201. // 撤单
  202. backOrder() {
  203. let self = this
  204. uni.showModal({
  205. title: self.$t('other.backOrderTitle'),
  206. content: self.$t('other.backOrderTitleConfirm'),
  207. success(e) {
  208. if (e.confirm) {
  209. self.$api('noShow', {
  210. id : self.orderInfo.id
  211. }, res => {
  212. if (res.code == 200) {
  213. uni.showToast({
  214. title: self.$t('other.backOrderSuccess'),
  215. icon: 'none'
  216. })
  217. uni.navigateBack();
  218. }
  219. })
  220. }
  221. }
  222. })
  223. },
  224. },
  225. }
  226. </script>
  227. <style scoped lang="scss">
  228. .page {
  229. .list-video{
  230. display: flex;
  231. flex-wrap: wrap;
  232. video{
  233. width: 690rpx;
  234. height: 390rpx;
  235. }
  236. }
  237. .info {
  238. margin: 10px;
  239. padding: 20rpx;
  240. background-color: #fff;
  241. width: calc(100% - 40px);
  242. border-radius: 10px;
  243. .head-title {
  244. font-family: PingFang SC, PingFang SC-Bold;
  245. color: #2f2e2e;
  246. line-height: 30rpx;
  247. margin-left: 10rpx;
  248. }
  249. .server-item {
  250. display: flex;
  251. flex-wrap: wrap;
  252. align-items: center;
  253. justify-content: space-between;
  254. background: white;
  255. border-radius: 15rpx;
  256. box-sizing: border-box;
  257. margin: 20rpx 0rpx;
  258. width: 100%;
  259. .img-box {
  260. width: 150rpx;
  261. height: 150rpx;
  262. border-radius: 10rpx;
  263. overflow: hidden;
  264. image {
  265. width: 100%;
  266. height: 100%;
  267. }
  268. }
  269. .server-info {
  270. display: flex;
  271. flex-direction: column;
  272. justify-content: space-around;
  273. width: calc(100% - 180rpx);
  274. box-sizing: border-box;
  275. padding: 10rpx 15rpx;
  276. .server-title {
  277. display: flex;
  278. margin-bottom: 10rpx;
  279. }
  280. .coupon {
  281. display: flex;
  282. justify-content: center;
  283. align-items: center;
  284. background: #F29E45;
  285. color: white;
  286. width: 120rpx;
  287. height: 40rpx;
  288. border-radius: 10rpx;
  289. margin-left: 10rpx;
  290. font-size: 22rpx;
  291. }
  292. .time-coupon,
  293. .price {
  294. display: flex;
  295. flex-wrap: wrap;
  296. align-items: center;
  297. }
  298. .time-coupon {
  299. margin: 10rpx 0rpx;
  300. font-size: 26rpx;
  301. justify-content: space-between;
  302. width: 100%;
  303. .flex {
  304. justify-content: center;
  305. align-items: center;
  306. }
  307. image {
  308. width: 25rpx;
  309. height: 25rpx;
  310. }
  311. .time {
  312. color: #B8B8B8;
  313. margin-left: 6rpx;
  314. }
  315. }
  316. .sales-volume {
  317. display: flex;
  318. align-items: center;
  319. color: #B8B8B8;
  320. font-size: 24rpx;
  321. image {
  322. width: 25rpx;
  323. height: 25rpx;
  324. }
  325. }
  326. }
  327. }
  328. .address {
  329. .address-top {
  330. display: flex;
  331. justify-content: space-between;
  332. align-items: center;
  333. image {
  334. width: 30rpx;
  335. height: 30rpx;
  336. }
  337. }
  338. .addressDetail {
  339. color: #777;
  340. font-size: 26rpx;
  341. padding: 5px 0;
  342. }
  343. text {
  344. background-color: #F29E45;
  345. padding: 8rpx 10rpx;
  346. color: #fff;
  347. font-size: 20rpx;
  348. margin-left: 10px;
  349. border-radius: 5px;
  350. }
  351. }
  352. .min_tips {
  353. font-size: 22rpx;
  354. color: #777;
  355. display: flex;
  356. justify-content: space-between;
  357. padding: 5px 0;
  358. align-items: center;
  359. }
  360. .btns {
  361. display: flex;
  362. justify-content: center;
  363. align-items: center;
  364. gap: 40rpx;
  365. .oneBtn {
  366. display: flex;
  367. align-items: center;
  368. justify-content: center;
  369. width: 40%;
  370. height: 70rpx;
  371. padding: 10rpx;
  372. border-radius: 40rpx;
  373. color: white;
  374. font-size: 28rpx;
  375. margin: 20rpx 10rpx 0 0;
  376. background: #293143;
  377. //margin-top: 20rpx;
  378. border-radius: 40rpx;
  379. }
  380. .twoBtn {
  381. display: flex;
  382. align-items: center;
  383. justify-content: center;
  384. width: 40%;
  385. height: 70rpx;
  386. padding: 10rpx;
  387. border-radius: 40rpx;
  388. color: #000000;
  389. font-size: 28rpx;
  390. margin: 20rpx 10rpx 0 0;
  391. background: #f2f2f2;
  392. //margin-top: 20rpx;
  393. border-radius: 40rpx;
  394. }
  395. }
  396. .xdxz {
  397. font-size: 24rpx;
  398. color: #777;
  399. line-height: 30rpx;
  400. }
  401. .current-price {
  402. font-size: 24rpx;
  403. color: #8c8888;
  404. .unit {}
  405. .text {}
  406. }
  407. .line {
  408. border-top: 2px dotted #00000011;
  409. padding: 20rpx 0;
  410. .t {
  411. padding: 5px 0;
  412. color: #000;
  413. font-size: 26rpx;
  414. }
  415. }
  416. .head-div {
  417. .nickname {
  418. font-size: 30rpx;
  419. font-weight: 600;
  420. text-align: left;
  421. line-height: 42rpx;
  422. display: flex;
  423. align-items: center;
  424. .tag {
  425. position: relative;
  426. display: flex;
  427. align-items: center;
  428. image {
  429. height: 45rpx;
  430. width: 90rpx;
  431. vertical-align: middle;
  432. }
  433. .auth {
  434. position: absolute;
  435. white-space: nowrap;
  436. color: $uni-color;
  437. left: 23rpx;
  438. font-size: 17rpx;
  439. }
  440. }
  441. }
  442. .days {
  443. font-size: 20rpx;
  444. font-weight: 400;
  445. text-align: left;
  446. line-height: 56rpx;
  447. display: flex;
  448. align-items: center;
  449. view {
  450. padding-left: 5px;
  451. }
  452. }
  453. }
  454. .btn-x {
  455. color: $uni-color;
  456. border: 1px solid $uni-color;
  457. padding: 10rpx 20rpx;
  458. border-radius: 30rpx;
  459. }
  460. .btns {
  461. display: flex;
  462. justify-content: center;
  463. .btn {
  464. color: $uni-color;
  465. border: 1px solid $uni-color;
  466. padding: 10rpx 20rpx;
  467. border-radius: 30rpx;
  468. }
  469. }
  470. }
  471. .imageAndVideo{
  472. .min_tips{
  473. flex-direction: column;
  474. align-items: flex-start;
  475. font-size: 30rpx;
  476. color: #000;
  477. gap: 20rpx;
  478. }
  479. }
  480. }
  481. </style>