From f34af9bbc5ec1a40fa5d9f658ea2face2fb13b19 Mon Sep 17 00:00:00 2001 From: zhengyiming <540361168@qq.com> Date: 星期三, 10 九月 2025 15:04:44 +0800 Subject: [PATCH] fix: 公告 --- packages/services/api/typings.d.ts | 4 + apps/taro/src/utils/common/message.tsx | 9 ++ packages/core/src/lifeRechargeConstants.ts | 9 +++ apps/taro/src/pages/home/index.vue | 6 + apps/taro/src/pages/home/components/NormalAnnouncement.vue | 31 ++++++++++ packages/services/api/LifePayAnnouncement.ts | 13 +++- apps/taro/src/hooks/lifepay.ts | 58 +++++++++++++++++++ packages/core/src/lifeRechargeServices.ts | 35 +++++++++++ types/api.d.ts | 1 9 files changed, 160 insertions(+), 6 deletions(-) diff --git a/apps/taro/src/hooks/lifepay.ts b/apps/taro/src/hooks/lifepay.ts index 28090cd..9384fb3 100644 --- a/apps/taro/src/hooks/lifepay.ts +++ b/apps/taro/src/hooks/lifepay.ts @@ -1,6 +1,11 @@ import { useQuery } from '@tanstack/vue-query'; -import { useLifeRechargeContext, CreateEditPayChannelsInput } from '@life-payment/core-vue'; +import { + useLifeRechargeContext, + CreateEditPayChannelsInput, + GetShowingLifePayAnnouncementInput, +} from '@life-payment/core-vue'; import { MaybeRef } from 'vue'; +import { Message } from '@/utils'; export function useOnlineService() { const { blLifeRecharge } = useLifeRechargeContext(); @@ -60,3 +65,54 @@ getChannlesNameByNum, }; } + +type UseShowingLifePayAnnouncementOptions = { + params?: MaybeRef<API.GetShowingLifePayAnnouncementInput>; + onSuccess?: (data: API.CreateEditLifePayAnnouncementOutput) => any; +}; + +export function useShowingLifePayAnnouncement(options: UseShowingLifePayAnnouncementOptions = {}) { + const { onSuccess, params = {} } = options; + + const { blLifeRecharge } = useLifeRechargeContext(); + + const { + data: announcement, + isLoading, + refetch, + } = useQuery({ + queryKey: ['blLifeRecharge/getShowingLifePayAnnouncement', params], + queryFn: async () => { + return await blLifeRecharge.services.getShowingLifePayAnnouncement(unref(params), { + showLoading: false, + skipErrorHandler: true, + }); + }, + onSuccess: (data) => { + onSuccess?.(data); + }, + }); + + return { + announcement, + isLoading, + refetch, + }; +} + +export function useDialogShowingLifePayAnnouncement() { + const { blLifeRecharge } = useLifeRechargeContext(); + + useShowingLifePayAnnouncement({ + params: { + announcementType: blLifeRecharge.constants.AnnouncementTypeEnum.Dialog, + }, + onSuccess(data) { + Message.confirm({ + title: '鍏憡', + message: data.announcementContent ?? '', + showCancelBtn: false, + }); + }, + }); +} diff --git a/apps/taro/src/pages/home/components/NormalAnnouncement.vue b/apps/taro/src/pages/home/components/NormalAnnouncement.vue new file mode 100644 index 0000000..bd972f4 --- /dev/null +++ b/apps/taro/src/pages/home/components/NormalAnnouncement.vue @@ -0,0 +1,31 @@ +<template> + <nut-noticebar :left-icon="false" :text="text" v-if="!!text" /> +</template> + +<script setup lang="ts"> +import { BlLifeRecharge } from '@life-payment/core-vue'; +import { useShowingLifePayAnnouncement } from '@/hooks'; + +defineOptions({ + name: 'NormalAnnouncement', +}); + +// type Props = {}; + +// const props = withDefaults(defineProps<Props>(), {}); + +const text = ref(''); + +useShowingLifePayAnnouncement({ + params: { + announcementType: BlLifeRecharge.constants.AnnouncementTypeEnum.Normal, + }, + onSuccess(data) { + text.value = data.announcementContent; + }, +}); +</script> + +<style lang="scss"> +@import '@/styles/common.scss'; +</style> diff --git a/apps/taro/src/pages/home/index.vue b/apps/taro/src/pages/home/index.vue index 45bf44c..30d2ee7 100644 --- a/apps/taro/src/pages/home/index.vue +++ b/apps/taro/src/pages/home/index.vue @@ -7,6 +7,7 @@ <template #bg> <img :src="OssAssets.common.HomePageBg" class="home-page-bg" /> </template> + <NormalAnnouncement /> <ContentView> <div class="home-page-banner-wrapper"> <div class="home-page-banner-left"> @@ -38,7 +39,7 @@ </template> <script setup lang="ts"> -import { useAccessLogin } from '@/hooks'; +import { useAccessLogin, useDialogShowingLifePayAnnouncement } from '@/hooks'; import { useUserStore } from '@/stores/modules/user'; import Taro from '@tarojs/taro'; import { OrderInputType } from '@life-payment/constants'; @@ -48,11 +49,14 @@ import IconBanner from '@/assets/home/icon-banner.png'; import IconBannerLogo from '@/assets/home/icon-banner-logo.png'; import IconBannerItem from '@/assets/home/icon-banner-item.png'; +import NormalAnnouncement from './components/NormalAnnouncement.vue'; const userStore = useUserStore(); const router = Taro.useRouter(); +useDialogShowingLifePayAnnouncement(); + const goPhoneBillRecharge = useAccessLogin(() => { RouteHelper.navigateTo({ url: `${RouterPath.phoneBillRecharge}`, diff --git a/apps/taro/src/utils/common/message.tsx b/apps/taro/src/utils/common/message.tsx index 937d801..9a64b30 100644 --- a/apps/taro/src/utils/common/message.tsx +++ b/apps/taro/src/utils/common/message.tsx @@ -24,11 +24,17 @@ title?: string; message?: string | VNode; confirmText?: string; + showCancelBtn?: boolean; }; export class Message { static confirm(options: ConfirmOptions = {}) { - const { title = '鎻愮ず', message = '纭畾瑕佸垹闄よ鏁版嵁鍚�?', confirmText = '纭' } = options; + const { + title = '鎻愮ず', + message = '纭畾瑕佸垹闄よ鏁版嵁鍚�?', + confirmText = '纭', + showCancelBtn = true, + } = options; return new Promise((resolve, reject) => { Portal.add((key) => { return ( @@ -54,6 +60,7 @@ onClose(); }} confirmText={confirmText} + showCancelBtn={showCancelBtn} ></Model> ), }} diff --git a/packages/core/src/lifeRechargeConstants.ts b/packages/core/src/lifeRechargeConstants.ts index 0c3e5ed..f88fb61 100644 --- a/packages/core/src/lifeRechargeConstants.ts +++ b/packages/core/src/lifeRechargeConstants.ts @@ -238,4 +238,13 @@ /**寮圭獥鍏憡 */ Dialog = 20, } + + export enum AnnouncementStatusEnum { + /**灞曠ず涓� */ + Showing = 10, + /**寰呭睍绀� */ + Wait = 20, + /**宸插仠姝� */ + Stop = 30, + } } diff --git a/packages/core/src/lifeRechargeServices.ts b/packages/core/src/lifeRechargeServices.ts index 41e981e..8935e5a 100644 --- a/packages/core/src/lifeRechargeServices.ts +++ b/packages/core/src/lifeRechargeServices.ts @@ -464,6 +464,24 @@ ...(options || {}), }); } + + /** 鑾峰彇褰撳墠灞曠ず涓殑鍏憡 POST /api/LifePayAnnouncement/GetShowingLifePayAnnouncement */ + async getShowingLifePayAnnouncement( + body: GetShowingLifePayAnnouncementInput, + options?: RequestConfig + ) { + return this.request<CreateEditLifePayAnnouncementOutput>( + '/api/LifePayAnnouncement/GetShowingLifePayAnnouncement', + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + } + ); + } } export interface PhoneMesssageCodeLoginInput { @@ -1069,3 +1087,20 @@ /** IdNumber */ idNumber?: string; } + +export interface GetShowingLifePayAnnouncementInput { + announcementType?: LifeRechargeConstants.AnnouncementTypeEnum; +} + +export interface CreateEditLifePayAnnouncementOutput { + id?: string; + announcementType: LifeRechargeConstants.AnnouncementTypeEnum; + /** 鐢熸晥鏃ユ湡 */ + startTime: string; + /** 鎴鏃ユ湡 */ + endTime: string; + /** 鍏憡鍐呭 */ + announcementContent: string; + creationTime?: string; + status?: LifeRechargeConstants.AnnouncementStatusEnum; +} diff --git a/packages/services/api/LifePayAnnouncement.ts b/packages/services/api/LifePayAnnouncement.ts index d22e488..4714e3e 100644 --- a/packages/services/api/LifePayAnnouncement.ts +++ b/packages/services/api/LifePayAnnouncement.ts @@ -50,12 +50,19 @@ ); } -/** 鑾峰彇褰撳墠灞曠ず涓殑鍏憡 GET /api/LifePayAnnouncement/GetShowingLifePayAnnouncement */ -export async function getShowingLifePayAnnouncement(options?: API.RequestConfig) { +/** 鑾峰彇褰撳墠灞曠ず涓殑鍏憡 POST /api/LifePayAnnouncement/GetShowingLifePayAnnouncement */ +export async function getShowingLifePayAnnouncement( + body: API.GetShowingLifePayAnnouncementInput, + options?: API.RequestConfig +) { return request<API.CreateEditLifePayAnnouncementOutput>( '/api/LifePayAnnouncement/GetShowingLifePayAnnouncement', { - method: 'GET', + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, ...(options || {}), } ); diff --git a/packages/services/api/typings.d.ts b/packages/services/api/typings.d.ts index 565bd1b..88e5ca5 100644 --- a/packages/services/api/typings.d.ts +++ b/packages/services/api/typings.d.ts @@ -1190,6 +1190,10 @@ queryCondition?: string; } + interface GetShowingLifePayAnnouncementInput { + announcementType?: AnnouncementTypeEnum; + } + interface IanaTimeZone { timeZoneName?: string; } diff --git a/types/api.d.ts b/types/api.d.ts index 3241ace..95e117a 100644 --- a/types/api.d.ts +++ b/types/api.d.ts @@ -2,6 +2,7 @@ interface RequestConfig extends GlobalType.RequestConfig { showNavigationBarLoading?: boolean; showLoading?: boolean; + skipErrorHandler?: boolean; mock?: boolean; customErrorHandler?: (error: any) => boolean; } -- Gitblit v1.9.1