| | |
| | | } |
| | | |
| | | &.hasPaddingTop { |
| | | padding-top: 20px; |
| | | padding-top: 32px; |
| | | } |
| | | |
| | | .content-scroll-view-wrapper-inner { |
| | |
| | | v-if="hasLinearBg" |
| | | class="page-layout-linear-bg" |
| | | :style="{ |
| | | height: Taro.pxTransform(props.linearBgHeight), |
| | | height: '100%', |
| | | }" |
| | | ></div> |
| | | </slot> |
| | |
| | | top: 0; |
| | | left: 0; |
| | | width: 100%; |
| | | background: linear-gradient( |
| | | 180deg, |
| | | boleGetCssVar('color', 'primary') 0%, |
| | | #5a86f6 56%, |
| | | #f9f9fb 100% |
| | | ); |
| | | filter: blur(0px); |
| | | background: linear-gradient(180deg, #7cd0ff 0%, rgba(255, 255, 255, 0) 43%, #ffffff 100%); |
| | | border-radius: 0px 0px 20px 20px; |
| | | } |
| | | |
| | |
| | | |
| | | .pro-list { |
| | | background: #ffffff; |
| | | padding: 32px 0; |
| | | } |
| | | </style> |
| | |
| | | width: auto; |
| | | margin-right: 78rpx; |
| | | flex-direction: column; |
| | | font-size: 26rpx; |
| | | color: boleGetCssVar('text-color', 'secondary'); |
| | | font-size: 30rpx; |
| | | color: boleGetCssVar('text-color', 'regular'); |
| | | align-items: center; |
| | | transition: all 0.3s ease; |
| | | min-width: 0; |
| | |
| | | } |
| | | |
| | | .nut-tabs__titles-item__text { |
| | | font-size: 28rpx; |
| | | font-size: 30rpx; |
| | | color: boleGetCssVar('text-color', 'regular'); |
| | | line-height: 40rpx; |
| | | } |
| | | |
| | | &.active { |
| | | color: #222; |
| | | font-weight: 700; |
| | | color: boleGetCssVar('color', 'primary'); |
| | | font-weight: normal; |
| | | font-size: 30rpx; |
| | | |
| | | .nut-tabs__sub-titles-item__text { |
| | |
| | | } |
| | | |
| | | .nut-tabs__titles-item__text { |
| | | color: boleGetCssVar('text-color', 'primary'); |
| | | color: boleGetCssVar('color', 'primary'); |
| | | } |
| | | } |
| | | |
| | |
| | | .nut-tabs__titles-item__line { |
| | | // width: 100%; |
| | | background: boleGetCssVar('color', 'primary'); |
| | | bottom: 0; |
| | | bottom: 20rpx; |
| | | height: 4rpx; |
| | | max-width: 40rpx; |
| | | } |
| | |
| | | import { ref, PropType, onMounted, reactive } from 'vue'; |
| | | import { ref, PropType, onMounted, reactive, VNode } from 'vue'; |
| | | |
| | | export type TabsSize = 'large' | 'normal' | 'small'; |
| | | |
| | |
| | | }, |
| | | type: { |
| | | type: String, |
| | | default: 'smile', //card、line、smile |
| | | default: 'line', //card、line、smile |
| | | }, |
| | | titleScroll: { |
| | | type: Boolean, |
| | |
| | | common: { |
| | | CommonPageBg: `${OssBasePath}/matchMakingMini/assets/common/icon-common-page-bg.png`, |
| | | HomePageBg: `${OssBasePath}/lifePayment/assets/common/icon-home-page-bg.png`, |
| | | DataPageBg: `${OssBasePath}/lifePayment/assets/common/icon-data-page-bg.png`, |
| | | MinePageBg: `${OssBasePath}/lifePayment/assets/common/icon-mine-page-bg.png`, |
| | | PhoneBillRechargePageBg: `${OssBasePath}/lifePayment/assets/common/icon-phoneBillRecharge-page-bg.png`, |
| | | }, |
| | | mine: { |
| | | // Bg: `${OssBasePath}/matchMakingMini/assets/mine/icon-bg.png`, |
| | |
| | | // background-color: $body-background-color; |
| | | // } |
| | | |
| | | .index-page-wrapper { |
| | | .home-page-bg { |
| | | .mine-page-wrapper { |
| | | .mine-page-bg { |
| | | position: fixed; |
| | | z-index: -1; |
| | | top: 0; |
| | |
| | | |
| | | .mine-page-top-view { |
| | | display: flex; |
| | | padding: 36px 36px 64px; |
| | | padding: 36px boleGetCssVar('size', 'body-padding-h') 64px; |
| | | |
| | | .mine-avatar { |
| | | width: 176px; |
| | |
| | | <template> |
| | | <!-- <PageLayoutWithBg class="mine-page-wrapper" title="我的" :need-auth="false"> |
| | | <template #navigationBar> |
| | | <TransparentNavigationBar |
| | | title="个人中心" |
| | | :is-absolute="false" |
| | | mode="dark" |
| | | ></TransparentNavigationBar> |
| | | </template> |
| | | <template #bg> |
| | | <img :src="OssAssets.mine.Bg" class="mine-page-bg" :style="{ height: `${bgHeight}px` }" /> |
| | | </template> |
| | | <div class="mine-page-top-view" @click="goLogin"> |
| | | <img class="mine-avatar" :src="DefaultAvatar" alt="" /> |
| | | <div class="user-info"> |
| | | <div class="user-info-name" v-if="isLogin"> |
| | | {{ hiddenPhoneNumber(virtualPhoneNumber) }} |
| | | </div> |
| | | <div class="mine-go-login" v-else>登录</div> |
| | | </div> |
| | | </div> |
| | | <ContentScrollView> |
| | | <List class="mine-list-wrapper"> |
| | | <ListItem title="订单管理" @click="goOrderManage"></ListItem> |
| | | <ListItem title="户号管理" @click="goUserAccountList"></ListItem> |
| | | <template v-if="isChannelAccount"> |
| | | <ListItem title="数据看板" @click="goDashboard"></ListItem> |
| | | <ListItem title="推广二维码" @click="goShareQrcode"></ListItem> |
| | | </template> |
| | | <ListItem v-if="isWeb && !isInAlipay" title="在线客服" @click="handleChat"></ListItem> |
| | | <ListItem v-if="isLogin" title="退出登录" @click="goLogout"></ListItem> |
| | | </List> |
| | | </ContentScrollView> |
| | | </PageLayoutWithBg> --> |
| | | <PageLayout class="index-page-wrapper" :need-auth="false"> |
| | | <PageLayout class="mine-page-wrapper" :need-auth="false"> |
| | | <template #navigationBar> |
| | | <TransparentNavigationBar :title="'个人中心'" :is-absolute="false"> |
| | | </TransparentNavigationBar> |
| | | </template> |
| | | <template #bg> |
| | | <img :src="OssAssets.common.HomePageBg" class="home-page-bg" /> |
| | | <img :src="OssAssets.common.MinePageBg" class="mine-page-bg" /> |
| | | </template> |
| | | <div class="mine-page-top-view" @click="goLogin"> |
| | | <img class="mine-avatar" :src="DefaultAvatar" alt="" /> |
| | |
| | | <div class="mine-go-login" v-else>登录</div> |
| | | </div> |
| | | </div> |
| | | <ContentView> |
| | | <ContentScrollView style="background-color: transparent"> |
| | | <List class="mine-list-wrapper"> |
| | | <ListItemV2 :icon="IconMineOrder" title="订单管理" @click="goOrderManage"></ListItemV2> |
| | | <ListItemV2 :icon="IconMineUserId" title="户号管理" @click="goUserAccountList"></ListItemV2> |
| | |
| | | title="在线客服" |
| | | @click="handleChat" |
| | | ></ListItemV2> |
| | | <ListItemV2 v-if="isLogin" title="退出登录" @click="goLogout"></ListItemV2> |
| | | <ListItemV2 |
| | | v-if="isLogin" |
| | | title="退出登录" |
| | | @click="goLogout" |
| | | :icon="IconMineExist" |
| | | ></ListItemV2> |
| | | </List> |
| | | </ContentView> |
| | | </ContentScrollView> |
| | | </PageLayout> |
| | | </template> |
| | | |
| | |
| | | import IconMineDataBoard from '@/assets/mine/icon-mine-data-board.png'; |
| | | import IconMinePromotion from '@/assets/mine/icon-mine-promotion.png'; |
| | | import IconMineCustomerService from '@/assets/mine/icon-mine-customer-service.png'; |
| | | import IconMineExist from '@/assets/mine/icon-mine-exist.png'; |
| | | import { useSystemStore } from '@/stores/modules/system'; |
| | | import { useUserStore } from '@/stores/modules/user'; |
| | | import { Message } from '@/utils'; |
| | |
| | | <template> |
| | | <ContentScrollView has-padding-top style="background-color: #fff"> |
| | | <ContentScrollView has-padding-top style="background-color: transparent"> |
| | | <Dashboard /> |
| | | </ContentScrollView> |
| | | </template> |
| | |
| | | <template> |
| | | <PageLayout title="数据看板" class="dashboard-page-wrapper" hasBorder> |
| | | <PageLayout class="dashboard-page-wrapper"> |
| | | <template #navigationBar> |
| | | <TransparentNavigationBar :title="'数据看板'" :is-absolute="false"> |
| | | </TransparentNavigationBar> |
| | | </template> |
| | | <template #bg> |
| | | <img :src="OssAssets.common.DataPageBg" class="dashboard-page-bg" /> |
| | | </template> |
| | | <InnerPage /> |
| | | </PageLayout> |
| | | </template> |
| | |
| | | <script setup lang="ts"> |
| | | import { PageLayout } from '@/components'; |
| | | import InnerPage from './InnerPage.vue'; |
| | | import { OssAssets } from '@/constants'; |
| | | |
| | | defineOptions({ |
| | | name: 'dashboard', |
| | | }); |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/styles/common.scss'; |
| | | |
| | | .dashboard-page-wrapper { |
| | | .dashboard-page-bg { |
| | | position: fixed; |
| | | z-index: -1; |
| | | top: 0; |
| | | left: 0; |
| | | width: 100%; |
| | | height: 100%; |
| | | object-fit: cover; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <PageLayout title="订单管理" class="order-page-wrapper" hasBorder> |
| | | <PageLayout title="订单管理" class="order-page-wrapper"> |
| | | <InnerPage /> |
| | | </PageLayout> |
| | | </template> |
| | |
| | | <template> |
| | | <ContentScrollView :paddingH="false" style="background-color: #fff"> |
| | | <ContentScrollView hasPaddingTop style="background-color: transparent"> |
| | | <PhoneBillRecharge |
| | | @goPay="goPay" |
| | | :isDev="isDev" |
| | |
| | | <template> |
| | | <PageLayout title="话费充值" class="phoneBillRecharge-page-wrapper" hasBorder> |
| | | <PageLayout |
| | | class="phoneBillRecharge-page-wrapper" |
| | | :style="{ |
| | | backgroundImage: `url(${OssAssets.common.PhoneBillRechargePageBg})`, |
| | | }" |
| | | > |
| | | <template #navigationBar> |
| | | <TransparentNavigationBar |
| | | :title="'话费充值'" |
| | | :is-absolute="false" |
| | | mode="dark" |
| | | navigationArrowWhite |
| | | > |
| | | </TransparentNavigationBar> |
| | | </template> |
| | | <InnerPage /> |
| | | </PageLayout> |
| | | </template> |
| | |
| | | <script setup lang="ts"> |
| | | import { PageLayout } from '@/components'; |
| | | import InnerPage from './InnerPage.vue'; |
| | | import { OssAssets } from '@/constants'; |
| | | |
| | | defineOptions({ |
| | | name: 'phoneBillRecharge', |
| | | }); |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/styles/common.scss'; |
| | | |
| | | .phoneBillRecharge-page-wrapper { |
| | | background-size: 100% 452px; |
| | | background-color: $body-background-color; |
| | | background-repeat: no-repeat; |
| | | |
| | | .phoneBillRecharge-page-bg { |
| | | position: fixed; |
| | | z-index: -1; |
| | | top: 0; |
| | | left: 0; |
| | | width: 100%; |
| | | height: 452px; |
| | | object-fit: cover; |
| | | } |
| | | } |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <div :class="['lp-chunk-wrapper', { hasPaddingBottom, borderRadiusSmall }]"> |
| | | <div class="lp-chunk-title" v-if="title">{{ title }}</div> |
| | | <div class="lp-chunk-content"> |
| | | <slot></slot> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | defineOptions({ |
| | | name: 'Chunk', |
| | | }); |
| | | |
| | | type Props = { |
| | | title?: string; |
| | | hasPaddingBottom?: boolean; |
| | | borderRadiusSmall?: boolean; |
| | | }; |
| | | |
| | | const props = withDefaults(defineProps<Props>(), { |
| | | hasPaddingBottom: true, |
| | | }); |
| | | </script> |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .lp-chunk-wrapper { |
| | | padding: 0 26px; |
| | | border-radius: 32px; |
| | | background: #ffffff; |
| | | margin-bottom: 32px; |
| | | |
| | | &:last-child { |
| | | margin-bottom: 0; |
| | | } |
| | | |
| | | &.hasPaddingBottom { |
| | | padding-bottom: 48px; |
| | | } |
| | | |
| | | &.borderRadiusSmall { |
| | | border-radius: 20px; |
| | | } |
| | | |
| | | .lp-chunk-title { |
| | | height: 88px; |
| | | background: #ffffff; |
| | | font-weight: 500; |
| | | font-size: 34px; |
| | | color: boleGetCssVar('text-color', 'primary'); |
| | | line-height: 88px; |
| | | } |
| | | |
| | | .lp-chunk-content { |
| | | .nut-cell.bole-form-item { |
| | | padding: 0; |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | .dashboard-view { |
| | | padding-top: 40px; |
| | | .pro-statistics-wrapper { |
| | | text-align: center; |
| | | // display: flex; |
| | |
| | | font-size: 28px; |
| | | } |
| | | } |
| | | |
| | | .dashboard-large-cell { |
| | | display: flex; |
| | | align-items: center; |
| | | padding: 16px 0; |
| | | background: linear-gradient(90deg, #fff0ea 0%, #faf9f4 52%, #f1fffd 100%); |
| | | border-radius: 12px; |
| | | justify-content: space-between; |
| | | gap: 34px; |
| | | |
| | | .dashboard-item-wrapper { |
| | | background: transparent; |
| | | flex: 1; |
| | | min-width: 0; |
| | | } |
| | | } |
| | | |
| | | .dashboard-large-cell1 { |
| | | margin-bottom: 32px; |
| | | } |
| | | |
| | | .dashboard-item-grad { |
| | | display: grid; |
| | | grid-template-columns: repeat(2, 1fr); |
| | | gap: 32px; |
| | | } |
| | | } |
| | | |
| | | .dashboard-item-wrapper { |
| | | background: linear-gradient(90deg, #edf6ff 0%, #f6f6fe 55%, #f9fdfe 100%); |
| | | border-radius: 12px; |
| | | padding: 24px; |
| | | |
| | | .dashboard-item-title-wrapper { |
| | | display: flex; |
| | | align-items: center; |
| | | margin-bottom: 20px; |
| | | |
| | | .dashboard-item-title-icon { |
| | | width: 48px; |
| | | height: 48px; |
| | | margin-right: 16px; |
| | | } |
| | | |
| | | .dashboard-item-title { |
| | | font-size: 26px; |
| | | color: boleGetCssVar('text-color', 'regular'); |
| | | } |
| | | } |
| | | |
| | | .dashboard-item-value-wrapper { |
| | | display: flex; |
| | | align-items: flex-end; |
| | | font-weight: bold; |
| | | font-size: 34px; |
| | | color: #161b2e; |
| | | |
| | | .dashboard-item-symbol { |
| | | font-size: 26px; |
| | | } |
| | | |
| | | .dashboard-item-value { |
| | | flex: 1; |
| | | min-width: 0; |
| | | @include ellipsis; |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | .order-bill-recharge { |
| | | .nut-cell-group__wrap { |
| | | background-color: transparent; |
| | | |
| | | .nut-cell { |
| | | background-color: transparent; |
| | | } |
| | | } |
| | | .recharge-button { |
| | | width: 100%; |
| | | margin: 40px 0; |
| | |
| | | <template> |
| | | <NutGrid :gutter="10" :column-num="3" square class="dashboard-view"> |
| | | <!-- <NutGrid :gutter="10" :column-num="3" square class="dashboard-view"> |
| | | <NutGridItem> |
| | | <div class="pro-statistics-wrapper"> |
| | | <div class="pro-statistics-title">累计收款</div> |
| | |
| | | <div class="pro-statistics-content">{{ topStatistics?.yesterdayActiveUsers ?? 0 }}</div> |
| | | </div> |
| | | </NutGridItem> |
| | | </NutGrid> |
| | | </NutGrid> --> |
| | | <div class="dashboard-view"> |
| | | <Chunk title="核心数据"> |
| | | <DashboardLargeCell class="dashboard-large-cell1"> |
| | | <DashboardItem |
| | | title="累计收款" |
| | | :icon="IconDashboard1" |
| | | :value="toThousand(topStatistics?.accumulatedReceipts ?? 0)" |
| | | need-symbol |
| | | /> |
| | | <DashboardItem |
| | | title="昨日收款" |
| | | :icon="IconDashboard2" |
| | | :value="toThousand(topStatistics?.receiptsYesterday ?? 0)" |
| | | need-symbol |
| | | /> |
| | | </DashboardLargeCell> |
| | | <div class="dashboard-item-grad"> |
| | | <DashboardItem |
| | | title="累计下单" |
| | | :icon="IconDashboard3" |
| | | :value="toThousand(topStatistics?.accumulatedOrders ?? 0)" |
| | | /> |
| | | <DashboardItem |
| | | title="昨日下单" |
| | | :icon="IconDashboard4" |
| | | :value="toThousand(topStatistics?.ordersNumYesterday ?? 0)" |
| | | /> |
| | | <DashboardItem |
| | | title="累计收益" |
| | | :icon="IconDashboard5" |
| | | :value="toThousand(topStatistics?.accumulatedIncome ?? 0)" |
| | | need-symbol |
| | | /> |
| | | <DashboardItem |
| | | title="昨日成功" |
| | | :icon="IconDashboard6" |
| | | :value="toThousand(topStatistics?.yesterdaySuccess ?? 0)" |
| | | /> |
| | | </div> |
| | | </Chunk> |
| | | <Chunk title="用户统计"> |
| | | <DashboardLargeCell> |
| | | <DashboardItem |
| | | title="累计用户" |
| | | :icon="IconDashboard7" |
| | | :value="toThousand(topStatistics?.accumulatedUsers ?? 0)" |
| | | /> |
| | | <DashboardItem |
| | | title="昨日活跃" |
| | | :icon="IconDashboard8" |
| | | :value="toThousand(topStatistics?.yesterdayActiveUsers ?? 0)" |
| | | /> |
| | | </DashboardLargeCell> |
| | | </Chunk> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { Grid as NutGrid, GridItem as NutGridItem } from '@nutui/nutui-taro'; |
| | | import { toThousand } from '../../utils'; |
| | | import { useQuery } from '@tanstack/vue-query'; |
| | | import { useLifeRechargeContext, TopStatisticsOutput } from '@life-payment/core-vue'; |
| | | import { computed } from 'vue'; |
| | | import Chunk from '../../components/Layout/Chunk.vue'; |
| | | import DashboardLargeCell from './components/DashboardLargeCell.vue'; |
| | | import DashboardItem from './components/DashboardItem.vue'; |
| | | import IconDashboard1 from '../../assets/dashboard/icon-dashboard1.png'; |
| | | import IconDashboard2 from '../../assets/dashboard/icon-dashboard2.png'; |
| | | import IconDashboard3 from '../../assets/dashboard/icon-dashboard3.png'; |
| | | import IconDashboard4 from '../../assets/dashboard/icon-dashboard4.png'; |
| | | import IconDashboard5 from '../../assets/dashboard/icon-dashboard5.png'; |
| | | import IconDashboard6 from '../../assets/dashboard/icon-dashboard6.png'; |
| | | import IconDashboard7 from '../../assets/dashboard/icon-dashboard7.png'; |
| | | import IconDashboard8 from '../../assets/dashboard/icon-dashboard8.png'; |
| | | |
| | | defineOptions({ |
| | | name: 'Dashboard', |
New file |
| | |
| | | <template> |
| | | <div class="dashboard-item-wrapper"> |
| | | <div class="dashboard-item-title-wrapper"> |
| | | <img class="dashboard-item-title-icon" :src="icon" /> |
| | | <div class="dashboard-item-title">{{ title }}</div> |
| | | </div> |
| | | <div class="dashboard-item-value-wrapper"> |
| | | <div class="dashboard-item-symbol" v-if="needSymbol" v-html="showSymbol"></div> |
| | | <div class="dashboard-item-value">{{ value }}</div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { computed } from 'vue'; |
| | | |
| | | defineOptions({ |
| | | name: 'DashboardItem', |
| | | }); |
| | | |
| | | type Props = { |
| | | icon?: string; |
| | | title?: string; |
| | | value?: string | number; |
| | | needSymbol?: boolean; |
| | | symbol?: string; |
| | | }; |
| | | |
| | | const props = withDefaults(defineProps<Props>(), { |
| | | needSymbol: false, |
| | | symbol: '¥', |
| | | }); |
| | | |
| | | const replaceSpecialChar = (url: string) => { |
| | | url = url.replace(/"/g, '"'); |
| | | url = url.replace(/&/g, '&'); |
| | | url = url.replace(/</g, '<'); |
| | | url = url.replace(/>/g, '>'); |
| | | url = url.replace(/ /g, ' '); |
| | | url = url.replace(/¥/g, '¥'); |
| | | return url; |
| | | }; |
| | | |
| | | const showSymbol = computed(() => { |
| | | const symbol = props.needSymbol ? replaceSpecialChar(props.symbol) : ''; |
| | | return symbol; |
| | | }); |
| | | </script> |
New file |
| | |
| | | <template> |
| | | <div class="dashboard-large-cell"> |
| | | <slot></slot> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | defineOptions({ |
| | | name: 'DashboardLargeCell', |
| | | }); |
| | | |
| | | // type Props = {}; |
| | | |
| | | // const props = withDefaults(defineProps<Props>(), {}); |
| | | </script> |
| | |
| | | const stepperInfo = useStepper(['step1', 'step2'], 'step2'); |
| | | const current = computed(() => stepperInfo.current.value); |
| | | |
| | | const outCurrent = defineModel<'step1' | 'step2'>({ |
| | | set(value) { |
| | | stepperInfo.goTo(value); |
| | | }, |
| | | get() { |
| | | return stepperInfo.current.value; |
| | | }, |
| | | }); |
| | | |
| | | const emit = defineEmits<{ |
| | | (e: 'goPay', orderNo: string): void; |
| | | (e: 'paySuccess', orderNo: string): void; |
| | |
| | | label-position="top" |
| | | class="order-bill-recharge phone" |
| | | > |
| | | <NutFormItem class="bole-form-item" prop="currentUserAccountId"> |
| | | <NutRadioGroup |
| | | v-model="form.currentUserAccountId" |
| | | direction="horizontal" |
| | | class="par-account-list" |
| | | v-if="userAccountAllList.length > 0" |
| | | @change="handleUserAccountChange" |
| | | > |
| | | <NutRadio |
| | | :label="item.id" |
| | | shape="button" |
| | | v-for="item in userAccountAllList" |
| | | :key="item.id" |
| | | >{{ item.content }}</NutRadio |
| | | <Chunk borderRadiusSmall> |
| | | <NutFormItem class="bole-form-item" prop="currentUserAccountId"> |
| | | <NutRadioGroup |
| | | v-model="form.currentUserAccountId" |
| | | direction="horizontal" |
| | | class="par-account-list" |
| | | v-if="userAccountAllList.length > 0" |
| | | @change="handleUserAccountChange" |
| | | > |
| | | </NutRadioGroup> |
| | | <AccountCard |
| | | v-if="userAccountAllList.length > 0" |
| | | title="充值手机号" |
| | | :content="form.phone" |
| | | :remark="form.remark" |
| | | > |
| | | <template #action> |
| | | <div class="account-card-action" @click="handleAddUserAccount">新增</div> |
| | | </template> |
| | | </AccountCard> |
| | | <AccountAddCard v-else @click="handleAddUserAccount" /> |
| | | </NutFormItem> |
| | | <NutRadio |
| | | :label="item.id" |
| | | shape="button" |
| | | v-for="item in userAccountAllList" |
| | | :key="item.id" |
| | | >{{ item.content }}</NutRadio |
| | | > |
| | | </NutRadioGroup> |
| | | <AccountCard |
| | | v-if="userAccountAllList.length > 0" |
| | | title="充值手机号" |
| | | :content="form.phone" |
| | | :remark="form.remark" |
| | | > |
| | | <template #action> |
| | | <div class="account-card-action" @click="handleAddUserAccount">新增</div> |
| | | </template> |
| | | </AccountCard> |
| | | <AccountAddCard v-else @click="handleAddUserAccount" /> |
| | | </NutFormItem> |
| | | </Chunk> |
| | | |
| | | <NutFormItem label="选择充值金额" class="bole-form-item" prop="parValue" required> |
| | | <NutRadioGroup v-model="form.parValue" direction="horizontal" class="parValue-radio-group"> |
| | |
| | | import SelectPayTypeFormItem from '../../components/SelectPayTypeFormItem/SelectPayTypeFormItem.vue'; |
| | | import { useSelectPayType, useGetPayStatusByOrderNo } from '../../hooks/selectPayType'; |
| | | import { RechargeProps } from './types'; |
| | | import Chunk from '../../components/Layout/Chunk.vue'; |
| | | |
| | | defineOptions({ |
| | | name: 'PhoneBillRechargeStep2', |
| | |
| | | city: '', |
| | | sixID: '', |
| | | remark: '', |
| | | name: '', |
| | | }); |
| | | |
| | | const { goToNext } = useElectricBillRechargeContext(); |