home copy.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792
  1. <template>
  2. <v-page>
  3. <view class="d-flex flex-col">
  4. <!-- 头部 -->
  5. <v-header
  6. class="nav_bar"
  7. :left-text="$t('base.a1')"
  8. :left-arrow="false"
  9. :left-click="personalCenter"
  10. >
  11. <template #left>
  12. <van-icon name="user-circle-o" class="fn-25" />
  13. </template>
  14. <template #title>
  15. <view class="d-flex align-center justify-center">
  16. <img class="m-x-xs h-20" :src="logoMap.home_logo" />
  17. <p>{{ app.appName }}</p>
  18. </view>
  19. </template>
  20. <template #right>
  21. <v-link to="/pages/list/list?isSearch=1" class="d-flex align-center">
  22. <van-icon class="fn-20" name="search" />
  23. </v-link>
  24. </template>
  25. </v-header>
  26. <view class="layout-main">
  27. <!-- 轮播 -->
  28. <swiper
  29. class="my-swipe m-x-md rounded-sm overflow-hidden"
  30. :autoplay="true"
  31. indicator-color="white"
  32. >
  33. <swiper-item
  34. class="my_swipe_item"
  35. v-for="(item, idx) in home"
  36. :key="idx"
  37. >
  38. <img width="100%" height="100%" fit="cover" :src="item.imgurl" />
  39. </swiper-item>
  40. </swiper>
  41. <!-- 公告 -->
  42. <v-notice-bar
  43. v-if="notice.length"
  44. class="m-t-md m-x-md bg-panel-1 box-shadow rounded-xs"
  45. >
  46. <template #left-icon>
  47. <van-icon
  48. class="m-r-sm fn-16"
  49. @click="() => _router.push({ path: '/pages/notice/index' })"
  50. name="volume-o"
  51. />
  52. </template>
  53. <v-link
  54. class="fn-13 eps-1"
  55. :to="{ path: '/pages/notice/detail', query: { id: notice[0].id } }"
  56. >{{ notice[0].title }}</v-link
  57. >
  58. <template #right-icon>
  59. <view
  60. class="m-l-xs notice-more"
  61. @click="_router.push({ path: '/pages/notice/index' })"
  62. >{{ $t("common.more") }}</view
  63. >
  64. </template>
  65. </v-notice-bar>
  66. <!-- 次一级导航 -->
  67. <view class="nav2 p-x-md m-t-xl d-flex justify-around fn-center">
  68. <v-link tag="div" to="/pages/invite/index" class="item">
  69. <view class="icon fn-22">
  70. <img class="h-54" src="static/img/4.png" />
  71. </view>
  72. <view class="fn-12">{{ $t("base.b7") }}</view>
  73. </v-link>
  74. <view
  75. tag="div"
  76. class="item"
  77. @click="handleSwiper('/pages/base/option-list')"
  78. >
  79. <view class="icon fn-22">
  80. <img class="h-54" src="static/img/homeqiquanicon.png" />
  81. </view>
  82. <view class="fn-12">{{ $t("base.a4") }}</view>
  83. </view>
  84. <!-- <v-link
  85. tag="div"
  86. class="item"
  87. :to="{
  88. path: '/pages/base/exchange-operation',
  89. query: {
  90. tel: 'exchange-operation',
  91. },
  92. }"
  93. >
  94. <view class="icon fn-22">
  95. <img class="h-54" src="static/img/8.png" />
  96. </view>
  97. <view class="fn-12">{{ $t("exchange.a1") }}</view>
  98. </v-link> -->
  99. <v-link
  100. tag="div"
  101. class="item"
  102. @click.prevent.stop.native="
  103. handleSwiper('/pages/base/exchange-operation')
  104. "
  105. >
  106. <view class="icon fn-22">
  107. <img class="h-54" src="static/img/8.png" />
  108. </view>
  109. <view class="fn-12">{{ $t("exchange.a1") }}</view>
  110. </v-link>
  111. <!-- <view @click="personalCenter" class="item">
  112. <view class="icon fn-22">
  113. <img class="h-54" src="static/img/homehuiyuan.png" />
  114. </view>
  115. <view class="fn-12">{{ $t("base.a6") }}</view>
  116. </view> -->
  117. <!-- h5端跳转下载链接 -->
  118. <!-- <v-link tag="div" to="/pages/help/index" class="item">
  119. <view class="icon fn-22">
  120. <img class="h-54" src="static/img/homexueyuan.png" />
  121. </view>
  122. <view class="fn-12">{{ $t("base.a7") }}</view>
  123. </v-link> -->
  124. <v-link
  125. tag="div"
  126. :to="{
  127. path: '/pages/pledge/index',
  128. query: {
  129. tel: 'exchange-operation',
  130. },
  131. }"
  132. class="item"
  133. >
  134. <view class="icon fn-22">
  135. <img class="h-54" src="static/img/homexueyuan1.png" />
  136. </view>
  137. <view class="fn-12">{{ $t("pledge.funcname") }}</view>
  138. </v-link>
  139. </view>
  140. <!-- 指数 -->
  141. <view class="stock-swipe d-flex p-x-md m-t-xl" v-if="false">
  142. <view
  143. class="swipe_right flex-fill box-shadow"
  144. v-for="(item, idx) in indexList"
  145. :key="idx"
  146. @click="
  147. _router.push({
  148. path: '/pages/exchange/index',
  149. query: {
  150. code: item.pair_name,
  151. },
  152. })
  153. "
  154. >
  155. <view
  156. class="stock-index item flex-fill p-x-xs p-y-xs rounded-xs box-size bg-panel-3"
  157. :key="idx"
  158. :class="{ 'm-l-md': idx }"
  159. >
  160. <view class="stock-index-img fn-12 color-gray-6 m-b-md">
  161. <view>{{ item.pair_name }}</view>
  162. </view>
  163. <view class="fn-18 color-light">{{ item.close }}</view>
  164. <view
  165. class="d-flex flex-col align-center fn-sm"
  166. :class="item.increase * 1 < 0 ? 'color-sell' : 'color-buy'"
  167. >
  168. <view class="stock-item-3">{{ item.increaseStr }}</view>
  169. <view class="color-theme-6"
  170. >≈ {{ getOldPrice(item.close, item.increase) }}</view
  171. >
  172. </view>
  173. </view>
  174. </view>
  175. </view>
  176. <!-- 科创板 -->
  177. <view class="head_info m-y-xl">
  178. <van-tabs
  179. v-if="marketList.length"
  180. :active="infoActive"
  181. background="transparent"
  182. :border="false"
  183. animated
  184. class="tabs-border border-b"
  185. >
  186. <van-tab
  187. v-for="parentItem in marketList"
  188. :key="parentItem.coin_name"
  189. :title="parentItem.coin_name"
  190. class="a"
  191. >
  192. <view class="w-12/12 p-t-md">
  193. <view class="fn-center w-max">
  194. <v-link
  195. :to="{
  196. path: '/pages/exchange/index',
  197. query: { code: item.pair_name },
  198. }"
  199. class="m-b-md m-x-md rounded-sm bg-panel-7 box-shadow link-active d-flex align-center p-r-md p-y-md box-size"
  200. v-for="item in parentItem.collect
  201. ? collect
  202. : parentItem.marketInfoList"
  203. :key="item.pair_name"
  204. >
  205. <view
  206. class="fn-18 w-2/12 d-flex align-center justify-center"
  207. >
  208. <img
  209. class="d-block h-30 w-30"
  210. :src="item.coin_icon"
  211. alt=""
  212. />
  213. <!-- <van-icon
  214. v-show="isCoolect(item)"
  215. class="color-theme-1"
  216. name="star"
  217. />
  218. <van-icon v-show="!isCoolect(item)" name="star-o" /> -->
  219. </view>
  220. <view class="color-light fn-left w-4/12">
  221. <view class="d-flex align-end">{{ item.pair_name }}</view>
  222. </view>
  223. <view class="fn-left align-end color-light w-3/12">
  224. <view class="d-flex align-end">{{ item.close }}</view>
  225. </view>
  226. <view class="fn-right w-3/12">
  227. <span
  228. :class="
  229. item.increase * 1 < 0 ? 'color-sell' : 'color-buy'
  230. "
  231. >{{ item.increaseStr }}</span
  232. >
  233. </view>
  234. </v-link>
  235. </view>
  236. </view>
  237. </van-tab>
  238. </van-tabs>
  239. </view>
  240. </view>
  241. <!-- 个人主页弹出层 -->
  242. <van-popup
  243. class="personalCenter-main colbg"
  244. :show="show"
  245. @close="show = false"
  246. position="left"
  247. custom-style="width:75%;height:100%"
  248. >
  249. <view class="personalCenter-top">
  250. <view class="app-nav"></view>
  251. <view class="theme-switch m-r-md">
  252. <label
  253. class="v-switch border rounded-xs d-flex"
  254. @click="changtTheme"
  255. >
  256. <view
  257. class="icon border"
  258. :class="
  259. theme == 'light'
  260. ? 'bg-gradient-green active'
  261. : 'bg-gradient-green'
  262. "
  263. >
  264. <view class="left color-light">{{ $t("common.light") }}</view>
  265. <view class="right color-light">{{ $t("common.dark") }}</view>
  266. </view>
  267. </label>
  268. </view>
  269. <view class="information p-l-md" @click="toAccountSettings">
  270. <img
  271. :src="logoMap.login_logo"
  272. class="h-50 w-50 d-block m-r-xs rounded-max flex-shrink"
  273. />
  274. <view class="inf-rig flex-fill">
  275. <span class="fn-lg color-light" v-if="isLogin">{{
  276. user.account
  277. }}</span>
  278. <span class="fn-lg color-light" v-else @click.stop>
  279. Hello,
  280. <v-link to="/pages/login/index" class="color-theme-1">{{
  281. $t("base.b3")
  282. }}</v-link>
  283. </span>
  284. <span class="inf-rig-cent fn-sm color-default"
  285. >UID:{{ isLogin ? user.user_id : "-" }}</span
  286. >
  287. </view>
  288. <v-link
  289. v-if="false"
  290. to="/pages/invite/level"
  291. style="padding: 3px 4px 6px"
  292. class="bg-panel-4 border border-r-0 rounded-tl-lg rounded-bl-lg border-buy"
  293. @click.native.stop
  294. >
  295. <span class="fn-xs color-buy">{{ $t("base.e6") }}</span>
  296. </v-link>
  297. </view>
  298. </view>
  299. <view class="personalCenter-center border-b border-gray-5">
  300. <view class="d-flex justify-around">
  301. <v-link
  302. to="/pages/assets/recharge"
  303. tag="div"
  304. class="d-flex flex-col align-center"
  305. >
  306. <img src="static/img/13.png" alt="" class="h-44" />
  307. <span class="fn-md color-light p-y-xs">{{ $t("base.b5") }}</span>
  308. </v-link>
  309. <v-link
  310. to="/pages/assets/draw"
  311. tag="div"
  312. class="d-flex flex-col align-center"
  313. >
  314. <img src="static/img/8.png" alt="" class="h-44" />
  315. <span class="fn-md color-light p-y-xs">{{ $t("base.b6") }}</span>
  316. </v-link>
  317. <v-link
  318. to="/pages/invite/index"
  319. tag="div"
  320. class="d-flex flex-col align-center"
  321. >
  322. <img src="static/img/4.png" alt="" class="h-44" />
  323. <span class="fn-md color-light p-y-xs">{{ $t("base.b7") }}</span>
  324. </v-link>
  325. </view>
  326. </view>
  327. <view class="personalCenter-bottom">
  328. <!-- <v-link
  329. to="/pages/otc/direct-recharge"
  330. tag="div"
  331. class="per-bot p-y-sm p-l-sm border-b d-flex align-center"
  332. >
  333. <img :src="$localImgUrl('Page9.png')" alt="" class="h-20 m-r-xs">
  334. <span class="color-light">{{ $t("common.direct-recharge-a1") }}</span>
  335. </v-link> -->
  336. <v-link
  337. to="/pages/commission/index"
  338. tag="div"
  339. class="per-bot p-y-sm p-l-sm border-b d-flex align-center"
  340. >
  341. <img :src="$localImgUrl('Page1.png')" alt="" class="m-r-xs h-20" />
  342. <span class="color-light">{{ $t("base.c1") }}</span>
  343. </v-link>
  344. <v-link
  345. to="/pages/otc/pays"
  346. tag="div"
  347. class="per-bot p-y-sm p-l-sm border-b d-flex align-center"
  348. >
  349. <img :src="$localImgUrl('Page9.png')" alt="" class="h-20 m-r-xs">
  350. <span class="color-light">{{$t('otc.j6')}}</span>
  351. </v-link>
  352. <v-link
  353. to="/pages/auth/index"
  354. tag="div"
  355. class="per-bot p-y-md p-l-sm border-b d-flex align-center"
  356. >
  357. <img :src="$localImgUrl('Page2.png')" alt="" class="h-20 m-r-xs" />
  358. <span class="color-light">{{ $t("base.c2") }}</span>
  359. </v-link>
  360. <v-link
  361. to="/pages/safe/index"
  362. tag="div"
  363. class="per-bot p-y-md p-l-sm border-b d-flex align-center"
  364. >
  365. <img :src="$localImgUrl('Page3.png')" alt="" class="h-20 m-r-xs" />
  366. <span class="color-light">{{ $t("base.c3") }}</span>
  367. </v-link>
  368. <v-link
  369. to="/pages/notice/index"
  370. tag="div"
  371. class="per-bot p-y-md p-l-sm border-b d-flex align-center"
  372. >
  373. <img :src="$localImgUrl('Page4.png')" alt="" class="h-20 m-r-xs" />
  374. <span class="color-light">{{ $t("base.c4") }}</span>
  375. </v-link>
  376. <v-link
  377. to="/pages/assets/address-list"
  378. tag="div"
  379. class="per-bot p-y-md p-l-sm border-b d-flex align-center"
  380. >
  381. <img :src="$localImgUrl('Page5.png')" alt="" class="h-20 m-r-xs" />
  382. <span class="color-light">{{ $t("base.c5") }}</span>
  383. </v-link>
  384. <v-link
  385. to="/pages/accountSettings/accountSettings"
  386. tag="div"
  387. class="per-bot p-y-md p-l-sm border-b d-flex align-center"
  388. >
  389. <img :src="$localImgUrl('Page7.png')" alt="" class="h-20 m-r-xs" />
  390. <span class="color-light">{{ $t("base.c6") }}</span>
  391. </v-link>
  392. <!-- <v-link
  393. to="/pages/pledge/index"
  394. tag="div"
  395. class="per-bot p-y-md p-l-sm border-b d-flex align-center"
  396. >
  397. <img :src="$localImgUrl('Page7.png')" alt="" class="h-20 m-r-xs" />
  398. <span class="color-light">{{ $t("pledge.funcname") }}</span>
  399. </v-link> -->
  400. <view class="per-bot p-y-md p-l-sm border-b d-flex align-center">
  401. <img :src="$localImgUrl('Page6.png')" alt="" class="h-20 m-r-xs" />
  402. <span class="color-light">
  403. <v-lang
  404. @change="
  405. marketList = [];
  406. indexData();
  407. "
  408. ></v-lang>
  409. <i class="iconfont m-l-xs fn-sm">&#xe6e9;</i>
  410. </span>
  411. </view>
  412. <view class="h-100"></view>
  413. </view>
  414. </van-popup>
  415. <van-toast id="van-toast" />
  416. </view>
  417. <com-footer tab="home"></com-footer>
  418. </v-page>
  419. </template>
  420. <script>
  421. import Home from "@/api/home";
  422. import Wallet from "@/api/wallet";
  423. import math from "@/utils/class/math.js";
  424. import app from "@/app";
  425. import ComFooter from "./components/footer.vue";
  426. import { mapState, mapActions } from "vuex";
  427. export default {
  428. name: "home",
  429. // props: ["isShow"],
  430. components: {
  431. ComFooter,
  432. },
  433. data() {
  434. return {
  435. infoActive: 0, // 详情选中
  436. marketList: [],
  437. home: {},
  438. notice: [],
  439. wap: "",
  440. indexList: [],
  441. createList: [],
  442. list: [],
  443. page: 1,
  444. tab: "kcb",
  445. show: false,
  446. checked: false,
  447. collect: [],
  448. app,
  449. first: true,
  450. isShow: false,
  451. };
  452. },
  453. onShow() {
  454. this.isShow = true;
  455. },
  456. onHide() {
  457. this.isShow = false;
  458. },
  459. computed: {
  460. ...mapState({
  461. ws: "ws",
  462. user: "user",
  463. wsState: "wsState",
  464. logoMap: "logoMap",
  465. theme: "theme",
  466. }),
  467. isLogin() {
  468. return Boolean(uni.getStorageSync("token"));
  469. },
  470. },
  471. watch: {
  472. isShow(n) {
  473. if (n) {
  474. this.ws.send({
  475. cmd: "sub",
  476. msg: "indexMarketList",
  477. });
  478. } else {
  479. this.ws.send({
  480. cmd: "unsub",
  481. msg: "indexMarketList",
  482. });
  483. }
  484. },
  485. },
  486. methods: {
  487. ...mapActions({
  488. setTheme: "setTheme",
  489. }),
  490. handleSwiper(path) {
  491. uni.switchTab({
  492. url: path,
  493. });
  494. },
  495. jump() {
  496. // window.location.href ='https://god1.top/pDZ569'
  497. window.open("https://god1.top/pDZ569", "_blank");
  498. },
  499. changtTheme() {
  500. if (this.theme == "light") {
  501. this.setTheme("dark");
  502. } else {
  503. this.setTheme("light");
  504. }
  505. },
  506. // 获取涨跌之前的价格
  507. getOldPrice(price, rate) {
  508. return math.multiple(math.division(price, 1 + rate * 1), rate, 2);
  509. },
  510. toAccountSettings() {
  511. this._router.push({ path: "/pages/accountSettings/accountSettings" });
  512. },
  513. personalCenter() {
  514. this.show = true;
  515. },
  516. indexData() {
  517. let data = {};
  518. let ajax = Home.indexList(data, { loading: true });
  519. ajax
  520. .then((res) => {
  521. this.home = res.data.bannerList;
  522. this.notice = res.data.noticeList;
  523. this.indexList = res.data.brokenLine;
  524. this.marketList = res.data.marketList;
  525. this.infoActive = 1;
  526. this.dunshift();
  527. this.getCollect();
  528. setTimeout(() => {
  529. this.first = false;
  530. }, 600);
  531. })
  532. .catch(() => {});
  533. },
  534. dunshift() {
  535. if (this.marketList.filter((item) => item.collect).length) return;
  536. this.marketList.unshift({
  537. coin_name: this.$t("base.c7"),
  538. collect: true,
  539. marketInfoList: [],
  540. });
  541. },
  542. // 获取自选交易列表
  543. getCollect(call) {
  544. if (!this.isLogin) return;
  545. Home.getCollect()
  546. .then((res) => {
  547. this.collect = res.data || [];
  548. call && call();
  549. })
  550. .catch(() => {});
  551. },
  552. // 是否为自选
  553. isCoolect(i) {
  554. return this.collect.map((item) => item.pair_name).includes(i.pair_name);
  555. },
  556. // 替换自选数据
  557. replaceOptional() {
  558. let collect = this.collect.map((item) => item.pair_name);
  559. this.marketList.forEach((parentItem) => {
  560. parentItem.marketInfoList.forEach((item) => {
  561. let idx = collect.indexOf(item.pair_name);
  562. if (idx != -1) {
  563. this.collect.splice(idx, 1, item);
  564. }
  565. });
  566. });
  567. },
  568. // 添加自选
  569. option(item) {
  570. let data = {
  571. pair_name: item.pair_name,
  572. };
  573. Home.option(data)
  574. .then((res) => {
  575. this.getCollect();
  576. if (res.data) {
  577. this.$toast(this.$t("base.c8"));
  578. } else {
  579. this.$toast(this.$t("base.c9"));
  580. }
  581. })
  582. .catch(() => {});
  583. },
  584. // 链接socket
  585. indexMarketList() {
  586. this.ws.send({
  587. cmd: "sub",
  588. msg: "indexMarketList",
  589. });
  590. this.ws.on("message", (res) => {
  591. let { data, sub } = res;
  592. if (sub == "indexMarketList") {
  593. this.marketList = data;
  594. this.dunshift();
  595. this.replaceOptional();
  596. }
  597. });
  598. },
  599. // 创建充币地址
  600. createWalletAddress() {
  601. Wallet.createWalletAddress()
  602. .then(() => {})
  603. .catch(() => {});
  604. },
  605. },
  606. mounted() {
  607. this.indexData();
  608. this.indexMarketList();
  609. if (this.isLogin) {
  610. this.createWalletAddress();
  611. }
  612. },
  613. destroyed() {},
  614. };
  615. </script>
  616. <style lang="scss" scoped>
  617. .notice-more {
  618. color: var(--text-danger);
  619. }
  620. .p-y-xs2 {
  621. padding-top: 25rpx;
  622. padding-bottom: 30rpx;
  623. }
  624. .footer {
  625. box-shadow: $tab-nav-shadow;
  626. position: fixed;
  627. bottom: 0;
  628. width: 100%;
  629. z-index: 99;
  630. }
  631. .router-link-active {
  632. color: $theme-1;
  633. }
  634. .a {
  635. margin-bottom: 30rpx;
  636. }
  637. .colbg {
  638. background-color: $bg;
  639. }
  640. .my-swipe {
  641. height: 150px;
  642. .van-image {
  643. padding: 0 18px;
  644. box-sizing: border-box;
  645. ::v-deep img.van-image__img {
  646. border-radius: 9px !important;
  647. }
  648. }
  649. }
  650. .notice-swipe {
  651. height: 24px;
  652. }
  653. // #ff4d5c
  654. .nav2 {
  655. .color-gray-6 {
  656. color: #f8a12e;
  657. }
  658. }
  659. .stock-swipe {
  660. .stock-index {
  661. display: flex;
  662. flex-direction: column;
  663. align-items: center;
  664. position: relative;
  665. .stock-item-3 {
  666. padding: 3px 0;
  667. }
  668. }
  669. }
  670. .personalCenter-main {
  671. .personalCenter-top {
  672. box-sizing: border-box;
  673. .theme-switch {
  674. display: flex;
  675. justify-content: flex-end;
  676. padding: 10% 0;
  677. .v-switch {
  678. $width: 50px;
  679. $icon-width: 20px;
  680. display: block;
  681. position: relative;
  682. height: 20px;
  683. width: $width;
  684. background: rgba($green, 0.2);
  685. overflow: hidden;
  686. .icon {
  687. position: absolute;
  688. top: 0;
  689. width: $icon-width;
  690. height: 20px;
  691. border-radius: inherit;
  692. transition: left 0.3s;
  693. .left,
  694. .right {
  695. position: absolute;
  696. width: $width;
  697. height: 100%;
  698. top: 0;
  699. box-sizing: border-box;
  700. text-align: center;
  701. &.left {
  702. right: 0;
  703. padding-right: $icon-width;
  704. }
  705. &.right {
  706. padding-left: $icon-width;
  707. left: 0;
  708. }
  709. }
  710. }
  711. .icon {
  712. left: 0;
  713. }
  714. .active.icon {
  715. left: $width - $icon-width;
  716. }
  717. }
  718. }
  719. .information {
  720. display: flex;
  721. align-items: flex-start;
  722. .inf-head-img {
  723. border-radius: 50%;
  724. margin-right: 4%;
  725. }
  726. .inf-rig {
  727. display: flex;
  728. flex-direction: column;
  729. letter-spacing: 1px;
  730. flex: 1;
  731. span:first-child {
  732. font-weight: 600;
  733. margin-bottom: 2px;
  734. }
  735. .inf-rig-cent {
  736. padding: 0 0 4px;
  737. }
  738. .vip-grade {
  739. display: flex;
  740. align-items: center;
  741. justify-content: flex-end;
  742. .progress-bar {
  743. width: 50%;
  744. }
  745. .progress-img {
  746. padding: 0 5px;
  747. }
  748. }
  749. }
  750. }
  751. }
  752. .personalCenter-center {
  753. padding: 20px 10px 10px;
  754. box-sizing: border-box;
  755. display: flex;
  756. flex-direction: column;
  757. justify-content: space-between;
  758. .personalCenter-bom {
  759. padding-top: 30px;
  760. .available-money {
  761. margin: 10px 0 0;
  762. height: 60%;
  763. background: rgba(100, 101, 102, 0.2);
  764. border-radius: 0 7px 7px 7px;
  765. align-items: center;
  766. padding: 6px 5px;
  767. }
  768. }
  769. }
  770. }
  771. .user-icon {
  772. font-size: 50px;
  773. }
  774. .epss-1 {
  775. overflow: hidden;
  776. text-overflow: ellipsis;
  777. }
  778. .fn-12 {
  779. width: 65px;
  780. max-height: 80px;
  781. word-wrap: break-word;
  782. word-break: keep-all;
  783. overflow: hidden;
  784. }
  785. </style>