From afdc0faf165dbc0c90e45043b4f500a3d53ba20f Mon Sep 17 00:00:00 2001 From: zym2525 <540361168@qq.com> Date: 星期二, 11 三月 2025 21:02:24 +0800 Subject: [PATCH] fix: some --- packages/components/src/utils/common.ts | 29 +++ packages/components/src/components/Card/OrderCard.vue | 28 ++ apps/taro/src/subpackages/recharge/selectPayType/selectPayType.vue | 1 apps/taro/src/subpackages/order/orderApplyRefund/orderApplyRefund.config.ts | 3 packages/components/src/views/Order/components/ElectricOrder.vue | 11 + packages/components/src/views/Order/components/GasOrder.vue | 78 ++++++++ packages/components/src/views/Order/components/PhoneOrder.vue | 11 + apps/taro/src/subpackages/order/order/InnerPage.vue | 21 + packages/components/src/views/Order/OrderApplyRefundView.vue | 98 ++++++++++ apps/taro/src/app.config.ts | 6 apps/taro/src/pages/mine/index.vue | 2 apps/taro/src/constants/router.ts | 5 apps/taro/src/subpackages/order/orderApplyRefund/orderApplyRefund.vue | 14 + apps/taro/src/subpackages/userAccount/userAccountList/userAccountList.config.ts | 3 apps/taro/src/subpackages/order/orderApplyRefund/InnerPage.vue | 17 + apps/taro/src/subpackages/userAccount/userAccountList/userAccountList.vue | 14 + packages/components/src/styles/nut.scss | 2 apps/taro/src/subpackages/userAccount/userAccountList/InnerPage.vue | 11 + packages/components/src/index.ts | 3 packages/core/src/lifeRechargeConstants.ts | 31 +++ packages/core/src/lifeRechargeServices.ts | 44 ++++ packages/components/src/views/userAccount/UserAccountListView.vue | 75 ++++++++ 22 files changed, 492 insertions(+), 15 deletions(-) diff --git a/apps/taro/src/app.config.ts b/apps/taro/src/app.config.ts index f14357e..c23c86c 100644 --- a/apps/taro/src/app.config.ts +++ b/apps/taro/src/app.config.ts @@ -64,7 +64,11 @@ }, { root: 'subpackages/order', - pages: ['order/order'], + pages: ['order/order', 'orderApplyRefund/orderApplyRefund'], + }, + { + root: 'subpackages/userAccount', + pages: ['userAccountList/userAccountList'], }, ], // preloadRule: { diff --git a/apps/taro/src/constants/router.ts b/apps/taro/src/constants/router.ts index f62f6dc..f84a6d2 100644 --- a/apps/taro/src/constants/router.ts +++ b/apps/taro/src/constants/router.ts @@ -11,8 +11,11 @@ phoneBillRecharge = '/subpackages/recharge/phoneBillRecharge/phoneBillRecharge', electricBillRecharge = '/subpackages/recharge/electricBillRecharge/electricBillRecharge', gasBillRecharge = '/subpackages/recharge/gasBillRecharge/gasBillRecharge', - order = '/subpackages/order/order/order', selectPayType = '/subpackages/recharge/selectPayType/selectPayType', rechargeResult = '/subpackages/recharge/rechargeResult/rechargeResult', rechargeElectricResult = '/subpackages/recharge/rechargeElectricResult/rechargeElectricResult', + + order = '/subpackages/order/order/order', + orderApplyRefund = '/subpackages/order/orderApplyRefund/orderApplyRefund', + userAccountList = '/subpackages/userAccount/userAccountList/userAccountList', } diff --git a/apps/taro/src/pages/mine/index.vue b/apps/taro/src/pages/mine/index.vue index 8068ee3..f13595d 100644 --- a/apps/taro/src/pages/mine/index.vue +++ b/apps/taro/src/pages/mine/index.vue @@ -20,6 +20,7 @@ <ContentScrollView> <List class="mine-list-wrapper"> <ListItem title="璁㈠崟绠$悊" @click="goOrderManage"></ListItem> + <ListItem title="鎴峰彿绠$悊" @click="goUserAccountList"></ListItem> <ListItem v-if="isLogin" title="閫�鍑虹櫥褰�" @click="goLogout"></ListItem> </List> </ContentScrollView> @@ -72,6 +73,7 @@ }); const goOrderManage = useAccessLogin(() => goPage(RouterPath.order)); +const goUserAccountList = useAccessLogin(() => goPage(RouterPath.userAccountList)); async function goLogout() { try { diff --git a/apps/taro/src/subpackages/order/order/InnerPage.vue b/apps/taro/src/subpackages/order/order/InnerPage.vue index eac44ba..876a457 100644 --- a/apps/taro/src/subpackages/order/order/InnerPage.vue +++ b/apps/taro/src/subpackages/order/order/InnerPage.vue @@ -1,16 +1,19 @@ <template> <ProTabs v-model="orderType" name="user-home-tabs" class="user-home-tabs" flexTitle fullHeight> <ProTabPane title="璇濊垂璁㈠崟" pane-key="1"> - <PhoneOrder /> + <PhoneOrder @goApplyRefund="goApplyRefund" @goRefundDetail="goRefundDetail" /> </ProTabPane> <ProTabPane title="鐢佃垂璁㈠崟" pane-key="2"> - <ElectricOrder /> + <ElectricOrder @goApplyRefund="goApplyRefund" @goRefundDetail="goRefundDetail" /> + </ProTabPane> + <ProTabPane title="鐕冩皵璁㈠崟" pane-key="3"> + <GasOrder @goApplyRefund="goApplyRefund" @goRefundDetail="goRefundDetail" /> </ProTabPane> </ProTabs> </template> <script setup lang="ts"> -import { PhoneOrder, ElectricOrder } from '@life-payment/components'; +import { PhoneOrder, ElectricOrder, GasOrder } from '@life-payment/components'; import Taro from '@tarojs/taro'; defineOptions({ @@ -19,9 +22,17 @@ const orderType = ref('1'); -function goPay() { +function goApplyRefund(orderNo: string) { Taro.navigateTo({ - url: RouterPath.selectPayType, + url: `${RouterPath.orderApplyRefund}?orderNo=${orderNo}`, + // events: { + // submitApplyRefund: function () {}, + // }, + }); +} +function goRefundDetail(orderNo: string) { + Taro.navigateTo({ + url: `${RouterPath.orderApplyRefund}?orderNo=${orderNo}`, }); } </script> diff --git a/apps/taro/src/subpackages/order/orderApplyRefund/InnerPage.vue b/apps/taro/src/subpackages/order/orderApplyRefund/InnerPage.vue new file mode 100644 index 0000000..3ac3541 --- /dev/null +++ b/apps/taro/src/subpackages/order/orderApplyRefund/InnerPage.vue @@ -0,0 +1,17 @@ +<template> + <ContentScrollView :paddingH="false"> + <OrderApplyRefundView :orderNo="orderNo" /> + </ContentScrollView> +</template> + +<script setup lang="ts"> +import Taro from '@tarojs/taro'; +import { OrderApplyRefundView } from '@life-payment/components'; + +defineOptions({ + name: 'InnerPage', +}); + +const router = Taro.useRouter(); +const orderNo = router.params?.orderNo ?? ''; +</script> diff --git a/apps/taro/src/subpackages/order/orderApplyRefund/orderApplyRefund.config.ts b/apps/taro/src/subpackages/order/orderApplyRefund/orderApplyRefund.config.ts new file mode 100644 index 0000000..305fdb1 --- /dev/null +++ b/apps/taro/src/subpackages/order/orderApplyRefund/orderApplyRefund.config.ts @@ -0,0 +1,3 @@ +export default definePageConfig({ + disableScroll: true, +}); diff --git a/apps/taro/src/subpackages/order/orderApplyRefund/orderApplyRefund.vue b/apps/taro/src/subpackages/order/orderApplyRefund/orderApplyRefund.vue new file mode 100644 index 0000000..cb04f8d --- /dev/null +++ b/apps/taro/src/subpackages/order/orderApplyRefund/orderApplyRefund.vue @@ -0,0 +1,14 @@ +<template> + <PageLayout title="鐢宠閫�娆�" class="orderApplyRefund-page-wrapper" hasBorder> + <InnerPage /> + </PageLayout> +</template> + +<script setup lang="ts"> +import { PageLayout } from '@/components'; +import InnerPage from './InnerPage.vue'; + +defineOptions({ + name: 'orderApplyRefund', +}); +</script> diff --git a/apps/taro/src/subpackages/recharge/selectPayType/selectPayType.vue b/apps/taro/src/subpackages/recharge/selectPayType/selectPayType.vue index 16153e9..879f00b 100644 --- a/apps/taro/src/subpackages/recharge/selectPayType/selectPayType.vue +++ b/apps/taro/src/subpackages/recharge/selectPayType/selectPayType.vue @@ -19,5 +19,6 @@ const TitleText = { [LifeRechargeConstants.LifePayOrderTypeEnum.璇濊垂璁㈠崟]: '璇濊垂鍏呭��', [LifeRechargeConstants.LifePayOrderTypeEnum.鐢佃垂璁㈠崟]: '鐢佃垂鍏呭��', + [LifeRechargeConstants.LifePayOrderTypeEnum.鐕冩皵璁㈠崟]: '鐕冩皵鍏呭��', }; </script> diff --git a/apps/taro/src/subpackages/userAccount/userAccountList/InnerPage.vue b/apps/taro/src/subpackages/userAccount/userAccountList/InnerPage.vue new file mode 100644 index 0000000..e5178a1 --- /dev/null +++ b/apps/taro/src/subpackages/userAccount/userAccountList/InnerPage.vue @@ -0,0 +1,11 @@ +<template> + <UserAccountListView /> +</template> + +<script setup lang="ts"> +import { UserAccountListView } from '@life-payment/components'; + +defineOptions({ + name: 'InnerPage', +}); +</script> diff --git a/apps/taro/src/subpackages/userAccount/userAccountList/userAccountList.config.ts b/apps/taro/src/subpackages/userAccount/userAccountList/userAccountList.config.ts new file mode 100644 index 0000000..305fdb1 --- /dev/null +++ b/apps/taro/src/subpackages/userAccount/userAccountList/userAccountList.config.ts @@ -0,0 +1,3 @@ +export default definePageConfig({ + disableScroll: true, +}); diff --git a/apps/taro/src/subpackages/userAccount/userAccountList/userAccountList.vue b/apps/taro/src/subpackages/userAccount/userAccountList/userAccountList.vue new file mode 100644 index 0000000..e306716 --- /dev/null +++ b/apps/taro/src/subpackages/userAccount/userAccountList/userAccountList.vue @@ -0,0 +1,14 @@ +<template> + <PageLayout title="鎴峰彿绠$悊" class="userAccountList-page-wrapper" hasBorder> + <InnerPage> </InnerPage> + </PageLayout> +</template> + +<script setup lang="ts"> +import { PageLayout } from '@/components'; +import InnerPage from './InnerPage.vue'; + +defineOptions({ + name: 'userAccountList', +}); +</script> diff --git a/packages/components/src/components/Card/OrderCard.vue b/packages/components/src/components/Card/OrderCard.vue index 3cf98d9..c3cbc55 100644 --- a/packages/components/src/components/Card/OrderCard.vue +++ b/packages/components/src/components/Card/OrderCard.vue @@ -3,14 +3,29 @@ <div class="order-card-title"> <div class="order-card-title-top"> <div class="order-card-title-text">{{ title }}</div> - <div class="order-card-title-status">{{ status }}</div> + <div class="order-card-title-status"> + {{ LifeRechargeConstants.LifePayOrderFrontStatusEnumText[status] }} + </div> </div> <div class="order-card-title-ordernum-wrapper"> <div class="order-card-title-ordernum"> {{ `璁㈠崟缂栧彿锛�${orderNo}` }} </div> <slot name="actions"> - <div class="order-card-action">鐢宠閫�娆�</div> + <div + class="order-card-action" + v-if="status === LifeRechargeConstants.LifePayOrderFrontStatusEnum.鏀粯鎴愬姛" + @click="emit('goApplyRefund', orderNo)" + > + 鐢宠閫�娆� + </div> + <div + class="order-card-action" + v-if="status === LifeRechargeConstants.LifePayOrderFrontStatusEnum.閫�娆惧け璐�" + @click="emit('goRefundDetail', orderNo)" + > + 璇︽儏 + </div> </slot> </div> </div> @@ -21,15 +36,22 @@ </template> <script setup lang="ts"> +import { LifeRechargeConstants } from '@life-payment/core-vue'; + defineOptions({ name: 'OrderCard', }); type Props = { title: string; - status: string; + status: LifeRechargeConstants.LifePayOrderFrontStatusEnum; orderNo: string; }; const props = withDefaults(defineProps<Props>(), {}); + +const emit = defineEmits<{ + (e: 'goApplyRefund', orderNo: string): void; + (e: 'goRefundDetail', orderNo: string): void; +}>(); </script> diff --git a/packages/components/src/index.ts b/packages/components/src/index.ts index dd86493..ebf1041 100644 --- a/packages/components/src/index.ts +++ b/packages/components/src/index.ts @@ -6,4 +6,7 @@ export { default as RechargeResultView } from './views/RechargeResultView/RechargeResultView.vue'; export { default as PhoneOrder } from './views/Order/components/PhoneOrder.vue'; export { default as ElectricOrder } from './views/Order/components/ElectricOrder.vue'; +export { default as GasOrder } from './views/Order/components/GasOrder.vue'; +export { default as OrderApplyRefundView } from './views/Order/OrderApplyRefundView.vue'; +export { default as UserAccountListView } from './views/userAccount/UserAccountListView.vue'; export * from './utils'; diff --git a/packages/components/src/styles/nut.scss b/packages/components/src/styles/nut.scss index 4839c5a..e94c6e9 100644 --- a/packages/components/src/styles/nut.scss +++ b/packages/components/src/styles/nut.scss @@ -127,7 +127,7 @@ .bole-input-textarea:not(.nut-input--disabled) { color: boleGetCssVar('text-color', 'primary') !important; - height: 100rpx; + height: 200px; } .bole-input-text-placeholder { diff --git a/packages/components/src/utils/common.ts b/packages/components/src/utils/common.ts index 12782a6..8ec6d2a 100644 --- a/packages/components/src/utils/common.ts +++ b/packages/components/src/utils/common.ts @@ -149,3 +149,32 @@ } return ''; } + +export function convertOrderFrontStatus( + payStatus?: LifeRechargeConstants.LifePayStatusEnum, + lifePayOrderStatus?: LifeRechargeConstants.LifePayOrderStatusEnum +) { + if ( + (lifePayOrderStatus === LifeRechargeConstants.LifePayOrderStatusEnum.寰呯‘璁� && + payStatus === LifeRechargeConstants.LifePayStatusEnum.宸叉敮浠�) || + payStatus === LifeRechargeConstants.LifePayStatusEnum.寰呴��娆� + ) { + return LifeRechargeConstants.LifePayOrderFrontStatusEnum.鏀粯鎴愬姛; + } + if (lifePayOrderStatus === LifeRechargeConstants.LifePayOrderStatusEnum.宸查��娆�) { + return LifeRechargeConstants.LifePayOrderFrontStatusEnum.宸查��娆�; + } + if (lifePayOrderStatus === LifeRechargeConstants.LifePayOrderStatusEnum.閫�娆惧緟瀹℃牳) { + return LifeRechargeConstants.LifePayOrderFrontStatusEnum.閫�娆惧緟瀹℃牳; + } + if (lifePayOrderStatus === LifeRechargeConstants.LifePayOrderStatusEnum.閫�娆惧け璐�) { + return LifeRechargeConstants.LifePayOrderFrontStatusEnum.閫�娆惧け璐�; + } + if ( + lifePayOrderStatus === LifeRechargeConstants.LifePayOrderStatusEnum.宸插畬鎴� && + payStatus === LifeRechargeConstants.LifePayStatusEnum.宸叉敮浠� + ) { + return LifeRechargeConstants.LifePayOrderFrontStatusEnum.鍏呭�兼垚鍔�; + } + return; +} diff --git a/packages/components/src/views/Order/OrderApplyRefundView.vue b/packages/components/src/views/Order/OrderApplyRefundView.vue new file mode 100644 index 0000000..5380d0a --- /dev/null +++ b/packages/components/src/views/Order/OrderApplyRefundView.vue @@ -0,0 +1,98 @@ +<template> + <NutForm + :model-value="form" + ref="formRef" + :rules="rules" + label-position="top" + class="order-bill-recharge phone" + > + <NutFormItem class="bole-form-item" prop="refundApplyRemark" required> + <NutTextarea + placeholder="璇峰~鍐欐偍闇�瑕佸厖鍊肩殑鎵嬫満鍙风爜" + placeholderClass="bole-input-text-placeholder" + autoSize + class="bole-input-textarea" + v-model="form.refundApplyRemark" + :max-length="200" + limit-show + > + </NutTextarea> + </NutFormItem> + <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> + </NutForm> +</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: 'OrderApplyRefundView', +}); + +type Props = { + orderNo: string; +}; + +const props = withDefaults(defineProps<Props>(), {}); + +const emit = defineEmits<{ + (e: 'submitApplyRefund'): 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: RefundUserLifePayOrderInput = { + id: props.orderNo, + userId: blLifeRecharge.accountModel.userId, + refundApplyRemark: form.refundApplyRemark, + }; + let res = await blLifeRecharge.services.refundUserLifePayOrder(params); + emit('submitApplyRefund'); + queryClient.invalidateQueries({ + queryKey: ['blLifeRecharge/getUserLifePayOrderPage'], + }); + } catch (error) {} +} +</script> diff --git a/packages/components/src/views/Order/components/ElectricOrder.vue b/packages/components/src/views/Order/components/ElectricOrder.vue index 3d1347b..d4ebfae 100644 --- a/packages/components/src/views/Order/components/ElectricOrder.vue +++ b/packages/components/src/views/Order/components/ElectricOrder.vue @@ -6,8 +6,10 @@ <template #renderItem="{ item }"> <OrderCard title="鐢佃垂鍏呭��" - :status="orderStatusEnum(item?.payStatus, item?.lifePayOrderStatus)" + :status="convertOrderFrontStatus(item?.payStatus, item?.lifePayOrderStatus)" :order-no="item?.orderNo" + @goApplyRefund="emit('goApplyRefund', $event)" + @goRefundDetail="emit('goRefundDetail', $event)" > <OrderCardItem label="鍏呭�煎湴鍖�:" @@ -63,7 +65,7 @@ import { useGetUserLifePayOrderPage } from '../../../hooks'; import { BlLifeRecharge } from '@life-payment/core-vue'; import dayjs from 'dayjs'; -import { toThousand, orderStatusEnum } from '../../../utils'; +import { toThousand, convertOrderFrontStatus } from '../../../utils'; defineOptions({ name: 'ElectricOrder', @@ -73,6 +75,11 @@ // const props = withDefaults(defineProps<Props>(), {}); +const emit = defineEmits<{ + (e: 'goApplyRefund', orderNo: string): void; + (e: 'goRefundDetail', orderNo: string): void; +}>(); + const { infiniteLoadingProps } = useGetUserLifePayOrderPage({ lifePayOrderType: BlLifeRecharge.constants.LifePayOrderTypeEnum.鐢佃垂璁㈠崟, }); diff --git a/packages/components/src/views/Order/components/GasOrder.vue b/packages/components/src/views/Order/components/GasOrder.vue new file mode 100644 index 0000000..d8f3aa6 --- /dev/null +++ b/packages/components/src/views/Order/components/GasOrder.vue @@ -0,0 +1,78 @@ +<template> + <InfiniteLoading + scrollViewClassName="life-page-infinite-scroll-list" + v-bind="infiniteLoadingProps" + > + <template #renderItem="{ item }"> + <OrderCard + title="鐕冩皵鍏呭��" + :status="convertOrderFrontStatus(item?.payStatus, item?.lifePayOrderStatus)" + :order-no="item?.orderNo" + @goApplyRefund="emit('goApplyRefund', $event)" + @goRefundDetail="emit('goRefundDetail', $event)" + > + <OrderCardItem + label="鍏呭�艰处鍙�:" + :value="JSON.parse(item?.orderParamDetailJsonStr)?.gasAccount" + /> + <OrderCardItem + label="涓嬪崟鏃堕棿:" + :value="item?.creationTime && dayjs(item?.creationTime).format('YYYY-MM-DD HH:mm:ss')" + /> + <template v-if="item.payStatus !== BlLifeRecharge.constants.LifePayStatusEnum.宸查��娆�"> + <OrderCardItem + label="鍏呭�奸噾棰�:" + :value="`锟�${toThousand(item?.rechargeAmount)}`" + danger + /> + <OrderCardItem label="浼樻儬閲戦:" :value="`锟�${toThousand(item?.discountAmount)}`" /> + </template> + <OrderCardItem label="瀹炰粯閲戦:" :value="`锟�${toThousand(item?.payAmount)}`" danger /> + <OrderCardItem + label="鏀粯鏃堕棿:" + :value="item?.payTime && dayjs(item?.payTime).format('YYYY-MM-DD HH:mm:ss')" + /> + <OrderCardItem + v-if="item.payStatus !== BlLifeRecharge.constants.LifePayStatusEnum.宸查��娆�" + label="瀹屾垚鏃堕棿:" + :value="item?.finishTime && dayjs(item?.finishTime).format('YYYY-MM-DD HH:mm:ss')" + /> + <template v-else> + <OrderCardItem label="閫�娆鹃噾棰�:" :value="`锟�${toThousand(item?.payAmount)}`" danger /> + <OrderCardItem + label="閫�娆炬椂闂�:" + :value="item?.refundTime && dayjs(item?.refundTime).format('YYYY-MM-DD HH:mm:ss')" + > + </OrderCardItem> + </template> + </OrderCard> + </template> + </InfiniteLoading> +</template> + +<script setup lang="ts"> +import InfiniteLoading from '../../../components/InfiniteLoading/InfiniteLoading.vue'; +import OrderCard from '../../../components/Card/OrderCard.vue'; +import OrderCardItem from '../../../components/Card/OrderCardItem.vue'; +import { useGetUserLifePayOrderPage } from '../../../hooks'; +import dayjs from 'dayjs'; +import { BlLifeRecharge } from '@life-payment/core-vue'; +import { toThousand, convertOrderFrontStatus } from '../../../utils'; + +defineOptions({ + name: 'GasOrder', +}); + +// type Props = {}; + +// const props = withDefaults(defineProps<Props>(), {}); + +const emit = defineEmits<{ + (e: 'goApplyRefund', orderNo: string): void; + (e: 'goRefundDetail', orderNo: string): void; +}>(); + +const { infiniteLoadingProps } = useGetUserLifePayOrderPage({ + lifePayOrderType: BlLifeRecharge.constants.LifePayOrderTypeEnum.鐕冩皵璁㈠崟, +}); +</script> diff --git a/packages/components/src/views/Order/components/PhoneOrder.vue b/packages/components/src/views/Order/components/PhoneOrder.vue index db8ebc4..873946c 100644 --- a/packages/components/src/views/Order/components/PhoneOrder.vue +++ b/packages/components/src/views/Order/components/PhoneOrder.vue @@ -6,8 +6,10 @@ <template #renderItem="{ item }"> <OrderCard title="璇濊垂鍏呭��" - :status="orderStatusEnum(item?.payStatus, item?.lifePayOrderStatus)" + :status="convertOrderFrontStatus(item?.payStatus, item?.lifePayOrderStatus)" :order-no="item?.orderNo" + @goApplyRefund="emit('goApplyRefund', $event)" + @goRefundDetail="emit('goRefundDetail', $event)" > <OrderCardItem label="鍏呭�艰处鍙�:" @@ -55,7 +57,7 @@ import { useGetUserLifePayOrderPage } from '../../../hooks'; import dayjs from 'dayjs'; import { BlLifeRecharge } from '@life-payment/core-vue'; -import { toThousand, orderStatusEnum } from '../../../utils'; +import { toThousand, convertOrderFrontStatus } from '../../../utils'; defineOptions({ name: 'PhoneOrder', @@ -65,6 +67,11 @@ // const props = withDefaults(defineProps<Props>(), {}); +const emit = defineEmits<{ + (e: 'goApplyRefund', orderNo: string): void; + (e: 'goRefundDetail', orderNo: string): void; +}>(); + const { infiniteLoadingProps } = useGetUserLifePayOrderPage({ lifePayOrderType: BlLifeRecharge.constants.LifePayOrderTypeEnum.璇濊垂璁㈠崟, }); diff --git a/packages/components/src/views/userAccount/UserAccountListView.vue b/packages/components/src/views/userAccount/UserAccountListView.vue new file mode 100644 index 0000000..68ee021 --- /dev/null +++ b/packages/components/src/views/userAccount/UserAccountListView.vue @@ -0,0 +1,75 @@ +<template> + <InfiniteLoading + scrollViewClassName="life-page-infinite-scroll-list" + v-bind="infiniteLoadingProps" + > + <template #renderItem="{ item }"> + <AccountCard + :title="TitleMap[item.lifePayType]" + :content=" + item.lifePayType === LifeRechargeConstants.LifePayOrderTypeEnum.璇濊垂璁㈠崟 + ? item.content + : `${item.city}-${item.content}` + " + :remark="item.remark" + :style="{ + marginBottom: Taro.pxTransform(20), + backgroundColor: '#ffffff', + }" + > + <template #action> + <div class="account-card-action" @click="handleEditUserAccount">缂栬緫</div> + <div class="account-card-action" @click="handleEditUserAccount">鍒犻櫎</div> + </template> + </AccountCard> + </template> + </InfiniteLoading> +</template> + +<script setup lang="ts"> +import InfiniteLoading from '../../components/InfiniteLoading/InfiniteLoading.vue'; +import { + BlLifeRecharge, + useLifeRechargeContext, + QueryUserAccountListInput, + LifeRechargeConstants, +} from '@life-payment/core-vue'; +import { useInfiniteLoading } from '../../hooks/infiniteLoading'; +import { OrderInputType } from '../../constants'; +import AccountCard from '../../components/Card/AccountCard.vue'; +import Taro from '@tarojs/taro'; + +defineOptions({ + name: 'UserAccountListView', +}); + +const { blLifeRecharge } = useLifeRechargeContext(); + +const TitleMap = { + [LifeRechargeConstants.LifePayOrderTypeEnum.璇濊垂璁㈠崟]: '鎵嬫満鍙�', + [LifeRechargeConstants.LifePayOrderTypeEnum.鐢佃垂璁㈠崟]: '鐢佃垂鎴峰彿', + [LifeRechargeConstants.LifePayOrderTypeEnum.鐕冩皵璁㈠崟]: '鐕冩皵鎴峰彿', +}; + +const { infiniteLoadingProps } = useInfiniteLoading( + ({ pageParam }) => { + let params: QueryUserAccountListInput = { + pageModel: { + rows: 20, + page: pageParam, + orderInput: [{ property: 'id', order: OrderInputType.Desc }], + }, + userId: blLifeRecharge.accountModel.userId, + }; + + return blLifeRecharge.services.getUserAccountList(params, { + showLoading: false, + }); + }, + { + queryKey: ['blLifeRecharge/getUserAccountList', blLifeRecharge.accountModel.userId], + } +); + +function handleEditUserAccount() {} +</script> diff --git a/packages/core/src/lifeRechargeConstants.ts b/packages/core/src/lifeRechargeConstants.ts index f052615..2d07787 100644 --- a/packages/core/src/lifeRechargeConstants.ts +++ b/packages/core/src/lifeRechargeConstants.ts @@ -35,8 +35,39 @@ 宸插け璐� = 20, 宸插畬鎴� = 30, + + 閫�娆惧緟瀹℃牳 = 40, + + 宸查��娆� = 50, + + 閫�娆惧け璐� = 60, } + export const LifePayOrderStatusEnumText = { + [LifePayOrderStatusEnum.寰呯‘璁: '寰呯‘璁�', + [LifePayOrderStatusEnum.宸插け璐: '宸插け璐�', + [LifePayOrderStatusEnum.宸插畬鎴怾: '宸插畬鎴�', + [LifePayOrderStatusEnum.閫�娆惧緟瀹℃牳]: '閫�娆惧緟瀹℃牳', + [LifePayOrderStatusEnum.宸查��娆綸: '宸查��娆�', + [LifePayOrderStatusEnum.閫�娆惧け璐: '閫�娆惧け璐�', + }; + + export enum LifePayOrderFrontStatusEnum { + 鏀粯鎴愬姛 = 10, + 閫�娆惧緟瀹℃牳 = 40, + 宸查��娆� = 50, + 閫�娆惧け璐� = 60, + 鍏呭�兼垚鍔� = 100, + } + + export const LifePayOrderFrontStatusEnumText = { + [LifePayOrderFrontStatusEnum.鏀粯鎴愬姛]: '鏀粯鎴愬姛', + [LifePayOrderFrontStatusEnum.閫�娆惧緟瀹℃牳]: '閫�娆惧緟瀹℃牳', + [LifePayOrderFrontStatusEnum.宸查��娆綸: '宸查��娆�', + [LifePayOrderFrontStatusEnum.閫�娆惧け璐: '閫�娆惧け璐�', + [LifePayOrderFrontStatusEnum.鍏呭�兼垚鍔焆: '鍏呭�兼垚鍔�', + }; + export enum IspCode { /**涓浗绉诲姩 */ yidong = 'yidong', diff --git a/packages/core/src/lifeRechargeServices.ts b/packages/core/src/lifeRechargeServices.ts index 865a7e2..200ad7e 100644 --- a/packages/core/src/lifeRechargeServices.ts +++ b/packages/core/src/lifeRechargeServices.ts @@ -169,6 +169,18 @@ }); } + /** 鑾峰彇鎴戠殑鎴峰彿鍒楄〃 POST /api/LifePay/GetUserAccountList */ + async getUserAccountList(body: QueryUserAccountListInput, options?: RequestConfig) { + return this.request<UserAccountListOutputPageOutput>('/api/LifePay/GetUserAccountList', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); + } + /** 娣诲姞鎴栦慨鏀规垜鐨勬埛鍙� POST /api/LifePay/AddUpdateUserAccount */ async addUpdateUserAccount(body: AddUpdateUserAccountInput, options?: RequestConfig) { return this.request<number>('/api/LifePay/AddUpdateUserAccount', { @@ -197,6 +209,18 @@ async getGasParValue(options?: RequestConfig) { return this.request<GasParValueResponse>('/api/LifePay/GetGasParValue', { method: 'GET', + ...(options || {}), + }); + } + + /** 鐢ㄦ埛鍙戣捣鐢熸椿缂磋垂閫�娆� POST /api/LifePay/RefundUserLifePayOrder */ + async refundUserLifePayOrder(body: RefundUserLifePayOrderInput, options?: RequestConfig) { + return this.request<number>('/api/LifePay/RefundUserLifePayOrder', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, ...(options || {}), }); } @@ -522,3 +546,23 @@ rate?: number; comments?: string; } + +export interface RefundUserLifePayOrderInput { + id?: string; + /** 鐢ㄦ埛Id */ + userId?: string; + refundApplyRemark?: string; +} + +export interface QueryUserAccountListInput { + pageModel?: Pagination; + /** 鐢ㄦ埛Id */ + userId?: string; + lifePayOrderType?: LifeRechargeConstants.LifePayOrderTypeEnum; +} + +export interface UserAccountListOutputPageOutput { + pageModel?: Pagination; + objectData?: any; + data?: UserAccountListOutput[]; +} -- Gitblit v1.9.1