apps/taro/src/pages/mine/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
apps/taro/src/stores/modules/user.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
packages/components/src/utils/common.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
packages/components/src/utils/index.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
packages/components/src/views/Order/components/ElectricOrder.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
packages/components/src/views/Order/components/PhoneOrder.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
apps/taro/src/pages/mine/index.vue
@@ -35,12 +35,14 @@ import { useSystemStore } from '@/stores/modules/system'; import PageLayoutWithBg from '@/components/Layout/PageLayoutWithBg.vue'; import { useUserStore } from '@/stores/modules/user'; import { useUserStoreWithOut } from '@/stores/modules/user'; import { Message } from '@/utils'; import { useLifeRechargeContext } from '@life-payment/core-vue'; const { userDetail, virtualPhoneNumber } = useUser(); const isLogin = useIsLogin(); const systemStore = useSystemStore(); const userStore = useUserStore(); const { blLifeRecharge } = useLifeRechargeContext(); const { goLoginFn } = useGoLogin(); const bgHeight = computed(() => 133 + systemStore.navHeight); @@ -71,9 +73,14 @@ const goOrderManage = useAccessLogin(() => goPage(RouterPath.order)); function goLogout() { async function goLogout() { try { await Message.confirm({ message: '确定要退出登录吗?', }); userStore.logout(); useUserStoreWithOut().logout(); blLifeRecharge.loginout(); } catch (error) {} } </script> apps/taro/src/stores/modules/user.ts
@@ -240,6 +240,8 @@ this.token = ''; this.refreshToken = ''; this.userDetail = null; this.virtualUserId = ''; this.virtualPhoneNumber = ''; removeUserInfo(); removeUserDetail(); removeStorageVirtualUserId(); packages/components/src/utils/common.ts
New file @@ -0,0 +1,150 @@ import dayjs from 'dayjs'; import _ from 'lodash'; import { LifeRechargeConstants } from '@life-payment/core-vue'; export function object2query(object: Record<string, string | number>) { return Object.keys(object) .map((key) => (object[key] ? `${key}=${object[key]}` : '')) .filter(Boolean) .join('&'); } export function query2object<T extends { [key: string]: string }>(query: string): T { return Object.fromEntries( decodeURIComponent(query) .split('&') .map((x) => x.split('=')) ); } export function formatTimeWithoutCurrentYear(date: string) { if (!date) return date; const targetDate = dayjs(date); const targetYear = targetDate.year(); const nowYear = dayjs().year(); return targetYear >= nowYear ? targetDate.format('MM-DD HH:mm') : targetDate.format('YYYY-MM-DD HH:mm'); } //去收尾空格 export function trim(str: string) { return str.replace(/(^\s*)|(\s*$)/g, ''); } export function paginateList<T>(list: T[], pageIndex: number, pageSize: number) { const startIndex = (pageIndex - 1) * pageSize; const endIndex = startIndex + pageSize; return list.slice(startIndex, endIndex); } /** * 添加星号 * @param str * @param start * @param end * @returns */ export function addStarForString(str: string, start = 0, end = 0) { return str.substring(0, start) + '*'.repeat(end - start) + str.substring(end); } export function addStarForEmail(str: string) { const end = str.lastIndexOf('.'); return addStarForString(str, 2, end); } export function formatTimeAgo(date: string, format = 'YYYY-MM-DD HH:mm') { const diff = dayjs().diff(date, 'seconds'); // 计算时间差,单位为秒 if (diff < 60) { return `${diff}秒前`; } else if (diff < 60 * 60) { const minutes = Math.floor(diff / 60); return `${minutes}分钟前`; } else if (diff < 60 * 60 * 24) { const hours = Math.floor(diff / (60 * 60)); return `${hours}小时前`; } else if (dayjs(date).isSame(dayjs(), 'day')) { return dayjs(date).format('HH:mm'); } else { // const days = Math.floor(diff / (60 * 60 * 24)); // return `${days}天前`; return formatTimeWithoutCurrentYear(date); //dayjs(date).format(format); } } export function toRound(val: number, num = 2) { if (val >= 0) { return _.round(val, num); } else { const abs = Math.abs(val); return 0 - _.round(abs, num); } } export function toThousand(input: string | number, toFixed = 2) { const num = toRound(Number(input)).toFixed(toFixed); if (Number(num) >= 0) { return num.toString().replace(/(^|\s)\d+/g, (m) => m.replace(/(?=(?!\b)(\d{3})+$)/g, ',')); } else { const posNum = (0 - Number(num)).toFixed(2); return ( '-' + posNum.toString().replace(/(^|\s)\d+/g, (m) => m.replace(/(?=(?!\b)(\d{3})+$)/g, ',')) ); } } export function format(date: string | Date, fmt = 'YYYY-MM-DD') { return date ? dayjs(date).format(fmt) : ''; } export function formatMaxNumber(count: number, max = 9999) { return count > max ? `${max}+` : count; } export function guid() { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { const r = (Math.random() * 16) | 0, v = c === 'x' ? r : (r & 0x3) | 0x8; return v.toString(16); }); } export function delay(timeout = 500) { return new Promise((resolve) => { setTimeout(() => { resolve(1); }, timeout); }); } export function filterJoin(list: any[], separator = '-') { return list.filter(Boolean).join(separator); } export const hiddenIDNumberForEnd6 = (realIDNumber: string) => realIDNumber.replace(/^(\d+)(.{6})$/, '$1******'); // 订单状态 export function orderStatusEnum( payStatus?: LifeRechargeConstants.LifePayStatusEnum, lifePayOrderStatus?: LifeRechargeConstants.LifePayOrderStatusEnum ) { if ( lifePayOrderStatus === LifeRechargeConstants.LifePayOrderStatusEnum.待确认 && payStatus === LifeRechargeConstants.LifePayStatusEnum.已支付 ) { return '充值成功'; } if (payStatus === LifeRechargeConstants.LifePayStatusEnum.已退款) { return '已退款'; } if ( lifePayOrderStatus === LifeRechargeConstants.LifePayOrderStatusEnum.已完成 && payStatus === LifeRechargeConstants.LifePayStatusEnum.已支付 ) { return '支付成功'; } return ''; } packages/components/src/utils/index.ts
@@ -1 +1,2 @@ export * from './validator'; export * from './common'; packages/components/src/views/Order/components/ElectricOrder.vue
@@ -1,23 +1,33 @@ <template> <InfiniteLoading scrollViewClassName="common-infinite-scroll-list" v-bind="infiniteLoadingProps"> <template #renderItem="{ item }"> <OrderCard title="电费充值" status="待支付" :order-no="item?.orderNo"> <OrderCardItem label="充值地区:" :value="'18888888888'" /> <OrderCardItem label="充值户号:" :value="'18888888888'" /> <OrderCard title="电费充值" :status="orderStatusEnum(item?.payStatus, item?.lifePayOrderStatus)" :order-no="item?.orderNo" > <OrderCardItem label="充值地区:" :value="JSON.parse(item?.orderParamDetailJsonStr)?.phone" /> <OrderCardItem label="充值户号:" :value="JSON.parse(item?.orderParamDetailJsonStr)?.phone" /> <OrderCardItem label="下单时间:" :value="dayjs(item?.creationTime).format('YYYY-MM-DD HH:mm:ss')" :value="item?.creationTime && dayjs(item?.creationTime).format('YYYY-MM-DD HH:mm:ss')" /> <OrderCardItem label="充值金额:" :value="item?.rechargeAmount" /> <OrderCardItem label="优惠金额:" :value="item?.discountAmount" /> <OrderCardItem label="实付金额:" :value="item?.payAmount" /> <OrderCardItem label="充值金额:" :value="`¥${toThousand(item?.rechargeAmount)}`" /> <OrderCardItem label="优惠金额:" :value="`¥${toThousand(item?.discountAmount)}`" /> <OrderCardItem label="实付金额:" :value="`¥${toThousand(item?.payAmount)}`" /> <OrderCardItem label="支付时间:" :value="dayjs(item?.payTime).format('YYYY-MM-DD HH:mm:ss')" :value="item?.payTime && dayjs(item?.payTime).format('YYYY-MM-DD HH:mm:ss')" /> <OrderCardItem label="完成时间:" :value="dayjs(item?.finishTime).format('YYYY-MM-DD HH:mm:ss')" :value="item?.finishTime && dayjs(item?.finishTime).format('YYYY-MM-DD HH:mm:ss')" /> </OrderCard> </template> @@ -31,6 +41,7 @@ import { useGetUserLifePayOrderPage } from '../../../hooks'; import { BlLifeRecharge } from '@life-payment/core-vue'; import dayjs from 'dayjs'; import { toThousand, orderStatusEnum } from '../../../utils'; defineOptions({ name: 'ElectricOrder', packages/components/src/views/Order/components/PhoneOrder.vue
@@ -1,22 +1,29 @@ <template> <InfiniteLoading scrollViewClassName="common-infinite-scroll-list" v-bind="infiniteLoadingProps"> <template #renderItem="{ item }"> <OrderCard title="话费充值" status="待支付" :order-no="item?.orderNo"> <OrderCardItem label="充值账号:" :value="'18888888888'" /> <OrderCard title="话费充值" :status="orderStatusEnum(item?.payStatus, item?.lifePayOrderStatus)" :order-no="item?.orderNo" > <OrderCardItem label="充值账号:" :value="JSON.parse(item?.orderParamDetailJsonStr)?.phone" /> <OrderCardItem label="下单时间:" :value="dayjs(item?.creationTime).format('YYYY-MM-DD HH:mm:ss')" :value="item?.creationTime && dayjs(item?.creationTime).format('YYYY-MM-DD HH:mm:ss')" /> <OrderCardItem label="充值金额:" :value="item?.rechargeAmount" /> <OrderCardItem label="优惠金额:" :value="item?.discountAmount" /> <OrderCardItem label="实付金额:" :value="item?.payAmount" /> <OrderCardItem label="充值金额:" :value="`¥${toThousand(item?.rechargeAmount)}`" /> <OrderCardItem label="优惠金额:" :value="`¥${toThousand(item?.discountAmount)}`" /> <OrderCardItem label="实付金额:" :value="`¥${toThousand(item?.payAmount)}`" /> <OrderCardItem label="支付时间:" :value="dayjs(item?.payTime).format('YYYY-MM-DD HH:mm:ss')" :value="item?.payTime && dayjs(item?.payTime).format('YYYY-MM-DD HH:mm:ss')" /> <OrderCardItem label="完成时间:" :value="dayjs(item?.finishTime).format('YYYY-MM-DD HH:mm:ss')" :value="item?.finishTime && dayjs(item?.finishTime).format('YYYY-MM-DD HH:mm:ss')" /> </OrderCard> </template> @@ -30,6 +37,7 @@ import { useGetUserLifePayOrderPage } from '../../../hooks'; import dayjs from 'dayjs'; import { BlLifeRecharge } from '@life-payment/core-vue'; import { toThousand, orderStatusEnum } from '../../../utils'; defineOptions({ name: 'PhoneOrder',