index.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815
  1. <template>
  2. <div class="wallet-page">
  3. <!-- 导航栏 -->
  4. <s-header name="我的钱包" :noback="false" :isBorder="false"></s-header>
  5. <!-- 新增提示栏 -->
  6. <van-notice-bar v-if="showNotice" left-icon="info" color="#ed6a0c" background="#fef6e6" scrollable>
  7. 温馨提示:今日收款金额 {{ formatAmount(receivableBalance) }} 元将于T+1日结算后可提现
  8. </van-notice-bar>
  9. <!-- 余额概览 -->
  10. <div class="balance-section">
  11. <div class="section-title">
  12. <van-icon name="balance-list" color="#4d6add" size="18" />
  13. <span>资金账户</span>
  14. </div>
  15. <div class="balance-cards">
  16. <!-- 今日收款卡片 -->
  17. <div class="balance-card today-card" v-if="user.payPlatform === '0'">
  18. <div class="card-header">
  19. <van-icon name="cash-back-record" color="white" size="18" />
  20. <div class="card-title">
  21. <h3>今日收款余额(元)</h3>
  22. </div>
  23. </div>
  24. <div class="amount">{{ formatAmount(receivableBalance) }}</div>
  25. <van-button icon="cash-back-record" @click="handleRecharge">
  26. 立即充值
  27. </van-button>
  28. </div>
  29. <!-- 可提现卡片 -->
  30. <div class="balance-card withdraw-card">
  31. <div class="card-header">
  32. <van-icon name="cash-on-deliver" color="white" size="18" />
  33. <div class="card-title">
  34. <h3>可提现余额(元)</h3>
  35. </div>
  36. </div>
  37. <div class="amount">{{ formatAmount(withdrawableBalance) }}</div>
  38. <van-button icon="cash-on-deliver" @click="handleWithdraw">
  39. 立即提现
  40. </van-button>
  41. </div>
  42. </div>
  43. </div>
  44. <!-- 记录入口 -->
  45. <div class="record-section">
  46. <div class="section-title">
  47. <van-icon name="records" color="#4d6add" size="18" />
  48. <span>交易记录</span>
  49. </div>
  50. <div class="record-cards">
  51. <!-- <div class="record-card" @click="goToAutoRecord">
  52. <div class="card-icon auto">
  53. <van-icon name="passed" size="24" />
  54. </div>
  55. <div class="card-content">
  56. <h3>自动结算</h3>
  57. <p>查看系统自动结算记录</p>
  58. </div>
  59. <van-icon name="arrow" size="16" color="#ccc" />
  60. </div> -->
  61. <div class="record-card" @click="jumpTo('/withdrawList')">
  62. <div class="card-icon manual">
  63. <van-icon name="cash-on-deliver" size="24" />
  64. </div>
  65. <div class="card-content">
  66. <h3>手动提现</h3>
  67. <p>查看手动提现操作记录</p>
  68. </div>
  69. <van-icon name="arrow" size="16" color="#ccc" />
  70. </div>
  71. </div>
  72. </div>
  73. <!-- 银行卡管理 -->
  74. <div class="bank-section">
  75. <div class="section-title">
  76. <van-icon name="credit-pay" color="#4d6add" size="18" />
  77. <span>银行卡管理</span>
  78. </div>
  79. <div class="bank-cards" @click="jumpTo('/settlement')">
  80. <!-- 已绑卡状态 -->
  81. <div class="bank-card" v-if="hasBankCard">
  82. <div class="card-header">
  83. <van-icon name="card" size="20" />
  84. <span>已绑定</span>
  85. </div>
  86. <div class="card-number">{{ bankCardNo }}</div>
  87. <div class="auto-settle-hint" v-if="autoSettle">
  88. <van-icon name="checked" color="#4d6add" size="18" />
  89. <span>本卡已启用自动结算</span>
  90. </div>
  91. <div class="auto-settle-hint" v-if="!autoSettle">
  92. <van-icon name="circle" color="#4d6add" size="18" />
  93. <span>本卡已关闭自动结算</span>
  94. </div>
  95. </div>
  96. <!-- 未绑卡状态 -->
  97. <div class="bank-card empty-state" v-else>
  98. <div class="empty-content">
  99. <p class="empty-title">尚未绑定银行卡</p>
  100. <p class="empty-desc">绑定后可享受快捷支付服务</p>
  101. <van-button type="primary" round size="small" class="bind-btn">
  102. <van-icon name="plus" size="16" />
  103. 立即绑卡
  104. </van-button>
  105. </div>
  106. </div>
  107. </div>
  108. </div>
  109. <div class="bottom-spacer"></div>
  110. <!--提现弹窗-->
  111. <van-popup v-model:show="showWithdrawPopup" position="bottom" round :style="{ height: '40%' }">
  112. <div class="withdraw-popup">
  113. <h3 class="popup-title">提现金额</h3>
  114. <div class="amount-input">
  115. <span class="currency-symbol">¥</span>
  116. <van-field v-model="withdrawAmount" type="number" placeholder="请输入提现金额"
  117. :formatter="formatterAmount" />
  118. </div>
  119. <div class="balance-hint">
  120. 可提现余额 {{ formatAmount(withdrawableBalance) }} 元
  121. </div>
  122. <van-button type="primary" block round class="confirm-btn" @click="confirmWithdraw">
  123. 确认提现
  124. </van-button>
  125. </div>
  126. </van-popup>
  127. </div>
  128. </template>
  129. <script>
  130. import sHeader from "../../components/SimpleHeader";
  131. import { getBalance, withdraw } from "../../service/purse/index"
  132. import { onMounted, ref } from "vue";
  133. import { getOneJoinPayMch } from '../../service/joinpayMch';
  134. import { getHuifuId, getMerchantBusiness, addWithdraw } from "@/service/huifuMch";
  135. import { getLoginUser } from "../../common/js/utils";
  136. import { useRouter } from "vue-router";
  137. import { showConfirmDialog, showSuccessToast, showToast } from "vant";
  138. export default {
  139. components: { sHeader },
  140. setup() {
  141. const user = getLoginUser();
  142. const router = useRouter();
  143. const receivableBalance = ref(0.00); // 今日收款余额
  144. const withdrawableBalance = ref(0.00); // 可提现余额
  145. const autoSettle = ref(false);
  146. const hasBankCard = ref(false);
  147. const bankCardInfo = ref(null);
  148. const bankCardNo = ref('');
  149. // 通知栏显示控制
  150. const showNotice = ref(false);
  151. // 提现弹窗数据
  152. const showWithdrawPopup = ref(false);
  153. const withdrawAmount = ref('');
  154. const withdrawaParams = ref({
  155. adminId: user.id,
  156. amount: 0,
  157. payPlatform: user.payPlatform,
  158. companyType: user.companyType,
  159. })
  160. const handleRecharge = () => {
  161. showToast({ message: '暂未开放' });
  162. };
  163. // 新增金额格式化方法
  164. const formatterAmount = (value) => {
  165. // 只允许输入数字和小数点
  166. value = value.replace(/[^\d.]/g, '');
  167. // 处理多个小数点的情况
  168. const pointIndex = value.indexOf('.');
  169. if (pointIndex > -1) {
  170. value = value.slice(0, pointIndex + 3); // 限制小数点后两位
  171. }
  172. return value;
  173. };
  174. // 新增确认提现方法
  175. const confirmWithdraw = async () => {
  176. const amount = Number(withdrawAmount.value);
  177. if (!amount || amount <= 0) {
  178. showToast('请输入有效的提现金额');
  179. return;
  180. }
  181. if (amount > withdrawableBalance.value) {
  182. showToast('提现金额不可超过可用余额');
  183. return;
  184. }
  185. withdrawaParams.value.amount = amount;
  186. console.log('withdrawaParams', withdrawaParams.value);
  187. showConfirmDialog({
  188. message: '确定要提现 ' + amount + ' 元吗?',
  189. }).then(async () => {
  190. const { data } = await withdraw(withdrawaParams.value);
  191. if (data.code === "00000") {
  192. showSuccessToast('申请成功');
  193. setTimeout(async() => {
  194. await queryBalance();
  195. }, 1500);
  196. }
  197. });
  198. showWithdrawPopup.value = false;
  199. };
  200. // 点击提现
  201. const handleWithdraw = () => {
  202. if (!hasBankCard.value) {
  203. showConfirmDialog({
  204. title: '未绑定银行卡',
  205. message: '提现需要先绑定银行卡,是否立即绑定?',
  206. confirmButtonColor: '#4d6add',
  207. }).then(() => {
  208. router.push('/settlement');
  209. });
  210. return;
  211. }
  212. if (bankCardInfo.value.settMode === 1 || bankCardInfo.value.settType === 1) {
  213. showConfirmDialog({
  214. title: '未开启手动提现',
  215. message: '当前银行卡已开启自动结算,是否切换成手动提现?',
  216. confirmButtonColor: '#4d6add',
  217. }).then(() => {
  218. router.push('/settlement');
  219. });
  220. return;
  221. }
  222. showWithdrawPopup.value = true;
  223. };
  224. const goToAutoRecord = () => {
  225. showToast({ message: '暂未开放' });
  226. };
  227. const goToManualRecord = () => {
  228. showToast({ message: '暂未开放' });
  229. }
  230. onMounted(async () => {
  231. await getBankCard();
  232. await queryBalance();
  233. if (user.payPlatform === '0' && (bankCardInfo.value && (bankCardInfo.value.settMode === 2 || bankCardInfo.value.settType === 2)) ) {
  234. showNotice.value = true;
  235. }
  236. // 查询汇付是否开启取现功能
  237. if (user.payPlatform === '1' && bankCardInfo.value.huifuId != null && bankCardInfo.value.tokenNo == null) {
  238. const { data } = await getMerchantBusiness({ adminId: user.id });
  239. if (data.code === "00000") {
  240. if (data.data === null || data.data === "") {
  241. const { res } = await addWithdraw({ adminId: user.id });
  242. if (res.code === "00000") {
  243. console.log('res', res.data);
  244. }
  245. }
  246. }
  247. }
  248. });
  249. // 查询余额
  250. const queryBalance = async () => {
  251. try {
  252. const { data } = await getBalance({ adminId: user.id });
  253. if (data.code === "00000") {
  254. if (data.data.receivableBalance != null) {
  255. receivableBalance.value = data.data.receivableBalance;
  256. }
  257. if (data.data.withdrawableBalance != null) {
  258. withdrawableBalance.value = data.data.withdrawableBalance;
  259. }
  260. }
  261. } catch (error) {
  262. console.log('error', error);
  263. }
  264. };
  265. // 格式化金额
  266. const formatAmount = (amount) => {
  267. return new Intl.NumberFormat('en-US', {
  268. minimumFractionDigits: 2,
  269. maximumFractionDigits: 2
  270. }).format(Number(amount))
  271. };
  272. // 获取绑定银行卡
  273. const getBankCard = async () => {
  274. if (user.payPlatform && user.payPlatform == "1") {
  275. // 汇付
  276. const { data } = await getHuifuId({ adminId: user.id });
  277. if (data.code === "00000" && data.data) {
  278. bankCardInfo.value = data.data;
  279. if (bankCardInfo.value.cardNo != null) {
  280. bankCardNo.value = formatBankCard(bankCardInfo.value.cardNo);
  281. hasBankCard.value = true;
  282. }
  283. if (data.data.settType === 1) {
  284. autoSettle.value = true;
  285. }
  286. }
  287. } else {
  288. // 汇聚
  289. const { data } = await getOneJoinPayMch({ adminId: user.id });
  290. if (data.code === "00000" && data.data) {
  291. bankCardInfo.value = data.data;
  292. if (bankCardInfo.value.bankAccountNo != null) {
  293. bankCardNo.value = formatBankCard(bankCardInfo.value.bankAccountNo);
  294. hasBankCard.value = true;
  295. }
  296. if (data.data.settMode === 1) {
  297. autoSettle.value = true;
  298. }
  299. }
  300. }
  301. };
  302. // 格式化银行卡号
  303. const formatBankCard = (cardNumber) => {
  304. if (!cardNumber) return '未获取卡号';
  305. const cleaned = cardNumber.toString().replace(/\D/g, '');
  306. // 动态分组逻辑
  307. const lastFour = cleaned.slice(-4);
  308. const starCount = Math.max(cleaned.length - 4, 0);
  309. const starGroups = Array(Math.ceil(starCount / 4)).fill('****').join(' ');
  310. return `${starGroups} ${lastFour}`.trim();
  311. };
  312. // 跳转绑卡页面
  313. const jumpTo = (value) => {
  314. router.push({ path: value });
  315. };
  316. return {
  317. handleRecharge,
  318. goToAutoRecord,
  319. goToManualRecord,
  320. receivableBalance,
  321. withdrawableBalance,
  322. formatAmount,
  323. bankCardInfo,
  324. hasBankCard,
  325. autoSettle,
  326. formatBankCard,
  327. jumpTo,
  328. // 提现
  329. handleWithdraw,
  330. showWithdrawPopup,
  331. withdrawAmount,
  332. formatterAmount,
  333. confirmWithdraw,
  334. // 通知栏
  335. showNotice,
  336. // 数据
  337. bankCardNo,
  338. user,
  339. };
  340. }
  341. };
  342. </script>
  343. <style lang="less" scoped>
  344. /* 公共样式 */
  345. .wallet-page {
  346. background: #f8f9ff;
  347. }
  348. .section-title {
  349. display: flex;
  350. align-items: center;
  351. gap: 4px;
  352. padding: 10px 10px;
  353. font-size: 18px;
  354. color: #4d6add;
  355. font-weight: 700;
  356. }
  357. /**
  358. 余额卡片
  359. */
  360. .balance-section {
  361. margin: 10px 0px;
  362. }
  363. .balance-cards {
  364. display: grid;
  365. gap: 15px;
  366. padding: 0 12px;
  367. }
  368. /* 基础卡片样式 */
  369. .balance-card {
  370. border-radius: 16px;
  371. padding: 15px;
  372. position: relative;
  373. overflow: hidden;
  374. box-shadow: 0 8px 24px -6px rgba(0, 0, 0, 0.12);
  375. transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  376. min-height: 180px;
  377. }
  378. /* 卡片悬停动效 */
  379. .balance-card:hover {
  380. transform: translateY(-5px);
  381. }
  382. /* 今日收款卡片 */
  383. .today-card {
  384. background: linear-gradient(135deg,
  385. #4f6cdf 0%,
  386. #6b8cff 100%);
  387. color: white;
  388. border: 1px solid rgba(255, 255, 255, 0.15);
  389. --start-color: #4f6cdf;
  390. --end-color: #6b8cff;
  391. }
  392. /* 可提现卡片 */
  393. .withdraw-card {
  394. background: linear-gradient(135deg,
  395. #38b48d 0%,
  396. #5cd4b0 100%);
  397. color: white;
  398. border: 1px solid rgba(255, 255, 255, 0.15);
  399. --start-color: #38b48d;
  400. --end-color: #5cd4b0;
  401. }
  402. /* 装饰性光斑 */
  403. .balance-card::after {
  404. content: "";
  405. position: absolute;
  406. width: 200px;
  407. height: 200px;
  408. background: radial-gradient(circle,
  409. rgba(255, 255, 255, 0.15) 0%,
  410. rgba(255, 255, 255, 0) 70%);
  411. top: -50px;
  412. right: -50px;
  413. }
  414. /* 卡片内容样式 */
  415. .card-header {
  416. display: flex;
  417. align-items: center;
  418. gap: 10px;
  419. margin-bottom: 10px;
  420. position: relative;
  421. z-index: 1;
  422. }
  423. .card-header .van-icon {
  424. background: rgba(255, 255, 255, 0.15);
  425. padding: 5px;
  426. border-radius: 10px;
  427. }
  428. .card-title h3 {
  429. margin: 0;
  430. font-size: 15px;
  431. font-weight: 500;
  432. letter-spacing: 0.5px;
  433. }
  434. .amount {
  435. font-size: 30px;
  436. font-weight: 600;
  437. margin: 10px 0;
  438. text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  439. position: relative;
  440. z-index: 1;
  441. }
  442. /* 按钮样式 */
  443. /* 限定在卡片内的按钮 */
  444. .balance-card .van-button {
  445. backdrop-filter: blur(8px);
  446. background: rgba(255, 255, 255, 0.15) !important;
  447. border: 1px solid rgba(255, 255, 255, 0.3) !important;
  448. color: white !important;
  449. border-radius: 20px;
  450. transition: all 0.3s ease;
  451. width: auto;
  452. }
  453. /* 仅影响卡片内的按钮悬停状态 */
  454. .balance-card .van-button:hover {
  455. background: rgba(255, 255, 255, 0.25) !important;
  456. transform: scale(1.05);
  457. }
  458. /* 提示文字 */
  459. .hint-text {
  460. font-size: 12px;
  461. opacity: 0.9;
  462. margin-top: 12px;
  463. display: flex;
  464. align-items: center;
  465. gap: 6px;
  466. }
  467. /* 响应式调整 */
  468. @media (max-width: 480px) {
  469. .amount {
  470. font-size: 28px;
  471. }
  472. .balance-card {
  473. min-height: 140px;
  474. padding: 16px;
  475. }
  476. }
  477. /* 动态光效增强 */
  478. @keyframes glow {
  479. 0% {
  480. opacity: 0.5;
  481. }
  482. 50% {
  483. opacity: 0.8;
  484. }
  485. 100% {
  486. opacity: 0.5;
  487. }
  488. }
  489. .balance-card::before {
  490. content: "";
  491. position: absolute;
  492. top: 0;
  493. left: 0;
  494. right: 0;
  495. bottom: 0;
  496. background: linear-gradient(45deg,
  497. transparent 40%,
  498. rgba(255, 255, 255, 0.1) 50%,
  499. transparent 60%);
  500. animation: glow 3s infinite;
  501. pointer-events: none;
  502. }
  503. /* 记录入口 */
  504. .record-section {
  505. margin-top: 5px;
  506. }
  507. .record-cards {
  508. display: grid;
  509. gap: 12px;
  510. }
  511. .record-card {
  512. background: white;
  513. border-radius: 12px;
  514. padding: 0 10px;
  515. margin: 0 10px;
  516. display: flex;
  517. align-items: center;
  518. gap: 12px;
  519. box-shadow: 0 2px 8px rgba(77, 106, 221, 0.05);
  520. transition: transform 0.2s ease;
  521. &:active {
  522. transform: scale(0.98);
  523. }
  524. }
  525. .card-icon {
  526. width: 44px;
  527. height: 44px;
  528. border-radius: 10px;
  529. display: flex;
  530. align-items: center;
  531. justify-content: center;
  532. &.auto {
  533. background: rgba(77, 106, 221, 0.1);
  534. color: #4d6add;
  535. }
  536. &.manual {
  537. background: rgba(255, 152, 0, 0.1);
  538. color: #ff9500;
  539. }
  540. }
  541. .card-content {
  542. flex: 1;
  543. h3 {
  544. font-size: 15px;
  545. color: #333;
  546. margin-bottom: 4px;
  547. }
  548. p {
  549. font-size: 12px;
  550. color: #999;
  551. }
  552. }
  553. /* 银行卡管理 */
  554. .bank-section {
  555. margin-top: 5px;
  556. }
  557. .bank-cards {
  558. display: grid;
  559. gap: 12px;
  560. }
  561. .bank-card {
  562. background: white;
  563. border-radius: 12px;
  564. padding: 10px 5px;
  565. margin: 0 10px;
  566. box-shadow: 0 4px 12px rgba(77, 106, 221, 0.08);
  567. position: relative;
  568. overflow: hidden;
  569. &::before {
  570. content: '';
  571. position: absolute;
  572. left: 0;
  573. top: 0;
  574. bottom: 0;
  575. width: 4px;
  576. background: #4d6add;
  577. }
  578. &.backup::before {
  579. background: #6a82ee;
  580. }
  581. }
  582. .card-header {
  583. display: flex;
  584. align-items: center;
  585. gap: 8px;
  586. margin-bottom: 12px;
  587. span {
  588. font-size: 14px;
  589. color: #666;
  590. }
  591. .van-tag {
  592. transform: scale(0.9);
  593. }
  594. }
  595. .card-number {
  596. font-family: monospace;
  597. font-size: 18px;
  598. color: #333;
  599. letter-spacing: 2px;
  600. margin: 16px 10px;
  601. }
  602. .card-footer {
  603. display: flex;
  604. align-items: center;
  605. justify-content: space-between;
  606. color: #999;
  607. padding: 0 10px;
  608. font-size: 12px;
  609. }
  610. /* 统一按钮样式 */
  611. :deep(.van-button) {
  612. font-weight: 500;
  613. letter-spacing: 0.5px;
  614. }
  615. .auto-settle-hint {
  616. margin-top: 12px;
  617. padding-top: 12px;
  618. border-top: 1px dashed #eee;
  619. display: flex;
  620. align-items: center;
  621. gap: 8px;
  622. color: #666;
  623. font-size: 13px;
  624. padding: 10px 5px;
  625. }
  626. /* 未绑卡状态样式 */
  627. .bank-card.empty-state {
  628. background: linear-gradient(135deg, #ffffff 0%, #f6f7fc 100%);
  629. display: flex;
  630. align-items: center;
  631. justify-content: center;
  632. }
  633. .empty-content {
  634. text-align: center;
  635. padding: 10px;
  636. }
  637. .empty-icon {
  638. margin-bottom: 12px;
  639. filter: drop-shadow(0 2px 4px rgba(77, 106, 221, 0.1));
  640. }
  641. .empty-title {
  642. color: #2d3447;
  643. font-size: 16px;
  644. margin-bottom: 8px;
  645. }
  646. .empty-desc {
  647. color: #a3aac7;
  648. font-size: 12px;
  649. margin-bottom: 16px;
  650. }
  651. .bind-btn {
  652. background: #4d6add;
  653. padding: 8px 24px;
  654. box-shadow: 0 3px 8px rgba(77, 106, 221, 0.2);
  655. }
  656. .bind-btn .van-icon {
  657. margin-right: 6px;
  658. vertical-align: -2px;
  659. }
  660. /* 占位元素样式 */
  661. .bottom-spacer {
  662. height: 50px;
  663. height: calc(60px + env(safe-area-inset-bottom));
  664. pointer-events: none;
  665. /* 防止遮挡点击 */
  666. }
  667. /**
  668. * 提现弹窗样式
  669. */
  670. .withdraw-popup {
  671. padding: 20px;
  672. display: flex;
  673. flex-direction: column;
  674. .popup-title {
  675. text-align: center;
  676. font-size: 18px;
  677. color: #333;
  678. margin-bottom: 20px;
  679. }
  680. .amount-input {
  681. display: flex;
  682. align-items: center;
  683. margin: 15px 0;
  684. border-bottom: 1px solid #eee;
  685. .currency-symbol {
  686. font-size: 24px;
  687. color: #333;
  688. margin-right: 8px;
  689. }
  690. :deep(.van-field) {
  691. padding: 10px 0;
  692. font-size: 22px;
  693. input {
  694. font-size: 22px;
  695. font-weight: 500;
  696. }
  697. }
  698. }
  699. .balance-hint {
  700. font-size: 12px;
  701. color: #999;
  702. margin-bottom: auto;
  703. }
  704. .confirm-btn {
  705. margin-top: 20px;
  706. background: #4d6add;
  707. border: none;
  708. &:active {
  709. opacity: 0.9;
  710. }
  711. }
  712. }
  713. </style>