酒店桌布为微信小程序
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.

726 lines
14 KiB

5 months ago
5 months ago
5 months ago
4 months ago
5 months ago
5 months ago
5 months ago
5 months ago
4 months ago
5 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
5 months ago
4 months ago
5 months ago
4 months ago
5 months ago
4 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
4 months ago
5 months ago
5 months ago
4 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
4 months ago
5 months ago
5 months ago
4 months ago
5 months ago
4 months ago
5 months ago
5 months ago
5 months ago
4 months ago
5 months ago
5 months ago
4 months ago
4 months ago
4 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
4 months ago
5 months ago
4 months ago
5 months ago
4 months ago
5 months ago
4 months ago
4 months ago
4 months ago
4 months ago
5 months ago
5 months ago
4 months ago
5 months ago
5 months ago
5 months ago
5 months ago
4 months ago
5 months ago
5 months ago
5 months ago
4 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
4 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
4 months ago
5 months ago
5 months ago
5 months ago
4 months ago
4 months ago
4 months ago
5 months ago
5 months ago
4 months ago
4 months ago
4 months ago
5 months ago
5 months ago
4 months ago
5 months ago
4 months ago
5 months ago
5 months ago
5 months ago
5 months ago
4 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
4 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
4 months ago
5 months ago
5 months ago
4 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
4 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
4 months ago
4 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
4 months ago
5 months ago
4 months ago
5 months ago
4 months ago
5 months ago
5 months ago
  1. <template>
  2. <view>
  3. <navbar title="订单详情" leftClick @leftClick="$utils.navigateBack" />
  4. <!-- 水洗店 -->
  5. <view class="" v-if="userShop">
  6. <view class="controls">
  7. <view class="title">
  8. <image src="../static/order/icon.png" mode=""></image>
  9. {{ order.statusDictText }}
  10. </view>
  11. <!-- <view class="tips">
  12. 待送回
  13. </view> -->
  14. <!-- <orderTypeBtn
  15. :type="order.type"
  16. :status="order.status"
  17. :detail="order"></orderTypeBtn> -->
  18. <view class="btns">
  19. <view
  20. v-if="[4, 18, 19].includes(order.status)"
  21. @click.stop="orderConfirmAccept(order)">
  22. 确认接单
  23. </view>
  24. <!-- 待收货 -->
  25. <template v-if="order.status == 2">
  26. <view @click.stop="confirmReceiveGoods(order)">
  27. 确认收货
  28. </view>
  29. <view @click.stop="" class="b1">
  30. 查看物流
  31. </view>
  32. </template>
  33. <!-- 待检查 -->
  34. <template v-if="order.status == 5">
  35. <view @click.stop="orderConfirmedDamage(order, 1)"
  36. >
  37. 确认下一步
  38. </view>
  39. <view @click.stop="$utils.navigateTo
  40. (`/pages_order/order/damageReport?id=${order.id}`)"
  41. class="btn2"
  42. >
  43. 破损上报
  44. </view>
  45. </template>
  46. <view
  47. v-if="[8, 12].includes(order.status)"
  48. @click.stop="$refs.deliverGoods.open()" class="b2">
  49. 发货填写单号
  50. </view>
  51. <view
  52. v-if="[6].includes(order.status)"
  53. @click.stop="orderFinishedWashing(order)">
  54. 水洗完成
  55. </view>
  56. </view>
  57. </view>
  58. <view class="steps" v-if="steps.length > 0">
  59. <uv-steps activeColor="#FD5100"
  60. :current="stepsCurrent" dot>
  61. <uv-steps-item
  62. :title="item.name"
  63. :key="index"
  64. v-for="(item, index) in steps">
  65. </uv-steps-item>
  66. </uv-steps>
  67. </view>
  68. </view>
  69. <!-- 酒店和水洗店 -->
  70. <view class="info">
  71. <view class="flex" style="display: flex;">
  72. <view style="width: 8rpx;height: 30rpx;
  73. background: #FD5100;border-radius: 6rpx;" />
  74. <view class="head-title">{{ typeText[order.type].name }}</view>
  75. </view>
  76. <view class="flex">
  77. <view class="server-item"
  78. v-for="(p, i) in order.orderDetails"
  79. :key="i">
  80. <view class="img-box">
  81. <image :src="p.pic" mode="aspectFill"></image>
  82. </view>
  83. <view class="server-info">
  84. <view class="server-title">
  85. {{p.goodsName}}
  86. <!-- <view class="coupon">领券立减</view> -->
  87. </view>
  88. <!-- <view class="current-price" v-if="order.orderPay">
  89. <text class="unit"></text>{{order.orderPay}}
  90. </view> -->
  91. <view
  92. class="current-price"
  93. v-if="p.washPay">
  94. 水洗费用{{ p.washPay }}
  95. </view>
  96. <view
  97. class="current-price"
  98. v-if="p.rentPay">
  99. 租赁费用{{ p.rentPay }}
  100. </view>
  101. <view
  102. class="current-price"
  103. v-if="p.deposit">
  104. 押金{{ p.deposit }}
  105. </view>
  106. <view class="sales-volume" style="margin-top: 5px;">
  107. <view class="desc">规格{{p.sku}}</view>
  108. </view>
  109. <view class="sales-volume" style="margin-top: 5px;">
  110. <view class="desc">数量{{p.num}}</view>
  111. </view>
  112. <view class="time-coupon">
  113. <!-- <view class="flex">
  114. <image src="@/static/home/time-icon.png"></image>
  115. <view class="time">{{msgOrder.useTime}}分钟</view>
  116. </view> -->
  117. <!-- <view class="sales-volume">
  118. <image src="@/static/icons/icon1.png"></image>
  119. <view class="desc">已售出{{msgShop.payNum}}+</view>
  120. </view> -->
  121. </view>
  122. </view>
  123. </view>
  124. </view>
  125. <!-- <view class="line min_tips">
  126. <view class="head-div flex">
  127. <view style="width: 118rpx;height: 118rpx;border-radius: 50%;overflow: hidden;">
  128. <image style="width: 118rpx;" :src="msgTechnician.image" mode="widthFix"></image>
  129. </view>
  130. <view style="padding: 10rpx 34rpx;display: flex;flex-direction: column;justify-content: space-around;">
  131. <view class="nickname">
  132. {{msgTechnician.title}}
  133. <view v-if="msgTechnician.isVip" class="tag">
  134. <image src="@/static/order/s.png" mode="aspectFit"></image>
  135. <view class="auth">官方认证</view>
  136. </view>
  137. </view>
  138. <view class="days">
  139. <van-rate v-model="msgTechnician.score" :size="10" readonly color="#ffb54c" void-icon="star"
  140. void-color="#eee" />
  141. <view class="">
  142. 好评{{msgTechnician.pinNum}}
  143. </view>
  144. </view>
  145. </view>
  146. </view>
  147. <view @click="gototechnicianDetail(msgTechnician)" class="btn-x">
  148. 服务技师
  149. </view>
  150. </view> -->
  151. <view class="line address">
  152. <view class="address-top">
  153. <view class="">
  154. 收货地址
  155. </view>
  156. <view class="copy">
  157. <image
  158. @click="$utils.copyText(order.userName + ' ' + order.userPhone + ' ' + order.userAddress)"
  159. src="../static/order/copy.png"></image>
  160. </view>
  161. </view>
  162. <view class="addressDetail">
  163. <view class="">{{order.userName}} {{order.userPhone}}</view>
  164. <view class="">{{order.userAddress}}</view>
  165. </view>
  166. </view>
  167. <view class="line">
  168. <view class="t min_tips" v-if="!userShop && order.originalPrice">
  169. <view class="">
  170. 应付款
  171. </view>
  172. <view class="current-price">
  173. {{ order.originalPrice }}
  174. </view>
  175. </view>
  176. <!-- 水洗店不展示 -->
  177. <view class="t min_tips" v-if="!userShop && order.orderPay">
  178. <view class="">
  179. 实付款
  180. </view>
  181. <view class="current-price">
  182. {{ order.orderPay }}
  183. </view>
  184. </view>
  185. <!-- 水洗店不展示 -->
  186. <view class="min_tips" v-if="!userShop && order.rentPay">
  187. <view class="">
  188. 租赁费用
  189. </view>
  190. <view class="">
  191. {{ order.rentPay }}
  192. </view>
  193. </view>
  194. <view class="min_tips" v-if="order.washPay">
  195. <view class="">
  196. 水洗费用
  197. </view>
  198. <view class="">
  199. {{ order.washPay}}
  200. </view>
  201. </view>
  202. <!-- <view class="min_tips">
  203. <view class="">
  204. 押金
  205. </view>
  206. <view class="">
  207. {{ order.price }}
  208. </view>
  209. </view> -->
  210. <view class="min_tips" v-if="order.discountPrice">
  211. <view class="">
  212. 已优惠
  213. </view>
  214. <view class="">
  215. {{ order.discountPrice}}
  216. </view>
  217. </view>
  218. </view>
  219. <!-- 订单信息 -->
  220. <view class="line">
  221. <view class="t min_tips">
  222. <view class="">
  223. 订单信息
  224. </view>
  225. </view>
  226. <view class="min_tips">
  227. <view class="">
  228. 订单编号
  229. </view>
  230. <view class="">
  231. {{order.id}}
  232. </view>
  233. </view>
  234. <view class="min_tips">
  235. <view class="">
  236. 下单时间
  237. </view>
  238. <view class="">
  239. {{order.createTime}}
  240. </view>
  241. </view>
  242. </view>
  243. <!-- 下单须知 -->
  244. <view class="line">
  245. <view class="t min_tips">
  246. <view class="">
  247. 下单须知
  248. </view>
  249. </view>
  250. <view class="min_tips" style="line-height: 40rpx;">
  251. <!-- {{msgShop.projectExplain}} -->
  252. </view>
  253. <view class="btns">
  254. <view @click="$refs.customerServicePopup.open()" class="btn">
  255. 联系客服
  256. </view>
  257. </view>
  258. </view>
  259. </view>
  260. <deliverGoods
  261. ref="deliverGoods"
  262. :orderId="orderId"
  263. @getData="getData"/>
  264. <!-- 联系客服弹框 -->
  265. <customerServicePopup ref="customerServicePopup" />
  266. </view>
  267. </template>
  268. <script>
  269. import {
  270. mapGetters
  271. } from 'vuex'
  272. import mixinOrder from '@/mixins/order.js'
  273. import customerServicePopup from '@/components/config/customerServicePopup.vue'
  274. import deliverGoods from '@/components/userShop/deliverGoods.vue'
  275. export default {
  276. components: {
  277. customerServicePopup,
  278. deliverGoods,
  279. },
  280. mixins : [mixinOrder],
  281. computed: {
  282. ...mapGetters(['userShop']),
  283. },
  284. data() {
  285. return {
  286. stepsCurrent: 0,
  287. steps: [//水洗店看到的步骤条
  288. // [//租赁订单
  289. // '客户待支付',
  290. // '平台待发货',
  291. // '待收货',//确认收货接口
  292. // '服务完成',
  293. // ],
  294. // [//水洗订单
  295. // '客户待支付',
  296. // '检查破损',//确认破损状态接口
  297. // '开始清洗',//开始清洗接口
  298. // '服务完成',
  299. // ],
  300. // [//换货
  301. // '下单',
  302. // '寄回商品',//快递接口
  303. // '平台待收货',
  304. // '客户待支付',
  305. // '服务完成',
  306. // ],
  307. // [//退货
  308. // '下单',
  309. // '寄回商品',//快递接口
  310. // '平台待收货',
  311. // '服务完成',
  312. // ],
  313. ],
  314. order: {},
  315. orderId: 0,
  316. typeText: [{
  317. name: '租赁押金'
  318. },
  319. {
  320. name: '水洗租赁'
  321. },
  322. {
  323. name: '破损换货'
  324. },
  325. {
  326. name: '退货退款'
  327. }
  328. ],
  329. }
  330. },
  331. onLoad(agrs) {
  332. this.orderId = agrs.id
  333. },
  334. onShow() {
  335. this.getData()
  336. },
  337. onPullDownRefresh() {
  338. this.getData()
  339. },
  340. methods: {
  341. // 查询订单详情
  342. getData() {
  343. this.$api('orderOne', {
  344. id: this.orderId
  345. }, res => {
  346. uni.stopPullDownRefresh()
  347. if (res.code == 200) {
  348. this.order = res.result
  349. res.result.hotelOrderFlows.forEach((n, i) => {
  350. if(this.order.status == n.value){
  351. this.stepsCurrent = i
  352. }
  353. })
  354. this.steps = res.result.hotelOrderFlows
  355. }
  356. })
  357. },
  358. }
  359. }
  360. </script>
  361. <style scoped lang="scss">
  362. .order {
  363. padding-bottom: 10px;
  364. }
  365. .controls {
  366. margin: 20rpx;
  367. background-color: #fff;
  368. height: 400rpx;
  369. display: flex;
  370. flex-direction: column;
  371. width: 710rpx;
  372. border-radius: 20rpx;
  373. justify-content: center;
  374. align-items: center;
  375. .title {
  376. display: flex;
  377. justify-content: center;
  378. align-items: center;
  379. font-size: 40rpx;
  380. image {
  381. width: 100rpx;
  382. height: 100rpx;
  383. margin-right: 20rpx;
  384. }
  385. }
  386. .tips {
  387. font-size: 26rpx;
  388. color: #FD5100;
  389. margin-top: 10rpx;
  390. }
  391. .btns {
  392. margin-top: 50rpx;
  393. display: flex;
  394. view {
  395. margin: 0 20rpx;
  396. display: flex;
  397. justify-content: center;
  398. align-items: center;
  399. color: #fff;
  400. background-color: $uni-color;
  401. padding: 15rpx 40rpx;
  402. border-radius: 40rpx;
  403. }
  404. .btn2 {
  405. background-color: #FFFFFF;
  406. border: 1px solid #A7A7A7;
  407. color: #A7A7A7;
  408. }
  409. }
  410. }
  411. .steps {
  412. margin: 20rpx;
  413. background-color: #fff;
  414. display: flex;
  415. flex-direction: column;
  416. width: 710rpx;
  417. border-radius: 20rpx;
  418. padding: 70rpx 0;
  419. /deep/ .uv-text__value {
  420. font-size: 22rpx !important;
  421. }
  422. }
  423. .box {
  424. padding: 20px;
  425. .btns {
  426. display: flex;
  427. justify-content: center;
  428. align-items: center;
  429. margin-top: 10px;
  430. .btn {
  431. color: #fff;
  432. padding: 10rpx 50rpx;
  433. background-color: #ffb300;
  434. border-radius: 30rpx;
  435. font-size: 25rpx;
  436. margin-right: 10rpx;
  437. }
  438. .btc {
  439. background: #ccc;
  440. }
  441. }
  442. }
  443. .info {
  444. margin: 10px;
  445. padding: 20rpx;
  446. background-color: #fff;
  447. width: calc(100% - 40px);
  448. border-radius: 10px;
  449. .head-title {
  450. font-family: PingFang SC, PingFang SC-Bold;
  451. color: #2f2e2e;
  452. line-height: 30rpx;
  453. margin-left: 10rpx;
  454. }
  455. .server-item {
  456. display: flex;
  457. flex-wrap: wrap;
  458. align-items: center;
  459. justify-content: space-between;
  460. background: white;
  461. border-radius: 15rpx;
  462. box-sizing: border-box;
  463. margin: 20rpx 0rpx;
  464. width: 100%;
  465. .img-box {
  466. width: 180rpx;
  467. height: 180rpx;
  468. border-radius: 10rpx;
  469. overflow: hidden;
  470. image {
  471. width: 100%;
  472. height: 100%;
  473. }
  474. }
  475. .server-info {
  476. display: flex;
  477. flex-direction: column;
  478. justify-content: space-around;
  479. width: calc(100% - 180rpx);
  480. box-sizing: border-box;
  481. padding: 10rpx 15rpx;
  482. .server-title {
  483. display: flex;
  484. margin-bottom: 10rpx;
  485. }
  486. .coupon {
  487. display: flex;
  488. justify-content: center;
  489. align-items: center;
  490. background: #F29E45;
  491. color: white;
  492. width: 120rpx;
  493. height: 40rpx;
  494. border-radius: 10rpx;
  495. margin-left: 10rpx;
  496. font-size: 22rpx;
  497. }
  498. .time-coupon,
  499. .price {
  500. display: flex;
  501. flex-wrap: wrap;
  502. align-items: center;
  503. }
  504. .time-coupon {
  505. margin: 10rpx 0rpx;
  506. font-size: 26rpx;
  507. justify-content: space-between;
  508. width: 100%;
  509. .flex {
  510. justify-content: center;
  511. align-items: center;
  512. }
  513. image {
  514. width: 25rpx;
  515. height: 25rpx;
  516. }
  517. .time {
  518. color: #B8B8B8;
  519. margin-left: 6rpx;
  520. }
  521. }
  522. .sales-volume {
  523. display: flex;
  524. align-items: center;
  525. color: #B8B8B8;
  526. font-size: 24rpx;
  527. image {
  528. width: 25rpx;
  529. height: 25rpx;
  530. }
  531. }
  532. }
  533. }
  534. .address {
  535. .address-top {
  536. display: flex;
  537. justify-content: space-between;
  538. align-items: center;
  539. image {
  540. width: 30rpx;
  541. height: 30rpx;
  542. }
  543. }
  544. .addressDetail {
  545. color: #777;
  546. font-size: 22rpx;
  547. padding: 5px 0;
  548. }
  549. text {
  550. background-color: #F29E45;
  551. padding: 8rpx 10rpx;
  552. color: #fff;
  553. font-size: 20rpx;
  554. margin-left: 10px;
  555. border-radius: 5px;
  556. }
  557. }
  558. .min_tips {
  559. font-size: 22rpx;
  560. color: #777;
  561. display: flex;
  562. justify-content: space-between;
  563. padding: 5px 0;
  564. align-items: center;
  565. }
  566. .current-price {
  567. font-size: 22rpx;
  568. color: $uni-color;
  569. }
  570. .line {
  571. border-top: 2px dotted #00000011;
  572. padding: 20rpx 0;
  573. .t {
  574. padding: 5px 0;
  575. color: #000;
  576. font-size: 26rpx;
  577. }
  578. }
  579. .head-div {
  580. .nickname {
  581. font-size: 30rpx;
  582. font-weight: 600;
  583. text-align: left;
  584. line-height: 42rpx;
  585. display: flex;
  586. align-items: center;
  587. .tag {
  588. position: relative;
  589. display: flex;
  590. align-items: center;
  591. image {
  592. height: 45rpx;
  593. width: 90rpx;
  594. vertical-align: middle;
  595. }
  596. .auth {
  597. position: absolute;
  598. white-space: nowrap;
  599. color: $uni-color;
  600. left: 23rpx;
  601. font-size: 17rpx;
  602. }
  603. }
  604. }
  605. .days {
  606. font-size: 20rpx;
  607. font-weight: 400;
  608. text-align: left;
  609. line-height: 56rpx;
  610. display: flex;
  611. align-items: center;
  612. view {
  613. padding-left: 5px;
  614. }
  615. }
  616. }
  617. .btn-x {
  618. color: $uni-color;
  619. border: 1px solid $uni-color;
  620. padding: 10rpx 20rpx;
  621. border-radius: 30rpx;
  622. }
  623. .btns {
  624. display: flex;
  625. justify-content: center;
  626. .btn {
  627. color: $uni-color;
  628. border: 1px solid $uni-color;
  629. padding: 10rpx 20rpx;
  630. border-radius: 30rpx;
  631. }
  632. }
  633. }
  634. </style>