添加景区入驻申请流程并对齐 Android

This commit is contained in:
2026-07-07 11:09:27 +08:00
parent c4057537d2
commit 187ba990d4
22 changed files with 2202 additions and 216 deletions

View File

@ -16,9 +16,19 @@ final class PermissionApplyViewController: BaseViewController {
private let scrollView = UIScrollView()
private let contentStack = UIStackView()
private let bannerView = PermissionApplyBannerView()
private let roleSelector = PermissionFormSelectorRow(title: "角色信息", subtitle: "单选 · 请选择您需要申请权限的角色", placeholder: "请选择角色")
private let existingScenicTags = PermissionSelectedTagsView()
private let scenicSelector = PermissionFormSelectorRow(title: "新增景区", subtitle: "多选 · 请选择需要新增权限的景区", placeholder: "请选择景区")
private let roleSelector = PermissionFormSelectorRow(
title: "角色信息",
tag: "单选",
description: "请选择您需要申请权限的角色",
placeholder: "请选择角色"
)
private let newRoleTags = PermissionSelectedTagsView()
private let scenicSelector = PermissionFormSelectorRow(
title: "选择景区",
tag: "可多选",
description: "请选择您需要申请权限的景区",
placeholder: "请选择景区"
)
private let selectedScenicTags = PermissionSelectedTagsView()
private let submitButton = PermissionSubmitButton()
@ -49,7 +59,7 @@ final class PermissionApplyViewController: BaseViewController {
let card = UIView()
card.backgroundColor = .white
card.layer.cornerRadius = 8
let cardStack = UIStackView(arrangedSubviews: [roleSelector, existingScenicTags, scenicSelector, selectedScenicTags])
let cardStack = UIStackView(arrangedSubviews: [roleSelector, newRoleTags, scenicSelector, selectedScenicTags])
cardStack.axis = .vertical
cardStack.spacing = 20
card.addSubview(cardStack)
@ -89,7 +99,7 @@ final class PermissionApplyViewController: BaseViewController {
}
bannerView.onApplyNewScenic = { [weak self] in
self?.showToast("功能开发中")
self?.navigationController?.pushViewController(ScenicApplicationViewController(), animated: true)
}
roleSelector.onTap = { [weak self] in self?.presentRolePicker() }
scenicSelector.onTap = { [weak self] in
@ -112,12 +122,11 @@ final class PermissionApplyViewController: BaseViewController {
private func applyViewModel() {
if viewModel.selectedRoleName.isEmpty {
roleSelector.setValue("请选择角色", isPlaceholder: true)
existingScenicTags.isHidden = true
newRoleTags.isHidden = true
} else {
roleSelector.setValue(viewModel.selectedRoleName, isPlaceholder: false)
if let roleId = viewModel.selectedRoleId {
let names = viewModel.existingScenics(for: roleId).map(\.name)
existingScenicTags.apply(title: "已开通景区", names: names, onRemove: nil)
newRoleTags.apply(title: "新增角色", names: [viewModel.selectedRoleName]) { [weak self] _ in
self?.viewModel.clearRoleSelection()
}
}
@ -125,9 +134,15 @@ final class PermissionApplyViewController: BaseViewController {
scenicSelector.setValue("请选择景区", isPlaceholder: true)
selectedScenicTags.isHidden = true
} else {
scenicSelector.setValue("已选 \(viewModel.selectedScenicNames.count) 个景区", isPlaceholder: false)
let displayText: String
if viewModel.selectedScenicNames.count == 1 {
displayText = viewModel.selectedScenicNames[0]
} else {
displayText = "已选中\(viewModel.selectedScenicNames.count)个景区"
}
scenicSelector.setValue(displayText, isPlaceholder: false)
selectedScenicTags.apply(
title: "待申请景区",
title: "新增景区",
names: viewModel.selectedScenicNames
) { [weak self] index in
guard let self else { return }
@ -186,7 +201,7 @@ final class PermissionApplyViewController: BaseViewController {
self?.viewModel.toggleScenic(scenic)
})
}
alert.addAction(UIAlertAction(title: "完成", style: .cancel))
alert.addAction(UIAlertAction(title: "取消", style: .cancel))
present(alert, animated: true)
}