Commit ae3125bf authored by David黄金龙's avatar David黄金龙

代码合并

parents 4f79df52 94e5bc52
This diff is collapsed.
...@@ -205,7 +205,7 @@ extension AppDelegate { ...@@ -205,7 +205,7 @@ extension AppDelegate {
let homeVC = YHHomeHoldViewPageViewController() let homeVC = YHHomeHoldViewPageViewController()
tabBarController.delegate = homeVC tabBarController.delegate = homeVC
let v0 = YHNavigationController(rootVC:homeVC) let v0 = YHNavigationController(rootVC:homeVC)
let v1 = YHNavigationController(rootVC:YHServiceCenterMainViewController()) let v1 = YHNavigationController(rootVC:YHServiceCenterViewController())
let v2 = YHNavigationController(rootVC:YHCommunityViewController()) let v2 = YHNavigationController(rootVC:YHCommunityViewController())
let v3 = YHNavigationController(rootVC:YHMyViewController()) let v3 = YHNavigationController(rootVC:YHMyViewController())
......
...@@ -15,10 +15,11 @@ class YHButlerServiceViewModel { ...@@ -15,10 +15,11 @@ class YHButlerServiceViewModel {
let params: [String : Any] = ["yh_id": id] let params: [String : Any] = ["yh_id": id]
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.QiYu.userInfomation let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.QiYu.userInfomation
let _ = YHNetRequest.getRequest(url: strUrl, params: params) { [weak self] json, code in let _ = YHNetRequest.getRequest(url: strUrl, params: params) { [weak self] json, code in
guard let data = json.data, let jsonData = try? JSONSerialization.data(withJSONObject: data, options: []), let dataString = jsonData.string(encoding: .utf8) else { guard let data = json.data?.peel as? [String : Any], let dataString = data.yh_toJSONString() else {
callBackBlock(nil, nil, YHErrorModel()) callBackBlock(nil, nil, YHErrorModel())
return return
} }
let avatar = self?.getAvatarFromJsonObject(data) let avatar = self?.getAvatarFromJsonObject(data)
callBackBlock(dataString, avatar, nil) callBackBlock(dataString, avatar, nil)
} failBlock: { err in } failBlock: { err in
......
...@@ -12,14 +12,15 @@ import SmartCodable ...@@ -12,14 +12,15 @@ import SmartCodable
class YHFriendListModel: SmartCodable { class YHFriendListModel: SmartCodable {
var friends: [YHFriendModel] = [] var friends: [YHFriendModel] = []
var applyFriends: [YHFriendModel] = [] var applyFriends: [YHFriendModel] = []
required init() {
}
enum CodingKeys: String, CodingKey { enum CodingKeys: String, CodingKey {
case friends case friends
case applyFriends = "apply_friends" case applyFriends = "apply_friends"
} }
required init() {
}
} }
class YHFriendModel: SmartCodable { class YHFriendModel: SmartCodable {
......
...@@ -22,7 +22,6 @@ class YHMatchUserViewModel: NSObject { ...@@ -22,7 +22,6 @@ class YHMatchUserViewModel: NSObject {
[weak self] json, code in [weak self] json, code in
//1. json字符串 转 对象 //1. json字符串 转 对象
guard let self = self else { return } guard let self = self else { return }
printLog(json)
if json.code == 200 { if json.code == 200 {
guard let dic = json.data?.peel as? [Any],let resultModel = [YHMatchUserInfo].deserialize(from: dic) else { guard let dic = json.data?.peel as? [Any],let resultModel = [YHMatchUserInfo].deserialize(from: dic) else {
......
...@@ -183,7 +183,7 @@ private extension YHStartPageViewController { ...@@ -183,7 +183,7 @@ private extension YHStartPageViewController {
let homeVC = YHHomeHoldViewPageViewController() let homeVC = YHHomeHoldViewPageViewController()
tabBarController.delegate = homeVC tabBarController.delegate = homeVC
let v0 = YHNavigationController(rootVC:homeVC) let v0 = YHNavigationController(rootVC:homeVC)
let v1 = YHNavigationController(rootVC:YHServiceCenterMainViewController()) let v1 = YHNavigationController(rootVC:YHServiceCenterViewController())
let v2 = YHNavigationController(rootVC:YHCommunityViewController()) let v2 = YHNavigationController(rootVC:YHCommunityViewController())
let v3 = YHNavigationController(rootVC:YHMyViewController()) let v3 = YHNavigationController(rootVC:YHMyViewController())
......
...@@ -136,19 +136,12 @@ extension YHHomePageViewModel { ...@@ -136,19 +136,12 @@ extension YHHomePageViewModel {
self.isRequestHomeNewsDataFlag = false self.isRequestHomeNewsDataFlag = false
//1. json字符串 转 对象 //1. json字符串 转 对象
if json.code == 200 { if json.code == 200 {
guard let dic = json.data?.peel as? [String : Any] else { guard let dic = json.data?.peel as? [String : Any],let result = YHHomeListTotalModel.deserialize(from: dic) else {
self.arrHomeNewsData = [] self.arrHomeNewsData = []
callBackBlock(false,nil) callBackBlock(false,nil)
return return
} }
guard let result = YHHomeListTotalModel.deserialize(from: dic) else {
self.arrHomeNewsData = []
callBackBlock(false,nil)
return
}
for item in result.data { for item in result.data {
item.calHeightParam() item.calHeightParam()
} }
......
...@@ -117,7 +117,7 @@ extension YHOrderSearchViewController: UITableViewDelegate, UITableViewDataSourc ...@@ -117,7 +117,7 @@ extension YHOrderSearchViewController: UITableViewDelegate, UITableViewDataSourc
if self.mobile == model.mobile { if self.mobile == model.mobile {
self.navigationController?.popToRootViewController(animated: true) self.navigationController?.popToRootViewController(animated: true)
} else { } else {
let vc = YHServiceCenterMainViewController() let vc = YHServiceCenterViewController()
vc.model = model vc.model = model
self.navigationController?.pushViewController(vc) self.navigationController?.pushViewController(vc)
} }
......
//
// YHServerCenterHoldViewController.swift
// galaxy
//
// Created by EDY on 2024/9/10.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import JXSegmentedView
class YHServerCenterHoldViewController: UIViewController {
var mobile: String = ""
var orderId: Int = 0 {
didSet {
for i in 0..<arrItemTitles.count {
let vc = arrItemVCs[i] as YHServiceOrderListView
vc.type = i
if i == 1 {
vc.type = 2
}
if i == 2 {
vc.type = 1
}
vc.orderID = orderId
vc.mobile = mobile
vc.arrDataForSeviceCenterProgress = arrDataForSeviceCenterProgress
vc.state = state
vc.loadData()
}
}
}
var arrDataForSeviceCenterProgress: [YHServiceCenterProgressModel] = []
var state: Int = 0
var canScroll : Bool = false {
didSet {
for vc in arrItemVCs {
vc.vcCanScroll = canScroll
}
}
}
var controllerOne: YHServiceOrderListView = YHServiceOrderListView()
var controllerTwo: YHServiceOrderListView = YHServiceOrderListView()
var controllerThree: YHServiceOrderListView = YHServiceOrderListView()
var controllerFour: YHServiceOrderListView = YHServiceOrderListView()
var arrItemTitles = ["全部", "进行中", "待开始", "已完成"]
var arrItemVCs: [YHServiceOrderListView] = []
var segmentedView : JXSegmentedView = JXSegmentedView(frame: CGRect(x: 0, y: 0, width: KScreenWidth, height: 48))
lazy var segmentedDataSource: JXSegmentedDotDataSource = {
let dataSource = JXSegmentedDotDataSource()
dataSource.isTitleColorGradientEnabled = true
dataSource.titles = arrItemTitles
dataSource.titleNormalFont = UIFont.PFSC_M(ofSize: 14)
dataSource.titleNormalColor = .labelTextColor2
dataSource.titleSelectedFont = UIFont.PFSC_M(ofSize: 14)
dataSource.titleSelectedColor = .mainTextColor
dataSource.isItemSpacingAverageEnabled = false
dataSource.itemWidth = JXSegmentedViewAutomaticDimension
dataSource.itemSpacing = 16
dataSource.dotStates = [false, false, false, false]
dataSource.dotSize = CGSize(width: 6, height: 6)
return dataSource
}()
//分类title 所对应的VC
lazy var listContainerView: JXSegmentedListContainerView! = {
return JXSegmentedListContainerView(dataSource: self, type: .scrollView)
}()
override func viewDidLoad() {
super.viewDidLoad()
setupView()
// Do any additional setup after loading the view.
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
segmentedView.snp.remakeConstraints { make in
make.right.equalTo(-4)
make.left.equalTo(4)
make.top.equalTo(0)
make.height.equalTo(48)
}
listContainerView.snp.remakeConstraints { make in
make.right.left.equalToSuperview()
make.top.equalTo(segmentedView.snp.bottom)
make.bottom.equalToSuperview()
}
}
func setupView() {
view.backgroundColor = .clear
controllerOne.type = 0
controllerOne.orderID = orderId
controllerOne.block = {[weak self] type, count, flag in
guard let self = self else { return }
arrItemTitles[0] = "全部(\(count))"
self.updata(flag: flag, type: 0)
}
controllerTwo.type = 2
controllerTwo.orderID = orderId
controllerTwo.block = {[weak self] type, count, flag in
guard let self = self else { return }
arrItemTitles[1] = "进行中(\(count))"
self.updata(flag: flag, type: 2)
}
controllerThree.type = 1
controllerThree.orderID = orderId
controllerThree.block = {[weak self] type, count, flag in
guard let self = self else { return }
arrItemTitles[2] = "待开始(\(count))"
self.updata(flag: flag, type: 1)
}
controllerFour.type = 3
controllerFour.orderID = orderId
controllerFour.block = {[weak self] type, count, flag in
guard let self = self else { return }
arrItemTitles[3] = "已完成(\(count))"
self.updata(flag: flag, type: 3)
}
arrItemVCs.append(controllerOne)
arrItemVCs.append(controllerTwo)
arrItemVCs.append(controllerThree)
arrItemVCs.append(controllerFour)
//segmentedViewDataSource一定要通过属性强持有!!!!!!!!!
// segmentedView.backgroundColor = .clear
segmentedView.collectionView.backgroundColor = .white
// segmentedView.contentScrollView?.backgroundColor = .clear
view.addSubview(segmentedView)
segmentedView.listContainer = listContainerView
view.addSubview(listContainerView)
//分类Title
segmentedView.dataSource = segmentedDataSource
segmentedView.delegate = self
//配置指示器
let indicator = JXSegmentedIndicatorLineView()
indicator.indicatorWidth = 16
indicator.indicatorColor = UIColor.brandMainColor
indicator.indicatorCornerRadius = 0
indicator.verticalOffset = 4
segmentedView.indicators = [indicator]
segmentedView.backgroundColor = UIColor(red: 0.95, green: 0.95, blue: 0.95, alpha: 1)
segmentedView.defaultSelectedIndex = 1
}
func updata(flag: Bool, type: Int){
DispatchQueue.main.async {
self.segmentedDataSource.titles = self.arrItemTitles
if type == 3 {
self.segmentedDataSource.dotStates = [false,false,false,flag]
}
self.segmentedView.reloadData()
}
}
}
extension YHServerCenterHoldViewController: JXSegmentedViewDelegate {
func segmentedView(_ segmentedView: JXSegmentedView, didSelectedItemAt index: Int) {
// NotificationCenter.default.post(name: Notification.Name(rawValue: "scrollViewDidEndDragging"), object: nil)
}
/// 正在滚动中的回调
///
/// - Parameters:
/// - segmentedView: JXSegmentedView
/// - leftIndex: 正在滚动中,相对位置处于左边的index
/// - rightIndex: 正在滚动中,相对位置处于右边的index
/// - percent: 从左往右计算的百分比
func segmentedView(_ segmentedView: JXSegmentedView, scrollingFrom leftIndex: Int, to rightIndex: Int, percent: CGFloat) {
// NotificationCenter.default.post(name: Notification.Name(rawValue: "scrollViewWillBeginDragging"), object: nil)
}
}
extension YHServerCenterHoldViewController: JXSegmentedListContainerViewDataSource {
func numberOfLists(in listContainerView: JXSegmentedListContainerView) -> Int {
if let titleDataSource = segmentedView.dataSource as? JXSegmentedBaseDataSource {
return titleDataSource.dataSource.count
}
return 0
}
func listContainerView(_ listContainerView: JXSegmentedListContainerView, initListAt index: Int) -> JXSegmentedListContainerViewListDelegate {
return arrItemVCs[index]
}
}
...@@ -22,7 +22,6 @@ class YHServiceCenterMainViewController: YHBaseViewController { ...@@ -22,7 +22,6 @@ class YHServiceCenterMainViewController: YHBaseViewController {
var mobile: String = "" var mobile: String = ""
var model: YHContactItemModel = YHContactItemModel() var model: YHContactItemModel = YHContactItemModel()
var oldModel: YHContactItemModel = YHContactItemModel() var oldModel: YHContactItemModel = YHContactItemModel()
var doneCount: Int = 0
private lazy var topBkg : UIView = { private lazy var topBkg : UIView = {
let imagV = UIImageView() let imagV = UIImageView()
imagV.image = UIImage(named: "service_center_head_bkg4") imagV.image = UIImage(named: "service_center_head_bkg4")
...@@ -446,7 +445,6 @@ extension YHServiceCenterMainViewController { ...@@ -446,7 +445,6 @@ extension YHServiceCenterMainViewController {
guard let self = self else { return } guard let self = self else { return }
arrItemTitles[3] = "已完成(\(count))" arrItemTitles[3] = "已完成(\(count))"
self.updata(flag: flag, type: 3) self.updata(flag: flag, type: 3)
doneCount = count
self.getStep() self.getStep()
} }
arrItemVCs.append(controllerOne) arrItemVCs.append(controllerOne)
......
...@@ -130,7 +130,7 @@ class YHFamilyInfoConfirmViewModel: NSObject { ...@@ -130,7 +130,7 @@ class YHFamilyInfoConfirmViewModel: NSObject {
printLog("model 是 ==> \(json)") printLog("model 是 ==> \(json)")
if json.code == 200 { if json.code == 200 {
if let flag = json.data as? Bool { if let flag = json.data?.peel as? Bool {
self.isHaveShowRiskAlert = flag self.isHaveShowRiskAlert = flag
} else { } else {
self.isHaveShowRiskAlert = false self.isHaveShowRiskAlert = false
......
...@@ -126,7 +126,7 @@ extension YHPrincleViewModel { ...@@ -126,7 +126,7 @@ extension YHPrincleViewModel {
printLog("model 是 ==> \(json)") printLog("model 是 ==> \(json)")
if json.code == 200 { if json.code == 200 {
if let flag = json.data as? Bool { if let flag = json.data?.peel as? Bool {
self.isOfficialGuildCheckFlag = flag self.isOfficialGuildCheckFlag = flag
} else { } else {
self.isOfficialGuildCheckFlag = false self.isOfficialGuildCheckFlag = false
...@@ -290,7 +290,7 @@ extension YHPrincleViewModel { ...@@ -290,7 +290,7 @@ extension YHPrincleViewModel {
printLog("model 是 ==> \(json)") printLog("model 是 ==> \(json)")
if json.code == 200 { if json.code == 200 {
if let isSend = json.data as? Bool { if let isSend = json.data?.peel as? Bool {
callback?(isSend) callback?(isSend)
} else { } else {
callback?(false) callback?(false)
......
...@@ -28,7 +28,6 @@ class YHServiceSearchModel: SmartCodable { ...@@ -28,7 +28,6 @@ class YHServiceSearchModel: SmartCodable {
required init() { required init() {
} }
} }
class YHServiceProgressModel : SmartCodable { class YHServiceProgressModel : SmartCodable {
var title : String = "" var title : String = ""
var type : Int = 0 var type : Int = 0
...@@ -36,3 +35,22 @@ class YHServiceProgressModel : SmartCodable { ...@@ -36,3 +35,22 @@ class YHServiceProgressModel : SmartCodable {
required init() { required init() {
} }
} }
struct YHServiceStepProgressModel: SmartCodable {
var title : String = ""
var type : Int = 0
var list : [YHServiceStepProgressThreeModel] = []
}
struct YHServiceStepProgressThreeModel: SmartCodable {
var personStr : String = ""
var type : Int = 0
var list : [YHServiceCenterProgressModel] = []
}
struct YHServiceCenterMainModel: SmartCodable {
var applySection: YHServiceProgressModel = YHServiceProgressModel()
var certificateSection: YHServiceProgressModel = YHServiceProgressModel()
var renewalSection: YHServiceStepProgressModel = YHServiceStepProgressModel()
var stage: Int = 0 // 1 申请阶段 2办证阶段 3续期阶段
}
...@@ -77,7 +77,6 @@ class YHMyDocumentsDetailViewModel: YHBaseViewModel { ...@@ -77,7 +77,6 @@ class YHMyDocumentsDetailViewModel: YHBaseViewModel {
//1. json字符串 转 对象 //1. json字符串 转 对象
guard self != nil else { return } guard self != nil else { return }
if json.code == 200 { if json.code == 200 {
_ = json.data
callBackBlock(true, nil) callBackBlock(true, nil)
} else { } else {
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg) let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
...@@ -95,7 +94,6 @@ class YHMyDocumentsDetailViewModel: YHBaseViewModel { ...@@ -95,7 +94,6 @@ class YHMyDocumentsDetailViewModel: YHBaseViewModel {
//1. json字符串 转 对象 //1. json字符串 转 对象
guard self != nil else { return } guard self != nil else { return }
if json.code == 200 { if json.code == 200 {
_ = json.data
callBackBlock(true, nil) callBackBlock(true, nil)
} else { } else {
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg) let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
...@@ -115,7 +113,6 @@ class YHMyDocumentsDetailViewModel: YHBaseViewModel { ...@@ -115,7 +113,6 @@ class YHMyDocumentsDetailViewModel: YHBaseViewModel {
//1. json字符串 转 对象 //1. json字符串 转 对象
guard self != nil else { return } guard self != nil else { return }
if json.code == 200 { if json.code == 200 {
_ = json.data
callBackBlock(true, nil) callBackBlock(true, nil)
} else { } else {
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg) let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
...@@ -133,7 +130,7 @@ class YHMyDocumentsDetailViewModel: YHBaseViewModel { ...@@ -133,7 +130,7 @@ class YHMyDocumentsDetailViewModel: YHBaseViewModel {
//1. json字符串 转 对象 //1. json字符串 转 对象
guard let self = self else { return } guard let self = self else { return }
if json.code == 200 { if json.code == 200 {
self.pageUrl = json.data as? String self.pageUrl = json.data?.peel as? String
callBackBlock(true, nil) callBackBlock(true, nil)
} else { } else {
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg) let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
...@@ -195,8 +192,7 @@ class YHMyDocumentsDetailViewModel: YHBaseViewModel { ...@@ -195,8 +192,7 @@ class YHMyDocumentsDetailViewModel: YHBaseViewModel {
//1. json字符串 转 对象 //1. json字符串 转 对象
guard let self = self else { return } guard let self = self else { return }
if json.code == 200 { if json.code == 200 {
_ = json.data self.pageUrl = json.data?.peel as? String
self.pageUrl = json.data as? String
callBackBlock(true, nil) callBackBlock(true, nil)
} else { } else {
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg) let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
...@@ -239,12 +235,11 @@ class YHMyDocumentsDetailViewModel: YHBaseViewModel { ...@@ -239,12 +235,11 @@ class YHMyDocumentsDetailViewModel: YHBaseViewModel {
//1. json字符串 转 对象 //1. json字符串 转 对象
guard self != nil else { return } guard self != nil else { return }
if json.code == 200 { if json.code == 200 {
_ = json.data guard let dic = json.data?.peel as? [String : Any], let result = YHMySignatureURLModel.deserialize(from: dic) else {
// guard let result = YHMySignatureURLModel.deserialize(from: dic) else { callBackBlock(false,nil)
// callBackBlock(false,nil) return
// return }
// } self?.pageUrl = result.url
// self.pageUrl = result.url
callBackBlock(true, nil) callBackBlock(true, nil)
} else { } else {
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg) let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
......
...@@ -48,7 +48,7 @@ class YHMySignatureDetailViewModel: YHBaseViewModel { ...@@ -48,7 +48,7 @@ class YHMySignatureDetailViewModel: YHBaseViewModel {
//1. json字符串 转 对象 //1. json字符串 转 对象
guard let self = self else { return } guard let self = self else { return }
if json.code == 200 { if json.code == 200 {
self.pageUrl = json.data as? String self.pageUrl = json.data?.peel as? String
callBackBlock(true, nil) callBackBlock(true, nil)
} else { } else {
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg) let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
......
//
// YHResignMaterialUploadVC.swift
// galaxy
//
// Created by edy on 2024/9/9.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import JXSegmentedView
class YHResignMaterialListVC: YHBaseViewController {
var items:[YHResignMaterialInfo] = [] {
didSet {
self.tableView.reloadData()
}
}
// 列表是否是展开
var isUnfold = true
lazy var tableView: UITableView = {
let tableView = UITableView(frame:.zero, style:.grouped)
tableView.estimatedSectionHeaderHeight = 14.0
tableView.estimatedSectionFooterHeight = 1.0
tableView.showsVerticalScrollIndicator = false
tableView.separatorStyle = .none
tableView.delegate = self
tableView.dataSource = self
tableView.backgroundColor = UIColor(hexString:"#F8F9FB")
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "UITableViewCell")
tableView.register(YHResignMaterialCell.self, forCellReuseIdentifier: YHResignMaterialCell.cellReuseIdentifier)
tableView.backgroundView = emptyDataTipsView
return tableView
}()
lazy var emptyDataTipsView: YHEmptyDataView = {
let view = YHEmptyDataView.createView("没有找到相关资料哦~", kEmptyCommonBgName)
view.topMargin = 130
view.isHidden = true
return view
}()
lazy var previewFileTool:YHFilePreviewTool = {
let tool = YHFilePreviewTool(targetVC: self)
return tool
}()
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = .white
self.gk_navigationBar.isHidden = true
createUI()
}
func createUI() {
view.addSubview(tableView)
tableView.snp.makeConstraints { make in
make.top.left.right.equalToSuperview()
make.height.equalTo(KScreenHeight - k_Height_NavigationtBarAndStatuBar - YHResinMaterialManageContainerVC.segmentHeight-4)
}
getData()
}
func getData() {
self.tableView.reloadData()
}
}
extension YHResignMaterialListVC: UITableViewDelegate, UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int {
return items.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if 0 <= section && section < items.count {
let list = items[section]
return list.materials.count
}
return 0
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: YHResignMaterialCell.cellReuseIdentifier, for: indexPath) as! YHResignMaterialCell
if 0 <= indexPath.section && indexPath.section < items.count {
let list = items[indexPath.section]
if 0 <= indexPath.row, indexPath.row < list.materials.count {
let item = list.materials[indexPath.row]
cell.updateModel(item)
cell.templateBlock = {
[weak self] in
guard let self = self else { return }
let model = YHTemplateInfo()
let view = YHCertificateTemplateSheetView.templateView(model)
view.scanTemplateBlock = {
[weak self] path in
guard let self = self else { return }
if let url = path?.url, !url.isEmpty {
print(url)
self.previewFileTool.openXLSXRemoteFile(urlString:url, fileName:"预览")
}
}
view.show()
}
}
}
return cell
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableView.automaticDimension
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if 0 <= indexPath.section && indexPath.section < items.count {
// let item = items[indexPath.section]
//
// if item.checkStatus == YHCertificateUploadStatus.preUpload.rawValue { // 待上传
// showUploadSheetView(supplementId:item.id)
// return
// }
// // 非待上传的进入详情
// let vc = YHCertificateUploadContentListVC()
// vc.orderId = orderId ?? 0
// vc.categoryId = categoryInfo.categoryId
// vc.supplementId = item.id
// self.navigationController?.pushViewController(vc)
}
}
private func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> CGFloat {
return section == 0 ? 56.0 : 52.0
}
private func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> CGFloat {
return 0.01
}
func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
return UIView()
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let view = UIView()
let titleLabel = UILabel()
titleLabel.font = UIFont.PFSC_R(ofSize: 15)
titleLabel.textColor = .mainTextColor
view.addSubview(titleLabel)
if 0 <= section && section < items.count {
let info = items[section]
titleLabel.text = info.title
}
let img = isUnfold ? "resign_material_list_unfold" : "resign_material_list_fold"
let arrowImgV = UIImageView(image: UIImage(named: img))
view.addSubview(arrowImgV)
titleLabel.snp.makeConstraints { make in
make.left.equalTo(16)
make.top.equalTo(section == 0 ? 20.0 : 16.0)
make.right.equalTo(arrowImgV.snp.left)
make.bottom.equalTo(-16)
}
arrowImgV.snp.makeConstraints { make in
make.width.height.equalTo(21.0)
make.right.equalTo(-16)
make.top.equalTo(titleLabel)
}
return view
}
}
// MARK: - JXSegmentedListContainerViewListDelegate
extension YHResignMaterialListVC: JXSegmentedListContainerViewListDelegate {
func listView() -> UIView {
return view
}
}
...@@ -2,138 +2,17 @@ ...@@ -2,138 +2,17 @@
// YHResignMaterialUploadVC.swift // YHResignMaterialUploadVC.swift
// galaxy // galaxy
// //
// Created by edy on 2024/9/9. // Created by edy on 2024/9/10.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved. // Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
// //
import UIKit import UIKit
import JXSegmentedView
class YHResignMaterialUploadVC: YHBaseViewController { class YHResignMaterialUploadVC: YHBaseViewController {
var items:[[YHSupplementInfo]] = []
lazy var tableView: UITableView = {
let tableView = UITableView(frame:.zero, style:.grouped)
tableView.estimatedSectionHeaderHeight = 14.0
tableView.estimatedSectionFooterHeight = 1.0
tableView.showsVerticalScrollIndicator = false
tableView.separatorStyle = .none
tableView.delegate = self
tableView.dataSource = self
tableView.backgroundColor = UIColor(hexString:"#F8F8F8")
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "UITableViewCell")
tableView.register(YHCertificateInfoCell.self, forCellReuseIdentifier: YHCertificateInfoCell.cellReuseIdentifier)
tableView.backgroundView = emptyDataTipsView
return tableView
}()
lazy var emptyDataTipsView: YHEmptyDataView = {
let view = YHEmptyDataView.createView("没有找到相关资料哦~", kEmptyCommonBgName)
view.topMargin = 130
view.isHidden = false
return view
}()
lazy var previewFileTool:YHFilePreviewTool = {
let tool = YHFilePreviewTool(targetVC: self)
return tool
}()
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
// Do any additional setup after loading the view.
}
}
extension YHResignMaterialUploadVC: UITableViewDelegate, UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int {
return items.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if 0 <= section && section < items.count {
let arr = items[section]
return arr.count
}
return 0
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: YHResignMaterialCell.cellReuseIdentifier, for: indexPath) as! YHResignMaterialCell
if 0 <= indexPath.section && indexPath.section < items.count {
let arr = items[indexPath.section]
if 0 <= indexPath.row, indexPath.row < arr.count {
let item = arr[indexPath.row]
cell.updateModel(item)
cell.templateBlock = {
[weak self] in
guard let self = self else { return }
let view = YHCertificateTemplateSheetView.templateView(item.templateInfo)
view.scanTemplateBlock = {
[weak self] path in
guard let self = self else { return }
if let url = path?.url, !url.isEmpty {
print(url)
self.previewFileTool.openXLSXRemoteFile(urlString:url, fileName:"预览")
}
}
view.show()
}
}
}
return cell
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableView.automaticDimension
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if 0 <= indexPath.section && indexPath.section < items.count {
// let item = items[indexPath.section]
//
// if item.checkStatus == YHCertificateUploadStatus.preUpload.rawValue { // 待上传
// showUploadSheetView(supplementId:item.id)
// return
// }
// // 非待上传的进入详情
// let vc = YHCertificateUploadContentListVC()
// vc.orderId = orderId ?? 0
// vc.categoryId = categoryInfo.categoryId
// vc.supplementId = item.id
// self.navigationController?.pushViewController(vc)
}
}
private func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> CGFloat {
return 0.01
}
private func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> CGFloat {
return 0.01
}
func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
return UIView()
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
return UIView()
}
}
// MARK: - JXSegmentedListContainerViewListDelegate
extension YHResignMaterialUploadVC: JXSegmentedListContainerViewListDelegate {
func listView() -> UIView {
return view
} }
} }
...@@ -9,11 +9,16 @@ ...@@ -9,11 +9,16 @@
import UIKit import UIKit
import JXSegmentedView import JXSegmentedView
class YHResinMaterialManageListVC: YHBaseViewController { class YHResinMaterialManageContainerVC: YHBaseViewController {
static let segmentHeight = 49.0 static let segmentHeight = 40.0
let viewModel = YHResignMaterialViewModel()
var titles = ["全部", "待上传(0)", "已驳回(0)", "审核中(0)", "已完成(0)"] var titles = ["全部", "待上传(0)", "已驳回(0)", "审核中(0)", "已完成(0)"]
var itemVCs:[YHResignMaterialUploadVC] = [] let itemVCs:[YHResignMaterialListVC] = [YHResignMaterialListVC(),
YHResignMaterialListVC(),
YHResignMaterialListVC(),
YHResignMaterialListVC(),
YHResignMaterialListVC()]
//分类title 所对应的VC //分类title 所对应的VC
lazy var listContainerView: JXSegmentedListContainerView! = { lazy var listContainerView: JXSegmentedListContainerView! = {
...@@ -27,7 +32,8 @@ class YHResinMaterialManageListVC: YHBaseViewController { ...@@ -27,7 +32,8 @@ class YHResinMaterialManageListVC: YHBaseViewController {
//配置指示器 //配置指示器
let indicator = JXSegmentedIndicatorLineView() let indicator = JXSegmentedIndicatorLineView()
indicator.indicatorWidth = 16 indicator.indicatorWidth = 16
indicator.indicatorHeight = 4.0 indicator.indicatorHeight = 2.0
indicator.indicatorCornerRadius = 0.0
indicator.indicatorColor = .brandMainColor indicator.indicatorColor = .brandMainColor
segview.indicators = [indicator] segview.indicators = [indicator]
segview.backgroundColor = .clear segview.backgroundColor = .clear
...@@ -47,37 +53,45 @@ class YHResinMaterialManageListVC: YHBaseViewController { ...@@ -47,37 +53,45 @@ class YHResinMaterialManageListVC: YHBaseViewController {
dataSource.isTitleColorGradientEnabled = true dataSource.isTitleColorGradientEnabled = true
dataSource.titles = titles dataSource.titles = titles
dataSource.titleNormalFont = UIFont.PFSC_R(ofSize: 14) dataSource.titleNormalFont = UIFont.PFSC_R(ofSize: 14)
dataSource.titleNormalColor = .labelTextColor2 dataSource.titleNormalColor = .yhGreyColor
dataSource.titleSelectedFont = UIFont.PFSC_M(ofSize: 16) dataSource.titleSelectedFont = UIFont.PFSC_M(ofSize: 14)
dataSource.titleSelectedColor = UIColor(hexString: "#000000")! dataSource.titleSelectedColor = .mainTextColor
dataSource.isItemSpacingAverageEnabled = false dataSource.isItemSpacingAverageEnabled = false
dataSource.itemWidth = JXSegmentedViewAutomaticDimension dataSource.itemWidth = JXSegmentedViewAutomaticDimension
dataSource.itemSpacing = 24 dataSource.titleSelectedZoomScale = 1.0
dataSource.itemSpacing = 16
return dataSource return dataSource
}() }()
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
createUI()
} }
func setupUI() { override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
requestData()
}
func createUI() {
self.gk_navTitle = "续签资料管理"
self.view.backgroundColor = .white
view.addSubview(segmentContainerView) view.addSubview(segmentContainerView)
segmentContainerView.addSubview(segmentedView) segmentContainerView.addSubview(segmentedView)
view.addSubview(listContainerView) view.addSubview(listContainerView)
segmentContainerView.snp.makeConstraints { make in segmentContainerView.snp.makeConstraints { make in
make.left.right.equalToSuperview() make.left.equalToSuperview().offset(4.0)
make.right.equalToSuperview().offset(-4)
make.top.equalToSuperview().offset(k_Height_NavigationtBarAndStatuBar) make.top.equalToSuperview().offset(k_Height_NavigationtBarAndStatuBar)
make.height.equalTo(Self.segmentHeight+4) make.height.equalTo(Self.segmentHeight+4)
} }
segmentedView.snp.makeConstraints { make in segmentedView.snp.makeConstraints { make in
make.top.left.equalToSuperview() make.top.left.equalToSuperview()
make.right.equalToSuperview().offset(-21-18) make.right.equalToSuperview()
make.height.equalTo(Self.segmentHeight) make.height.equalTo(Self.segmentHeight)
} }
...@@ -87,9 +101,41 @@ class YHResinMaterialManageListVC: YHBaseViewController { ...@@ -87,9 +101,41 @@ class YHResinMaterialManageListVC: YHBaseViewController {
make.bottom.equalToSuperview() make.bottom.equalToSuperview()
} }
} }
func requestData() {
let params: [String : Any] = ["order_id" : 151336,
"id" : 351]
viewModel.getMaterialList(param: params) { success, error in
for (index, vc) in self.itemVCs.enumerated() {
if index == 0 {
vc.items = self.viewModel.allGroup.getDataArr()
} else if index == 1 {
vc.items = self.viewModel.preuploadGroup.getDataArr()
} else if index == 2 {
vc.items = self.viewModel.rejectedGroup.getDataArr()
} else if index == 3 {
vc.items = self.viewModel.reviewGroup.getDataArr()
} else if index == 4 {
vc.items = self.viewModel.finishGroup.getDataArr()
}
}
self.titles = ["全部",
"带上传(\(self.viewModel.preuploadGroup.getTotalCount()))",
"已驳回(\(self.viewModel.rejectedGroup.getTotalCount()))",
"审核中(\(self.viewModel.reviewGroup.getTotalCount()))",
"已完成(\(self.viewModel.finishGroup.getTotalCount()))",]
self.segmentedDataSource.titles = self.titles
self.segmentedView.reloadDataWithoutListContainer()
}
}
} }
extension YHResinMaterialManageListVC: JXSegmentedListContainerViewDataSource { extension YHResinMaterialManageContainerVC: JXSegmentedListContainerViewDataSource {
func numberOfLists(in listContainerView: JXSegmentedListContainerView) -> Int { func numberOfLists(in listContainerView: JXSegmentedListContainerView) -> Int {
if let titleDataSource = segmentedView.dataSource as? JXSegmentedBaseDataSource { if let titleDataSource = segmentedView.dataSource as? JXSegmentedBaseDataSource {
...@@ -99,11 +145,15 @@ extension YHResinMaterialManageListVC: JXSegmentedListContainerViewDataSource { ...@@ -99,11 +145,15 @@ extension YHResinMaterialManageListVC: JXSegmentedListContainerViewDataSource {
} }
func listContainerView(_ listContainerView: JXSegmentedListContainerView, initListAt index: Int) -> JXSegmentedListContainerViewListDelegate { func listContainerView(_ listContainerView: JXSegmentedListContainerView, initListAt index: Int) -> JXSegmentedListContainerViewListDelegate {
return itemVCs[index]
if 0 <= index, index < itemVCs.count {
return itemVCs[index]
}
return YHResignMaterialListVC()
} }
} }
extension YHResinMaterialManageListVC: JXSegmentedViewDelegate { extension YHResinMaterialManageContainerVC: JXSegmentedViewDelegate {
func segmentedView(_ segmentedView: JXSegmentedView, didSelectedItemAt index: Int) { func segmentedView(_ segmentedView: JXSegmentedView, didSelectedItemAt index: Int) {
if 0 <= index && index < itemVCs.count { if 0 <= index && index < itemVCs.count {
......
//
// YHMaterialListModel.swift
// galaxy
//
// Created by edy on 2024/9/10.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import SmartCodable
enum YHMaterialType: String {
// 资料类型(CERT=证件资料 WORK=工作资料 LIVE=生活资料)
case cer = "CERT"
case work = "WORK"
case live = "LIVE"
}
enum YHMaterialStatus: String {
case all = "ALL" // 自定义
// (未开始=NOT_OPEN 待上传=TO_BE_UPLOAD 待审核= PENDING_AUDIT 已驳回=REJECTED 已完成= COMPLETED)
case unOpen = "NOT_OPEN"
case preUpload = "TO_BE_UPLOAD"
case review = "PENDING_AUDIT"
case rejected = "REJECTED"
case completed = "COMPLETED"
}
class YHMaterialListModel: SmartCodable {
var id: Int = 0
var order_sn: String = ""
var status: String = ""
var stay_deadline: String = ""
var material: [YHMaterialModel] = []
var members: [YHMembersModel] = []
required init() {
}
}
class YHMaterialModel: SmartCodable {
var id: Int = 0
var renewal_id: Int = 0
var order_id: Int = 0
var subset_id: Int = 0
var information_id: Int = 0
var template_id: Int = 0
var relation: Int = 0
// 资料类型(CERT=证件资料 WORK=工作资料 LIVE=生活资料)
var mtype: String = ""
var name: String = ""
var info: String = ""
var upload_require: String = ""
var audit_at: String = ""
var audit_uid: Int = 0
// 状态(待上传=TO_BE_UPLOAD 待审核= PENDING_AUDIT 已驳回=REJECTED 已完成= COMPLETED)
var status: String = ""
var remark: String = ""
var audit_remark: String = ""
var created_at: String = ""
var updated_at: String = ""
var deleted_at: String = ""
required init() {
}
}
class YHMembersModel: SmartCodable {
var id: Int = 0
var renewal_number: Int = 0
var apply_name: String = ""
var apply_relation: Int = 0
var apply_relation_text: String = ""
required init() {
}
}
...@@ -20,13 +20,15 @@ enum YHMaterialUploadStatus : Int { ...@@ -20,13 +20,15 @@ enum YHMaterialUploadStatus : Int {
case rejected = 2 case rejected = 2
// 待上传 // 待上传
case preUpload = 3 case preUpload = 3
// 未开始
case unStarted = 4
} }
class YHResignMaterialCell: UITableViewCell { class YHResignMaterialCell: UITableViewCell {
static let cellReuseIdentifier = "YHResignMaterialCell" static let cellReuseIdentifier = "YHResignMaterialCell"
var model: YHSupplementInfo = YHSupplementInfo() var model: YHMaterialModel = YHMaterialModel()
var status : YHCertificateUploadStatus = .preUpload var status : YHCertificateUploadStatus = .preUpload
var templateBlock:(()->())? var templateBlock:(()->())?
var whiteView: UIView! var whiteView: UIView!
...@@ -50,9 +52,6 @@ class YHResignMaterialCell: UITableViewCell { ...@@ -50,9 +52,6 @@ class YHResignMaterialCell: UITableViewCell {
}() }()
@objc func didTemplateBtnClicked() { @objc func didTemplateBtnClicked() {
if self.model.isNeedDealt { // 银河代办
return
}
if let templateBlock = templateBlock { if let templateBlock = templateBlock {
templateBlock() templateBlock()
} }
...@@ -67,83 +66,60 @@ class YHResignMaterialCell: UITableViewCell { ...@@ -67,83 +66,60 @@ class YHResignMaterialCell: UITableViewCell {
setupUI() setupUI()
} }
func updateModel(_ model: YHSupplementInfo) { func updateModel(_ model: YHMaterialModel) {
self.model = model self.model = model
if let status = YHCertificateUploadStatus(rawValue: model.checkStatus) {
var titleColor: UIColor = .labelTextColor2
var title = ""
if model.status == YHMaterialStatus.unOpen.rawValue {
titleColor = .mainTextColor(alpha: 0.5)
title = "未开始".local
var titleColor: UIColor = .labelTextColor2 } else if model.status == YHMaterialStatus.preUpload.rawValue {
var title = "" titleColor = .brandMainColor
switch status { title = "待上传".local
case .preUpload:
titleColor = .brandMainColor } else if model.status == YHMaterialStatus.rejected.rawValue {
title = "待上传".local titleColor = .failColor
case .rejected: title = "已驳回".local
titleColor = .failColor
title = "已驳回".local
case .review:
titleColor = .warnColor
title = "审核中".local
case .finish:
titleColor = .labelTextColor2
title = "已完成".local
case .all:
titleColor = .labelTextColor2
}
statusLabel.text = title
statusLabel.textColor = titleColor
}
var infoStr = "" } else if model.status == YHMaterialStatus.review.rawValue {
var typeStr = "无" titleColor = .init(hex: 0xFF8000)
var ownerStr = "无" title = "审核中".local
if !model.typeName.isEmpty {
typeStr = model.typeName
}
if !model.nameExtra.applicant.isEmpty {
ownerStr = model.nameExtra.applicant
}
infoStr = "类型: \(typeStr)\n所属人: \(ownerStr)" } else if model.status == YHMaterialStatus.completed.rawValue {
let attributes: [NSAttributedString.Key: Any] = [ titleColor = .init(hex: 0x3CC694)
.font: UIFont.PFSC_R(ofSize:12), title = "已完成".local
.foregroundColor: UIColor.labelTextColor2 }
]
let attrString = NSMutableAttributedString(string: infoStr, attributes: attributes)
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.lineSpacing = 4.0 // 设置行间距为 8 点
attrString.addAttribute(.paragraphStyle, value: paragraphStyle, range: NSRange(location: 0, length: infoStr.count))
infoLabel.attributedText = attrString
statusLabel.text = title
statusLabel.textColor = titleColor
let img = UIImage(named: "family_info_status_arrow")?.withRenderingMode(.alwaysTemplate)
self.rightArrowImgV.image = img
self.rightArrowImgV.tintColor = titleColor
var result:ASAttributedString = .init(string:"", .font(UIFont.PFSC_M(ofSize: 16)), .foreground(UIColor.mainTextColor)) var result:ASAttributedString = .init(string:"", .font(UIFont.PFSC_M(ofSize: 16)), .foreground(UIColor.mainTextColor))
let mustTag: ASAttributedString = .init("*", .font(UIFont.PFSC_M(ofSize: 16)),.foreground(UIColor.failColor)) let mustTag: ASAttributedString = .init("*", .font(UIFont.PFSC_M(ofSize: 16)),.foreground(UIColor.failColor))
var name = model.name var name = model.name
if !model.nameExtra.organization.isEmpty {
name += "(\(model.nameExtra.organization))"
}
let cerName: ASAttributedString = .init(string:name , .font(UIFont.PFSC_M(ofSize: 16)), .foreground(UIColor.mainTextColor)) let cerName: ASAttributedString = .init(string:name , .font(UIFont.PFSC_M(ofSize: 16)), .foreground(UIColor.mainTextColor))
var template: ASAttributedString = " \(.view(templateButton, .original(.center)))" var template: ASAttributedString = " \(.view(templateButton, .original(.center)))"
// 是否展示右边的模版按钮 // 是否展示右边的模版按钮
var showTemplateBtn = true var showTemplateBtn = true
if model.isNeedDealt { // if model.templateInfo.materialPath.isEmpty && model.templateInfo.guideFilePath.isEmpty && model.templateInfo.description.isEmpty {
templateButton.setTitle("银河代办", for: .normal) //
template = " \(.view(templateButton, .original(.center)))" // showTemplateBtn = false
} else { // }
templateButton.setTitle("资料模版", for: .normal)
template = " \(.view(templateButton, .original(.center)))"
if model.templateInfo.materialPath.isEmpty && model.templateInfo.guideFilePath.isEmpty && model.templateInfo.description.isEmpty {
showTemplateBtn = false
}
}
if model.isNeedSupplemnt() { if true {
result += mustTag result += mustTag
} }
result += cerName result += cerName
showTemplateBtn = true
if showTemplateBtn { if showTemplateBtn {
result += template result += template
} }
...@@ -174,35 +150,37 @@ class YHResignMaterialCell: UITableViewCell { ...@@ -174,35 +150,37 @@ class YHResignMaterialCell: UITableViewCell {
""" """
statusLabel = UILabel() statusLabel = UILabel()
statusLabel.textColor = UIColor.labelTextColor2 statusLabel.textColor = UIColor.mainTextColor(alpha: 0.5)
statusLabel.textAlignment = .left statusLabel.textAlignment = .left
statusLabel.font = UIFont.PFSC_R(ofSize:14) statusLabel.font = UIFont.PFSC_R(ofSize:14)
whiteView.addSubview(statusLabel) whiteView.addSubview(statusLabel)
rightArrowImgV = UIImageView(image: UIImage(named: "service_center_right_next_icon")) rightArrowImgV = UIImageView(image: UIImage(named: "family_info_status_arrow"))
whiteView.addSubview(rightArrowImgV) whiteView.addSubview(rightArrowImgV)
whiteView.snp.makeConstraints { make in whiteView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(20) make.left.equalToSuperview().offset(16)
make.right.equalToSuperview().offset(-20) make.right.equalToSuperview().offset(-16)
make.top.bottom.equalToSuperview() make.top.equalToSuperview()
make.bottom.equalToSuperview().offset(-16)
} }
nameTextView.snp.makeConstraints { make in nameTextView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(10) make.left.equalToSuperview().offset(20)
make.top.equalToSuperview().offset(4) make.top.equalToSuperview().offset(12)
make.right.equalTo(statusLabel.snp.left).offset(-26) make.right.equalTo(statusLabel.snp.left).offset(-14)
make.bottom.equalTo(-12)
} }
statusLabel.snp.makeConstraints { make in statusLabel.snp.makeConstraints { make in
make.right.equalTo(rightArrowImgV.snp.left).offset(-6) make.right.equalTo(rightArrowImgV.snp.left).offset(0)
make.size.equalTo(CGSize(width: 42, height: 20)) make.size.equalTo(CGSize(width: 42, height: 20))
make.centerY.equalToSuperview() make.centerY.equalToSuperview()
} }
rightArrowImgV.snp.makeConstraints { make in rightArrowImgV.snp.makeConstraints { make in
make.right.equalToSuperview().offset(-16) make.right.equalToSuperview().offset(-14)
make.size.equalTo(CGSize(width: 16, height: 16)) make.size.equalTo(CGSize(width: 20, height: 20))
make.centerY.equalToSuperview() make.centerY.equalToSuperview()
} }
} }
......
//
// YHResignMaterialViewModel.swift
// galaxy
//
// Created by edy on 2024/9/10.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHResignMaterialInfo {
var title: String = ""
var materials: [YHMaterialModel] = []
init(title: String, materials: [YHMaterialModel]) {
self.title = title
self.materials = materials
}
}
class YHResignMaterialGroup {
var status: YHMaterialStatus = .all
// 工作资料
var works:[YHMaterialModel] = []
// 生活资料
var lifes:[YHMaterialModel] = []
// 证件资料
var cers: [YHMaterialModel] = []
func getTotalCount() -> Int {
return works.count + lifes.count + cers.count
}
func clear() {
works.removeAll()
lifes.removeAll()
cers.removeAll()
}
func getDataArr()-> [YHResignMaterialInfo] {
var arr:[YHResignMaterialInfo] = []
if works.count > 0 {
let work = YHResignMaterialInfo(title: "工作资料", materials: works)
arr.append(work)
}
if lifes.count > 0 {
let life = YHResignMaterialInfo(title: "生活资料", materials: lifes)
arr.append(life)
}
if cers.count > 0 {
let cer = YHResignMaterialInfo(title: "证件资料", materials: cers)
arr.append(cer)
}
return arr
}
}
class YHResignMaterialViewModel: NSObject {
// 全部
var allGroup: YHResignMaterialGroup = YHResignMaterialGroup()
// 待上传
var preuploadGroup: YHResignMaterialGroup = YHResignMaterialGroup()
// 已驳回
var rejectedGroup: YHResignMaterialGroup = YHResignMaterialGroup()
// 审核中
var reviewGroup: YHResignMaterialGroup = YHResignMaterialGroup()
// 已完成
var finishGroup: YHResignMaterialGroup = YHResignMaterialGroup()
func clear() {
self.allGroup.clear()
self.preuploadGroup.clear()
self.rejectedGroup.clear()
self.reviewGroup.clear()
self.finishGroup.clear()
}
func getMaterialList(param:[String : Any], callback:((_ success: Bool,_ error:YHErrorModel?)->())?) {
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.ResignMaterial.resignMaterialList
let _ = YHNetRequest.getRequest(url: strUrl,params: param) { [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 = YHMaterialListModel.deserialize(from: dic) else {
let err = YHErrorModel(errorCode: YHErrorCode.dictParseError.rawValue, errorMsg: YHErrorCode.dictParseError.description())
self.clear()
callback?(false, err)
return
}
let materials = resultModel.material
self.allGroup = self.generateGroup(status: .all, materials:materials)
self.preuploadGroup = self.generateGroup(status: .preUpload, materials:materials)
self.rejectedGroup = self.generateGroup(status: .rejected, materials:materials)
self.reviewGroup = self.generateGroup(status: .review, materials:materials)
self.finishGroup = self.generateGroup(status: .completed, materials:materials)
callback?(true, nil)
} else {
let err = YHErrorModel(errorCode: Int32(json.code), errorMsg: json.msg.isEmpty ? "" : json.msg)
self.clear()
callback?(false, err)
}
} failBlock: { err in
self.clear()
callback?(false, err)
}
}
func generateGroup(status: YHMaterialStatus, materials:[YHMaterialModel]) -> YHResignMaterialGroup {
let group = YHResignMaterialGroup()
group.status = status
for material in materials {
let condition: Bool = (status == .all ? true : material.status == status.rawValue)
if condition {
if material.mtype == YHMaterialType.work.rawValue {
group.works.append(material)
}
if material.mtype == YHMaterialType.live.rawValue {
group.lifes.append(material)
}
if material.mtype == YHMaterialType.cer.rawValue {
group.cers.append(material)
}
}
}
return group
}
}
//
// YHServiceCenterStepThreeTableHeadView.swift
// galaxy
//
// Created by EDY on 2024/9/11.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHServiceCenterStepThreeTableHeadView: UIView {
typealias Block = ([YHServiceCenterProgressModel]) -> ()
var block: Block?
var dataSource: [YHServiceStepProgressThreeModel] = [] {
didSet {
selectIndex = 0
let model = dataSource[selectIndex]
explainLabel.text = model.personStr
if model.personStr.count > 20 {
moreButton.isHidden = false
} else {
moreButton.isHidden = true
}
self.myCollectView.reloadData()
}
}
var bgView: UIView!
var moreButton: UIButton!
var explainLabel: UILabel!
var selectIndex = 0
lazy var myCollectView = {
// 设置布局方向
let flowLayout = UICollectionViewFlowLayout()
flowLayout.itemSize = CGSize(width: 81, height: 26)
flowLayout.minimumInteritemSpacing = 12.0
flowLayout.minimumLineSpacing = 12.0
flowLayout.scrollDirection = .horizontal
let collectinoView = UICollectionView(frame: .zero, collectionViewLayout: flowLayout)
collectinoView.backgroundColor = .clear
collectinoView.contentInset = UIEdgeInsets(top: 16, left: 20, bottom: 16, right: 20)
collectinoView.register(YHServiceSectionStepThreeCollectionViewCell.self, forCellWithReuseIdentifier:YHServiceSectionStepThreeCollectionViewCell.cellReuseIdentifier)
collectinoView.delegate = self
collectinoView.dataSource = self
collectinoView.translatesAutoresizingMaskIntoConstraints = false
collectinoView.alwaysBounceVertical = true
collectinoView.bounces = false
collectinoView.showsHorizontalScrollIndicator = false
collectinoView.showsVerticalScrollIndicator = false
return collectinoView
}()
override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = .white
setUpView()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setUpView() {
backgroundColor = .clear
addSubview(myCollectView)
myCollectView.snp.makeConstraints { make in
make.top.left.right.equalToSuperview()
make.height.equalTo(58)
}
bgView = {
let view = UIView()
view.backgroundColor = UIColor.pageBkgColor
return view
}()
addSubview(bgView)
bgView.snp.makeConstraints { make in
make.bottom.equalToSuperview()
make.height.equalTo(42)
make.left.equalTo(20)
make.right.equalTo(-20)
}
explainLabel = {
let label = UILabel()
label.textColor = UIColor.mainTextColor70
label.text = "本期人员:张大大 (首次)、张笑笑 (第2次)"
label.font = UIFont.PFSC_M(ofSize: 13)
return label
}()
bgView.addSubview(explainLabel)
explainLabel.snp.makeConstraints { make in
make.top.bottom.equalToSuperview()
make.left.equalTo(12)
make.right.equalTo(-38)
}
moreButton = {
let button = UIButton(type: .custom)
button.setTitle("更多", for: .normal)
button.setTitleColor(UIColor.brandMainColor, for: .normal)
button.titleLabel?.font = UIFont.PFSC_M(ofSize: 13)
button.addTarget(self, action: #selector(showAlert), for: .touchUpInside)
return button
}()
bgView.addSubview(moreButton)
moreButton.snp.makeConstraints { make in
make.centerY.equalToSuperview()
make.width.equalTo(26)
make.height.equalTo(18)
make.right.equalTo(-12)
}
// self.myCollectView.es.addInfiniteScrolling {
// self.loadFakeData()
// }
}
@objc func showAlert() {
YHCommonAlertView.show("", explainLabel.text, "我知道了",fullGuestureEnable: false) {
} callBack: {
}
}
}
extension YHServiceCenterStepThreeTableHeadView: UICollectionViewDelegate, UICollectionViewDataSource {
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return dataSource.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: YHServiceSectionStepThreeCollectionViewCell.cellReuseIdentifier, for: indexPath) as! YHServiceSectionStepThreeCollectionViewCell
cell.dataSource = indexPath.row + 1
if indexPath.row == selectIndex {
cell.setSelectedStyle()
} else {
cell.setDeSelectedStyle()
}
return cell
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
selectIndex = indexPath.row
let model = dataSource[selectIndex]
explainLabel.text = model.personStr
if model.personStr.count > 20 {
moreButton.isHidden = false
} else {
moreButton.isHidden = true
}
collectionView.reloadData()
let array = model.list
if let block = block {
block(array)
}
}
}
class YHServiceSectionStepThreeCollectionViewCell: UICollectionViewCell {
static let cellReuseIdentifier = "YHServiceSectionStepThreeCollectionViewCell"
func setSelectedStyle() {
descripeLable.textColor = UIColor.mainTextColor
descripeLable.layer.borderColor = UIColor.mainTextColor.cgColor
}
func setDeSelectedStyle() {
descripeLable.textColor = UIColor.mainTextColor50
descripeLable.layer.borderColor = UIColor.mainTextColor18.cgColor
}
var dataSource: Int = 0 {
didSet {
updataAllSubViews()
}
}
lazy var descripeLable:UILabel = {
let label = UILabel()
label.text = "赴港"
label.textColor = UIColor.mainTextColor
label.font = UIFont.PFSC_R(ofSize: 13)
label.textAlignment = .center
label.layer.borderColor = UIColor.mainTextColor.cgColor
label.layer.borderWidth = 1
return label
}()
required init?(coder: NSCoder) {
super.init(coder: coder)
}
override init(frame: CGRect) {
super.init(frame: frame)
setupUI()
}
private func setupUI() {
contentView.addSubview(descripeLable)
descripeLable.snp.makeConstraints { make in
make.top.left.right.bottom.equalToSuperview()
}
}
func updataAllSubViews() {
descripeLable.text = "第\(dataSource)批续签"
}
}
//
// YHServiceMoreAlertView.swift
// galaxy
//
// Created by EDY on 2024/9/11.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHServiceMoreAlertView: UIView {
typealias Block = (Int) -> ()
var block: Block?
var centerView: UIView!
var orderButton: UIButton!
var guideButton: UIButton!
var isShowGuide: Bool = false {
didSet {
if isShowGuide {
guideButton.isHidden = false
centerView.snp.remakeConstraints { make in
make.right.equalTo(-20)
make.height.equalTo(112)
make.width.equalTo(132)
make.top.equalTo(85)
}
} else {
guideButton.isHidden = true
centerView.snp.remakeConstraints { make in
make.right.equalTo(-20)
make.height.equalTo(64)
make.width.equalTo(132)
make.top.equalTo(85)
}
}
}
}
static func show(_ flag: Bool = false, callBack: @escaping ((Int) -> Void)) {
let view = YHServiceMoreAlertView(frame: CGRect(x: 0, y: 0, width: KScreenWidth, height: KScreenHeight))
view.isShowGuide = flag
view.block = callBack
let window = UIApplication.shared.yhKeyWindow()
window?.addSubview(view)
}
override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = UIColor(white: 0.5, alpha: 0.1)
let tap = UITapGestureRecognizer(target: self, action: #selector(handleTap))
tap.delegate = self
addGestureRecognizer(tap)
setView()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setView() {
backgroundColor = UIColor(hex: 0x0000, alpha: 0.5)
centerView = {
let view = UIView()
view.backgroundColor = .white
view.layer.cornerRadius = kCornerRadius8
return view
}()
addSubview(centerView)
centerView.snp.makeConstraints { make in
make.right.equalTo(-20)
make.height.equalTo(64)
make.width.equalTo(132)
make.top.equalTo(85)
}
orderButton = {
let button = UIButton(type: .custom)
button.setImage(UIImage(named: "service_more_order"), for: .normal)
button.setTitle("我的订单", for: .normal)
button.setTitleColor(UIColor.mainTextColor, for: .normal)
button.titleLabel?.font = UIFont.PFSC_R(ofSize: 16)
button.addTarget(self, action: #selector(orderButtonClick), for: .touchUpInside)
return button
}()
centerView.addSubview(orderButton)
orderButton.snp.makeConstraints { make in
make.right.equalTo(-20)
make.height.equalTo(20)
make.width.equalTo(92)
make.top.equalTo(24)
}
guideButton = {
let button = UIButton(type: .custom)
button.setImage(UIImage(named: "service_more_guide"), for: .normal)
button.setTitle("操作指引", for: .normal)
button.setTitleColor(UIColor.mainTextColor, for: .normal)
button.titleLabel?.font = UIFont.PFSC_R(ofSize: 16)
button.addTarget(self, action: #selector(guideButtonClick), for: .touchUpInside)
return button
}()
centerView.addSubview(guideButton)
guideButton.snp.makeConstraints { make in
make.right.equalTo(-20)
make.height.equalTo(20)
make.width.equalTo(92)
make.bottom.equalTo(-24)
}
orderButton.iconInLeft(spacing: 8)
guideButton.iconInLeft(spacing: 8)
}
@objc private func handleTap(_ sender: AnyObject?) {
print("处理点击手势")
dismiss()
}
@objc func dismiss() {
removeFromSuperview()
}
@objc func orderButtonClick() {
if let block = block {
block(1)
}
dismiss()
}
@objc func guideButtonClick() {
if let block = block {
block(2)
}
dismiss()
}
}
extension YHServiceMoreAlertView: UIGestureRecognizerDelegate {
func gestureRecognizer(_ gestureRecognizer:UIGestureRecognizer, shouldReceive touch:UITouch) -> Bool {
if touch.view == self {
return true
}
return false
}
}
...@@ -160,6 +160,16 @@ extension YHServiceOrderProgressTableViewCell { ...@@ -160,6 +160,16 @@ extension YHServiceOrderProgressTableViewCell {
titleLabel.text = "上传过关证件" titleLabel.text = "上传过关证件"
messageLabel.text = "点击保存入境小白条及香港身份证(后续身份续期、永居均涉及)" messageLabel.text = "点击保存入境小白条及香港身份证(后续身份续期、永居均涉及)"
} }
if model.type == 31 {
titleLabel.text = "续签资料管理"
messageLabel.text = "请确认您的续签文书内容并完成签字~"
}
if model.type == 32 {
titleLabel.text = "续签文书管理"
messageLabel.text = "点击保存入境小白条及香港身份证(后续身份续期、永居均涉及)"
}
} }
if model.status == 2 { if model.status == 2 {
titleLabel.textColor = UIColor.mainTextColor titleLabel.textColor = UIColor.mainTextColor
...@@ -363,6 +373,17 @@ extension YHServiceOrderProgressTableViewCell { ...@@ -363,6 +373,17 @@ extension YHServiceOrderProgressTableViewCell {
buttonLabel.text = "去上传" buttonLabel.text = "去上传"
messageLabel.textColor = UIColor.yhGreyColor50 messageLabel.textColor = UIColor.yhGreyColor50
} }
if model.type == 31 {
titleLabel.text = "续签资料管理"
messageLabel.text = "请确认您的续签文书内容并完成签字~"
buttonLabel.text = "去上传"
}
if model.type == 32 {
titleLabel.text = "续签文书管理"
messageLabel.text = "点击保存入境小白条及香港身份证(后续身份续期、永居均涉及)"
buttonLabel.text = "去确认"
}
} }
if model.status == 3 { if model.status == 3 {
titleLabel.textColor = UIColor.mainTextColor titleLabel.textColor = UIColor.mainTextColor
...@@ -432,9 +453,22 @@ extension YHServiceOrderProgressTableViewCell { ...@@ -432,9 +453,22 @@ extension YHServiceOrderProgressTableViewCell {
messageLabel.text = "点击保存入境小白条及香港身份证(后续身份续期、永居均涉及)" messageLabel.text = "点击保存入境小白条及香港身份证(后续身份续期、永居均涉及)"
buttonLabel.text = "已完成" buttonLabel.text = "已完成"
} }
if model.type == 31 {
titleLabel.text = "续签资料管理"
messageLabel.text = "请确认您的续签文书内容并完成签字~"
buttonLabel.text = "已完成"
}
if model.type == 32 {
titleLabel.text = "续签文书管理"
messageLabel.text = "点击保存入境小白条及香港身份证(后续身份续期、永居均涉及)"
buttonLabel.text = "已完成"
}
let b: ASAttributedString = .init(NSAttributedString(string: "\(model.percentage)"), .font(UIFont(name: "DINAlternate-Bold", size: 24)!),.foreground(UIColor.mainTextColor)) let b: ASAttributedString = .init(NSAttributedString(string: "\(model.percentage)"), .font(UIFont(name: "DINAlternate-Bold", size: 24)!),.foreground(UIColor.mainTextColor))
let bb: ASAttributedString = .init("%", .font(UIFont.PFSC_M(ofSize: 10)),.foreground(UIColor.mainTextColor.withAlphaComponent(0.3))) let bb: ASAttributedString = .init("%", .font(UIFont.PFSC_M(ofSize: 10)),.foreground(UIColor.mainTextColor.withAlphaComponent(0.3)))
progressLabel.attributed.text = b + bb progressLabel.attributed.text = b + bb
} }
if model.status == 4 { if model.status == 4 {
titleLabel.textColor = UIColor.mainTextColor titleLabel.textColor = UIColor.mainTextColor
...@@ -535,7 +569,8 @@ extension YHServiceOrderProgressTableViewCell { ...@@ -535,7 +569,8 @@ extension YHServiceOrderProgressTableViewCell {
contentView.addSubview(holdView) contentView.addSubview(holdView)
holdView.snp.makeConstraints { make in holdView.snp.makeConstraints { make in
make.top.bottom.equalToSuperview() make.top.equalTo(8)
make.bottom.equalTo(-8)
make.left.equalTo(kMargin) make.left.equalTo(kMargin)
make.right.equalTo(-kMargin) make.right.equalTo(-kMargin)
} }
......
//
// YHServiceStepAlertVIew.swift
// galaxy
//
// Created by EDY on 2024/9/11.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHServiceStepAlertView: UIView {
typealias Block = (Int) -> ()
var block: Block?
var centerView: UIView!
var orderButton: UIButton!
var guideButton: UIButton!
var isStepOne: Bool = false {
didSet {
if isStepOne {
orderButton.isSelected = false
guideButton.isSelected = true
} else {
orderButton.isSelected = true
guideButton.isSelected = false
}
}
}
static func show(_ flag: Bool = false, callBack: @escaping ((Int) -> Void)) {
let view = YHServiceStepAlertView(frame: CGRect(x: 0, y: 0, width: KScreenWidth, height: KScreenHeight))
view.isStepOne = flag
view.block = callBack
let window = UIApplication.shared.yhKeyWindow()
window?.addSubview(view)
}
override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = UIColor(white: 0.5, alpha: 0.1)
let tap = UITapGestureRecognizer(target: self, action: #selector(handleTap))
tap.delegate = self
addGestureRecognizer(tap)
setView()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setView() {
backgroundColor = UIColor(hex: 0x0000, alpha: 0.5)
centerView = {
let view = UIView()
view.backgroundColor = .white
view.layer.cornerRadius = kCornerRadius8
return view
}()
addSubview(centerView)
centerView.snp.makeConstraints { make in
make.left.equalTo(20)
make.height.equalTo(120)
make.width.equalTo(135)
make.top.equalTo(85)
}
orderButton = {
let button = UIButton(type: .custom)
button.setImage(UIImage(named: "service_step_select"), for: .selected)
button.setTitle("续签阶段", for: .normal)
button.setImage(UIImage.init(color: UIColor.white, size: CGSize(width: 15, height: 15)), for: .normal)
button.setTitleColor(UIColor.mainTextColor, for: .normal)
button.setTitleColor(UIColor.brandMainColor, for: .selected)
button.setBackgroundColor(color: UIColor.white, forState: .normal)
button.setBackgroundColor(color: UIColor.brandMainColor8, forState: .selected)
button.titleLabel?.font = UIFont.PFSC_R(ofSize: 14)
button.addTarget(self, action: #selector(orderButtonClick), for: .touchUpInside)
button.isSelected = false
return button
}()
centerView.addSubview(orderButton)
orderButton.snp.makeConstraints { make in
make.right.equalTo(0)
make.height.equalTo(52)
make.width.equalTo(135)
make.top.equalTo(8)
}
guideButton = {
let button = UIButton(type: .custom)
button.setImage(UIImage(named: "service_step_select"), for: .selected)
button.setTitle("办证阶段", for: .normal)
button.setImage(UIImage.init(color: UIColor.white, size: CGSize(width: 15, height: 15)), for: .normal)
button.setTitleColor(UIColor.mainTextColor, for: .normal)
button.setTitleColor(UIColor.brandMainColor, for: .selected)
button.setBackgroundColor(color: UIColor.white, forState: .normal)
button.setBackgroundColor(color: UIColor.brandMainColor8, forState: .selected)
button.titleLabel?.font = UIFont.PFSC_R(ofSize: 14)
button.addTarget(self, action: #selector(guideButtonClick), for: .touchUpInside)
button.isSelected = false
return button
}()
centerView.addSubview(guideButton)
guideButton.snp.makeConstraints { make in
make.right.equalTo(0)
make.height.equalTo(52)
make.width.equalTo(135)
make.bottom.equalTo(-8)
}
orderButton.iconInRight(with: 32)
guideButton.iconInRight(with: 32)
}
@objc private func handleTap(_ sender: AnyObject?) {
print("处理点击手势")
dismiss()
}
@objc func dismiss() {
removeFromSuperview()
}
@objc func orderButtonClick() {
if let block = block {
block(1)
}
dismiss()
}
@objc func guideButtonClick() {
if let block = block {
block(2)
}
dismiss()
}
}
extension YHServiceStepAlertView: UIGestureRecognizerDelegate {
func gestureRecognizer(_ gestureRecognizer:UIGestureRecognizer, shouldReceive touch:UITouch) -> Bool {
if touch.view == self {
return true
}
return false
}
}
//
// YHServiceStepThreeSectionView.swift
// galaxy
//
// Created by EDY on 2024/9/11.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHServiceStepThreeSectionView: UIView {
typealias Block = (Int) -> ()
var block: Block?
var oneButton: UIButton!
var twoButton: UIButton!
var threeButton: UIButton!
var fourButton: UIButton!
public override init(frame: CGRect) {
super.init(frame:frame)
initView()
}
private func initView() {
let space = (KScreenWidth - 77 * 4 - 32)/3.0
oneButton = {
let btn = UIButton(type: .custom)
btn.setBackgroundImage(UIImage(named: "service_center_step_section_one"), for: .normal)
btn.addTarget(self, action: #selector(oneBtnClick), for: .touchUpInside)
return btn
}()
addSubview(oneButton)
oneButton.snp.makeConstraints { make in
make.top.equalTo(16)
make.left.equalTo(16)
make.height.equalTo(80)
make.width.equalTo(77)
}
twoButton = {
let btn = UIButton(type: .custom)
btn.setBackgroundImage(UIImage(named: "service_center_step_section_two"), for: .normal)
btn.addTarget(self, action: #selector(twoBtnClick), for: .touchUpInside)
return btn
}()
addSubview(twoButton)
twoButton.snp.makeConstraints { make in
make.top.equalTo(16)
make.left.equalTo(oneButton.snp.right).offset(space)
make.height.equalTo(80)
make.width.equalTo(77)
}
fourButton = {
let btn = UIButton(type: .custom)
btn.setBackgroundImage(UIImage(named: "service_center_step_section_four"), for: .normal)
btn.addTarget(self, action: #selector(fourBtnClick), for: .touchUpInside)
return btn
}()
addSubview(fourButton)
fourButton.snp.makeConstraints { make in
make.top.equalTo(16)
make.right.equalTo(-16)
make.height.equalTo(80)
make.width.equalTo(77)
}
threeButton = {
let btn = UIButton(type: .custom)
btn.setBackgroundImage(UIImage(named: "service_center_step_section_three"), for: .normal)
btn.addTarget(self, action: #selector(threeBtnClick), for: .touchUpInside)
return btn
}()
addSubview(threeButton)
threeButton.snp.makeConstraints { make in
make.top.equalTo(16)
make.right.equalTo(fourButton.snp.left).offset(-space)
make.height.equalTo(80)
make.width.equalTo(77)
}
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
@objc func oneBtnClick() {
if let block = block {
block(1)
}
}
@objc func twoBtnClick() {
if let block = block {
block(2)
}
}
@objc func threeBtnClick() {
if let block = block {
block(3)
}
}
@objc func fourBtnClick() {
if let block = block {
block(4)
}
}
}
...@@ -78,9 +78,6 @@ extension YHServiceCenterMainViewModel { ...@@ -78,9 +78,6 @@ extension YHServiceCenterMainViewModel {
let params: [String : Any] = ["orderId": orderId, let params: [String : Any] = ["orderId": orderId,
"status": type] "status": type]
if type == 3 {
}
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Order.process let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Order.process
let _ = YHNetRequest.getRequest(url: strUrl,params: params) { [weak self] json, code in let _ = YHNetRequest.getRequest(url: strUrl,params: params) { [weak self] json, code in
...@@ -94,9 +91,6 @@ extension YHServiceCenterMainViewModel { ...@@ -94,9 +91,6 @@ extension YHServiceCenterMainViewModel {
return return
} }
if type == 3 {
}
var resultItem = YHServiceProgressModel() var resultItem = YHServiceProgressModel()
for item in result { for item in result {
if item.type == orderType { if item.type == orderType {
......
//
// YHServiceCenterViewModel.swift
// galaxy
//
// Created by EDY on 2024/9/11.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHServiceCenterViewModel: YHBaseViewModel {
//合同列表 数据
var arrContactList : [YHContactItemModel] = []
//服务中心进度模型
var arrDataForSeviceCenterProgress: [YHServiceCenterProgressModel] = []
var mainModel: YHServiceCenterMainModel = YHServiceCenterMainModel()
}
//请求接口
extension YHServiceCenterViewModel {
//请求合同项
func getContactList(callBackBlock:@escaping (_ success: Bool,_ error:YHErrorModel?)->()) {
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Order.contractListApi
let _ = YHNetRequest.getRequest(url: strUrl) { [weak self] json, code in
//1. json字符串 转 对象
guard let self = self else { return }
printLog("model 是 ==> \(json)")
arrContactList.removeAll()
if json.code == 200 {
DispatchQueue.global().async {
guard let dic = json.data?.peel as? [String : Any],let resultModel = YHContactItemHoldModel.deserialize(from: dic) else {
DispatchQueue.main.async {
self.arrContactList = []
callBackBlock(false,nil)
}
return
}
DispatchQueue.main.async {
self.arrContactList = resultModel.orders
callBackBlock(true,nil)
}
}
} else {
arrContactList = []
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code),errorMsg: json.msg.count > 0 ? json.msg : "数据错误")
callBackBlock(false,error)
}
} failBlock: { err in
self.arrContactList = []
callBackBlock(false,err)
}
}
func getServiceCenterProgressList(_ orderId: Int, _ type: Int,callBackBlock:@escaping (_ success: Bool,_ error:YHErrorModel?)->()) {
/*
orderId integer 订单id 可选
status integer 可选 0全部 1待开始 2进行中 3 已完成
let arr = ["orderId":id,"status"]
*/
let params: [String : Any] = ["orderId": orderId,
"status": type]
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Order.serviceCenterProgressApi
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? [Any], let result = [YHServiceCenterProgressModel].deserialize(from:dic) else {
callBackBlock(false,nil)
return
}
self.arrDataForSeviceCenterProgress = result
callBackBlock(true, nil)
} else {
let err = YHErrorModel(errorCode: Int32(json.code), errorMsg: json.msg.isEmpty ? "" : json.msg)
callBackBlock(false,err)
}
} failBlock: { err in
callBackBlock(false,err)
}
}
func getServiceMainData(orderId: Int, callBackBlock:@escaping (_ success: Bool,_ error:YHErrorModel?)->()) {
let params: [String : Any] = ["orderId": orderId,
"status": 0]
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Order.main
let _ = YHNetRequest.getRequest(url: strUrl, params: params) { [weak self] json, code in
//1. json字符串 转 对象
guard let self = self else { return }
if json.code == 200 {
DispatchQueue.global().async {
guard let dic = json.data?.peel as? [String : Any], let resultModel = YHServiceCenterMainModel.deserialize(from: dic) else {
DispatchQueue.main.async {
callBackBlock(false,nil)
}
return
}
DispatchQueue.main.async {
self.mainModel = resultModel
callBackBlock(true,nil)
}
}
} else {
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code),errorMsg: json.msg.count > 0 ? json.msg : "数据错误")
callBackBlock(false,error)
}
} failBlock: { err in
callBackBlock(false,err)
}
}
}
...@@ -18,7 +18,7 @@ class YHServiceOrderSearchViewModel: YHBaseViewModel { ...@@ -18,7 +18,7 @@ class YHServiceOrderSearchViewModel: YHBaseViewModel {
//1. json字符串 转 对象 //1. json字符串 转 对象
guard self != nil else { return } guard self != nil else { return }
if json.code == 200 { if json.code == 200 {
guard let dic = json.data?.peel as? [String : Any],let data = dic["Data"],let result = [YHServiceSearchModel].deserialize(from: data as? [Any]) else { guard let dic = json.data?.peel as? [String : Any],let data = dic["Data"] as? [Any],let result = [YHServiceSearchModel].deserialize(from: data) else {
callBackBlock(false,nil) callBackBlock(false,nil)
return return
} }
......
...@@ -98,9 +98,6 @@ extension YHLoginViewModel { ...@@ -98,9 +98,6 @@ extension YHLoginViewModel {
[weak self] json, code in [weak self] json, code in
//1. json字符串 转 对象 //1. json字符串 转 对象
guard self != nil else { return } guard self != nil else { return }
printLog(json)
_ = json.data
if json.code == 200 { if json.code == 200 {
callBackBlock(true, nil) callBackBlock(true, nil)
...@@ -122,17 +119,12 @@ extension YHLoginViewModel { ...@@ -122,17 +119,12 @@ extension YHLoginViewModel {
[weak self] json, code in [weak self] json, code in
//1. json字符串 转 对象 //1. json字符串 转 对象
guard self != nil else { return } guard self != nil else { return }
printLog(json)
_ = json.data
if json.code == 200 { if json.code == 200 {
callBackBlock(true, nil) callBackBlock(true, nil)
} else { } else {
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg) let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
callBackBlock(false, error) callBackBlock(false, error)
} }
} failBlock: { error in } failBlock: { error in
callBackBlock(false, error) callBackBlock(false, error)
} }
......
...@@ -341,6 +341,13 @@ extension YHMyViewController : UITableViewDelegate, UITableViewDataSource { ...@@ -341,6 +341,13 @@ extension YHMyViewController : UITableViewDelegate, UITableViewDataSource {
return return
} }
// if true {
// TEST DY
// let vc = YHResinMaterialManageContainerVC()
// self.navigationController?.pushViewController(vc)
// return
// }
let item: PersonalModuleItem = items[indexPath.row] let item: PersonalModuleItem = items[indexPath.row]
switch item.type { switch item.type {
case .myCard://我的名片 case .myCard://我的名片
......
...@@ -128,7 +128,7 @@ class YHAllApiName { ...@@ -128,7 +128,7 @@ class YHAllApiName {
//合同列表 //合同列表
static let contractListApi = "infoflow/order/list" static let contractListApi = "infoflow/order/list"
static let main = "super-app/order/process_v2"
//合同填写进度 //合同填写进度
static let contractStatusApi = "infoflow/order/progress" static let contractStatusApi = "infoflow/order/progress"
...@@ -516,4 +516,9 @@ class YHAllApiName { ...@@ -516,4 +516,9 @@ class YHAllApiName {
static let userInfomation = "super-app/qiyu/user/information" static let userInfomation = "super-app/qiyu/user/information"
} }
// 续签资料
struct ResignMaterial {
static let resignMaterialList = "super-app/identity-renewal/renewal-batch-list"
}
} }
...@@ -75,11 +75,7 @@ class YHOSSManager: NSObject, URLSessionDelegate { ...@@ -75,11 +75,7 @@ class YHOSSManager: NSObject, URLSessionDelegate {
let _ = YHNetRequest.getRequest(url: strUrl, params: param, "5000000") { [weak self] json, code in let _ = YHNetRequest.getRequest(url: strUrl, params: param, "5000000") { [weak self] json, code in
//1. json字符串 转 对象 //1. json字符串 转 对象
guard let self = self else { return } guard let self = self else { return }
guard let dic = json.data?.peel as? [String : String] else { guard let dic = json.data?.peel as? [String : Any],let resultModel = YHOSSModel.deserialize(from: dic) else {
return
}
guard let resultModel = YHOSSModel.deserialize(from: dic) else {
return return
} }
self.publicModel = resultModel self.publicModel = resultModel
......
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "service_center_more@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "service_center_more@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "service_center_select_step@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "service_center_select_step@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "service_center_step_section_four@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "service_center_step_section_four@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "service_center_step_section_one@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "service_center_step_section_one@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "service_center_step_section_three@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "service_center_step_section_three@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "service_center_step_section_two@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "service_center_step_section_two@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "service_more_guide@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "service_more_guide@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "service_more_order@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "service_more_order@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "service_step_select@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "service_step_select@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "icon-展开@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "icon-展开@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "icon-展开@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "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