mirror of
https://gitee.com/beijing_hongye_huicheng/lilishop-uniapp.git
synced 2026-11-06 17:09:01 +08:00
- 新增微信收货地址导入功能(chooseAddress),含地区匹配与错误处理 - 个人资料页接入微信头像选择(chooseAvatar)与昵称填写(type="nickname") - 重构收货地址添加页与管理页的UI布局,抽取公共样式 address-page.scss - 地址页与个人页增加加载失败提示、请求防抖与保存状态反馈 - 下拉刷新改用 Promise.allSettled 避免单接口失败阻断其他数据更新 - manifest 新增 chooseAddress 隐私权限声明,版本号更新至 5.03
32 lines
1.4 KiB
JavaScript
32 lines
1.4 KiB
JavaScript
export function getWechatAddressErrorType(error) {
|
|
const message = String(error?.errMsg || error?.message || '')
|
|
if (/cancel/i.test(message)) return 'cancel'
|
|
if (/requiredPrivateInfos/i.test(message)) return 'configuration'
|
|
if (/privacy|隐私/i.test(message)) return 'privacy'
|
|
if (/auth deny|auth denied|authorize no response|auth reject/i.test(message)) return 'auth'
|
|
if (/not support|not supported|not available|not a function/i.test(message)) return 'unsupported'
|
|
return 'unknown'
|
|
}
|
|
|
|
// Match each name under its parent; never guess an ID from a similarly named region.
|
|
export async function resolveWechatRegion(address, fetchRegions) {
|
|
const names = [address.provinceName, address.cityName, address.countyName, address.streetName]
|
|
const selected = []
|
|
let parentId = 0
|
|
for (let level = 0; level < 4; level++) {
|
|
const response = await fetchRegions(parentId)
|
|
if (!response?.data?.success || !Array.isArray(response.data.result)) {
|
|
throw new Error('地区加载失败')
|
|
}
|
|
const children = response.data.result
|
|
if (!children.length) return selected.length >= 3 ? selected : null
|
|
const name = String(names[level] || '').trim()
|
|
if (!name) return null
|
|
const matches = children.filter(item => String(item.name || item.localName || '').trim() === name)
|
|
if (matches.length !== 1 || !matches[0].id) return null
|
|
selected.push(matches[0])
|
|
parentId = matches[0].id
|
|
}
|
|
return selected
|
|
}
|