Commit c40953f2 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 20946ac5 15586e9d
...@@ -519,6 +519,8 @@ ...@@ -519,6 +519,8 @@
04C85DE92C36BF49008B20D6 /* YHMyFileListFooterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04C85DE82C36BF49008B20D6 /* YHMyFileListFooterView.swift */; }; 04C85DE92C36BF49008B20D6 /* YHMyFileListFooterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04C85DE82C36BF49008B20D6 /* YHMyFileListFooterView.swift */; };
04C8F4832B7216D800ADF59B /* YHUserInfoHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04C8F4822B7216D800ADF59B /* YHUserInfoHeaderView.swift */; }; 04C8F4832B7216D800ADF59B /* YHUserInfoHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04C8F4822B7216D800ADF59B /* YHUserInfoHeaderView.swift */; };
04CC2EF02BC3DDB2000305DD /* YHServiceBannerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04CC2EEF2BC3DDB2000305DD /* YHServiceBannerView.swift */; }; 04CC2EF02BC3DDB2000305DD /* YHServiceBannerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04CC2EEF2BC3DDB2000305DD /* YHServiceBannerView.swift */; };
04CCEDF72CA0FCB10026EA70 /* YHHKImmigrationRecordsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04CCEDF62CA0FCB10026EA70 /* YHHKImmigrationRecordsViewModel.swift */; };
04CCEDF92CA0FD5F0026EA70 /* YHHKImmigrationRecordsSummaryModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04CCEDF82CA0FD5F0026EA70 /* YHHKImmigrationRecordsSummaryModel.swift */; };
04CE1ACF2C2AD91F001CB80A /* YHActivityViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04CE1AB72C2AD91F001CB80A /* YHActivityViewModel.swift */; }; 04CE1ACF2C2AD91F001CB80A /* YHActivityViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04CE1AB72C2AD91F001CB80A /* YHActivityViewModel.swift */; };
04CE1AD02C2AD91F001CB80A /* YHActivityListModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04CE1AB92C2AD91F001CB80A /* YHActivityListModel.swift */; }; 04CE1AD02C2AD91F001CB80A /* YHActivityListModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04CE1AB92C2AD91F001CB80A /* YHActivityListModel.swift */; };
04CE1AD12C2AD91F001CB80A /* YHActivityTravelModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04CE1ABA2C2AD91F001CB80A /* YHActivityTravelModel.swift */; }; 04CE1AD12C2AD91F001CB80A /* YHActivityTravelModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04CE1ABA2C2AD91F001CB80A /* YHActivityTravelModel.swift */; };
...@@ -1368,6 +1370,8 @@ ...@@ -1368,6 +1370,8 @@
04C85DE82C36BF49008B20D6 /* YHMyFileListFooterView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHMyFileListFooterView.swift; sourceTree = "<group>"; }; 04C85DE82C36BF49008B20D6 /* YHMyFileListFooterView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHMyFileListFooterView.swift; sourceTree = "<group>"; };
04C8F4822B7216D800ADF59B /* YHUserInfoHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHUserInfoHeaderView.swift; sourceTree = "<group>"; }; 04C8F4822B7216D800ADF59B /* YHUserInfoHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHUserInfoHeaderView.swift; sourceTree = "<group>"; };
04CC2EEF2BC3DDB2000305DD /* YHServiceBannerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHServiceBannerView.swift; sourceTree = "<group>"; }; 04CC2EEF2BC3DDB2000305DD /* YHServiceBannerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHServiceBannerView.swift; sourceTree = "<group>"; };
04CCEDF62CA0FCB10026EA70 /* YHHKImmigrationRecordsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHKImmigrationRecordsViewModel.swift; sourceTree = "<group>"; };
04CCEDF82CA0FD5F0026EA70 /* YHHKImmigrationRecordsSummaryModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHKImmigrationRecordsSummaryModel.swift; sourceTree = "<group>"; };
04CE1AB72C2AD91F001CB80A /* YHActivityViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YHActivityViewModel.swift; sourceTree = "<group>"; }; 04CE1AB72C2AD91F001CB80A /* YHActivityViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YHActivityViewModel.swift; sourceTree = "<group>"; };
04CE1AB92C2AD91F001CB80A /* YHActivityListModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YHActivityListModel.swift; sourceTree = "<group>"; }; 04CE1AB92C2AD91F001CB80A /* YHActivityListModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YHActivityListModel.swift; sourceTree = "<group>"; };
04CE1ABA2C2AD91F001CB80A /* YHActivityTravelModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YHActivityTravelModel.swift; sourceTree = "<group>"; }; 04CE1ABA2C2AD91F001CB80A /* YHActivityTravelModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YHActivityTravelModel.swift; sourceTree = "<group>"; };
...@@ -3418,6 +3422,14 @@ ...@@ -3418,6 +3422,14 @@
path = C; path = C;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
04CCEDF52CA0FC850026EA70 /* VM */ = {
isa = PBXGroup;
children = (
04CCEDF62CA0FCB10026EA70 /* YHHKImmigrationRecordsViewModel.swift */,
);
path = VM;
sourceTree = "<group>";
};
04CE1AB52C2AD91F001CB80A /* Activity(活动) */ = { 04CE1AB52C2AD91F001CB80A /* Activity(活动) */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
...@@ -3542,6 +3554,7 @@ ...@@ -3542,6 +3554,7 @@
04F243322C957ED600DF2C74 /* HongKongImmigrationRecords(在港记录管理) */ = { 04F243322C957ED600DF2C74 /* HongKongImmigrationRecords(在港记录管理) */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
04CCEDF52CA0FC850026EA70 /* VM */,
04F243352C95802200DF2C74 /* C */, 04F243352C95802200DF2C74 /* C */,
04F243342C95801B00DF2C74 /* V */, 04F243342C95801B00DF2C74 /* V */,
04F243332C95801200DF2C74 /* M */, 04F243332C95801200DF2C74 /* M */,
...@@ -3553,6 +3566,7 @@ ...@@ -3553,6 +3566,7 @@
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
04F243402C9AFBAB00DF2C74 /* YHHKRecordItemDetailType.swift */, 04F243402C9AFBAB00DF2C74 /* YHHKRecordItemDetailType.swift */,
04CCEDF82CA0FD5F0026EA70 /* YHHKImmigrationRecordsSummaryModel.swift */,
04F243712C9EC90C00DF2C74 /* YHHKRecordsEditPersonnelModel.swift */, 04F243712C9EC90C00DF2C74 /* YHHKRecordsEditPersonnelModel.swift */,
); );
path = M; path = M;
...@@ -4846,6 +4860,7 @@ ...@@ -4846,6 +4860,7 @@
A5CA3F542C744CAB00EB22F5 /* YHUploadCertificateDetailCell.swift in Sources */, A5CA3F542C744CAB00EB22F5 /* YHUploadCertificateDetailCell.swift in Sources */,
04A7BD172BA43A0F00BD35A2 /* YHMyDocumentsDetailViewModel.swift in Sources */, 04A7BD172BA43A0F00BD35A2 /* YHMyDocumentsDetailViewModel.swift in Sources */,
04256DF82C73726C00A37BA4 /* YHCerAppointViewModel.swift in Sources */, 04256DF82C73726C00A37BA4 /* YHCerAppointViewModel.swift in Sources */,
04CCEDF92CA0FD5F0026EA70 /* YHHKImmigrationRecordsSummaryModel.swift in Sources */,
0430E6882C771B06000511E2 /* YHAdopterItemView.swift in Sources */, 0430E6882C771B06000511E2 /* YHAdopterItemView.swift in Sources */,
045EEEB32B9F171A0022A143 /* YHWorkFileSyncTableViewCell.swift in Sources */, 045EEEB32B9F171A0022A143 /* YHWorkFileSyncTableViewCell.swift in Sources */,
045EEEF12B9F171A0022A143 /* YHChildInfoContainerVC.swift in Sources */, 045EEEF12B9F171A0022A143 /* YHChildInfoContainerVC.swift in Sources */,
...@@ -4935,6 +4950,7 @@ ...@@ -4935,6 +4950,7 @@
04256DFC2C742C7D00A37BA4 /* YHFamilyInfoConfirmViewModel.swift in Sources */, 04256DFC2C742C7D00A37BA4 /* YHFamilyInfoConfirmViewModel.swift in Sources */,
A59B43CF2C4B5AD100B28379 /* YHShareViewOnTablebarView.swift in Sources */, A59B43CF2C4B5AD100B28379 /* YHShareViewOnTablebarView.swift in Sources */,
044EE22F2C918D1400A2FE3A /* YHServiceStepAlertView.swift in Sources */, 044EE22F2C918D1400A2FE3A /* YHServiceStepAlertView.swift in Sources */,
04CCEDF72CA0FCB10026EA70 /* YHHKImmigrationRecordsViewModel.swift in Sources */,
A5ACE94A2B4564F7002C94D2 /* YHHUDProgressView.swift in Sources */, A5ACE94A2B4564F7002C94D2 /* YHHUDProgressView.swift in Sources */,
04A271232BABFF3200652B1B /* YHCertificateUploadTypeCell.swift in Sources */, 04A271232BABFF3200652B1B /* YHCertificateUploadTypeCell.swift in Sources */,
04B360F32C636525001EB053 /* YHPrincipleWaitResultViewController.swift in Sources */, 04B360F32C636525001EB053 /* YHPrincipleWaitResultViewController.swift in Sources */,
......
...@@ -172,7 +172,7 @@ extension YHServiceOrderListView : UITableViewDelegate,UITableViewDataSource { ...@@ -172,7 +172,7 @@ extension YHServiceOrderListView : UITableViewDelegate,UITableViewDataSource {
//我的续签方案 //我的续签方案
} else if tag == 3 { } else if tag == 3 {
//添加在港记录 //添加在港记录
let vc = YHHKImmigrationRecordsVC() let vc = YHHKImmigrationRecordsVC(orderId: orderID)
UIViewController.current?.navigationController?.pushViewController(vc) UIViewController.current?.navigationController?.pushViewController(vc)
} else if tag == 4 { } else if tag == 4 {
//续签证件管理 //续签证件管理
......
...@@ -11,7 +11,7 @@ import JXSegmentedView ...@@ -11,7 +11,7 @@ import JXSegmentedView
class YHHKImmigrationRecordsVC: YHBaseViewController { class YHHKImmigrationRecordsVC: YHBaseViewController {
private lazy var controllerOne: YHHKRecordsSummaryVC = YHHKRecordsSummaryVC() private lazy var controllerOne: YHHKRecordsSummaryVC = YHHKRecordsSummaryVC(orderId: self.orderId)
private lazy var controllerTwo: YHHKRecordsContentVC = YHHKRecordsContentVC() private lazy var controllerTwo: YHHKRecordsContentVC = YHHKRecordsContentVC()
private lazy var controllerThree: YHHKRecordsContentVC = YHHKRecordsContentVC() private lazy var controllerThree: YHHKRecordsContentVC = YHHKRecordsContentVC()
private lazy var controllerFour: YHHKRecordsContentVC = YHHKRecordsContentVC() private lazy var controllerFour: YHHKRecordsContentVC = YHHKRecordsContentVC()
...@@ -76,6 +76,16 @@ class YHHKImmigrationRecordsVC: YHBaseViewController { ...@@ -76,6 +76,16 @@ class YHHKImmigrationRecordsVC: YHBaseViewController {
return view return view
}() }()
private let orderId: Int
init(orderId: Int) {
self.orderId = orderId
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()
......
...@@ -11,6 +11,8 @@ import JXSegmentedView ...@@ -11,6 +11,8 @@ import JXSegmentedView
class YHHKRecordsSummaryVC: YHBaseViewController { class YHHKRecordsSummaryVC: YHBaseViewController {
private lazy var viewModel = YHHKImmigrationRecordsViewModel()
private lazy var noDataView: YHEmptyDataView = { private lazy var noDataView: YHEmptyDataView = {
let view = YHEmptyDataView.createView("暂无在港记录", kEmptyCommonBgName) let view = YHEmptyDataView.createView("暂无在港记录", kEmptyCommonBgName)
view.frame = CGRect(x: 0, y: 0, width: KScreenWidth, height: 164) view.frame = CGRect(x: 0, y: 0, width: KScreenWidth, height: 164)
...@@ -54,11 +56,26 @@ class YHHKRecordsSummaryVC: YHBaseViewController { ...@@ -54,11 +56,26 @@ class YHHKRecordsSummaryVC: YHBaseViewController {
return view return view
}() }()
private let orderId: Int
init(orderId: Int) {
self.orderId = orderId
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()
} }
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
requestData()
}
} }
...@@ -74,8 +91,33 @@ extension YHHKRecordsSummaryVC { ...@@ -74,8 +91,33 @@ extension YHHKRecordsSummaryVC {
make.top.equalToSuperview().offset(kMargin) make.top.equalToSuperview().offset(kMargin)
make.bottom.equalToSuperview().offset(-kMargin) make.bottom.equalToSuperview().offset(-kMargin)
} }
// tableView.tableHeaderView = UIView(frame: CGRect.init(x: 0, y: 0, width: KScreenWidth, height: kMargin)) }
// tableView.tableFooterView = UIView(frame: CGRect.init(x: 0, y: 0, width: KScreenWidth, height: kMargin))
private func requestData() {
viewModel.getHKImmigrationRecordsSummary(orderId: orderId) { [weak self] recordsSummary, error in
if let recordsSummary = recordsSummary {
self?.updateVC(recordsSummary: recordsSummary)
} else {
printLog("YHHKRecordsSummaryVC: 请求失败")
if let errorMsg = error?.errorMsg, errorMsg.count > 0 {
YHHUD.show(.error(message: errorMsg))
YHHUD.hide(afterDelay: 1)
}
}
}
}
private func updateVC(recordsSummary: YHHKImmigrationRecordsSummaryModel) {
guard recordsSummary.list.count > 0 else {
return
}
// datas = recordsSummary.list.map { record in
// let firstSection = YHHKRecordSectionType.header("在港逗留情况")
// let summaryItems1: [YHHKRecordItemDetailType] = [.detailHeader("逗留共300天(2次)"), .lastStay("上次逗留:2024-10-04"), .summaryItem("2024年 270天(2次)"), .summaryItem("2024年 30天(2次)")]
// let periodItems1: [YHHKRecordItemDetailType] = [.detailHeader("超90天未在港"), .duration("2023-10-04", "2023-12-04", "60天"), .duration("2024-12-04", "2023-01-04", "60天")]
// let expandedSec1 = YHHKRecordsExpandedSection(title: "章一刀", type: .over90, summaryItems: summaryItems1, periodItems: periodItems1)
// let secondSection = YHHKRecordSectionType.expandedItem(expandedSec1)
// }
} }
private func getSubCellType(model: YHHKRecordsExpandedSection, indexPath: IndexPath, subType: YHHKRecordItemDetailType) -> YHResignRoundCellType { private func getSubCellType(model: YHHKRecordsExpandedSection, indexPath: IndexPath, subType: YHHKRecordItemDetailType) -> YHResignRoundCellType {
......
//
// YHHKImmigrationRecordsSummaryModel.swift
// galaxy
//
// Created by alexzzw on 2024/9/23.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import Foundation
import SmartCodable
class YHHKImmigrationRecordsSummaryModel: SmartCodable {
var list: [YHHKRecordsSummaryDataItem] = []
required init() {
}
}
class YHHKRecordsSummaryDataItem: SmartCodable {
var username: String = ""
var not_in_hk_days: Int = 0
var sum_days: Int = 0
var sum_times: Int = 0
var last_stay_date: String = ""
var statistics: [YHHKRecordsStatisticItem] = []
var details: [YHHKRecordsDetailItem] = []
required init() {
}
}
class YHHKRecordsStatisticItem: SmartCodable {
var year: Int = 0
var sum_days: Int = 0
var sum_times: Int = 0
required init() {
}
}
class YHHKRecordsDetailItem: SmartCodable {
var start_date: String = ""
var end_date: String = ""
var days: Int = 0
required init() {
}
}
//
// YHHKImmigrationRecordsViewModel.swift
// galaxy
//
// Created by alexzzw on 2024/9/23.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHHKImmigrationRecordsViewModel: YHBaseViewModel {
func getHKImmigrationRecordsSummary(orderId: Int, callback: @escaping (_ recordsSummary: YHHKImmigrationRecordsSummaryModel?, _ error: YHErrorModel?) -> ()) {
let params = ["order_id": orderId]
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 = YHHKImmigrationRecordsSummaryModel.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)
}
}
}
...@@ -95,6 +95,10 @@ extension YHResignDocumentDetailViewController { ...@@ -95,6 +95,10 @@ extension YHResignDocumentDetailViewController {
} }
guard let documentModel = documentModel else { guard let documentModel = documentModel else {
printLog("YHResignDocumentDetailViewController: 请求失败") printLog("YHResignDocumentDetailViewController: 请求失败")
if let errorMsg = error?.errorMsg, errorMsg.count > 0 {
YHHUD.show(.error(message: errorMsg))
YHHUD.hide(afterDelay: 1)
}
return return
} }
guard let self = self else { guard let self = self else {
......
...@@ -86,6 +86,10 @@ extension YHResignDocumentManagementVC { ...@@ -86,6 +86,10 @@ extension YHResignDocumentManagementVC {
self?.updateVC() self?.updateVC()
} else { } else {
printLog("YHResignDocumentManagementVC: 请求失败") printLog("YHResignDocumentManagementVC: 请求失败")
if let errorMsg = error?.errorMsg, errorMsg.count > 0 {
YHHUD.show(.error(message: errorMsg))
YHHUD.hide(afterDelay: 1)
}
} }
} }
} }
...@@ -173,7 +177,7 @@ extension YHResignDocumentManagementVC: UITableViewDelegate, UITableViewDataSour ...@@ -173,7 +177,7 @@ extension YHResignDocumentManagementVC: UITableViewDelegate, UITableViewDataSour
switch item { switch item {
case .header: case .header:
return return
case let .content(title, status, docId): case let .content(title, _, docId):
let controller = YHResignDocumentDetailViewController(docId, title) let controller = YHResignDocumentDetailViewController(docId, title)
navigationController?.pushViewController(controller) navigationController?.pushViewController(controller)
} }
......
...@@ -546,9 +546,10 @@ extension YHMessageDetailListVC: UITableViewDelegate, UITableViewDataSource { ...@@ -546,9 +546,10 @@ extension YHMessageDetailListVC: UITableViewDelegate, UITableViewDataSource {
YHHUD.flash(message: "跳转至 我的续签方案") YHHUD.flash(message: "跳转至 我的续签方案")
} else if msg.redirectPage == YHRedirectPage.stayInHKRecord.rawValue { // 添加在港记录 } else if msg.redirectPage == YHRedirectPage.stayInHKRecord.rawValue { // 添加在港记录
let vc = YHHKImmigrationRecordsVC() if let orderId = Int(msg.orderId) {
navigationController?.pushViewController(vc) let vc = YHHKImmigrationRecordsVC(orderId: orderId)
navigationController?.pushViewController(vc)
}
} else if msg.redirectPage == YHRedirectPage.renewalCertificate.rawValue { // 续签证件管理 } else if msg.redirectPage == YHRedirectPage.renewalCertificate.rawValue { // 续签证件管理
if let orderId = Int(msg.orderId) { if let orderId = Int(msg.orderId) {
let vc = YHResignCertificateListViewController() let vc = YHResignCertificateListViewController()
......
...@@ -545,4 +545,20 @@ class YHAllApiName { ...@@ -545,4 +545,20 @@ class YHAllApiName {
// 预览签字文档 // 预览签字文档
static let previewResginDocument = "super-app/renewal/views" static let previewResginDocument = "super-app/renewal/views"
} }
// 在港记录
struct HKImmigrationRecords {
// 在港记录-汇总
static let stayInHKRecordSummary = "super-app/stay-in-hk-record/all"
// 在港记录-按家庭成员角色统计
static let stayInHKRecordStatistics = "super-app/stay-in-hk-record/statistics"
// 在港记录-单个人
static let stayInHKRecordSingle = "super-app/stay-in-hk-record/single"
// 在港记录-添加
static let addStayInHKRecord = "super-app/stay-in-hk-record/add"
// 在港记录-编辑
static let editStayInHKRecord = "super-app/stay-in-hk-record/edit"
// 在港记录-家庭成员列表
static let stayInHKRecordFamilyMembers = "super-app/stay-in-hk-record/family-members"
}
} }
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