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

599 lines
11 KiB

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