完善首页权限申请流程与队列播报体验。

对齐 Android 无权限强制弹窗、角色下拉与申请页交互,补充 UIButton configuration 适配,并增强景区排队 TTS 与相关单元测试。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-14 13:46:45 +08:00
parent c083f1d4b3
commit efb3925257
50 changed files with 2585 additions and 455 deletions

View File

@ -11,6 +11,9 @@ final class PermissionApplyStatusViewModel {
private(set) var pendingData: RoleApplyPendingResponse?
private(set) var isLoading = false
private(set) var rolePermissionList: [RolePermissionResponse] = []
private(set) var showScenicListDialog = false
private(set) var dialogRoleName = ""
private(set) var dialogScenicList: [ScenicInfo] = []
var onStateChange: (() -> Void)?
var onNavigateToEdit: ((RoleApplyPendingResponse) -> Void)?
@ -29,7 +32,11 @@ final class PermissionApplyStatusViewModel {
notifyStateChange()
do {
let pendingList = try await api.roleApplyPending()
pendingData = pendingList.first { $0.code == applyCode }
pendingData = pendingList.first {
$0.code == applyCode
&& ($0.status == PermissionApplyPendingStatus.reviewing
|| $0.status == PermissionApplyPendingStatus.rejected)
}
} catch {
pendingData = nil
}
@ -42,6 +49,22 @@ final class PermissionApplyStatusViewModel {
onNavigateToEdit?(pendingData)
}
///
func showScenicList(roleName: String, scenics: [ScenicInfo]) {
dialogRoleName = roleName
dialogScenicList = scenics
showScenicListDialog = true
notifyStateChange()
}
///
func hideScenicList() {
dialogRoleName = ""
dialogScenicList = []
showScenicListDialog = false
notifyStateChange()
}
private func notifyStateChange() {
onStateChange?()
}