user.vue 21 KB

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