From 4cb3259a2dc953678d6d7b3961728b0e47f32fc4 Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期一, 24 二月 2025 15:26:54 +0800
Subject: [PATCH] Merge branch 'master' of http://120.26.58.240:8888/r/LifePaymentFront
---
packages/components/src/utils/common.ts | 150 +++++++++++++++++++++++++++++++++++++
packages/components/src/utils/index.ts | 1
packages/components/src/views/Order/components/ElectricOrder.vue | 29 +++++--
packages/components/src/views/Order/components/PhoneOrder.vue | 24 ++++--
apps/taro/src/stores/modules/user.ts | 2
apps/taro/src/pages/mine/index.vue | 15 ++-
6 files changed, 200 insertions(+), 21 deletions(-)
diff --git a/apps/taro/src/pages/mine/index.vue b/apps/taro/src/pages/mine/index.vue
index d7d2380..7022b2f 100644
--- a/apps/taro/src/pages/mine/index.vue
+++ b/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() {
- userStore.logout();
- useUserStoreWithOut().logout();
+async function goLogout() {
+ try {
+ await Message.confirm({
+ message: '纭畾瑕侀��鍑虹櫥褰曞悧锛�',
+ });
+ userStore.logout();
+ blLifeRecharge.loginout();
+ } catch (error) {}
}
</script>
diff --git a/apps/taro/src/stores/modules/user.ts b/apps/taro/src/stores/modules/user.ts
index 8525d95..cab0747 100644
--- a/apps/taro/src/stores/modules/user.ts
+++ b/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();
diff --git a/packages/components/src/utils/common.ts b/packages/components/src/utils/common.ts
new file mode 100644
index 0000000..7b0b23a
--- /dev/null
+++ b/packages/components/src/utils/common.ts
@@ -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 '';
+}
diff --git a/packages/components/src/utils/index.ts b/packages/components/src/utils/index.ts
index 80bf090..be0e4d7 100644
--- a/packages/components/src/utils/index.ts
+++ b/packages/components/src/utils/index.ts
@@ -1 +1,2 @@
export * from './validator';
+export * from './common';
diff --git a/packages/components/src/views/Order/components/ElectricOrder.vue b/packages/components/src/views/Order/components/ElectricOrder.vue
index 7484844..9e45312 100644
--- a/packages/components/src/views/Order/components/ElectricOrder.vue
+++ b/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',
diff --git a/packages/components/src/views/Order/components/PhoneOrder.vue b/packages/components/src/views/Order/components/PhoneOrder.vue
index babe217..acfb987 100644
--- a/packages/components/src/views/Order/components/PhoneOrder.vue
+++ b/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',
--
Gitblit v1.9.1