user.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158
  1. <template>
  2. <view class="container">
  3. <view class="vheigh"></view>
  4. <view class="user-top">
  5. <image src="../../static/img/user-bg.png" mode="" class="user-top-bg"></image>
  6. <view class="user-info" @click="navTo('/pages/set/set')">
  7. <view class="avatar"><image class="avatarimg" :src="userInfo.avatar || '/static/error/missing-face.png'" mode=""></image><image v-if="sm != 0" class="real" src="../../static/img/real.png" mode=""></image></view>
  8. <view class="name">{{ userInfo.nickname || '游客' }}</view>
  9. <view class="phone flex" v-if="userInfo.uid">
  10. <view class="phone-font">
  11. ID号:{{ userInfo.uid }}
  12. </view>
  13. <!-- <view class="green" v-if="sm != 0">
  14. <image class="green-bg" src="../../static/img/real.png" mode=""></image>
  15. </view> -->
  16. </view>
  17. <view class="vip" v-if="userInfo.level_name">
  18. <image class="vip-bg" src="../../static/img/vip.png" mode=""></image>
  19. <view class="vip-title">{{userInfo.level_name}}</view>
  20. </view>
  21. </view>
  22. <view class="sy-box flex">
  23. <view class="sy-item" @click="navTo('/pages/user/mygs')">
  24. <view class="sy-item-val">
  25. {{ userInfo.profit > 0? userInfo.profit : '0'}}
  26. </view>
  27. <view class="sy-item-name">
  28. 收益
  29. </view>
  30. </view>
  31. <view class="jg"></view>
  32. <!-- <view class="sy-item" @click="navTo('/pages/user/myyue')">
  33. <view class="sy-item-val">
  34. {{userInfo.now_money || '0.00'}}
  35. </view>
  36. <view class="sy-item-name">
  37. 我的余额
  38. </view>
  39. </view> -->
  40. <view class="jg"></view>
  41. <view class="sy-item" @click="navTo('/pages/money/qudou')">
  42. <view class="sy-item-val">
  43. {{userInfo.integral || '0.00'}}
  44. </view>
  45. <view class="sy-item-name">
  46. 趣豆
  47. </view>
  48. </view>
  49. <view class="jg"></view>
  50. <view class="sy-item" @click="navTo('/pages/user/myAppointment')">
  51. <view class="sy-item-val">
  52. {{userInfo.anticipate || '0.00'}}
  53. </view>
  54. <view class="sy-item-name">
  55. 广告值
  56. </view>
  57. </view>
  58. <view class="jg"></view>
  59. <view class="sy-item" @click="navTo('/pages/money/jinDou')">
  60. <view class="sy-item-val">
  61. {{userInfo.golden_bean || '0.00'}}
  62. </view>
  63. <view class="sy-item-name">
  64. 金豆
  65. </view>
  66. </view>
  67. </view>
  68. </view>
  69. <view class="qd-box flex">
  70. <image src="../../static/icon/uqd.png" mode=""></image>
  71. <view class="qd-info">
  72. <view class="" style="font-weight: bold;color: #0C1732;">签到领取积分</view>
  73. <view class="">已连续签到{{actionDay}}天</view>
  74. <view class="">签到奖励{{sum_integral}}趣豆</view>
  75. </view>
  76. <view class="qd-btn" :class="{'qded': qded}" @click="qded?'':goQd()">
  77. {{qded?'已签到': '立即签到'}}
  78. </view>
  79. </view>
  80. <view class="tool-box flex">
  81. <view class="tool-item flex" v-for="itemt in toolList" :key="itemt.id" @click="useTool(itemt)">
  82. <view class="tool-item-img">
  83. <image :src="itemt.img" mode="widthFix" :style="{'width':itemt.width,'height': itemt.height}"
  84. class="tool-logo"></image>
  85. </view>
  86. <view class="tool-item-name">
  87. {{itemt.name}}
  88. </view>
  89. </view>
  90. </view>
  91. <uni-list class="tool-list">
  92. <uni-list-item title="收款信息" @click="navTo('/pages/collection/collection')" thumb="/static/icon/skxx.png">
  93. </uni-list-item>
  94. <uni-list-item title="实名认证" @click="navTo('/pages/user/approve')" thumb="/static/icon/bdsj.png">
  95. </uni-list-item>
  96. <uni-list-item title="收货地址" @click="navTo('/pages/set/address')" thumb="/static/icon/shdz.png">
  97. </uni-list-item>
  98. <uni-list-item title="客服" @click="openKf()" thumb="/static/icon/kf.png">
  99. </uni-list-item>
  100. <uni-list-item title="设置" @click="navTo('/pages/set/set')" thumb="/static/icon/uset.png">
  101. </uni-list-item>
  102. <!-- <uni-list-item title="关于我们" @click="navTo('/pages/shareQrCode/index')" thumb="/static/icon/img09.png"> -->
  103. </uni-list-item>
  104. </uni-list>
  105. <view class="bottom" @click="navGeTo('https://beian.miit.gov.cn/')">
  106. 浙ICP备2021003764号-1
  107. </view>
  108. <uni-popup ref="popupkf" type="center">
  109. <view class="popup-box">
  110. <view class="img">
  111. <image src="../../static/img/img009.png" mode=""></image>
  112. </view>
  113. <view class="mian">
  114. <view class="delivery">
  115. <view class="title">已经为您定制专属客服</view>
  116. <image src="../../static/img/img010.png" mode=""></image>
  117. </view>
  118. <view class="nocancel">客服VX:{{ text }}</view>
  119. <view class="comfirm-box">
  120. <view class="cancel" @click="cancel">取消</view>
  121. <view class="comfirm" @click="comfirm(text)">复制微信</view>
  122. </view>
  123. </view>
  124. </view>
  125. </uni-popup>
  126. <uni-popup ref="popupqd" type="center">
  127. <view class="popup">
  128. <view class="popup-dox">
  129. <image class="popup-logo" src="../../static/img/sign-popup.png"></image>
  130. </view>
  131. <view class="popup-title">
  132. 获得
  133. <text>{{ today_integral }}</text>
  134. 趣豆
  135. </view>
  136. <view class="popup-btn" @click="closeQd">知道了</view>
  137. </view>
  138. <!-- <view class="close_icon" @click="close">
  139. <image src="../../static/img/Close.png"></image>
  140. </view> -->
  141. </uni-popup>
  142. <u-tabbar activeColor="#f42b4e" v-model="current" :list="tabbar" ></u-tabbar>
  143. </view>
  144. </template>
  145. <script>
  146. import { tabbar1 } from '@/utils/tabbar.js';
  147. import {
  148. mapState,
  149. mapMutations
  150. } from 'vuex';
  151. import uniList from '@/components/uni-list/uni-list.vue';
  152. import uniListItem from '@/components/uni-list-item/uni-list-item.vue';
  153. import uniCopy from '@/components/js_sdk/xb-copy/uni-copy.js';
  154. import {
  155. orderData,
  156. getUserInfo,
  157. rate,
  158. apply_status
  159. } from '@/api/user.js';
  160. import { signList, integral,signUser } from '@/api/functionalUnit.js';
  161. import {
  162. saveUrl,
  163. interceptor
  164. } from '@/utils/loginUtils.js';
  165. let startY = 0,
  166. moveY = 0,
  167. pageAtTop = true;
  168. export default {
  169. components: {
  170. uniList,
  171. uniListItem
  172. },
  173. data() {
  174. return {
  175. sm: 0,//是否已实名认证
  176. money: '', //保存当前月份
  177. year: '', //保存当前年份
  178. day: '', //保存当前日期
  179. current: 4,
  180. tabbar: tabbar1,
  181. qded: false, //是否已签到
  182. text:'',//客服微信
  183. actionDay:0,//连续签到天数
  184. sum_integral:0,//累计获得积分
  185. today_integral:'',//签到获得的数值
  186. tom_integral: '',//明天签到获得的数值
  187. tom_type: '',//签到获得的数值单位
  188. userDowm: 0, //卡片升级专属高度
  189. userMaxDowm: 0, //卡片最高高度
  190. toolList: [
  191. // {
  192. // id: 't1',
  193. // name: '新人通道',
  194. // width: '56rpx',
  195. // heigt: '54rpx',
  196. // img: '../../static/icon/tool-1.png',
  197. // path: '/pages/user/xrtd'
  198. // },
  199. {
  200. id: 't2',
  201. name: '邀请好友',
  202. width: '56rpx',
  203. heigt: '57rpx',
  204. img: '../../static/icon/tool-2.png',
  205. path: '/pages/user/shareQrCode'
  206. },
  207. {
  208. id: 't3',
  209. name: '我的粉丝',
  210. width: '68rpx',
  211. heigt: '53rpx',
  212. img: '../../static/icon/tool-3.png',
  213. path: '/pages/user/myfans'
  214. },
  215. {
  216. id: 't4',
  217. name: '我的订单',
  218. width: '55rpx',
  219. heigt: '54rpx',
  220. img: '../../static/icon/tool-4.png',
  221. path: '/pages/order/index'
  222. },
  223. {
  224. id: 't5',
  225. name: '我的商品',
  226. width: '50rpx',
  227. heigt: '58rpx',
  228. img: '../../static/icon/tool-5.png',
  229. path: '/pages/user/myproduct'
  230. },
  231. {
  232. id: 't6',
  233. name: '馆长申请',
  234. width: '59rpx',
  235. heigt: '56rpx',
  236. img: '../../static/icon/tool-6.png',
  237. path: '/pages/user/gzsq'
  238. },
  239. // {
  240. // id: 't7',
  241. // name: '金豆',
  242. // width: '59rpx',
  243. // heigt: '56rpx',
  244. // img: '../../static/img/jindou-tit.png',
  245. // path: '/pages/money/jinDou'
  246. // },
  247. {
  248. id: 't8',
  249. name: '购物券',
  250. width: '59rpx',
  251. heigt: '56rpx',
  252. img: '../../static/img/gouwu-tit.png',
  253. path: '/pages/money/gouwu'
  254. }
  255. ]
  256. };
  257. },
  258. onShow() {
  259. // 判断是否已经登录
  260. if (this.hasLogin) {
  261. this.loadBaseData();
  262. this.signUser();
  263. this.loadList();
  264. this.getData();
  265. this.isSm();
  266. }
  267. },
  268. onReady() {
  269. // 初始化获取页面宽度
  270. uni.createSelectorQuery()
  271. .select('.container')
  272. .fields({
  273. size: true
  274. },
  275. data => {
  276. // 计算最多下拉的高度
  277. this.userDowm = Math.floor((data.width / 750) * 185);
  278. // 计算最大触发修改高度事件
  279. this.userMaxDowm = Math.floor((data.width / 750) * 250);
  280. }
  281. )
  282. .exec();
  283. },
  284. computed: {
  285. ...mapState('user', ['userInfo', 'orderInfo', 'hasLogin'])
  286. },
  287. methods: {
  288. ...mapMutations('user', ['setUserInfo', 'setOrderInfo']),
  289. getData(current) {
  290. const date = current ? new Date(current) : new Date();
  291. this.year = date.getFullYear();//保存当前年份
  292. this.month = date.getMonth() + 1;//保存当前月份
  293. this.day = date.getDate();//保存当前日期
  294. },
  295. isSm() {
  296. rate({}).then(e =>{
  297. if(e.data.is_auth == 2){
  298. this.sm = 1
  299. }
  300. })
  301. },
  302. comfirm(text) {
  303. let obj = this;
  304. let content = text; //需要复制的内容
  305. console.log('复制的内容:', content);
  306. // content = typeof content === 'string' ? content : content.toString(); // 复制内容,必须字符串,数字需要转换为字符串
  307. const result = uniCopy(content);
  308. if (result === false) {
  309. uni.showToast({
  310. title: '不支持'
  311. });
  312. } else {
  313. uni.showToast({
  314. title: '复制成功',
  315. icon: 'none'
  316. });
  317. }
  318. },
  319. // 获取签到列表
  320. loadList() {
  321. let obj = this;
  322. let present = this.day; //保存当前天数用于后续计算
  323. let actionDay = 0; //用于计算活跃天数
  324. let arr = []; //保存返回数组;
  325. signList({
  326. page: 1,
  327. limit: 31
  328. }).then(e => {
  329. arr = e.data.map((e, ind) => {
  330. let time = e.add_time.split('-');
  331. let day = parseInt(time[2].replace(/^0/i, ''));
  332. let year = time[0];
  333. let month = +time[1];
  334. if (obj.year == year && obj.month == month) {
  335. return day;
  336. }
  337. });
  338. // 判断今天是否已经签到
  339. if(arr[0]==this.day){
  340. this.qded = true;
  341. }
  342. });
  343. },
  344. //获取签到用户信息
  345. signUser(){
  346. signUser({all:1}).then(({data}) => {
  347. this.actionDay = data.sign_num;//连续签到天数
  348. // this.sum_integral = data.sum_integral;//累计总积分
  349. })
  350. },
  351. navGeTo(url){
  352. },
  353. // 加载初始数据
  354. loadBaseData() {
  355. getUserInfo({})
  356. .then(({
  357. data
  358. }) => {
  359. this.setUserInfo(data);
  360. // 获取用户数据完毕后在获取订单数据防止多次跳转到登录页
  361. orderData({})
  362. .then(({
  363. data
  364. }) => {
  365. this.setOrderInfo(data);
  366. })
  367. .catch(e => {
  368. this.setOrderInfo({
  369. complete_count: 0, //完成
  370. received_count: 0, //待收货
  371. unshipped_count: 0, //待发货
  372. order_count: 0, //订单总数
  373. unpaid_count: 0 //待付款
  374. });
  375. });
  376. })
  377. .catch(e => {
  378. console.log(e);
  379. });
  380. },
  381. /**
  382. * 统一跳转接口,拦截未登录路由
  383. * navigator标签现在默认没有转场动画,所以用view
  384. */
  385. navTo(url) {
  386. const obj = this
  387. if (!this.hasLogin) {
  388. // 保存地址
  389. saveUrl();
  390. // 登录拦截
  391. interceptor();
  392. } else {
  393. if(url == '/pages/user/approve'){
  394. rate({}).then(e =>{
  395. console.log(e);
  396. if(e.data.is_auth == null){
  397. uni.navigateTo({
  398. url
  399. });
  400. }
  401. if(e.data.is_auth == 0){
  402. uni.navigateTo({
  403. url
  404. });
  405. }
  406. if(e.data.is_auth == 1){
  407. this.$api.msg('正在审核中请耐心等待')
  408. }
  409. if(e.data.is_auth == 2){
  410. this.$api.msg('已通过实名认证,无需再实名认证')
  411. }
  412. if(e.data.is_auth == 3) {
  413. uni.showModal({
  414. title: '提示',
  415. content:'申请失败,原因'+ e.data.off +'是否重新申请',
  416. success: function (res) {
  417. if (res.confirm) {
  418. uni.navigateTo({
  419. url
  420. });
  421. } else if (res.cancel) {
  422. console.log('用户点击取消');
  423. }
  424. }
  425. })
  426. }
  427. }).catch(e =>{
  428. return
  429. })
  430. } else if (url == '/pages/user/gzsq'){
  431. apply_status({}).then(e =>{
  432. if(e.data.status != 0){
  433. if(e.data.status == 3){
  434. uni.showModal({
  435. title: '提示',
  436. content:'申请失败是否重新申请',
  437. success: function (res) {
  438. if (res.confirm) {
  439. uni.navigateTo({
  440. url
  441. });
  442. } else if (res.cancel) {
  443. console.log('用户点击取消');
  444. }
  445. }
  446. })
  447. }else{
  448. obj.$api.msg(e.data.str)
  449. }
  450. } else {
  451. uni.navigateTo({
  452. url
  453. });
  454. }
  455. }).catch(e =>{
  456. })
  457. }else {
  458. uni.navigateTo({
  459. url,
  460. fail() {
  461. uni.switchTab({
  462. url
  463. })
  464. }
  465. });
  466. }
  467. }
  468. },
  469. useTool(e) {
  470. this.navTo(e.path)
  471. },
  472. // 签到弹窗
  473. goQd() {
  474. integral({})
  475. .then(e => {
  476. this.integral =
  477. console.log(e,'eeee');
  478. // 改为已签到
  479. this.qded = true
  480. this.today_integral = e.data.integral
  481. this.actionDay++;
  482. this.sum_integral =e.data.integral
  483. this.$refs.popupqd.open()
  484. })
  485. .catch(e => {
  486. console.log(e);
  487. });
  488. },
  489. // 关闭签到弹窗
  490. closeQd() {
  491. this.$refs.popupqd.close()
  492. },
  493. // 打开客服
  494. openKf() {
  495. this.$refs.popupkf.open()
  496. },
  497. // 关闭客服
  498. cancel() {
  499. this.$refs.popupkf.close()
  500. },
  501. }
  502. };
  503. </script>
  504. <style lang="scss">
  505. %flex-center {
  506. display: flex;
  507. flex-direction: column;
  508. justify-content: center;
  509. align-items: center;
  510. }
  511. %section {
  512. display: flex;
  513. justify-content: space-around;
  514. align-content: center;
  515. background: #fff;
  516. border-radius: 10rpx;
  517. }
  518. .container,page {
  519. min-height: 100%;
  520. height: auto;
  521. background-color: #fff;
  522. }
  523. .vheigh {
  524. height: var(--status-bar-height);
  525. background-color: #fff;
  526. }
  527. .user-section {
  528. height: 435rpx;
  529. padding: 15rpx 30rpx 0;
  530. position: relative;
  531. .bg {
  532. position: absolute;
  533. left: 0;
  534. top: 0;
  535. width: 100%;
  536. height: 100%;
  537. background-color: $base-color;
  538. }
  539. }
  540. .user-info-box {
  541. height: 180rpx;
  542. color: white;
  543. display: flex;
  544. align-items: center;
  545. justify-content: space-between;
  546. position: relative;
  547. z-index: 1;
  548. .detail {
  549. height: 130rpx;
  550. .portrait-box {
  551. height: 100%;
  552. .portrait {
  553. width: 130rpx;
  554. height: 100%;
  555. border: 5rpx solid #fff;
  556. border-radius: 50%;
  557. }
  558. }
  559. .info-box {
  560. margin-left: 20rpx;
  561. line-height: 1.5;
  562. .username {
  563. font-size: $font-lg + 6rpx;
  564. height: 100%;
  565. }
  566. }
  567. }
  568. .config {
  569. font-size: 48rpx;
  570. height: 130rpx;
  571. .setting {
  572. margin-right: 51rpx;
  573. }
  574. }
  575. }
  576. .vip-card-box {
  577. display: flex;
  578. flex-direction: column;
  579. color: #f7d680;
  580. height: 240rpx;
  581. background: linear-gradient(left, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.8));
  582. border-radius: 16rpx 16rpx 0 0;
  583. overflow: hidden;
  584. position: relative;
  585. padding: 20rpx 24rpx;
  586. .card-bg {
  587. position: absolute;
  588. top: 20rpx;
  589. right: 0;
  590. width: 380rpx;
  591. height: 260rpx;
  592. }
  593. .b-btn {
  594. position: absolute;
  595. right: 20rpx;
  596. top: 16rpx;
  597. width: 132rpx;
  598. height: 40rpx;
  599. text-align: center;
  600. line-height: 40rpx;
  601. font-size: 22rpx;
  602. color: #36343c;
  603. border-radius: 20px;
  604. background: linear-gradient(left, #f9e6af, #ffd465);
  605. z-index: 1;
  606. }
  607. .tit {
  608. font-size: $font-base + 2rpx;
  609. color: #f7d680;
  610. margin-bottom: 28rpx;
  611. .iconfont {
  612. color: #f6e5a3;
  613. margin-right: 16rpx;
  614. }
  615. }
  616. .e-b {
  617. font-size: $font-sm;
  618. color: #d8cba9;
  619. margin-top: 10rpx;
  620. }
  621. }
  622. .cover-container {
  623. background: $page-color-base;
  624. margin-top: -150rpx;
  625. padding: 0 30rpx;
  626. position: relative;
  627. background: #f5f5f5;
  628. padding-bottom: 20rpx;
  629. .arc {
  630. position: absolute;
  631. left: 0;
  632. top: -34rpx;
  633. width: 100%;
  634. height: 36rpx;
  635. }
  636. }
  637. .tj-sction {
  638. @extend %section;
  639. .tj-item {
  640. @extend %flex-center;
  641. flex-direction: column;
  642. height: 140rpx;
  643. font-size: $font-sm;
  644. color: #75787d;
  645. }
  646. .num {
  647. font-size: $font-lg;
  648. color: $font-color-dark;
  649. margin-bottom: 8rpx;
  650. }
  651. }
  652. .item-box {
  653. border-radius: 10rpx;
  654. background-color: white;
  655. margin-top: 20rpx;
  656. .box-title {
  657. line-height: 1;
  658. padding: 30rpx;
  659. .title {
  660. font-size: $font-lg;
  661. font-weight: bold;
  662. }
  663. .link {
  664. font-size: $font-base - 2rpx;
  665. color: $font-color-light;
  666. }
  667. }
  668. .order-section {
  669. @extend %section;
  670. padding: 28rpx 0;
  671. .order-item {
  672. @extend %flex-center;
  673. width: 120rpx;
  674. height: 120rpx;
  675. border-radius: 10rpx;
  676. font-size: $font-sm;
  677. color: $font-color-dark;
  678. }
  679. .iconfont {
  680. font-size: 48rpx;
  681. margin-bottom: 18rpx;
  682. color: #fa436a;
  683. }
  684. .icon-shouhoutuikuan {
  685. font-size: 44rpx;
  686. }
  687. .icon {
  688. height: 50rpx;
  689. width: 48rpx;
  690. margin-bottom: 18rpx;
  691. background-size: 100%;
  692. background-repeat: no-repeat;
  693. background-position: center;
  694. .icon-img {
  695. width: 100%;
  696. height: 100%;
  697. }
  698. }
  699. }
  700. }
  701. .history-section {
  702. // padding: 30rpx 0 0;
  703. margin-top: 20rpx;
  704. background: #fff;
  705. border-radius: 10rpx;
  706. .sec-header {
  707. display: flex;
  708. align-items: center;
  709. font-size: $font-base;
  710. color: $font-color-dark;
  711. line-height: 40rpx;
  712. margin-left: 30rpx;
  713. padding-top: 30rpx;
  714. .iconfont {
  715. font-size: 44rpx;
  716. color: $color-red;
  717. margin-right: 16rpx;
  718. line-height: 40rpx;
  719. }
  720. }
  721. .h-list {
  722. white-space: nowrap;
  723. padding: 30rpx 30rpx 0;
  724. .h-list-image {
  725. display: inline-block;
  726. width: 160rpx;
  727. height: 160rpx;
  728. margin-right: 20rpx;
  729. border-radius: 10rpx;
  730. }
  731. }
  732. }
  733. .user-top {
  734. height: 660rpx;
  735. position: relative;
  736. .user-top-bg {
  737. width: 750rpx;
  738. height: 660rpx;
  739. // width: 100%;
  740. // position: absolute;
  741. }
  742. .user-info {
  743. width: 750rpx;
  744. position: absolute;
  745. top: 66rpx;
  746. display: flex;
  747. flex-direction: column;
  748. justify-content: center;
  749. align-items: center;
  750. .avatar {
  751. position: relative;
  752. width: 134rpx;
  753. height: 134rpx;
  754. border-radius: 50%;
  755. .avatarimg {
  756. border-radius: 50%;
  757. width: 134rpx;
  758. height: 134rpx;
  759. }
  760. .real {
  761. position: absolute;
  762. bottom: 0;
  763. left: 10rpx;
  764. width: 120rpx;
  765. height: 34rpx;
  766. }
  767. }
  768. .name {
  769. margin-top: 20rpx;
  770. font-size: 32rpx;
  771. font-family: PingFang SC;
  772. font-weight: bold;
  773. color: #FFFFFF;
  774. }
  775. .phone {
  776. justify-content: start;
  777. margin-top: 13rpx;
  778. font-size: 30rpx;
  779. font-family: PingFang SC;
  780. font-weight: 500;
  781. color: #FFFFFF;
  782. .green{
  783. margin-left: 12rpx;
  784. position: relative;
  785. width: 100rpx;
  786. height: 40rpx;
  787. .green-bg {
  788. position: absolute;
  789. top: 0;
  790. left: 0;
  791. right: 0;
  792. width: 100%;
  793. height: 100%;
  794. }
  795. .green-title {
  796. line-height: 30rpx;
  797. text-align: center;
  798. position: relative;
  799. z-index: 10;
  800. font-size: 20rpx;
  801. font-family: PingFang SC;
  802. font-weight: 500;
  803. // color: #93794b;
  804. color: #fff;
  805. }
  806. }
  807. }
  808. .vip {
  809. margin-top: 20rpx;
  810. position: relative;
  811. width: 120rpx;
  812. height: 40rpx;
  813. .vip-bg {
  814. position: absolute;
  815. top: 0;
  816. left: 0;
  817. right: 0;
  818. width: 100%;
  819. height: 100%;
  820. }
  821. .vip-title {
  822. width: 120rpx;
  823. line-height: 40rpx;
  824. text-align: center;
  825. position: relative;
  826. z-index: 10;
  827. font-size: 20rpx;
  828. font-family: PingFang SC;
  829. font-weight: 500;
  830. color: #93794b;
  831. }
  832. }
  833. }
  834. .sy-box {
  835. position: absolute;
  836. bottom: 105rpx;
  837. height: 148rpx;
  838. width: 750rpx;
  839. // background-color: #bfa;
  840. .sy-item {
  841. flex-grow: 1;
  842. text-align: center;
  843. font-size: 28rpx;
  844. font-family: PingFang SC;
  845. font-weight: 500;
  846. color: #FFFFFF;
  847. .sy-item-val {
  848. }
  849. }
  850. .jg {
  851. width: 2rpx;
  852. height: 68rpx;
  853. background-color: #fff;
  854. }
  855. }
  856. }
  857. .qd-box {
  858. width: 690rpx;
  859. height: 210rpx;
  860. background: #FFFFFF;
  861. box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.06);
  862. border-radius: 20rpx;
  863. margin: -105rpx auto 30rpx;
  864. position: relative;
  865. padding: 0 40rpx;
  866. font-size: 26rpx;
  867. font-family: PingFang SC;
  868. font-weight: 500;
  869. color: #666666;
  870. image {
  871. flex-shrink: 0;
  872. width: 65rpx;
  873. height: 68rpx;
  874. }
  875. .qd-info {
  876. flex-grow: 1;
  877. padding-left: 24rpx;
  878. line-height: 46rpx;
  879. }
  880. .qd-btn {
  881. width: 190rpx;
  882. height: 80rpx;
  883. line-height: 80rpx;
  884. border-radius: 20px;
  885. background: #DC262B;
  886. border-radius: 20rpx;
  887. text-align: center;
  888. font-size: 32rpx;
  889. font-family: PingFang SC;
  890. font-weight: 500;
  891. color: #FFFFFF;
  892. }
  893. .qded {
  894. background: #E8E8E8;
  895. color: #999999;
  896. }
  897. }
  898. .tool-box {
  899. padding: 60rpx 0 0;
  900. width: 690rpx;
  901. background: #FFFFFF;
  902. box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.06);
  903. border-radius: 20rpx;
  904. margin: 30rpx auto;
  905. flex-wrap: wrap;
  906. justify-content: flex-start;
  907. align-content: space-around;
  908. .tool-item {
  909. width: 25%;
  910. height: 120rpx;
  911. flex-shrink: 0;
  912. margin-bottom: 60rpx;
  913. flex-direction: column;
  914. align-content: space-between;
  915. justify-content: center;
  916. font-size: 28rpx;
  917. font-family: PingFang SC;
  918. font-weight: 500;
  919. color: #0C1732;
  920. .tool-item-img {
  921. width: 68rpx;
  922. height: 90rpx;
  923. position: relative;
  924. flex-shrink: 0;
  925. .tool-logo {
  926. position: absolute;
  927. width: 56rpx;
  928. height: 56rpx;
  929. top: 0;
  930. left: 0;
  931. bottom: 0;
  932. right: 0;
  933. margin: auto;
  934. }
  935. }
  936. .tool-item-name {
  937. display: inline-block;
  938. }
  939. }
  940. }
  941. .tool-list {
  942. width: 690rpx;
  943. margin: auto;
  944. background: #FFFFFF;
  945. box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.06);
  946. border-radius: 20rpx;
  947. }
  948. .bottom{
  949. margin: 50rpx auto;
  950. text-align: center;
  951. color: #999999;
  952. }
  953. .popup-box {
  954. width: 522rpx;
  955. height: 605rpx;
  956. background-color: #ffffff;
  957. border-radius: 20rpx;
  958. position: relative;
  959. .img {
  960. position: relative;
  961. top: -56rpx;
  962. left: 0;
  963. width: 522rpx;
  964. height: 132rpx;
  965. display: flex;
  966. justify-content: center;
  967. image {
  968. border-radius: 20rpx 20rpx 0 0;
  969. width: 450rpx;
  970. height: 132rpx;
  971. }
  972. }
  973. .mian {
  974. margin-top: -44rpx;
  975. display: flex;
  976. flex-direction: column;
  977. align-items: center;
  978. // padding: 32rpx 32rpx;
  979. background-color: #ffffff;
  980. border-radius: 0 0 20rpx 20rpx;
  981. text-align: center;
  982. .delivery {
  983. font-size: 40rpx;
  984. color: #333333;
  985. display: flex;
  986. align-items: center;
  987. flex-direction: column;
  988. .title {}
  989. image {
  990. margin-top: 48rpx;
  991. width: 172rpx;
  992. height: 160rpx;
  993. }
  994. }
  995. .nocancel {
  996. font-size: 32rpx;
  997. color: #333333;
  998. margin-top: 14rpx;
  999. }
  1000. .comfirm-box {
  1001. margin-top: 52rpx;
  1002. display: flex;
  1003. // margin-bottom: 32rpx;
  1004. // justify-content: space-around;
  1005. .cancel {
  1006. display: flex;
  1007. align-items: center;
  1008. justify-content: center;
  1009. width: 197rpx;
  1010. height: 74rpx;
  1011. border: 1px solid #dcc786;
  1012. border-radius: 38rpx;
  1013. font-size: 32rpx;
  1014. color: #605128;
  1015. }
  1016. .comfirm {
  1017. margin-left: 32rpx;
  1018. display: flex;
  1019. align-items: center;
  1020. justify-content: center;
  1021. width: 197rpx;
  1022. height: 74rpx;
  1023. background: linear-gradient(-90deg, #d1ba77 0%, #f7e8ad 100%);
  1024. border-radius: 38px;
  1025. font-size: 32rpx;
  1026. color: #605128;
  1027. }
  1028. }
  1029. }
  1030. }
  1031. .popup {
  1032. width: 560rpx;
  1033. padding-bottom: 45rpx;
  1034. background-color: #ffffff;
  1035. border-radius: 15rpx;
  1036. text-align: center;
  1037. line-height: 1;
  1038. .popup-dox {
  1039. position: relative;
  1040. .popup-logo {
  1041. margin: -160rpx auto 0;
  1042. width: 400rpx;
  1043. height: 200rpx;
  1044. }
  1045. }
  1046. .popup-title {
  1047. margin-top: 85rpx;
  1048. font-size: 40rpx;
  1049. font-family: PingFang SC;
  1050. font-weight: bold;
  1051. color: #2a2a2a;
  1052. text {
  1053. font-size: 56rpx;
  1054. color: #e83f30;
  1055. }
  1056. }
  1057. .popup-tip {
  1058. margin-top: 20rpx;
  1059. font-size: 28rpx;
  1060. font-family: PingFang SC;
  1061. font-weight: 500;
  1062. color: #8c8c8c;
  1063. text {
  1064. color: #e83f30;
  1065. }
  1066. }
  1067. .popup-btn {
  1068. margin: 58rpx auto 0;
  1069. width: 270rpx;
  1070. height: 66rpx;
  1071. background: #f0c838;
  1072. border-radius: 34rpx;
  1073. text-align: center;
  1074. line-height: 66rpx;
  1075. font-size: 36rpx;
  1076. font-family: Source Han Sans CN;
  1077. font-weight: 500;
  1078. color: #ffffff;
  1079. }
  1080. }
  1081. </style>