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

@@ -67,6 +67,18 @@ function buildRequestCacheKey(prefix, params = {}, language) {
return `${prefix}:${language}:${JSON.stringify(normalizeRequestCacheValue(params || {}))}`
}
function createJsonPatchRequest(url, data = {}, language) {
return request({
url,
method: 'POST',
data,
header: {
'Content-Type': 'application/json-patch+json',
'X-Requested-Language': resolveLanguageHeader(language)
}
})
}
const notificationPageRequestCache = new Map()
const notificationPageResponseCache = new Map()
const NOTIFICATION_PAGE_CACHE_TTL = 1200
@@ -121,6 +133,17 @@ export function getEnums(params = {}, language) {
})
}
export function getFloorList(params = {}, language) {
return request({
url: '/floor/list',
method: 'GET',
params,
header: {
'X-Requested-Language': resolveLanguageHeader(language)
}
})
}
// --- 用户与登录 ---
export function usersLogin(data = {}, language) {
return request({
@@ -169,6 +192,18 @@ export function submitApplicationForm(data = {}, language) {
})
}
export function submitViewingApplicationForm(data = {}, language) {
return request({
url: '/applicationform/viewing/submit',
method: 'POST',
data,
header: {
'Content-Type': 'application/json-patch+json',
'X-Requested-Language': resolveLanguageHeader(language)
}
})
}
export function registrationApplicationMePage(params = {}, language) {
return request({
url: '/applicationform/registration/me/page',
@@ -202,6 +237,110 @@ export function applicationFormMePage(params = {}, language) {
})
}
// --- 工单 ---
export function ticketOrderPage(params = {}, language) {
return request({
url: '/ticketorder/page',
method: 'GET',
params,
header: {
'X-Requested-Language': resolveLanguageHeader(language)
}
})
}
export function ticketOrderMyPage(params = {}, language) {
return request({
url: '/ticketorder/my/page',
method: 'GET',
params,
header: {
'X-Requested-Language': resolveLanguageHeader(language)
}
})
}
export function ticketOrderDetail(flowNo, language) {
return request({
url: `/ticketorder/${flowNo}/flows`,
method: 'GET',
header: {
'X-Requested-Language': resolveLanguageHeader(language)
}
})
}
export function ticketOrderFlows(orderNo, language) {
return request({
url: `/ticketorder/${orderNo}/flows`,
method: 'GET',
header: {
'X-Requested-Language': resolveLanguageHeader(language)
}
})
}
export function ticketOrderTransitionOptions(flowNo, language) {
return request({
url: `/ticketorder/${flowNo}/transition-options`,
method: 'GET',
header: {
'X-Requested-Language': resolveLanguageHeader(language)
}
})
}
export function ticketFlowTransitionStepRuleSelectTypeItems(params = {}, language) {
return request({
url: '/ticketflowtransitionsteprule/selecttypeitems',
method: 'GET',
params,
header: {
'X-Requested-Language': resolveLanguageHeader(language)
}
})
}
export function ticketOrderFixonhold(data = {}, language) {
return createJsonPatchRequest('/ticketorder/fixonhold', data, language)
}
export function ticketOrderTransit(data = {}, language) {
return createJsonPatchRequest('/ticketorder/transit', data, language)
}
export function ticketOrderSubmitChangeroom(data = {}, language) {
return createJsonPatchRequest('/ticketordersubmit/changeroom', data, language)
}
export function ticketOrderSubmitCheckout(data = {}, language) {
return createJsonPatchRequest('/ticketordersubmit/checkout', data, language)
}
export function ticketOrderSubmitRepair(data = {}, language) {
return createJsonPatchRequest('/ticketordersubmit/repair', data, language)
}
export function ticketOrderSubmitSuggestion(data = {}, language) {
return createJsonPatchRequest('/ticketordersubmit/suggestion', data, language)
}
export function ticketOrderSubmitRenewal(data = {}, language) {
return createJsonPatchRequest('/ticketordersubmit/renewal', data, language)
}
export function ticketOrderSubmitWaterdelivery(data = {}, language) {
return createJsonPatchRequest('/ticketordersubmit/waterdelivery', data, language)
}
export function ticketOrderSubmitCleaning(data = {}, language) {
return createJsonPatchRequest('/ticketordersubmit/cleaning', data, language)
}
export function lostAndFoundPublish(data = {}, language) {
return createJsonPatchRequest('/lostandfound/publish', data, language)
}
// --- 订单与入住 ---
export function orderSearchedHistoryPage(params = {}, language) {
return request({
@@ -225,6 +364,17 @@ export function orderSearchedMePage(params = {}, language) {
})
}
export function orderSearchedMyPage(params = {}, language) {
return request({
url: '/order/searched/me/page',
method: 'GET',
params: params || {},
header: {
'X-Requested-Language': resolveLanguageHeader(language)
}
})
}
export function orderSearchedMeHistoryPage(params = {}, language) {
return request({
url: '/order/searched/me/history/page',
@@ -268,6 +418,64 @@ export function orderSearchedReservationPage(params = {}, language) {
})
}
export function orderSearchedReservationFlow(data = {}, language) {
return request({
url: '/order/searched/reservation/flow',
method: 'POST',
data,
header: {
'Content-Type': 'application/json-patch+json',
'X-Requested-Language': resolveLanguageHeader(language)
}
})
}
export function roomInspectionMyPage(params = {}, language) {
return request({
url: '/roominspection/my/page',
method: 'GET',
params: params || {},
header: {
'X-Requested-Language': resolveLanguageHeader(language)
}
})
}
export function roomInspectionDetail(params = {}, language) {
return request({
url: '/roominspection/detail',
method: 'GET',
params: params || {},
header: {
'X-Requested-Language': resolveLanguageHeader(language)
}
})
}
export function roomInspectionUpdateItems(data = {}, language) {
return request({
url: '/roominspection/update/items',
method: 'POST',
data,
header: {
'Content-Type': 'application/json-patch+json',
'X-Requested-Language': resolveLanguageHeader(language)
}
})
}
export function roomInspectionSubmit(data = {}, language) {
return request({
url: '/roominspection/submit',
method: 'POST',
data,
header: {
'Content-Type': 'application/json-patch+json',
'X-Requested-Language': resolveLanguageHeader(language)
}
})
}
export function checkRecordByChecked(params = {}, language) {
const query = params || {}
const orderNo = String(query.orderNo || '').trim()
@@ -300,6 +508,24 @@ export function accountQueryBills(params = {}, language) {
})
}
export function accountQueryBill(params = {}, language) {
const query = params || {}
const billNo = String(query.billNo || query.BillNo || '').trim()
if (!billNo) {
return Promise.reject(new Error('账单号不能为空'))
}
return request({
url: '/accountquery/bill',
method: 'GET',
params: {
billNo
},
header: {
'X-Requested-Language': resolveLanguageHeader(language)
}
})
}
export function paymentBillPay(data = {}, language) {
const payload = data || {}
return request({
@@ -385,6 +611,17 @@ export function getMyEffectiveContracts(params = {}, language) {
})
}
export function contractDetail(params = {}, language) {
return request({
url: '/contract/detail',
method: 'GET',
params,
header: {
'X-Requested-Language': resolveLanguageHeader(language)
}
})
}
export function contractPreview(data = {}, language) {
return request({
url: '/contract/preview',
@@ -484,6 +721,38 @@ export function facilityManagers(params = {}, language) {
})
}
// --- 宿管与管理员联系人 ---
export function myDormitoryManagers(language) {
return request({
url: '/usercampus/my-dormitory-managers',
method: 'GET',
header: {
'X-Requested-Language': resolveLanguageHeader(language)
}
})
}
export function myCounselor(language) {
return request({
url: '/usercampus/my-counselor',
method: 'GET',
header: {
'X-Requested-Language': resolveLanguageHeader(language)
}
})
}
export function buildingPagination(params = {}, language) {
return request({
url: '/building/pagination',
method: 'GET',
params,
header: {
'X-Requested-Language': resolveLanguageHeader(language)
}
})
}
export function roomtypeList(params = {}, language) {
return request({
url: '/roomtype/list',