index.vue 29 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186
  1. <template>
  2. <view class="app-page">
  3. <view class="top-bar-view">
  4. <view class="top-bg" :style="{background: bgImg ? null : 'linear-gradient(138deg, #ffecaf 0%, #fbf5e3 59%, #f5f6f8 100%)',
  5. opacity: '0.8'}">
  6. <image v-if="bgImg" style="width: 100%;display: block;" mode="widthFix" :src="bgImg"></image>
  7. </view>
  8. <view class="top-box">
  9. <view class="top-bar" :style="
  10. 'height:' +
  11. topData.height +
  12. 'px;' +
  13. 'padding-top:' +
  14. topData.top +
  15. 'px;padding-bottom:20rpx'
  16. ">
  17. </view>
  18. <view class="display-flex-between">
  19. <view class="login-box" @click="checkShowUserRegister()">
  20. <view class="avatar-wrap">
  21. <u--image width="126rpx" height="126rpx" radius="100%" shape="circle" bgColor="#d3c6b5"
  22. customStyle="border-radius:100%;" :src="
  23. avatarUrl != defaultAvatarUrl
  24. ? avatarUrl
  25. : `/static/defaultAvatar.png`
  26. " :fade="true" duration="450"></u--image>
  27. </view>
  28. <view class="user-info-wrap">
  29. <view class="userName-wrap">
  30. <text class="userName display-flex-content-center">{{
  31. userName ? userName : "登录/注册"
  32. }}
  33. </text>
  34. <u-icon
  35. name="edit-pen"
  36. size="20"
  37. ></u-icon>
  38. </view>
  39. <view class="vip-tag"
  40. :style="{background: `url(${user_grade_bg}) no-repeat center left`,marginTop:'8rpx',width:'96rpx',height:'32rpx', backgroundSize: '96rpx 32rpx',}">
  41. <!-- <view class="vip-text">{{userInfo.vip_name}}</view>-->
  42. </view>
  43. <text class="user-phone">{{ userInfo.phone }}</text>
  44. </view>
  45. </view>
  46. <view class="login-box pdt0">
  47. <view @click="JumpSetting()">
  48. <view class="mb5 display-flex-end">
  49. <u-icon
  50. name="setting"
  51. size="26"
  52. ></u-icon>
  53. </view>
  54. <view class="info-list" style="color: #999"
  55. v-if="userInfo.pid &&userInfo.agent && userInfo.agent.username ">
  56. <text>推荐人:{{ userInfo.agent.username }}</text>
  57. </view>
  58. <view class="info-list">
  59. <text>积分:
  60. <text class="info-list-rebate_total">{{ userInfo.integral_total - userInfo.integral_used }}</text>
  61. </text>
  62. </view>
  63. <view class="info-list">
  64. <text>余额:
  65. <text class="info-list-rebate_total">{{ userInfo.rebate_total - userInfo.rebate_used }}</text>
  66. </text>
  67. </view>
  68. </view>
  69. </view>
  70. </view>
  71. <view class="jion-vip-wrap" @click="checkShowUserRegister()"
  72. :style="{backgroundImage: `url(${jion_vip_bg})`}">
  73. <view class="title">
  74. 开通服务专享产品权益
  75. </view>
  76. <view class="title">
  77. 开通会员
  78. </view>
  79. </view>
  80. <view class="orders-info-card">
  81. <view class="orders-card">
  82. <view class="card-title">
  83. <text>商城订单</text>
  84. <view class="right" @click="toOrderList(0)">查看全部订单
  85. <view class="ml5">
  86. <u-icon name="arrow-right" size="13"
  87. color="#858585"></u-icon>
  88. </view>
  89. </view>
  90. </view>
  91. <u-line color="#F4F4F4"></u-line>
  92. <view class="menu-box">
  93. <view class="menu-item" @click="toOrderList(item.index)" v-for="(item, index) in shopList">
  94. <view style="position: relative;">
  95. <image :src="item.url" mode="heightFix"></image>
  96. <u-badge :absolute="true" :offset="[-5,-10]" :value="orderNumber[item.numKey]">
  97. </u-badge>
  98. </view>
  99. <text>{{ item.name }}</text>
  100. </view>
  101. </view>
  102. </view>
  103. </view>
  104. <view class="member-other-card">
  105. <view v-for="(item, index) in otherList" :key="index"
  106. @click="goToPath(item)">
  107. <u-line color="#E8E8E8"></u-line>
  108. <view class="display-flex-between">
  109. <view class="mt15 mb15 display-flex-content-center" :style="[getKefuStyle(item)]">
  110. <image :src="item.url" class="mr12" mode="heightFix" style="width: 36rpx;height: 36rpx"></image>
  111. <text class="member-other-card-name">{{ item.name }}</text>
  112. <button style="position: absolute;width: 690rpx;height:108rpx;z-index: 999;opacity: 0;;left: 10px"
  113. v-if="item.value == 'concat'" open-type="contact" @contact="contact"></button>
  114. </view>
  115. <view>
  116. <u-icon name="arrow-right" bold color="#333333" size="14"></u-icon>
  117. </view>
  118. </view>
  119. </view>
  120. </view>
  121. <view class="member-info-card">
  122. <view class="member-card">
  123. <text class="card-title">分销商</text>
  124. <u-line color="#F4F4F4"></u-line>
  125. <view class="menu-box">
  126. <view class="menu-item" @click="goToPath(item)" v-for="(item, index) in menuList">
  127. <view class="menu-item-bgColor">
  128. <image :src="item.url" mode="heightFix"></image>
  129. <text>{{ item.name }}</text>
  130. </view>
  131. </view>
  132. </view>
  133. </view>
  134. </view>
  135. </view>
  136. </view>
  137. <u-popup :show="showUserRegister" @close="showUserRegister = false" round="18rpx">
  138. <form v-if="!isUserRegister" @submit="saveUserData">
  139. <view class="m-content-view">
  140. <text class="top-view"> {{ shopName }}</text>
  141. <text class="tips">请您授权头像昵称信息,您授权的信息将受到严格保护,请放心使用。</text>
  142. <button class="avatar-wrapper" open-type="chooseAvatar" @chooseavatar="onChooseAvatar"
  143. style="border: 0">
  144. <u--image v-if="avatarUrl !== defaultAvatarUrl" width="149rpx" height="149rpx" radius="100%"
  145. shape="circle" :src="avatarUrl" :fade="true" duration="450" mode="heightFix"></u--image>
  146. <view class="v1" v-else>
  147. <u--image width="80rpx" height="80rpx" radius="100%" shape="circle" :src="avatarUrl"
  148. :fade="true" duration="450" mode="heightFix"></u--image>
  149. <text v-if="avatarUrl === defaultAvatarUrl">获取头像</text>
  150. </view>
  151. </button>
  152. <input name="nickname" v-model="userName" type="nickname" class="m-input" placeholder="请输入昵称"/>
  153. <button class="red-btn" form-type="submit">确认授权</button>
  154. </view>
  155. </form>
  156. </u-popup>
  157. <tabbarCom current="4"></tabbarCom>
  158. </view>
  159. </template>
  160. <script>
  161. import tabbarCom from "@/components/tabbar/tabbar.vue"
  162. import {
  163. uploadBase64File,
  164. getNewRemindCnt,
  165. addAddress,
  166. } from "@/common/api/common.js";
  167. import {
  168. getOrderList
  169. } from "@/common/api/order.js";
  170. import {
  171. updateUserInfo,
  172. getUserInfo,
  173. userBindNickname
  174. } from "@/common/api/user.js";
  175. const defaultAvatarUrl =
  176. "https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0";
  177. import $C from "@/common/utils/config.js";
  178. export default {
  179. components: {
  180. tabbarCom
  181. },
  182. data() {
  183. return {
  184. topData: {
  185. top: 0,
  186. height: 0,
  187. },
  188. shopName: "六感熟眠商城",
  189. bgImg: null,
  190. jion_vip_bg: 'https://work.hkmop.com/static/imgs/jion_vip_bg.png',
  191. user_grade_bg: '', //#f4c530
  192. tips: "登录/注册",
  193. defaultAvatarUrl,
  194. avatarUrl: defaultAvatarUrl,
  195. isUserRegister: false,
  196. showUserRegister: false,
  197. userName: "",
  198. userInfo: undefined,
  199. badgeValue: 0,
  200. userData: {},
  201. newRemindCnt: 0,
  202. orderNumber: {},
  203. menuList: [{
  204. name: "推广海报",
  205. url: require("@/static/ic-menu-a.png"),
  206. path: "/subPages/poster/poster",
  207. isVip: true
  208. },
  209. {
  210. name: "我的团队",
  211. url: require("@/static/ic-menu-b.png"),
  212. path: "/subPages/myTeam/myTeam",
  213. isVip: true
  214. },
  215. {
  216. name: "分销订单",
  217. url: require("@/static/ic-menu-c.png"),
  218. path: "/subPages/distribution/distribution",
  219. isVip: true
  220. },
  221. {
  222. name: "提现记录",
  223. url: require("@/static/ic-menu-d.png"),
  224. path: "/subPages/withdrawalManagement/withdrawalManagement",
  225. isVip: true
  226. },
  227. {
  228. name: "提现",
  229. url: require("@/static/ic-menu-e.png"),
  230. path: "/subPages/applyWithdrawal/applyWithdrawal",
  231. isVip: true
  232. },
  233. ],
  234. shopList: [{
  235. name: "待付款",
  236. url: require("@/static/ic-shop-a.png"),
  237. value: '1,2',
  238. index: 1,
  239. numKey: 'toPay'
  240. },
  241. {
  242. name: "待发货",
  243. url: require("@/static/ic-shop-b.png"),
  244. value: '3',
  245. index: 2,
  246. numKey: 'toSend'
  247. },
  248. {
  249. name: "待收货",
  250. url: require("@/static/ic-shop-c.png"),
  251. value: '4',
  252. index: 3,
  253. numKey: 'toConfirm'
  254. },
  255. {
  256. name: "已完成",
  257. url: require("@/static/ic-shop-d.png"),
  258. value: '6,9',
  259. index: 4,
  260. numKey: 'complate'
  261. },
  262. {
  263. name: "退款/售后",
  264. url: require("@/static/ic-shop-e.png"),
  265. index: 5,
  266. numKey: 'afterSales'
  267. },
  268. ],
  269. otherList: [
  270. {
  271. name: "课程订单",
  272. url: require("@/static/ic-other-f.png"),
  273. path: "/subPages/myOrder/myOrder",
  274. isVip: true
  275. },
  276. {
  277. name: "服务预约",
  278. url: require("@/static/ic-other-g.png"),
  279. path: "/subPages/service/service",
  280. isVip: true
  281. },
  282. {
  283. name: "优惠券",
  284. url: require("@/static/ic-other-a.png"),
  285. path: "/subPages/coupon/coupon",
  286. isVip: true
  287. },
  288. {
  289. name: "地址管理",
  290. url: require("@/static/ic-other-b.png"),
  291. path: "/subPages/addressMg/addressMg",
  292. isVip: true
  293. },
  294. {
  295. name: "我的收藏",
  296. url: require("@/static/ic-other-cooprule.png"),
  297. path: "/subPages/collectList/collectList",
  298. isVip: true
  299. },
  300. {
  301. name: "帮助中心",
  302. url: require("@/static/ic-other-c.png"),
  303. path: "/subPages/helpCenter/helpCenter",
  304. },
  305. {
  306. name: "关于我们",
  307. url: require("@/static/ic-other-d.png"),
  308. path: "/pages/singlePage/index?name=3",
  309. },
  310. {
  311. name: "在线客服",
  312. url: require("@/static/ic-other-e.png"),
  313. value: 'concat'
  314. },
  315. ],
  316. };
  317. },
  318. computed: {
  319. displayBalance() {
  320. const {
  321. balance_total,
  322. balance_used
  323. } = this.userInfo || {};
  324. return balance_total - balance_used;
  325. },
  326. },
  327. created() {
  328. const configs = uni.getStorageSync("configs");
  329. if (configs) {
  330. this.shopName = configs.shop_name
  331. this.bgImg = configs.ucenter_bg
  332. this.jion_vip_bg = configs.user_in_bg
  333. this.user_grade_bg = configs.user_grade_bg
  334. }
  335. },
  336. mounted() {
  337. },
  338. //发送给朋友
  339. onShareAppMessage(res) {
  340. let configs = uni.getStorageSync('configs') || {}
  341. return {
  342. title: configs.shop_share_title,
  343. imageUrl: configs.shop_share_img,
  344. path: `/pages/home/dashboard/index?id=${
  345. JSON.parse(uni.getStorageSync("userInfo")).id
  346. }`,
  347. };
  348. },
  349. // 分享到朋友圈
  350. onShareTimeline() {
  351. let configs = uni.getStorageSync('configs') || {}
  352. return {
  353. title: configs.shop_share_title,
  354. imageUrl: configs.shop_share_img,
  355. path: `/pages/home/dashboard/index?id=${
  356. JSON.parse(uni.getStorageSync("userInfo")).id
  357. }`
  358. };
  359. },
  360. onShow() {
  361. const topData = uni.getMenuButtonBoundingClientRect();
  362. this.topData.top = topData.top;
  363. this.topData.height = topData.height;
  364. this.reUserInfo();
  365. this.getUserInfo();
  366. // this.getOrderListCount()
  367. },
  368. methods: {
  369. contact(res) {
  370. console.log(345555, res)
  371. },
  372. getOrderStatics() {
  373. this.$api.getOrderStatics().then(res => {
  374. const {
  375. t1 = 0, t2 = 0, t3 = 0, t4 = 0, t6 = 0, t9 = 0
  376. } = res.data
  377. this.orderNumber = {
  378. toPay: t1 + t2,
  379. toSend: t3,
  380. toConfirm: t4,
  381. complate: t6 + t9,
  382. afterSales: res.data.t - 1 + res.data.t - 2,
  383. }
  384. })
  385. },
  386. getKefuStyle(item){
  387. if(item.value == 'concat'){
  388. return {
  389. display: "relative",
  390. }
  391. }
  392. },
  393. checkShowUserRegister() {
  394. if (!this.isUserRegister) {
  395. this.showUserRegister = true;
  396. return true;
  397. } else {
  398. // if (this.userInfo.vip_code && this.userInfo.vip_code != "0") {
  399. // this.toSubPages("personalDataManagement");
  400. // } else {
  401. // this.toSubPages("register");
  402. //
  403. // }
  404. this.toSubPages("personalDataManagement");
  405. return false;
  406. }
  407. },
  408. JumpSetting() {
  409. this.toSubPages("setting");
  410. },
  411. reUserInfo() {
  412. const userInfo = uni.getStorageSync("userInfo");
  413. if (
  414. userInfo &&
  415. JSON.parse(userInfo).nickname != "" &&
  416. JSON.parse(userInfo).headimg != ""
  417. ) {
  418. this.userInfo = JSON.parse(userInfo);
  419. const {
  420. headimg,
  421. nickname,
  422. base_sex,
  423. realname,
  424. region_area,
  425. region_city,
  426. region_province,
  427. phone
  428. } =
  429. this.userInfo
  430. this.avatarUrl = this.userInfo.headimg;
  431. this.userName = this.userInfo.nickname;
  432. this.isUserRegister = true;
  433. this.getOrderStatics()
  434. } else {
  435. this.isUserRegister = false;
  436. }
  437. },
  438. toOrderList(str = 0) {
  439. if (!this.isUserRegister) {
  440. this.showUserRegister = true;
  441. return true;
  442. }
  443. uni.setStorageSync("orderIndex", str);
  444. uni.navigateTo({
  445. url: "/subPages/myOrder/myOrder",
  446. });
  447. },
  448. goToPath(item) {
  449. if (item.isVip) {
  450. if (!this.isUserRegister) {
  451. this.showUserRegister = true;
  452. return true;
  453. }
  454. }
  455. if (!item.path) {
  456. return;
  457. }
  458. uni.navigateTo({
  459. url: item.path,
  460. });
  461. },
  462. toSubPages(index) {
  463. uni.navigateTo({
  464. url: `/subPages/${index}/index`,
  465. });
  466. },
  467. // 获取未支付数量
  468. getOrderListCount() {
  469. uni.showLoading();
  470. const data = {
  471. status: 2,
  472. page: this.page,
  473. limit: this.limit,
  474. };
  475. getOrderList(data)
  476. .then((res) => {
  477. uni.hideLoading();
  478. console.log("getOrderList==>", res.data.list);
  479. if (res.data) {
  480. this.badgeValue = res.data.page.total;
  481. }
  482. })
  483. .catch(() => {
  484. uni.hideLoading();
  485. });
  486. },
  487. bindNickname(url) {
  488. this.isUserRegister = true;
  489. this.showUserRegister = false;
  490. const data = {
  491. nickname: this.userName,
  492. username: this.userName,
  493. headimg: url,
  494. };
  495. userBindNickname(data).then((res) => {
  496. console.log("绑定昵称等==>", res.data);
  497. if (res.data) {
  498. uni.setStorageSync("token", res.data.token.token);
  499. if (!res.data.headimg) {
  500. res.data.headimg = url;
  501. }
  502. uni.setStorageSync("userInfo", JSON.stringify(res.data));
  503. this.isUserRegister = true;
  504. this.showUserRegister = false;
  505. this.toSubPages("register");
  506. }
  507. });
  508. },
  509. addAddress(addressData) {
  510. this.isUserRegister = true;
  511. this.showUserRegister = false;
  512. const data = {
  513. type: 1,
  514. name: addressData.userName,
  515. phone: addressData.telNumber,
  516. province: addressData.provinceName,
  517. city: addressData.cityName,
  518. area: addressData.countyName,
  519. address: addressData.detailInfo,
  520. };
  521. addAddress(data).then((res) => {
  522. console.log("addAddress==>", res.data);
  523. if (res.data) {
  524. uni.showToast({
  525. title: "添加成功",
  526. success: (res) => {
  527. },
  528. });
  529. }
  530. });
  531. },
  532. async getUserInfo() {
  533. const data = {};
  534. await getUserInfo(data)
  535. .then((res) => {
  536. if (res.data) {
  537. // uni.clearStorageSync()
  538. uni.setStorageSync("token", res.data.token.token);
  539. uni.setStorageSync("userInfo", JSON.stringify(res.data));
  540. this.userInfo = res.data;
  541. console.log("getUserInfo==>", this.userInfo);
  542. }
  543. })
  544. .catch(() => {
  545. uni.hideLoading();
  546. });
  547. await this.reUserInfo();
  548. },
  549. getNewRemindCnt() {
  550. const data = {};
  551. getNewRemindCnt(data)
  552. .then((res) => {
  553. console.log("getNewRemindCnt==>", res.data);
  554. // if (res.data) {
  555. this.newRemindCnt = res.data || 0;
  556. // }
  557. })
  558. .catch(() => {
  559. uni.hideLoading();
  560. });
  561. },
  562. onChooseAvatar(e) {
  563. const {
  564. avatarUrl
  565. } = e.detail;
  566. console.log("成功授权", avatarUrl);
  567. this.avatarUrl = avatarUrl;
  568. },
  569. saveUserData(e) {
  570. console.log(e.detail.value.nickname);
  571. if (
  572. this.avatarUrl === this.defaultAvatarUrl ||
  573. !e.detail.value.nickname
  574. ) {
  575. uni.showToast({
  576. icon: "none",
  577. title: "请先授权完善信息",
  578. });
  579. return;
  580. }
  581. this.userName = e.detail.value.nickname;
  582. this.showUserRegister = false;
  583. this.getImageInfo();
  584. },
  585. getImageInfo() {
  586. // 获取当前图片信息
  587. uni.getImageInfo({
  588. src: this.avatarUrl,
  589. success: (image) => {
  590. // 做png/jpeg的类型判断————对不同类型的图像添加不同的转换头信息
  591. if (image.type == "png" || image.type == "jpeg") {
  592. // 对符合类型的图片转换为base64类型
  593. uni.getFileSystemManager().readFile({
  594. // 【重点来啦】人家自提供的转码API
  595. filePath: image.path, // 所需转码图像路径
  596. encoding: "base64", // 转码类型
  597. success: (res) => {
  598. // 生成base64
  599. let imageBase64 =
  600. "data:image/" + image.type + ";base64," + res.data;
  601. console.log("转base64后:", imageBase64);
  602. this.uploadBase64File(imageBase64);
  603. },
  604. });
  605. } else {
  606. // 友好一点,不是以上类型做出提醒
  607. uni.showToast({
  608. title: "当前只支持png/jpeg格式",
  609. duration: 2500,
  610. icon: "none",
  611. });
  612. }
  613. },
  614. });
  615. },
  616. uploadBase64File(imageBase64) {
  617. uploadBase64File({
  618. base64: imageBase64,
  619. }, {
  620. "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
  621. })
  622. .then((res) => {
  623. console.log("uploadFile==>", res.data.url);
  624. this.avatarUrl = res.data.url;
  625. this.bindNickname(res.data.url);
  626. })
  627. .catch(() => {
  628. uni.hideLoading();
  629. });
  630. },
  631. },
  632. };
  633. </script>
  634. <style lang="scss" scoped>
  635. .app-page {
  636. width: 100%;
  637. display: flex;
  638. flex-direction: column;
  639. }
  640. .top-bg {
  641. width: 750rpx;
  642. height: 634rpx;
  643. overflow: hidden;
  644. }
  645. .not-regis-box,
  646. .regis-box {
  647. margin-left: 20rpx;
  648. margin-top: 7rpx;
  649. height: 36rpx;
  650. line-height: 36rpx;
  651. padding: 0 10rpx;
  652. font-size: 22rpx;
  653. font-weight: bold;
  654. color: #9a9a9a;
  655. background: #e3e3e3;
  656. border-radius: 7rpx;
  657. display: inline-flex;
  658. align-items: center;
  659. .user-name-text {
  660. margin-left: 6rpx;
  661. }
  662. }
  663. .regis-box {
  664. background: rgba(231, 224, 255, 0.85);
  665. color: #815bff;
  666. }
  667. .top-bar-view {
  668. width: 100%;
  669. position: relative;
  670. display: flex;
  671. align-items: center;
  672. flex-direction: column;
  673. }
  674. .top-box {
  675. position: absolute;
  676. left: 0;
  677. top: 0;
  678. right: 0;
  679. display: flex;
  680. flex-direction: column;
  681. }
  682. .top-bar {
  683. width: 100%;
  684. display: flex;
  685. justify-content: center;
  686. align-items: center;
  687. flex-direction: row;
  688. }
  689. .m-content-view {
  690. width: 100%;
  691. display: flex;
  692. align-items: center;
  693. flex-direction: column;
  694. background-color: #f7f7f7;
  695. border-radius: 24rpx 24rpx 0 0;
  696. }
  697. .top-view {
  698. font-size: 32rpx;
  699. font-family: PingFangSC-Medium, PingFang SC;
  700. font-weight: 500;
  701. color: #1d161f;
  702. line-height: 34rpx;
  703. text-align: left;
  704. margin: 55rpx 49rpx 0;
  705. width: calc(100% - 98rpx);
  706. }
  707. .tips {
  708. font-size: 26rpx;
  709. font-weight: 400;
  710. color: #858585;
  711. line-height: 34rpx;
  712. margin: 21rpx 49rpx 0;
  713. }
  714. .red-btn {
  715. color: white;
  716. background: #f39800;
  717. width: calc(100% - 98rpx);
  718. margin-top: 52rpx;
  719. margin-bottom: 52rpx;
  720. font-size: 32rpx;
  721. line-height: 84rpx;
  722. border-radius: 40rpx;
  723. text-align: center;
  724. }
  725. .red-btn:active {
  726. opacity: 0.7;
  727. }
  728. .v1 {
  729. height: 149rpx;
  730. width: 149rpx;
  731. display: flex;
  732. flex-direction: column;
  733. background: rgba(244, 244, 246, 1);
  734. border-radius: 100%;
  735. align-items: center;
  736. justify-content: center;
  737. }
  738. .avatar-wrapper {
  739. margin-top: 26rpx;
  740. }
  741. .avatar-wrapper button::before {
  742. padding: 0;
  743. border-radius: 20rpx;
  744. border: 0;
  745. }
  746. .avatar {
  747. height: 100rpx;
  748. width: 100rpx;
  749. }
  750. .v1 text {
  751. font-size: 22rpx;
  752. margin-top: -16rpx;
  753. }
  754. // 去掉烦人的边框
  755. button::after {
  756. border: 0; // 或者 border: none;
  757. }
  758. .m-input {
  759. width: calc(100% - 138rpx);
  760. line-height: 117rpx;
  761. padding: 0 20rpx;
  762. margin-top: 44rpx;
  763. background: #ffffff;
  764. border-radius: 15rpx;
  765. height: 117rpx;
  766. }
  767. .mine-box {
  768. width: 100%;
  769. display: flex;
  770. flex-direction: column;
  771. position: relative;
  772. }
  773. .mine-bg {
  774. width: 100%;
  775. display: block;
  776. height: 1334rpx;
  777. }
  778. .mine-view {
  779. left: 0;
  780. top: 0;
  781. right: 0;
  782. width: 100%;
  783. display: flex;
  784. flex-direction: column;
  785. position: absolute;
  786. }
  787. .top-title-view {
  788. display: flex;
  789. width: 100%;
  790. flex-direction: row;
  791. align-items: center;
  792. }
  793. .login-box {
  794. display: flex;
  795. flex-direction: row;
  796. align-items: center;
  797. padding: 10px 30rpx 0;
  798. }
  799. .avatar-wrap {
  800. position: relative;
  801. .vip-tag {
  802. display: flex;
  803. align-items: center;
  804. margin-top: 8rpx;
  805. .vip-text {
  806. font-size: 20rpx;
  807. font-weight: 500;
  808. margin-left: 34rpx;
  809. color: #632400;
  810. width: 122rpx;
  811. line-height: 38rpx;
  812. text-align: center;
  813. border-radius: 0rpx 20rpx 20rpx 0rpx;
  814. }
  815. }
  816. }
  817. .user-info-wrap {
  818. flex: 1;
  819. margin-left: 28rpx;
  820. .userName-wrap {
  821. display: flex;
  822. align-items: center;
  823. font-weight: 400;
  824. font-size: 28rpx;
  825. color: #333333;
  826. line-height: 44rpx;
  827. text-align: left;
  828. font-style: normal;
  829. text-transform: none;
  830. }
  831. }
  832. .userName-box {
  833. display: flex;
  834. flex-direction: row;
  835. align-items: center;
  836. justify-content: flex-start;
  837. }
  838. .userName {
  839. font-size: 28rpx;
  840. // margin-left: 26rpx;
  841. font-family: PingFang;
  842. font-weight: 600;
  843. color: #333333;
  844. line-height: 44rpx;
  845. text-align: left;
  846. font-style: normal;
  847. text-transform: none;
  848. }
  849. .info-list text {
  850. margin-top: 10rpx;
  851. font-size: 22rpx;
  852. // margin-left: 26rpx;
  853. font-family: PingFang;
  854. font-weight: 400;
  855. color: #333333;
  856. line-height: 40rpx;
  857. text-align: left;
  858. font-style: normal;
  859. text-transform: none;
  860. }
  861. .info-list-rebate_total {
  862. //font-family: Aoboshi One, Aoboshi One!important;
  863. //color: #512C19!important;
  864. //line-height: 40rpx!important;
  865. //text-align: left!important;
  866. //font-style: normal!important;
  867. //text-transform: none!important;
  868. //font-weight: 700!important;
  869. //font-size: 40rpx!important;
  870. }
  871. .user-phone {
  872. margin-top: 8rpx;
  873. font-size: 22rpx;
  874. // margin-left: 26rpx;
  875. font-family: PingFang;
  876. font-weight: 400;
  877. color: #333333;
  878. line-height: 28rpx;
  879. text-align: left;
  880. font-style: normal;
  881. text-transform: none;
  882. }
  883. .right-box {
  884. padding-right: 56rpx;
  885. position: relative;
  886. }
  887. .jion-vip-wrap {
  888. background-size: 100% 100%;
  889. display: flex;
  890. justify-content: space-between;
  891. align-items: center;
  892. height: 128rpx;
  893. margin: 40rpx 30rpx 0rpx;
  894. padding: 0 96rpx 0 84rpx;
  895. .title {
  896. font-family: 苹方-Regular, 苹方;
  897. font-weight: 700;
  898. font-size: 28rpx;
  899. color: #512C19;
  900. line-height: 40rpx;
  901. text-align: left;
  902. font-style: normal;
  903. text-transform: none;
  904. }
  905. .docs {
  906. font-family: PingFang SC-Medium, PingFang SC;
  907. font-weight: 400;
  908. font-size: 24rpx;
  909. color: #512C19;
  910. line-height: 36rpx;
  911. text-align: right;
  912. font-style: normal;
  913. text-transform: none;
  914. }
  915. }
  916. .kthy {
  917. flex: 1;
  918. font-size: 26rpx;
  919. font-family: PingFang;
  920. font-weight: 400;
  921. color: #000000;
  922. }
  923. .kthy-btn {
  924. width: 106rpx;
  925. height: 40rpx;
  926. border: 1rpx solid #000000;
  927. border-radius: 4rpx;
  928. font-size: 22rpx;
  929. font-family: PingFang;
  930. font-weight: 400;
  931. color: #010101;
  932. text-align: center;
  933. margin-right: 20rpx;
  934. line-height: 40rpx;
  935. }
  936. .card-box {
  937. width: 690rpx;
  938. margin: 20rpx auto 0 auto;
  939. background: #ffffff;
  940. border-radius: 21rpx;
  941. display: flex;
  942. flex-direction: column;
  943. }
  944. .bottom-item {
  945. width: 100%;
  946. display: flex;
  947. flex-direction: column;
  948. position: relative;
  949. .bottom-item-h {
  950. width: 100%;
  951. display: flex;
  952. flex-direction: row;
  953. text {
  954. flex: 1;
  955. font-size: 26rpx;
  956. margin: 30rpx 40rpx;
  957. font-family: PingFang;
  958. font-weight: 400;
  959. color: #333333;
  960. line-height: 28rpx;
  961. }
  962. }
  963. }
  964. .orders-info-card {
  965. width: 650rpx;
  966. padding: 0 20rpx;
  967. margin: 25rpx auto 0;
  968. border-radius: 18rpx;
  969. overflow: hidden;
  970. display: flex;
  971. flex-direction: column;
  972. background-color: #FFFFFF;
  973. .orders-card {
  974. width: 650rpx;
  975. height: 273rpx;
  976. background: #ffffff;
  977. display: flex;
  978. flex-direction: column;
  979. border-radius: 18rpx 18rpx 18rpx 18rpx;
  980. .card-title {
  981. display: flex;
  982. align-items: center;
  983. justify-content: space-between;
  984. .right {
  985. display: flex;
  986. align-items: center;
  987. font-size: 24rpx;
  988. font-weight: 400;
  989. color: #858585;
  990. line-height: 1;
  991. }
  992. }
  993. .menu-box {
  994. flex: 1;
  995. width: 100%;
  996. display: flex;
  997. flex-direction: row;
  998. align-items: center;
  999. .menu-item {
  1000. flex: 1;
  1001. height: 100%;
  1002. display: flex;
  1003. flex-direction: column;
  1004. align-items: center;
  1005. justify-content: center;
  1006. position: relative;
  1007. image {
  1008. width: 46rpx;
  1009. margin-bottom: 14rpx;
  1010. height: 46rpx;
  1011. }
  1012. text {
  1013. font-size: 26rpx;
  1014. font-family: PingFang SC-Medium, PingFang SC;
  1015. font-weight: 500;
  1016. color: #1d161f;
  1017. }
  1018. }
  1019. }
  1020. }
  1021. }
  1022. .member-info-card {
  1023. width: 650rpx;
  1024. padding: 0 20rpx;
  1025. margin: 0rpx auto 180rpx;
  1026. // height: 349rpx;
  1027. border-radius: 18rpx 18rpx 18rpx 18rpx;
  1028. overflow: hidden;
  1029. display: flex;
  1030. flex-direction: column;
  1031. background-color: #FFFFFF;
  1032. .member-card {
  1033. width: 650rpx;
  1034. height: 273rpx;
  1035. background: #ffffff;
  1036. display: flex;
  1037. flex-direction: column;
  1038. border-radius: 18rpx 18rpx 18rpx 18rpx;
  1039. .menu-box {
  1040. flex: 1;
  1041. width: 100%;
  1042. display: flex;
  1043. flex-direction: row;
  1044. align-items: center;
  1045. .menu-item {
  1046. flex: 1;
  1047. height: 100%;
  1048. display: flex;
  1049. flex-direction: column;
  1050. align-items: center;
  1051. justify-content: center;
  1052. position: relative;
  1053. &-bgColor{
  1054. height: 65%;
  1055. width: 85%;
  1056. background: #F6F7F9;
  1057. border-radius: 4rpx 4rpx 4rpx 4rpx;
  1058. display: flex;
  1059. flex-direction: column;
  1060. align-items: center;
  1061. justify-content: center;
  1062. image {
  1063. width: 36rpx;
  1064. margin-bottom: 14rpx;
  1065. height: 36rpx;
  1066. }
  1067. text {
  1068. font-family: PingFang SC, PingFang SC;
  1069. font-weight: 400;
  1070. font-size: 22rpx;
  1071. color: #333333;
  1072. line-height: 32rpx;
  1073. text-align: right;
  1074. font-style: normal;
  1075. text-transform: none;
  1076. }
  1077. }
  1078. }
  1079. }
  1080. }
  1081. }
  1082. .card-title {
  1083. font-size: 28rpx;
  1084. font-family: PingFang SC-Bold, PingFang SC;
  1085. font-weight: bold;
  1086. color: #1d161f;
  1087. padding-left: 10rpx;
  1088. line-height: 91rpx;
  1089. }
  1090. .member-other-card {
  1091. width: 650rpx;
  1092. // height: 273rpx;
  1093. margin: 20rpx auto 20rpx auto;
  1094. padding: 0 20rpx;
  1095. background: #ffffff;
  1096. display: flex;
  1097. flex-direction: column;
  1098. border-radius: 18rpx 18rpx 18rpx 18rpx;
  1099. &-name{
  1100. font-family: PingFang SC, PingFang SC;
  1101. font-weight: 400;
  1102. font-size: 28rpx;
  1103. color: #333333;
  1104. line-height: 48rpx;
  1105. text-align: left;
  1106. font-style: normal;
  1107. text-transform: none;
  1108. }
  1109. }
  1110. </style>