From 5800a0c76c9e76f5012f75fe97fd96be1c521f0c Mon Sep 17 00:00:00 2001
From: dzc <2388224167@qq.com>
Date: Fri, 8 May 2026 17:21:00 +0800
Subject: [PATCH] =?UTF-8?q?feat:=E6=94=AF=E4=BB=98=E5=AE=9D=E6=94=AF?=
=?UTF-8?q?=E4=BB=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
package.json | 1 +
pnpm-lock.yaml | 8 +
src/pages.json | 7 +
src/pages/setting/index.vue | 9 +-
src/pages/tabbar/canteen.vue | 17 +
src/pages/tabbar/my.vue | 12 +-
src/pages/wallet/recharge-done.vue | 143 +
src/pages/wallet/recharge.vue | 23 +-
src/sheep/api/pay.ts | 9 +
.../components/common/app-lottie-player.vue | 207 +
.../components/common/copyright-text.vue | 6 +
src/sheep/constant/service-enum.ts | 20 +
src/static/icon/service_12.png | Bin 0 -> 3929 bytes
src/static/lottie-json/fail.json | 1 +
src/static/lottie-json/loading.json | 1 +
src/static/lottie-json/success.json | 3866 +++++++++++++++++
16 files changed, 4319 insertions(+), 11 deletions(-)
create mode 100644 src/pages/wallet/recharge-done.vue
create mode 100644 src/sheep/components/common/app-lottie-player.vue
create mode 100644 src/sheep/components/common/copyright-text.vue
create mode 100644 src/static/icon/service_12.png
create mode 100644 src/static/lottie-json/fail.json
create mode 100644 src/static/lottie-json/loading.json
create mode 100644 src/static/lottie-json/success.json
diff --git a/package.json b/package.json
index 00297aa..97347e3 100644
--- a/package.json
+++ b/package.json
@@ -58,6 +58,7 @@
"base64-utf8": "^1.0.0",
"crypto-js": "^4.2.0",
"dayjs": "^1.11.19",
+ "lottie-web": "^5.13.0",
"luch-request": "^3.1.1",
"pinia": "^3.0.4",
"radash": "^12.1.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index fee9291..026e88d 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -71,6 +71,9 @@ importers:
dayjs:
specifier: ^1.11.19
version: 1.11.19
+ lottie-web:
+ specifier: ^5.13.0
+ version: 5.13.0
luch-request:
specifier: ^3.1.1
version: 3.1.1
@@ -3074,6 +3077,9 @@ packages:
lodash@4.17.21:
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+ lottie-web@5.13.0:
+ resolution: {integrity: sha512-+gfBXl6sxXMPe8tKQm7qzLnUy5DUPJPKIyRHwtpCpyUEYjHYRJC/5gjUvdkuO2c3JllrPtHXH5UJJK8LRYl5yQ==}
+
lru-cache@5.1.1:
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
@@ -8373,6 +8379,8 @@ snapshots:
lodash@4.17.21: {}
+ lottie-web@5.13.0: {}
+
lru-cache@5.1.1:
dependencies:
yallist: 3.1.1
diff --git a/src/pages.json b/src/pages.json
index 2e8f412..7a17b81 100644
--- a/src/pages.json
+++ b/src/pages.json
@@ -173,6 +173,13 @@
"navigationBarTitleText": "",
"disableScroll": true
}
+ },
+ {
+ "path": "recharge-done",
+ "style": {
+ "navigationBarTitleText": "",
+ "disableScroll": true
+ }
}
]
},
diff --git a/src/pages/setting/index.vue b/src/pages/setting/index.vue
index 7a313b9..2f2ab30 100644
--- a/src/pages/setting/index.vue
+++ b/src/pages/setting/index.vue
@@ -22,8 +22,9 @@
-
+
+
- {{ v }}
+ {{
+ v
+ }}
@@ -71,6 +75,7 @@ import { getAppVersionCode } from "@@/utils/appTool"
import AffirmText from "@/sheep/components/common/affirm-text.vue"
import AppHotUpdate from "@/sheep/components/app-version/app-hot-update.vue"
+import CopyrightText from "@/sheep/components/common/copyright-text.vue"
const dynamicMenuList = computed(() => {
return state.menuList.filter(item => item.visible)
diff --git a/src/pages/tabbar/canteen.vue b/src/pages/tabbar/canteen.vue
index 0251cc1..b78680b 100644
--- a/src/pages/tabbar/canteen.vue
+++ b/src/pages/tabbar/canteen.vue
@@ -13,6 +13,7 @@ const state = reactive({
pa: {
pagesize: 10,
type: "1",
+ name: '',
},
})
@@ -63,6 +64,12 @@ const reportPageAccess = async (pageCode: string) => {
osVersion: systemInfo?.system || "",
})
}
+const search = () => {
+ pageRef.value && pageRef.value.reload(false)
+}
+const inputClear = () => {
+ pageRef.value && pageRef.value.reload(false)
+}
@@ -70,6 +77,16 @@ const reportPageAccess = async (pageCode: string) => {
+
+
+
+ 搜 索
+
+
+
diff --git a/src/pages/tabbar/my.vue b/src/pages/tabbar/my.vue
index aed1f30..3713536 100644
--- a/src/pages/tabbar/my.vue
+++ b/src/pages/tabbar/my.vue
@@ -1,5 +1,5 @@
-
@@ -326,7 +326,7 @@ const onTabMenu = async (item: any) => {
case "核销":
await appScanCode()
break
- case "商品管理":
+ case "商品":
await gotoOnlineDishManage()
break
default:
@@ -392,14 +392,14 @@ const hasRoleCode = (code: string) => {
return Array.isArray(roleCodes) && roleCodes.includes(code)
}
-/** 按角色在「钱包 / 喜好」之后插入:商品管理、订单管理、骑手配送 */
+/** 按角色在「钱包 / 喜好」之后插入:商品、订单管理、骑手配送 */
const syncRoleMenus = () => {
- const roleLabels = new Set(["商品管理", "订单管理", "配送"])
+ const roleLabels = new Set(["商品", "商家", "配送"])
const base = (state.menuList || []).filter((x: any) => !roleLabels.has(x?.text))
const roleEntries: any[] = []
if (hasRoleCode("ONLINE_CANTEEN_MCH")) {
- roleEntries.push({ text: "商品管理", icon: "/static/icon/service_2.png", path: "/pages/merchant/online-dish-manage" })
- roleEntries.push({ text: "订单管理", icon: "/static/icon/service_1.png", path: "/pages/canteen-delivery/mch-list" })
+ roleEntries.push({ text: "商品", icon: "/static/icon/service_12.png", path: "/pages/merchant/online-dish-manage" })
+ roleEntries.push({ text: "商家", icon: "/static/icon/service_1.png", path: "/pages/canteen-delivery/mch-list" })
}
if (hasRoleCode("CANTEEN_RIDER")) {
roleEntries.push({ text: "配送", icon: "/static/icon/service_11.png", path: "/pages/canteen-delivery/list" })
diff --git a/src/pages/wallet/recharge-done.vue b/src/pages/wallet/recharge-done.vue
new file mode 100644
index 0000000..8f2a2d8
--- /dev/null
+++ b/src/pages/wallet/recharge-done.vue
@@ -0,0 +1,143 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ titleText }}
+ {{ descText }}
+ ¥{{ hooks.useMoney(payOrderAmount) }}
+
+
+
+
+
+ 商户
+ {{ mchNameText }}
+
+
+ 充值方式
+
+ {{ payTypeText }}
+
+
+
+ 订单状态
+
+ {{ state.phase === "loading" ? "确认中" : state.phase === "success" ? "已到账" : "未完成" }}
+
+
+
+
+
+
+
+
+
+ 查看钱包
+
+
+ 重新查询
+
+
+
+
diff --git a/src/pages/wallet/recharge.vue b/src/pages/wallet/recharge.vue
index 3d8a350..1f724be 100644
--- a/src/pages/wallet/recharge.vue
+++ b/src/pages/wallet/recharge.vue
@@ -12,9 +12,11 @@ const isPay = computed(() => {
const state = reactive({
+ payNo: '',
+
payType: [],
walletId: null,
- currentPayType: "10",
+ currentPayType: null,
currentRecharge: 0,
userInfo: {},
detail: {},
@@ -63,7 +65,10 @@ const getUserPayTypeList = async () => {
},)
}
}
- state.currentPayType = state.payType[0].type
+ const defaultPayType = state.payType[0].type
+ if (defaultPayType && !state.currentPayType) {
+ state.currentPayType = defaultPayType
+ }
}
}
@@ -114,6 +119,7 @@ const doPay = async () => {
await disposeAlipay(targetRecharge.id)
}
uni.hideLoading()
+ router.jump("/pages/wallet/recharge-done", { payNo: state.payNo }, 2)
} catch (error: any) {
console.error("充值意外的错误:", error)
uni.hideLoading()
@@ -147,6 +153,7 @@ const disposeAlipay = async (bizId: any) => {
if (createCode != 0) {
throw new Error(createData?.msg ?? "支付宝充值发起失败")
}
+ state.payNo = createData?.payNo ?? ""
const paymentResult = await uni.requestPayment({
provider: 'alipay',
...createData?.appPlusPayParams ?? {},
@@ -178,12 +185,22 @@ const disposeWxpay = async (bizId: any) => {
openId: "",
}
const { data: createData, code: createCode }: any = await appPlusPlatformApi.miniPay(payParams)
+ console.log("微信支付createData:", createData);
if (createCode != 0) {
throw new Error(createData?.msg ?? "微信充值发起失败")
}
+ state.payNo = createData?.payNo ?? ""
const paymentResult = await uni.requestPayment({
provider: 'wxpay',
- ...createData?.appPlusPayParams ?? {},
+ orderInfo: {
+ "appid": createData?.appPlusPayParams?.appid,
+ "noncestr": createData?.appPlusPayParams?.nonceStr,
+ "package": createData?.appPlusPayParams?.packageVal,
+ "partnerid": createData?.appPlusPayParams?.partnerId,
+ "prepayid": createData?.appPlusPayParams?.prepayId,
+ "timestamp": createData?.appPlusPayParams?.timestamp,
+ "sign": createData?.appPlusPayParams?.sign,
+ },
});
console.log("微信支付requestPayment返回:", paymentResult);
if (paymentResult.errMsg && paymentResult.errMsg.includes("requestPayment:ok")) {
diff --git a/src/sheep/api/pay.ts b/src/sheep/api/pay.ts
index 6549967..7674731 100644
--- a/src/sheep/api/pay.ts
+++ b/src/sheep/api/pay.ts
@@ -73,4 +73,13 @@ export default {
data,
})
},
+ // 查询支付订单
+ getByPayNo: (params): Promise => {
+ return request({
+ url: "/third/third-app-pay/app/get-by-pay-no",
+ method: "GET",
+ params,
+ })
+ },
+
}
diff --git a/src/sheep/components/common/app-lottie-player.vue b/src/sheep/components/common/app-lottie-player.vue
new file mode 100644
index 0000000..73059f7
--- /dev/null
+++ b/src/sheep/components/common/app-lottie-player.vue
@@ -0,0 +1,207 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/sheep/components/common/copyright-text.vue b/src/sheep/components/common/copyright-text.vue
new file mode 100644
index 0000000..8852f0d
--- /dev/null
+++ b/src/sheep/components/common/copyright-text.vue
@@ -0,0 +1,6 @@
+
+
+ Copyright©2026-2036
+ 浙江资安信有限公司版权所有
+
+
\ No newline at end of file
diff --git a/src/sheep/constant/service-enum.ts b/src/sheep/constant/service-enum.ts
index 50bca51..5c8dc5a 100644
--- a/src/sheep/constant/service-enum.ts
+++ b/src/sheep/constant/service-enum.ts
@@ -62,6 +62,23 @@ const actCouponTypeEnum = {
"4": "兑换券",
}
+const thirdPayOrderStatusEnum = {
+ "10": "未支付",
+ "20": "支付成功",
+ "30": "支付失败",
+ "100": "退款中",
+ "200": "退款成功",
+ "300": "退款失败",
+}
+
+const thirdPayOrderBizTypeEnum = {
+ "10": "小程序用户钱包充值",
+}
+
+const appPlusPlatformTypeEnum = {
+ "10": "微信",
+ "20": "支付宝",
+}
export default {
hardwareOrderStatusEnum,
@@ -73,4 +90,7 @@ export default {
carTypeEnum,
actCancelStatusEnum,
actCouponTypeEnum,
+ thirdPayOrderStatusEnum,
+ thirdPayOrderBizTypeEnum,
+ appPlusPlatformTypeEnum,
}
diff --git a/src/static/icon/service_12.png b/src/static/icon/service_12.png
new file mode 100644
index 0000000000000000000000000000000000000000..102048af7fab11b06fcdc65bb6203b2b43bbed6a
GIT binary patch
literal 3929
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