user.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104
  1. <template>
  2. <view class="container">
  3. <view class="vheigh"></view>
  4. <view class="square">
  5. <view class="user">
  6. <image class="avatar" :src="userInfo.avatar" mode="" v-if="userInfo.avatar"
  7. @click="navTo('/pages/set/userinfo')"></image>
  8. <image class="avatar" src="../../static/error/missing-face.png" mode="" v-else
  9. @click="navTo('/pages/set/userinfo')"></image>
  10. <view class="info">
  11. <view class="user-name clamp2">{{ userInfo.nickname || '游客'}}</view>
  12. <view class="user-id" v-if="userInfo && userInfo.uid">
  13. UID: {{userInfo.uid}}
  14. </view>
  15. </view>
  16. <view class="hym">
  17. <image src="/static/icon/qr.png" mode=""></image>
  18. <view class="">
  19. 会员码
  20. </view>
  21. </view>
  22. </view>
  23. <view class="hy-info" @click="navTo('/pages/users/vip/index')">
  24. <view class="join">
  25. <image src="/static/user/hy-bg.png" mode=""></image>
  26. <view class="tit">
  27. <text class="t1">优享会员</text>
  28. <text>开通即享超值折扣</text>
  29. </view>
  30. <view class="btn">
  31. 立即开通
  32. </view>
  33. </view>
  34. </view>
  35. </view>
  36. <!-- <view class="" style="height: 100rpx;"></view> -->
  37. <!-- -->
  38. <view class="main-box">
  39. <view class="title flex" @click="navTo('/pages/order/order?state=0')">
  40. <view class="title-left">
  41. <view class="title-font">我的订单</view>
  42. </view>
  43. <image class="title-right" src="../../static/icon/back.png" mode=""></image>
  44. </view>
  45. <view class="main flex">
  46. <view class="oitem" @click="navTo('/pages/order/order?state=0')">
  47. <image class="oitem-image" src="../../static/user/o1.png" mode=""></image>
  48. <view class="oitem-font">待付款</view>
  49. </view>
  50. <view class="oitem" @click="navTo('/pages/order/order?state=1')">
  51. <image class="oitem-image" src="../../static/user/o2.png" mode=""></image>
  52. <view class="oitem-font">待发货</view>
  53. </view>
  54. <view class="oitem" @click="navTo('/pages/order/order?state=2')">
  55. <image class="oitem-image" src="../../static/user/o3.png" mode=""></image>
  56. <view class="oitem-font">待收货</view>
  57. </view>
  58. <view class="oitem" @click="navTo('/pages/order/order?state=3')">
  59. <image class="oitem-image" src="../../static/user/o4.png" mode=""></image>
  60. <view class="oitem-font">已完成</view>
  61. </view>
  62. </view>
  63. </view>
  64. <view class="user-list flex" @click="smsh" v-if="userInfo && userInfo.uid && userInfo.adminid">
  65. <image src="../../static/icon/scend.png" mode="" class="left-img"></image>
  66. <view class="">
  67. 扫码核销
  68. </view>
  69. <image src="../../static/icon/back.png" mode="" class="right-img"></image>
  70. </view>
  71. <!-- <view class="user-list flex" @click="gorz" v-if="userInfo && userInfo.uid && userInfo.is_real != 2">
  72. <image src="../../static/icon/u1.png" mode="" class="left-img"></image>
  73. <view class="">
  74. 实名认证
  75. </view>
  76. <image src="../../static/icon/back.png" mode="" class="right-img"></image>
  77. </view> -->
  78. <!-- <view class="user-list flex" @click="navTo('/pages/user/sqdl')">
  79. <image src="../../static/icon/u2.png" mode="" class="left-img"></image>
  80. <view class="">
  81. 银行卡绑定
  82. </view>
  83. <image src="../../static/icon/back.png" mode="" class="right-img"></image>
  84. </view> -->
  85. <!-- <view class="user-list flex" @click="navTo('/pages/user/userCard')">
  86. <image src="../../static/icon/u2.png" mode="" class="left-img"></image>
  87. <view class="">
  88. 我的卡券
  89. </view>
  90. <image src="../../static/icon/back.png" mode="" class="right-img"></image>
  91. </view> -->
  92. <view class="user-list flex" @click="navTo('/pages/users/money/index')">
  93. <image src="../../static/user/u1.png" mode="" class="left-img"></image>
  94. <view class="">
  95. 我的余额({{userInfo.now_money || '0'}})
  96. </view>
  97. <image src="../../static/icon/back.png" mode="" class="right-img"></image>
  98. </view>
  99. <!-- <view class="user-list flex" @click="navTo('/pages/user/shareQrCode')" v-if="userInfo && userInfo.level > 0">
  100. <image src="../../static/icon/u3.png" mode="" class="left-img"></image>
  101. <view class="">
  102. 推广海报
  103. </view>
  104. <image src="../../static/icon/back.png" mode="" class="right-img"></image>
  105. </view>
  106. <view class="user-list flex" @click="navTo('/pages/user/team')">
  107. <image src="../../static/icon/gn1.png" mode="" class="left-img"></image>
  108. <view class="">
  109. 我的推广
  110. </view>
  111. <image src="../../static/icon/back.png" mode="" class="right-img"></image>
  112. </view> -->
  113. <!-- <view class="user-list flex" @click="navTo('/pages/set/address')">
  114. <image src="../../static/icon/u4.png" mode="" class="left-img"></image>
  115. <view class="">
  116. 我的会员
  117. </view>
  118. <image src="../../static/icon/back.png" mode="" class="right-img"></image>
  119. </view> -->
  120. <view class="user-list flex" @click="navTo('/pages/set/set')">
  121. <image src="../../static/user/u3.png" mode="" class="left-img"></image>
  122. <view class="">
  123. 设置
  124. </view>
  125. <image src="../../static/icon/back.png" mode="" class="right-img"></image>
  126. </view>
  127. <view class="" style="height: 20rpx;">
  128. </view>
  129. <uni-popup ref="popupkf" type="center">
  130. <view class="popup-box">
  131. <view class="img">
  132. <image src="../../static/img/img009.png" mode=""></image>
  133. </view>
  134. <view class="mian">
  135. <view class="delivery">
  136. <view class="title">已经为您定制专属客服</view>
  137. <image src="../../static/img/img010.png" mode=""></image>
  138. </view>
  139. <view class="nocancel">客服VX:{{ text }}</view>
  140. <view class="comfirm-box">
  141. <view class="cancel" @click="cancel">取消</view>
  142. <view class="comfirm" @click="comfirm(text)">复制微信</view>
  143. </view>
  144. </view>
  145. </view>
  146. </uni-popup>
  147. <!-- 核销弹窗 -->
  148. <uni-popup ref="popuphx" class="agree-wrapper">
  149. <view class="hx-wrapper">
  150. <view class="hx-img">
  151. <image src="../../static/img/hxbg.png" mode=""></image>
  152. </view>
  153. <view class="hx-body">
  154. <view class="hx-title">
  155. 扫码核销
  156. </view>
  157. <input type="text" v-model="hxcode" placeholder="请输入核销码" placeholder-class="hx-placeholder" />
  158. <view class="hx-btn" @click="qhx">
  159. 立即核销
  160. </view>
  161. </view>
  162. <view class="hx-close" @click="close">
  163. <image src="../../static/icon/close.png" mode=""></image>
  164. </view>
  165. </view>
  166. </uni-popup>
  167. <uni-popup ref="popupFk" class="agree-wrapper">
  168. <view class="share-code flex">
  169. <tki-qrcode :cid="cid" ref="qrcode" :val="val" :size="size" :unit="unit" :background="background"
  170. :foreground="foreground" :pdground="pdground" :icon="icon" :iconSize="iconSize" :lv="lv"
  171. :onval="onval" :showLoading="showLoading" :loadMake="loadMake" :usingComponents="usingComponents"
  172. @result="qrR" />
  173. <view class="" style="padding-top: 20rpx;">
  174. {{val}}
  175. </view>
  176. </view>
  177. </uni-popup>
  178. </view>
  179. </template>
  180. <script>
  181. import {
  182. orderVerific
  183. } from '@/api/index.js'
  184. import {
  185. toScanCode
  186. } from '@/components/scan.js'
  187. // #ifdef H5
  188. import * as weixinObj from "@/plugin/jweixin-module/index.js";
  189. // #endif
  190. import {
  191. mapState,
  192. mapMutations
  193. } from 'vuex';
  194. // import uniList from '@/components/uni-list/uni-list.vue';
  195. // import uniListItem from '@/components/uni-list-item/uni-list-item.vue';
  196. import {
  197. orderData,
  198. getUserInfo,
  199. getLevelList,
  200. goHx,
  201. getFQr
  202. } from '@/api/user.js';
  203. import {
  204. saveUrl,
  205. interceptor
  206. } from '@/utils/loginUtils.js';
  207. // #ifdef H5
  208. import {
  209. shareLoad
  210. } from '@/utils/wxAuthorized';
  211. // #endif
  212. let startY = 0,
  213. moveY = 0,
  214. pageAtTop = true;
  215. export default {
  216. data() {
  217. return {
  218. showTit: '付款码',
  219. cid: 'tki-qrcode-canvas', //canvasId,页面存在多个二维码组件时需设置不同的ID
  220. size: 300, //生成的二维码大小
  221. unit: 'upx', //大小单位尺寸
  222. // show: true,//默认使用组件中的image标签显示二维码
  223. val: '123', //要生成的内容
  224. background: '#ffffff', //二维码背景色
  225. foreground: '#333333', //二维码前景色
  226. pdground: '#333333', //二维码角标色
  227. icon: '', //二维码图标URL(必须是本地图片,网络图需要先下载至本地)
  228. iconSize: 40, //二维码图标大小
  229. lv: 3, //容错级别
  230. onval: true, //监听val值变化自动重新生成二维码
  231. loadMake: true, //组件初始化完成后自动生成二维码,val需要有值
  232. usingComponents: false, //是否使用了自定义组件模式(主要是为了修复非自定义组件模式时 v-if 无法生成二维码的问题)
  233. showLoading: false, //是否显示loading
  234. jhe: 0, //进货额
  235. listList: [], //等级列表
  236. current: 2,
  237. id: '', //是否已签到
  238. store_name: '',
  239. achievement: '',
  240. code: '',
  241. levelList: [],
  242. text: '13105637866', //客服微信
  243. hxcode: '', //核销码
  244. hxLoading: false
  245. };
  246. },
  247. onShow() {
  248. // 判断是否已经登录
  249. // if (this.hasLogin) {
  250. // this.loadBaseData();
  251. // }
  252. this.loadBaseData();
  253. // #ifdef H5
  254. shareLoad()
  255. // #endif
  256. },
  257. filters: {
  258. phone(e) {
  259. var subStr1 = e.substr(0, 3);
  260. var subStr2 = e.substr(e.length - 4, 4);
  261. var subStr = subStr1 + '...' + subStr2;
  262. e = subStr;
  263. return e;
  264. }
  265. },
  266. onReady() {
  267. // 初始化获取页面宽度
  268. uni.createSelectorQuery()
  269. .select('.container')
  270. .fields({
  271. size: true
  272. },
  273. data => {
  274. // 计算最多下拉的高度
  275. this.userDowm = Math.floor((data.width / 750) * 185);
  276. // 计算最大触发修改高度事件
  277. this.userMaxDowm = Math.floor((data.width / 750) * 250);
  278. }
  279. )
  280. .exec();
  281. },
  282. computed: {
  283. ...mapState('user', ['userInfo', 'orderInfo', 'hasLogin'])
  284. },
  285. methods: {
  286. ...mapMutations('user', ['setUserInfo']),
  287. qrR() {
  288. },
  289. openFk() {
  290. getFQr().then(res => {
  291. this.val = res.data.code
  292. this.$refs.popupFk.open()
  293. })
  294. },
  295. getLevelList() {
  296. getLevelList().then(res => {
  297. console.log(res);
  298. this.listList = res.data.list
  299. })
  300. },
  301. showLevel(val) {
  302. let data = this.listList.find(item => item.grade == val)
  303. console.log(data);
  304. if (data) {
  305. return data.icon
  306. } else {
  307. return ''
  308. }
  309. },
  310. close() {
  311. this.hxcode = ''
  312. this.$refs.popuphx.close()
  313. },
  314. qhx() {
  315. let that = this
  316. if (that.hxLoading) {
  317. return
  318. }
  319. if (that.hxcode == '') {
  320. return that.$msg('请输入核销码')
  321. }
  322. that.hxLoading = true
  323. goHx({
  324. verify_code: that.hxcode,
  325. is_confirm: 1
  326. }).then(res => {
  327. uni.showToast({
  328. title: '核销成功',
  329. mask: true,
  330. duration: 1500
  331. });
  332. that.close()
  333. that.hxLoading = false
  334. }).catch(err => [
  335. that.hxLoading = false
  336. ])
  337. },
  338. // 扫码
  339. smsh() {
  340. let that = this
  341. // #ifdef H5
  342. try {
  343. weixinObj.scanQRCode({
  344. needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
  345. scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是一维码,默认二者都有
  346. success: function(res) {
  347. that.hxcode = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
  348. that.$refs.popuphx.open()
  349. }
  350. });
  351. } catch (err) {
  352. that.$refs.popuphx.open()
  353. }
  354. // #endif
  355. // #ifndef H5
  356. uni.scanCode({
  357. success: (res) => {
  358. this.hxcode = res.result
  359. this.$refs.popuphx.open()
  360. }
  361. })
  362. // #endif
  363. },
  364. gorz() {
  365. if (!this.hasLogin) {
  366. saveUrl();
  367. interceptor();
  368. } else {
  369. // uni.navigateTo({
  370. // url
  371. // });
  372. if (this.userInfo.is_real == 0) {
  373. this.navTo('/pages/user/smrz')
  374. } else if (this.userInfo.is_real == 1) {
  375. uni.showModal({
  376. title: "提示",
  377. content: '您提交的资料正在审核中,请耐心等待审核'
  378. })
  379. }
  380. }
  381. },
  382. sqdl() {
  383. if (this.hasLogin) {
  384. if (this.userInfo.enroll_status == 1) {
  385. uni.showModal({
  386. title: "提示",
  387. content: '您提交的申请正在审核中,请耐心等待审核'
  388. })
  389. } else {
  390. this.navTo('/pages/user/sqdl')
  391. }
  392. } else {
  393. this.navTo('/pages/user/sqdl')
  394. }
  395. },
  396. sao() {
  397. let obj = this;
  398. // #ifndef H5
  399. uni.scanCode({
  400. success(e) {
  401. obj.code = e.result;
  402. obj.$refs.popuphx.open();
  403. console.log(obj.$refs.popuphx);
  404. }
  405. });
  406. // #endif
  407. },
  408. comfirm(text) {
  409. console.log(text);
  410. const result = this.uniCopy(text);
  411. if (result === false) {
  412. uni.showToast({
  413. title: '不支持'
  414. });
  415. } else {
  416. uni.showToast({
  417. title: '复制成功',
  418. icon: 'none'
  419. });
  420. }
  421. this.$refs.popupkf.close();
  422. },
  423. uniCopy(content) {
  424. /**
  425. * 小程序端 和 app端的复制逻辑
  426. */
  427. //#ifndef H5
  428. uni.setClipboardData({
  429. data: content,
  430. success: function() {
  431. console.log('success');
  432. return true;
  433. }
  434. });
  435. //#endif
  436. /**
  437. * H5端的复制逻辑
  438. */
  439. // #ifdef H5
  440. if (!document.queryCommandSupported('copy')) {
  441. //为了兼容有些浏览器 queryCommandSupported 的判断
  442. // 不支持
  443. return false;
  444. }
  445. let textarea = document.createElement('textarea');
  446. textarea.value = content;
  447. textarea.readOnly = 'readOnly';
  448. document.body.appendChild(textarea);
  449. textarea.select(); // 选择对象
  450. textarea.setSelectionRange(0, content.length); //核心
  451. let result = document.execCommand('copy'); // 执行浏览器复制命令
  452. textarea.remove();
  453. return result;
  454. // #endif
  455. },
  456. // 加载初始数据
  457. loadBaseData() {
  458. const obj = this
  459. getUserInfo({})
  460. .then(({
  461. data
  462. }) => {
  463. obj.setUserInfo(data);
  464. obj.getLevelList()
  465. })
  466. .catch(e => {
  467. console.log(e);
  468. });
  469. },
  470. /**
  471. * 统一跳转接口,拦截未登录路由
  472. * navigator标签现在默认没有转场动画,所以用view
  473. */
  474. navTo(url) {
  475. console.log(url);
  476. if (!this.hasLogin) {
  477. // 保存地址
  478. saveUrl();
  479. // 登录拦截
  480. interceptor();
  481. } else {
  482. uni.navigateTo({
  483. url
  484. });
  485. }
  486. },
  487. close() {
  488. this.$refs.popuphx.close();
  489. this.code = '';
  490. },
  491. // 打开客服
  492. openKf() {
  493. this.$refs.popupkf.open();
  494. },
  495. // 关闭客服
  496. cancel() {
  497. this.$refs.popupkf.close();
  498. },
  499. // 打开绑定
  500. open() {
  501. this.$refs.gspass.open();
  502. },
  503. cast() {
  504. set_waiter({
  505. uid: this.id
  506. })
  507. .then(e => {
  508. this.$msg('绑定成功');
  509. this.$refs.gspass.close();
  510. this.id = '';
  511. })
  512. .catch(err => {
  513. this.$refs.gspass.close();
  514. this.id = '';
  515. });
  516. },
  517. cancelpass() {
  518. this.$refs.gspass.close();
  519. this.id = '';
  520. }
  521. }
  522. };
  523. </script>
  524. <style lang="scss">
  525. %flex-center {
  526. display: flex;
  527. flex-direction: column;
  528. justify-content: center;
  529. align-items: center;
  530. }
  531. %section {
  532. display: flex;
  533. justify-content: space-around;
  534. align-content: center;
  535. background: #fff;
  536. border-radius: 10rpx;
  537. }
  538. .container,
  539. page {
  540. min-height: 100%;
  541. height: auto;
  542. background-color: $page-color-base;
  543. }
  544. .vheigh {
  545. height: var(--status-bar-height);
  546. background-color: #ff8511;
  547. }
  548. .top-image {
  549. position: absolute;
  550. top: 0;
  551. left: 0;
  552. right: 0;
  553. height: 228rpx;
  554. image {
  555. width: 100%;
  556. height: 100%;
  557. }
  558. }
  559. .popup-box {
  560. width: 522rpx;
  561. height: 605rpx;
  562. background-color: #ffffff;
  563. border-radius: 20rpx;
  564. position: relative;
  565. .img {
  566. position: relative;
  567. top: -56rpx;
  568. left: 0;
  569. width: 522rpx;
  570. height: 132rpx;
  571. display: flex;
  572. justify-content: center;
  573. image {
  574. border-radius: 20rpx 20rpx 0 0;
  575. width: 450rpx;
  576. height: 132rpx;
  577. }
  578. }
  579. .mian {
  580. margin-top: -44rpx;
  581. display: flex;
  582. flex-direction: column;
  583. align-items: center;
  584. // padding: 32rpx 32rpx;
  585. background-color: #ffffff;
  586. border-radius: 0 0 20rpx 20rpx;
  587. text-align: center;
  588. .delivery {
  589. font-size: 40rpx;
  590. color: #333333;
  591. display: flex;
  592. align-items: center;
  593. flex-direction: column;
  594. image {
  595. margin-top: 48rpx;
  596. width: 172rpx;
  597. height: 160rpx;
  598. }
  599. }
  600. .nocancel {
  601. font-size: 32rpx;
  602. color: #333333;
  603. margin-top: 14rpx;
  604. }
  605. .comfirm-box {
  606. margin-top: 52rpx;
  607. display: flex;
  608. // margin-bottom: 32rpx;
  609. // justify-content: space-around;
  610. .cancel {
  611. display: flex;
  612. align-items: center;
  613. justify-content: center;
  614. width: 197rpx;
  615. height: 74rpx;
  616. border: 1px solid #dcc786;
  617. border-radius: 38rpx;
  618. font-size: 32rpx;
  619. color: #605128;
  620. }
  621. .comfirm {
  622. margin-left: 32rpx;
  623. display: flex;
  624. align-items: center;
  625. justify-content: center;
  626. width: 197rpx;
  627. height: 74rpx;
  628. background: linear-gradient(-90deg, #d1ba77 0%, #f7e8ad 100%);
  629. border-radius: 38px;
  630. font-size: 32rpx;
  631. color: #605128;
  632. }
  633. }
  634. }
  635. }
  636. .main-box {
  637. margin: 20rpx auto 0;
  638. width: 710rpx;
  639. background: #ffffff;
  640. box-shadow: 0px 4rpx 14rpx 0px rgba(229, 229, 229, 0.46);
  641. border-radius: 20rpx;
  642. .title {
  643. display: flex;
  644. justify-content: space-between;
  645. align-items: center;
  646. padding: 24rpx;
  647. border-bottom: 1px solid #eeeeee;
  648. .title-left {
  649. display: flex;
  650. align-items: center;
  651. .title-icon {
  652. width: 32rpx;
  653. height: 32rpx;
  654. }
  655. .title-font {
  656. margin-left: 20rpx;
  657. font-size: 30rpx;
  658. font-family: PingFang SC;
  659. font-weight: bold;
  660. }
  661. }
  662. .title-right {
  663. width: 14rpx;
  664. height: 24rpx;
  665. }
  666. }
  667. .main {
  668. padding: 50rpx 0 30rpx;
  669. .jg {
  670. width: 1px;
  671. height: 100rpx;
  672. background: #eeeeee;
  673. }
  674. .item {
  675. padding-bottom: 20rpx;
  676. width: 25%;
  677. display: flex;
  678. flex-direction: column;
  679. align-items: center;
  680. .item-num {
  681. font-size: 36rpx;
  682. font-family: PingFang SC;
  683. font-weight: bold;
  684. }
  685. .item-font {
  686. margin-top: 18rpx;
  687. font-size: 22rpx;
  688. font-family: PingFang SC;
  689. font-weight: 500;
  690. }
  691. }
  692. .oitem {
  693. width: 33%;
  694. display: flex;
  695. flex-direction: column;
  696. align-items: center;
  697. .oitem-image {
  698. height: 40rpx;
  699. width: 42rpx;
  700. }
  701. .oitem-font {
  702. margin-top: 20rpx;
  703. font-size: 24rpx;
  704. font-family: PingFang SC;
  705. font-weight: 500;
  706. }
  707. }
  708. }
  709. }
  710. .tool-list {
  711. width: 690rpx;
  712. margin: 20rpx auto 0;
  713. background: #ffffff;
  714. box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.06);
  715. border-radius: 20rpx;
  716. }
  717. .psw-wrapper {
  718. width: 548rpx;
  719. padding: 20rpx 0;
  720. background-color: #ffffff;
  721. border-radius: 15rpx 15rpx;
  722. .psw-title {
  723. width: 100%;
  724. font-size: 35rpx;
  725. padding: 0 0 40rpx;
  726. text-align: center;
  727. font-weight: 800;
  728. }
  729. .psw-content {
  730. width: 100%;
  731. font-size: 32rpx;
  732. text-align: center;
  733. }
  734. .psw-price {
  735. font-weight: bold;
  736. font-size: 68rpx;
  737. text-align: center;
  738. padding-top: 10rpx;
  739. }
  740. .psw-jg {
  741. height: 1px;
  742. width: 500rpx;
  743. background-color: #eee;
  744. margin: auto;
  745. }
  746. .psw-paytype {
  747. justify-content: space-between;
  748. padding: 10rpx 25rpx 30rpx;
  749. font-size: 26rpx;
  750. }
  751. .psw-ipt {
  752. display: block;
  753. background-color: #dce3ed;
  754. height: 90rpx;
  755. width: 464rpx;
  756. padding-left: 30rpx;
  757. margin: 0 auto;
  758. font-size: 80rpx;
  759. }
  760. .psw-btn text {
  761. display: inline-block;
  762. text-align: center;
  763. width: 50%;
  764. padding-top: 29rpx;
  765. font-size: 35rpx;
  766. }
  767. .psw-qd {
  768. color: #ff4c4c;
  769. }
  770. }
  771. .hx-wrapper {
  772. width: 536rpx;
  773. height: 630rpx;
  774. position: relative;
  775. // background-color: #fff;
  776. .hx-img {
  777. width: 536rpx;
  778. height: 281rpx;
  779. image {
  780. width: 536rpx;
  781. height: 281rpx;
  782. }
  783. }
  784. .hx-close {
  785. position: absolute;
  786. left: 243rpx;
  787. bottom: -80rpx;
  788. width: 52rpx;
  789. height: 52rpx;
  790. image {
  791. width: 52rpx;
  792. height: 52rpx;
  793. }
  794. }
  795. .hx-body {
  796. width: 536rpx;
  797. height: 349rpx;
  798. background-color: #fff;
  799. border-radius: 0 0 10rpx 10rpx;
  800. .hx-title {
  801. width: 536rpx;
  802. font-size: 36rpx;
  803. font-weight: 500;
  804. color: #333333;
  805. line-height: 1;
  806. padding-top: 42rpx;
  807. text-align: center;
  808. }
  809. input {
  810. width: 439rpx;
  811. height: 68rpx;
  812. background: #dbf3e9;
  813. border-radius: 10rpx;
  814. margin: 39rpx auto 0;
  815. padding-left: 26rpx;
  816. .hx-placeholder {
  817. font-size: 26rpx;
  818. font-weight: 500;
  819. color: #ff4c4c;
  820. }
  821. }
  822. .hx-btn {
  823. margin: 44rpx auto 0;
  824. width: 353rpx;
  825. height: 71rpx;
  826. background: $base-color;
  827. border-radius: 34rpx;
  828. font-size: 36rpx;
  829. font-weight: 500;
  830. color: #f8f9f9;
  831. line-height: 71rpx;
  832. text-align: center;
  833. }
  834. }
  835. }
  836. .user-list {
  837. width: 691rpx;
  838. height: 104rpx;
  839. background: #FFFFFF;
  840. box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.06);
  841. border-radius: 28rpx;
  842. margin: 20rpx auto;
  843. padding: 0 25rpx;
  844. .left-img {
  845. width: 40rpx;
  846. height: 40rpx;
  847. }
  848. view {
  849. padding-left: 20rpx;
  850. flex-grow: 1;
  851. font-size: 29rpx;
  852. font-weight: bold;
  853. }
  854. .right-img {
  855. width: 13rpx;
  856. height: 23rpx;
  857. }
  858. }
  859. .sqdl {
  860. display: block;
  861. width: 689rpx;
  862. margin: 20rpx auto 20rpx;
  863. }
  864. .user-money {
  865. width: 100%;
  866. margin-top: 50rpx;
  867. justify-content: center;
  868. .user-money-item {
  869. width: 50%;
  870. display: flex;
  871. flex-direction: column;
  872. justify-content: center;
  873. align-items: center;
  874. .user-money-num {
  875. font-size: 36rpx;
  876. font-weight: bold;
  877. }
  878. .user-money-font {
  879. margin-top: 20rpx;
  880. font-size: 24rpx;
  881. font-weight: 500;
  882. }
  883. }
  884. .user-xian {
  885. width: 1px;
  886. height: 77rpx;
  887. background: #eeeeee;
  888. }
  889. }
  890. .share-code {
  891. width: 450rpx;
  892. height: 450rpx;
  893. background-color: #fff;
  894. border-radius: 20rpx;
  895. flex-direction: column;
  896. justify-content: center;
  897. align-items: center;
  898. font-size: 28rpx;
  899. font-weight: bold;
  900. }
  901. $yw: 7000rpx;
  902. .square {
  903. width: 100%;
  904. height: 389rpx;
  905. position: relative;
  906. overflow: hidden;
  907. // background: #ccc;
  908. margin-bottom: 20rpx;
  909. .user {
  910. width: 100%;
  911. height: 120rpx;
  912. position: absolute;
  913. top: 96rpx;
  914. left: 0;
  915. padding: 0 26rpx;
  916. display: flex;
  917. align-items: center;
  918. }
  919. .info {
  920. padding: 10rpx 0;
  921. height: 100%;
  922. display: flex;
  923. flex-direction: column;
  924. margin-right: auto;
  925. }
  926. .user-name {
  927. font-weight: bold;
  928. font-size: 36rpx;
  929. color: #FFFFFF;
  930. margin-bottom: auto;
  931. }
  932. .user-id {
  933. font-weight: 500;
  934. font-size: 24rpx;
  935. color: #FFFFFF;
  936. }
  937. .avatar {
  938. width: 120rpx;
  939. height: 120rpx;
  940. border-radius: 50%;
  941. margin-right: 20rpx;
  942. }
  943. .hym {
  944. font-size: 24rpx;
  945. color: #fff;
  946. image {
  947. width: 40rpx;
  948. height: 40rpx;
  949. display: block;
  950. margin:0 auto 10rpx;
  951. }
  952. }
  953. }
  954. .square::before {
  955. content: '';
  956. width: $yw;
  957. height: $yw;
  958. border-radius: 50%;
  959. background-color: #ff8511;
  960. position: absolute;
  961. bottom: 0;
  962. left: calc(375rpx - $yw / 2);
  963. // background: inherit;
  964. }
  965. .hy-info {
  966. position: absolute;
  967. height: 133rpx;
  968. width: 714rpx;
  969. bottom: 0;
  970. right: 0;
  971. left: 0;
  972. margin: auto;
  973. // background-color: #fad4aa;
  974. .join {
  975. width: 714rpx;
  976. height: 91rpx;
  977. position: absolute;
  978. bottom: 0;
  979. image {
  980. width: 100%;
  981. height: 100%;
  982. position: relative;
  983. }
  984. .btn {
  985. width: 152rpx;
  986. height: 36rpx;
  987. background: #F2D18A;
  988. border-radius: 18rpx ;
  989. position: absolute;
  990. top: 22rpx;
  991. right: 14rpx;
  992. font-size: 24rpx;
  993. display: flex;
  994. justify-content: center;
  995. align-items: center;
  996. }
  997. .tit {
  998. position: absolute;
  999. bottom: 0;
  1000. height: 100%;
  1001. display: flex;
  1002. align-items: center;
  1003. font-size: 28rpx;
  1004. color: #F3D184;
  1005. .t1 {
  1006. font-size: 32rpx;
  1007. color: #F3D184;
  1008. line-height: 36rpx;
  1009. font-style: italic;
  1010. background: linear-gradient(71deg, #D4AE45 0%, #FFF2BF 100%);
  1011. -webkit-background-clip: text;
  1012. -webkit-text-fill-color: transparent;
  1013. margin-right: 20rpx;
  1014. padding-left: 44rpx;
  1015. }
  1016. }
  1017. }
  1018. }
  1019. </style>