Commit 26ada3cd authored by Steven杜宇's avatar Steven杜宇

Merge branch 'develop' of http://gitlab.galaxy-immi.com/mobile-group/galaxy-iOS into develop

parents a2f46fd8 24b7ddd4
...@@ -588,6 +588,11 @@ ...@@ -588,6 +588,11 @@
04F2435F2C9D1C0600DF2C74 /* YHHKRecordsStayingPersonnelCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F2435E2C9D1C0600DF2C74 /* YHHKRecordsStayingPersonnelCell.swift */; }; 04F2435F2C9D1C0600DF2C74 /* YHHKRecordsStayingPersonnelCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F2435E2C9D1C0600DF2C74 /* YHHKRecordsStayingPersonnelCell.swift */; };
04F243612C9D488200DF2C74 /* YHHKRecordsPersonnelSelectCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F243602C9D488200DF2C74 /* YHHKRecordsPersonnelSelectCell.swift */; }; 04F243612C9D488200DF2C74 /* YHHKRecordsPersonnelSelectCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F243602C9D488200DF2C74 /* YHHKRecordsPersonnelSelectCell.swift */; };
04F243632C9D4C9700DF2C74 /* YHBaseCornerRadiusBorderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F243622C9D4C9700DF2C74 /* YHBaseCornerRadiusBorderView.swift */; }; 04F243632C9D4C9700DF2C74 /* YHBaseCornerRadiusBorderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F243622C9D4C9700DF2C74 /* YHBaseCornerRadiusBorderView.swift */; };
04F243662C9D5CB200DF2C74 /* YHResignDocumentViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F243652C9D5CB100DF2C74 /* YHResignDocumentViewModel.swift */; };
04F243682C9D670E00DF2C74 /* YHResignDocumentListModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F243672C9D670E00DF2C74 /* YHResignDocumentListModel.swift */; };
04F2436A2C9D7D6D00DF2C74 /* YHResignDocumentStage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F243692C9D7D6D00DF2C74 /* YHResignDocumentStage.swift */; };
04F2436C2C9D9A3A00DF2C74 /* YHResignDocumentCompleteModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F2436B2C9D9A3A00DF2C74 /* YHResignDocumentCompleteModel.swift */; };
04F2436E2C9E5D8D00DF2C74 /* YHResignDocumentSignatureModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F2436D2C9E5D8D00DF2C74 /* YHResignDocumentSignatureModel.swift */; };
04F316442C3568F000024164 /* YHAboutGalaxyViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F316432C3568F000024164 /* YHAboutGalaxyViewController.swift */; }; 04F316442C3568F000024164 /* YHAboutGalaxyViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F316432C3568F000024164 /* YHAboutGalaxyViewController.swift */; };
04F4B76B2BAA7E1E00D13284 /* YHCertificateTemplateSheetView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F4B76A2BAA7E1E00D13284 /* YHCertificateTemplateSheetView.swift */; }; 04F4B76B2BAA7E1E00D13284 /* YHCertificateTemplateSheetView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F4B76A2BAA7E1E00D13284 /* YHCertificateTemplateSheetView.swift */; };
04F5F86A2C1A95BB004A463C /* YHOtherServiceViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F5F8692C1A95BB004A463C /* YHOtherServiceViewController.swift */; }; 04F5F86A2C1A95BB004A463C /* YHOtherServiceViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F5F8692C1A95BB004A463C /* YHOtherServiceViewController.swift */; };
...@@ -1428,6 +1433,11 @@ ...@@ -1428,6 +1433,11 @@
04F2435E2C9D1C0600DF2C74 /* YHHKRecordsStayingPersonnelCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHKRecordsStayingPersonnelCell.swift; sourceTree = "<group>"; }; 04F2435E2C9D1C0600DF2C74 /* YHHKRecordsStayingPersonnelCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHKRecordsStayingPersonnelCell.swift; sourceTree = "<group>"; };
04F243602C9D488200DF2C74 /* YHHKRecordsPersonnelSelectCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHKRecordsPersonnelSelectCell.swift; sourceTree = "<group>"; }; 04F243602C9D488200DF2C74 /* YHHKRecordsPersonnelSelectCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHKRecordsPersonnelSelectCell.swift; sourceTree = "<group>"; };
04F243622C9D4C9700DF2C74 /* YHBaseCornerRadiusBorderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHBaseCornerRadiusBorderView.swift; sourceTree = "<group>"; }; 04F243622C9D4C9700DF2C74 /* YHBaseCornerRadiusBorderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHBaseCornerRadiusBorderView.swift; sourceTree = "<group>"; };
04F243652C9D5CB100DF2C74 /* YHResignDocumentViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHResignDocumentViewModel.swift; sourceTree = "<group>"; };
04F243672C9D670E00DF2C74 /* YHResignDocumentListModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHResignDocumentListModel.swift; sourceTree = "<group>"; };
04F243692C9D7D6D00DF2C74 /* YHResignDocumentStage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHResignDocumentStage.swift; sourceTree = "<group>"; };
04F2436B2C9D9A3A00DF2C74 /* YHResignDocumentCompleteModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHResignDocumentCompleteModel.swift; sourceTree = "<group>"; };
04F2436D2C9E5D8D00DF2C74 /* YHResignDocumentSignatureModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHResignDocumentSignatureModel.swift; sourceTree = "<group>"; };
04F316432C3568F000024164 /* YHAboutGalaxyViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHAboutGalaxyViewController.swift; sourceTree = "<group>"; }; 04F316432C3568F000024164 /* YHAboutGalaxyViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHAboutGalaxyViewController.swift; sourceTree = "<group>"; };
04F4B76A2BAA7E1E00D13284 /* YHCertificateTemplateSheetView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHCertificateTemplateSheetView.swift; sourceTree = "<group>"; }; 04F4B76A2BAA7E1E00D13284 /* YHCertificateTemplateSheetView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHCertificateTemplateSheetView.swift; sourceTree = "<group>"; };
04F5F8692C1A95BB004A463C /* YHOtherServiceViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHOtherServiceViewController.swift; sourceTree = "<group>"; }; 04F5F8692C1A95BB004A463C /* YHOtherServiceViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHOtherServiceViewController.swift; sourceTree = "<group>"; };
...@@ -1781,7 +1791,11 @@ ...@@ -1781,7 +1791,11 @@
041892232C91BCF100B9FB94 /* YHResignRoundCellType.swift */, 041892232C91BCF100B9FB94 /* YHResignRoundCellType.swift */,
04F243302C953A3A00DF2C74 /* YHResignDocumentType.swift */, 04F243302C953A3A00DF2C74 /* YHResignDocumentType.swift */,
041892292C91CB2500B9FB94 /* YHResignDocumentStatus.swift */, 041892292C91CB2500B9FB94 /* YHResignDocumentStatus.swift */,
04F243692C9D7D6D00DF2C74 /* YHResignDocumentStage.swift */,
042092B42C9D48FC001184F0 /* YHRealNameHelper.swift */, 042092B42C9D48FC001184F0 /* YHRealNameHelper.swift */,
04F243672C9D670E00DF2C74 /* YHResignDocumentListModel.swift */,
04F2436B2C9D9A3A00DF2C74 /* YHResignDocumentCompleteModel.swift */,
04F2436D2C9E5D8D00DF2C74 /* YHResignDocumentSignatureModel.swift */,
); );
path = M; path = M;
sourceTree = "<group>"; sourceTree = "<group>";
...@@ -3365,6 +3379,7 @@ ...@@ -3365,6 +3379,7 @@
04B4B8D82C9068F500ED82BC /* ResignDocumentManagement(续签文书管理) */ = { 04B4B8D82C9068F500ED82BC /* ResignDocumentManagement(续签文书管理) */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
04F243642C9D5C5900DF2C74 /* VM */,
041892222C91BCE500B9FB94 /* M */, 041892222C91BCE500B9FB94 /* M */,
04B4B8DA2C90693E00ED82BC /* C */, 04B4B8DA2C90693E00ED82BC /* C */,
04B4B8D92C90693700ED82BC /* V */, 04B4B8D92C90693700ED82BC /* V */,
...@@ -3567,6 +3582,14 @@ ...@@ -3567,6 +3582,14 @@
path = C; path = C;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
04F243642C9D5C5900DF2C74 /* VM */ = {
isa = PBXGroup;
children = (
04F243652C9D5CB100DF2C74 /* YHResignDocumentViewModel.swift */,
);
path = VM;
sourceTree = "<group>";
};
04F957492C2032A0003C631C /* V */ = { 04F957492C2032A0003C631C /* V */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
...@@ -4804,6 +4827,7 @@ ...@@ -4804,6 +4827,7 @@
045EEEC72B9F171A0022A143 /* YHOtherYesOrNoItemView.swift in Sources */, 045EEEC72B9F171A0022A143 /* YHOtherYesOrNoItemView.swift in Sources */,
A5FF0F3E2C32F2590069852B /* YHActivityDetailCell2.swift in Sources */, A5FF0F3E2C32F2590069852B /* YHActivityDetailCell2.swift in Sources */,
04256DD42C70538400A37BA4 /* YHFamilyInfoUpdateViewController.swift in Sources */, 04256DD42C70538400A37BA4 /* YHFamilyInfoUpdateViewController.swift in Sources */,
04F243682C9D670E00DF2C74 /* YHResignDocumentListModel.swift in Sources */,
04FD85702C21646200BEF9C5 /* YHMyInterestTopicCell.swift in Sources */, 04FD85702C21646200BEF9C5 /* YHMyInterestTopicCell.swift in Sources */,
04F243592C9C43A100DF2C74 /* YHHKRecordsEditButtonCell.swift in Sources */, 04F243592C9C43A100DF2C74 /* YHHKRecordsEditButtonCell.swift in Sources */,
A5CA3F542C744CAB00EB22F5 /* YHUploadCertificateDetailCell.swift in Sources */, A5CA3F542C744CAB00EB22F5 /* YHUploadCertificateDetailCell.swift in Sources */,
...@@ -4853,6 +4877,7 @@ ...@@ -4853,6 +4877,7 @@
04358E042C77322700811928 /* YHHaveGrabbedNumberListCell.swift in Sources */, 04358E042C77322700811928 /* YHHaveGrabbedNumberListCell.swift in Sources */,
04F243312C953A3A00DF2C74 /* YHResignDocumentType.swift in Sources */, 04F243312C953A3A00DF2C74 /* YHResignDocumentType.swift in Sources */,
0430E6922C7EF08B000511E2 /* YHAdopterOtherCardTableViewCell.swift in Sources */, 0430E6922C7EF08B000511E2 /* YHAdopterOtherCardTableViewCell.swift in Sources */,
04F2436C2C9D9A3A00DF2C74 /* YHResignDocumentCompleteModel.swift in Sources */,
044D0BF62C2154CA00C5CF5E /* YHAllowUseMyInfoViewController.swift in Sources */, 044D0BF62C2154CA00C5CF5E /* YHAllowUseMyInfoViewController.swift in Sources */,
0485DFE12C6A0B6200B50293 /* YHPrincipleApprovedResultVC.swift in Sources */, 0485DFE12C6A0B6200B50293 /* YHPrincipleApprovedResultVC.swift in Sources */,
04256DF42C73626900A37BA4 /* YHServiceSelectAlertView.swift in Sources */, 04256DF42C73626900A37BA4 /* YHServiceSelectAlertView.swift in Sources */,
...@@ -4989,6 +5014,7 @@ ...@@ -4989,6 +5014,7 @@
04256DE62C7310BE00A37BA4 /* YHSelectApplicantGroupCell.swift in Sources */, 04256DE62C7310BE00A37BA4 /* YHSelectApplicantGroupCell.swift in Sources */,
04CE1AE22C2AD91F001CB80A /* YHActivityApplyInfoItemView.swift in Sources */, 04CE1AE22C2AD91F001CB80A /* YHActivityApplyInfoItemView.swift in Sources */,
045EEEC52B9F171A0022A143 /* YHOtherPickerView.swift in Sources */, 045EEEC52B9F171A0022A143 /* YHOtherPickerView.swift in Sources */,
04F2436A2C9D7D6D00DF2C74 /* YHResignDocumentStage.swift in Sources */,
045EEE842B9F171A0022A143 /* YHPreviewBasiceInformationViewController.swift in Sources */, 045EEE842B9F171A0022A143 /* YHPreviewBasiceInformationViewController.swift in Sources */,
A5ACE9282B4564F7002C94D2 /* YHSmsCodeView.swift in Sources */, A5ACE9282B4564F7002C94D2 /* YHSmsCodeView.swift in Sources */,
0499E3002C056EE30037E646 /* YHOneKeyLoginView.swift in Sources */, 0499E3002C056EE30037E646 /* YHOneKeyLoginView.swift in Sources */,
...@@ -5032,6 +5058,7 @@ ...@@ -5032,6 +5058,7 @@
04A671602BA0280800C1FB91 /* YHFileRenameInputView.swift in Sources */, 04A671602BA0280800C1FB91 /* YHFileRenameInputView.swift in Sources */,
A5ACE93F2B4564F7002C94D2 /* UIViewController+Extension.swift in Sources */, A5ACE93F2B4564F7002C94D2 /* UIViewController+Extension.swift in Sources */,
A53B61192BB3C9960010B573 /* YHMyDocListHeaderView.swift in Sources */, A53B61192BB3C9960010B573 /* YHMyDocListHeaderView.swift in Sources */,
04F243662C9D5CB200DF2C74 /* YHResignDocumentViewModel.swift in Sources */,
A567E5B22BD7643D00D5D5A0 /* YHHomeBannerCollectionViewCell.swift in Sources */, A567E5B22BD7643D00D5D5A0 /* YHHomeBannerCollectionViewCell.swift in Sources */,
0430E68A2C77415D000511E2 /* YHAdopterAddModel.swift in Sources */, 0430E68A2C77415D000511E2 /* YHAdopterAddModel.swift in Sources */,
045EEF082B9F171A0022A143 /* YHBasicInfoCellModel.swift in Sources */, 045EEF082B9F171A0022A143 /* YHBasicInfoCellModel.swift in Sources */,
...@@ -5217,6 +5244,7 @@ ...@@ -5217,6 +5244,7 @@
A5ACE9492B4564F7002C94D2 /* YHHUDSuccessView.swift in Sources */, A5ACE9492B4564F7002C94D2 /* YHHUDSuccessView.swift in Sources */,
04B360EF2C620975001EB053 /* YHPrincipleUploadStatusCell.swift in Sources */, 04B360EF2C620975001EB053 /* YHPrincipleUploadStatusCell.swift in Sources */,
044EE2252C90138000A2FE3A /* YHServerCenterHoldViewController.swift in Sources */, 044EE2252C90138000A2FE3A /* YHServerCenterHoldViewController.swift in Sources */,
04F2436E2C9E5D8D00DF2C74 /* YHResignDocumentSignatureModel.swift in Sources */,
045EEE9C2B9F171A0022A143 /* YHCompanyViewModel.swift in Sources */, 045EEE9C2B9F171A0022A143 /* YHCompanyViewModel.swift in Sources */,
A58556BA2B6BCF1A003746B2 /* YHPersonInfoFillStepModel.swift in Sources */, A58556BA2B6BCF1A003746B2 /* YHPersonInfoFillStepModel.swift in Sources */,
045EEEC92B9F171A0022A143 /* YHOtherInfoSessionView.swift in Sources */, 045EEEC92B9F171A0022A143 /* YHOtherInfoSessionView.swift in Sources */,
......
...@@ -369,7 +369,8 @@ extension YHServiceOrderListView : UITableViewDelegate,UITableViewDataSource { ...@@ -369,7 +369,8 @@ extension YHServiceOrderListView : UITableViewDelegate,UITableViewDataSource {
} else if model.type == 32 { } else if model.type == 32 {
//续签文书管理 //续签文书管理
let vc = YHResignDocumentManagementVC(orderId: orderID, id: stepID)
UIViewController.current?.navigationController?.pushViewController(vc)
} }
} }
} }
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
// //
import UIKit import UIKit
import SafariServices
class YHResignDocumentDetailViewController: YHBaseViewController { class YHResignDocumentDetailViewController: YHBaseViewController {
...@@ -21,23 +22,15 @@ class YHResignDocumentDetailViewController: YHBaseViewController { ...@@ -21,23 +22,15 @@ class YHResignDocumentDetailViewController: YHBaseViewController {
case content(_ title: String, _ fileName: String, _ status: YHResignDocumentStatus, _ config: YHResignDocumentStatusCell.ButtonsConfig) case content(_ title: String, _ fileName: String, _ status: YHResignDocumentStatus, _ config: YHResignDocumentStatusCell.ButtonsConfig)
} }
private var datas: [[RowType]] { private var datas: [[RowType]] = []
let normalText = "请主申请人完成电子签字请您尽快核对信息,如信息有误,可进行在线编辑如信息无误," private lazy var viewModel = YHResignDocumentViewModel()
let attText = "请您在右下角的位置完成电子签字"
let attStr = NSMutableAttributedString(string: normalText + attText) private let docId: Int
attStr.setAttributes([.foregroundColor: UIColor.brandMainColor], range: NSRange(location: normalText.count, length: attText.count)) private var name: String
let config = getStatusButtonsConfig(docType: docType, status: status)
let firstSetcion: [RowType] = [.tips("​填写指引", attStr)]
let secondSetcion: [RowType] = [.content("文书稿件", "雇主的推荐信(仅签字)深圳华为科技有限公司.doc", .awaitingSignature, config)]
return [firstSetcion, secondSetcion]
}
private var docType: YHResignDocumentType init(_ docId: Int, _ name: String = "") {
private var status: YHResignDocumentStatus = .awaitingSignature self.docId = docId
init(_ docType: YHResignDocumentType, _ status: YHResignDocumentStatus) { self.name = name
self.docType = docType
self.status = status
super.init(nibName: nil, bundle: nil) super.init(nibName: nil, bundle: nil)
} }
...@@ -67,33 +60,18 @@ class YHResignDocumentDetailViewController: YHBaseViewController { ...@@ -67,33 +60,18 @@ class YHResignDocumentDetailViewController: YHBaseViewController {
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
setupUI() setupUI()
editEvent = {
print("###editEvent")
}
submitEvent = {
print("###submitEvent")
}
signatureConfirmationEvent = {
print("###signatureConfirmationEvent")
}
previewEvent = {
print("###previewEvent")
}
infoConfirmationEvent = {
print("###infoConfirmationEvent")
}
tableView.reloadData() tableView.reloadData()
} }
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
requestData()
}
} }
extension YHResignDocumentDetailViewController { extension YHResignDocumentDetailViewController {
private func setupUI() { private func setupUI() {
gk_navTitle = docType.title gk_navTitle = name
gk_navBarAlpha = 1.0 gk_navBarAlpha = 1.0
gk_navBackgroundColor = .white gk_navBackgroundColor = .white
...@@ -106,6 +84,29 @@ extension YHResignDocumentDetailViewController { ...@@ -106,6 +84,29 @@ extension YHResignDocumentDetailViewController {
make.bottom.equalToSuperview() make.bottom.equalToSuperview()
} }
} }
private func requestData() {
viewModel.getDocumentDetail(docId: docId) { [weak self] documentModel, error in
guard let documentModel = documentModel else {
printLog("YHResignDocumentDetailViewController: 请求失败")
return
}
guard let self = self else {
return
}
var firstSetcion: [RowType] = []
var secondSetcion: [RowType] = []
if let docType = YHResignDocumentType(rawValue: documentModel.docType), let status = YHResignDocumentStatus.getStatus(documentModel.docStatus) {
firstSetcion.append(.tips("​填写指引", docType.attributeInfo()))
let config = self.getStatusButtonsConfig(docType: docType, status: status, model: documentModel)
secondSetcion = [.content("文书稿件", self.name, status, config)]
datas.removeAll()
datas.append(firstSetcion)
datas.append(secondSetcion)
tableView.reloadData()
}
}
}
} }
extension YHResignDocumentDetailViewController: UITableViewDelegate, UITableViewDataSource { extension YHResignDocumentDetailViewController: UITableViewDelegate, UITableViewDataSource {
...@@ -155,16 +156,52 @@ extension YHResignDocumentDetailViewController: UITableViewDelegate, UITableView ...@@ -155,16 +156,52 @@ extension YHResignDocumentDetailViewController: UITableViewDelegate, UITableView
} }
extension YHResignDocumentDetailViewController { extension YHResignDocumentDetailViewController {
private func getStatusButtonsConfig(docType: YHResignDocumentType, status: YHResignDocumentStatus) -> YHResignDocumentStatusCell.ButtonsConfig { private func getStatusButtonsConfig(docType: YHResignDocumentType, status: YHResignDocumentStatus, model: YHResignDocumentCompleteModel) -> YHResignDocumentStatusCell.ButtonsConfig {
var config = YHResignDocumentStatusCell.ButtonsConfig() var config = YHResignDocumentStatusCell.ButtonsConfig()
/*
private var editEvent: (() -> Void)?
private var submitEvent: (() -> Void)?
private var signatureConfirmationEvent: (() -> Void)?
private var previewEvent: (() -> Void)?
private var infoConfirmationEvent: (() -> Void)?
*/
var actions: [(() -> Void)] = [] var actions: [(() -> Void)] = []
editEvent = { [weak self] in
guard model.link.count > 0, let url = URL(string: model.link) else {
return
}
let safariViewController = SFSafariViewController(url: url)
safariViewController.dismissButtonStyle = .close
safariViewController.modalPresentationStyle = .fullScreen
self?.present(safariViewController, animated: true, completion: nil)
printLog("###editEvent")
}
submitEvent = {
printLog("###submitEvent")
}
signatureConfirmationEvent = { [weak self] in
guard let self = self else {
return
}
self.viewModel.resginDocumentSignature(model.docId, nil) { [weak self] signatureModel, error in
guard let self = self else {
return
}
guard let signatureModel = signatureModel else {
if let error = error {
printLog("###续期文书签字: \(error.errorMsg)")
}
return
}
let url = signatureModel.url
// 跳签字
}
}
previewEvent = {
printLog("###previewEvent")
}
infoConfirmationEvent = {
printLog("###infoConfirmationEvent")
}
switch docType { switch docType {
case .powerOfAttorney, .settlementPlan, .explanatoryStatement: case .powerOfAttorney, .settlementPlan, .explanatoryStatement:
switch status { switch status {
...@@ -220,3 +257,34 @@ extension YHResignDocumentDetailViewController { ...@@ -220,3 +257,34 @@ extension YHResignDocumentDetailViewController {
return config return config
} }
} }
private extension YHResignDocumentType {
func attributeInfo() -> NSAttributedString {
switch self {
case .powerOfAttorney:
let normalText = "请主申请人完成电子签字请您尽快核对信息,如信息有误,可进行在线编辑如信息无误,"
let attText = "请您在右下角的位置完成电子签字"
let attStr = NSMutableAttributedString(string: normalText + attText)
attStr.setAttributes([.foregroundColor: UIColor.brandMainColor], range: NSRange(location: normalText.count, length: attText.count))
return attStr
case .qmasDoc:
let normalText = "请主申请人勾选信息并完成电子签字此文件需在申请续签时提交给港府请您尽快进行对应问题的勾选,填写完整邮箱、电话号码(内地电话号码或香港电话号码)、日期(填写当下日期即可)"
let attText = "申请人姓名需要进行电子签字"
let attStr = NSMutableAttributedString(string: normalText + attText)
attStr.setAttributes([.foregroundColor: UIColor.brandMainColor], range: NSRange(location: normalText.count, length: attText.count))
return attStr
case .settlementPlan:
let normalText = "请主申请人完成电子签字请您审阅赴港定居计划文书内容,如需调整和补充内容,请在线上进行编辑,我们将根据您的修改及反馈对文书进行调整如您对《定居计划书》无其他补充建议,"
let attText = "请您在文书尾部进行电子签字"
let attStr = NSMutableAttributedString(string: normalText + attText)
attStr.setAttributes([.foregroundColor: UIColor.brandMainColor], range: NSRange(location: normalText.count, length: attText.count))
return attStr
case .explanatoryStatement:
let normalText = "请主申请人完成电子签字请您审阅文书中的相关解释说明,如需调整和补充,请在线上进行编辑,我们将根据您的修改及反馈对文书进行调整如您对《解释说明书》无其他补充建议,"
let attText = "请您在文书尾部进行电子签字"
let attStr = NSMutableAttributedString(string: normalText + attText)
attStr.setAttributes([.foregroundColor: UIColor.brandMainColor], range: NSRange(location: normalText.count, length: attText.count))
return attStr
}
}
}
...@@ -12,15 +12,9 @@ class YHResignDocumentManagementVC: YHBaseViewController { ...@@ -12,15 +12,9 @@ class YHResignDocumentManagementVC: YHBaseViewController {
enum RowType { enum RowType {
case header(_ title: String, _ detail: String) case header(_ title: String, _ detail: String)
case content(_ title: String, _ status: YHResignDocumentStatus) case content(_ title: String, _ status: YHResignDocumentStatus, _ docId: Int)
}
private var datas: [[RowType]] {
let firstSetcion: [RowType] = [.header("​续期递交文书", "(王虎、百里)"), .content("QMAS文件", .awaitingSignature), .content("解释说明", .pendingConfirmation)]
let secondSetcion: [RowType] = [.header("​补件递交文书", "(王虎来、百里电、汉寒、王全新...)"), .content("QMAS文件", .finalizing), .content("解释说明", .underReview)]
let thirdSetcion: [RowType] = [.header("​​拒签递交文书", "(王虎、百里)"), .content("QMAS文件", .awaitingSignature), .content("解释说明", .completed)]
return [firstSetcion, secondSetcion, thirdSetcion]
} }
private var datas: [[RowType]] = []
private lazy var tableView: UITableView = { private lazy var tableView: UITableView = {
let view = UITableView(frame:.zero, style:.grouped) let view = UITableView(frame:.zero, style:.grouped)
...@@ -40,10 +34,31 @@ class YHResignDocumentManagementVC: YHBaseViewController { ...@@ -40,10 +34,31 @@ class YHResignDocumentManagementVC: YHBaseViewController {
view.register(YHResignDocumentContentCell.self, forCellReuseIdentifier: YHResignDocumentContentCell.cellReuseIdentifier) view.register(YHResignDocumentContentCell.self, forCellReuseIdentifier: YHResignDocumentContentCell.cellReuseIdentifier)
return view return view
}() }()
private lazy var viewModel = YHResignDocumentViewModel()
private let orderId: Int
private var id: Int = 0
init(orderId: Int, id: Int = 0) {
self.orderId = orderId
self.id = id
super.init(nibName: nil, bundle: nil)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
setupUI() setupUI()
requestData()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
requestData()
} }
} }
...@@ -64,6 +79,39 @@ extension YHResignDocumentManagementVC { ...@@ -64,6 +79,39 @@ extension YHResignDocumentManagementVC {
} }
} }
extension YHResignDocumentManagementVC {
private func requestData() {
viewModel.getDocumentList(orderId: orderId, id: id) { [weak self] success, error in
if success {
self?.updateVC()
} else {
printLog("YHResignDocumentManagementVC: 请求失败")
}
}
}
private func updateVC() {
guard viewModel.documentList.data.count > 0 else {
return
}
let list = viewModel.documentList.data
datas = list.compactMap ({ documentModel in
guard let state = YHResignDocumentStage(rawValue: documentModel.stage) else {
return []
}
var section: [RowType] = [.header(state.title(), "(\(documentModel.applyName))")]
documentModel.docs.forEach { detailModel in
if let docType = YHResignDocumentType(rawValue: detailModel.docType), let status = YHResignDocumentStatus.getStatus(detailModel.docStatus) {
let row = RowType.content(docType.title, status, detailModel.id)
section.append(row)
}
}
return section
})
tableView.reloadData()
}
}
extension YHResignDocumentManagementVC: UITableViewDelegate, UITableViewDataSource { extension YHResignDocumentManagementVC: UITableViewDelegate, UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int { func numberOfSections(in tableView: UITableView) -> Int {
datas.count datas.count
...@@ -103,7 +151,7 @@ extension YHResignDocumentManagementVC: UITableViewDelegate, UITableViewDataSour ...@@ -103,7 +151,7 @@ extension YHResignDocumentManagementVC: UITableViewDelegate, UITableViewDataSour
cell.setupCellInfo(title: title, detail: detail, cellType: cellType) cell.setupCellInfo(title: title, detail: detail, cellType: cellType)
return cell return cell
} }
case let .content(title, status): case let .content(title, status, _):
if let cell = tableView.dequeueReusableCell(withIdentifier: YHResignDocumentContentCell.cellReuseIdentifier) as? YHResignDocumentContentCell { if let cell = tableView.dequeueReusableCell(withIdentifier: YHResignDocumentContentCell.cellReuseIdentifier) as? YHResignDocumentContentCell {
cell.setupCellInfo(title: title, cellType: cellType, status: status) cell.setupCellInfo(title: title, cellType: cellType, status: status)
return cell return cell
...@@ -125,8 +173,8 @@ extension YHResignDocumentManagementVC: UITableViewDelegate, UITableViewDataSour ...@@ -125,8 +173,8 @@ extension YHResignDocumentManagementVC: UITableViewDelegate, UITableViewDataSour
switch item { switch item {
case .header: case .header:
return return
case let .content(title, status): case let .content(title, status, docId):
let controller = YHResignDocumentDetailViewController(.explanatoryStatement, status) let controller = YHResignDocumentDetailViewController(docId, title)
navigationController?.pushViewController(controller) navigationController?.pushViewController(controller)
} }
} }
......
//
// YHResignDocumentCompleteModel.swift
// galaxy
//
// Created by alexzzw on 2024/9/20.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import Foundation
import SmartCodable
class YHResignDocumentCompleteModel: SmartCodable {
var docId: Int = 0
var docType: Int = 0
var docStatus: Int = 0
var link: String = ""
var signFileOrigin: String = ""
var signedDocument: [YHResignSignedDocumentModel] = []
required init() {
}
}
class YHResignSignedDocumentModel: SmartCodable {
var fileName: String = ""
var fileUrl: String = ""
var timestamp: String = ""
var url: String = ""
required init() {
}
}
//
// YHResignDocumentListModel.swift
// galaxy
//
// Created by alexzzw on 2024/9/20.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import Foundation
import SmartCodable
class YHResignDocumentListModel: SmartCodable {
var data: [YHResignDocumentModel] = []
required init() {
}
}
class YHResignDocumentModel: SmartCodable {
var stage: Int = 0
var applyName: String = ""
var status: Int = 0
var docs: [YHResignDocumentDetailModel] = []
required init() {
}
}
class YHResignDocumentDetailModel: SmartCodable {
var id: Int = 0
var docType: Int = 0
var docStatus: Int = 0
required init() {
}
}
//
// YHResignDocumentSignatureModel.swift
// galaxy
//
// Created by alexzzw on 2024/9/21.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import Foundation
import SmartCodable
class YHResignDocumentSignatureModel: SmartCodable {
var url: String = ""
var psnId: String = ""
var flowId: String = ""
required init() {
}
}
//
// YHResignDocumentStage.swift
// galaxy
//
// Created by alexzzw on 2024/9/20.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import Foundation
// 1-首次递交;2-补件递交;3-拒签递交
enum YHResignDocumentStage: Int {
case initialSubmission = 1
case supplementarySubmission = 2
case resubmissionAfterRejection = 3
func title() -> String {
switch self {
case .initialSubmission:
return "​续期递交文书"
case .supplementarySubmission:
return "​补件递交文书"
case .resubmissionAfterRejection:
return "​拒签递交文书"
}
}
}
...@@ -8,12 +8,42 @@ ...@@ -8,12 +8,42 @@
import Foundation import Foundation
enum YHResignDocumentStatus: Int { /*
case pendingConfirmation = 0 文书状态:0-待生成;1-初始化生成中;2-初始化已生成;3-等待初审;4-初审驳回;5-客户首次确认中;6-客户编辑确认;7-再次待审核;8-再次审核驳回;9-客户再次确认中;10-客户已签字确认;11-管理员编辑待提交;12-已定稿; 13-客户上传待确认
case finalizing = 1 0-4的状态码没有,从5开始,固定0-12
case underReview = 2 5-客户首次确认中; 待确认
case awaitingSignature = 3 6-客户编辑确认; 待审核
case completed = 4 7-再次待审核; 待审核
8-再次审核驳回; 待审核
9-客户再次确认中 待签字
10-客户已签字确认 定稿中
11-已定稿 已完成
12 已完成
*/
enum YHResignDocumentStatus {
case pendingConfirmation
case finalizing
case underReview
case awaitingSignature
case completed
static func getStatus(_ number: Int) -> YHResignDocumentStatus? {
switch number {
case 0 ... 5:
return .pendingConfirmation
case 6 ... 8:
return .underReview
case 9:
return .awaitingSignature
case 10:
return .finalizing
case 11 ... 12:
return .completed
default:
return nil
}
}
func title() -> String { func title() -> String {
switch self { switch self {
......
...@@ -8,12 +8,11 @@ ...@@ -8,12 +8,11 @@
import Foundation import Foundation
enum YHResignDocumentType { enum YHResignDocumentType: Int {
case powerOfAttorney case powerOfAttorney = 1
case settlementPlan case qmasDoc = 2
case explanatoryStatement case settlementPlan = 3
// qualityMigrantAdmissionScheme case explanatoryStatement = 4
case qmasDoc
var title: String { var title: String {
switch self { switch self {
......
...@@ -29,6 +29,13 @@ class YHResignDocumentContentCell: YHResignDocumentCell { ...@@ -29,6 +29,13 @@ class YHResignDocumentContentCell: YHResignDocumentCell {
let view = UIImageView() let view = UIImageView()
return view return view
}() }()
private lazy var bottomLineView: UIView = {
let view = UIView()
view.backgroundColor = .separatorColor
view.isHidden = true
return view
}()
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier) super.init(style: style, reuseIdentifier: reuseIdentifier)
...@@ -44,9 +51,9 @@ class YHResignDocumentContentCell: YHResignDocumentCell { ...@@ -44,9 +51,9 @@ class YHResignDocumentContentCell: YHResignDocumentCell {
infoDetailLabel.text = status.title() infoDetailLabel.text = status.title()
infoDetailLabel.textColor = status.textColor() infoDetailLabel.textColor = status.textColor()
rightIconView.image = UIImage(named: status.iconName()) rightIconView.image = UIImage(named: status.iconName())
bottomLineView.isHidden = (cellType == .bottom)
updateCellCorner(cellType) updateCellCorner(cellType)
} }
} }
extension YHResignDocumentContentCell { extension YHResignDocumentContentCell {
...@@ -55,11 +62,18 @@ extension YHResignDocumentContentCell { ...@@ -55,11 +62,18 @@ extension YHResignDocumentContentCell {
subContainerView.addSubview(infoTitleLabel) subContainerView.addSubview(infoTitleLabel)
subContainerView.addSubview(infoDetailLabel) subContainerView.addSubview(infoDetailLabel)
subContainerView.addSubview(rightIconView) subContainerView.addSubview(rightIconView)
subContainerView.addSubview(bottomLineView)
infoTitleLabel.setContentCompressionResistancePriority(.required, for: .horizontal) infoTitleLabel.setContentCompressionResistancePriority(.required, for: .horizontal)
infoDetailLabel.setContentCompressionResistancePriority(.defaultLow, for: .horizontal) infoDetailLabel.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
rightIconView.setContentCompressionResistancePriority(.required, for: .horizontal) rightIconView.setContentCompressionResistancePriority(.required, for: .horizontal)
bottomLineView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(18)
make.right.equalToSuperview().offset(-18)
make.bottom.equalToSuperview()
make.height.equalTo(1)
}
infoTitleLabel.snp.makeConstraints { make in infoTitleLabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(18) make.left.equalToSuperview().offset(18)
make.centerY.equalToSuperview() make.centerY.equalToSuperview()
......
...@@ -24,6 +24,12 @@ class YHResignDocumentHeaderCell: YHResignDocumentCell { ...@@ -24,6 +24,12 @@ class YHResignDocumentHeaderCell: YHResignDocumentCell {
label.font = .PFSC_R(ofSize: 13) label.font = .PFSC_R(ofSize: 13)
return label return label
}() }()
private lazy var bottomLineView: UIView = {
let view = UIView()
view.backgroundColor = .separatorColor
return view
}()
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier) super.init(style: style, reuseIdentifier: reuseIdentifier)
...@@ -47,9 +53,17 @@ extension YHResignDocumentHeaderCell { ...@@ -47,9 +53,17 @@ extension YHResignDocumentHeaderCell {
private func setupUI() { private func setupUI() {
subContainerView.addSubview(infoTitleLabel) subContainerView.addSubview(infoTitleLabel)
subContainerView.addSubview(infoDetailLabel) subContainerView.addSubview(infoDetailLabel)
subContainerView.addSubview(bottomLineView)
infoTitleLabel.setContentCompressionResistancePriority(.required, for: .horizontal) infoTitleLabel.setContentCompressionResistancePriority(.required, for: .horizontal)
infoDetailLabel.setContentCompressionResistancePriority(.defaultLow, for: .horizontal) infoDetailLabel.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
bottomLineView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(18)
make.right.equalToSuperview().offset(-18)
make.bottom.equalToSuperview()
make.height.equalTo(1)
}
infoTitleLabel.snp.makeConstraints { make in infoTitleLabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(18) make.left.equalToSuperview().offset(18)
make.centerY.equalToSuperview() make.centerY.equalToSuperview()
......
...@@ -53,6 +53,7 @@ class YHResignDocumentStatusCell: YHResignDocumentCell { ...@@ -53,6 +53,7 @@ class YHResignDocumentStatusCell: YHResignDocumentCell {
private lazy var fileIconView: UIImageView = { private lazy var fileIconView: UIImageView = {
let view = UIImageView() let view = UIImageView()
view.image = UIImage(named: "resign_doc_file_icon")
return view return view
}() }()
...@@ -131,7 +132,7 @@ class YHResignDocumentStatusCell: YHResignDocumentCell { ...@@ -131,7 +132,7 @@ class YHResignDocumentStatusCell: YHResignDocumentCell {
infoStatusLabel.textColor = status.textColor() infoStatusLabel.textColor = status.textColor()
infoStatusLabel.backgroundColor = status.statusLabelBgColor() infoStatusLabel.backgroundColor = status.statusLabelBgColor()
fileNameLabel.text = fileName fileNameLabel.text = fileName
updateFileIcon(fileName) //updateFileIcon(fileName)
updateButtons(buttonsConfig) updateButtons(buttonsConfig)
} }
} }
......
//
// YHResignDocumentViewModel.swift
// galaxy
//
// Created by alexzzw on 2024/9/20.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHResignDocumentViewModel: YHBaseViewModel {
var documentList: YHResignDocumentListModel = YHResignDocumentListModel()
func getDocumentList(orderId: Int, id: Int, callback: @escaping (_ success: Bool, _ error: YHErrorModel?) -> ()) {
let params = ["order_id": orderId, "id": id]
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.ResignDocument.resignDocumentList
let _ = YHNetRequest.getRequest(url: strUrl,params: params) { [weak self] json, code in
//1. json字符串 转 对象
guard let self = self else { return }
printLog("model 是 ==> \(json)")
if json.code == 200 {
guard let dic = json.data?.peel as? [String : Any], let resultModel = YHResignDocumentListModel.deserialize(from: dic) else {
let err = YHErrorModel(errorCode: YHErrorCode.dictParseError.rawValue, errorMsg: YHErrorCode.dictParseError.description())
callback(false, err)
return
}
self.documentList = resultModel
callback(true, nil)
} else {
let err = YHErrorModel(errorCode: Int32(json.code), errorMsg: json.msg.isEmpty ? "" : json.msg)
callback(false, err)
}
} failBlock: { err in
callback(false, err)
}
}
func getDocumentDetail(docId: Int, callback: @escaping (_ documentModel: YHResignDocumentCompleteModel?, _ error: YHErrorModel?) -> ()) {
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.ResignDocument.resginDocumentDetail + "/\(docId)"
let _ = YHNetRequest.getRequest(url: strUrl, params: [:]) { json, code in
//1. json字符串 转 对象
printLog("model 是 ==> \(json)")
if json.code == 200 {
guard let dic = json.data?.peel as? [String : Any], let resultModel = YHResignDocumentCompleteModel.deserialize(from: dic) else {
let err = YHErrorModel(errorCode: YHErrorCode.dictParseError.rawValue, errorMsg: YHErrorCode.dictParseError.description())
callback(nil, err)
return
}
callback(resultModel, nil)
} else {
let err = YHErrorModel(errorCode: Int32(json.code), errorMsg: json.msg.isEmpty ? "" : json.msg)
callback(nil, err)
}
} failBlock: { err in
callback(nil, err)
}
}
func resginDocumentSignature(_ docId: Int, _ userMobile: String?, callBackBlock: @escaping (_ signatureModel: YHResignDocumentSignatureModel?, _ error:YHErrorModel?) -> () ) {
var params: [String : Any] = ["docId": docId]
if let userMobile = userMobile {
params["userMobile"] = userMobile
}
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.ResignDocument.resginDocumentSignature
let _ = YHNetRequest.postRequest(url: strUrl, params: params) { json, code in
//1. json字符串 转 对象
printLog("model 是 ==> \(json)")
if json.code == 200 {
guard let dic = json.data?.peel as? [String : Any], let resultModel = YHResignDocumentSignatureModel.deserialize(from: dic) else {
let err = YHErrorModel(errorCode: YHErrorCode.dictParseError.rawValue, errorMsg: YHErrorCode.dictParseError.description())
callBackBlock(nil, err)
return
}
callBackBlock(resultModel, nil)
} else {
let err = YHErrorModel(errorCode: Int32(json.code), errorMsg: json.msg.isEmpty ? "" : json.msg)
callBackBlock(nil, err)
}
} failBlock: { err in
callBackBlock(nil, err)
}
}
}
...@@ -526,14 +526,12 @@ extension YHMessageDetailListVC: UITableViewDelegate, UITableViewDataSource { ...@@ -526,14 +526,12 @@ extension YHMessageDetailListVC: UITableViewDelegate, UITableViewDataSource {
vc.orderId = orderId vc.orderId = orderId
navigationController?.pushViewController(vc) navigationController?.pushViewController(vc)
} }
} else if msg.redirectPage == YHRedirectPage.uploadPassCertificate.rawValue { // 上传过关证件 } else if msg.redirectPage == YHRedirectPage.uploadPassCertificate.rawValue { // 上传过关证件
if let orderId = Int(msg.orderId) { if let orderId = Int(msg.orderId) {
let vc = YHUploadCertificateVC() let vc = YHUploadCertificateVC()
vc.orderId = orderId vc.orderId = orderId
navigationController?.pushViewController(vc) navigationController?.pushViewController(vc)
} }
} else if msg.redirectPage == YHRedirectPage.principalApprovalSuccess.rawValue { // 原则批获批成功 } else if msg.redirectPage == YHRedirectPage.principalApprovalSuccess.rawValue { // 原则批获批成功
if let orderId = Int(msg.orderId) { if let orderId = Int(msg.orderId) {
let vc = YHPrincipleApprovedWaitSubmitVC() let vc = YHPrincipleApprovedWaitSubmitVC()
...@@ -567,9 +565,10 @@ extension YHMessageDetailListVC: UITableViewDelegate, UITableViewDataSource { ...@@ -567,9 +565,10 @@ extension YHMessageDetailListVC: UITableViewDelegate, UITableViewDataSource {
} }
} else if msg.redirectPage == YHRedirectPage.renewalDocument.rawValue { // 续签文书管理 } else if msg.redirectPage == YHRedirectPage.renewalDocument.rawValue { // 续签文书管理
let vc = YHResignDocumentManagementVC() if let orderId = Int(msg.orderId) {
navigationController?.pushViewController(vc) let vc = YHResignDocumentManagementVC(orderId: orderId, id: 0)
navigationController?.pushViewController(vc)
}
} }
} }
......
...@@ -531,4 +531,18 @@ class YHAllApiName { ...@@ -531,4 +531,18 @@ class YHAllApiName {
static let update = "super-app/certificate/update" static let update = "super-app/certificate/update"
static let detail = "infoflow/article/detail" static let detail = "infoflow/article/detail"
} }
// 续签文书
struct ResignDocument {
// 续期文书列表
static let resignDocumentList = "super-app/renewal/doc/list"
// 续期文书详情
static let resginDocumentDetail = "super-app/renewal/doc/detail"
// 提交文书
static let submitResginDocument = "super-app/renewal/doc/submit"
// 续期文书签字
static let resginDocumentSignature = "super-app/renewal/signature"
// 预览签字文档
static let previewResginDocument = "super-app/renewal/views"
}
} }
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "resign_doc_file_icon@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "resign_doc_file_icon@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
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