修复任务提交与弹窗交互问题

This commit is contained in:
2026-07-10 14:51:34 +08:00
parent df547a16dc
commit f88a85a807
48 changed files with 1065 additions and 254 deletions
-14
View File
@@ -61,20 +61,6 @@ final class TaskAPI {
)
}
/// 登记 OSS 上传后的文件 URL。
func registerUploadedFileURL(scenicId: Int, fileURL: String, folderId: Int = 0) async throws {
let _: EmptyResponse = try await client.send(
APIRequest(
method: .post,
path: "/api/yf-handset-app/photog/album/file-upload-url",
queryItems: [
URLQueryItem(name: "scenic_id", value: String(scenicId)),
URLQueryItem(name: "file_url", value: fileURL),
URLQueryItem(name: "folder_id", value: String(folderId)),
]
)
)
}
}
/// 空响应占位,用于无 data 字段的成功接口。
@@ -177,4 +177,14 @@ struct TaskFileItem: Sendable, Equatable, Hashable, Identifiable {
return uploadFileName ?? ""
}
}
/// 素材来源角标文案。
var sourceBadgeText: String {
switch source {
case .cloud:
return "云盘"
case .upload:
return "本地"
}
}
}
@@ -25,9 +25,13 @@ final class CloudStoragePickForTaskViewModel {
private var totalCount = 0
private let pageSize = 20
private let importedFileIDs: Set<Int>
private let allowedFileType: Int?
init(importedFileIDs: Set<Int> = []) {
/// 初始化云盘多选 ViewModel,可按云盘文件类型限制选择范围。
init(importedFileIDs: Set<Int> = [], allowedFileType: Int? = nil) {
self.importedFileIDs = importedFileIDs
self.allowedFileType = allowedFileType
self.filterType = allowedFileType ?? 0
}
/// 当前文件夹 ID。
@@ -94,6 +98,10 @@ final class CloudStoragePickForTaskViewModel {
return
}
guard file.isSelectableMedia else { return }
if let allowedFileType, file.type != allowedFileType {
onShowMessage?(allowedFileType == 1 ? "请选择视频素材" : "请选择图片素材")
return
}
if isImported(file.id) {
onShowMessage?("已选择")
return