user.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924
  1. <template>
  2. <view :class="[AppTheme]" class="all_box container">
  3. <!-- #ifdef APP-PLUS || MP-WEIXIN -->
  4. <u-navbar title="个人中心" :titleStyle="{color:'#ffffff'}" :bgColor="primary" :autoBack="false" :fixed="true"
  5. :placeholder="true" :height="45">
  6. <view class="u-nav-slot" slot="left"></view>
  7. </u-navbar>
  8. <!-- #endif -->
  9. <view class="user-section bg-primary">
  10. <view class="user-info-box">
  11. <view class="portrait-box">
  12. <image class="portrait" :src="headimgurl">
  13. </image>
  14. </view>
  15. <view class="info-box">
  16. <view v-if="user.id" style="text-align: left;">
  17. <text class="username">{{ user.nickname ?user.nickname:'暂无昵称' }}</text>
  18. </view>
  19. <view v-if="user.id" style="text-align: left;">
  20. <text class="username2">ID:{{ user.id }}</text>
  21. </view>
  22. <!-- #ifdef APP-PLUS||H5 -->
  23. <view v-if="!user.id" @click="gologin" class="user-mask">点击登录</view>
  24. <!-- #endif -->
  25. <!-- #ifdef MP-WEIXIN -->
  26. <view v-if="!user.id" @click="toLogin" class="user-mask">点击登录</view>
  27. <!-- #endif -->
  28. </view>
  29. <view @click="navTo('/pagesD/pages/set/set')"
  30. style="width: 35vh;display: flex;justify-content: flex-end;padding-right: 10rpx;">
  31. <u-icon name="setting" color="#ffffff" size="25"></u-icon>
  32. </view>
  33. </view>
  34. <view class="tj-sction">
  35. <view class="top_box">
  36. <view class="left">
  37. 可用余额:
  38. <text class="text-neutral">¥{{user.money||0.00}}</text>
  39. </view>
  40. <navigator class="right bg-primary" url="/pagesA/pages/mypurse/withdraw/withdraw">立即提现</navigator>
  41. </view>
  42. <view class="bottom_box">
  43. <view class="tj-item" @click="navTo('/pagesC/pages/user/collection/collection')">
  44. <text class="num">{{ goodslikecount || 0 }}</text>
  45. <text>收藏</text>
  46. </view>
  47. <view class="tj-item" @click="navTo('/pagesA/pages/mypurse/index')">
  48. <text class="num">{{ user.money || 0 }}</text>
  49. <text>余额</text>
  50. </view>
  51. <view class="tj-item" @click="navTo('/pagesE/pages/mall/integral')">
  52. <text class="num">{{ user.score || 0 }}</text>
  53. <text>积分</text>
  54. </view>
  55. <view class="tj-item" >
  56. <text class="num">{{ user.all_soil || 0 }}</text>
  57. <text>土地总业绩</text>
  58. </view>
  59. </view>
  60. </view>
  61. </view>
  62. <view class="cover-container" :style="[
  63. {
  64. transform: coverTransform,
  65. transition: coverTransition
  66. }
  67. ]">
  68. <!-- 订单 -->
  69. <view class="order-section">
  70. <view class="order-item" @click="navTo('/pagesD/pages/order/order?state=0')" hover-class="common-hover"
  71. :hover-stay-time="40">
  72. <u-icon class="yticon" size="35" name="order" :color="primary"></u-icon>
  73. </image>
  74. <text>全部订单</text>
  75. </view>
  76. <view class="order-item" @click="navTo('/pagesD/pages/order/order?state=1')" hover-class="common-hover"
  77. :hover-stay-time="40">
  78. <u-icon class="yticon" size="35" name="red-packet" :color="primary"></u-icon>
  79. <text>待付款</text>
  80. </view>
  81. <view class="order-item" @click="navTo('/pagesD/pages/order/order?state=2')" hover-class="common-hover"
  82. :hover-stay-time="40">
  83. <u-icon class="yticon" size="35" name="gift" :color="primary"></u-icon>
  84. <text>待发货</text>
  85. </view>
  86. <view class="order-item" @click="navTo('/pagesD/pages/order/order?state=3')" hover-class="common-hover"
  87. :hover-stay-time="40">
  88. <u-icon class="yticon" size="35" name="car" :color="primary"></u-icon>
  89. <text>待收货</text>
  90. </view>
  91. <view class="order-item" @click="navTo('/pagesD/pages/order/order?state=4')" hover-class="common-hover"
  92. :hover-stay-time="40">
  93. <u-icon class="yticon" size="35" name="checkmark-circle" :color="primary"></u-icon>
  94. <text>已完成</text>
  95. </view>
  96. </view>
  97. <view class="order-section2" v-if="modular.length">
  98. <view class="wrap">
  99. <view class="inner" v-if="check(item)" v-for="(item, index) in modular" :key="index"
  100. @click="navTo(item.url)">
  101. <image class="yticon" :src=" item.img"></image>
  102. <text>{{ item.modularname }}</text>
  103. </view>
  104. </view>
  105. </view>
  106. <view class="inner">
  107. </view>
  108. <!-- 浏览历史 -->
  109. <view class="history-section icon">
  110. <view class="itme" @click="navTo('/pagesD/pages/address/address')">
  111. <view style="width: 80vh;">
  112. <u-icon name="map" labelSize="14" labelPos="right" color="rgb(95, 205, 162)" label="地址管理"
  113. size="20"></u-icon>
  114. </view>
  115. <view>
  116. <u-icon name="arrow-right" size="20"></u-icon>
  117. </view>
  118. </view>
  119. <view class="itme">
  120. <u-line length="90%"></u-line>
  121. </view>
  122. <view class="itme" @click="navTo('/pagesC/pages/index/article/article?type=1')">
  123. <view style="width: 80vh;">
  124. <u-icon name="list-dot" labelSize="14" labelPos="right" color="rgb(151, 137, 247)" label="关于我们"
  125. size="20">
  126. </u-icon>
  127. </view>
  128. <view>
  129. <u-icon name="arrow-right" size="20"></u-icon>
  130. </view>
  131. </view>
  132. <view class="itme">
  133. <u-line length="90%"></u-line>
  134. </view>
  135. <view class="itme" @click="navTo('/pagesD/pages/set/set')">
  136. <view style="width: 80vh;">
  137. <u-icon name="setting" labelSize="14" color="rgb(224, 116, 114)" labelPos="right" label="账号设置"
  138. size="20">
  139. </u-icon>
  140. </view>
  141. <view>
  142. <u-icon name="arrow-right" size="20"></u-icon>
  143. </view>
  144. </view>
  145. <view class="itme">
  146. <u-line length="90%"></u-line>
  147. </view>
  148. </view>
  149. </view>
  150. <!-- #ifdef MP-WEIXIN -->
  151. <nologin ref="nologin" v-on:loginback="loginback"></nologin>
  152. <!-- #endif -->
  153. <!-- 分享 -->
  154. <sharebox ref="sbox" v-if="sharedata" :data="sharedata"></sharebox>
  155. <tabbar :primary="primary"></tabbar>
  156. <admyself :opshow="true"></admyself>
  157. <!-- #ifdef MP-WEIXIN -->
  158. <view style="height: 120rpx;"></view>
  159. <!-- #endif -->
  160. <!-- #ifdef APP-PLUS || H5 -->
  161. <view style="height: 50rpx;"></view>
  162. <!-- #endif -->
  163. </view>
  164. </template>
  165. <script>
  166. import mineApi from '@/api/home/index.js';
  167. import loginApi from '@/api/login/login.js';
  168. import mine from '@/api/mine/index.js';
  169. import tabbar from '@/components/tabbar/tabbar.vue';
  170. import nologin from '@/components/nologin/nologin.vue';
  171. import {
  172. mapState
  173. } from 'vuex';
  174. let startY = 0,
  175. moveY = 0,
  176. pageAtTop = true;
  177. export default {
  178. components: {
  179. tabbar,
  180. nologin,
  181. },
  182. data() {
  183. return {
  184. primary: this.$theme.primary,
  185. background: {
  186. backgroundColor: '#001f3f',
  187. },
  188. iflogin: '',
  189. coverTransform: 'translateY(0px)',
  190. coverTransition: '0s',
  191. moving: false,
  192. shuju: '',
  193. vipid: '',
  194. user: '',
  195. goodslikecount: 0,
  196. modular: [],
  197. headimgurl: '',
  198. settingFile: getApp().globalData.siteinfo,
  199. sharedata: null,
  200. operator: [],
  201. wxopen: false
  202. };
  203. },
  204. onLoad(options) {
  205. let that = this
  206. that.headimgurl = that.settingFile.siteroot + '/static/app/tab-my.png'
  207. that.$bindid.getbindid(options, that.$store);
  208. that.$init_config(2, function(res) {
  209. if (that.$config) {
  210. that.sharedata = that.$config.sharedata
  211. }
  212. // #ifdef APP-PLUS
  213. if (res.app.open_wx_auth == 1) {
  214. that.wxopen = true;
  215. }
  216. // #endif
  217. // #ifdef H5
  218. if (res.app.gzh_wx_auth == 1) {
  219. that.wxopen = true;
  220. }
  221. // #endif
  222. })
  223. // #ifdef H5
  224. let code = that.$getUrlParms('code')
  225. if (code) {
  226. uni.showLoading({
  227. title: '请稍等...'
  228. });
  229. let logdata = {
  230. type: 2,
  231. code: code,
  232. pid: uni.getStorageSync('sys_pid'),
  233. };
  234. loginApi.wxlogin_v2(logdata).then(res => {
  235. if (res.status == 200) {
  236. // 登陆成功
  237. uni.hideLoading()
  238. that.$store.commit('login', res.data);
  239. that.getInitInfo();
  240. let url = that.$until.getnewurl()
  241. window.history.replaceState(null, null, url);
  242. } else {
  243. uni.showToast({
  244. title: res.msg,
  245. icon: 'none'
  246. })
  247. }
  248. })
  249. } else {
  250. that.getInitInfo();
  251. }
  252. // #endif
  253. // #ifndef H5
  254. that.getInitInfo();
  255. // #endif
  256. },
  257. onShareAppMessage(res) {
  258. let that = this
  259. let data = {
  260. title: that.sharedata.title,
  261. imageUrl: that.sharedata.imageUrl,
  262. path: that.sharedata.path
  263. };
  264. return data;
  265. },
  266. onShareTimeline(res) {
  267. let that = this
  268. return {
  269. title: that.sharedata.title,
  270. imageUrl: that.sharedata.imageUrl,
  271. path: that.sharedata.path
  272. }
  273. },
  274. onPullDownRefresh() {
  275. let that = this
  276. that.getInitInfo();
  277. },
  278. onShow() {
  279. let that = this;
  280. that.$init_config();
  281. if (that.primary == '' || that.primary != that.$theme.primary) {
  282. that.primary = that.$theme.primary;
  283. }
  284. let userInfo = uni.getStorageSync('userInfo');
  285. that.user = userInfo
  286. if (!that.user) {
  287. that.goodslikecount = 0;
  288. }
  289. that.getInitInfo();
  290. },
  291. watch: {
  292. // 当父组件需要子组件需要共享的参数发生了变化,手动通知子组件
  293. value: function(newVal, OldVal) {
  294. this.value = newVal;
  295. }
  296. },
  297. methods: {
  298. loginback() {
  299. //登录回调
  300. this.getInitInfo();
  301. },
  302. check(item) {
  303. let that = this;
  304. if (that.user && that.user.id > 0) {
  305. if (item.url == '/pagesC/pages/shoprequ/shoprequ' && that.user.farm_id > 0) {
  306. //农场入驻
  307. return false
  308. } else if (item.url == '/pagesB/pages/applyfofpromotion/applyfofpromotion' && that.user.isfx == 1) {
  309. //分销申请
  310. return false
  311. } else if (item.url == '/pagesC/pages/merchantdetails/index' && that.user.farm_id <= 0) {
  312. //商品管理
  313. return false;
  314. } else if (item.url == '/pagesD/pages/inspection/inspection' && that.user.is_inspection != 1) {
  315. //巡检任务
  316. return false;
  317. } else if ((item.url == '/pagesE/pages/serviceorder/operator/operator' || item.url ==
  318. '/pagesD/pages/financeoperator/financeoperator') && that.user.is_staff != 1) {
  319. //工单任务 认养工单
  320. return false;
  321. } else if (item.url == 'scancode') {
  322. // #ifdef APP-PLUS || MP-WEIXIN
  323. if (that.user.farm_id <= 0 && that.user.iswrite == 0) {
  324. return false;
  325. }
  326. // #endif
  327. // #ifndef APP-PLUS || MP-WEIXIN
  328. return false;
  329. // #endif
  330. }
  331. }
  332. return true;
  333. },
  334. subscribe(url, fun) {
  335. let that = this;
  336. let tmplIdsone = that.$config.temlist;
  337. if (tmplIdsone) {
  338. switch (url) {
  339. case "/pagesD/pages/inspection/inspection":
  340. that.$until.requestSubscribeMessage([tmplIdsone['InspectionResult']], tmplIdsone, function() {
  341. fun ? fun() : null
  342. });
  343. break
  344. case "/pagesD/pages/financeoperator/financeoperator":
  345. case "/pagesE/pages/serviceorder/operator/operator":
  346. that.$until.requestSubscribeMessage([tmplIdsone['operatorNewWork']], tmplIdsone, function() {
  347. fun ? fun() : null
  348. });
  349. break
  350. default:
  351. fun ? fun() : null
  352. break;
  353. }
  354. } else {
  355. fun ? fun() : null
  356. }
  357. },
  358. //打开扫一扫
  359. scancode() {
  360. uni.scanCode({
  361. scanType: ['qrCode'],
  362. success: function(res) {
  363. uni.navigateTo({
  364. url: '/pagesB/pages/activorderdails/writeoffdetails/writeoffdetails?code=' +
  365. res.result
  366. })
  367. }
  368. })
  369. },
  370. inspection(url) {
  371. let that = this;
  372. let tmplIdsone = that.$config.temlist;
  373. if (tmplIdsone) {
  374. that.$until.requestSubscribeMessage([tmplIdsone['InspectionResult']], tmplIdsone, function() {
  375. console.log('555555')
  376. that.$until.toUrl(url)
  377. });
  378. } else {
  379. console.log('pppppp')
  380. that.$until.toUrl(url)
  381. }
  382. },
  383. merchant() {
  384. let that = this;
  385. that.$until.toUrl('/pagesC/pages/merchantdetails/index')
  386. },
  387. financeoperator(url) {
  388. let that = this;
  389. let tmplIdsone = that.$config.temlist;
  390. if (tmplIdsone) {
  391. that.$until.requestSubscribeMessage([tmplIdsone['operatorNewWork']], tmplIdsone, function() {
  392. that.$until.toUrl(url)
  393. });
  394. } else {
  395. that.$until.toUrl(url)
  396. }
  397. },
  398. operators(url) {
  399. let that = this;
  400. let tmplIdsone = that.$config.temlist;
  401. if (tmplIdsone) {
  402. that.$until.requestSubscribeMessage([tmplIdsone['operatorNewWork']], tmplIdsone, function() {
  403. that.$until.toUrl(url)
  404. });
  405. } else {
  406. that.$until.toUrl(url)
  407. }
  408. },
  409. gologin() {
  410. let that = this
  411. let isWeixin = that.isWeiXin();
  412. if (isWeixin && that.wxopen) {
  413. that.h5_wx_auth();
  414. } else {
  415. uni.navigateTo({
  416. url: "/pagesC/pages/login/login"
  417. })
  418. }
  419. },
  420. h5_wx_auth() {
  421. let that = this;
  422. let appid = that.$config.app.wxgzhappid;
  423. if (appid == '') {
  424. uni.showToast({
  425. title: '公众号参数配置错误',
  426. icon: 'none'
  427. });
  428. return;
  429. }
  430. let pid = uni.getStorageSync('sys_pid');
  431. let purl = that.$siteinfo.h5_siteroot + "/h5?uuid=" + that.$uuid + "&pid=" + pid +
  432. "#/pages/user/user";
  433. let redirect_uri = encodeURIComponent(purl);
  434. that.$until.h5_wx_auth(appid, redirect_uri);
  435. },
  436. toLogin() {
  437. let that = this;
  438. that.$refs.nologin.open();
  439. },
  440. getInitInfo() {
  441. var data = null;
  442. // #ifdef APP-PLUS
  443. data = {
  444. apptype: 'app'
  445. };
  446. // #endif
  447. // #ifdef H5
  448. data = {
  449. apptype: 'h5'
  450. };
  451. // #endif
  452. // #ifdef MP-WEIXIN
  453. data = {
  454. apptype: 'weixin'
  455. };
  456. // #endif
  457. mineApi.vipIndex(data).then(res => {
  458. if (res.status == 200) {
  459. uni.stopPullDownRefresh()
  460. this.user = res.data.vip;
  461. this.headimgurl = res.data.vip.headimgurl
  462. this.modular = res.data.modular;
  463. this.operator = res.data.operator;
  464. this.goodslikecount = res.data.vip.goodslikecount;
  465. } else if (res.status == 401) {
  466. this.user = '';
  467. this.goodslikecount = 0;
  468. }
  469. });
  470. },
  471. /**
  472. * 统一跳转接口,拦截未登录路由
  473. * navigator标签现在默认没有转场动画,所以用view
  474. */
  475. navTo(url) {
  476. let that = this;
  477. if (!that.user || !that.user.id) {
  478. // #ifdef MP-WEIXIN
  479. that.toLogin();
  480. // #endif
  481. // #ifdef APP-PLUS||H5
  482. that.gologin();
  483. // #endif
  484. } else {
  485. that.subscribe(url, function() {
  486. if (url == '#') {
  487. that.$api.msg('暂未开放');
  488. return;
  489. }
  490. if (url == '/pagesA/pages/distribution/distribution') {
  491. if (that.user.isfx != 1) {
  492. that.$until.toUrl('/pagesB/pages/applyfofpromotion/applyfofpromotion');
  493. } else {
  494. that.$until.toUrl(url);
  495. }
  496. } else if (url == '/pagesC/pages/merchantdetails/index') {
  497. if (that.user.farm_id <= 0) {
  498. that.$until.toUrl('/pagesC/pages/shoprequ/shoprequ');
  499. } else {
  500. that.$until.toUrl(url);
  501. }
  502. } else if (url == 'scancode') {
  503. that.scancode();
  504. } else {
  505. that.$until.toUrl(url);
  506. }
  507. })
  508. }
  509. },
  510. /**
  511. * 会员卡下拉和回弹
  512. * 1.关闭bounce避免ios端下拉冲突
  513. * 2.由于touchmove事件的缺陷(以前做小程序就遇到,比如20跳到40,h5反而好很多),下拉的时候会有掉帧的感觉
  514. * transition设置0.1秒延迟,让css来过渡这段空窗期
  515. * 3.回弹效果可修改曲线值来调整效果,推荐一个好用的bezier生成工具 http://cubic-bezier.com/
  516. */
  517. coverTouchstart(e) {
  518. if (pageAtTop === false) {
  519. return;
  520. }
  521. this.coverTransition = 'transform .1s linear';
  522. startY = e.touches[0].clientY;
  523. },
  524. coverTouchmove(e) {
  525. moveY = e.touches[0].clientY;
  526. let moveDistance = moveY - startY;
  527. if (moveDistance < 0) {
  528. this.moving = false;
  529. return;
  530. }
  531. this.moving = true;
  532. if (moveDistance >= 80 && moveDistance < 100) {
  533. moveDistance = 80;
  534. }
  535. if (moveDistance > 0 && moveDistance <= 80) {
  536. this.coverTransform = `translateY(${moveDistance}px)`;
  537. }
  538. },
  539. coverTouchend() {
  540. if (this.moving === false) {
  541. return;
  542. }
  543. this.moving = false;
  544. this.coverTransition = 'transform 0.3s cubic-bezier(.21,1.93,.53,.64)';
  545. this.coverTransform = 'translateY(0px)';
  546. }
  547. }
  548. };
  549. </script>
  550. <style lang="scss">
  551. .all_box {
  552. min-height: calc(100vh - 100rpx);
  553. }
  554. .btn1 {
  555. width: 200rpx;
  556. height: 140rpx;
  557. margin-top: 20rpx;
  558. background-color: #f5f5f5;
  559. color: #999999;
  560. border-radius: 10rpx;
  561. display: flex;
  562. flex-direction: column;
  563. align-items: center;
  564. justify-content: center;
  565. font-size: 24rpx;
  566. }
  567. .btnImg {
  568. width: 60rpx;
  569. height: 50rpx;
  570. }
  571. .btn1::after {
  572. border: 0;
  573. }
  574. page {
  575. background-color: #f5f5f5;
  576. padding-bottom: 100rpx;
  577. }
  578. %flex-center {
  579. display: flex;
  580. flex-direction: column;
  581. justify-content: center;
  582. align-items: center;
  583. }
  584. %section {
  585. display: flex;
  586. justify-content: space-around;
  587. align-content: center;
  588. background: #fff;
  589. border-radius: 10upx;
  590. }
  591. %sectio {
  592. display: flex;
  593. justify-content: space-around;
  594. align-content: center;
  595. background: #fff;
  596. border-radius: 10upx 10upx 0 0;
  597. }
  598. .user-section {
  599. height: 320rpx;
  600. padding: 0upx 20rpx;
  601. .bg {
  602. position: absolute;
  603. left: 0;
  604. top: 0;
  605. width: 100%;
  606. height: 100%;
  607. filter: blur(1px);
  608. opacity: 0.7;
  609. }
  610. }
  611. .user-info-box {
  612. display: flex;
  613. text-align: center;
  614. align-items: center;
  615. position: relative;
  616. padding-bottom: 15rpx;
  617. z-index: 1;
  618. /* #ifdef H5 */
  619. padding-top: 15rpx;
  620. /* #endif */
  621. .portrait {
  622. width: 90upx;
  623. height: 90upx;
  624. border-radius: 50%;
  625. display: inline-block;
  626. }
  627. .info-box {
  628. margin-left: 20rpx;
  629. justify-items: center;
  630. width: 250rpx;
  631. .username {
  632. display: inline-block;
  633. font-size: 30rpx;
  634. color: #ffffff;
  635. margin-top: 20upx;
  636. }
  637. .username2 {
  638. display: inline-block;
  639. font-size: 28rpx;
  640. color: #f1f1f1;
  641. margin-top: 20upx;
  642. }
  643. .user-mask {
  644. // margin-top: 15upx;
  645. justify-content: start;
  646. text-align: left;
  647. color: #ffffff;
  648. font-size: 28rpx;
  649. }
  650. }
  651. }
  652. .tj-sction {
  653. // @extend %section;
  654. background: #fff;
  655. width: 100%;
  656. // margin: 0 30upx;
  657. border-radius: 10rpx;
  658. // z-index: 99;
  659. margin: auto;
  660. margin-top: -5rpx;
  661. position: relative;
  662. .top_box {
  663. padding: 20rpx;
  664. color: #75787d;
  665. display: flex;
  666. align-items: center;
  667. justify-content: space-between;
  668. .left {
  669. width: 70%;
  670. text {
  671. font-size: 32rpx;
  672. padding-left: 20rpx;
  673. }
  674. }
  675. .right {
  676. color: #fff;
  677. font-size: 26rpx;
  678. padding: 15rpx 20rpx;
  679. border-radius: 40rpx;
  680. margin-right: 20rpx;
  681. margin-top: 30rpx;
  682. }
  683. }
  684. .bottom_box {
  685. display: flex;
  686. justify-content: space-around;
  687. align-items: center;
  688. .tj-item {
  689. @extend %flex-center;
  690. flex-direction: column;
  691. height: 140upx;
  692. font-size: $font-sm;
  693. color: #75787d;
  694. }
  695. }
  696. .num {
  697. font-size: $font-lg;
  698. color: $font-color-dark;
  699. margin-bottom: 8upx;
  700. }
  701. }
  702. .vip-card-box {
  703. display: flex;
  704. flex-direction: column;
  705. color: #f7d680;
  706. height: 240upx;
  707. background: linear-gradient(left, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.8));
  708. border-radius: 16upx 16upx 0 0;
  709. overflow: hidden;
  710. position: relative;
  711. padding: 20upx 24upx;
  712. .card-bg {
  713. position: absolute;
  714. top: 20upx;
  715. right: 0;
  716. width: 380upx;
  717. height: 260upx;
  718. }
  719. .b-btn {
  720. position: absolute;
  721. right: 20upx;
  722. top: 16upx;
  723. width: 132upx;
  724. height: 40upx;
  725. text-align: center;
  726. line-height: 40upx;
  727. font-size: 22upx;
  728. color: #36343c;
  729. border-radius: 20px;
  730. background: linear-gradient(left, #f9e6af, #ffd465);
  731. z-index: 1;
  732. }
  733. .tit {
  734. font-size: $font-base + 2upx;
  735. color: #f7d680;
  736. margin-bottom: 28upx;
  737. .yticon {
  738. color: #f6e5a3;
  739. margin-right: 16upx;
  740. }
  741. }
  742. .e-b {
  743. font-size: $font-sm;
  744. color: #d8cba9;
  745. margin-top: 10upx;
  746. }
  747. }
  748. .cover-container {
  749. background: $page-color-base;
  750. /* #ifdef H5 */
  751. margin-top: 70rpx;
  752. /* #endif */
  753. /* #ifndef H5 */
  754. margin-top: 50rpx;
  755. /* #endif */
  756. padding: 20rpx;
  757. position: relative;
  758. background: #f5f5f5;
  759. padding-bottom: 20upx;
  760. .arc {
  761. width: 100%;
  762. height: 36upx;
  763. }
  764. }
  765. .order-section.order-section1 {
  766. margin-top: 0;
  767. border-radius: 0 0 10upx;
  768. }
  769. .order-section {
  770. @extend %sectio;
  771. padding: 28upx 0;
  772. // margin-top: 20upx;
  773. border-radius: 10rpx;
  774. .order-item {
  775. @extend %flex-center;
  776. width: 120upx;
  777. height: 120upx;
  778. border-radius: 10upx;
  779. font-size: $font-sm;
  780. color: $font-color-dark;
  781. }
  782. .yticon {
  783. // width: 52rpx;
  784. // height: 52rpx;
  785. /* font-size: 48upx; */
  786. margin-bottom: 18upx;
  787. color: #fa436a;
  788. }
  789. .icon-shouhoutuikuan {
  790. font-size: 44upx;
  791. }
  792. }
  793. // .demo-layout{
  794. // display: flex;
  795. // justify-content: center;
  796. // }
  797. .wrap {
  798. width: 100%;
  799. .inner {
  800. display: inline-block;
  801. margin-bottom: 60rpx;
  802. width: 25%;
  803. text-align: center;
  804. text {
  805. display: block;
  806. text-align: center;
  807. font-size: 24rpx;
  808. color: $font-color-dark;
  809. }
  810. .yticon {
  811. width: 52rpx;
  812. height: 52rpx;
  813. margin-bottom: 18rpx;
  814. }
  815. .icon-shouhoutuikuan {
  816. font-size: 44upx;
  817. }
  818. }
  819. }
  820. .order-section2 {
  821. width: 100%;
  822. padding: 28upx 0 0 0;
  823. margin-top: 20upx;
  824. background-color: #fff;
  825. border-radius: 10rpx;
  826. }
  827. .history-section {
  828. padding: 30upx 0 0;
  829. margin-top: 20upx;
  830. background: #fff;
  831. border-radius: 10upx;
  832. border-radius: 10rpx;
  833. .sec-header {
  834. display: flex;
  835. align-items: center;
  836. font-size: $font-base;
  837. color: $font-color-dark;
  838. line-height: 40upx;
  839. margin-left: 30upx;
  840. .yticon {
  841. font-size: 44upx;
  842. color: #5eba8f;
  843. margin-right: 16upx;
  844. line-height: 40upx;
  845. }
  846. }
  847. .h-list {
  848. white-space: nowrap;
  849. padding: 30upx 30upx 0;
  850. image {
  851. display: inline-block;
  852. width: 160upx;
  853. height: 160upx;
  854. margin-right: 20upx;
  855. border-radius: 10upx;
  856. }
  857. }
  858. .itme {
  859. padding: 10rpx 30rpx 20rpx 30rpx;
  860. display: flex;
  861. justify-content: space-evenly;
  862. align-items: center;
  863. // justify-content: space-between;
  864. }
  865. }
  866. </style>