popup.vue 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872
  1. <template>
  2. <div class="page-wrapper" ref="pageWrapperDom" @scroll="pageScroll">
  3. <template v-if="isLogin && homeVisibility">
  4. <!-- <div class="nav-bar">
  5. <div class="item left">
  6. <img :src="require('@/assets/svg/icon-denet-logo.svg')" />
  7. DeNet
  8. </div>
  9. <div class="item right" @click="showTransactions">
  10. <img :src="require('@/assets/svg/icon-option-list.svg')" />
  11. Transactions
  12. </div>
  13. </div> -->
  14. <v-head :show_more="true" :show_state="'home'"></v-head>
  15. <div class="content">
  16. <img :src="require('@/assets/svg/icon-money.svg')" class="icon-money" />
  17. <div class="msg" v-show="walletWithdrawConfig.withdrawUSDPaypalFeeDesc">
  18. ({{ walletWithdrawConfig.withdrawUSDPaypalFeeDesc }})</div>
  19. <div class="amount">${{ canWithdrawBalance }}</div>
  20. <div class="area-btn">
  21. <div class="withdraw-btn" @click="clickWithdraw">Withdraw</div>
  22. <div class="top-up-btn" @click="clickTopUp">Deposit</div>
  23. </div>
  24. </div>
  25. <div class="tab-bar">
  26. <div class="tab-item"
  27. :class="{ active: currentTabIndex == index }"
  28. v-for="(item, index) in tabList"
  29. :key="index"
  30. @click="clickTab(item, index)">
  31. <img :src="item.icon" class="icon" />
  32. {{ item.label }}
  33. </div>
  34. </div>
  35. <div class="list-wrapper" ref="pageGiveListDom">
  36. <div class="give-list" v-if="currentTabIndex == 0">
  37. <template v-if="giveList.length">
  38. <div class="cell"
  39. v-for="(item, index) in giveList"
  40. :key="index"
  41. @click="clickListItem(item, index)">
  42. <!-- <red-dot class="red-dots"></red-dot> -->
  43. <div class="img-wrapper">
  44. <!-- 收到红包 -->
  45. <template v-if="item.type == 1">
  46. <img class="icon-avatar" :src="item.userInfo.avatarUrl" />
  47. <img class="icon-give" :src="
  48. require('@/assets/svg/icon-giveaways.svg')
  49. " />
  50. </template>
  51. <!-- 发出去红包 -->
  52. <template v-else-if="2">
  53. <img :src="
  54. require('@/assets/svg/icon-list-big-give.svg')
  55. " />
  56. </template>
  57. </div>
  58. <div class="info-wrapper">
  59. <div class="left">
  60. <div class="nickname">
  61. {{
  62. item.type == 1
  63. ? item.userInfo.nickName
  64. : "Giveaways"
  65. }}
  66. </div>
  67. <div class="time">
  68. {{
  69. moment(item.timestamp).format(
  70. "MM-DD HH:mm:ss"
  71. )
  72. }}
  73. </div>
  74. </div>
  75. <div class="right">
  76. <div class="msg">
  77. <div class="bold">
  78. <!-- 收到的 -->
  79. <template v-if="item.type == 1">
  80. <!-- 进行中-->
  81. <template v-if="item.status == 0">
  82. in progress
  83. </template>
  84. <!-- 已完成 -->
  85. <template v-else-if="item.status == 1">
  86. <span class="blance">{{ item.amount }}</span>
  87. <span class="coin-type">{{ item.currencySymbol || '' }}</span>
  88. <img :src="item.currencyIconPath" alt="">
  89. </template>
  90. <!-- 已过期 -->
  91. <template v-else-if="item.status == 2">
  92. Timeout
  93. </template>
  94. </template>
  95. <!-- 发出去的 -->
  96. <template v-else-if="item.type == 2">
  97. <span class="blance">-{{ item.amount }}</span>
  98. <span class="coin-type">{{ item.currencySymbol || '' }}</span>
  99. <img :src="item.currencyIconPath" alt="">
  100. </template>
  101. </div>
  102. <!-- 发出的红包显示 -->
  103. <div class="desc" v-if="item.type == 2">
  104. <!-- 未发送-->
  105. <template v-if="item.postTaskLuckdrop.reSendAvailable">
  106. Unpublished
  107. </template>
  108. <!-- 进行中 -->
  109. <template v-else-if="item.status == 1">
  110. {{item.postTaskLuckdrop.receivedCount}}/{{item.postTaskLuckdrop.totalCount}}
  111. </template>
  112. <!-- 已结束 -->
  113. <template v-else-if="item.status == 2">
  114. (Time expired)
  115. {{
  116. item.postTaskLuckdrop
  117. .receivedCount
  118. }}/{{
  119. item.postTaskLuckdrop
  120. .totalCount
  121. }}
  122. </template>
  123. <!-- 红包提前终止/退款(进行中)显示 缺少if判断-->
  124. <!-- <template>
  125. Terminating
  126. </template> -->
  127. <!-- 进行中或者未发送成功时显示 -->
  128. <div class="desc-bottom-bar"
  129. v-if="item.status == 1 || item.postTaskLuckdrop.reSendAvailable">
  130. <!-- 没有终止红包时显示 缺少if判断 -->
  131. <div class="btn"
  132. @click="terminaHandler(item)">
  133. Termination
  134. </div>
  135. <!-- 红包未发出显示 -->
  136. <div class="btn send-btn"
  137. v-if="item.postTaskLuckdrop.reSendAvailable"
  138. @click.stop="sendTwitter(item)">
  139. Send
  140. </div>
  141. <div v-else
  142. class="btn detail-btn"
  143. @click.stop="clickListItem(item, index)">details</div>
  144. </div>
  145. </div>
  146. </div>
  147. <!-- 发红包—— 未发出、进行中 隐藏 -->
  148. <img v-if="!(item.type == 2 &&
  149. (item.status == 1 || item.postTaskLuckdrop.reSendAvailable))"
  150. class="icon"
  151. :src="require('@/assets/svg/icon-cell-arrow-right.svg')" />
  152. </div>
  153. </div>
  154. </div>
  155. </template>
  156. <template v-else>
  157. <img class="icon-empty" :src="require('@/assets/svg/icon-empty-list.svg')" />
  158. </template>
  159. </div>
  160. <div class="more-list" v-else>
  161. <div class="cell"
  162. v-for="(item, index) in moreTabList"
  163. :key="index"
  164. @click="moreItemHandle(item)">
  165. <img class="icon" :src="item.icon" />
  166. <div class="info-wrapper">
  167. <div class="left">
  168. {{ item.label }}
  169. </div>
  170. <div class="right">
  171. <img class="icon" :src="
  172. require('@/assets/svg/icon-cell-arrow-right.svg')
  173. " />
  174. </div>
  175. </div>
  176. </div>
  177. </div>
  178. </div>
  179. </template>
  180. <!-- login -->
  181. <popup-login v-if="!isLogin" @loginAction="loginAction" />
  182. <template v-if="isLogin && !homeVisibility">
  183. <!-- 交易列表 -->
  184. <popup-transactions v-if="transactionsVisibility" @back="transactionsBack" />
  185. <!-- 提现页 -->
  186. <popup-withdraw :amountValue="canWithdrawBalance" :walletWithdrawConfig="walletWithdrawConfig"
  187. v-if="withdrawVisibility" @back="withdrawBack" />
  188. </template>
  189. <modal :visible="modalVisible"
  190. title="Early termination of Giveaway?"
  191. content="This operation will close the red envelope and refund the remaining amount within 2 days"
  192. cancelText="Termination"
  193. confirmText="Cancel"
  194. @cancel="modalCancel"
  195. @confirm="modalConfirm" />
  196. </div>
  197. </template>
  198. <script setup>
  199. import { ref, onMounted, inject } from "vue";
  200. import popupLogin from "@/view/popup/components/login.vue";
  201. import popupTransactions from "@/view/components/popup-transactions";
  202. import popupWithdraw from "@/view/components/popup-withdraw.vue";
  203. import redDot from "@/view/components/red-dot.vue";
  204. import modal from "@/view/popup/components/modal.vue";
  205. import {
  206. getChromeStorage,
  207. } from "@/uilts/chromeExtension";
  208. import { getBalance, getMineLuckdropRecords } from "@/http/account";
  209. import Report from "@/log-center/log";
  210. import router from "@/router/popup.js";
  211. import VHead from '@/view/popup/components/head.vue'
  212. let withdraw_info = inject('withdraw_info')
  213. withdraw_info.paypal = {}
  214. var moment = require("moment");
  215. let pageWrapperDom = ref(null);
  216. let pageGiveListDom = ref(null);
  217. let isLogin = ref(false);
  218. let homeVisibility = ref(false);
  219. let transactionsVisibility = ref(false);
  220. let withdrawVisibility = ref(false);
  221. let modalVisible = ref(false);
  222. let terminaTask = {};
  223. let userInfo = ref({});
  224. let canWithdrawBalance = ref(0);
  225. withdraw_info.paypal.amount_value = canWithdrawBalance
  226. withdraw_info.balance = 0
  227. let isRequestWithdrawBalance = ref(false);
  228. let currentTabIndex = ref(0);
  229. let giveList = ref([]);
  230. let giveReqParams = {
  231. params: {
  232. pageNum: 1,
  233. pageSize: 10,
  234. },
  235. loadMore: false,
  236. };
  237. let walletWithdrawConfig = ref({
  238. withdrawUSDPaypalFee: 0,
  239. withdrawUSDPreMinAmount: 100,
  240. withdrawUSDSwitch: "",
  241. withdrawUSDPaypalFeeDesc: ''
  242. });
  243. withdraw_info.paypal.wallet_withdraw_config = walletWithdrawConfig
  244. let moreTabList = ref([
  245. {
  246. icon: require("@/assets/svg/icon-twitter.svg"),
  247. label: "Twitter contact",
  248. href: 'https://twitter.com/denet2022'
  249. }
  250. ]);
  251. let tabList = ref([
  252. {
  253. icon: require("@/assets/svg/icon-giveaways.svg"),
  254. label: "Giveaways",
  255. },
  256. {
  257. icon: require("@/assets/svg/icon-more.svg"),
  258. label: "More",
  259. },
  260. ]);
  261. onMounted(() => {
  262. checkLoginState(() => {
  263. if (isLogin.value) {
  264. getAccountBalance();
  265. getLuckdropRecordsList();
  266. Report.reportLog({
  267. pageSource: Report.pageSource.denetHomePage,
  268. businessType: Report.businessType.pageView,
  269. },{
  270. type: window.location.href.indexOf('home.html') > -1 ? 'web' : 'extensions'
  271. });
  272. } else {
  273. Report.reportLog({
  274. pageSource: Report.pageSource.denetLogin,
  275. businessType: Report.businessType.pageView,
  276. });
  277. }
  278. });
  279. });
  280. const moreItemHandle = (params) => {
  281. window.open(params.href);
  282. }
  283. /**
  284. * 获取账户余额
  285. */
  286. const getAccountBalance = () => {
  287. isRequestWithdrawBalance.value = false;
  288. getBalance({}).then((res) => {
  289. isRequestWithdrawBalance.value = true;
  290. if (res.code == 0) {
  291. if (res.data) {
  292. canWithdrawBalance.value = res.data.allAssetValuationUSD;
  293. withdraw_info.balance = res.data.allAssetValuationUSD || 0
  294. }
  295. }
  296. });
  297. };
  298. const getUserInfo = (cb) => {
  299. getChromeStorage("userInfo", (res) => {
  300. cb && cb(res);
  301. });
  302. };
  303. /**
  304. * 检查登录状态
  305. */
  306. const checkLoginState = (cb) => {
  307. getUserInfo((res) => {
  308. if (res && res.accessToken) {
  309. userInfo.value = res;
  310. isLogin.value = true;
  311. homeVisibility.value = true;
  312. } else {
  313. userInfo.value = {};
  314. isLogin.value = false;
  315. }
  316. cb && cb();
  317. });
  318. };
  319. const pageScroll = (e) => {
  320. let wrapperHeight = pageWrapperDom.value.offsetHeight;
  321. let pageGiveListHeight = pageGiveListDom.value.offsetHeight;
  322. let scrollTop = e.target.scrollTop || 0;
  323. if (currentTabIndex.value != 0) {
  324. return;
  325. }
  326. if (
  327. giveReqParams.loadMore === false &&
  328. wrapperHeight + scrollTop >= pageGiveListHeight
  329. ) {
  330. giveReqParams.loadMore = true;
  331. giveReqParams.params.pageNum++;
  332. getLuckdropRecordsList();
  333. }
  334. };
  335. /**
  336. * 获取红包列表
  337. */
  338. const getLuckdropRecordsList = () => {
  339. getMineLuckdropRecords({
  340. params: giveReqParams.params,
  341. }).then((res) => {
  342. if (res.data && res.data.length) {
  343. if (giveReqParams.params.pageNum < 2) {
  344. giveList.value = res.data;
  345. } else {
  346. let data = giveList.value;
  347. data = data.concat(res.data);
  348. giveList.value = data;
  349. }
  350. giveReqParams.loadMore = false;
  351. }
  352. });
  353. };
  354. const clickTab = (params, index) => {
  355. currentTabIndex.value = index;
  356. console.log(params, index);
  357. };
  358. /**
  359. * 点击列表跳转到推文
  360. */
  361. const clickListItem = (params) => {
  362. if (!params.srcContentId) {
  363. return;
  364. }
  365. let twitterUrl = "https://twitter.com/";
  366. let nickName = "";
  367. if (params.type == 1) {
  368. nickName = params.userInfo.nickName;
  369. } else if (params.type == 2) {
  370. nickName = userInfo.value.nickName;
  371. }
  372. let url = twitterUrl + nickName + "/status/" + params.srcContentId;
  373. chrome.tabs.create({
  374. url,
  375. });
  376. };
  377. /**
  378. * 交易列表返回
  379. */
  380. const transactionsBack = () => {
  381. if (!homeVisibility.value) {
  382. if (transactionsVisibility.value) {
  383. transactionsVisibility.value = false;
  384. }
  385. homeVisibility.value = true;
  386. }
  387. };
  388. /**
  389. * 提现返回
  390. */
  391. const withdrawBack = () => {
  392. if (!homeVisibility.value) {
  393. if (withdrawVisibility.value) {
  394. withdrawVisibility.value = false;
  395. }
  396. homeVisibility.value = true;
  397. getAccountBalance();
  398. giveReqParams.params.pageNum = 1;
  399. getLuckdropRecordsList();
  400. }
  401. };
  402. // const showTransactions = () => {
  403. // // homeVisibility.value = false;
  404. // // transactionsVisibility.value = true;
  405. // router.push('/transactions')
  406. // };
  407. // const clickWithdraw = () => {
  408. // if (isRequestWithdrawBalance.value) {
  409. // homeVisibility.value = false;
  410. // withdrawVisibility.value = true;
  411. // }
  412. // };
  413. const loginAction = () => {
  414. Report.reportLog({
  415. pageSource: Report.pageSource.denetLogin,
  416. businessType: Report.businessType.buttonClick,
  417. objectType: Report.objectType.loginButton
  418. });
  419. login();
  420. };
  421. const login = () => {
  422. callEventPageMethod("POPUP_LOGIN", "", function (response) {
  423. console.log("res", response);
  424. });
  425. };
  426. /**
  427. * sendMessage
  428. */
  429. const callEventPageMethod = (actionType, data, callback) => {
  430. chrome.runtime.sendMessage(
  431. {
  432. actionType: actionType,
  433. data: data
  434. },
  435. function (response) {
  436. if (typeof callback === "function") callback(response);
  437. }
  438. );
  439. };
  440. /**
  441. * 点击发送,去发推
  442. */
  443. const sendTwitter = (params) => {
  444. console.log(params)
  445. callEventPageMethod(
  446. "POPUP_PUBLISH_TWITTER_RED_PACK",
  447. {
  448. srcContent: params.postTaskLuckdrop.srcContent,
  449. postId: params.postTaskLuckdrop.postId
  450. },
  451. function (response) {
  452. console.log("res", response);
  453. }
  454. );
  455. };
  456. // 点击提现
  457. const clickWithdraw = () => {
  458. Report.reportLog({
  459. pageSource: Report.pageSource.denetHomePage,
  460. businessType: Report.businessType.buttonClick,
  461. objectType: Report.objectType.withdrawButton
  462. });
  463. router.push('/withdraw/home');
  464. }
  465. const clickTopUp = () => {
  466. Report.reportLog({
  467. pageSource: Report.pageSource.denetHomePage,
  468. businessType: Report.businessType.buttonClick,
  469. objectType: Report.objectType.topupButton
  470. });
  471. router.push('/top-up/home');
  472. }
  473. const terminaHandler = (params) => {
  474. terminaTask = params;
  475. modalVisible.value = true;
  476. }
  477. const modalCancel = () => {
  478. //请求终止接口 id terminaTask.id 、 刷新当前列表、 关闭
  479. modalVisible.value = false;
  480. terminaTask = {};
  481. }
  482. const modalConfirm = () => {
  483. modalVisible.value = false;
  484. terminaTask = {};
  485. }
  486. </script>
  487. <style lang="scss">
  488. html,
  489. body {
  490. padding: 0 !important;
  491. margin: 0 !important;
  492. }
  493. .page-wrapper {
  494. width: 375px;
  495. height: 600px;
  496. box-sizing: border-box;
  497. overflow-y: scroll;
  498. .nav-bar {
  499. padding: 14px;
  500. box-sizing: border-box;
  501. display: flex;
  502. align-items: center;
  503. justify-content: space-between;
  504. .item {
  505. display: flex;
  506. align-items: center;
  507. font-size: 13px;
  508. cursor: pointer;
  509. img {
  510. width: 16px;
  511. height: 16px;
  512. margin-right: 4px;
  513. }
  514. }
  515. .left {
  516. font-weight: 500;
  517. }
  518. .right {
  519. color: #b6b6b6;
  520. }
  521. }
  522. .content {
  523. margin-top: 30px;
  524. text-align: center;
  525. .icon-money {
  526. width: 70px;
  527. height: 70px;
  528. }
  529. .amount {
  530. margin-top: 16px;
  531. margin-bottom: 20px;
  532. font-weight: 700;
  533. font-size: 42px;
  534. }
  535. .area-btn {
  536. display: flex;
  537. justify-content: center;
  538. font-weight: 600;
  539. font-size: 15px;
  540. .top-up-btn {
  541. cursor: pointer;
  542. border: 1px solid #1D9BF0;
  543. color: #fff;
  544. background: #1D9BF0;
  545. border-radius: 100px;
  546. width: 110px;
  547. height: 38px;
  548. margin-left: 8px;
  549. line-height: 36px;
  550. }
  551. .withdraw-btn {
  552. background: rgba(56, 154, 255, 0.01);
  553. border: 1px solid #1D9BF0;
  554. box-sizing: border-box;
  555. width: 110px;
  556. font-size: 15px;
  557. height: 38px;
  558. text-align: center;
  559. line-height: 36px;
  560. border-radius: 100px;
  561. color: #1D9BF0;
  562. display: inline-block;
  563. cursor: pointer;
  564. }
  565. }
  566. .msg {
  567. margin-top: 10px;
  568. font-size: 13px;
  569. color: #b6b6b6;
  570. }
  571. }
  572. .tab-bar {
  573. display: flex;
  574. align-items: center;
  575. margin-top: 25px;
  576. position: sticky;
  577. position: -webkit-sticky;
  578. top: 0px;
  579. z-index: 1000;
  580. background-color: #fff;
  581. .tab-item {
  582. flex: 1;
  583. display: flex;
  584. align-items: center;
  585. justify-content: center;
  586. padding: 17px 0;
  587. box-sizing: border-box;
  588. border-bottom: 1px solid #d1d1d1;
  589. cursor: pointer;
  590. .icon {
  591. width: 16px;
  592. height: 16px;
  593. margin-right: 5px;
  594. font-weight: 500;
  595. font-size: 16px;
  596. }
  597. }
  598. .active {
  599. border-bottom: 2px solid #000;
  600. }
  601. }
  602. .list-wrapper {
  603. min-height: 202px;
  604. .give-list {
  605. min-height: 202px;
  606. position: relative;
  607. .cell {
  608. display: flex;
  609. justify-content: space-between;
  610. align-items: center;
  611. min-height: 66px;
  612. box-sizing: border-box;
  613. padding-left: 14px;
  614. position: relative;
  615. cursor: pointer;
  616. .red-dots {
  617. position: absolute;
  618. right: 4px;
  619. top: 4px;
  620. }
  621. .img-wrapper {
  622. position: relative;
  623. margin-right: 16px;
  624. box-sizing: border-box;
  625. .icon-avatar {
  626. width: 34px;
  627. height: 34px;
  628. border-radius: 50%;
  629. }
  630. .icon-give {
  631. position: absolute;
  632. right: -4px;
  633. bottom: 2px;
  634. }
  635. }
  636. .info-wrapper {
  637. flex: 1;
  638. height: 100%;
  639. display: flex;
  640. justify-content: space-between;
  641. align-items: center;
  642. border-bottom: 1px solid #d1d1d1;
  643. box-sizing: border-box;
  644. padding: 10px 14px 10px 0;
  645. .left {
  646. .nickname {
  647. font-weight: 500;
  648. font-size: 14px;
  649. margin-bottom: 5px;
  650. }
  651. .time {
  652. font-size: 12px;
  653. color: #b6b6b6;
  654. }
  655. }
  656. .right {
  657. display: flex;
  658. align-items: center;
  659. cursor: pointer;
  660. .msg {
  661. .bold {
  662. font-weight: 500;
  663. font-size: 14px;
  664. text-align: right;
  665. display: flex;
  666. justify-content: flex-end;
  667. align-items: center;
  668. .blance {
  669. margin-left: 3px;
  670. display: inline-block;
  671. max-width: 68px;
  672. word-break: break-all;
  673. line-height: 18px;
  674. color: #E29A2E;
  675. }
  676. .coin-type {
  677. margin-left: 3px;
  678. }
  679. img {
  680. margin-left: 4px;
  681. width: 14px;
  682. height: 14px;
  683. }
  684. }
  685. .desc {
  686. font-size: 12px;
  687. color: #b6b6b6;
  688. margin-top: 5px;
  689. text-align: right;
  690. .desc-bottom-bar {
  691. display: flex;
  692. align-items: center;
  693. justify-content: end;
  694. margin-top: 10px;
  695. .btn {
  696. min-width: 80px;
  697. height: 29px;
  698. line-height: 29px;
  699. padding: 0 8px;
  700. box-sizing: border-box;
  701. font-weight: 400;
  702. font-size: 14px;
  703. cursor: pointer;
  704. text-align: center;
  705. border-radius: 100px;
  706. color: #5E5E5E;
  707. border: 1px solid #DFDFDF;
  708. }
  709. .send-btn {
  710. border: 1px solid #1D9BF0;
  711. color: #1D9BF0;
  712. }
  713. .detail-btn, .send-btn {
  714. margin-left: 8px;
  715. }
  716. }
  717. }
  718. }
  719. .icon {
  720. width: 18px;
  721. height: 24px;
  722. margin-left: 4px;
  723. margin-right: -5px;
  724. }
  725. }
  726. }
  727. }
  728. .icon-empty {
  729. position: absolute;
  730. left: 50%;
  731. top: 50%;
  732. transform: translate(-50%, -50%);
  733. }
  734. }
  735. .more-list {
  736. .cell {
  737. cursor: pointer;
  738. display: flex;
  739. justify-content: space-between;
  740. align-items: center;
  741. height: 66px;
  742. box-sizing: border-box;
  743. padding-left: 20px;
  744. .icon {
  745. width: 42px;
  746. height: 42px;
  747. border-radius: 50%;
  748. }
  749. .info-wrapper {
  750. flex: 1;
  751. height: 100%;
  752. display: flex;
  753. justify-content: space-between;
  754. align-items: center;
  755. border-bottom: 1px solid #d1d1d1;
  756. box-sizing: border-box;
  757. padding-right: 16px;
  758. .left {
  759. font-weight: 500;
  760. font-size: 16px;
  761. }
  762. .right {
  763. display: flex;
  764. align-items: center;
  765. cursor: pointer;
  766. .icon {
  767. width: 18px;
  768. height: 24px;
  769. }
  770. }
  771. }
  772. }
  773. }
  774. }
  775. }
  776. .page-wrapper::-webkit-scrollbar {
  777. display: none;
  778. }
  779. </style>