reservationPlaceOrder.vue 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584
  1. <!-- 预约下单 -->
  2. <template>
  3. <view class="body" :style="'padding-top:' + bottomHeight">
  4. <view class="bg-box">
  5. <!-- 导航 -->
  6. <view class="ss-flex-2 ss-col-center ss-margin-width2" style="position: relative">
  7. <view class="ss-flex-2 ss-col-center">
  8. <text class="textIcon icon-fanhui icon-navigation" @click="backPage"></text>
  9. <view style="margin-left: 15rpx; color: #fff; font-size: 28rpx">预约下单</view>
  10. </view>
  11. <view class="ss-flex-1"></view>
  12. <text class="textIcon icon-kefu icon-navigation"></text>
  13. <text class="textIcon icon-tongzhiguanli icon-navigation" style="margin-left: 30rpx"></text>
  14. </view>
  15. <!-- 选择地址框 -->
  16. <view class="public-box top-box-info ss-flex-2 ss-col-center" style="padding: 20rpx 10rpx"
  17. @click="jumpNewAddress">
  18. <text class="textIcon icon-ditu" style="font-size: 30rpx; color: #35aec9"></text>
  19. <view class="ss-flex-2" style="flex-wrap: wrap; margin-left: 20rpx">
  20. <view class="add-title">选择您的地址与联系方式</view>
  21. <view class="add-message">技师将到达指定地址服务,清晰地址有助于更快到达</view>
  22. </view>
  23. <view class="ss-flex=1"></view>
  24. <text class="textIcon icon-gengduo" style="font-size: 32rpx; color: #333; font-weight: 750"></text>
  25. </view>
  26. <!-- 安心购 -->
  27. <view class="public-box top-box-info ss-flex-2 ss-col-center">
  28. <text class="textIcon icon-anquan" style="font-size: 28rpx; color: #36afca"></text>
  29. <view style="font-size: 24rpx; color: #4fbad0; margin-left: 5rpx">安心购</view>
  30. <view class="vertical-line"></view>
  31. <view style="font-size: 22rpx; color: #4fbad0; margin-left: 5rpx">
  32. 未服务全额退.爽约包退.不满意重服务.全程保障
  33. </view>
  34. </view>
  35. </view>
  36. <!-- 中部 -->
  37. <view class="list-wrap" style="margin-top: -20rpx">
  38. <scroll-view scroll-y="true" class="list">
  39. <!-- 服务项目信息 -->
  40. <view class="service-box">
  41. <!-- 左右布局 -->
  42. <view class="ss-flex-2" v-for="i in 3" style="margin-bottom: 10rpx">
  43. <view style="width: 180rpx">
  44. <image class="wh" referrerpolicy="no-referrer"
  45. src="/static/lanhu_shouye/pskrims113novhztuh3djro4dewm6siic9cbfccd-f457-4e94-a2a5-bf7808d1dd3f.png" />
  46. </view>
  47. <view class="ss-flex-1" style="margin-left: 10rpx; margin-top: 5rpx">
  48. <!-- 服务大项 -->
  49. <view class="ss-flex-2 ss-col-center">
  50. <view>精油按摩</view>
  51. <view class="ss-flex-2 ss-col-center ss-row-center" style="margin-left: 10rpx">
  52. <text class="textIcon icon-chenghao"
  53. style="font-size: 30rpx; color: #c3c4c4; padding-top: 10rpx"></text>
  54. <view style="font-size: 28rpx; color: #c3c4c4; padding-top: 4rpx">2</view>
  55. </view>
  56. <view class="ss-flex-1"></view>
  57. <view class="ss-flex-2 ss-col-center ss-row-center">
  58. <text class="textIcon icon-fenzhong"
  59. style="font-size: 22rpx; color: #3a4450"></text>
  60. <view
  61. style="font-size: 20rpx; color: #3a4450; margin-left: 10rpx; padding-top: 5rpx">
  62. 80分钟</view>
  63. </view>
  64. </view>
  65. <!-- 服务小项 -->
  66. <view class="ss-flex-2 event-wrap" style="margin-top: 5rpx; flex-wrap: wrap">
  67. <view class="ss-flex-2" v-for="i in 4">
  68. <view class="event-box">舒缓疲劳{{ i }}</view>
  69. <view class="line-box"></view>
  70. </view>
  71. </view>
  72. <!-- 价格以及预约 -->
  73. <view class="ss-flex-2 ss-col-center" style="margin-top: 10rpx">
  74. <view class="ss-flex-2 ss-col-center ss-row-center">
  75. <text class="textIcon icon-renminbi1688 icon-rmb"></text>
  76. <view class="maney-number-box">498.00</view>
  77. </view>
  78. <view class="ss-flex-1"></view>
  79. </view>
  80. </view>
  81. </view>
  82. <view style="width: 100%; height: 20rpx"></view>
  83. <view class="ss-flex-2 ss-col-center">
  84. <view style="font-size: 27rpx; color: #44484b; font-weight: 600">服务时间</view>
  85. <view class="ss-flex-1"></view>
  86. <view style="font-size: 22rpx; color: #5ab8d1">2024-07-02 15:14:41</view>
  87. <text class="textIcon icon-gengduo" @click="jumpServiceTime"
  88. style="font-size: 30rpx; color: #44484b; font-weight: 650; margin-left: 20rpx"></text>
  89. </view>
  90. <!-- <view class="ss-flex-2 ss-col-center" style="margin-top: 20rpx">
  91. <view style="font-size: 27rpx; color: #44484b; font-weight: 600">服务人数</view>
  92. <view class="ss-flex-1"></view>
  93. <view style="width: 100rpx; margin-right: 50rpx">
  94. <uni-data-select
  95. class="wh"
  96. v-model="perpeoNumber"
  97. :localdata="range"
  98. :clear="false"
  99. ></uni-data-select>
  100. </view>
  101. </view> -->
  102. </view>
  103. <!-- 会员卡 -->
  104. <view class="public-box member-box" style="margin-top: 20rpx">
  105. <view class="ss-flex-2">
  106. <view class="ss-flex-2 ss-col-center member-item-box">
  107. <text class="textIcon icon-huiyuan"
  108. style="font-size: 30rpx; color: #ef8338; font-weight: 650"></text>
  109. <view style="color: #ef8338; font-size: 24rpx; font-weight: 650">会员卡套餐</view>
  110. </view>
  111. <view class="ss-flex-1"></view>
  112. <view class="check-info-box">勾选开通</view>
  113. </view>
  114. <view class="ss-flex-2 ss-col-center" style="margin-left: 50rpx">
  115. <text style="font-size: 22rpx; color: #555; font-weight: 650">开通月卡会员本单可立省</text>
  116. <text class="textIcon icon-renminbi1688"
  117. style="font-size: 24rpx; color: #e40214; font-weight: 650"></text>
  118. <text style="font-size: 22rpx; color: #e40214; font-weight: 650">11.95</text>
  119. <view class="ss-flex-1"></view>
  120. <text class="textIcon icon-renminbi1688"
  121. style="font-size: 33rpx; color: #e50315; font-weight: 650"></text>
  122. <text style="font-size: 32rpx; color: #e50315; font-weight: 650">38</text>
  123. <view style="margin-left: 10rpx">
  124. <text class="textIcon icon-renminbi1688" style="
  125. font-size: 24rpx;
  126. color: #919190;
  127. font-weight: 650;
  128. text-decoration: line-through;
  129. "></text>
  130. <text style="
  131. font-size: 22rpx;
  132. color: #919190;
  133. font-weight: 650;
  134. text-decoration: line-through;
  135. ">40</text>
  136. </view>
  137. <uni-data-checkbox style="margin-left: 40rpx" selectedColor="#F4AB78" multiple
  138. v-model="checkbox" :localdata="hobby"></uni-data-checkbox>
  139. </view>
  140. <view style="margin-left: 50rpx" class="ss-flex-2 ss-col-center">
  141. <text style="font-size: 19rpx; color: #f19250">开通嘀咚到位会员卡&nbsp;享受多重会员权益</text>
  142. <text class="textIcon icon-kongxinwenhao"
  143. style="font-size: 22rpx; color: #f19250; font-weight: 650; margin-left: 10rpx"></text>
  144. <view class="ss-flex-1"></view>
  145. </view>
  146. <view class="ss-flex-2 ss-row-center">
  147. <view class="ss-flex-2 ss-col-center more-member-box">
  148. <text style="font-size: 18rpx; color: #f29758">更多会员套餐</text>
  149. <text class="textIcon icon-xiangxiashuangjiantou"
  150. style="font-size: 20rpx; color: #f19250; font-weight: 650; margin-left: 10rpx"></text>
  151. </view>
  152. </view>
  153. </view>
  154. <!-- 价钱明细以及优惠卷 -->
  155. <view class="price-box public-box">
  156. <view style="font-size: 30rpx; color: #414851; font-weight: 550">价格明细</view>
  157. <view class="ss-flex-2 ss-row-center" style="margin-top: 10rpx">
  158. <view style="font-size: 27rpx; color: #555">套餐总价</view>
  159. <view class="ss-flex-1"></view>
  160. <view class="ss-flex-2 ss-row-center" style="margin-right: 50rpx">
  161. <text class="textIcon icon-renminbi1688"
  162. style="font-size: 30rpx; color: #555; font-weight: 650"></text>
  163. <text style="font-size: 28rpx; color: #555">398.00</text>
  164. </view>
  165. </view>
  166. <!-- <view class="ss-flex-2 ss-row-center" style="margin-top: 10rpx;">
  167. <view style="font-size: 27rpx;color: #555;">出行路费</view>
  168. <view class="ss-flex-1"></view>
  169. <view class="ss-flex-2 ss-row-center" style="margin-right: 50rpx;">
  170. <text class="textIcon icon-renminbi1688" style="font-size: 30rpx;color: #555;font-weight: 650;"></text>
  171. <text style="font-size: 28rpx;color: #555;">98.00</text>
  172. </view>
  173. </view> -->
  174. <view class="ss-flex-2 ss-row-center" style="margin-top: 10rpx" @click="jumpPreferential">
  175. <view style="font-size: 27rpx; color: #555">通用优惠卷</view>
  176. <text class="textIcon icon-youhuijuan"
  177. style="font-size: 35rpx; font-weight: 650; color: #ff3938; margin-left: 5rpx"></text>
  178. <view class="ss-flex-1"></view>
  179. <view class="ss-flex-2 ss-row-center">
  180. <text class="textIcon icon-renminbi1688"
  181. style="font-size: 30rpx; color: #e92c3a; font-weight: 650"></text>
  182. <text style="font-size: 28rpx; color: #e92c3a">-10.00</text>
  183. </view>
  184. <text class="textIcon icon-gengduo" style="
  185. font-size: 32rpx;
  186. color: #555;
  187. font-weight: 650;
  188. width: 50rpx;
  189. text-align: right;
  190. margin-top: 3rpx;
  191. "></text>
  192. </view>
  193. <view class="ss-flex-2 ss-row-center ss-row-left" style="margin-top: 30rpx">
  194. <text class="textIcon icon-weibiaoti-" style="font-size: 33rpx; color: #e92c3a"></text>
  195. <text style="font-size: 24rpx; color: #e92c3a">已为您选择最佳优惠</text>
  196. </view>
  197. <view style="width: 100%; height: 2rpx; background-color: #d6d6d9; margin-top: 10rpx"></view>
  198. <view class="ss-flex-2 ss-row-center ss-row-right" style="padding: 10rpx; margin-top: 20rpx">
  199. <view class="ss-flex-2 ss-col-center">
  200. <text style="font-size: 32rpx; color: #333; font-weight: 650">已优惠</text>
  201. <text class="textIcon icon-renminbi1688"
  202. style="font-size: 30rpx; color: #e92c3a; font-weight: 650"></text>
  203. <text style="font-size: 32rpx; color: #e92c3a">10.00</text>
  204. </view>
  205. <view class="ss-flex-2 ss-col-center" style="margin-left: 40rpx">
  206. <text style="font-size: 32rpx; color: #333; font-weight: 650">需支付</text>
  207. <text class="textIcon icon-renminbi1688"
  208. style="font-size: 30rpx; color: #333; font-weight: 650"></text>
  209. <text style="font-size: 32rpx; color: #333">416.00</text>
  210. </view>
  211. </view>
  212. </view>
  213. <!-- 备注 -->
  214. <view class="public-box price-box" style="box-sizing: border-box">
  215. <textarea class="text-area-box-info" maxlength="300" auto-height disabled
  216. placeholder="请提前告知特殊情况(选填)" />
  217. <!-- 自己定的一些常用语 -->
  218. <view class="ss-flex-2 ss-row-center ss-row-left" style="flex-wrap: wrap">
  219. <view class="expressions-box" v-for="i in 7"> 肌肉拉伤233 </view>
  220. </view>
  221. </view>
  222. <!-- 号码保护 -->
  223. <view class="ss-flex-2 ss-row-center ss-col-center public-box price-box" style="margin-top: 20rpx">
  224. <view>
  225. <view class="ss-flex-2 ss-row-center ss-col-center ss-row-left">
  226. <text class="textIcon icon-yuyinyinsixiaohao"
  227. style="font-size: 30rpx; color: #36afca; font-weight: 650"></text>
  228. <text style="font-size: 28rpx; color: #333; font-weight: 650; margin-left: 5rpx">号码保护</text>
  229. </view>
  230. <view style="font-size: 20rpx; color: #a8a8a8; margin-top: 10rpx">
  231. 隐藏手机号,保护隐私,通话录音,保驾护航
  232. </view>
  233. </view>
  234. <view class="ss-flex-1"></view>
  235. <text class="textIcon icon-gengduo" style="font-size: 30rpx; color: #333; font-weight: 650"></text>
  236. </view>
  237. <view style="width: 100%; height: 20rpx"></view>
  238. </scroll-view>
  239. </view>
  240. <!-- 底部结算 -->
  241. <view class="bottom-info-box ss-flex-2 ss-row-center ss-col-center">
  242. <view style="color: #fff; margin-left: 30rpx">
  243. <view class="ss-flex-2 ss-col-center">
  244. <text>合计:</text>
  245. <text class="textIcon icon-renminbi1688"
  246. style="font-size: 34rpx; color: #fff; font-weight: 650"></text>
  247. <text style="color: #fff; font-weight: 650">465.25</text>
  248. </view>
  249. <view class="ss-flex-2 ss-col-center" style="font-size: 24rpx; margin-top: 15rpx">
  250. <text>已优惠:</text>
  251. <text class="textIcon icon-renminbi1688"
  252. style="font-size: 24rpx; color: #fff; font-weight: 650"></text>
  253. <text style="color: #fff">10.00</text>
  254. </view>
  255. </view>
  256. <view class="ss-flex-1"></view>
  257. <view class="settlement-box" @click="jumpGrabOrder">下单等待技师抢单</view>
  258. </view>
  259. </view>
  260. </template>
  261. <script setup>
  262. import {
  263. reactive,
  264. ref
  265. } from 'vue';
  266. import {
  267. computed
  268. } from 'vue';
  269. import {
  270. onLoad,
  271. onPageScroll,
  272. onPullDownRefresh,
  273. onReady,
  274. onReachBottom,
  275. onShow,
  276. } from '@dcloudio/uni-app';
  277. import sheep from '@/sheep';
  278. import $share from '@/sheep/platform/share';
  279. // 隐藏原生tabBar
  280. // uni.hideTabBar();
  281. // 返回上一页
  282. const backPage = async () => {
  283. uni.redirectTo({
  284. url: '/pages/XDHome/technician/itemList/itemList',
  285. });
  286. };
  287. // 跳转到服务时间页面进行选择时间
  288. const jumpServiceTime = async () => {
  289. uni.navigateTo({
  290. url: '/pages/XDHome/technician/serviceTimePage/serviceTimePage?item=',
  291. });
  292. };
  293. // 勾选开通会员
  294. const checkbox = ref([0]);
  295. const hobby = ref([{
  296. text: '',
  297. value: 0,
  298. }, ]);
  299. //跳转到优惠劵
  300. const jumpPreferential = async () => {
  301. uni.navigateTo({
  302. url: '/pages/XDHome/myFeat/discountCoupons/discountCoupons',
  303. });
  304. }
  305. // 跳转到抢单等待
  306. const jumpGrabOrder = async () => {
  307. uni.navigateTo({
  308. url: '/pages/XDHome/technician/grabOrders/grabOrders?item=',
  309. });
  310. };
  311. // 服务人数
  312. const perpeoNumber = ref(0);
  313. const range = ref([{
  314. value: 0,
  315. text: '1'
  316. },
  317. {
  318. value: 1,
  319. text: '2'
  320. },
  321. {
  322. value: 2,
  323. text: '3'
  324. },
  325. {
  326. value: 3,
  327. text: '4'
  328. },
  329. {
  330. value: 4,
  331. text: '5'
  332. },
  333. ]);
  334. // 跳转到新增地址
  335. const jumpNewAddress = async () => {
  336. uni.navigateTo({
  337. url: '/pages/XDHome/technician/newAddress/newAddress',
  338. });
  339. };
  340. //获取顶部安全距离
  341. const app = uni.getSystemInfoSync();
  342. const bottomHeightOne = app.statusBarHeight + 'rpx';
  343. const bottomHeight = ref(bottomHeightOne);
  344. onLoad((option) => {
  345. console.log(option.item, '获取的项目信息数据');
  346. });
  347. </script>
  348. <style scoped>
  349. /deep/ .uni-data-checklist .checklist-group .checklist-box .checkbox__inner {
  350. border-radius: 16rpx !important;
  351. border: 2rpx solid #f49f64 !important;
  352. }
  353. /deep/.uni-select {
  354. height: 40rpx !important;
  355. font-size: 24rpx !important;
  356. }
  357. </style>
  358. <style scoped lang="scss">
  359. .settlement-box {
  360. font-size: 26rpx;
  361. padding: 15rpx;
  362. padding-left: 50rpx;
  363. padding-right: 50rpx;
  364. margin-right: 30rpx;
  365. background-color: #fff;
  366. color: #35aec9;
  367. font-weight: 650;
  368. border-radius: 10rpx;
  369. }
  370. .bottom-info-box {
  371. width: 100%;
  372. height: 120rpx;
  373. background-color: #2eafcf;
  374. }
  375. .expressions-box {
  376. font-size: 22rpx;
  377. color: #8e8e8e;
  378. background-color: #eeeef0;
  379. border-radius: 10rpx;
  380. margin-top: 10rpx;
  381. margin-right: 10rpx;
  382. padding: 5rpx 20rpx;
  383. }
  384. .text-area-box-info {
  385. background-color: #eeeef0;
  386. font-size: 22rpx;
  387. width: 100%;
  388. min-height: 140rpx;
  389. border-radius: 10rpx;
  390. padding: 10rpx;
  391. box-sizing: border-box;
  392. }
  393. .price-box {
  394. background-color: #fff;
  395. border-radius: 20rpx;
  396. box-shadow: 5rpx 5rpx 5rpx rgba(0, 0, 0, 0.2);
  397. margin-top: 20rpx;
  398. box-sizing: border-box;
  399. padding: 15rpx;
  400. }
  401. .check-info-box {
  402. font-size: 20rpx;
  403. color: #f2a066;
  404. border: 2rpx solid #f2a066;
  405. border-radius: 15rpx;
  406. margin-right: 70rpx;
  407. height: 35rpx;
  408. padding: 3rpx;
  409. padding-left: 10rpx;
  410. padding-right: 10rpx;
  411. box-sizing: border-box;
  412. margin-top: 10rpx;
  413. }
  414. .more-member-box {
  415. margin-top: 20rpx;
  416. padding: 5rpx 40rpx;
  417. box-sizing: border-box;
  418. background-color: #fbd9c0;
  419. border-top-right-radius: 30rpx;
  420. border-top-left-radius: 30rpx;
  421. }
  422. .member-item-box {
  423. background-color: #fbd9c0;
  424. padding: 10rpx 30rpx;
  425. box-sizing: border-box;
  426. border-top-left-radius: 20rpx;
  427. border-bottom-right-radius: 40rpx;
  428. }
  429. .member-box {
  430. background-color: #fff8f0;
  431. border-radius: 20rpx;
  432. box-shadow: 5rpx 5rpx 5rpx rgba(0, 0, 0, 0.2);
  433. box-sizing: border-box;
  434. }
  435. .maney-number-box {
  436. font-size: 30rpx;
  437. color: #e60012;
  438. margin-left: 5rpx;
  439. padding-top: 5rpx;
  440. font-weight: 650;
  441. }
  442. .icon-rmb {
  443. font-size: 30rpx;
  444. color: #e60012;
  445. font-weight: 700;
  446. }
  447. .line-box {
  448. width: 2rpx;
  449. height: 30rpx;
  450. background-color: #d2d3d5;
  451. margin-left: 10rpx;
  452. margin-right: 10rpx;
  453. }
  454. .event-box {
  455. font-size: 22rpx;
  456. color: #909295;
  457. height: 30rpx;
  458. line-height: 30rpx;
  459. box-sizing: border-box;
  460. }
  461. .event-wrap {
  462. width: 100%;
  463. max-height: 60rpx;
  464. min-height: 60rpx;
  465. overflow-y: auto;
  466. }
  467. .service-box {
  468. width: 95%;
  469. margin-left: 2.5%;
  470. background-color: #fff;
  471. box-sizing: border-box;
  472. border-radius: 10rpx;
  473. padding: 10rpx;
  474. padding-bottom: 30rpx;
  475. box-shadow: 5rpx 5rpx 5rpx rgba(0, 0, 0, 0.3);
  476. }
  477. .add-message {
  478. font-size: 18rpx;
  479. color: #a2a2a2;
  480. }
  481. .add-title {
  482. font-size: 23rpx;
  483. color: #3e464f;
  484. font-weight: 650;
  485. ‌letter-spacing: 2px;
  486. }
  487. .top-box-info {
  488. margin-top: 30rpx;
  489. padding: 10rpx 20rpx;
  490. background-color: #fff;
  491. border-radius: 10rpx;
  492. }
  493. .icon-navigation {
  494. font-size: 32rpx;
  495. color: #fff;
  496. font-weight: 700;
  497. }
  498. .bg-box {
  499. width: 100%;
  500. height: 300rpx;
  501. background: url('@/static/top-bg.png') no-repeat;
  502. background-size: 100% 100%;
  503. box-sizing: border-box;
  504. }
  505. // 上中下布局样式
  506. .body {
  507. display: flex;
  508. flex-direction: column;
  509. height: 100vh;
  510. // background: linear-gradient(to bottom, #08A3E9, #F8FCFF);
  511. background-color: #efeef1;
  512. }
  513. .head {
  514. text-align: center;
  515. }
  516. // 中部滚动
  517. .list-wrap {
  518. flex-grow: 1;
  519. position: relative;
  520. }
  521. .list {
  522. position: absolute;
  523. top: 0;
  524. left: 0;
  525. right: 0;
  526. bottom: 0;
  527. }
  528. .list-scroll-view {
  529. display: flex;
  530. flex-direction: row;
  531. flex-wrap: wrap;
  532. justify-content: space-between;
  533. margin-left: 2vw;
  534. margin-right: 2vw;
  535. }
  536. .course-card {
  537. width: 47vw;
  538. margin-top: 10px;
  539. margin-bottom: 10px;
  540. }
  541. // 底部
  542. .tools {
  543. display: flex;
  544. flex-direction: row;
  545. justify-content: space-between;
  546. }
  547. .tools-item {
  548. width: 45px;
  549. text-align: center;
  550. font-size: 14px;
  551. padding: 20px;
  552. }
  553. </style>