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

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

# Conflicts:
#	galaxy/galaxy.xcodeproj/project.pbxproj
parents 236c0d57 9edaf993
......@@ -42,7 +42,7 @@ platform :ios do
# 显示git当前分支最新submit id
sh "git rev-parse HEAD"
# 更新pod第三方库
cocoapods(use_bundle_exec: true)
#cocoapods(use_bundle_exec: true)
# 先清空打包路径下的文件
sh "pwd"
......
......@@ -561,6 +561,7 @@
A537126F2C64EA0800FF1844 /* officalsuccess.gif in Resources */ = {isa = PBXBuildFile; fileRef = A537126E2C64EA0800FF1844 /* officalsuccess.gif */; };
A53B61122BB128AF0010B573 /* YHFileListItemsView2.swift in Sources */ = {isa = PBXBuildFile; fileRef = A53B61112BB128AF0010B573 /* YHFileListItemsView2.swift */; };
A53B61192BB3C9960010B573 /* YHMyDocListHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A53B61182BB3C9960010B573 /* YHMyDocListHeaderView.swift */; };
A54A07C92C7F478200F749AB /* YHTravelHKDLGuideSheetView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A54A07C82C7F478200F749AB /* YHTravelHKDLGuideSheetView.swift */; };
A554A5122B99715000EA5973 /* YHConstantArrayData.swift in Sources */ = {isa = PBXBuildFile; fileRef = A554A5112B99715000EA5973 /* YHConstantArrayData.swift */; };
A5551FFE2B4C26CE00510980 /* YHBaseViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5551FFD2B4C26CE00510980 /* YHBaseViewModel.swift */; };
A5573ED22B317BFF00D98EC0 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5573ED12B317BFF00D98EC0 /* AppDelegate.swift */; };
......@@ -1338,6 +1339,7 @@
A537126E2C64EA0800FF1844 /* officalsuccess.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = officalsuccess.gif; sourceTree = "<group>"; };
A53B61112BB128AF0010B573 /* YHFileListItemsView2.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHFileListItemsView2.swift; sourceTree = "<group>"; };
A53B61182BB3C9960010B573 /* YHMyDocListHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHMyDocListHeaderView.swift; sourceTree = "<group>"; };
A54A07C82C7F478200F749AB /* YHTravelHKDLGuideSheetView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHTravelHKDLGuideSheetView.swift; sourceTree = "<group>"; };
A554A5112B99715000EA5973 /* YHConstantArrayData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHConstantArrayData.swift; sourceTree = "<group>"; };
A5551FFD2B4C26CE00510980 /* YHBaseViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHBaseViewModel.swift; sourceTree = "<group>"; };
A5573ECE2B317BFF00D98EC0 /* galaxy.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = galaxy.app; sourceTree = BUILT_PRODUCTS_DIR; };
......@@ -2652,12 +2654,12 @@
046A952B2C6EFA710059326A /* Certificate(办证段) */ = {
isa = PBXGroup;
children = (
A598E9D42C7C9CD100F84739 /* TravelDocumentsPreparation(6 旅行证件准备) */,
049D62C32C6F259D00E811A1 /* FamilyInfoConfirm(1 家庭信息确认) */,
0430E63C2C72DB48000511E2 /* AddAdopters(2新增受养人) */,
04256DD72C72D9C200A37BA4 /* AppointCertificate(3 赴港办证预约) */,
04256E0F2C75BD2400A37BA4 /* VisaPayment(4电子签字缴费) */,
0480582C2C7CA6CD00502CAA /* GuideToHongKong(5 赴港行程指南) */,
A598E9D42C7C9CD100F84739 /* TravelDocumentsPreparation(6 旅行证件准备) */,
A5CA3F4C2C74471C00EB22F5 /* UploadCertificate(7上传过关证件) */,
);
path = "Certificate(办证段)";
......@@ -3511,6 +3513,7 @@
048058322C7DC0CF00502CAA /* YHTravelCertificateTipsCell.swift */,
048058362C7F03B500502CAA /* YHTravelCertificateUploadCell.swift */,
048058382C7F289700502CAA /* YHTravelCertificateItemView.swift */,
A54A07C82C7F478200F749AB /* YHTravelHKDLGuideSheetView.swift */,
);
path = V;
sourceTree = "<group>";
......@@ -4871,6 +4874,7 @@
04A271252BAC33BB00652B1B /* YHFilePreviewTool.swift in Sources */,
045EEEC32B9F171A0022A143 /* YHOtherResidenceFillView.swift in Sources */,
045EEE792B9F171A0022A143 /* YHPreviewViewModel.swift in Sources */,
A54A07C92C7F478200F749AB /* YHTravelHKDLGuideSheetView.swift in Sources */,
04174D782BCD5B74000BA46D /* YHMessageListVC.swift in Sources */,
0430E6742C74A02B000511E2 /* YHAdopterIdCardViewController.swift in Sources */,
A517A4E12BB573EB000DEECD /* YHDocListCell.swift in Sources */,
......
......@@ -8,10 +8,61 @@
import UIKit
import Alamofire
//import SmartCodable
import SmartCodable
class YHSmallWhiteBarInfo: SmartCodable {
var start_time : String = ""//开始时间
var end_time : String = ""//结束时间
required init() {
}
}
class YHBaseViewModel {
// 上传方法
// MARK: 属性
var smallWhiteBarInfo : YHSmallWhiteBarInfo?
// MARK: 接口
//1、获取小白条信息
func getSmallWhiteBarInfoByOcr(_ url: String, callBackBlock:@escaping (_ success: Bool, _ error:YHErrorModel?)->()) {
if YHNetworkStatusManager.shared.isNetWorkOK == false {
DispatchQueue.main.async {
YHHUD.flash(message: "网络不可用,请检查网络设置")
let errorModel = YHErrorModel(errorCode: 0, errorMsg: "网络不可用,请检查网络设置")
callBackBlock(false, errorModel)
return
}
return
}
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.OCR.smallWhiteBarApi
let params: [String : Any] = ["url": url]
let _ = YHNetRequest.postRequest(url: strUrl, params: params) { [weak self] json, code in
//1. json字符串 转 对象
guard let self = self else { return }
if json.code == 200 {
let dic = json.data
guard let result = YHSmallWhiteBarInfo.deserialize(dict:dic as? [AnyHashable: Any]) else {
self.smallWhiteBarInfo = nil
callBackBlock(false, nil)
return
}
self.smallWhiteBarInfo = result
callBackBlock(true, nil)
} else {
self.smallWhiteBarInfo = nil
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
callBackBlock(false, error)
}
} failBlock: { err in
self.smallWhiteBarInfo = nil
callBackBlock(false,err)
}
}
// 图片上传
func uploadImage(_ image: UIImage, _ isPublic: Bool = false, callBackBlock:@escaping (_ success: String?, _ error:YHErrorModel?)->()) {
//#if DEBUG
// let size = image.imageSize()
......@@ -38,21 +89,8 @@ class YHBaseViewModel {
}
}
//获取公链URL
func getPublicImageUrl(_ url: String, _ isPublic: Bool = false, callBackBlock:@escaping (_ success: String?, _ error:YHErrorModel?)->()) {
// let strUrl = YHBaseUrlManager.shared.curOssURL() + YHAllApiName.OSS.getPublicApi
// let param: [String: Any] = ["fileUrl": url]
// let _ = YHNetRequest.getRequest(url: strUrl, params: param) { [weak self] json, code in
// //1. json字符串 转 对象
// guard let _ = self else { return }
// if json.code == 200 {
// callBackBlock(json.data as? String, nil)
// } else {
// let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
// callBackBlock(nil, error)
// }
// } failBlock: { err in
// callBackBlock(nil,err)
// }
if YHNetworkStatusManager.shared.isNetWorkOK == false {
DispatchQueue.main.async {
YHHUD.flash(message: "网络不可用,请检查网络设置")
......@@ -73,44 +111,9 @@ class YHBaseViewModel {
}
}
//换取多张图片
func getPublicImageUrls(_ url: [String], callBackBlock:@escaping (_ success: [String : Any]?, _ error:YHErrorModel?)->()) {
let strUrl = YHBaseUrlManager.shared.curOssURL() + YHAllApiName.OSS.getPublicApi
let param: [String: Any] = ["fileUrl": url]
let _ = YHNetRequest.getRequest(url: strUrl, params: param) { [weak self] json, code in
//1. json字符串 转 对象
guard let _ = self else { return }
if json.code == 200 {
callBackBlock(json.data as? [String : Any], nil)//使用的同学完善
} else {
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
callBackBlock(nil, error)
}
} failBlock: { err in
callBackBlock(nil,err)
}
}
// 上传方法
func uploadFile(_ url: String, _ isPublic: Bool = false, callBackBlock:@escaping (_ success: String?, _ error:YHErrorModel?)->()) {
// let strUrl = YHBaseUrlManager.shared.curOssURL() + YHAllApiName.OSS.uploadApi
// printLog("\(url)")
// let boundary = UUID().uuidString
// let headers: HTTPHeaders = [
// "Content-type": "multipart/form-data; boundary=\(boundary)",
// "businessCode": "4001001"
// ]
// let _ = YHNetRequest.uplaodFileRequest(url: strUrl, headers: headers, fileUrl: url) { [weak self] json, code in
// guard let self = self else { return }
// if json.code == 200 {
// callBackBlock(json.data as? String, nil)
// } else {
// let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
// callBackBlock(nil, error)
// }
// } failBlock: { err in
// callBackBlock(nil, err)
// }
if YHNetworkStatusManager.shared.isNetWorkOK == false {
DispatchQueue.main.async {
YHHUD.flash(message: "网络不可用,请检查网络设置")
......
//
// YHTravelHKDLGuideSheetView.swift
// galaxy
//
// Created by davidhuangA on 2024/8/28.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
/*
澳通行证逗留(D)-办理操作指
*/
class YHTravelHKDLGuideSheetView: UIView {
typealias Block = () -> ()
var block: Block?
lazy var blackMaskView: UIView = {
let view = UIView()
view.backgroundColor = UIColor(hex: 0x0F1214, alpha: 0.5)
// let tap = UITapGestureRecognizer(target: self, action: #selector(dismiss))
// view.addGestureRecognizer(tap)
return view
}()
lazy var whiteContentView: UIView = {
let view = UIView()
view.backgroundColor = .white
return view
}()
lazy var bottomView: UIView = {
let view = UIView()
view.backgroundColor = .clear
view.addSubview(self.rewardBtn)
self.rewardBtn.snp.makeConstraints { make in
make.top.equalToSuperview().offset(10)
make.left.equalTo(kMargin)
make.right.equalTo(-kMargin)
make.height.equalTo(44)
}
view.layer.zPosition = 10
return view
}()
lazy var closeBtn: UIButton = {
let button = UIButton(type: .custom)
button.addTarget(self, action: #selector(dismiss), for: .touchUpInside)
button.setImage(UIImage(named: "work_example_close"), for: .normal)
button.setImage(UIImage(named: "work_example_close"), for: .selected)
return button
}()
//知道了
lazy var rewardBtn: UIButton = {
let button = UIButton(type: .custom)
button.titleLabel?.font = UIFont.PFSC_M(ofSize: 15)
button.contentHorizontalAlignment = .center
button.setTitle("知道了", for: .normal)
button.setTitleColor(UIColor.white, for: .normal)
button.layer.cornerRadius = kCornerRadius3
button.clipsToBounds = true
button.addTarget(self, action: #selector(clickSureBtn), for: .touchUpInside)
button.backgroundColor = UIColor.brandMainColor
return button
}()
lazy var myScrollView: UIScrollView = {
let view = UIScrollView()
view.backgroundColor = .clear
view.showsVerticalScrollIndicator = false
// view.delegate = self
return view
}()
lazy var bkgImageV: UIImageView = {
let imageV = UIImageView()
imageV.image = UIImage(named: "travel_hkcard_guide_tips")
imageV.contentMode = .scaleToFill
imageV.clipsToBounds = true
return imageV
}()
lazy var bkgImageV2: UIImageView = {
let imageV = UIImageView()
imageV.image = UIImage(named: "travel_hkcard_guide_bkg")
imageV.contentMode = .scaleToFill
imageV.clipsToBounds = true
return imageV
}()
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override init(frame: CGRect) {
super.init(frame: frame)
setupUI()
}
}
extension YHTravelHKDLGuideSheetView {
static func sheetView() -> YHTravelHKDLGuideSheetView {
let view = YHTravelHKDLGuideSheetView(frame:UIScreen.main.bounds)
return view
}
func show() {
UIApplication.shared.yhKeyWindow()?.addSubview(self)
UIView.animate(withDuration: 0.5) {
let whiteHeight = 546.0
self.whiteContentView.frame = CGRect(x: 0, y: KScreenHeight - whiteHeight, width: KScreenWidth, height: whiteHeight)
}
}
@objc func dismiss() {
self.removeFromSuperview()
}
@objc func clickSureBtn() {
self.block?()
dismiss()
}
}
private extension YHTravelHKDLGuideSheetView {
func setupUI() {
self.addSubview(blackMaskView)
self.addSubview(whiteContentView)
let corner = UIRectCorner(rawValue: UIRectCorner.topLeft.rawValue | UIRectCorner.topRight.rawValue)
let path = UIBezierPath(roundedRect:bounds,byRoundingCorners: corner,cornerRadii:CGSizeMake(16.0, 16.0));
let layer = CAShapeLayer();
layer.frame = whiteContentView.bounds;
layer.path = path.cgPath;
whiteContentView.layer.mask = layer;
whiteContentView.clipsToBounds = true
blackMaskView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
let whiteHeight = 546.0
whiteContentView.frame = CGRect(x: 0, y: KScreenHeight, width: KScreenWidth, height: whiteHeight)
whiteContentView.addSubview(bkgImageV2)
bkgImageV2.snp.makeConstraints { make in
make.top.left.right.equalToSuperview()
make.height.equalTo(375)
}
whiteContentView.addSubview(bottomView)
bottomView.snp.makeConstraints { make in
make.bottom.left.right.equalToSuperview()
make.height.equalTo(98)
}
whiteContentView.addSubview(myScrollView)
myScrollView.snp.makeConstraints { make in
make.top.equalToSuperview().offset(20)
make.right.equalToSuperview()
make.width.equalTo(KScreenWidth)
make.height.equalTo(whiteHeight-98 - 20)
}
if let tmpImage = UIImage(named:"travel_hkcard_guide_tips") {
let scale = Double(tmpImage.size.height / tmpImage.size.width)
let imageH = scale * KScreenWidth
myScrollView.addSubview(bkgImageV)
bkgImageV.snp.makeConstraints { make in
make.top.left.equalToSuperview()
make.width.equalTo(KScreenWidth)
make.height.equalTo(imageH)
}
myScrollView.contentSize = CGSize(width: KScreenWidth, height: imageH)
}
whiteContentView.addSubview(closeBtn)
closeBtn.snp.makeConstraints { make in
make.right.equalToSuperview().offset(-21)
make.top.equalToSuperview().offset(17)
make.height.width.equalTo(24)
}
}
}
......@@ -163,8 +163,6 @@ private extension YHUploadCertificateDetailVC {
return false
}
if detailType == .SmallWhiteNote {
if startDateStr.isEmpty {
......@@ -318,6 +316,28 @@ private extension YHUploadCertificateDetailVC {
self.uploadImageUrl = url
self.cardButton.setBackgroundImage(image, for: .normal)
self.cardButton.isHidden = false
if detailType == .SmallWhiteNote {
self.viewModel.getPublicImageUrl(url) {[weak self] success, error in
guard let self = self else { return }
guard let url = success else { return }
//进行ocr识别
self.viewModel.getSmallWhiteBarInfoByOcr(url) { success, error in
if success {
if let tmpModel = self.viewModel.smallWhiteBarInfo {
self.startDateStr = tmpModel.start_time
self.endDateStr = tmpModel.end_time
self.startDateItem.updateDate(date: self.startDateStr)
self.endDateItem.updateDate(date: self.endDateStr)
}
}
}
}
}
}
}
} else {
......
......@@ -155,6 +155,7 @@ class YHFamilyMemberViewModel : YHBaseViewModel{
}
}
//orc识别 中国身份证
func requestCnIDCardMessage(_ url: String, isBack: Int, callBackBlock:@escaping (_ success: Bool, _ error:YHErrorModel?)->()) {
let strUrl = YHBaseUrlManager.shared.curOssURL() + YHAllApiName.OCR.cn
let params: [String : Any] = ["url": url,
......@@ -179,6 +180,7 @@ class YHFamilyMemberViewModel : YHBaseViewModel{
}
}
//orc识别 港澳通行证
func requestHkIDCardMessage(_ url: String, isBack: Int, callBackBlock:@escaping (_ success: Bool, _ error:YHErrorModel?)->()) {
let strUrl = YHBaseUrlManager.shared.curOssURL() + YHAllApiName.OCR.hk
let params: [String : Any] = ["url": url,
......
......@@ -11,8 +11,8 @@ import Alamofire
import Kingfisher
enum YHCardType: Int {
case identity = 0
case passport = 1
case identity = 0 //中国身份证
case passport = 1 //港澳通行证
}
class YHMainInformationCardTableViewCell: UITableViewCell {
......
......@@ -298,9 +298,14 @@ class YHAllApiName {
}
struct OCR {
//中国身份证识别
static let cn = "ocr/id_card/recognize"
//港澳通行证识别
static let hk = "ocr/permit/recognize"
//普通文本识别 - eg:图片中扣字
static let normal = "ocr/advanced/recognize"
//小白条识别
static let smallWhiteBarApi = "super-app/small-white-bar/read"
}
//我的签字
......
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "头部背景图@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "头部背景图@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "Group 2033195761@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "Group 2033195761@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