Commit 611667f3 authored by David黄金龙's avatar David黄金龙

Merge commit '2bfd6f29' into davidhuang

* commit '2bfd6f29':
  我的签字 我的文书详情页逻辑

# Conflicts:
#	galaxy/galaxy.xcodeproj/project.pbxproj
#	galaxy/galaxy/Classes/Modules/IntelligentService(服务中心)/MyDocuments(我的文书)/V/YHDocumentUploadView.swift
#	galaxy/galaxy/Classes/Modules/IntelligentService(服务中心)/MyDocuments(我的文书)/V/YHFileItemView.swift
parents f6a8337c 2bfd6f29
......@@ -20,6 +20,7 @@
044867B42BA1953B00DFAD4A /* YHCertificateFilterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 044867B32BA1953B00DFAD4A /* YHCertificateFilterView.swift */; };
044867B62BA1A03800DFAD4A /* YHCertificateFilterItemCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 044867B52BA1A03800DFAD4A /* YHCertificateFilterItemCell.swift */; };
044867B82BA1C75700DFAD4A /* YHCertificateUploadFailTipsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 044867B72BA1C75700DFAD4A /* YHCertificateUploadFailTipsView.swift */; };
044CF8D42BB6BCF700008CE8 /* YHSignatureUploadTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 044CF8D32BB6BCF700008CE8 /* YHSignatureUploadTableViewCell.swift */; };
045EEE792B9F171A0022A143 /* YHPreviewViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 045EED9A2B9F171A0022A143 /* YHPreviewViewModel.swift */; };
045EEE7A2B9F171A0022A143 /* YHPreviewForOtherInfoModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 045EED9C2B9F171A0022A143 /* YHPreviewForOtherInfoModel.swift */; };
045EEE7B2B9F171A0022A143 /* YHPersonInfoCellModel2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 045EED9D2B9F171A0022A143 /* YHPersonInfoCellModel2.swift */; };
......@@ -254,6 +255,8 @@
A514E5DC2B60A2B700C93951 /* YHServiceCenterSecondViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A514E5DB2B60A2B700C93951 /* YHServiceCenterSecondViewController.swift */; };
A517A4DF2BB53BE8000DEECD /* YHDocListBottomView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A517A4DE2BB53BE8000DEECD /* YHDocListBottomView.swift */; };
A517A4E12BB573EB000DEECD /* YHDocListCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A517A4E02BB573EB000DEECD /* YHDocListCell.swift */; };
A517A4E42BB6C4BB000DEECD /* YHDocumentUploadView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A517A4E22BB6C4BB000DEECD /* YHDocumentUploadView.swift */; };
A517A4E52BB6C4BB000DEECD /* YHFileItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A517A4E32BB6C4BB000DEECD /* YHFileItemView.swift */; };
A520124F2BABCE05008655EA /* YHFileListContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A520124E2BABCE05008655EA /* YHFileListContentView.swift */; };
A53026902B4E6F2700F35102 /* YHHomeCustomCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A530268F2B4E6F2700F35102 /* YHHomeCustomCell.swift */; };
A53B61122BB128AF0010B573 /* YHFileListItemsView2.swift in Sources */ = {isa = PBXBuildFile; fileRef = A53B61112BB128AF0010B573 /* YHFileListItemsView2.swift */; };
......@@ -415,6 +418,7 @@
044867B32BA1953B00DFAD4A /* YHCertificateFilterView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHCertificateFilterView.swift; sourceTree = "<group>"; };
044867B52BA1A03800DFAD4A /* YHCertificateFilterItemCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHCertificateFilterItemCell.swift; sourceTree = "<group>"; };
044867B72BA1C75700DFAD4A /* YHCertificateUploadFailTipsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHCertificateUploadFailTipsView.swift; sourceTree = "<group>"; };
044CF8D32BB6BCF700008CE8 /* YHSignatureUploadTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHSignatureUploadTableViewCell.swift; sourceTree = "<group>"; };
045EED9A2B9F171A0022A143 /* YHPreviewViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YHPreviewViewModel.swift; sourceTree = "<group>"; };
045EED9C2B9F171A0022A143 /* YHPreviewForOtherInfoModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YHPreviewForOtherInfoModel.swift; sourceTree = "<group>"; };
045EED9D2B9F171A0022A143 /* YHPersonInfoCellModel2.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YHPersonInfoCellModel2.swift; sourceTree = "<group>"; };
......@@ -652,6 +656,8 @@
A514E5DB2B60A2B700C93951 /* YHServiceCenterSecondViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHServiceCenterSecondViewController.swift; sourceTree = "<group>"; };
A517A4DE2BB53BE8000DEECD /* YHDocListBottomView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHDocListBottomView.swift; sourceTree = "<group>"; };
A517A4E02BB573EB000DEECD /* YHDocListCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHDocListCell.swift; sourceTree = "<group>"; };
A517A4E22BB6C4BB000DEECD /* YHDocumentUploadView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YHDocumentUploadView.swift; sourceTree = "<group>"; };
A517A4E32BB6C4BB000DEECD /* YHFileItemView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YHFileItemView.swift; sourceTree = "<group>"; };
A520124E2BABCE05008655EA /* YHFileListContentView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YHFileListContentView.swift; sourceTree = "<group>"; };
A530268F2B4E6F2700F35102 /* YHHomeCustomCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHomeCustomCell.swift; sourceTree = "<group>"; };
A53B61112BB128AF0010B573 /* YHFileListItemsView2.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHFileListItemsView2.swift; sourceTree = "<group>"; };
......@@ -1192,6 +1198,7 @@
children = (
045EEE262B9F171A0022A143 /* YHMySignatureListTableViewCell.swift */,
0435FA802BA186D600024EAE /* YHMyFileMethodTableViewCell.swift */,
044CF8D32BB6BCF700008CE8 /* YHSignatureUploadTableViewCell.swift */,
0435FA7E2BA178C100024EAE /* YHCommonAlertView.swift */,
);
path = V;
......@@ -1628,6 +1635,8 @@
A53B61172BB3C9410010B573 /* V */ = {
isa = PBXGroup;
children = (
A517A4E22BB6C4BB000DEECD /* YHDocumentUploadView.swift */,
A517A4E32BB6C4BB000DEECD /* YHFileItemView.swift */,
04EA23072BB50753009DA928 /* YHDocumentMessageTableViewCell.swift */,
04EA23092BB5172F009DA928 /* YHDocumentPromptTableViewCell.swift */,
04EA230B2BB5199D009DA928 /* YHDocumentToActionTableViewCell.swift */,
......@@ -2334,6 +2343,7 @@
045EEEBF2B9F171A0022A143 /* YHWorkFileItemView.swift in Sources */,
04AF58C42B4FC51C0066011A /* YHLocalizable.swift in Sources */,
A520124F2BABCE05008655EA /* YHFileListContentView.swift in Sources */,
A517A4E42BB6C4BB000DEECD /* YHDocumentUploadView.swift in Sources */,
045EEF042B9F171A0022A143 /* YHIdentityCardCell.swift in Sources */,
045EEEB42B9F171A0022A143 /* YHWorkExampleMessageTableViewCell.swift in Sources */,
045EEF132B9F171A0022A143 /* YHCountryMessage.swift in Sources */,
......@@ -2475,6 +2485,7 @@
045EEF1D2B9F171A0022A143 /* YHAddressPickView.swift in Sources */,
A58AC0A12BAC0B2900A30FA9 /* YHFileListItemView.swift in Sources */,
045EEED12B9F171A0022A143 /* YHScorePersonInfoCell.swift in Sources */,
044CF8D42BB6BCF700008CE8 /* YHSignatureUploadTableViewCell.swift in Sources */,
045EEF0D2B9F171A0022A143 /* YHBasicInfoFillCell.swift in Sources */,
045EEEEC2B9F171A0022A143 /* YHBrotherInfoVC.swift in Sources */,
0477E17A2BA41C7E00436346 /* YHCertificateModel.swift in Sources */,
......@@ -2533,6 +2544,7 @@
04EA230C2BB5199D009DA928 /* YHDocumentToActionTableViewCell.swift in Sources */,
A5C5B2EA2B4ECA4D00A7C5D1 /* YHDavidModel0.swift in Sources */,
A5ACE9572B4564F7002C94D2 /* YHBasicContentView.swift in Sources */,
A517A4E52BB6C4BB000DEECD /* YHFileItemView.swift in Sources */,
045EEEFE2B9F171A0022A143 /* YHFormItemInputTextCell.swift in Sources */,
045EEEDD2B9F171A0022A143 /* YHCollegeNameCell.swift in Sources */,
045EEF162B9F171A0022A143 /* YHMainApplicantInformationViewController.swift in Sources */,
......
......@@ -26,6 +26,7 @@ enum YHCertificateEditType:Int {
case preview = 2
case delete = 3
case cancel = 4
case reUpload = 5
}
class YHCertificateEditItem {
......
......@@ -18,6 +18,12 @@ class YHMyDocumentsDetailViewController: YHBaseViewController {
var dataSource: [YHWorkItemListModel]?
var viewModel: YHMyDocumentsDetailViewModel!
var id: Int = 0
var oldUrl: String?
lazy var previewFileTool:YHFilePreviewTool = {
let tool = YHFilePreviewTool(targetVC: self)
return tool
}()
override func viewDidLoad() {
super.viewDidLoad()
......@@ -50,6 +56,15 @@ class YHMyDocumentsDetailViewController: YHBaseViewController {
self.stepView.currentIndex = 0
self.bottomView.isHidden = true
} else {
let state = self.viewModel.mainModel?.writing_document.doc_sign.status
// 0-待上传,1-未发送, 2-发送中,3-已发送,4-已签收,5-审核通过,6-驳回
if state == 0 || state == 1 || state == 2 {
} else if state == 3 || state == 4 || state == 5 {
} else {
}
self.stepView.currentIndex = 1
}
self.tableView.reloadData()
......@@ -133,11 +148,16 @@ class YHMyDocumentsDetailViewController: YHBaseViewController {
}
@objc func submit() {
let url = URL(string: "https://baidu.com/")!
let safariViewController = SFSafariViewController(url: url)
safariViewController.dismissButtonStyle = .close
safariViewController.delegate = self
self.navigationController?.pushViewController(safariViewController)
viewModel.requestSignConfirm("\(self.viewModel.mainModel?.writing_document.doc_sign.id ?? 0)") {[weak self] success, error in
guard let self = self else { return }
if success {
self.getData()
} else {
if let errorMsg = error?.errorMsg, !errorMsg.isEmpty {
YHHUD.flash(message: errorMsg)
}
}
}
}
func showSureAlert() {
......@@ -151,6 +171,91 @@ class YHMyDocumentsDetailViewController: YHBaseViewController {
}
}
}
func uploadFile(_ fileUrl:URL) {
if let fileData = try? Data(contentsOf: fileUrl) {
// 将文件数据上传到服务器
let size = String(format: "%.2fM", Double(fileData.count)/(1024.0 * 1024.0))
print("\(size)")
// 先OSS上传得到URL
YHHUD.show(.progress(message: "上传中..."))
self.viewModel.uploadFile(fileUrl.absoluteString) {
[weak self] successUrl, error in
guard let self = self else { return }
YHHUD.hide()
// 再调用业务接口
if let successUrl = successUrl, !successUrl.isEmpty {
var fileName = fileUrl.lastPathComponent
if fileName.isEmpty {
fileName = successUrl.lastPathComponent
}
let suffixName = successUrl.pathExtension.lowercased()
let model = YHContentUrl()
model.name = fileName
model.url = successUrl
model.suffix = suffixName
// YHHUD.show(.progress(message: "上传中..."))
var action = 1
if self.oldUrl?.count != 0 {
action = 2
}
self.viewModel.requestFileAction("\(self.viewModel.mainModel?.writing_document.doc_sign.id ?? 0)", action, [successUrl], self.oldUrl ?? "") {[weak self] success, error in
guard let self = self else { return }
// YHHUD.hide()
if success {
YHHUD.flash(message: "上传成功")
} else {
var msg = "上传失败"
if let errorMsg = error?.errorMsg, !errorMsg.isEmpty {
msg = errorMsg
}
YHHUD.flash(message:msg)
}
self.getData()
}
return
}
var msg = "上传图片失败"
if let errorMsg = error?.errorMsg, !errorMsg.isEmpty {
msg = errorMsg
}
YHHUD.flash(message: msg)
}
} else {
YHHUD.flash(message: "识别文件失败")
}
}
func uploadImage(_ img: UIImage, imageName:String, callBack:((Bool)->())?) {
// 先OSS上传得到URL
self.viewModel.uploadImage(img) {
[weak self] url, error in
guard let self = self else { return }
if let url = url, !url.isEmpty {
var suffix = "jpg"
let suffixName = url.pathExtension.lowercased()
if !suffixName.isEmpty {
suffix = suffixName
}
// 再调用业务接口
let model = YHContentUrl()
model.name = imageName
model.url = url
model.suffix = suffix
var action = 1
if self.oldUrl?.count != 0 {
action = 2
}
self.viewModel.requestFileAction("\(self.viewModel.mainModel?.writing_document.doc_sign.id ?? 0)", action, [url], self.oldUrl ?? "") {[weak self] success, error in
guard let self = self else { return }
self.getData()
}
return
}
callBack?(false)
}
}
}
extension YHMyDocumentsDetailViewController: UITableViewDelegate, UITableViewDataSource {
......@@ -217,13 +322,13 @@ extension YHMyDocumentsDetailViewController: UITableViewDelegate, UITableViewDat
return cell
} else if indexPath.row == 1 {
let cell = tableView.dequeueReusableCell(withClass: YHDocumentToActionTableViewCell.self)
cell.dataSource = self.viewModel.mainModel?.writing_document.doc_sign
cell.dataSource = self.viewModel.mainModel
cell.backgroundColor = .clear
cell.contentView.backgroundColor = .clear
cell.block = { [weak self] type in
guard let self = self else { return }
if type == .sign {
self.viewModel.requestSignaturePageURL("\(id)", callBackBlock: {[weak self] success, error in
self.viewModel.requestSignaturePageURL("\(self.viewModel.mainModel?.writing_document.doc_sign.id ?? 0)", callBackBlock: {[weak self] success, error in
guard let self = self else { return }
if error?.errorCode == 1008611 {
YHCommonAlertView.show("实名认证", "为保证签署有效,请先实名认证", "取消", "去认证") {
......@@ -251,7 +356,7 @@ extension YHMyDocumentsDetailViewController: UITableViewDelegate, UITableViewDat
}
if type == .look {
self.viewModel.requestSignatureLook("\(id)") {[weak self] success, error in
self.viewModel.requestSignatureLook("\(self.viewModel.mainModel?.writing_document.doc_sign.id ?? 0)") {[weak self] success, error in
guard let self = self else { return }
if success {
let url = URL(string: self.viewModel.pageUrl)!
......@@ -266,7 +371,7 @@ extension YHMyDocumentsDetailViewController: UITableViewDelegate, UITableViewDat
}
if type == .downLoad {
self.viewModel.requestSignatureDownload("\(id)") { [weak self] success, error in
self.viewModel.requestSignatureDownload("\(self.viewModel.mainModel?.writing_document.doc_sign.id ?? 0)") { [weak self] success, error in
guard let self = self else { return }
//获取到下载链接发送到邮箱
}
......@@ -275,66 +380,127 @@ extension YHMyDocumentsDetailViewController: UITableViewDelegate, UITableViewDat
return cell
} else {
let cell = tableView.dequeueReusableCell(withClass: YHDocumentUploadTableViewCell.self)
cell.dataSource = self.viewModel.mainModel?.writing_document.doc_sign
cell.dataSource = self.viewModel.mainModel
cell.backgroundColor = .clear
cell.contentView.backgroundColor = .clear
cell.block = { [weak self] type, index in
guard let self = self else { return }
if type == .upload {
let sheetView = YHCertificateUploadSheetView.sheetView()
// sheetView.maxSelectCount = 99-items.count
// sheetView.templateInfo = supplementInfo.templateInfo
// sheetView.uploadFilesBlock = {
// [weak self] fileUrl in
// guard let self = self else { return }
// print(fileUrl)
// uploadFile(fileUrl)
// }
// sheetView.uploadImageBlock = {
// [weak self] imgArr in
// guard let self = self else { return }
// let group = DispatchGroup()
// var successArr:[YHSelectImageItem] = []
// var failArr:[YHSelectImageItem] = []
//
// YHHUD.show(.progress(message: "上传中..."))
// for item in imgArr {
// if let image = item.data {
// group.enter()
// uploadImage(image, imageName:item.name) {
// success in
// if success {
// successArr.append(item)
// } else {
// failArr.append(item)
// }
// group.leave()
// }
// }
// }
//
// // 等待所有任务完成
// group.notify(queue: .main) {
// // 所有任务完成,回到主线程继续执行
// print("所有任务完成")
// if imgArr.count == successArr.count {
// YHHUD.flash(message: "上传成功")
//
// } else {
// YHHUD.flash(message: "\(successArr.count)张照片上传成功\n\(failArr.count)张照片上传失败")
// }
// YHHUD.hide()
// }
// }
self.oldUrl = ""
let sheetView = YHDocumentUploadView.sheetView()
sheetView.maxSelectCount = 9
sheetView.uploadFilesBlock = {
[weak self] fileUrl in
guard let self = self else { return }
print(fileUrl)
uploadFile(fileUrl)
}
sheetView.uploadImageBlock = {
[weak self] imgArr in
guard let self = self else { return }
let group = DispatchGroup()
var successArr:[YHSelectImageItem] = []
var failArr:[YHSelectImageItem] = []
YHHUD.show(.progress(message: "上传中..."))
for item in imgArr {
if let image = item.data {
group.enter()
uploadImage(image, imageName:item.name) {
success in
if success {
successArr.append(item)
} else {
failArr.append(item)
}
group.leave()
}
}
}
// 等待所有任务完成
group.notify(queue: .main) {
// 所有任务完成,回到主线程继续执行
print("所有任务完成")
if imgArr.count == successArr.count {
YHHUD.flash(message: "上传成功")
} else {
YHHUD.flash(message: "\(successArr.count)张照片上传成功\n\(failArr.count)张照片上传失败")
}
YHHUD.hide()
}
}
sheetView.show()
}
if type == .reUpload {
self.oldUrl = self.viewModel.mainModel?.writing_document.doc_sign.doc_return_manual[index]
let sheetView = YHDocumentUploadView.sheetView()
sheetView.maxSelectCount = 9
sheetView.uploadFilesBlock = {
[weak self] fileUrl in
guard let self = self else { return }
print(fileUrl)
uploadFile(fileUrl)
}
sheetView.uploadImageBlock = {
[weak self] imgArr in
guard let self = self else { return }
let group = DispatchGroup()
var successArr:[YHSelectImageItem] = []
var failArr:[YHSelectImageItem] = []
YHHUD.show(.progress(message: "上传中..."))
for item in imgArr {
if let image = item.data {
group.enter()
uploadImage(image, imageName:item.name) {
success in
if success {
successArr.append(item)
} else {
failArr.append(item)
}
group.leave()
}
}
}
// 等待所有任务完成
group.notify(queue: .main) {
// 所有任务完成,回到主线程继续执行
print("所有任务完成")
if imgArr.count == successArr.count {
YHHUD.flash(message: "上传成功")
} else {
YHHUD.flash(message: "\(successArr.count)张照片上传成功\n\(failArr.count)张照片上传失败")
}
YHHUD.hide()
}
}
sheetView.show()
}
if type == .look {
self.oldUrl = self.viewModel.mainModel?.writing_document.doc_sign.doc_return_manual[index]
self.viewModel.getPublicImageUrl(self.oldUrl ?? "") { success, error in
if let success = success {
self.previewFileTool.openXLSXRemoteFile(urlString: success, fileName: "")
}
}
}
if type == .delete {
self.oldUrl = self.viewModel.mainModel?.writing_document.doc_sign.doc_return_manual[index]
self.viewModel.requestFileAction("\(self.viewModel.mainModel?.writing_document.doc_sign.id ?? 0)", 3, [], self.oldUrl ?? "") {[weak self] success, error in
guard let self = self else { return }
if success {
YHHUD.flash(message: "删除成功")
} else {
YHHUD.flash(message: error?.errorMsg ?? "")
}
self.getData()
}
}
}
return cell
......@@ -352,7 +518,8 @@ extension YHMyDocumentsDetailViewController: UITableViewDelegate, UITableViewDat
} else if indexPath.row == 1 {
return 180
} else {
return 221
guard let count = self.viewModel.mainModel?.writing_document.doc_sign.doc_return_manual.count else { return CGFloat(221) }
return CGFloat(221 + count * 52)
}
}
}
......@@ -381,7 +548,10 @@ extension YHMyDocumentsDetailViewController: UITableViewDelegate, UITableViewDat
extension YHMyDocumentsDetailViewController: SFSafariViewControllerDelegate {
// MARK: 点击左上角的完成
func safariViewControllerDidFinish(_ controller: SFSafariViewController) {
controller.navigationController?.popViewController()
viewModel?.requestSignCallBack("\(self.viewModel.mainModel?.writing_document.doc_sign.id ?? 0)", callBackBlock: {[weak self] success, error in
guard let self = self else { return }
controller.navigationController?.popViewController()
})
}
// MARK: 加载完成
......
......@@ -46,6 +46,7 @@ class YHMyDocumentWritingDocumentModel: YHBaseModel {
}
class YHMyDocumentWritingDocumentDocSignModel: YHBaseModel {
var id: Int = 0
var is_upload: Int = 0
var supplement_id: Int = 0
var doc_send: String = ""
......
......@@ -22,7 +22,7 @@ class YHDocumentToActionTableViewCell: UITableViewCell {
var editButton: UIButton!
var submitButton: UIButton!
var lookButton: UIButton!
var dataSource: YHMyDocumentWritingDocumentDocSignModel? {
var dataSource: YHMyDocumentDetailModel? {
didSet {
updateAllViews()
}
......@@ -208,8 +208,23 @@ class YHDocumentToActionTableViewCell: UITableViewCell {
func updateAllViews() {
guard let dataSource = dataSource else { return }
// titleLabel.text = dataSource.doc_name
// subTitleLabel.text = "\(dataSource.doc_type)"
let suffix = dataSource.writing_document.name.pathExtension.lowercased()
var iconImgName = ""
if suffix == "jpeg" {
iconImgName = "my_cer_type_jpg"
} else if suffix == "jpg" {
iconImgName = "my_cer_type_jpg"
} else if suffix == "png" {
iconImgName = "my_cer_type_png"
} else if suffix == "pdf" {
iconImgName = "my_cer_type_pdf"
} else if suffix == "doc" || suffix == "docx" {
iconImgName = "my_cer_type_word"
} else if suffix == "ppt" || suffix == "pptx" {
iconImgName = "my_cer_type_ppt"
}
fileImageView.image = UIImage(named: iconImgName)
fileNameLabel.text = dataSource.writing_document.name
}
@objc func editButtonClick() {
......@@ -220,13 +235,13 @@ class YHDocumentToActionTableViewCell: UITableViewCell {
@objc func lookButtonClick() {
if let block = block {
block(.look)
block(.downLoad)
}
}
@objc func submitButtonClick() {
if let block = block {
block(.downLoad)
block(.look)
}
}
}
......
......@@ -14,12 +14,11 @@ class YHDocumentUploadTableViewCell: UITableViewCell {
var centerView: UIView!
var titleLabel: UILabel!
var topLineView: UIView!
var fileImageView: UIImageView!
var fileNameLabel: UILabel!
var promptLabel: UILabel!
var mainItemView: UIView!
var bottomView: YHWorkItemAddView!
var dataSource: YHMyDocumentWritingDocumentDocSignModel? {
var dataSource: YHMyDocumentDetailModel? {
didSet {
updateAllViews()
}
......@@ -77,47 +76,6 @@ class YHDocumentUploadTableViewCell: UITableViewCell {
make.height.equalTo(24)
}
topLineView = {
let view = UIView()
view.backgroundColor = UIColor.separatorColor
return view
}()
centerView.addSubview(topLineView)
topLineView.snp.makeConstraints { make in
make.right.equalTo(-18)
make.left.equalTo(18)
make.height.equalTo(1)
make.top.equalTo(52)
}
fileImageView = {
let view = UIImageView()
view.image = UIImage(named: "")
return view
}()
centerView.addSubview(fileImageView)
fileImageView.snp.makeConstraints { make in
make.left.equalTo(24)
make.centerY.equalToSuperview()
make.width.height.equalTo(31)
}
fileNameLabel = {
let label = UILabel()
label.font = UIFont.PFSC_M(ofSize: 14)
label.textColor = UIColor.mainTextColor
label.numberOfLines = 0
label.text = "雇主的推荐信(仅签字)华为科技有限公司.doc"
return label
}()
centerView.addSubview(fileNameLabel)
fileNameLabel.snp.makeConstraints { make in
make.right.equalTo(-18)
make.left.equalTo(67)
make.height.equalTo(40)
make.centerY.equalToSuperview()
}
promptLabel = {
let label = UILabel()
label.font = UIFont.PFSC_R(ofSize: 12)
......@@ -152,13 +110,57 @@ class YHDocumentUploadTableViewCell: UITableViewCell {
make.right.equalTo(-18)
make.height.equalTo(45)
}
mainItemView = {
let view = UIView()
view.backgroundColor = .white
view.layer.cornerRadius = kCornerRadius6
return view
}()
centerView.addSubview(mainItemView)
mainItemView.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.bottom.equalTo(-153)
make.top.equalTo(52)
}
}
func updateAllViews() {
guard let dataSource = dataSource else { return }
// titleLabel.text = dataSource.doc_name
// subTitleLabel.text = "\(dataSource.doc_type)"
mainItemView.removeSubviews()
var y = 0
for i in 0 ..< (dataSource.writing_document.doc_sign.doc_return_manual.count) {
let line = UIView()
line.backgroundColor = UIColor.separatorColor
mainItemView.addSubview(line)
line.snp.makeConstraints { make in
make.left.equalTo(18)
make.top.equalTo(y)
make.height.equalTo(1)
make.right.equalTo(-18)
}
y = y + 1
let data = dataSource.writing_document.doc_sign.doc_return_manual[i]
let h = 51
let itemView = YHFileItemView()
itemView.index = i
itemView.docType = dataSource.writing_document.doc_sign.doc_type
itemView.dataSource = data
itemView.itemBlock = {[weak self] type, index in
guard let self = self else { return }
if let block = block {
block(type, index)
}
}
mainItemView.addSubview(itemView)
itemView.snp.makeConstraints { make in
make.left.equalTo(18)
make.top.equalTo(y)
make.height.equalTo(h)
make.right.equalTo(-18)
}
y = y + h
}
}
}
//
// YHDocumentUploadView.swift
// galaxy
//
// Created by EDY on 2024/3/29.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import PhotosUI
class YHDocumentUploadView: UIView {
private var _maxSelectCount: Int = 9
var maxSelectCount = 9 {
didSet {
if maxSelectCount >= 9 {
_maxSelectCount = 9
} else if 0 < maxSelectCount && maxSelectCount < 9 {
_maxSelectCount = maxSelectCount
} else {
_maxSelectCount = 0
}
}
}
var templateArr: [YHMaterialPath] = []
var uploadTypeArr = [
YHCertificateUploadItem(type:.camera, title:"拍照上传"),
YHCertificateUploadItem(type:.photo, title:"相册上传"),
YHCertificateUploadItem(type:.phoneFile, title:"手机文件上传", subtitle:"从手机文件管理中上传"),
YHCertificateUploadItem(type:.cancel, title:"取消")]
// 上传文件
var uploadFilesBlock:((URL)->())?
// 上传图片
var uploadImageBlock:(([YHSelectImageItem])->())?
// 点击模版
var clickTemplateBlock:((YHMaterialPath?)->())?
lazy var blackMaskView: UIView = {
let view = UIView()
view.backgroundColor = UIColor(hex: 0x0F1214, alpha: 0.5)
let tap = UITapGestureRecognizer(target: self, action: #selector(dismiss))
view.addGestureRecognizer(tap)
return view
}()
lazy var whiteContentView: UIView = {
let view = UIView()
view.backgroundColor = .white
return view
}()
lazy var topView:UIView = {
let view = UIView()
view.addSubview(titleLabel)
view.addSubview(closeBtn)
let line = UIView()
line.backgroundColor = .separatorColor
view.addSubview(line)
titleLabel.snp.makeConstraints { make in
make.top.equalToSuperview().offset(16)
make.left.right.equalToSuperview()
make.height.equalTo(24)
}
closeBtn.snp.makeConstraints { make in
make.centerY.equalTo(titleLabel)
make.right.equalToSuperview().offset(-20)
make.width.height.equalTo(24)
}
line.snp.makeConstraints { make in
make.left.equalToSuperview().offset(20)
make.right.equalToSuperview().offset(-20)
make.height.equalTo(1)
make.top.equalTo(titleLabel.snp.bottom).offset(12)
make.bottom.equalToSuperview()
}
return view
}()
lazy var titleLabel: UILabel = {
let label = UILabel()
label.textColor = UIColor.mainTextColor
label.textAlignment = .center
label.font = UIFont.PFSC_B(ofSize:17)
label.text = "请选择上传方式"
return label
}()
lazy var closeBtn: UIButton = {
let btn = UIButton()
btn.setImage(UIImage(named:"my_cer_sheet_close"), for: .normal)
btn.addTarget(self, action: #selector(dismiss), for: .touchUpInside)
return btn
}()
lazy var tableView: UITableView = {
let tableView = UITableView(frame:.zero, style:.plain)
tableView.contentInsetAdjustmentBehavior = .never
tableView.showsVerticalScrollIndicator = false
tableView.separatorStyle = .none
tableView.delegate = self
tableView.dataSource = self
tableView.backgroundColor = .white
tableView.isScrollEnabled = false
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "UITableViewCell")
tableView.register(YHCertificateUploadTypeCell.self, forCellReuseIdentifier: YHCertificateUploadTypeCell.cellReuseIdentifier)
return tableView
}()
lazy var documentPickerVC: UIDocumentPickerViewController = {
let docTypes = [ "public.image",
"com.adobe.pdf",
"com.microsoft.word.doc",
"org.openxmlformats.wordprocessingml.document",
"com.microsoft.powerpoint.ppt",
"org.openxmlformats.presentationml.presentation",]
if #available(iOS 14.0, *) {
var arr:[UTType] = []
for docStr in docTypes {
if let type = UTType(docStr) {
arr.append(type)
}
}
let docPickerVC = UIDocumentPickerViewController(forOpeningContentTypes: arr)
docPickerVC.delegate = self
return docPickerVC
}
let docPickerVC = UIDocumentPickerViewController(documentTypes: docTypes, in: .open)
docPickerVC.delegate = self
return docPickerVC
}()
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override init(frame: CGRect) {
super.init(frame: frame)
createUI()
}
static func sheetView() -> YHDocumentUploadView {
let view = YHDocumentUploadView(frame:UIScreen.main.bounds)
return view
}
func createUI() {
self.addSubview(blackMaskView)
self.addSubview(whiteContentView)
whiteContentView.addSubview(topView)
whiteContentView.addSubview(tableView)
let corner = UIRectCorner(rawValue: UIRectCorner.topLeft.rawValue | UIRectCorner.topRight.rawValue)
let path = UIBezierPath(roundedRect:bounds,byRoundingCorners: corner,cornerRadii:CGSizeMake(16.0, 16.0));
let layer = CAShapeLayer();
layer.frame = whiteContentView.bounds;
layer.path = path.cgPath;
whiteContentView.layer.mask = layer;
blackMaskView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
whiteContentView.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview()
make.height.equalTo(294)
}
topView.snp.makeConstraints { make in
make.top.left.right.equalToSuperview()
}
tableView.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview()
make.top.equalTo(topView.snp.bottom).offset(-1)
}
}
}
extension YHDocumentUploadView {
func show() {
UIApplication.shared.yhKeyWindow()?.addSubview(self)
}
@objc func dismiss() {
self.removeFromSuperview()
}
}
extension YHDocumentUploadView: UITableViewDelegate, UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return uploadTypeArr.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: YHCertificateUploadTypeCell.cellReuseIdentifier, for: indexPath) as! YHCertificateUploadTypeCell
if 0 <= indexPath.row && indexPath.row < uploadTypeArr.count {
cell.item = uploadTypeArr[indexPath.row]
}
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if 0 <= indexPath.row && indexPath.row < uploadTypeArr.count {
let operationItem = uploadTypeArr[indexPath.row]
if operationItem.type == .cancel {
dismiss()
} else if operationItem.type == .photo {
selectPhoto()
} else if operationItem.type == .camera {
takePhoto()
} else if operationItem.type == .phoneFile {
selectFile()
}
}
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 52.0
}
}
extension YHDocumentUploadView: (UIImagePickerControllerDelegate & UINavigationControllerDelegate) {
private func getPhotoLibraryAuthorization(notDeterminedBlock: (()->())?) -> Bool? {
let authorizationStatus = PHPhotoLibrary.authorizationStatus()
switch authorizationStatus {
case .authorized:
print("已经授权")
return true
case .notDetermined:
print("不确定是否授权")
// 请求授权
PHPhotoLibrary.requestAuthorization {
status in
notDeterminedBlock?()
}
return nil
case .denied:
print("拒绝授权")
case .restricted:
print("限制授权")
break
case .limited: break
@unknown default:
break
}
return false
}
func takePhoto() {
guard let authorization = getPhotoLibraryAuthorization(notDeterminedBlock: {
DispatchQueue.main.async {
self.takePhoto()
}
}) else {
return
}
if !authorization {
YHHUD.flash(message: "请在设置中打开相册权限")
return
}
if UIImagePickerController.isSourceTypeAvailable(.camera){
//创建图片控制器
let imagePicker = UIImagePickerController()
//设置代理
imagePicker.delegate = self
//设置来源
imagePicker.sourceType = .camera
//打开相机
UIViewController.current?.present(imagePicker, animated: true, completion: { () -> Void in
})
} else {
printLog("找不到相机")
}
}
func selectPhoto() {
guard let authorization = getPhotoLibraryAuthorization(notDeterminedBlock: {
DispatchQueue.main.async {
self.selectPhoto()
}
}) else {
return
}
if !authorization {
YHHUD.flash(message: "请在设置中打开相册权限")
return
}
if #available(iOS 14.0, *) { // iOS14以上可多选
var configuration = PHPickerConfiguration()
// 设置最大选择数量
configuration.selectionLimit = _maxSelectCount
// 设置选择器的过滤条件 只显示图片
configuration.filter = .images
let picker = PHPickerViewController(configuration: configuration)
picker.delegate = self
UIViewController.current?.present(picker, animated: true, completion: nil)
} 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]) {
if let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
var imageName = ""
// 获取照片的名称
if let imageUrl = info[.imageURL] as? URL {
let lastComponent = imageUrl.lastPathComponent
imageName = lastComponent
}
if imageName.isEmpty {
let timestamp = Date().timeIntervalSince1970
imageName = "\(timestamp).jpg"
}
let item = YHSelectImageItem(name: imageName, data: image)
uploadImageBlock?([item])
self.dismiss()
} else {
printLog("pick image wrong")
self.dismiss()
}
// 收回图库选择界面
picker.dismiss(animated: true, completion: nil)
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
picker.dismiss(animated: true, completion: nil)
}
}
extension YHDocumentUploadView: 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()
if results.count <= 0 { // 取消的时候会调用到此处
return
}
let group = DispatchGroup()
let queue = DispatchQueue.global()
var imageArr:[YHSelectImageItem] = []
YHHUD.show(.progress(message:"加载中..."))
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) {
// 所有任务完成,回到主线程继续执行
YHHUD.hide()
print("所有任务完成")
self.uploadImageBlock?(imageArr)
}
}
}
extension YHDocumentUploadView: UIDocumentPickerDelegate {
func selectFile() {
UIViewController.current?.present(documentPickerVC, animated: true, completion: nil)
}
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
guard let url = urls.first, let fileName = url.lastPathComponent.removingPercentEncoding else {
return
}
print("\(url)")
// 读取文件数据
// 获取授权
let fileUrlAuthozied = url.startAccessingSecurityScopedResource()
if fileUrlAuthozied {
// 通过文件协调工具来得到新的文件地址,以此得到文件保护功能
let fileCoordinator = NSFileCoordinator()
var error: NSError?
fileCoordinator.coordinate(readingItemAt: url, options:[.forUploading], error: &error) {
fileUrl in
uploadFilesBlock?(fileUrl)
dismiss()
}
url.stopAccessingSecurityScopedResource()
if let error = error {
}
} else {
print("授权失败")
dismiss()
}
}
func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) {
}
}
//
// YHFileItemView.swift
// galaxy
//
// Created by EDY on 2024/3/29.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHFileItemView: UIView {
typealias ItemBlock = (YHMyFileMethodType, Int) -> ()
var itemBlock: ItemBlock?
var fileImageView: UIImageView!
var fileNameLabel: UILabel!
var deleteButton: UIButton!
var centerButton: UIButton!
var index: Int = 0
var docType: Int = 0
var dataSource: String? {
didSet {
updateAllViews()
}
}
override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = .white
setUpView()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setUpView() {
fileImageView = {
let view = UIImageView()
view.image = UIImage(named: "")
return view
}()
addSubview(fileImageView)
fileImageView.snp.makeConstraints { make in
make.left.equalTo(6)
make.centerY.equalToSuperview()
make.width.height.equalTo(31)
}
fileNameLabel = {
let label = UILabel()
label.font = UIFont.PFSC_M(ofSize: 14)
label.textColor = UIColor.mainTextColor
label.numberOfLines = 0
label.text = "雇主的推荐信(仅签字)华为科技有限公司.doc"
return label
}()
addSubview(fileNameLabel)
fileNameLabel.snp.makeConstraints { make in
make.right.equalTo(-18)
make.left.equalTo(49)
make.top.bottom.equalToSuperview()
}
centerButton = {
let button = UIButton(type: .custom)
button.addTarget(self, action: #selector(centerClick), for: .touchUpInside)
return button
}()
addSubview(centerButton)
centerButton.snp.makeConstraints { make in
make.right.top.bottom.equalToSuperview()
make.left.equalTo(112)
}
deleteButton = {
let button = UIButton(type: .custom)
button.setBackgroundImage(UIImage(named: "my_cer_btn_edit"), for: .normal)
button.addTarget(self, action: #selector(deleteClick), for: .touchUpInside)
return button
}()
addSubview(deleteButton)
deleteButton.snp.makeConstraints { make in
make.right.equalToSuperview()
make.centerY.equalToSuperview()
make.width.height.equalTo(16)
}
}
func updateAllViews() {
guard let dataSource = dataSource else { return }
// 1-代理委托书,2-受养人声明,3-工作经验补充表,4-声明书,5-人才清单声明书,6-个人陈述书,7-推荐信,8-组织架构图
var name = ""
if docType == 1 {
name = "代理委托书"
}
if docType == 2 {
name = "受养人声明"
}
if docType == 3 {
name = "工作经验补充表"
}
if docType == 4 {
name = "声明书"
}
if docType == 5 {
name = "人才清单声明书"
}
if docType == 6 {
name = "个人陈述书"
}
if docType == 7 {
name = "推荐信"
}
if docType == 8 {
name = "组织架构图"
}
let suffix = dataSource.pathExtension.lowercased()
var iconImgName = ""
if suffix == "jpeg" {
iconImgName = "my_cer_type_jpg"
} else if suffix == "jpg" {
iconImgName = "my_cer_type_jpg"
} else if suffix == "png" {
iconImgName = "my_cer_type_png"
} else if suffix == "pdf" {
iconImgName = "my_cer_type_pdf"
} else if suffix == "doc" || suffix == "docx" {
iconImgName = "my_cer_type_word"
} else if suffix == "ppt" || suffix == "pptx" {
iconImgName = "my_cer_type_ppt"
}
fileImageView.image = UIImage(named: iconImgName)
fileNameLabel.text = name + "." + suffix + "(已签章)"
}
@objc func centerClick() {
if let block = itemBlock {
block(.look, index)
}
}
@objc func deleteClick() {
let items = [YHCertificateEditItem(type:.preview, title:"预览"),
YHCertificateEditItem(type:.reUpload, title:"重传"),
YHCertificateEditItem(type:.delete, title:"删除"),
YHCertificateEditItem(type:.cancel, title:"取消")]
YHCertificateEditSheetView.sheetView(items:items) {
[weak self] editType in
guard let self = self else { return }
if editType == .reUpload {
if let block = itemBlock {
block(.reUpload, index)
}
} else if editType == .delete { // 删除
if let block = itemBlock {
block(.delete, index)
}
} else if editType == .preview { // 预览
if let block = itemBlock {
block(.look, index)
}
}
}.show()
}
}
......@@ -158,11 +158,7 @@ class YHMyDocumentsDetailViewModel: YHBaseViewModel {
guard let self = self else { return }
if json.code == 200 {
let dic = json.data
guard let result = YHMySignatureURLModel.deserialize(from: dic as? Dictionary) else {
callBackBlock(false,nil)
return
}
self.pageUrl = result.url
self.pageUrl = json.data as? String
callBackBlock(true, nil)
} else {
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
......@@ -195,4 +191,66 @@ class YHMyDocumentsDetailViewModel: YHBaseViewModel {
callBackBlock(false, err)
}
}
func requestFileAction(_ id: String, _ type: Int, _ newArray: [String], _ oldUrl: String,callBackBlock:@escaping (_ success: Bool, _ error: YHErrorModel?)->()) {
let params: [String : Any] = ["id": id,
"op_type": type,
"new_url": newArray,
"old_url": oldUrl]
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Signature.upload
let _ = YHNetRequest.postRequest(url: strUrl, params: params) { [weak self] json, code in
//1. json字符串 转 对象
guard let self = self else { return }
if json.code == 200 {
let dic = json.data
// guard let result = YHMySignatureURLModel.deserialize(from: dic as? Dictionary) else {
// callBackBlock(false,nil)
// return
// }
// self.pageUrl = result.url
callBackBlock(true, nil)
} else {
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
callBackBlock(false, error)
}
} failBlock: { err in
callBackBlock(false, err)
}
}
func requestSignCallBack(_ id: String, callBackBlock:@escaping (_ success: Bool?, _ error: YHErrorModel?)->()) {
// let params: [String : Any] = ["order_id": orderId]
let params: [String : Any] = ["id": id]
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Signature.callBack
let _ = YHNetRequest.getRequest(url: strUrl, params: params) { [weak self] json, code in
//1. json字符串 转 对象
guard let self = self else { return }
if json.code == 200 {
callBackBlock(true, nil)
} else {
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
callBackBlock(false, error)
}
} failBlock: { err in
callBackBlock(false, err)
}
}
func requestSignConfirm(_ id: String, callBackBlock:@escaping (_ success: Bool, _ error: YHErrorModel?)->()) {
// let params: [String : Any] = ["order_id": orderId]
let params: [String : Any] = ["id": id]
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Signature.confirm
let _ = YHNetRequest.postRequest(url: strUrl, params: params) { [weak self] json, code in
//1. json字符串 转 对象
guard let self = self else { return }
if json.code == 200 {
callBackBlock(true, nil)
} else {
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
callBackBlock(false, error)
}
} failBlock: { err in
callBackBlock(false, err)
}
}
}
......@@ -10,63 +10,59 @@ import UIKit
import SafariServices
class YHMySignatureDetailViewController: YHBaseViewController {
var bottomView: UIView!
var bottomButton: UIButton!
var tableView: UITableView!
var dataSource: [YHWorkItemListModel]?
var viewModel: YHMySignatureDetailViewModel?
var timer = Timer()
var viewModel: YHMySignatureDetailViewModel!
var id: Int = 0
var oldUrl: String?
lazy var previewFileTool:YHFilePreviewTool = {
let tool = YHFilePreviewTool(targetVC: self)
return tool
}()
override func viewDidLoad() {
super.viewDidLoad()
viewModel = YHMySignatureDetailViewModel()
gk_navTitle = "我的签字"
gk_navTitle = "文书操作"
gk_navBackgroundColor = .white
gk_navBarAlpha = 1
setView()
getData()
// Do any additional setup after loading the view.
}
func startTimer() {
let queue = DispatchQueue.global()
timer = Timer.scheduledTimer(withTimeInterval: 2.0, repeats: true) { _ in
queue.async {
self.checkSignatureState()
}
}
}
func checkSignatureState() {
viewModel?.requestSignCallBack("\(id)", callBackBlock: {[weak self] success, error in
guard let self = self else { return }
if success ?? false {
timer.invalidate()
//刷新文件状态
}
})
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
getData()
}
func getData() {
viewModel?.requestSignatureDetail("\(id)", callBackBlock: {[weak self] success, error in
viewModel.requestSignatureDetail("\(id)", callBackBlock: {[weak self] success, error in
guard let self = self else { return }
let state = self.viewModel.mainModel?.status
// 0-待上传,1-未发送, 2-发送中,3-已发送,4-已签收,5-审核通过,6-驳回
if state == 0 || state == 1 || state == 2 {
} else if state == 3 || state == 4 || state == 5 {
} else {
}
self.tableView.reloadData()
})
}
func updateDataSource() {
self.tableView.reloadData()
}
func setView() {
view.backgroundColor = .contentBkgColor
tableView = {
let tableView = UITableView(frame:.zero, style:.plain)
let tableView = UITableView(frame:.zero, style:.grouped)
if #available(iOS 11.0, *) {
tableView.contentInsetAdjustmentBehavior = .never
}
......@@ -74,7 +70,9 @@ class YHMySignatureDetailViewController: YHBaseViewController {
tableView.separatorStyle = .none
tableView.delegate = self
tableView.dataSource = self
tableView.register(cellWithClass: YHMyFileMethodTableViewCell.self)
tableView.register(cellWithClass: YHDocumentPromptTableViewCell.self)
tableView.register(cellWithClass: YHSignatureToActionTableViewCell.self)
tableView.register(cellWithClass: YHSignatureUploadTableViewCell.self)
return tableView
}()
view.addSubview(tableView)
......@@ -97,10 +95,9 @@ class YHMySignatureDetailViewController: YHBaseViewController {
bottomButton = {
let button = UIButton(type: .custom)
// button.backgroundColor = UIColor(hex:0x2274ee)
button.titleLabel?.font = UIFont.PFSC_M(ofSize: 16)
button.contentHorizontalAlignment = .center
button.setTitle("提交", for: .normal)
button.setTitle("确定已签章,提交", for: .normal)
button.setTitleColor( UIColor(hex:0xffffff), for: .normal)
button.layer.cornerRadius = kCornerRadius6
button.clipsToBounds = true
......@@ -120,98 +117,340 @@ class YHMySignatureDetailViewController: YHBaseViewController {
}
@objc func submit() {
let url = URL(string: "https://baidu.com/")!
let safariViewController = SFSafariViewController(url: url)
safariViewController.dismissButtonStyle = .close
safariViewController.delegate = self
self.navigationController?.pushViewController(safariViewController)
viewModel.requestSignConfirm("\(self.id)") {[weak self] success, error in
guard let self = self else { return }
if success {
self.getData()
} else {
if let errorMsg = error?.errorMsg, !errorMsg.isEmpty {
YHHUD.flash(message: errorMsg)
}
}
}
}
func uploadFile(_ fileUrl:URL) {
if let fileData = try? Data(contentsOf: fileUrl) {
// 将文件数据上传到服务器
let size = String(format: "%.2fM", Double(fileData.count)/(1024.0 * 1024.0))
print("\(size)")
// 先OSS上传得到URL
YHHUD.show(.progress(message: "上传中..."))
self.viewModel.uploadFile(fileUrl.absoluteString) {
[weak self] successUrl, error in
guard let self = self else { return }
YHHUD.hide()
// 再调用业务接口
if let successUrl = successUrl, !successUrl.isEmpty {
var fileName = fileUrl.lastPathComponent
if fileName.isEmpty {
fileName = successUrl.lastPathComponent
}
let suffixName = successUrl.pathExtension.lowercased()
let model = YHContentUrl()
model.name = fileName
model.url = successUrl
model.suffix = suffixName
// YHHUD.show(.progress(message: "上传中..."))
var action = 1
if self.oldUrl?.count != 0 {
action = 2
}
self.viewModel.requestFileAction("\(self.id)", action, [successUrl], self.oldUrl ?? "") {[weak self] success, error in
guard let self = self else { return }
// YHHUD.hide()
if success {
YHHUD.flash(message: "上传成功")
} else {
var msg = "上传失败"
if let errorMsg = error?.errorMsg, !errorMsg.isEmpty {
msg = errorMsg
}
YHHUD.flash(message:msg)
}
self.getData()
}
return
}
var msg = "上传图片失败"
if let errorMsg = error?.errorMsg, !errorMsg.isEmpty {
msg = errorMsg
}
YHHUD.flash(message: msg)
}
} else {
YHHUD.flash(message: "识别文件失败")
}
}
func uploadImage(_ img: UIImage, imageName:String, callBack:((Bool)->())?) {
// 先OSS上传得到URL
self.viewModel.uploadImage(img) {
[weak self] url, error in
guard let self = self else { return }
if let url = url, !url.isEmpty {
var suffix = "jpg"
let suffixName = url.pathExtension.lowercased()
if !suffixName.isEmpty {
suffix = suffixName
}
// 再调用业务接口
let model = YHContentUrl()
model.name = imageName
model.url = url
model.suffix = suffix
var action = 1
if self.oldUrl?.count != 0 {
action = 2
}
self.viewModel.requestFileAction("\(self.id)", action, [url], self.oldUrl ?? "") {[weak self] success, error in
guard let self = self else { return }
self.getData()
}
return
}
callBack?(false)
}
}
}
extension YHMySignatureDetailViewController: UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
return 3
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withClass: YHMyFileMethodTableViewCell.self)
cell.block = {[weak self] type in
guard let self = self else { return }
switch type {
case .sign:
viewModel?.requestSignaturePageURL("\(id)", callBackBlock: {[weak self] success, error in
guard let self = self else { return }
if error?.errorCode == 1008611 {
YHCommonAlertView.show("实名认证", "为保证签署有效,请先实名认证", "取消", "去认证") {
self.viewModel?.requestSignaturePersonalURL(callBackBlock: {[weak self] success, error in
guard let self = self else { return }
let url = URL(string: self.viewModel?.personalUrl)!
if indexPath.row == 0 {
let cell = tableView.dequeueReusableCell(withClass: YHDocumentPromptTableViewCell.self)
cell.backgroundColor = .clear
cell.contentView.backgroundColor = .clear
return cell
} else if indexPath.row == 1 {
let cell = tableView.dequeueReusableCell(withClass: YHSignatureToActionTableViewCell.self)
cell.dataSource = self.viewModel.mainModel
cell.backgroundColor = .clear
cell.contentView.backgroundColor = .clear
cell.block = { [weak self] type in
guard let self = self else { return }
if type == .sign {
self.viewModel.requestSignaturePageURL("\(self.id)", callBackBlock: {[weak self] success, error in
guard let self = self else { return }
if error?.errorCode == 1008611 {
YHCommonAlertView.show("实名认证", "为保证签署有效,请先实名认证", "取消", "去认证") {
self.viewModel.requestSignaturePersonalURL(callBackBlock: {[weak self] success, error in
guard let self = self else { return }
let url = URL(string: self.viewModel.personalUrl)!
let safariViewController = SFSafariViewController(url: url)
safariViewController.dismissButtonStyle = .close
safariViewController.delegate = self
self.navigationController?.pushViewController(safariViewController)
})
}
} else {
if success ?? false {
let url = URL(string: self.viewModel.pageUrl)!
let safariViewController = SFSafariViewController(url: url)
safariViewController.dismissButtonStyle = .close
safariViewController.delegate = self
self.navigationController?.pushViewController(safariViewController)
// let vc = YHNewWebViewController()
// vc.url = self.viewModel?.personalUrl ?? ""
// self.navigationController?.pushViewController(vc)
})
} else {
YHHUD.flash(message: error?.errorMsg ?? "")
}
}
} else {
if success ?? false {
// self.startTimer()
let url = URL(string: self.viewModel?.pageUrl)!
})
}
if type == .look {
self.viewModel.requestSignatureLook("\(self.id)") {[weak self] success, error in
guard let self = self else { return }
if success {
let url = URL(string: self.viewModel.pageUrl)!
let safariViewController = SFSafariViewController(url: url)
safariViewController.dismissButtonStyle = .close
safariViewController.delegate = self
self.navigationController?.pushViewController(safariViewController)
// let vc = YHNewWebViewController()
// vc.url = self.viewModel?.pageUrl ?? ""
// self.navigationController?.pushViewController(vc)
} else {
YHHUD.flash(message: error?.errorMsg ?? "")
}
}
})
case .downLoad:
printLog("下载")
case .look:
printLog("查看")
case .edit:
break
case .submit:
break
case .upload:
break
case .delete:
break
case .reUpload:
break
}
if type == .downLoad {
self.viewModel.requestSignatureDownload("\(self.id)") { [weak self] success, error in
guard let self = self else { return }
//获取到下载链接发送到邮箱
}
}
}
return cell
} else {
let cell = tableView.dequeueReusableCell(withClass: YHSignatureUploadTableViewCell.self)
cell.dataSource = self.viewModel.mainModel
cell.backgroundColor = .clear
cell.contentView.backgroundColor = .clear
cell.block = { [weak self] type, index in
guard let self = self else { return }
if type == .upload {
self.oldUrl = ""
let sheetView = YHDocumentUploadView.sheetView()
sheetView.maxSelectCount = 9
sheetView.uploadFilesBlock = {
[weak self] fileUrl in
guard let self = self else { return }
print(fileUrl)
uploadFile(fileUrl)
}
sheetView.uploadImageBlock = {
[weak self] imgArr in
guard let self = self else { return }
let group = DispatchGroup()
var successArr:[YHSelectImageItem] = []
var failArr:[YHSelectImageItem] = []
YHHUD.show(.progress(message: "上传中..."))
for item in imgArr {
if let image = item.data {
group.enter()
uploadImage(image, imageName:item.name) {
success in
if success {
successArr.append(item)
} else {
failArr.append(item)
}
group.leave()
}
}
}
// 等待所有任务完成
group.notify(queue: .main) {
// 所有任务完成,回到主线程继续执行
print("所有任务完成")
if imgArr.count == successArr.count {
YHHUD.flash(message: "上传成功")
} else {
YHHUD.flash(message: "\(successArr.count)张照片上传成功\n\(failArr.count)张照片上传失败")
}
YHHUD.hide()
}
}
sheetView.show()
}
if type == .reUpload {
self.oldUrl = self.viewModel.mainModel?.doc_return_manual[index]
let sheetView = YHDocumentUploadView.sheetView()
sheetView.maxSelectCount = 9
sheetView.uploadFilesBlock = {
[weak self] fileUrl in
guard let self = self else { return }
print(fileUrl)
uploadFile(fileUrl)
}
sheetView.uploadImageBlock = {
[weak self] imgArr in
guard let self = self else { return }
let group = DispatchGroup()
var successArr:[YHSelectImageItem] = []
var failArr:[YHSelectImageItem] = []
YHHUD.show(.progress(message: "上传中..."))
for item in imgArr {
if let image = item.data {
group.enter()
uploadImage(image, imageName:item.name) {
success in
if success {
successArr.append(item)
} else {
failArr.append(item)
}
group.leave()
}
}
}
// 等待所有任务完成
group.notify(queue: .main) {
// 所有任务完成,回到主线程继续执行
print("所有任务完成")
if imgArr.count == successArr.count {
YHHUD.flash(message: "上传成功")
} else {
YHHUD.flash(message: "\(successArr.count)张照片上传成功\n\(failArr.count)张照片上传失败")
}
YHHUD.hide()
}
}
sheetView.show()
}
if type == .look {
self.oldUrl = self.viewModel.mainModel?.doc_return_manual[index]
self.viewModel.getPublicImageUrl(self.oldUrl ?? "") { success, error in
if let success = success {
self.previewFileTool.openXLSXRemoteFile(urlString: success, fileName: "")
}
}
}
if type == .delete {
self.oldUrl = self.viewModel.mainModel?.doc_return_manual[index]
self.viewModel.requestFileAction("\(self.id)", 3, [], self.oldUrl ?? "") {[weak self] success, error in
guard let self = self else { return }
if success {
YHHUD.flash(message: "删除成功")
} else {
YHHUD.flash(message: error?.errorMsg ?? "")
}
self.getData()
}
}
}
return cell
}
cell.backgroundColor = .clear
cell.contentView.backgroundColor = .clear
return cell
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return CGFloat(180)
if indexPath.row == 0 {
return 104
} else if indexPath.row == 1 {
return 180
} else {
guard let count = self.viewModel.mainModel?.doc_return_manual.count else { return CGFloat(221) }
return CGFloat(221 + count * 52)
}
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let view = UIView(frame: CGRect(x: 0, y: 0, width: KScreenWidth, height: 7))
return view
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 7
}
func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
return UIView()
}
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return 0.01
}
}
extension YHMySignatureDetailViewController: SFSafariViewControllerDelegate {
// MARK: 点击左上角的完成
func safariViewControllerDidFinish(_ controller: SFSafariViewController) {
viewModel?.requestSignCallBack("\(id)", callBackBlock: {[weak self] success, error in
viewModel?.requestSignCallBack("\(self.id)", callBackBlock: {[weak self] success, error in
guard let self = self else { return }
if success ?? false {
// timer.invalidate()
//刷新文件状态
}
controller.navigationController?.popViewController()
})
}
......
......@@ -19,16 +19,21 @@ enum YHMyFileMethodType: Int {
case reUpload = 7 // 重传
}
class YHMyFileMethodTableViewCell: UITableViewCell {
class YHSignatureToActionTableViewCell: UITableViewCell {
typealias Block = (YHMyFileMethodType) -> ()
var block: Block?
var centerView: UIView!
var titleLabel: UILabel!
var subTitleLabel: UILabel!
var signButton: UIButton!
var topLineView: UIView!
var bottomView: UIView!
var bottomLeftLineView: UIView!
var bottomRightLineView: UIView!
var fileImageView: UIImageView!
var fileNameLabel: UILabel!
var editButton: UIButton!
var submitButton: UIButton!
var lookButton: UIButton!
var downLoadButton: UIButton!
var dataSource: YHMySignatureModel? {
var dataSource: YHMySignatureDetailModel? {
didSet {
updateAllViews()
}
......@@ -56,6 +61,7 @@ class YHMyFileMethodTableViewCell: UITableViewCell {
}
func setupUI() {
let width = (KScreenWidth - 32)/3.0
backgroundColor = .clear
centerView = {
let view = UIView()
......@@ -67,13 +73,13 @@ class YHMyFileMethodTableViewCell: UITableViewCell {
centerView.snp.makeConstraints { make in
make.left.equalTo(16)
make.right.equalTo(-16)
make.top.equalTo(7)
make.bottom.equalTo(-7)
make.top.equalTo(8)
make.bottom.equalTo(-8)
}
titleLabel = {
let label = UILabel()
label.font = UIFont.PFSC_M(ofSize: 18)
label.font = UIFont.PFSC_M(ofSize: 17)
label.textColor = UIColor.mainTextColor
label.text = "电子签"
return label
......@@ -81,113 +87,172 @@ class YHMyFileMethodTableViewCell: UITableViewCell {
centerView.addSubview(titleLabel)
titleLabel.snp.makeConstraints { make in
make.left.equalTo(18)
make.right.equalTo(-18)
make.top.equalTo(16)
make.height.equalTo(21)
make.height.equalTo(24)
}
subTitleLabel = {
let label = UILabel()
label.font = UIFont.PFSC_R(ofSize: 16)
label.textColor = UIColor.labelTextColor2
label.textAlignment = .left
label.text = "申明书.doc"
return label
topLineView = {
let view = UIView()
view.backgroundColor = UIColor.separatorColor
return view
}()
centerView.addSubview(subTitleLabel)
subTitleLabel.snp.makeConstraints { make in
make.height.equalTo(20)
make.left.equalTo(18)
centerView.addSubview(topLineView)
topLineView.snp.makeConstraints { make in
make.right.equalTo(-18)
make.top.equalTo(80)
make.left.equalTo(18)
make.height.equalTo(1)
make.top.equalTo(52)
}
bottomView = {
let view = UIView()
view.backgroundColor = UIColor.separatorColor
return view
}()
centerView.addSubview(bottomView)
bottomView.snp.makeConstraints { make in
make.right.left.equalToSuperview()
make.height.equalTo(1)
make.top.equalTo(123)
}
bottomLeftLineView = {
let view = UIView()
view.backgroundColor = UIColor.separatorColor
return view
}()
centerView.addSubview(bottomLeftLineView)
bottomLeftLineView.snp.makeConstraints { make in
make.left.equalTo(width)
make.width.equalTo(1)
make.bottom.equalTo(-17.5)
make.height.equalTo(16)
}
downLoadButton = {
bottomRightLineView = {
let view = UIView()
view.backgroundColor = UIColor.separatorColor
return view
}()
centerView.addSubview(bottomRightLineView)
bottomRightLineView.snp.makeConstraints { make in
make.left.equalTo(width * 2)
make.width.equalTo(1)
make.bottom.equalTo(-17.5)
make.height.equalTo(16)
}
editButton = {
let button = UIButton(type: .custom)
button.backgroundColor = UIColor.brandMainColor.withAlphaComponent(0.08)
button.setTitleColor(UIColor.brandMainColor, for: .normal)
button.layer.cornerRadius = 4
button.layer.borderWidth = 1
button.layer.borderColor = UIColor.brandMainColor.cgColor
button.isSelected = true
button.titleLabel?.font = UIFont.PFSC_M(ofSize: 14)
button.setTitle("下载", for: .normal)
button.addTarget(self, action: #selector(downLoadButtonClick), for: .touchUpInside)
button.titleLabel?.font = UIFont.PFSC_R(ofSize: 14)
button.setTitle("签署", for: .normal)
button.addTarget(self, action: #selector(editButtonClick), for: .touchUpInside)
return button
}()
addSubview(downLoadButton)
downLoadButton.snp.makeConstraints { make in
make.right.bottom.equalTo(-25)
make.height.equalTo(20)
make.width.equalTo(55)
centerView.addSubview(editButton)
editButton.snp.makeConstraints { make in
make.left.bottom.equalToSuperview()
make.top.equalTo(bottomView.snp.bottom)
make.width.equalTo(width)
}
lookButton = {
submitButton = {
let button = UIButton(type: .custom)
button.backgroundColor = UIColor.brandMainColor.withAlphaComponent(0.08)
button.setTitleColor(UIColor.brandMainColor, for: .selected)
button.setTitleColor(UIColor.mainTextColor, for: .normal)
button.layer.cornerRadius = 4
button.layer.borderWidth = 1
button.layer.borderColor = UIColor.brandMainColor.cgColor
button.titleLabel?.font = UIFont.PFSC_M(ofSize: 14)
button.isSelected = true
button.setTitleColor(UIColor.brandMainColor, for: .normal)
button.titleLabel?.font = UIFont.PFSC_R(ofSize: 14)
button.setTitle("查看", for: .normal)
button.addTarget(self, action: #selector(lookButtonClick), for: .touchUpInside)
button.addTarget(self, action: #selector(submitButtonClick), for: .touchUpInside)
return button
}()
addSubview(lookButton)
lookButton.snp.makeConstraints { make in
make.right.equalTo(downLoadButton.snp.left).offset(-6)
make.centerY.equalTo(downLoadButton.snp.centerY)
make.height.equalTo(20)
make.width.equalTo(55)
centerView.addSubview(submitButton)
submitButton.snp.makeConstraints { make in
make.bottom.equalToSuperview()
make.top.equalTo(bottomView.snp.bottom)
make.left.equalTo(width)
make.width.equalTo(width)
}
signButton = {
lookButton = {
let button = UIButton(type: .custom)
button.backgroundColor = UIColor.brandMainColor.withAlphaComponent(0.08)
button.setTitleColor(UIColor.brandMainColor, for: .selected)
button.setTitleColor(UIColor.mainTextColor, for: .normal)
button.layer.cornerRadius = 4
button.layer.borderWidth = 1
button.layer.borderColor = UIColor.brandMainColor.cgColor
button.isSelected = true
button.titleLabel?.font = UIFont.PFSC_M(ofSize: 14)
button.setTitle("签署", for: .normal)
button.addTarget(self, action: #selector(signButtonClick), for: .touchUpInside)
button.setTitleColor(UIColor.brandMainColor, for: .normal)
button.titleLabel?.font = UIFont.PFSC_R(ofSize: 14)
button.setTitle("下载", for: .normal)
button.addTarget(self, action: #selector(lookButtonClick), for: .touchUpInside)
return button
}()
addSubview(signButton)
signButton.snp.makeConstraints { make in
make.right.equalTo(lookButton.snp.left).offset(-6)
make.centerY.equalTo(lookButton.snp.centerY)
make.height.equalTo(20)
make.width.equalTo(55)
centerView.addSubview(lookButton)
lookButton.snp.makeConstraints { make in
make.right.bottom.equalToSuperview()
make.top.equalTo(bottomView.snp.bottom)
make.width.equalTo(width)
}
fileImageView = {
let view = UIImageView()
view.image = UIImage(named: "")
return view
}()
centerView.addSubview(fileImageView)
fileImageView.snp.makeConstraints { make in
make.left.equalTo(24)
make.centerY.equalToSuperview()
make.width.height.equalTo(31)
}
fileNameLabel = {
let label = UILabel()
label.font = UIFont.PFSC_M(ofSize: 14)
label.textColor = UIColor.mainTextColor
label.numberOfLines = 0
label.text = "雇主的推荐信(仅签字)华为科技有限公司.doc"
return label
}()
centerView.addSubview(fileNameLabel)
fileNameLabel.snp.makeConstraints { make in
make.right.equalTo(-18)
make.left.equalTo(67)
make.height.equalTo(40)
make.centerY.equalToSuperview()
}
}
func updateAllViews() {
guard let dataSource = dataSource else { return }
titleLabel.text = dataSource.doc_name
subTitleLabel.text = "\(dataSource.doc_type)"
let suffix = dataSource.doc_type_name.pathExtension.lowercased()
var iconImgName = "my_cer_type_word"
if suffix == "jpeg" {
iconImgName = "my_cer_type_jpg"
} else if suffix == "jpg" {
iconImgName = "my_cer_type_jpg"
} else if suffix == "png" {
iconImgName = "my_cer_type_png"
} else if suffix == "pdf" {
iconImgName = "my_cer_type_pdf"
} else if suffix == "doc" || suffix == "docx" {
iconImgName = "my_cer_type_word"
} else if suffix == "ppt" || suffix == "pptx" {
iconImgName = "my_cer_type_ppt"
}
fileImageView.image = UIImage(named: iconImgName)
fileNameLabel.text = dataSource.doc_type_name
}
@objc func downLoadButtonClick() {
@objc func editButtonClick() {
if let block = block {
block(.downLoad)
block(.sign)
}
}
@objc func lookButtonClick() {
if let block = block {
block(.look)
block(.downLoad)
}
}
@objc func signButtonClick() {
@objc func submitButtonClick() {
if let block = block {
block(.sign)
block(.look)
}
}
}
......
//
// YHSignatureUploadTableViewCell.swift
// galaxy
//
// Created by EDY on 2024/3/29.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHSignatureUploadTableViewCell: UITableViewCell {
typealias Block = (YHMyFileMethodType, Int) -> ()
var block: Block?
var centerView: UIView!
var titleLabel: UILabel!
var topLineView: UIView!
var promptLabel: UILabel!
var mainItemView: UIView!
var bottomView: YHWorkItemAddView!
var dataSource: YHMySignatureDetailModel? {
didSet {
updateAllViews()
}
}
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
required init?(coder: NSCoder) {
super.init(coder: coder)
}
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
selectionStyle = .none
setupUI()
}
func setupUI() {
let width = (KScreenWidth - 32)/3.0
backgroundColor = .clear
centerView = {
let view = UIView()
view.backgroundColor = .white
view.layer.cornerRadius = kCornerRadius6
return view
}()
contentView.addSubview(centerView)
centerView.snp.makeConstraints { make in
make.left.equalTo(16)
make.right.equalTo(-16)
make.top.equalTo(8)
make.bottom.equalTo(-8)
}
titleLabel = {
let label = UILabel()
label.font = UIFont.PFSC_M(ofSize: 17)
label.textColor = UIColor.mainTextColor
label.text = "上传已签章件"
return label
}()
centerView.addSubview(titleLabel)
titleLabel.snp.makeConstraints { make in
make.left.equalTo(18)
make.top.equalTo(16)
make.height.equalTo(24)
}
promptLabel = {
let label = UILabel()
label.font = UIFont.PFSC_R(ofSize: 12)
label.textColor = UIColor.labelTextColor2
label.numberOfLines = 0
label.text = "注意:1.支持PDF、JPEG、JPG、PNG、BMP、TIFF文件格式,文件大小不限制;2.上传成功后会自动更新文件名;3.最多上传10张图片或文件,若有问题可联系文案"
return label
}()
centerView.addSubview(promptLabel)
promptLabel.snp.makeConstraints { make in
make.right.equalTo(-16)
make.left.equalTo(16)
make.height.equalTo(60)
make.bottom.equalTo(-16)
}
bottomView = {
let view = YHWorkItemAddView()
view.addBtn.setTitle("上传已签章件".local, for: .normal)
view.clickBlock = {[weak self] in
guard let self = self else { return }
if let block = self.block {
block(.upload, 0)
}
}
return view
}()
centerView.addSubview(bottomView)
bottomView.snp.makeConstraints { make in
make.bottom.equalTo(-92)
make.left.equalTo(18)
make.right.equalTo(-18)
make.height.equalTo(45)
}
mainItemView = {
let view = UIView()
view.backgroundColor = .white
view.layer.cornerRadius = kCornerRadius6
return view
}()
centerView.addSubview(mainItemView)
mainItemView.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.bottom.equalTo(-153)
make.top.equalTo(52)
}
}
func updateAllViews() {
guard let dataSource = dataSource else { return }
mainItemView.removeSubviews()
var y = 0
for i in 0 ..< (dataSource.doc_return_manual.count) {
let line = UIView()
line.backgroundColor = UIColor.separatorColor
mainItemView.addSubview(line)
line.snp.makeConstraints { make in
make.left.equalTo(18)
make.top.equalTo(y)
make.height.equalTo(1)
make.right.equalTo(-18)
}
y = y + 1
let data = dataSource.doc_return_manual[i]
let h = 51
let itemView = YHFileItemView()
itemView.index = i
itemView.docType = dataSource.doc_type
itemView.dataSource = data
itemView.itemBlock = {[weak self] type, index in
guard let self = self else { return }
if let block = block {
block(type, index)
}
}
mainItemView.addSubview(itemView)
itemView.snp.makeConstraints { make in
make.left.equalTo(18)
make.top.equalTo(y)
make.height.equalTo(h)
make.right.equalTo(-18)
}
y = y + h
}
}
}
......@@ -106,7 +106,7 @@ class YHMySignatureDetailViewModel: YHBaseViewModel {
}
}
func requestSignatureLook(_ id: String, callBackBlock:@escaping (_ success: Bool?, _ error: YHErrorModel?)->()) {
func requestSignatureLook(_ id: String, callBackBlock:@escaping (_ success: Bool, _ error: YHErrorModel?)->()) {
let params: [String : Any] = ["id": id]
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Signature.look
let _ = YHNetRequest.getRequest(url: strUrl, params: params) { [weak self] json, code in
......@@ -114,11 +114,7 @@ class YHMySignatureDetailViewModel: YHBaseViewModel {
guard let self = self else { return }
if json.code == 200 {
let dic = json.data
guard let result = YHMySignatureURLModel.deserialize(from: dic as? Dictionary) else {
callBackBlock(false,nil)
return
}
self.pageUrl = result.url
self.pageUrl = json.data as? String
callBackBlock(true, nil)
} else {
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
......@@ -151,4 +147,48 @@ class YHMySignatureDetailViewModel: YHBaseViewModel {
callBackBlock(false, err)
}
}
func requestSignConfirm(_ id: String, callBackBlock:@escaping (_ success: Bool, _ error: YHErrorModel?)->()) {
// let params: [String : Any] = ["order_id": orderId]
let params: [String : Any] = ["id": id]
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Signature.confirm
let _ = YHNetRequest.postRequest(url: strUrl, params: params) { [weak self] json, code in
//1. json字符串 转 对象
guard let self = self else { return }
if json.code == 200 {
callBackBlock(true, nil)
} else {
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
callBackBlock(false, error)
}
} failBlock: { err in
callBackBlock(false, err)
}
}
func requestFileAction(_ id: String, _ type: Int, _ newArray: [String], _ oldUrl: String,callBackBlock:@escaping (_ success: Bool, _ error: YHErrorModel?)->()) {
let params: [String : Any] = ["id": id,
"op_type": type,
"new_url": newArray,
"old_url": oldUrl]
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Signature.upload
let _ = YHNetRequest.postRequest(url: strUrl, params: params) { [weak self] json, code in
//1. json字符串 转 对象
guard let self = self else { return }
if json.code == 200 {
let dic = json.data
// guard let result = YHMySignatureURLModel.deserialize(from: dic as? Dictionary) else {
// callBackBlock(false,nil)
// return
// }
// self.pageUrl = result.url
callBackBlock(true, nil)
} else {
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
callBackBlock(false, error)
}
} failBlock: { err in
callBackBlock(false, err)
}
}
}
......@@ -153,8 +153,8 @@ class YHStepView: UIScrollView {
@objc func buttonClick(_ button: UIButton) {
let tag = button.tag
if tag - 1000 <= maxIndex {
currentIndex = tag - 1000
if let block = block {
currentIndex = tag - 1000
block(currentIndex)
}
}
......
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