Commit 30124f2b authored by Steven杜宇's avatar Steven杜宇

// 我的证件

parent 03699a81
...@@ -229,14 +229,12 @@ extension YHCertificateListVC { ...@@ -229,14 +229,12 @@ extension YHCertificateListVC {
} }
} }
func uploadImage(_ img: UIImage, imageName:String, supplementInfo:YHSupplementInfo, successBlock:(()->())?) { func uploadImage(_ img: UIImage, imageName:String, supplementInfo:YHSupplementInfo, callBack:((Bool)->())?) {
// 先OSS上传得到URL // 先OSS上传得到URL
YHHUD.show(.progress(message: "上传中..."))
self.viewModel.uploadImage(img) { self.viewModel.uploadImage(img) {
[weak self] url, error in [weak self] url, error in
guard let self = self else { return } guard let self = self else { return }
YHHUD.hide()
if let url = url, !url.isEmpty { if let url = url, !url.isEmpty {
var suffix = "jpg" var suffix = "jpg"
let suffixName = url.pathExtension.lowercased() let suffixName = url.pathExtension.lowercased()
...@@ -249,21 +247,36 @@ extension YHCertificateListVC { ...@@ -249,21 +247,36 @@ extension YHCertificateListVC {
model.name = imageName model.name = imageName
model.url = url model.url = url
model.suffix = suffix model.suffix = suffix
self.viewModel.updateCertificateItem(supplementId:supplementInfo.id, urlModel:model, operation: "add", rename: "") {
success in self.viewModel.updateCertificateItem(supplementsId:supplementInfo.id, urlModel:model, operation: "add", rename: "") {
self.requestList(status: self.status) success, error in
if success {
successBlock?() DispatchQueue.main.async {
if success {
YHHUD.flash(message: "上传成功")
} else {
var msg = "上传失败"
if let errorMsg = error?.errorMsg, !errorMsg.isEmpty {
msg = errorMsg
}
YHHUD.flash(message:msg)
}
} }
self.requestList(status: self.status)
callBack?(success)
} }
return return
} }
// //
var msg = "上传图片失败" DispatchQueue.main.async {
if let errorMsg = error?.errorMsg, !errorMsg.isEmpty { var msg = "上传图片失败"
msg = errorMsg if let errorMsg = error?.errorMsg, !errorMsg.isEmpty {
msg = errorMsg
}
YHHUD.flash(message: msg)
} }
YHHUD.flash(message: msg) callBack?(false)
} }
} }
...@@ -288,9 +301,20 @@ extension YHCertificateListVC { ...@@ -288,9 +301,20 @@ extension YHCertificateListVC {
model.name = fileName model.name = fileName
model.url = successUrl model.url = successUrl
model.suffix = suffixName model.suffix = suffixName
self.viewModel.updateCertificateItem(supplementId:supplementInfo.id, urlModel:model, operation: "add", rename: "") { YHHUD.show(.progress(message: "上传中..."))
success in self.viewModel.updateCertificateItem(supplementsId:supplementInfo.id, urlModel:model, operation: "add", rename: "") {
success, error in
YHHUD.hide()
self.requestList(status:self.status) self.requestList(status:self.status)
if success {
YHHUD.flash(message: "上传成功")
} else {
var msg = "上传失败"
if let errorMsg = error?.errorMsg, !errorMsg.isEmpty {
msg = errorMsg
}
YHHUD.flash(message:msg)
}
if success { if success {
successBlock?() successBlock?()
} }
...@@ -337,11 +361,31 @@ extension YHCertificateListVC { ...@@ -337,11 +361,31 @@ extension YHCertificateListVC {
} }
} }
sheetView.uploadImageBlock = { sheetView.uploadImageBlock = {
[weak self] image, imageName in [weak self] imgArr in
guard let self = self else { return } guard let self = self else { return }
uploadImage(image, imageName: imageName, supplementInfo: supplementInfo) { let group = DispatchGroup()
// 待上传的进入详情 var result = false
DispatchQueue.main.async {
YHHUD.show(.progress(message: "上传中..."))
for item in imgArr {
if let image = item.data {
group.enter()
uploadImage(image, imageName:item.name, supplementInfo: supplementInfo) {
success in
if success {
result = success
}
group.leave()
}
}
}
// 等待所有任务完成
group.notify(queue: .main) {
// 所有任务完成,回到主线程继续执行
print("所有任务完成")
YHHUD.hide()
if result { // 只要有一张照片上传成功即可进入详情
let vc = YHCertificateUploadContentListVC() let vc = YHCertificateUploadContentListVC()
vc.orderId = self.orderId vc.orderId = self.orderId
vc.categoryInfo = self.categoryInfo vc.categoryInfo = self.categoryInfo
......
...@@ -245,14 +245,12 @@ extension YHCertificateSearchViewController { ...@@ -245,14 +245,12 @@ extension YHCertificateSearchViewController {
} }
} }
func uploadImage(_ img: UIImage, imageName:String, supplementInfo:YHSupplementInfo, successBlock:(()->())?) { func uploadImage(_ img: UIImage, imageName:String, supplementInfo:YHSupplementInfo, callBack:((Bool)->())?) {
// 先OSS上传得到URL // 先OSS上传得到URL
YHHUD.show(.progress(message: "上传中..."))
self.viewModel.uploadImage(img) { self.viewModel.uploadImage(img) {
[weak self] url, error in [weak self] url, error in
guard let self = self else { return } guard let self = self else { return }
YHHUD.hide()
if let url = url, !url.isEmpty { if let url = url, !url.isEmpty {
var suffix = "jpg" var suffix = "jpg"
let suffixName = url.pathExtension.lowercased() let suffixName = url.pathExtension.lowercased()
...@@ -265,21 +263,35 @@ extension YHCertificateSearchViewController { ...@@ -265,21 +263,35 @@ extension YHCertificateSearchViewController {
model.name = imageName model.name = imageName
model.url = url model.url = url
model.suffix = suffix model.suffix = suffix
self.viewModel.updateCertificateItem(supplementId:supplementInfo.id, urlModel:model, operation: "add", rename: "") { self.viewModel.updateCertificateItem(supplementsId:supplementInfo.id, urlModel:model, operation: "add", rename: "") {
success in success, error in
self.requestList(keyWord: self.searchBar.textField.text)
if success { DispatchQueue.main.async {
successBlock?() if success {
YHHUD.flash(message: "上传成功")
} else {
var msg = "上传失败"
if let errorMsg = error?.errorMsg, !errorMsg.isEmpty {
msg = errorMsg
}
YHHUD.flash(message:msg)
}
} }
self.requestList(keyWord: self.searchBar.textField.text)
callBack?(success)
} }
return return
} }
// //
var msg = "上传图片失败" DispatchQueue.main.async {
if let errorMsg = error?.errorMsg, !errorMsg.isEmpty { var msg = "上传图片失败"
msg = errorMsg if let errorMsg = error?.errorMsg, !errorMsg.isEmpty {
msg = errorMsg
}
YHHUD.flash(message: msg)
} }
YHHUD.flash(message: msg) callBack?(false)
} }
} }
...@@ -302,8 +314,19 @@ extension YHCertificateSearchViewController { ...@@ -302,8 +314,19 @@ extension YHCertificateSearchViewController {
model.name = fileName model.name = fileName
model.url = successUrl model.url = successUrl
model.suffix = suffixName model.suffix = suffixName
self.viewModel.updateCertificateItem(supplementId:supplementInfo.id, urlModel:model, operation: "add", rename: "") { YHHUD.show(.progress(message: "上传中..."))
success in self.viewModel.updateCertificateItem(supplementsId:supplementInfo.id, urlModel:model, operation: "add", rename: "") {
success, error in
YHHUD.hide()
if success {
YHHUD.flash(message: "上传成功")
} else {
var msg = "上传失败"
if let errorMsg = error?.errorMsg, !errorMsg.isEmpty {
msg = errorMsg
}
YHHUD.flash(message:msg)
}
self.requestList(keyWord: self.searchBar.textField.text) self.requestList(keyWord: self.searchBar.textField.text)
if success { if success {
successBlock?() successBlock?()
...@@ -350,12 +373,34 @@ extension YHCertificateSearchViewController { ...@@ -350,12 +373,34 @@ extension YHCertificateSearchViewController {
} }
} }
} }
sheetView.uploadImageBlock = { sheetView.uploadImageBlock = {
[weak self] image, imageName in [weak self] imgArr in
guard let self = self else { return } guard let self = self else { return }
uploadImage(image, imageName: imageName, supplementInfo: supplementInfo) { let group = DispatchGroup()
// 待上传的进入详情 var result = false
DispatchQueue.main.async {
YHHUD.show(.progress(message: "上传中..."))
for item in imgArr {
if let image = item.data {
group.enter()
uploadImage(image, imageName:item.name, supplementInfo: supplementInfo) {
success in
if success {
result = success
}
group.leave()
}
}
}
// 等待所有任务完成
group.notify(queue: .main) {
// 所有任务完成,回到主线程继续执行
print("所有任务完成")
YHHUD.hide()
if result { // 只要有一张照片上传成功即可进入详情
let vc = YHCertificateUploadContentListVC() let vc = YHCertificateUploadContentListVC()
vc.orderId = self.orderId vc.orderId = self.orderId
vc.categoryInfo = self.categoryInfo vc.categoryInfo = self.categoryInfo
...@@ -363,6 +408,7 @@ extension YHCertificateSearchViewController { ...@@ -363,6 +408,7 @@ extension YHCertificateSearchViewController {
self.navigationController?.pushViewController(vc) self.navigationController?.pushViewController(vc)
} }
} }
} }
sheetView.show() sheetView.show()
} }
......
...@@ -105,9 +105,21 @@ class YHCertificateUploadContentListVC: YHBaseViewController { ...@@ -105,9 +105,21 @@ class YHCertificateUploadContentListVC: YHBaseViewController {
[weak self] text in [weak self] text in
guard let self = self else { return } guard let self = self else { return }
if let selectEditItem = selectEditItem, var text = text { if let selectEditItem = selectEditItem, var text = text {
// 重命名
text = text + "." + selectEditItem.getFileSuffixName() text = text + "." + selectEditItem.getFileSuffixName()
self.viewModel.updateCertificateItem(supplementId:supplementInfo.id, urlModel:selectEditItem, operation: "rename", rename: text) { YHHUD.show(.progress(message: "重命名中..."))
success in self.viewModel.updateCertificateItem(supplementsId:supplementInfo.id, urlModel:selectEditItem, operation: "rename", rename: text) {
success, error in
YHHUD.hide()
if success {
YHHUD.flash(message: "重命名成功")
} else {
var msg = "重命名失败"
if let errorMsg = error?.errorMsg, !errorMsg.isEmpty {
msg = errorMsg
}
YHHUD.flash(message:msg)
}
self.requestList() self.requestList()
} }
} }
...@@ -133,10 +145,30 @@ class YHCertificateUploadContentListVC: YHBaseViewController { ...@@ -133,10 +145,30 @@ class YHCertificateUploadContentListVC: YHBaseViewController {
print(fileUrl) print(fileUrl)
uploadFile(fileUrl) uploadFile(fileUrl)
} }
sheetView.uploadImageBlock = { sheetView.uploadImageBlock = {
[weak self] image, imageName in [weak self] imgArr in
guard let self = self else { return } guard let self = self else { return }
uploadImage(image, imageName: imageName) let group = DispatchGroup()
var result = false
YHHUD.show(.progress(message: "上传中..."))
for item in imgArr {
if let image = item.data {
group.enter()
uploadImage(image, imageName:item.name) {
success in
group.leave()
}
}
}
// 等待所有任务完成
group.notify(queue: .main) {
// 所有任务完成,回到主线程继续执行
print("所有任务完成")
YHHUD.hide()
}
} }
sheetView.show() sheetView.show()
} }
...@@ -235,8 +267,20 @@ extension YHCertificateUploadContentListVC: UITableViewDelegate, UITableViewData ...@@ -235,8 +267,20 @@ extension YHCertificateUploadContentListVC: UITableViewDelegate, UITableViewData
let msg = "您确定要删除文档\(contentItem.name)吗" let msg = "您确定要删除文档\(contentItem.name)吗"
YHTwoOptionAlertView.showAlertView(message:msg) { sure in YHTwoOptionAlertView.showAlertView(message:msg) { sure in
if !sure { return } if !sure { return }
self.viewModel.updateCertificateItem(supplementId:self.supplementInfo.id, urlModel:contentItem, operation: "del", rename:"") { // 删除
success in YHHUD.show(.progress(message: "删除中..."))
self.viewModel.updateCertificateItem(supplementsId:self.supplementInfo.id, urlModel:contentItem, operation: "del", rename:"") {
success, error in
YHHUD.hide()
if success {
YHHUD.flash(message: "删除成功")
} else {
var msg = "删除失败"
if let errorMsg = error?.errorMsg, !errorMsg.isEmpty {
msg = errorMsg
}
YHHUD.flash(message:msg)
}
self.requestList() self.requestList()
} }
} }
...@@ -522,14 +566,12 @@ extension YHCertificateUploadContentListVC { ...@@ -522,14 +566,12 @@ extension YHCertificateUploadContentListVC {
func uploadImage(_ img: UIImage, imageName:String) { func uploadImage(_ img: UIImage, imageName:String, callBack:((Bool)->())?) {
// 先OSS上传得到URL // 先OSS上传得到URL
YHHUD.show(.progress(message: "上传中..."))
self.viewModel.uploadImage(img) { self.viewModel.uploadImage(img) {
[weak self] url, error in [weak self] url, error in
guard let self = self else { return } guard let self = self else { return }
YHHUD.hide()
if let url = url, !url.isEmpty { if let url = url, !url.isEmpty {
var suffix = "jpg" var suffix = "jpg"
let suffixName = url.pathExtension.lowercased() let suffixName = url.pathExtension.lowercased()
...@@ -542,18 +584,34 @@ extension YHCertificateUploadContentListVC { ...@@ -542,18 +584,34 @@ extension YHCertificateUploadContentListVC {
model.name = imageName model.name = imageName
model.url = url model.url = url
model.suffix = suffix model.suffix = suffix
self.viewModel.updateCertificateItem(supplementId:supplementInfo.id, urlModel:model, operation: "add", rename: "") { self.viewModel.updateCertificateItem(supplementsId:supplementInfo.id, urlModel:model, operation: "add", rename: "") {
success in success, error in
DispatchQueue.main.async {
if success {
YHHUD.flash(message: "上传成功")
} else {
var msg = "上传失败"
if let errorMsg = error?.errorMsg, !errorMsg.isEmpty {
msg = errorMsg
}
YHHUD.flash(message:msg)
}
}
callBack?(success)
self.requestList() self.requestList()
} }
return return
} }
// //
var msg = "上传图片失败" DispatchQueue.main.async {
if let errorMsg = error?.errorMsg, !errorMsg.isEmpty { var msg = "上传图片失败"
msg = errorMsg if let errorMsg = error?.errorMsg, !errorMsg.isEmpty {
msg = errorMsg
}
YHHUD.flash(message: msg)
} }
YHHUD.flash(message: msg) callBack?(false)
} }
} }
...@@ -576,8 +634,19 @@ extension YHCertificateUploadContentListVC { ...@@ -576,8 +634,19 @@ extension YHCertificateUploadContentListVC {
model.name = fileName model.name = fileName
model.url = successUrl model.url = successUrl
model.suffix = suffixName model.suffix = suffixName
self.viewModel.updateCertificateItem(supplementId:supplementInfo.id, urlModel:model, operation: "add", rename: "") { YHHUD.show(.progress(message: "上传中..."))
success in self.viewModel.updateCertificateItem(supplementsId:supplementInfo.id, urlModel:model, operation: "add", rename: "") {
success, error in
YHHUD.hide()
if success {
YHHUD.flash(message: "上传成功")
} else {
var msg = "上传失败"
if let errorMsg = error?.errorMsg, !errorMsg.isEmpty {
msg = errorMsg
}
YHHUD.flash(message:msg)
}
self.requestList() self.requestList()
} }
return return
...@@ -587,7 +656,6 @@ extension YHCertificateUploadContentListVC { ...@@ -587,7 +656,6 @@ extension YHCertificateUploadContentListVC {
msg = errorMsg msg = errorMsg
} }
YHHUD.flash(message: msg) YHHUD.flash(message: msg)
YHCertificateUploadFailTipsView.tipsView().show()
} }
} else { } else {
......
...@@ -18,6 +18,17 @@ ...@@ -18,6 +18,17 @@
import UIKit import UIKit
import Photos import Photos
import PhotosUI
class YHSelectImageItem {
var name: String
var data: UIImage?
init(name: String = "", data: UIImage? = nil) {
self.name = name
self.data = data
}
}
enum YHCertificateUploadType: Int { enum YHCertificateUploadType: Int {
...@@ -93,7 +104,7 @@ class YHCertificateUploadSheetView: UIView { ...@@ -93,7 +104,7 @@ class YHCertificateUploadSheetView: UIView {
// 上传文件 // 上传文件
var uploadFilesBlock:((URL)->())? var uploadFilesBlock:((URL)->())?
// 上传图片 // 上传图片
var uploadImageBlock:((UIImage, String)->())? var uploadImageBlock:(([YHSelectImageItem])->())?
// 点击模版 // 点击模版
var clickTemplateBlock:((YHMaterialPath?)->())? var clickTemplateBlock:((YHMaterialPath?)->())?
...@@ -439,39 +450,47 @@ extension YHCertificateUploadSheetView: (UIImagePickerControllerDelegate & UINav ...@@ -439,39 +450,47 @@ extension YHCertificateUploadSheetView: (UIImagePickerControllerDelegate & UINav
return return
} }
let isMultiSelect = false if #available(iOS 14.0, *) { // iOS14以上可多选
if !isMultiSelect {
if UIImagePickerController.isSourceTypeAvailable(.photoLibrary){ var configuration = PHPickerConfiguration()
let imagePicker = UIImagePickerController() // 设置最大选择数量
imagePicker.delegate = self configuration.selectionLimit = 9
imagePicker.sourceType = .photoLibrary // 设置选择器的过滤条件 只显示图片
// 这一句,开始调用图库 configuration.filter = .images
UIViewController.current?.present(imagePicker,animated: true) let picker = PHPickerViewController(configuration: configuration)
} picker.delegate = self
UIViewController.current?.present(picker, animated: true, completion: nil)
} else {
} else { // iOS14以下只能单选
}
if UIImagePickerController.isSourceTypeAvailable(.photoLibrary){
let imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = .photoLibrary
// 这一句,开始调用图库
UIViewController.current?.present(imagePicker,animated: true)
}
}
} }
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage { if let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
// 若无照片名称使用时间字符串 var imageName = ""
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let dateString = dateFormatter.string(from: Date())
var imageName = dateString
// 获取照片的名称 // 获取照片的名称
if let imageUrl = info[.imageURL] as? URL { if let imageUrl = info[.imageURL] as? URL {
let lastComponent = imageUrl.lastPathComponent let lastComponent = imageUrl.lastPathComponent
if !imageName.isEmpty { imageName = lastComponent
imageName = lastComponent }
}
if imageName.isEmpty {
let timestamp = Date().timeIntervalSince1970
imageName = "\(timestamp).jpg"
} }
uploadImageBlock?(image, imageName)
let item = YHSelectImageItem(name: imageName, data: image)
uploadImageBlock?([item])
self.dismiss() self.dismiss()
} else { } else {
...@@ -487,6 +506,58 @@ extension YHCertificateUploadSheetView: (UIImagePickerControllerDelegate & UINav ...@@ -487,6 +506,58 @@ extension YHCertificateUploadSheetView: (UIImagePickerControllerDelegate & UINav
} }
} }
extension YHCertificateUploadSheetView: PHPickerViewControllerDelegate {
func getImageFromURL(url: URL) -> UIImage? {
if let imageData = try? Data(contentsOf: url) {
return UIImage(data: imageData)
}
return nil
}
@available(iOS 14.0, *)
func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) {
picker.dismiss(animated: true, completion: nil)
self.dismiss()
let group = DispatchGroup()
let queue = DispatchQueue.global()
var imageArr:[YHSelectImageItem] = []
for result in results {
group.enter()
// 此方法是异步操作
result.itemProvider.loadFileRepresentation(forTypeIdentifier: UTType.image.identifier) { url, error in
if let error = error {
print("Error loading image: \(error.localizedDescription)")
} else if let url = url {
print(url)
if let image = self.getImageFromURL(url: url) {
var imgName = url.lastPathComponent
if imgName.isEmpty {
let timestamp = Date().timeIntervalSince1970
imgName = "\(timestamp).jpg"
}
let item = YHSelectImageItem(name: imgName, data: image)
imageArr.append(item)
}
}
group.leave()
}
}
// 等待所有任务完成
group.notify(queue: .main) {
// 所有任务完成,回到主线程继续执行
print("所有任务完成")
self.uploadImageBlock?(imageArr)
}
}
}
extension YHCertificateUploadSheetView: UIDocumentPickerDelegate { extension YHCertificateUploadSheetView: UIDocumentPickerDelegate {
......
...@@ -210,14 +210,14 @@ class YHCertificateViewModel: YHBaseViewModel { ...@@ -210,14 +210,14 @@ class YHCertificateViewModel: YHBaseViewModel {
// 更改证件 // 更改证件
// operation参数必填,必须是:add(上传)、del(删除)、rename(重命名) // operation参数必填,必须是:add(上传)、del(删除)、rename(重命名)
func updateCertificateItem(supplementId:Int, urlModel: YHContentUrl, operation:String, rename:String, callBack:((Bool)->())?) { func updateCertificateItem(supplementsId:Int, urlModel: YHContentUrl, operation:String, rename:String, callBack:((Bool, YHErrorModel?)->())?) {
var name = urlModel.name var name = urlModel.name
if operation == "rename" { if operation == "rename" {
name = rename name = rename
} }
let dic:[String : Any] = [ let dic:[String : Any] = [
"id" : supplementId, "id" : supplementsId,
"content_url": [ "content_url": [
"name": name, "name": name,
"url": urlModel.url, "url": urlModel.url,
...@@ -227,65 +227,13 @@ class YHCertificateViewModel: YHBaseViewModel { ...@@ -227,65 +227,13 @@ class YHCertificateViewModel: YHBaseViewModel {
"operation" : operation, "operation" : operation,
] ]
var msg = ""
if operation == "add" {
msg = "上传中"
} else if operation == "del" {
msg = "删除中"
} else if operation == "rename" {
msg = "重命名中"
}
YHHUD.show(.progress(message: msg))
self.updateCertificates(params: params) { self.updateCertificates(params: params) {
[weak self] success, error in [weak self] success, error in
YHHUD.hide() YHHUD.hide()
guard let self = self else { return } guard let self = self else { return }
callBack?(success, error)
if operation == "del" {
if success {
YHHUD.flash(message: "删除成功")
} else {
var msg = "删除失败"
if let errorMsg = error?.errorMsg, !errorMsg.isEmpty {
msg = errorMsg
}
YHHUD.flash(message:msg)
}
callBack?(success)
return
}
if operation == "rename" {
if success {
YHHUD.flash(message: "重命名成功")
} else {
var msg = "重命名失败"
if let errorMsg = error?.errorMsg, !errorMsg.isEmpty {
msg = errorMsg
}
YHHUD.flash(message:msg)
}
callBack?(success)
return
}
if operation == "add" {
if success {
YHHUD.flash(message: "上传成功")
} else {
var msg = "上传失败"
if let errorMsg = error?.errorMsg, !errorMsg.isEmpty {
msg = errorMsg
}
YHHUD.flash(message:msg)
YHCertificateUploadFailTipsView.tipsView().show()
}
callBack?(success)
return
}
} }
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment