feat: 新增工单中心、房间巡查、失物招领等业务模块

- 新增工单中心(ticket_center)与工单工作台(ticket_workbench)页面
- 新增房间巡查(room_inspection)与失物招领发布(lost_found_publish)页面
- 预约看样流程新增房型/楼栋/楼层选择器组件
- 新增工具模块: booking-entry、privacy、reservation-flow
- api/index.js 补充楼层列表、看样提交等接口
- locales/messages.js 补充多语言文案
- manifest.json 开启微信小程序隐私检查
- 完善登录、注册、申请详情、账单等相关页面交互
This commit is contained in:
liangjian
2026-07-24 09:35:46 +08:00
parent 9fea127de1
commit 445bd850f4
36 changed files with 9281 additions and 340 deletions

View File

@@ -84,6 +84,29 @@ function shouldSkipUnauthorizedRedirect() {
return route === 'pkgAccount/login/login' || route === 'pages/login/index' || route === 'pages/login/login'
}
function normalizeRequestedLanguageHeaderValue(language) {
return String(language || getCurrentLanguage() || 'zh').trim().toLowerCase() === 'en' ? 'en' : 'zh'
}
function buildRequestHeader(header = {}, token = '') {
const normalizedHeader = { ...(header || {}) }
const requestedLanguageHeaderKey = Object.keys(normalizedHeader).find(key => String(key || '').toLowerCase() === 'x-requested-language')
if (requestedLanguageHeaderKey && requestedLanguageHeaderKey !== 'X-Requested-Language') {
delete normalizedHeader[requestedLanguageHeaderKey]
}
normalizedHeader['X-Requested-Language'] = normalizeRequestedLanguageHeaderValue(
requestedLanguageHeaderKey ? normalizedHeader[requestedLanguageHeaderKey] : normalizedHeader['X-Requested-Language']
)
return {
'Content-Type': 'application/json',
...(token ? { Authorization: `Bearer ${token}` } : {}),
...normalizedHeader
}
}
function handleUnauthorized(responseData) {
clearLoginSession()
@@ -126,12 +149,7 @@ export function request(options = {}) {
data: uppercaseMethod === 'GET'
? (params !== undefined ? normalizedParams : normalizedData)
: normalizedData,
header: {
'Content-Type': 'application/json',
'X-Requested-Language': getCurrentLanguage(),
...(token ? { Authorization: `Bearer ${token}` } : {}),
...header
},
header: buildRequestHeader(header, token),
success: (res) => {
const { statusCode, data: responseData } = res
if ((statusCode === 401) || (responseData && Number(responseData.code) === 401)) {