Commit 1a0eab11 authored by David黄金龙's avatar David黄金龙

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

* 'develop' of http://gitlab.galaxy-immi.com/mobile-group/galaxy-iOS:
  //  家庭
  //  预约
  //  家庭
  //  家庭信息确认
  //  家庭成员
  // 预约接口
parents ca4f1745 82f61ec5
......@@ -72,6 +72,8 @@
04256E172C75BD2700A37BA4 /* YHVisaPaymentTipsCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04256E0A2C75BD2400A37BA4 /* YHVisaPaymentTipsCell.swift */; };
04256E182C75BD2700A37BA4 /* YHVisaPayTypeCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04256E0B2C75BD2400A37BA4 /* YHVisaPayTypeCell.swift */; };
04256E192C75BD2700A37BA4 /* YHUploadCertificateViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04256E0D2C75BD2400A37BA4 /* YHUploadCertificateViewModel.swift */; };
04256E1B2C75C60C00A37BA4 /* YHHKMemberModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04256E1A2C75C60C00A37BA4 /* YHHKMemberModel.swift */; };
04256E1D2C75C74200A37BA4 /* YHAppointHKResultModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04256E1C2C75C74200A37BA4 /* YHAppointHKResultModel.swift */; };
0425E63D2BA9345200A5E763 /* YHSchemeTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0425E63C2BA9345200A5E763 /* YHSchemeTableViewCell.swift */; };
0425E6402BA9357D00A5E763 /* YHScemeItemModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0425E63F2BA9357D00A5E763 /* YHScemeItemModel.swift */; };
0425E6422BA95B1B00A5E763 /* YHSchemeTableFooterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0425E6412BA95B1B00A5E763 /* YHSchemeTableFooterView.swift */; };
......@@ -797,6 +799,8 @@
04256E0A2C75BD2400A37BA4 /* YHVisaPaymentTipsCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YHVisaPaymentTipsCell.swift; sourceTree = "<group>"; };
04256E0B2C75BD2400A37BA4 /* YHVisaPayTypeCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YHVisaPayTypeCell.swift; sourceTree = "<group>"; };
04256E0D2C75BD2400A37BA4 /* YHUploadCertificateViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YHUploadCertificateViewModel.swift; sourceTree = "<group>"; };
04256E1A2C75C60C00A37BA4 /* YHHKMemberModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHKMemberModel.swift; sourceTree = "<group>"; };
04256E1C2C75C74200A37BA4 /* YHAppointHKResultModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHAppointHKResultModel.swift; sourceTree = "<group>"; };
0425E63C2BA9345200A5E763 /* YHSchemeTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHSchemeTableViewCell.swift; sourceTree = "<group>"; };
0425E63F2BA9357D00A5E763 /* YHScemeItemModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHScemeItemModel.swift; sourceTree = "<group>"; };
0425E6412BA95B1B00A5E763 /* YHSchemeTableFooterView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHSchemeTableFooterView.swift; sourceTree = "<group>"; };
......@@ -1598,6 +1602,8 @@
04256DD92C72D9F800A37BA4 /* M */ = {
isa = PBXGroup;
children = (
04256E1A2C75C60C00A37BA4 /* YHHKMemberModel.swift */,
04256E1C2C75C74200A37BA4 /* YHAppointHKResultModel.swift */,
);
path = M;
sourceTree = "<group>";
......@@ -4364,6 +4370,7 @@
0430E6682C749128000511E2 /* YHAdopterChinaViewController.swift in Sources */,
045EEE9F2B9F171A0022A143 /* YHWorkExperienceModel.swift in Sources */,
A5FF0F3C2C32F2460069852B /* YHActivityDetailCell1.swift in Sources */,
04256E1B2C75C60C00A37BA4 /* YHHKMemberModel.swift in Sources */,
045EEF232B9F171A0022A143 /* YHItemView.swift in Sources */,
04256E192C75BD2700A37BA4 /* YHUploadCertificateViewModel.swift in Sources */,
04754A952B96FF3D00F8ADCA /* UITextField+Extension.swift in Sources */,
......@@ -4390,6 +4397,7 @@
044413FF2BC391F000784A14 /* YHServiceListViewController.swift in Sources */,
0493B3DC2BA7EFE600AF9393 /* YHCertificateSearchViewController.swift in Sources */,
0430E65A2C7436CD000511E2 /* YHAdopterNewPeopleViewModel.swift in Sources */,
04256E1D2C75C74200A37BA4 /* YHAppointHKResultModel.swift in Sources */,
04CE1ADB2C2AD91F001CB80A /* YHActivityTitleItemView.swift in Sources */,
A5FD63BF2B6250BC00D1D9DA /* YHInformationPerfectCell.swift in Sources */,
045EEE942B9F171A0022A143 /* YHPreviewInfoQuestionAndAnswerItemView.swift in Sources */,
......
......@@ -10,9 +10,11 @@ import UIKit
class YHCertificateAppointViewController: YHBaseViewController {
var orderId: Int = 0
var items = ["", "", ""]
let viewModel = YHCerAppointViewModel()
var isNeedGoHK: Int = 3 // 0不需要 1需要赴港 2没有选择
lazy var tableView: UITableView = {
let tableView = UITableView(frame:.zero, style:.grouped)
tableView.estimatedSectionHeaderHeight = 16.0
......@@ -49,6 +51,12 @@ class YHCertificateAppointViewController: YHBaseViewController {
make.top.equalTo(k_Height_NavigationtBarAndStatuBar)
}
}
func requetIsGoToHK() {
viewModel.getIsNeedGoToHK(orderId: orderId) { needGoHK in
}
}
}
extension YHCertificateAppointViewController: UITableViewDelegate, UITableViewDataSource {
......
//
// YHAppointHKResultModel.swift
// galaxy
//
// Created by edy on 2024/8/21.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import SmartCodable
class YHAppointHKResultModel: SmartCodable {
var waiting: [YHAppointMemberGroupModel] = []
var success: [YHAppointMemberGroupModel] = []
enum CodingKeys: String, CodingKey {
case waiting = "waiting"
case success = "success"
}
required init() {
}
init(waiting: [YHAppointMemberGroupModel], success: [YHAppointMemberGroupModel]) {
self.waiting = waiting
self.success = success
}
}
class YHAppointMemberGroupModel: SmartCodable {
var id: Int = 0
var orderid: Int = 0
var userList: [YHAppointMemberModel] = []
var wantMinTime: String = ""
var wantMaxTime: String = ""
var wantImmigrationOffice: String = ""
var goTime: String = ""
var receipts: [String] = []
var submitTime: String = ""
enum CodingKeys: String, CodingKey {
case id = "id"
case orderid = "order_id"
case userList = "user_list"
case wantMinTime = "want_min_time"
case wantMaxTime = "want_max_time"
case wantImmigrationOffice = "want_immigration_office"
case goTime = "go_time"
case receipts = "receipts"
case submitTime = "submit_time"
}
required init() {
}
init(id: Int, orderid: Int, userList: [YHAppointMemberModel], wantMinTime: String, wantMaxTime: String, wantImmigrationOffice: String, goTime: String, receipts: [String], submitTime: String) {
self.id = id
self.orderid = orderid
self.userList = userList
self.wantMinTime = wantMinTime
self.wantMaxTime = wantMaxTime
self.wantImmigrationOffice = wantImmigrationOffice
self.goTime = goTime
self.receipts = receipts
self.submitTime = submitTime
}
}
// MARK: - UserList
class YHAppointMemberModel: SmartCodable {
var id: Int = 0
var name: String = ""
var type: String = ""
var fileNum: String = ""
var birthday: String = ""
var isCheck: Int = 0
var url: String = ""
var approvalDate: String = ""
var relation: String = ""
enum CodingKeys: String, CodingKey {
case id = "id"
case name = "name"
case type = "type"
case fileNum = "file_num"
case birthday = "birthday"
case isCheck = "is_check"
case url = "url"
case approvalDate = "approval_date"
case relation = "relation"
}
required init() {
}
init(id: Int, name: String, type: String, fileNum: String, birthday: String, isCheck: Int, url: String, approvalDate: String, relation: String) {
self.id = id
self.name = name
self.type = type
self.fileNum = fileNum
self.birthday = birthday
self.isCheck = isCheck
self.url = url
self.approvalDate = approvalDate
self.relation = relation
}
}
//
// YHHKMemberModel.swift
// galaxy
//
// Created by edy on 2024/8/21.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import SmartCodable
class YHHKMemberModel: SmartCodable {
var id: Int = 0
var name: String = ""
var type: String = ""
var fileNum: String = ""
var birthday: String = ""
var isCheck: Int = 0
var url: String = ""
var approvalDate: String = ""
enum CodingKeys: String, CodingKey {
case id = "id"
case name = "name"
case type = "type"
case fileNum = "file_num"
case birthday = "birthday"
case isCheck = "is_check"
case url = "url"
case approvalDate = "approval_date"
}
required init() {
}
init(id: Int, name: String, type: String, fileNum: String, birthday: String, isCheck: Int, url: String, approvalDate: String) {
self.id = id
self.name = name
self.type = type
self.fileNum = fileNum
self.birthday = birthday
self.isCheck = isCheck
self.url = url
self.approvalDate = approvalDate
}
}
......@@ -10,10 +10,13 @@ import UIKit
class YHCerAppointViewModel: NSObject {
var serviceArr:[YHServiceItem] = []
var serviceArr: [YHServiceItem] = []
var hkUsers: [YHHKMemberModel] = []
var appointResult: YHAppointHKResultModel = YHAppointHKResultModel()
// 获取香港服务列表
func getServicelist(_ callBack: @escaping (_ success: Bool,_ error: YHErrorModel?)->()) {
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.MakeCertificate.servicelist
let _ = YHNetRequest.getRequest(url: strUrl) {
[weak self] json, code in
......@@ -48,4 +51,129 @@ class YHCerAppointViewModel: NSObject {
callBack(false, err)
}
}
// 所有赴港人员列表
func getGoHKFamilyMembers(orderId: Int, callback:((_ success: Bool, _ error: YHErrorModel?)->())?) {
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.AppointHK.hkMembers
let _ = YHNetRequest.getRequest(url: strUrl,params: ["order_id" : orderId]) { [weak self] json, code in
//1. json字符串 转 对象
guard let self = self else { return }
printLog("model 是 ==> \(json)")
if json.code == 200 {
let dic = json.data
guard let arr = [YHHKMemberModel].deserialize(array: dic as? [Any]) else {
let err = YHErrorModel(errorCode: YHErrorCode.dictParseError.rawValue, errorMsg: YHErrorCode.dictParseError.description())
self.hkUsers = []
callback?(false, err)
return
}
self.hkUsers.removeAll()
for user in arr {
if let user = user {
self.hkUsers.append(user)
}
}
callback?(true, nil)
} else {
let err = YHErrorModel(errorCode: Int32(json.code), errorMsg: json.msg.isEmpty ? "" : json.msg)
self.hkUsers = []
callback?(false, err)
}
} failBlock: { err in
self.hkUsers = []
callback?(false, err)
}
}
// 获取港府预约结果
func getAppointResult(orderId: Int, callback:((_ success: Bool, _ error: YHErrorModel?)->())?) {
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.AppointHK.appointResult
let _ = YHNetRequest.getRequest(url: strUrl,params: ["order_id" : orderId]) { [weak self] json, code in
//1. json字符串 转 对象
guard let self = self else { return }
printLog("model 是 ==> \(json)")
if json.code == 200 {
let dic = json.data
guard let resultModel = YHAppointHKResultModel.deserialize(dict: dic as? [AnyHashable : Any]) else {
let err = YHErrorModel(errorCode: YHErrorCode.dictParseError.rawValue, errorMsg: YHErrorCode.dictParseError.description())
callback?(false, err)
return
}
self.appointResult = 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 getIsNeedGoToHK(orderId: Int, callback:((_ needGoHK: Int)->())?) {
// 1需要赴港 0不需要 2没有选择
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.AppointHK.isNeedGoHK
let _ = YHNetRequest.getRequest(url: strUrl,params: ["order_id" : orderId]) {
[weak self] json, code in
guard let self = self else { return }
printLog("model 是 ==> \(json)")
if json.code == 200 {
//
} else {
let err = YHErrorModel(errorCode: Int32(json.code), errorMsg: json.msg.isEmpty ? "" : json.msg)
callback?(2)
}
} failBlock: { err in
callback?(2)
}
}
// 保存是否需要赴港
func saveNeedGoHK(orderId: Int, need: Bool, callback:((_ success: Bool)->())?) {
// is_need_to_hk 是否需要赴港 1需要 0不需要
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.AppointHK.saveNeedGoHK
let _ = YHNetRequest.postRequest(url: strUrl,params: ["order_id" : orderId,
"is_need_to_hk" : (need ? 1 : 0)]) {
[weak self] json, code in
guard let self = self else { return }
printLog("model 是 ==> \(json)")
if json.code == 200 {
callback?(true)
} else {
let err = YHErrorModel(errorCode: Int32(json.code), errorMsg: json.msg.isEmpty ? "" : json.msg)
callback?(false)
}
} failBlock: { err in
callback?(false)
}
}
}
......@@ -103,7 +103,8 @@ class YHFamilyInfoUpdateViewController: YHBaseViewController {
self.updateData()
}
@objc func didCancelBtnClicked() {
// 展示挽留弹窗
func showRetainAlertView() {
YHCommonAlertView.show("", "您尚未保存修改,确定关闭吗?", "仍然关闭", "继续编辑", fullGuestureEnable: false) {
self.navigationController?.popViewController()
} callBack: {
......@@ -111,6 +112,14 @@ class YHFamilyInfoUpdateViewController: YHBaseViewController {
}
}
@objc func didCancelBtnClicked() {
if self.isInfoEditing {
showRetainAlertView()
return
}
self.navigationController?.popViewController()
}
@objc func didConfirmBtnClicked() {
self.detailMember.info.isCheck = true
self.updateData()
......@@ -133,7 +142,7 @@ class YHFamilyInfoUpdateViewController: YHBaseViewController {
relation = "spouse"
} else if self.detailMember.info.relation == YHFamilyMemberRelationType.child.rawValue {
relation = "child"
relation = "children"
}
let param:[String: Any] = ["orderId": orderId,
......@@ -145,6 +154,7 @@ class YHFamilyInfoUpdateViewController: YHBaseViewController {
guard let self = self else { return }
if success {
YHHUD.flash(message: "提交成功")
self.navigationController?.popViewController()
return
}
......@@ -160,17 +170,35 @@ class YHFamilyInfoUpdateViewController: YHBaseViewController {
// arr1 信息核实
let arr1 = viewModel.getInfoConfirm(self.detailMember, isEditMode: self.isInfoEditing)
// arr2 递交证件信息
let arr2 = viewModel.getCertificateInfo(self.detailMember)
// 信息核实
items.append(arr1)
// 递交证件信息
items.append(arr2)
// arr2 递交证件信息
if let cer = self.detailMember.info.identity {
let arr2 = viewModel.getCertificateInfo(self.detailMember)
items.append(arr2)
}
self.tableView.reloadData()
}
override func backItemClick(_ sender: Any) {
self.view.endEditing(true)
if self.isInfoEditing {
showRetainAlertView()
return
}
self.navigationController?.popViewController()
}
// 是否可以返回,包括点击返回和手势返回,默认YES
override func navigationShouldPop() -> Bool {
self.view.endEditing(true)
if self.isInfoEditing {
showRetainAlertView()
return false
}
return true
}
}
extension YHFamilyInfoUpdateViewController: UITableViewDelegate, UITableViewDataSource {
......
......@@ -86,7 +86,7 @@ class YHFamilyMemberInfoModel: SmartCodable {
var nationalityHistory: String = ""
var hkIdentityid: String = ""
var hkIdentityidHistory: String = ""
var identity: YHApplicantIdentityModel = YHApplicantIdentityModel()
var identity: YHApplicantIdentityModel?
var occupationName: String = ""
var occupationNameHistory: String = ""
......
......@@ -17,7 +17,7 @@ class YHFamilyMemberInfoCell: UITableViewCell {
self.nameLabel.text = model.info.name
self.pinyinLabel.text = "\(model.info.familyName) \(model.info.givenName)"
self.statusLabel.text = model.confirmStatus == 1 ? "已确认" : "待核对"
let textColor: UIColor = model.confirmStatus == 1 ? .brandMainColor : .init(hex: 0x3CC694)
let textColor: UIColor = model.confirmStatus == 1 ? .init(hex: 0x3CC694) : .brandMainColor
self.statusLabel.textColor = textColor
let img = UIImage(named: "family_info_status_arrow")?.withRenderingMode(.alwaysTemplate)
......
......@@ -73,9 +73,14 @@ class YHFamilyInfoItem {
return ""
}
if self.isMust == false { // 非必填
return ""
}
// 必填
// value 为空的情况
if self.id == .mainApplicantName {
return "请输入主申人姓名"
return "请输入主申人姓名"
}
if self.id == .spouseName {
......
......@@ -391,13 +391,13 @@ extension YHInfoItemView: UITextFieldDelegate {
self.faimilyInfo.hkIdentityid = newText
} else if self.item.id == .birthPlaceAboard {
self.faimilyInfo.birthPlace.details = newText
self.faimilyInfo.birthPlace.foreign = newText
}
}
func getPlaceHolder() -> String {
if self.item.id == .mainApplicantName {
return "请输入主申人姓名"
return "请输入主申人姓名"
}
if self.item.id == .spouseName {
......
......@@ -169,7 +169,7 @@ extension YHFamilyInfoConfirmViewModel {
if model.info.relation == YHFamilyMemberRelationType.mainApplicant.rawValue {
id = .mainApplicantName
nameTitle = "主申人姓名"
nameTitle = "主申人姓名"
previousNameTitle = "原主申人姓名"
} else if model.info.relation == YHFamilyMemberRelationType.spouse.rawValue {
......@@ -272,11 +272,11 @@ extension YHFamilyInfoConfirmViewModel {
action: .edit,
isMust: true,
title: "出生地",
value: model.info.birthPlace.details,
value: model.info.birthPlace.foreign,
previousTitle: "原出生地",
previousValue: model.info.birthPlaceHistory.details,
previousValue: model.info.birthPlaceHistory.foreign,
isEditMode: isEditMode,
isShowPreviousInfo: !isEditMode && !model.info.birthPlaceHistory.details.isEmpty)
isShowPreviousInfo: !isEditMode && !model.info.birthPlaceHistory.foreign.isEmpty)
resultArr.append(birthPlaceInfo)
}
......@@ -308,7 +308,7 @@ extension YHFamilyInfoConfirmViewModel {
// 香港身份证号
let hongkongIdInfo = YHFamilyInfoItem(id: .hongKongId,
action: .edit,
isMust: true,
isMust: false,
title: "香港身份证号",
value: model.info.hkIdentityid,
previousTitle: "原香港身份证号",
......@@ -326,11 +326,11 @@ extension YHFamilyInfoConfirmViewModel {
var resultArr = [YHFamilyInfoItem]()
let travelCerInfo = YHFamilyInfoItem(id: .travelCertificateType,
action: .select,
isMust: true,
isMust: false,
title: "申报旅行证件",
value: model.info.identity.name,
value: model.info.identity?.name ?? "",
previousTitle: "原申报旅行证件",
previousValue: model.info.identity.name,
previousValue: model.info.identity?.name ?? "",
isEditMode: false,
isShowPreviousInfo: false)
resultArr.append(travelCerInfo)
......@@ -338,11 +338,11 @@ extension YHFamilyInfoConfirmViewModel {
// 证件号
let cerIdInfo = YHFamilyInfoItem(id: .travelCertificateId,
action: .edit,
isMust: true,
isMust: false,
title: "证件号",
value: model.info.identity.number,
value: model.info.identity?.number ?? "",
previousTitle: "原证件号",
previousValue: model.info.identity.number,
previousValue: model.info.identity?.number ?? "",
isEditMode: false,
isShowPreviousInfo: false)
resultArr.append(cerIdInfo)
......
......@@ -208,6 +208,8 @@ class YHSheetPickerView: UIView {
YHSheetPickerViewItem(title:"离婚".local, index:3),
YHSheetPickerViewItem(title:"分居".local, index:4),
YHSheetPickerViewItem(title:"丧偶".local, index:5),
YHSheetPickerViewItem(title:"已婚(再婚)".local, index:6),
],
......
......@@ -434,4 +434,16 @@ class YHAllApiName {
}
struct AppointHK {
// 所有赴港人员列表
static let hkMembers = "super-app/order/hk/user"
// 获取港府预约结果
static let appointResult = "super-app/order/hk/reservation"
// 是否需要赴港
static let isNeedGoHK = "super-app/order/hk/get-need-to-hk"
// 保存是否需要赴港
static let saveNeedGoHK = "super-app/order/hk/save-need-to-hk"
}
}
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