feat: update app workflows and permissions
This commit is contained in:
@ -17,6 +17,7 @@ final class CooperationAcquirerViewController: BaseViewController, UITableViewDa
|
||||
private let refreshControl = UIRefreshControl()
|
||||
private let emptyLabel = UILabel()
|
||||
private var shouldRefreshOnAppear = false
|
||||
private var commissionDialogView: CooperationCommissionRateDialogView?
|
||||
|
||||
override func setupNavigationBar() {
|
||||
title = "合作获客员"
|
||||
@ -32,6 +33,10 @@ final class CooperationAcquirerViewController: BaseViewController, UITableViewDa
|
||||
override func setupUI() {
|
||||
tableView.backgroundColor = .clear
|
||||
tableView.separatorStyle = .none
|
||||
tableView.rowHeight = UITableView.automaticDimension
|
||||
tableView.estimatedRowHeight = 142
|
||||
tableView.contentInset.top = AppSpacing.sm
|
||||
tableView.verticalScrollIndicatorInsets.top = AppSpacing.sm
|
||||
tableView.dataSource = self
|
||||
tableView.delegate = self
|
||||
tableView.register(CooperationAcquirerCell.self, forCellReuseIdentifier: CooperationAcquirerCell.reuseIdentifier)
|
||||
@ -145,6 +150,7 @@ final class CooperationAcquirerViewController: BaseViewController, UITableViewDa
|
||||
}
|
||||
emptyLabel.isHidden = !viewModel.acquirers.isEmpty || viewModel.isRefreshing
|
||||
tableView.reloadData()
|
||||
applyCommissionDialogState()
|
||||
}
|
||||
|
||||
private func presentRemarkDialog(for acquirer: CooperativeSalerEntity) {
|
||||
@ -168,44 +174,56 @@ final class CooperationAcquirerViewController: BaseViewController, UITableViewDa
|
||||
|
||||
private func presentCommissionDialog(for acquirer: CooperativeSalerEntity) {
|
||||
viewModel.startEditCommissionRate(acquirer)
|
||||
let alert = UIAlertController(title: "修改分成比例", message: nil, preferredStyle: .alert)
|
||||
alert.addTextField { [weak self] field in
|
||||
field.placeholder = "分成比例 0-100"
|
||||
field.keyboardType = .numberPad
|
||||
field.text = self?.viewModel.commissionRateDraft
|
||||
}
|
||||
alert.addTextField { [weak self] field in
|
||||
field.placeholder = "验证码"
|
||||
field.keyboardType = .numberPad
|
||||
field.text = self?.viewModel.commissionSmsCodeDraft
|
||||
}
|
||||
let phone = acquirer.salerPhone.isEmpty ? acquirer.displayPhone : acquirer.salerPhone
|
||||
alert.message = "验证码将发送至 \(CooperationOrderPhoneMask.mask(phone))"
|
||||
commissionDialogView?.dismiss()
|
||||
|
||||
alert.addAction(UIAlertAction(title: "取消", style: .cancel) { [weak self] _ in
|
||||
self?.viewModel.dismissCommissionRateDialog()
|
||||
})
|
||||
alert.addAction(UIAlertAction(title: "获取验证码", style: .default) { [weak self] _ in
|
||||
let dialog = CooperationCommissionRateDialogView()
|
||||
dialog.onCommissionRateChange = { [weak self] text in
|
||||
self?.viewModel.updateCommissionRateDraft(text)
|
||||
}
|
||||
dialog.onSmsCodeChange = { [weak self] text in
|
||||
self?.viewModel.updateCommissionSmsCodeDraft(text)
|
||||
}
|
||||
dialog.onSendSmsCode = { [weak self, weak dialog] in
|
||||
guard let self else { return }
|
||||
if let rateText = alert.textFields?.first?.text {
|
||||
self.viewModel.updateCommissionRateDraft(rateText)
|
||||
}
|
||||
if let codeText = alert.textFields?.last?.text {
|
||||
self.viewModel.updateCommissionSmsCodeDraft(codeText)
|
||||
if let dialog {
|
||||
self.syncCommissionDialogDrafts(dialog)
|
||||
}
|
||||
Task { await self.viewModel.requestCommissionSmsCode(api: self.orderAPI) }
|
||||
})
|
||||
alert.addAction(UIAlertAction(title: "确认修改", style: .default) { [weak self] _ in
|
||||
}
|
||||
dialog.onCancel = { [weak self] in
|
||||
self?.viewModel.dismissCommissionRateDialog()
|
||||
}
|
||||
dialog.onConfirm = { [weak self, weak dialog] in
|
||||
guard let self else { return }
|
||||
if let rateText = alert.textFields?.first?.text {
|
||||
self.viewModel.updateCommissionRateDraft(rateText)
|
||||
}
|
||||
if let codeText = alert.textFields?.last?.text {
|
||||
self.viewModel.updateCommissionSmsCodeDraft(codeText)
|
||||
if let dialog {
|
||||
self.syncCommissionDialogDrafts(dialog)
|
||||
}
|
||||
Task { await self.viewModel.saveCommissionRate(api: self.orderAPI) }
|
||||
})
|
||||
present(alert, animated: true)
|
||||
}
|
||||
commissionDialogView = dialog
|
||||
applyCommissionDialogState()
|
||||
dialog.show(in: view)
|
||||
}
|
||||
|
||||
private func syncCommissionDialogDrafts(_ dialog: CooperationCommissionRateDialogView) {
|
||||
viewModel.updateCommissionRateDraft(dialog.currentCommissionRate)
|
||||
viewModel.updateCommissionSmsCodeDraft(dialog.currentSmsCode)
|
||||
}
|
||||
|
||||
private func applyCommissionDialogState() {
|
||||
guard let dialog = commissionDialogView else { return }
|
||||
guard let acquirer = viewModel.commissionEditingAcquirer else {
|
||||
dialog.dismiss()
|
||||
commissionDialogView = nil
|
||||
return
|
||||
}
|
||||
let phone = acquirer.salerPhone.isEmpty ? acquirer.displayPhone : acquirer.salerPhone
|
||||
dialog.apply(
|
||||
commissionRate: viewModel.commissionRateDraft,
|
||||
smsCode: viewModel.commissionSmsCodeDraft,
|
||||
phone: CooperationOrderPhoneMask.mask(phone),
|
||||
countdown: viewModel.commissionSmsCountdown
|
||||
)
|
||||
}
|
||||
|
||||
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
||||
|
||||
Reference in New Issue
Block a user