user.vue 22 KB

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