Commit e6c2530c authored by Steven杜宇's avatar Steven杜宇

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

parents 86972d45 9eca51cf
......@@ -595,6 +595,8 @@
A5DE0D3C2BB9016200976FE1 /* YHEmailInputAlertView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5DE0D3B2BB9016200976FE1 /* YHEmailInputAlertView.swift */; };
A5DF3D462BF72BA1003D5F03 /* YHTestViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5DF3D452BF72BA0003D5F03 /* YHTestViewController.swift */; };
A5E69D512BA304D400411932 /* DIN Alternate Bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A5E69D502BA304D400411932 /* DIN Alternate Bold.ttf */; };
A5EB6C622C675DA20081FB6C /* YHOfficalLetterListModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5EB6C612C675DA20081FB6C /* YHOfficalLetterListModel.swift */; };
A5EB6C642C68AD050081FB6C /* YHOfficailLetterColledtionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5EB6C632C68AD050081FB6C /* YHOfficailLetterColledtionCell.swift */; };
A5EE41EF2C21387C005BBA5D /* YHAiRadarAreaView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5EE41EE2C21387C005BBA5D /* YHAiRadarAreaView.swift */; };
A5EE42002C216C78005BBA5D /* img_1.png in Resources */ = {isa = PBXBuildFile; fileRef = A5EE41FC2C216C78005BBA5D /* img_1.png */; };
A5EE42012C216C78005BBA5D /* img_0.png in Resources */ = {isa = PBXBuildFile; fileRef = A5EE41FD2C216C78005BBA5D /* img_0.png */; };
......@@ -1254,6 +1256,8 @@
A5DE0D3B2BB9016200976FE1 /* YHEmailInputAlertView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHEmailInputAlertView.swift; sourceTree = "<group>"; };
A5DF3D452BF72BA0003D5F03 /* YHTestViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHTestViewController.swift; sourceTree = "<group>"; };
A5E69D502BA304D400411932 /* DIN Alternate Bold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "DIN Alternate Bold.ttf"; sourceTree = "<group>"; };
A5EB6C612C675DA20081FB6C /* YHOfficalLetterListModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHOfficalLetterListModel.swift; sourceTree = "<group>"; };
A5EB6C632C68AD050081FB6C /* YHOfficailLetterColledtionCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHOfficailLetterColledtionCell.swift; sourceTree = "<group>"; };
A5EE41EE2C21387C005BBA5D /* YHAiRadarAreaView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHAiRadarAreaView.swift; sourceTree = "<group>"; };
A5EE41FC2C216C78005BBA5D /* img_1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_1.png; sourceTree = "<group>"; };
A5EE41FD2C216C78005BBA5D /* img_0.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_0.png; sourceTree = "<group>"; };
......@@ -2365,6 +2369,7 @@
047AA4022C65C1AC009C4554 /* OfficialApprovalBatch */ = {
isa = PBXGroup;
children = (
A5EB6C602C675B1D0081FB6C /* M */,
047AA4032C65C1AC009C4554 /* C */,
047AA4052C65C1AC009C4554 /* V */,
);
......@@ -2385,6 +2390,7 @@
047AA4062C65C1AC009C4554 /* YHOffivialApprovalSuccessView.swift */,
047AA4072C65C1AC009C4554 /* YHOffivialApprovalGuildLineCheckView.swift */,
047AA4082C65C1AC009C4554 /* YHOffivialApprovalSuccessCheckView.swift */,
A5EB6C632C68AD050081FB6C /* YHOfficailLetterColledtionCell.swift */,
);
path = V;
sourceTree = "<group>";
......@@ -3350,6 +3356,14 @@
path = Font;
sourceTree = "<group>";
};
A5EB6C602C675B1D0081FB6C /* M */ = {
isa = PBXGroup;
children = (
A5EB6C612C675DA20081FB6C /* YHOfficalLetterListModel.swift */,
);
path = M;
sourceTree = "<group>";
};
A5EE41FB2C216C78005BBA5D /* radar */ = {
isa = PBXGroup;
children = (
......@@ -3637,6 +3651,7 @@
A5ACE9362B4564F7002C94D2 /* YHNetworkStatusManager.swift in Sources */,
048787D52BCE880B0036E221 /* YHServiceOrderListViewController.swift in Sources */,
A5D0012A2BABC84A001F003C /* YHFileListHeaerView.swift in Sources */,
A5EB6C622C675DA20081FB6C /* YHOfficalLetterListModel.swift in Sources */,
044414052BC3B9DE00784A14 /* YHServiceTableFootView.swift in Sources */,
045EEEEF2B9F171A0022A143 /* YHCertificateInfoController.swift in Sources */,
045EEEDA2B9F171A0022A143 /* YHEducationInfoListVC.swift in Sources */,
......@@ -3759,6 +3774,7 @@
04F5F8642C19460D004A463C /* YHHKLifeViewController.swift in Sources */,
A59B43CF2C4B5AD100B28379 /* YHShareViewOnTablebarView.swift in Sources */,
A5ACE94A2B4564F7002C94D2 /* YHHUDProgressView.swift in Sources */,
A5EB6C642C68AD050081FB6C /* YHOfficailLetterColledtionCell.swift in Sources */,
04A271232BABFF3200652B1B /* YHCertificateUploadTypeCell.swift in Sources */,
04B360F32C636525001EB053 /* YHPrincipleWaitResultViewController.swift in Sources */,
A582B2412BB95998009D098C /* YHHKPlanTipsCell.swift in Sources */,
......
......@@ -148,7 +148,6 @@ extension YHHomeHoldViewPageViewController {
return
}
model.type = 2 //for test hjl
if model.type == 1 {
//正式弹窗
......
......@@ -9,12 +9,14 @@
import UIKit
import FSPagerView
import AttributedString
/*
正式批 结果页
*/
class YHOfficialApprovalResultVC: YHBaseViewController {
var contentView: YHOffivialApprovalSuccessView!
//背景
lazy var bkgImageV: UIImageView = {
......@@ -43,6 +45,13 @@ class YHOfficialApprovalResultVC: YHBaseViewController {
return imageV
}()
//文档内容
lazy var contentView: YHOffivialApprovalSuccessView = {
let view = YHOffivialApprovalSuccessView()
view.isHidden = true
return view
}()
//pen
lazy var penImageV: UIImageView = {
......@@ -87,7 +96,7 @@ class YHOfficialApprovalResultVC: YHBaseViewController {
label.textColor = UIColor(hex: 0xffffff, alpha: 0.6)
label.textAlignment = .center
label.font = UIFont.PFSC_R(ofSize:12)
label.text = "左滑查看其他获批信,当前 1/5"
label.text = "左滑查看其他获批信,当前"
return label
}()
......@@ -99,9 +108,11 @@ class YHOfficialApprovalResultVC: YHBaseViewController {
view.dataSource = self
view.bounces = false
view.isInfinite = false
// view.automaticSlidingInterval = bannerSildingInterval
view.register(YHHomeBannerCollectionViewCell.self, forCellWithReuseIdentifier: "cell")
view.removesInfiniteLoopForSingleItem = true
view.alwaysBounceHorizontal = true
view.register(YHOfficailLetterColledtionCell.self, forCellWithReuseIdentifier: YHOfficailLetterColledtionCell.cellReuseIdentifier)
view.itemSize = CGSizeMake(268.0, 148)
view.interitemSpacing = 20
return view
}()
......@@ -110,20 +121,17 @@ class YHOfficialApprovalResultVC: YHBaseViewController {
return view
}()
var dataArr: [YHBannerModel] = [] {
var dataArr: [YHOfficalLetterModel] = [] {
didSet {
// 设置为0是先停掉自动滑动定时器
// bannerView.automaticSlidingInterval = 0
self.indicatorView.indicatorItems = self.dataArr.count
bannerView.reloadData()
// 指定指示器为第一个
self.indicatorView.curIndicatorIndex = 0
// 指定显示图片为第一个
bannerView.selectItem(at: 0, animated: false)
// 开启定时器开始滚动
// bannerView.automaticSlidingInterval = bannerSildingInterval
bannerView.removesInfiniteLoopForSingleItem = true
bannerView.alwaysBounceHorizontal = true
let aa: ASAttributedString = .init("左滑查看其他获批信,当前 ", .font(UIFont.PFSC_R(ofSize: 12)),.foreground(UIColor(hex: 0xffffff, alpha: 0.6)))
let bb: ASAttributedString = .init("1/\(self.dataArr.count)", .font(UIFont.PFSC_R(ofSize: 12)),.foreground(UIColor(hex: 0xffffff, alpha: 1.0)))
tipsLabel.attributed.text = aa + bb
}
}
......@@ -137,22 +145,59 @@ class YHOfficialApprovalResultVC: YHBaseViewController {
var showGuildViewFlag : Bool = false
lazy var previewFileTool:YHFilePreviewTool = {
let tool = YHFilePreviewTool(targetVC: UIViewController.current)
return tool
}()
override func viewDidLoad() {
super.viewDidLoad()
setupUI()
getApprovalLetter()
getAlertStatus()
getOfficalGuildCheckStatus()
if showGuildViewFlag {
clickRightItemBtn()
}
getOfficalGuildCheckStatus()
}
}
private extension YHOfficialApprovalResultVC {
func updateMainApplicationInfo() {
guard let model = princleVM.lettersModel else { return }
contentView.dataModel = model
}
func updateLetterListInfo() {
self.dataArr = self.princleVM.lettersModel?.list ?? []
}
//获取正式批信件列表
func getApprovalLetter() {
if let orderID = UserDefaults.standard.value(forKey: "orderIdForPreview") {
let param = ["orderId":orderID,"searchType":1]
princleVM.getApprovalLetter(param: param) { success, error in
if success {
//1、更新主申请人信息
self.contentView.isHidden = false
self.updateMainApplicationInfo()
//2、更新letter信息
self.updateLetterListInfo()
} else {
YHHUD.flash(message: "数据获取失败")
}
}
} else {
YHHUD.flash(message: "订单号为空")
}
}
//上报弹窗状态
func postAlertStatus(_ type : Int) {
......@@ -167,7 +212,9 @@ private extension YHOfficialApprovalResultVC {
func getOfficalGuildCheckStatus() {
princleVM.getOfficialCheckStatus { success, error in
if success {
if self.showGuildViewFlag {
self.clickRightItemBtn()
}
}
}
}
......@@ -241,11 +288,6 @@ private extension YHOfficialApprovalResultVC {
}
docImageV.layer.zPosition = 1
contentView = {
let view = YHOffivialApprovalSuccessView()
view.updataView(data: ["祝贺您和您的家人申请的","【优秀人才入境计划】","2023年10月1日正式获批","这意味着,您领取香港居民身份证","仅有一步之遥!!"])
return view
}()
docImageV.addSubview(contentView)
contentView.snp.makeConstraints { make in
make.left.equalTo(60)
......@@ -319,12 +361,9 @@ private extension YHOfficialApprovalResultVC {
// let transform = CGAffineTransform(scaleX: 0.6, y: 0.75)
bannerView.transformer = FSPagerViewTransformer(type:.linear)
// bannerView.transformer = FSPagerViewTransformer(type:.linear)
// bannerView.itemSize = CGSize(width: 268, height: 148).applying(transform)
self.dataArr = [YHBannerModel(),YHBannerModel(),YHBannerModel()]//for test hjl
bannerView.reloadData()
// bannerView.reloadData()
}
private func rotatedTransform() -> CGAffineTransform {
......@@ -370,7 +409,7 @@ private extension YHOfficialApprovalResultVC {
}
// MARK: - FSPagerView Delegate
extension YHOfficialApprovalResultVC: FSPagerViewDataSource, FSPagerViewDelegate {
public func numberOfItems(in pagerView: FSPagerView) -> Int {
......@@ -378,19 +417,29 @@ extension YHOfficialApprovalResultVC: FSPagerViewDataSource, FSPagerViewDelegate
}
public func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> FSPagerViewCell {
let cell = pagerView.dequeueReusableCell(withReuseIdentifier: "cell", at: index) as! YHHomeBannerCollectionViewCell
let cell = pagerView.dequeueReusableCell(withReuseIdentifier: YHOfficailLetterColledtionCell.cellReuseIdentifier, at: index) as! YHOfficailLetterColledtionCell
if index < dataArr.count {
// cell.dataModel = dataArr[index]
// cell.contentView.backgroundColor = .red//for test hjl
cell.dataModel = dataArr[index]
}
return cell
}
// MARK: - FSPagerView Delegate
func pagerView(_ pagerView: FSPagerView, didSelectItemAt index: Int) {
pagerView.deselectItem(at: index, animated: true)
pagerView.scrollToItem(at: index, animated: true)
if index >= dataArr.count {
if index < dataArr.count {
let model = self.dataArr[index]
self.previewFileTool.openXLSXRemoteFile(urlString: model.file_url_transformed, fileName: "")
if !model.localShowFlag {
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
model.localShowFlag = true
UserDefaults.standard.setValue("localShowFlag", forKey: String(model.id))
UserDefaults.standard.synchronize()
self.bannerView.reloadData()
}
}
return
}
......@@ -398,9 +447,17 @@ extension YHOfficialApprovalResultVC: FSPagerViewDataSource, FSPagerViewDelegate
func pagerViewWillEndDragging(_ pagerView: FSPagerView, targetIndex: Int) {
self.indicatorView.curIndicatorIndex = targetIndex
let aa: ASAttributedString = .init("左滑查看其他获批信,当前 ", .font(UIFont.PFSC_R(ofSize: 12)),.foreground(UIColor(hex: 0xffffff, alpha: 0.6)))
let bb: ASAttributedString = .init("\(targetIndex + 1)/\(self.dataArr.count)", .font(UIFont.PFSC_R(ofSize: 12)),.foreground(UIColor(hex: 0xffffff, alpha: 1.0)))
tipsLabel.attributed.text = aa + bb
}
func pagerViewDidEndScrollAnimation(_ pagerView: FSPagerView) {
self.indicatorView.curIndicatorIndex = pagerView.currentIndex
let aa: ASAttributedString = .init("左滑查看其他获批信,当前 ", .font(UIFont.PFSC_R(ofSize: 12)),.foreground(UIColor(hex: 0xffffff, alpha: 0.6)))
let bb: ASAttributedString = .init("\(pagerView.currentIndex + 1)/\(self.dataArr.count)", .font(UIFont.PFSC_R(ofSize: 12)),.foreground(UIColor(hex: 0xffffff, alpha: 1.0)))
tipsLabel.attributed.text = aa + bb
}
}
//
// YHOfficalLetterListModel.swift
// galaxy
//
// Created by davidhuangA on 2024/8/10.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import SmartCodable
class YHOfficalLetterModel: SmartCodable {
var id : Int = -1//申请记录的唯一标识符
var applicant : String = ""//申请人的姓名
var approval_date : String = ""//申请人姓名
var applicant_approval_date : String = ""//申请的日期和时间
var archivist_id : Int = -1//来自相关记录的数据ID
var data_from_type : Int = -1 //数据来源的类型
var deleted_at : String = ""//申请记录被删除的时间(可选)
var e_visa_cn : String = ""//申请人姓名
var email_received_at : String = "" //邮件接收时间
var file_no : String = ""//文件编号
var file_num : String = ""//文件号(可能与file_no重复,用于不同场景)
var file_type : Int = -1 //文件类型
var file_url_transformed : String = ""//转换后的文件URL
var from_order_id : Int = -1 //来源订单ID
var from_relation : Int = -1//与申请人关系的代码
var from_relation_cn : String = ""//与申请人关系的中文描述
var handler : String = ""//处理申请的人员
var is_check : Int = -1//是否进行了检查
var name : String = ""//申请人的姓名
var pay_deadline : String = ""//支付截止日期
var read_status : Int = -1 //阅读状态(例如:未读,已读)
var remark : String = ""//备注信息
var remark_archivist : [String] = []//备注信息,可包含多个档案管理员的备注
var result : Int = -1//申请结果代码
var result_at : String = ""//申请结果的时间
var result_cn : String = ""//申请结果的中文描述
var type : String = ""//申请的类型(例如:旅游,商务)
var updated_at : String = "" //申请记录最后更新的时间
var url : String = ""//文件的URL
var localShowFlag : Bool = false //信件是否点击打开 本地变量
required init() {
}
}
class YHOfficalLetterListModel: SmartCodable {
var order_id : Int = -1//订单id
var applicant_id :Int = -1//申请人id
var applicant_name : String = ""//申请人姓名
var applicant_approval_date : String = ""//申请人通过时间
var applicant_sex : Int = -1//申请人性别
var days : Int = -1 //天数
var list : [YHOfficalLetterModel] = []
required init() {
}
}
//
// YHOfficailLetterColledtionCell.swift
// galaxy
//
// Created by davidhuangA on 2024/8/11.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import FSPagerView
class YHOfficailLetterColledtionCell: FSPagerViewCell {
static let cellReuseIdentifier = "YHOfficailLetterColledtionCell"
var dataModel: YHOfficalLetterModel? {
didSet {
updateUI()
}
}
lazy var bkgImageView:UIImageView = {
let imageV = UIImageView(image: UIImage(named: "official_approval_result_envelope_not_read"))
imageV.contentMode = .scaleAspectFill
return imageV
}()
lazy var nameLable:UILabel = {
let label = UILabel()
label.text = ""
label.textColor = UIColor(hex: 0xA96B42, alpha: 1.0)
label.font = UIFont.PFSC_M(ofSize: 15)
return label
}()
required init?(coder: NSCoder) {
super.init(coder: coder)
}
override init(frame: CGRect) {
super.init(frame: frame)
contentView.removeSubviews()
setupUI()
}
}
private extension YHOfficailLetterColledtionCell {
func setupUI() {
backgroundColor = .clear
contentView.backgroundColor = .clear
clipsToBounds = true
contentView.layer.shadowColor = UIColor.clear.cgColor
contentView.layer.shadowRadius = 0
contentView.layer.shadowOpacity = 0
contentView.layer.shadowOffset = .zero
contentView.addSubview(bkgImageView)
bkgImageView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
contentView.addSubview(nameLable)
nameLable.snp.makeConstraints { make in
make.top.equalToSuperview().offset(kMargin + 12)
make.left.equalToSuperview().offset(60)
make.height.equalTo(21)
}
}
func updateUI() {
guard let model = dataModel else { return }
nameLable.text = model.applicant
if !model.localShowFlag {
//未读
bkgImageView.image = UIImage(named: "official_approval_result_envelope_not_read")
} else {
//已读
bkgImageView.image = UIImage(named: "official_approval_result_envelope_readed")
}
}
}
......@@ -9,8 +9,14 @@
import UIKit
class YHOffivialApprovalSuccessView: UIView {
var dataModel : YHOfficalLetterListModel? {
didSet {
updateUI()
}
}
var titleLabel: UILabel!
private var titleLabel: UILabel!
private var arrViews : [UIView] = []
......@@ -28,7 +34,7 @@ class YHOffivialApprovalSuccessView: UIView {
let label = UILabel()
label.font = UIFont.PFSC_M(ofSize: 30)
label.textColor = UIColor(hex: 0x881000)
label.text = "恭喜 侯先生!"
label.text = "恭喜"
return label
}()
addSubview(titleLabel)
......@@ -80,3 +86,23 @@ class YHOffivialApprovalSuccessView: UIView {
}
}
}
private extension YHOffivialApprovalSuccessView {
func updateUI() {
guard let model = dataModel else { return }
titleLabel.text = "恭喜 " + model.applicant_name + model.applicant_sex.gentlemanDescribe() + "!"
if model.applicant_approval_date.count >= "2023年10月1日".count {
var tmp = model.applicant_approval_date.slice(from: 0, length: "2023年10月1日".count)
let arr = tmp.split(separator: "-")
if arr.count == 3 {
tmp = arr[0] + "年" + arr[1] + "月" + arr[2] + "日" + "正式获批"
let fourItems = ["祝贺您和您的家人申请的","【优秀人才入境计划】",tmp,"这意味着,您领取香港居民身份证","仅有一步之遥!!"]
updataView(data: fourItems)
}
}
}
}
......@@ -22,6 +22,9 @@ class YHPrincleViewModel: YHBaseViewModel {
//正式批 操作指引是否确认
var isOfficialGuildCheckFlag : Bool = false
//正式批 信件列表
var lettersModel : YHOfficalLetterListModel?
}
......@@ -29,7 +32,6 @@ extension YHPrincleViewModel {
//获取获批信列表
func getApprovalLetter(param:[String : Any],callback:((_ success: Bool,_ error:YHErrorModel?)->())?) {
let param = ["IdentifyGetHKAcceptOperateGuid":2]
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Principle.getApprovalLetterApi
let _ = YHNetRequest.getRequest(url: strUrl,params: param) { [weak self] json, code in
//1. json字符串 转 对象
......@@ -37,13 +39,29 @@ extension YHPrincleViewModel {
printLog("model 是 ==> \(json)")
if json.code == 200 {
// guard let resultModel = YHPrincipleAlertStatusModel.deserialize(dict: dic as? [AnyHashable : Any]) else {
// let err = YHErrorModel(errorCode: YHErrorCode.dictParseError.rawValue, errorMsg: YHErrorCode.dictParseError.description())
// callback?(false, err)
// return
// }
// self.alertStatusModel = resultModel
// callback?(true, nil)
let dic = json.data
guard let resultModel = YHOfficalLetterListModel.deserialize(dict: dic as? [AnyHashable : Any]) else {
let err = YHErrorModel(errorCode: YHErrorCode.dictParseError.rawValue, errorMsg: YHErrorCode.dictParseError.description())
callback?(false, err)
return
}
var arrList : [YHOfficalLetterModel] = []
for (index,item) in resultModel.list.enumerated() {
//
let oldString = UserDefaults.standard.value(forKey: String(item.id))
if let tempStr = oldString as? String, tempStr.isEmpty == false {
item.localShowFlag = true
} else {
item.localShowFlag = false
}
arrList.append(item)
}
resultModel.list = arrList
self.lettersModel = resultModel
callback?(true, nil)
} else {
let err = YHErrorModel(errorCode: Int32(json.code), errorMsg: json.msg.isEmpty ? "" : json.msg)
......
......@@ -21,4 +21,17 @@ extension Int {
return ""
}
}
//先生 女士
public func gentlemanDescribe() -> String {
//0未知 1男 2女
switch self {
case 1:
return "先生"
case 2:
return "女士"
default:
return ""
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment