From 1ab7b22221d1ddb03a49b3d2d96ffc331d84cf4c Mon Sep 17 00:00:00 2001 From: zhouyanli <593579392@qq.com> Date: Sat, 15 Aug 2026 17:57:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=A6=96=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- huakai-app/pageSubPack/api/appLaunch.js | 53 ++++- huakai-app/pageSubPack/loginSub/login.vue | 4 +- huakai-app/pageSubPack/loginSub/pwd-login.vue | 4 +- huakai-app/pages.json | 53 +---- .../pages/arrearsPayment/arrearsPayment.vue | 5 +- huakai-app/pages/index/index.vue | 212 ++++++++++++++++++ 6 files changed, 275 insertions(+), 56 deletions(-) create mode 100644 huakai-app/pages/index/index.vue diff --git a/huakai-app/pageSubPack/api/appLaunch.js b/huakai-app/pageSubPack/api/appLaunch.js index f2afa11..25bfa07 100644 --- a/huakai-app/pageSubPack/api/appLaunch.js +++ b/huakai-app/pageSubPack/api/appLaunch.js @@ -11,7 +11,12 @@ const STORAGE_KEY = 'app_launch_payment_data' const APP_QUERY_KEY = 'app_query_params' /** - * 解析查询字符串为对象 + * 需要转为数组的参数字段(逗号分隔字符串 → 数组) + */ +const ARRAY_PARAMS = ['billIds'] + +/** + * 解析查询字符串为对象,数组字段自动拆分 */ function parseQueryString(str) { if (!str || typeof str !== 'string') return null @@ -21,11 +26,47 @@ function parseQueryString(str) { if (idx === -1) return const key = item.substring(0, idx) const val = item.substring(idx + 1) - params[key] = decodeURIComponent(val || '') + const decoded = decodeURIComponent(val || '') + // 同名参数合并为数组;已知数组字段按逗号拆分 + if (key in params) { + if (Array.isArray(params[key])) { + params[key].push(decoded) + } else { + params[key] = [params[key], decoded] + } + } else { + params[key] = ARRAY_PARAMS.includes(key) && decoded.includes(',') + ? decoded.split(',').map(v => v.trim()).filter(Boolean) + : decoded + } }) return params } +/** + * 归一化 billId/billIds:单个 id 用 billId,多个用 billIds,统一转为 billIds 数组 + */ +function normalizeBillParams(obj) { + if (!obj) return + // 先解码再拆分为数组 + if (typeof obj.billIds === 'string') { + const decoded = decodeURIComponent(obj.billIds) + obj.billIds = decoded.includes(',') + ? decoded.split(',').map(v => v.trim()).filter(Boolean) + : [decoded] + } + // billId 存在且 billIds 不存在时,包装为数组 + if (obj.billId && !obj.billIds) { + const decoded = decodeURIComponent( + typeof obj.billId === 'string' ? obj.billId : String(obj.billId) + ) + obj.billIds = decoded.includes(',') + ? decoded.split(',').map(v => v.trim()).filter(Boolean) + : [decoded] + delete obj.billId + } +} + /** * 从启动参数中获取 App 传入的全部数据(支付参数 + token + userId) */ @@ -71,7 +112,10 @@ export function captureAppLaunchData(onShowOptions) { data = tryGetData(onShowOptions, '热启动') } - if (data && (data.payAmount || data.acct || data.custId || data.billId)) { + if (data && (data.payAmount || data.acct || data.custId || data.billId || data.billIds)) { + // 归一化 billId/billIds:单个 id 用 billId,多个用 billIds,统一转为 billIds 数组 + normalizeBillParams(data) + // 恢复登录态 if (data.token) { uni.setStorageSync('token', data.token) @@ -86,6 +130,9 @@ export function captureAppLaunchData(onShowOptions) { console.log('已存储 App 支付数据:', JSON.stringify(data)) } + // 归一化 queryData 中的 billId/billIds + normalizeBillParams(queryData) + // 单独保存参数供接口使用(优先 queryData,fallback 到 data,即 extraData 来源) const queryParams = queryData || data if (queryParams) { diff --git a/huakai-app/pageSubPack/loginSub/login.vue b/huakai-app/pageSubPack/loginSub/login.vue index fcc2c69..e6c143a 100644 --- a/huakai-app/pageSubPack/loginSub/login.vue +++ b/huakai-app/pageSubPack/loginSub/login.vue @@ -115,7 +115,7 @@ const handleCancel = () => { if (pages.length > 1) { uni.navigateBack(); } else { - uni.redirectTo({ url: '/pages/arrearsPayment/arrearsPayment' }); + uni.redirectTo({ url: '/pages/index/index' }); } }; @@ -204,7 +204,7 @@ const handleLogin = () => { // 登录成功后返回来源页 uni.navigateBack({ fail: () => { - uni.redirectTo({ url: '/pages/arrearsPayment/arrearsPayment' }); + uni.redirectTo({ url: '/pages/index/index' }); } }); },1500) diff --git a/huakai-app/pageSubPack/loginSub/pwd-login.vue b/huakai-app/pageSubPack/loginSub/pwd-login.vue index 08a351a..18dd2d3 100644 --- a/huakai-app/pageSubPack/loginSub/pwd-login.vue +++ b/huakai-app/pageSubPack/loginSub/pwd-login.vue @@ -117,7 +117,7 @@ const handleCancel = () => { if (pages.length > 1) { uni.navigateBack(); } else { - uni.redirectTo({ url: '/pages/arrearsPayment/arrearsPayment' }); + uni.redirectTo({ url: '/pages/index/index' }); } }; @@ -166,7 +166,7 @@ const handleLogin = () => { // 登录成功后返回来源页 uni.navigateBack({ fail: () => { - uni.redirectTo({ url: '/pages/arrearsPayment/arrearsPayment' }); + uni.redirectTo({ url: '/pages/index/index' }); } }); },1000) diff --git a/huakai-app/pages.json b/huakai-app/pages.json index 1c1575b..a000c5f 100644 --- a/huakai-app/pages.json +++ b/huakai-app/pages.json @@ -1,5 +1,11 @@ { "pages": [ + { + "path": "pages/index/index", + "style": { + "navigationBarTitleText": "花开物业" + } + }, { "path": "pages/arrearsPayment/arrearsPayment", "style": { @@ -53,53 +59,6 @@ } } ] - }, - { - "root": "pageSubPack/payment-list", - "pages": [ - { - "path": "addPayment", - "style": { - "navigationBarTitleText": "", - "navigationStyle": "custom" - } - }, - { - "path": "addPaymentSuccess", - "style": { - "navigationBarTitleText": "", - "navigationStyle": "custom" - } - }, - { - "path": "noArrearsPayment", - "style": { - "navigationBarTitleText": "", - "navigationStyle": "custom" - } - }, - { - "path": "paymentRecord", - "style": { - "navigationBarTitleText": "", - "navigationStyle": "custom" - } - }, - { - "path": "selectPaymentEntity", - "style": { - "navigationBarTitleText": "", - "navigationStyle": "custom" - } - }, - { - "path": "addHydropower", - "style": { - "navigationBarTitleText": "", - "navigationStyle": "custom" - } - } - ] } ], "easycom": { diff --git a/huakai-app/pages/arrearsPayment/arrearsPayment.vue b/huakai-app/pages/arrearsPayment/arrearsPayment.vue index 3095cb4..8727981 100644 --- a/huakai-app/pages/arrearsPayment/arrearsPayment.vue +++ b/huakai-app/pages/arrearsPayment/arrearsPayment.vue @@ -48,7 +48,7 @@ onShow(() => { const loadPaymentItem = () => { const appData = getAppPaymentData() if (appData) { - console.log('检测到 App 跳转参数:', appData) + console.log('-----检测到 App 跳转参数:', appData) clearAppPaymentData() const item = buildPaymentItemFromApp(appData) uni.setStorageSync('arrearsPayment', item) @@ -65,7 +65,8 @@ const handlePay = async () => { return } delete apiParams.token - + delete apiParams.billId // billId 已归一化为 billIds 数组,删除冗余字段 + console.log('-----传递小程序参数2222------:', apiParams) uni.showLoading({ title: '加载中...', mask: true }) try { const res = await getBankMiniProgramParams(apiParams) diff --git a/huakai-app/pages/index/index.vue b/huakai-app/pages/index/index.vue new file mode 100644 index 0000000..3cc406a --- /dev/null +++ b/huakai-app/pages/index/index.vue @@ -0,0 +1,212 @@ + + + + +