user.vue 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918
  1. <template>
  2. <view class="container">
  3. <view class="vheigh"></view>
  4. <scroll-view class="content-box" scroll-y="true">
  5. <view class="user-section">
  6. <view class="bg">
  7. <image src="/static/img/user-bg.png" mode=""></image>
  8. </view>
  9. <view class="user-info-box ">
  10. <view class="detail flex">
  11. <view class="portrait-box" @click="navTo('/pages/set/userinfo')">
  12. <image class="portrait" :src="userInfo.avatar || '/static/error/missing-face.png'"></image>
  13. </view>
  14. <view class="info-box" v-if="userInfo.level != 3">
  15. <view class="username">{{ userInfo.nickname || '游客' }}</view>
  16. <!-- <view class="font-size-sm" v-if="userInfo.spread_uid">邀请码:{{ userInfo.spread_uid }}</view> -->
  17. <!-- <view class="user-lv">
  18. <view class="lv-1" v-if="userInfo.level == 1">普通会员</view>
  19. <view class="lv-2" v-if="userInfo.level == 2">
  20. <image src="../../static/img/lv02.png" mode=""></image>
  21. </view>
  22. <view class="lv-3" v-if="userInfo.level == 3">
  23. <image src="../../static/img/lv03.png" mode=""></image>
  24. </view>
  25. <view class="lv-3" v-if="userInfo.level == 4">
  26. <image src="../../static/img/lv04.png" mode=""></image>
  27. </view>
  28. </view> -->
  29. </view>
  30. <view class="info-box" v-else>
  31. <view class="username-t">{{ userInfo.nickname || '游客' }}
  32. <image mode=""></image>
  33. </view>
  34. </view>
  35. </view>
  36. <view class="my-info flex" @click="navTo('/pages/set/userinfo')" v-if="hasLogin">
  37. <image src="../../static/icon/i6.png" mode=""></image>
  38. <view class="title">我的资料</view>
  39. </view>
  40. </view>
  41. </view>
  42. <!-- 订单 -->
  43. <view class="item-box item-box-b">
  44. <view class="box-title flex borde-b">
  45. <view class="title"><text>我的订单</text></view>
  46. <view class="link" @click="navTo('/pages/order/order?state=0')" hover-class="common-hover"><text
  47. class="iconfont iconenter"></text></view>
  48. </view>
  49. <view class="order-section">
  50. <view class="order-item" @click="navTo('/pages/order/order?state=0')" hover-class="common-hover"
  51. :hover-stay-time="50">
  52. <view class=" icon position-relative">
  53. <image class="icon-img" src="/static/user/order1.png" mode="aspectFit"></image>
  54. <view class="corner" v-if="orderInfo.unpaid_count > 0">
  55. <text>{{ orderInfo.unpaid_count }}</text>
  56. </view>
  57. </view>
  58. <text>待付款</text>
  59. </view>
  60. <view class="order-item" @click="navTo('/pages/order/order?state=1')" hover-class="common-hover"
  61. :hover-stay-time="50">
  62. <view class=" icon position-relative">
  63. <image class="icon-img" src="/static/user/order2.png" mode="aspectFit"></image>
  64. <view class="corner" v-if="orderInfo.unshipped_count > 0">
  65. <text>{{ orderInfo.unshipped_count }}</text>
  66. </view>
  67. </view>
  68. <text>待发货</text>
  69. </view>
  70. <view class="order-item" @click="navTo('/pages/order/order?state=2')" hover-class="common-hover"
  71. :hover-stay-time="50">
  72. <view class="icon position-relative">
  73. <image class="icon-img" src="/static/user/order3.png" mode="aspectFit"></image>
  74. <view class="corner" v-if="orderInfo.received_count > 0">
  75. <text>{{ orderInfo.received_count }}</text>
  76. </view>
  77. </view>
  78. <text>待收货</text>
  79. </view>
  80. <view class="order-item" @click="navTo('/pages/order/order?state=4')" hover-class="common-hover"
  81. :hover-stay-time="50">
  82. <view class="icon position-relative">
  83. <image class="icon-img" src="/static/user/order4.png" mode="aspectFit"></image>
  84. </view>
  85. <text>已完成</text>
  86. </view>
  87. </view>
  88. </view>
  89. <view>
  90. <view class="item-box item-box-a">
  91. <view class="order-section">
  92. <view class="order-item" @click="navTo('/pages/money/wallet')" hover-class="common-hover"
  93. :hover-stay-time="50">
  94. <view class="icon icon-b">
  95. <image class="icon-img" src="/static/user/yue.png" mode="aspectFit"></image>
  96. </view>
  97. <text>收益中心</text>
  98. </view>
  99. <view class="order-item" @click="navTo('/pages/user/award')" hover-class="common-hover"
  100. :hover-stay-time="50">
  101. <view class="icon icon-b">
  102. <image class="icon-img" src="/static/user/yongjin.png" mode="aspectFit"></image>
  103. </view>
  104. <text>我的钱包</text>
  105. </view>
  106. <view class="order-item" @click="navTo('/pages/user/shareQrCode')" hover-class="common-hover"
  107. :hover-stay-time="50" >
  108. <view class="icon icon-b">
  109. <image class="icon-img" src="/static/user/yaoqing.png" mode="aspectFit"></image>
  110. </view>
  111. <text>邀请有礼</text>
  112. </view>
  113. <view class="order-item" @click="navTo('/pages/user/team')" hover-class="common-hover"
  114. :hover-stay-time="50">
  115. <view class="icon icon-b">
  116. <image class="icon-img" src="/static/user/tuiguang.png" mode="aspectFit"></image>
  117. </view>
  118. <text>我的推广</text>
  119. </view>
  120. </view>
  121. </view>
  122. <view class="history-section icon">
  123. <uni-list>
  124. <uni-list-item title="我的推广" @click="navTo('/pages/user/team')"
  125. thumb="/static/user/shoucang.png" ></uni-list-item>
  126. <uni-list-item title="收货地址" @click="navTo('/pages/set/address')" thumb="/static/user/dizhi.png">
  127. </uni-list-item>
  128. <uni-list-item title="联系客服" @click="showPopup" thumb="/static/user/kefu.png"></uni-list-item>
  129. </uni-list>
  130. </view>
  131. </view>
  132. </scroll-view>
  133. <uni-popup ref="popup" type="center">
  134. <view class="popup-box">
  135. <view class="img"><image src="../../static/img/img009.png" mode=""></image></view>
  136. <view class="mian">
  137. <view class="delivery">
  138. <view class="title">已经为您定制专属客服</view>
  139. <image src="../../static/img/img010.png" mode=""></image>
  140. </view>
  141. <view class="nocancel">客服微信: {{ text }}</view>
  142. <view class="comfirm-box">
  143. <view class="cancel" @click="cancel">取消</view>
  144. <view class="comfirm" @click="comfirm(text)">复制微信</view>
  145. </view>
  146. </view>
  147. </view>
  148. </uni-popup>
  149. </view>
  150. </template>
  151. <script>
  152. import {
  153. mapState,
  154. mapMutations
  155. } from 'vuex';
  156. import uniList from '@/components/uni-list/uni-list.vue';
  157. import uniListItem from '@/components/uni-list-item/uni-list-item.vue';
  158. import {
  159. orderData,
  160. getUserInfo,
  161. getMyStore
  162. } from '@/api/user.js';
  163. import {
  164. saveUrl,
  165. interceptor
  166. } from '@/utils/loginUtils.js';
  167. import {
  168. logout
  169. } from '@/api/set.js';
  170. // import uniCopy from '@/js_sdk/xb-copy/uni-copy.js';
  171. let startY = 0,
  172. moveY = 0,
  173. pageAtTop = true;
  174. export default {
  175. components: {
  176. uniList,
  177. uniListItem
  178. },
  179. data() {
  180. return {
  181. coverTransform: 'translateY(0px)',
  182. coverTransition: '0s',
  183. moving: false,
  184. userDowm: 0, //卡片升级专属高度
  185. userMaxDowm: 0, //卡片最高高度
  186. text: 'Zjxwcm',
  187. };
  188. },
  189. onShow() {
  190. // 判断是否已经登录
  191. if (this.hasLogin) {
  192. this.loadBaseData();
  193. this.getMyStore();
  194. }
  195. },
  196. onReady() {
  197. // 初始化获取页面宽度
  198. uni.createSelectorQuery()
  199. .select('.container')
  200. .fields({
  201. size: true
  202. },
  203. data => {
  204. // 计算最多下拉的高度
  205. this.userDowm = Math.floor((data.width / 750) * 185);
  206. // 计算最大触发修改高度事件
  207. this.userMaxDowm = Math.floor((data.width / 750) * 250);
  208. }
  209. )
  210. .exec();
  211. },
  212. // #ifndef MP
  213. // onNavigationBarButtonTap(e) {
  214. // const index = e.index;
  215. // if (index === 0) {
  216. // this.navTo('/pages/set/set');
  217. // } else if (index === 1) {
  218. // // #ifdef APP-PLUS
  219. // const pages = getCurrentPages();
  220. // const page = pages[pages.length - 1];
  221. // const currentWebview = page.$getAppWebview();
  222. // currentWebview.hideTitleNViewButtonRedDot({
  223. // index
  224. // });
  225. // // #endif
  226. // uni.navigateTo({
  227. // url: '/pages/user/notice'
  228. // });
  229. // }
  230. // },
  231. // #endif
  232. computed: {
  233. ...mapState('user', ['userInfo', 'orderInfo', 'hasLogin'])
  234. },
  235. methods: {
  236. ...mapMutations('user', ['setUserInfo', 'logout']),
  237. uniCopy(content) {
  238. /**
  239. * 小程序端 和 app端的复制逻辑
  240. */
  241. //#ifndef H5
  242. uni.setClipboardData({
  243. data: content,
  244. success: function() {
  245. console.log('success');
  246. return true;
  247. }
  248. });
  249. //#endif
  250. /**
  251. * H5端的复制逻辑
  252. */
  253. // #ifdef H5
  254. if (!document.queryCommandSupported('copy')) {
  255. //为了兼容有些浏览器 queryCommandSupported 的判断
  256. // 不支持
  257. return false;
  258. }
  259. let textarea = document.createElement('textarea');
  260. textarea.value = content;
  261. textarea.readOnly = 'readOnly';
  262. document.body.appendChild(textarea);
  263. textarea.select(); // 选择对象
  264. textarea.setSelectionRange(0, content.length); //核心
  265. let result = document.execCommand('copy'); // 执行浏览器复制命令
  266. textarea.remove();
  267. return result;
  268. // #endif
  269. },
  270. showPopup() {
  271. this.$refs.popup.open();
  272. },
  273. cancel() {
  274. this.$refs.popup.close();
  275. },
  276. comfirm(text) {
  277. console.log(text);
  278. const result = this.uniCopy(text);
  279. if (result === false) {
  280. uni.showToast({
  281. title: '不支持'
  282. });
  283. } else {
  284. uni.showToast({
  285. title: '复制成功',
  286. icon: 'none'
  287. });
  288. }
  289. this.$refs.popup.close();
  290. },
  291. ...mapMutations('user', ['setUserInfo', 'setOrderInfo']),
  292. // 加载初始数据
  293. loadBaseData() {
  294. getUserInfo({})
  295. .then(({
  296. data
  297. }) => {
  298. console.log(data, 'userInfo+++++++++++++++++++')
  299. this.setUserInfo(data);
  300. // 获取用户数据完毕后在获取订单数据防止多次跳转到登录页
  301. orderData({})
  302. .then(({
  303. data
  304. }) => {
  305. this.setOrderInfo(data);
  306. })
  307. .catch(e => {
  308. this.setOrderInfo({
  309. complete_count: 0, //完成
  310. received_count: 0, //待收货
  311. unshipped_count: 0, //待发货
  312. order_count: 0, //订单总数
  313. unpaid_count: 0 //待付款
  314. });
  315. });
  316. })
  317. .catch(e => {
  318. console.log(e);
  319. });
  320. },
  321. /**
  322. * 统一跳转接口,拦截未登录路由
  323. * navigator标签现在默认没有转场动画,所以用view
  324. */
  325. navTo(url) {
  326. // if (!this.hasLogin) {
  327. // // 保存地址
  328. // saveUrl();
  329. // // 登录拦截
  330. // interceptor();
  331. // } else {
  332. uni.navigateTo({
  333. url
  334. });
  335. // }
  336. },
  337. /**
  338. * 会员卡下拉和回弹
  339. * 1.关闭bounce避免ios端下拉冲突
  340. * 2.由于touchmove事件的缺陷(以前做小程序就遇到,比如20跳到40,h5反而好很多),下拉的时候会有掉帧的感觉
  341. * transition设置0.1秒延迟,让css来过渡这段空窗期
  342. * 3.回弹效果可修改曲线值来调整效果,推荐一个好用的bezier生成工具 http://cubic-bezier.com/
  343. */
  344. coverTouchstart(e) {
  345. // console.log(e);
  346. if (pageAtTop === false) {
  347. return;
  348. }
  349. this.coverTransition = 'transform .1s linear';
  350. startY = e.touches[0].clientY;
  351. },
  352. coverTouchmove(e) {
  353. // console.log(e);
  354. moveY = e.touches[0].clientY;
  355. let moveDistance = moveY - startY;
  356. let maxDowm = this.userMaxDowm;
  357. let Dowm = this.userDowm;
  358. if (moveDistance < 0) {
  359. this.moving = false;
  360. return;
  361. }
  362. this.moving = true;
  363. if (moveDistance >= Dowm && moveDistance < maxDowm) {
  364. moveDistance = Dowm;
  365. }
  366. if (moveDistance > 0 && moveDistance <= Dowm) {
  367. this.coverTransform = `translateY(${moveDistance}px)`;
  368. }
  369. },
  370. coverTouchend() {
  371. if (this.moving === false) {
  372. return;
  373. }
  374. this.moving = false;
  375. this.coverTransition = 'transform 0.3s cubic-bezier(.21,1.93,.53,.64)';
  376. this.coverTransform = 'translateY(0px)';
  377. },
  378. getMyStore() {
  379. getMyStore().then(res => {
  380. console.log('getMyStore', res);
  381. });
  382. },
  383. outlogin() {
  384. let obj = this;
  385. uni.showModal({
  386. content: '确定要退出登录么',
  387. success: e => {
  388. if (e.confirm) {
  389. logout({}).then(e => {
  390. obj.logout();
  391. uni.navigateTo({
  392. url: '/pages/public/login'
  393. })
  394. })
  395. .catch(e => {
  396. console.log(e);
  397. });
  398. }
  399. }
  400. });
  401. }
  402. }
  403. };
  404. </script>
  405. <style lang="scss">
  406. page {
  407. height: 100%;
  408. background-color: $page-color-base;
  409. }
  410. %flex-center {
  411. display: flex;
  412. flex-direction: column;
  413. justify-content: center;
  414. align-items: center;
  415. }
  416. %section {
  417. display: flex;
  418. justify-content: space-around;
  419. align-content: center;
  420. background: #fff;
  421. border-radius: 10rpx;
  422. }
  423. .container {
  424. height: 100%;
  425. background-color: #fff;
  426. }
  427. .content-box {
  428. height: 100%;
  429. }
  430. .vheigh {
  431. height: var(--status-bar-height);
  432. background-color: $base-color;
  433. }
  434. .user-section {
  435. height: 420rpx;
  436. padding: 50rpx 0rpx 0 30rpx;
  437. position: relative;
  438. .bg {
  439. position: absolute;
  440. left: 0;
  441. top: 0;
  442. width: 100%;
  443. height: 100%;
  444. background: linear-gradient(180deg, #08C4E6, #50EAD2);
  445. // z-index: 1;
  446. // background-color: $base-color;
  447. image {
  448. width: 100%;
  449. height: 100%;
  450. }
  451. }
  452. }
  453. .user-info-box {
  454. height: 180rpx;
  455. color: white;
  456. display: flex;
  457. align-items: center;
  458. justify-content: space-between;
  459. position: relative;
  460. z-index: 1;
  461. .detail {
  462. height: 130rpx;
  463. .portrait-box {
  464. height: 100%;
  465. .portrait {
  466. width: 130rpx;
  467. height: 100%;
  468. border: 5rpx solid #fff;
  469. border-radius: 50%;
  470. }
  471. }
  472. .info-box {
  473. margin-left: 20rpx;
  474. line-height: 1.5;
  475. .username {
  476. font-size: $font-lg + 6rpx;
  477. height: 100%;
  478. image {
  479. display: inline-block;
  480. width: 147rpx;
  481. height: 32rpx;
  482. }
  483. }
  484. .username-t {
  485. font-size: $font-lg + 6rpx;
  486. // height: 32rpx;
  487. display: flex;
  488. align-items: center;
  489. image {
  490. display: inline-block;
  491. margin-left: 10rpx;
  492. width: 147rpx;
  493. height: 32rpx;
  494. }
  495. }
  496. .user-get {
  497. font-size: $font-lg;
  498. text {
  499. font-size: $font-lg + 6rpx;
  500. }
  501. }
  502. .user-lv {
  503. display: flex;
  504. .lv-1 {
  505. text-align: center;
  506. width: 150rpx;
  507. line-height: 32rpx;
  508. border: 1px solid #ffffff;
  509. border-radius: 8rpx;
  510. font-size: 20rpx;
  511. font-family: Source Han Sans CN;
  512. font-weight: 400;
  513. color: #ffffff;
  514. }
  515. .lv-2,
  516. .lv-3 {
  517. width: 147rpx;
  518. height: 32rpx;
  519. image {
  520. height: 100%;
  521. width: 100%;
  522. }
  523. }
  524. }
  525. }
  526. }
  527. .config {
  528. font-size: 48rpx;
  529. height: 130rpx;
  530. .setting {
  531. margin-right: 51rpx;
  532. }
  533. }
  534. .my-info {
  535. width: 194rpx;
  536. height: 64rpx;
  537. background: #ffffff;
  538. border-radius: 32rpx 0rpx 0rpx 32rpx;
  539. justify-content: center;
  540. image {
  541. width: 30rpx;
  542. height: 30rpx;
  543. }
  544. .title {
  545. padding-left: 9rpx;
  546. font-size: 28rpx;
  547. font-family: PingFang SC;
  548. font-weight: 500;
  549. color: #ff4c4c;
  550. }
  551. }
  552. }
  553. .vip-card-box {
  554. display: flex;
  555. flex-direction: column;
  556. color: #f7d680;
  557. height: 240rpx;
  558. background: linear-gradient(left, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.8));
  559. border-radius: 16rpx 16rpx 0 0;
  560. overflow: hidden;
  561. position: relative;
  562. padding: 20rpx 24rpx;
  563. .card-bg {
  564. position: absolute;
  565. top: 20rpx;
  566. right: 0;
  567. width: 380rpx;
  568. height: 260rpx;
  569. }
  570. .b-btn {
  571. position: absolute;
  572. right: 20rpx;
  573. top: 16rpx;
  574. width: 132rpx;
  575. height: 40rpx;
  576. text-align: center;
  577. line-height: 40rpx;
  578. font-size: 22rpx;
  579. color: #36343c;
  580. border-radius: 20px;
  581. background: linear-gradient(left, #f9e6af, #ffd465);
  582. z-index: 1;
  583. }
  584. .tit {
  585. font-size: $font-base + 2rpx;
  586. color: #f7d680;
  587. margin-bottom: 28rpx;
  588. .iconfont {
  589. color: #f6e5a3;
  590. margin-right: 16rpx;
  591. }
  592. }
  593. .e-b {
  594. font-size: $font-sm;
  595. color: #d8cba9;
  596. margin-top: 10rpx;
  597. }
  598. }
  599. .cover-container {
  600. background: $page-color-base;
  601. margin-top: -150rpx;
  602. padding: 0 30rpx;
  603. position: relative;
  604. background: #f5f5f5;
  605. padding-bottom: 20rpx;
  606. .arc {
  607. position: absolute;
  608. left: 0;
  609. top: -34rpx;
  610. width: 100%;
  611. height: 36rpx;
  612. }
  613. }
  614. .tj-sction {
  615. @extend %section;
  616. .tj-item {
  617. @extend %flex-center;
  618. flex-direction: column;
  619. height: 140rpx;
  620. font-size: $font-sm;
  621. color: #75787d;
  622. }
  623. .num {
  624. font-size: $font-lg;
  625. color: $font-color-dark;
  626. margin-bottom: 8rpx;
  627. }
  628. }
  629. .item-box {
  630. // width: 710rpx;
  631. // height: 221rpx;
  632. // background: #FFFFFF;
  633. // box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.06);
  634. // border-radius: 20rpx;
  635. // position: relative;
  636. // top: -150rpx;
  637. // left: 0;
  638. // right: 0;
  639. // margin: 0 auto -150rpx;
  640. margin: 20rpx 0;
  641. .box-title {
  642. background-color: #fff;
  643. line-height: 1;
  644. // padding: 30rpx;
  645. padding: 0 36rpx 0 35rpx;
  646. height: 73rpx;
  647. border-radius: 20rpx 20rpx 0 0;
  648. .title {
  649. font-weight: bold;
  650. font-size: 30rpx;
  651. font-family: PingFang SC;
  652. font-weight: bold;
  653. color: #333333;
  654. }
  655. .link {
  656. font-size: $font-base - 2rpx;
  657. color: $font-color-light;
  658. }
  659. }
  660. .order-section {
  661. height: 146rpx;
  662. @extend %section;
  663. // padding: 28rpx 0;
  664. .order-item {
  665. @extend %flex-center;
  666. width: 120rpx;
  667. height: 146rpx;
  668. border-radius: 10rpx;
  669. font-size: $font-sm;
  670. color: $font-color-dark;
  671. }
  672. .iconfont {
  673. font-size: 48rpx;
  674. margin-bottom: 18rpx;
  675. color: #fa436a;
  676. }
  677. .icon-shouhoutuikuan {
  678. font-size: 44rpx;
  679. }
  680. .icon {
  681. height: 50rpx;
  682. width: 48rpx;
  683. margin-bottom: 18rpx;
  684. background-size: 100%;
  685. background-repeat: no-repeat;
  686. background-position: center;
  687. .icon-img {
  688. width: 100%;
  689. height: 100%;
  690. }
  691. }
  692. .icon-b {
  693. height: 70rpx;
  694. width: 70rpx;
  695. }
  696. }
  697. }
  698. .history-section {
  699. // padding: 30rpx 0 0;
  700. margin-top: 20rpx;
  701. background: #fff;
  702. border-radius: 10rpx;
  703. .sec-header {
  704. display: flex;
  705. align-items: center;
  706. font-size: $font-base;
  707. color: $font-color-dark;
  708. line-height: 40rpx;
  709. margin-left: 30rpx;
  710. padding-top: 30rpx;
  711. .iconfont {
  712. font-size: 44rpx;
  713. color: $color-red;
  714. margin-right: 16rpx;
  715. line-height: 40rpx;
  716. }
  717. }
  718. .h-list {
  719. white-space: nowrap;
  720. padding: 30rpx 30rpx 0;
  721. .h-list-image {
  722. display: inline-block;
  723. width: 160rpx;
  724. height: 160rpx;
  725. margin-right: 20rpx;
  726. border-radius: 10rpx;
  727. }
  728. }
  729. }
  730. .up-box {
  731. margin: 21rpx auto;
  732. width: 710rpx;
  733. height: 90rpx;
  734. background: linear-gradient(73deg, #ffffff 0%, #fffbeb 0%, #fff1da 0%, #fed591 100%);
  735. border-radius: 20rpx;
  736. image {
  737. width: 100%;
  738. height: 100%;
  739. border-radius: 20rpx;
  740. }
  741. }
  742. .item-box-b {
  743. width: 710rpx;
  744. height: 221rpx;
  745. background: #ffffff;
  746. box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.5);
  747. border-radius: 20rpx;
  748. position: relative;
  749. top: -150rpx;
  750. left: 0;
  751. right: 0;
  752. margin: 0 auto -150rpx;
  753. }
  754. .popup-box {
  755. width: 522rpx;
  756. height: 605rpx;
  757. background-color: #ffffff;
  758. border-radius: 20rpx;
  759. position: relative;
  760. .img {
  761. position: relative;
  762. top: -56rpx;
  763. left: 0;
  764. width: 522rpx;
  765. height: 132rpx;
  766. display: flex;
  767. justify-content: center;
  768. image {
  769. border-radius: 20rpx 20rpx 0 0;
  770. width: 450rpx;
  771. height: 132rpx;
  772. }
  773. }
  774. .mian {
  775. margin-top: -44rpx;
  776. display: flex;
  777. flex-direction: column;
  778. align-items: center;
  779. // padding: 32rpx 32rpx;
  780. background-color: #ffffff;
  781. border-radius: 0 0 20rpx 20rpx;
  782. text-align: center;
  783. .delivery {
  784. font-size: 40rpx;
  785. color: #333333;
  786. display: flex;
  787. align-items: center;
  788. flex-direction: column;
  789. .title {}
  790. image {
  791. margin-top: 48rpx;
  792. width: 172rpx;
  793. height: 160rpx;
  794. }
  795. }
  796. .nocancel {
  797. font-size: 32rpx;
  798. color: #333333;
  799. margin-top: 14rpx;
  800. }
  801. .comfirm-box {
  802. margin-top: 52rpx;
  803. display: flex;
  804. // margin-bottom: 32rpx;
  805. // justify-content: space-around;
  806. .cancel {
  807. display: flex;
  808. align-items: center;
  809. justify-content: center;
  810. width: 197rpx;
  811. height: 74rpx;
  812. border: 1px solid #dcc786;
  813. border-radius: 38rpx;
  814. font-size: 32rpx;
  815. color: #605128;
  816. }
  817. .comfirm {
  818. margin-left: 32rpx;
  819. display: flex;
  820. align-items: center;
  821. justify-content: center;
  822. width: 197rpx;
  823. height: 74rpx;
  824. background: linear-gradient(-90deg, #d1ba77 0%, #f7e8ad 100%);
  825. border-radius: 38px;
  826. font-size: 32rpx;
  827. color: #605128;
  828. }
  829. }
  830. }
  831. }
  832. .outlogin {
  833. margin: 40rpx auto;
  834. width: 500rpx;
  835. background-color: #fff;
  836. color: #ff4c4b;
  837. border: 1px solid #ff4c4b;
  838. text-align: center;
  839. padding: 10rpx 0rpx;
  840. border-radius: 50rpx;
  841. }
  842. </style>