| | |
| | | }, |
| | | { |
| | | root: 'subpackages/my', |
| | | pages: ['shareQrcode/shareQrcode', 'dashboard/dashboard'], |
| | | pages: ['shareQrcode/shareQrcode', 'dashboard/dashboard', 'applyAgent/applyAgent'], |
| | | }, |
| | | ], |
| | | // preloadRule: { |
| | |
| | | } |
| | | |
| | | .page-footer-inner { |
| | | padding: 24px 0; |
| | | padding: 24px boleGetCssVar('size', 'body-padding-h'); |
| | | width: 100%; |
| | | display: flex; |
| | | box-sizing: border-box; |
| | | align-items: center; |
| | | } |
| | | |
| | | &.isOnlyAction { |
| | | /* &.isOnlyAction { |
| | | .page-footer-inner { |
| | | padding: 16px 0; |
| | | padding: 20px 0; |
| | | align-items: flex-start; |
| | | } |
| | | } |
| | | } */ |
| | | |
| | | .is-button-footer { |
| | | /* .is-button-footer { |
| | | display: flex; |
| | | width: 100%; |
| | | height: 100%; |
| | |
| | | box-shadow: 0px 3px 7px 0px rgba(240, 67, 73, 0.35); |
| | | } |
| | | } |
| | | } |
| | | } */ |
| | | |
| | | .common-page-footer { |
| | | /* .common-page-footer { |
| | | display: flex; |
| | | width: 100%; |
| | | height: 100%; |
| | |
| | | margin: 0; |
| | | margin-left: 20px; |
| | | } |
| | | } |
| | | } */ |
| | | } |
| | | </style> |
| | |
| | | |
| | | .page-footer-btn { |
| | | flex: 1; |
| | | min-width: 0; |
| | | width: 100%; |
| | | height: 88px; |
| | | font-size: 32px; |
| | | margin: 0 28px; |
| | | border-radius: 44px; |
| | | |
| | | & + .page-footer-btn { |
| | | margin-left: 28px; |
| | | } |
| | | |
| | | &.nut-button--plain { |
| | | border-width: 1px; |
| | | } |
| | |
| | | editElectricUserAccount = '/subpackages/userAccount/editElectricUserAccount/editElectricUserAccount', |
| | | shareQrcode = '/subpackages/my/shareQrcode/shareQrcode', |
| | | dashboard = '/subpackages/my/dashboard/dashboard', |
| | | applyAgent = '/subpackages/my/applyAgent/applyAgent', |
| | | } |
New file |
| | |
| | | export default definePageConfig({ |
| | | disableScroll: true, |
| | | }); |
New file |
| | |
| | | <template> |
| | | <PageLayout title="立即申请" class="applyAgent-page-wrapper" hasBgColor :needAuth="false"> |
| | | <ContentScrollView hasPaddingTop style="background-color: transparent"> |
| | | <!-- <OrderApplyRefundView |
| | | :id="id" |
| | | @submitApplyRefund="submitApplyRefund" |
| | | ref="orderApplyRefundViewRef" |
| | | /> --> |
| | | </ContentScrollView> |
| | | <PageFooter> |
| | | <PageFooterBtn type="primary" @click="handleSubmit">提交申请</PageFooterBtn> |
| | | </PageFooter> |
| | | </PageLayout> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { PageLayout } from '@/components'; |
| | | |
| | | defineOptions({ |
| | | name: 'applyAgent', |
| | | }); |
| | | |
| | | function handleSubmit() {} |
| | | </script> |
| | |
| | | <template> |
| | | <ContentScrollView :paddingH="false"> |
| | | <OrderApplyRefundView :id="id" @submitApplyRefund="submitApplyRefund" /> |
| | | <ContentScrollView hasPaddingTop style="background-color: transparent"> |
| | | <OrderApplyRefundView |
| | | :id="id" |
| | | @submitApplyRefund="submitApplyRefund" |
| | | ref="orderApplyRefundViewRef" |
| | | /> |
| | | </ContentScrollView> |
| | | <PageFooter> |
| | | <PageFooterBtn type="primary" @click="handleSubmit">提交</PageFooterBtn> |
| | | </PageFooter> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import Taro from '@tarojs/taro'; |
| | | import { OrderApplyRefundView } from '@life-payment/components'; |
| | | import { goBack } from '@/utils'; |
| | | import type { ComponentExposed } from 'vue-component-type-helpers'; |
| | | |
| | | defineOptions({ |
| | | name: 'InnerPage', |
| | |
| | | const router = Taro.useRouter(); |
| | | const id = router.params?.id ?? ''; |
| | | |
| | | const orderApplyRefundViewRef = |
| | | useTemplateRef<ComponentExposed<typeof OrderApplyRefundView>>('orderApplyRefundViewRef'); |
| | | |
| | | function handleSubmit() { |
| | | orderApplyRefundViewRef.value?.handleSubmit?.(); |
| | | } |
| | | |
| | | function submitApplyRefund() { |
| | | goBack(); |
| | | } |
| | |
| | | <template> |
| | | <PageLayout title="申请退款" class="orderApplyRefund-page-wrapper" hasBorder> |
| | | <PageLayout title="申请退款" class="orderApplyRefund-page-wrapper" hasBgColor> |
| | | <InnerPage /> |
| | | </PageLayout> |
| | | </template> |
| | |
| | | <template> |
| | | <ContentScrollView hasPaddingTop style="background-color: transparent"> |
| | | <EditElectricUserAccount :id="id" @success="handleSuccess" /> |
| | | <EditElectricUserAccount :id="id" @success="handleSuccess" ref="editElectricUserAccountRef" /> |
| | | </ContentScrollView> |
| | | <PageFooter> |
| | | <PageFooterBtn type="primary" @click="handleSave">保存</PageFooterBtn> |
| | | </PageFooter> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import Taro from '@tarojs/taro'; |
| | | import { EditElectricUserAccount } from '@life-payment/components'; |
| | | import { goBack } from '@/utils'; |
| | | import type { ComponentExposed } from 'vue-component-type-helpers'; |
| | | |
| | | defineOptions({ |
| | | name: 'InnerPage', |
| | |
| | | const router = Taro.useRouter(); |
| | | const id = router.params?.id ?? ''; |
| | | |
| | | const editElectricUserAccountRef = useTemplateRef<ComponentExposed<typeof EditElectricUserAccount>>( |
| | | 'editElectricUserAccountRef' |
| | | ); |
| | | |
| | | function handleSave() { |
| | | editElectricUserAccountRef.value?.handleSave?.(); |
| | | } |
| | | |
| | | function handleSuccess() { |
| | | goBack(); |
| | | } |
| | |
| | | <template> |
| | | <ContentScrollView hasPaddingTop style="background-color: transparent"> |
| | | <EditPhoneUserAccount :id="id" @success="handleSuccess" /> |
| | | <EditPhoneUserAccount :id="id" @success="handleSuccess" ref="editPhoneUserAccountRef" /> |
| | | </ContentScrollView> |
| | | <PageFooter> |
| | | <PageFooterBtn type="primary" @click="handleSave">保存</PageFooterBtn> |
| | | </PageFooter> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import Taro from '@tarojs/taro'; |
| | | import { EditPhoneUserAccount } from '@life-payment/components'; |
| | | import { goBack } from '@/utils'; |
| | | import type { ComponentExposed } from 'vue-component-type-helpers'; |
| | | |
| | | defineOptions({ |
| | | name: 'InnerPage', |
| | |
| | | const router = Taro.useRouter(); |
| | | const id = router.params?.id ?? ''; |
| | | |
| | | const editPhoneUserAccountRef = |
| | | useTemplateRef<ComponentExposed<typeof EditPhoneUserAccount>>('editPhoneUserAccountRef'); |
| | | |
| | | function handleSave() { |
| | | editPhoneUserAccountRef.value?.handleSave?.(); |
| | | } |
| | | |
| | | function handleSuccess() { |
| | | goBack(); |
| | | } |
New file |
| | |
| | | <template> |
| | | <div></div> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { |
| | | Form as NutForm, |
| | | FormItem as NutFormItem, |
| | | Input as NutInput, |
| | | Textarea as NutTextarea, |
| | | } from '@nutui/nutui-taro'; |
| | | import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types'; |
| | | import { reactive, ref, computed } from 'vue'; |
| | | import { |
| | | useLifeRechargeContext, |
| | | LifeRechargeConstants, |
| | | RefundUserLifePayOrderInput, |
| | | } from '@life-payment/core-vue'; |
| | | import { useQueryClient } from '@tanstack/vue-query'; |
| | | |
| | | defineOptions({ |
| | | name: 'ApplyAgentView', |
| | | }); |
| | | |
| | | const emit = defineEmits<{ |
| | | (e: 'submit'): void; |
| | | }>(); |
| | | |
| | | const form = reactive({ |
| | | refundApplyRemark: '', |
| | | }); |
| | | |
| | | const rules = reactive<FormRules>({ |
| | | refundApplyRemark: [{ required: true, message: '请输入退款原因' }], |
| | | }); |
| | | |
| | | const { blLifeRecharge } = useLifeRechargeContext(); |
| | | |
| | | const formRef = ref<any>(null); |
| | | |
| | | function handleSubmit() { |
| | | if (!formRef.value) return; |
| | | formRef.value.validate().then(({ valid, errors }: any) => { |
| | | if (valid) { |
| | | refundUserLifePayOrder(); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | const queryClient = useQueryClient(); |
| | | |
| | | async function refundUserLifePayOrder() { |
| | | try { |
| | | let params = { |
| | | userId: blLifeRecharge.accountModel.userId, |
| | | refundApplyRemark: form.refundApplyRemark, |
| | | }; |
| | | let res = await blLifeRecharge.services.refundUserLifePayOrder(params); |
| | | emit('submit'); |
| | | } catch (error) {} |
| | | } |
| | | |
| | | defineExpose({ |
| | | handleSubmit, |
| | | }); |
| | | </script> |
| | |
| | | <template> |
| | | <!-- <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"> |
| | | {{ toThousand(topStatistics?.accumulatedReceipts ?? 0) }} |
| | | </div> |
| | | </div> |
| | | </NutGridItem> |
| | | <NutGridItem> |
| | | <div class="pro-statistics-wrapper"> |
| | | <div class="pro-statistics-title">昨日收款</div> |
| | | <div class="pro-statistics-content"> |
| | | {{ toThousand(topStatistics?.receiptsYesterday ?? 0) }} |
| | | </div> |
| | | </div> |
| | | </NutGridItem> |
| | | <NutGridItem> |
| | | <div class="pro-statistics-wrapper"> |
| | | <div class="pro-statistics-title">累计收益</div> |
| | | <div class="pro-statistics-content"> |
| | | {{ toThousand(topStatistics?.accumulatedIncome ?? 0) }} |
| | | </div> |
| | | </div> |
| | | </NutGridItem> |
| | | <NutGridItem> |
| | | <div class="pro-statistics-wrapper"> |
| | | <div class="pro-statistics-title">累计下单</div> |
| | | <div class="pro-statistics-content">{{ topStatistics?.accumulatedOrders ?? 0 }}</div> |
| | | </div> |
| | | </NutGridItem> |
| | | <NutGridItem> |
| | | <div class="pro-statistics-wrapper"> |
| | | <div class="pro-statistics-title">昨日下单</div> |
| | | <div class="pro-statistics-content">{{ topStatistics?.ordersNumYesterday ?? 0 }}</div> |
| | | </div> |
| | | </NutGridItem> |
| | | <NutGridItem> |
| | | <div class="pro-statistics-wrapper"> |
| | | <div class="pro-statistics-title">昨日成功</div> |
| | | <div class="pro-statistics-content">{{ topStatistics?.yesterdaySuccess ?? 0 }}</div> |
| | | </div> |
| | | </NutGridItem> |
| | | <NutGridItem> |
| | | <div class="pro-statistics-wrapper"> |
| | | <div class="pro-statistics-title">累计用户</div> |
| | | <div class="pro-statistics-content">{{ topStatistics?.accumulatedUsers ?? 0 }}</div> |
| | | </div> |
| | | </NutGridItem> |
| | | <NutGridItem> |
| | | <div class="pro-statistics-wrapper"> |
| | | <div class="pro-statistics-title">昨日活跃</div> |
| | | <div class="pro-statistics-content">{{ topStatistics?.yesterdayActiveUsers ?? 0 }}</div> |
| | | </div> |
| | | </NutGridItem> |
| | | </NutGrid> --> |
| | | <div class="dashboard-view"> |
| | | <Chunk title="核心数据"> |
| | | <DashboardLargeCell class="dashboard-large-cell1"> |
| | |
| | | ref="formRef" |
| | | :rules="rules" |
| | | label-position="top" |
| | | class="order-bill-recharge phone" |
| | | class="order-bill-recharge phone chunk-form" |
| | | > |
| | | <NutFormItem class="bole-form-item" prop="refundApplyRemark" required> |
| | | <NutTextarea |
| | |
| | | > |
| | | </NutTextarea> |
| | | </NutFormItem> |
| | | <div class="common-content"> |
| | | <!-- <div class="common-content"> |
| | | <nut-button class="recharge-button" type="primary" @click="handleSubmit"> |
| | | <div class="recharge-button-inner"> |
| | | <div class="recharge-button-text">提交</div> |
| | | </div> |
| | | </nut-button> |
| | | </div> |
| | | </div> --> |
| | | </NutForm> |
| | | </template> |
| | | |
| | |
| | | }); |
| | | } catch (error) {} |
| | | } |
| | | |
| | | defineExpose({ |
| | | handleSubmit, |
| | | }); |
| | | </script> |
| | |
| | | import { LifeRechargeConstants } from '@life-payment/core-vue'; |
| | | import { CustomerServiceTips, OssAssets } from '../../constants'; |
| | | import Result from '../../components/Result/Result.vue'; |
| | | import { Button as NutButton } from '@nutui/nutui-taro'; |
| | | |
| | | defineOptions({ |
| | | name: 'RechargeResultView', |
| | |
| | | </NutTextarea> |
| | | </NutFormItem> |
| | | </ElectricBillRechargeBaseForm> |
| | | <div class="chunk-form-actions"> |
| | | <!-- <div class="chunk-form-actions"> |
| | | <NutButton class="recharge-button" type="primary" @click="handleSave"> |
| | | <div class="recharge-button-inner"> |
| | | <div class="recharge-button-text">保存</div> |
| | | </div> |
| | | </NutButton> |
| | | </div> |
| | | </div> --> |
| | | </LoadingLayout> |
| | | </template> |
| | | |
| | |
| | | emit('success'); |
| | | } catch (error) {} |
| | | } |
| | | |
| | | defineExpose({ handleSave }); |
| | | </script> |
| | |
| | | </NutTextarea> |
| | | </NutFormItem> |
| | | </GasBillRechargeBaseForm> |
| | | <div class="chunk-form-actions"> |
| | | <!-- <div class="chunk-form-actions"> |
| | | <NutButton class="recharge-button" type="primary" @click="handleSave"> |
| | | <div class="recharge-button-inner"> |
| | | <div class="recharge-button-text">保存</div> |
| | | </div> |
| | | </NutButton> |
| | | </div> |
| | | </div> --> |
| | | </LoadingLayout> |
| | | </template> |
| | | |
| | |
| | | emit('success'); |
| | | } catch (error) {} |
| | | } |
| | | |
| | | defineExpose({ handleSave }); |
| | | </script> |
| | |
| | | </NutTextarea> |
| | | </NutFormItem> |
| | | </PhoneBillRechargeBaseForm> |
| | | <div class="chunk-form-actions"> |
| | | <!-- <div class="chunk-form-actions"> |
| | | <NutButton class="recharge-button" type="primary" @click="handleSave"> |
| | | <div class="recharge-button-inner"> |
| | | <div class="recharge-button-text">保存</div> |
| | | </div> |
| | | </NutButton> |
| | | </div> |
| | | </div> --> |
| | | </LoadingLayout> |
| | | </template> |
| | | |
| | |
| | | emit('success'); |
| | | } catch (error) {} |
| | | } |
| | | |
| | | defineExpose({ handleSave }); |
| | | </script> |