Files
QSY-lvjuxcx/utils/deposit-other-payment.js
liangjian 9fee2c3a74 feat: 优化首页服务入口与租住业务流程
补齐首页待办跳转、押金支付引导和多类租住服务页面能力,统一租客端关键业务流程体验。
2026-08-25 13:53:12 +08:00

91 lines
2.7 KiB
JavaScript

import { sysdictPage } from '@/api/index.js'
export const MOBILE_DEPOSIT_OTHER_PAYMENT_CONFIG_TYPE = 'MobileDepositOtherPaymentConfig'
export const MOBILE_PROVIDER_TYPE = 'WechatMiniProgram'
export const DEPOSIT_OTHER_PAYMENT_CONFIG_KEY = 'depositOtherPayment'
function normalizeText(value) {
return String(value || '').trim()
}
function parseJsonStringMaybe(value) {
const text = normalizeText(value)
if (!text) {
return {}
}
try {
const parsed = JSON.parse(text)
return parsed && typeof parsed === 'object' && !Array.isArray(parsed) ? parsed : {}
} catch (error) {
return {}
}
}
function normalizeRows(response) {
const payload = response && response.data !== undefined ? response.data : response
if (Array.isArray(payload)) {
return payload
}
if (payload && Array.isArray(payload.data)) {
return payload.data
}
if (payload && payload.data && Array.isArray(payload.data.data)) {
return payload.data.data
}
return []
}
function getProviderType(row = {}) {
return normalizeText(row.providerType || row.ProviderType)
}
export function createDefaultDepositOtherPaymentConfig() {
return {
code: '',
key: DEPOSIT_OTHER_PAYMENT_CONFIG_KEY,
phone: '',
qrCode: '',
contentZh: '',
contentEn: ''
}
}
export function normalizeDepositOtherPaymentConfig(row = {}) {
const defaults = createDefaultDepositOtherPaymentConfig()
const extra = parseJsonStringMaybe(row.extraInfo || row.extraConfig || row.ExtraConfig)
return {
code: normalizeText(row.code),
key: normalizeText(row.key) || defaults.key,
phone: normalizeText(extra.phone || row.description),
qrCode: normalizeText(extra.qrCode || extra.qrCodeImage || extra.qrImage),
contentZh: normalizeText(extra.contentZh || extra.content || defaults.contentZh),
contentEn: normalizeText(extra.contentEn || defaults.contentEn)
}
}
function findMatchedRow(rows = []) {
const providerRows = rows.filter(item => getProviderType(item) === MOBILE_PROVIDER_TYPE)
const legacyRows = rows.filter(item => !getProviderType(item))
return (
providerRows.find(item => normalizeText(item && item.key) === DEPOSIT_OTHER_PAYMENT_CONFIG_KEY)
|| providerRows[0]
|| legacyRows.find(item => normalizeText(item && item.key) === DEPOSIT_OTHER_PAYMENT_CONFIG_KEY)
|| legacyRows[0]
|| null
)
}
export function loadDepositOtherPaymentConfig(language) {
return sysdictPage({
Type: MOBILE_DEPOSIT_OTHER_PAYMENT_CONFIG_TYPE,
ProviderType: MOBILE_PROVIDER_TYPE,
PageIndex: 1,
PageSize: 100
}, language).then((response) => {
const rows = normalizeRows(response)
const matchedRow = findMatchedRow(rows)
return normalizeDepositOtherPaymentConfig(matchedRow || {})
})
}