Commit 0541e120a1c096284cb198ea594675a998e11537

Authored by “张旭”
1 parent d751a989

默认选中认证 , 数字简历页面部分逻辑

Showing 46 changed files with 1767 additions and 4 deletions
metaCode.xcodeproj/project.pbxproj
... ... @@ -169,6 +169,10 @@
169 169 19CC4D562ADD19C200308E2A /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19CC4D552ADD19C200308E2A /* String+Extension.swift */; };
170 170 19D2CE632AE8B65D00691757 /* CNLiveDownSlideTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19D2CE622AE8B65D00691757 /* CNLiveDownSlideTool.swift */; };
171 171 19DFE6402C3FC5F400E428AE /* CNLiveDigitalResumeController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19DFE63F2C3FC5F400E428AE /* CNLiveDigitalResumeController.swift */; };
  172 + 19DFE6432C41039600E428AE /* CNLiveVitaeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19DFE6422C41039600E428AE /* CNLiveVitaeViewModel.swift */; };
  173 + 19DFE6462C41099900E428AE /* CNLiveVitaeModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19DFE6452C41099900E428AE /* CNLiveVitaeModel.swift */; };
  174 + 19DFE6492C44BEAE00E428AE /* CNLiveDigitalResumeCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19DFE6482C44BEAE00E428AE /* CNLiveDigitalResumeCell.swift */; };
  175 + 19DFE64B2C4516B000E428AE /* CNLiveDigitalResumeSecCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19DFE64A2C4516B000E428AE /* CNLiveDigitalResumeSecCell.swift */; };
172 176 19E302672BC8FEBC00F6B8BD /* CNLliveShopDetailCloseCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19E302662BC8FEBC00F6B8BD /* CNLliveShopDetailCloseCell.swift */; };
173 177 19E9D1602B3A98C200D0FB30 /* CNLiveShopAssociatedGoodsTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19E9D15F2B3A98C200D0FB30 /* CNLiveShopAssociatedGoodsTableViewCell.swift */; };
174 178 19E9D1622B3BBB2E00D0FB30 /* CNLiveFileManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19E9D1612B3BBB2E00D0FB30 /* CNLiveFileManager.swift */; };
... ... @@ -479,6 +483,10 @@
479 483 19CC4D552ADD19C200308E2A /* String+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+Extension.swift"; sourceTree = "<group>"; };
480 484 19D2CE622AE8B65D00691757 /* CNLiveDownSlideTool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveDownSlideTool.swift; sourceTree = "<group>"; };
481 485 19DFE63F2C3FC5F400E428AE /* CNLiveDigitalResumeController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveDigitalResumeController.swift; sourceTree = "<group>"; };
  486 + 19DFE6422C41039600E428AE /* CNLiveVitaeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveVitaeViewModel.swift; sourceTree = "<group>"; };
  487 + 19DFE6452C41099900E428AE /* CNLiveVitaeModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveVitaeModel.swift; sourceTree = "<group>"; };
  488 + 19DFE6482C44BEAE00E428AE /* CNLiveDigitalResumeCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveDigitalResumeCell.swift; sourceTree = "<group>"; };
  489 + 19DFE64A2C4516B000E428AE /* CNLiveDigitalResumeSecCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveDigitalResumeSecCell.swift; sourceTree = "<group>"; };
482 490 19E302662BC8FEBC00F6B8BD /* CNLliveShopDetailCloseCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLliveShopDetailCloseCell.swift; sourceTree = "<group>"; };
483 491 19E9D15F2B3A98C200D0FB30 /* CNLiveShopAssociatedGoodsTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveShopAssociatedGoodsTableViewCell.swift; sourceTree = "<group>"; };
484 492 19E9D1612B3BBB2E00D0FB30 /* CNLiveFileManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveFileManager.swift; sourceTree = "<group>"; };
... ... @@ -730,6 +738,7 @@
730 738 191733432B284DB9007BCC04 /* ShopCoupon */ = {
731 739 isa = PBXGroup;
732 740 children = (
  741 + 19BB1FE72AECAD060094D962 /* CNLiveShopConsoleModel.swift */,
733 742 191733442B284DCD007BCC04 /* CNLiveShopCouponListModel.swift */,
734 743 191733552B2FE855007BCC04 /* CNLivePickerReusingModel.swift */,
735 744 );
... ... @@ -1089,13 +1098,13 @@
1089 1098 19BB1FE42AEB93850094D962 /* Model */ = {
1090 1099 isa = PBXGroup;
1091 1100 children = (
  1101 + 19DFE6442C41097400E428AE /* Vitae */,
1092 1102 191733432B284DB9007BCC04 /* ShopCoupon */,
1093 1103 191732F92B0AF329007BCC04 /* GoodsDetail */,
1094 1104 19565ED22AF9FE67007D6727 /* GoodsManager */,
1095 1105 1926C2902AE0FD4500C71DC3 /* CNLiveDownSlideModel.swift */,
1096 1106 19FA201A2AE60423001F7186 /* CNLiveDownSlideModelLayout.swift */,
1097 1107 19BB1FE52AEB93B80094D962 /* CNLiveShopUserInfoModel.swift */,
1098   - 19BB1FE72AECAD060094D962 /* CNLiveShopConsoleModel.swift */,
1099 1108 19BB1FEF2AF0E5B30094D962 /* CNLiveShopDetailModel.swift */,
1100 1109 19B153CE2BC540FF0018906C /* CNLivePayOrderInfoModel.swift */,
1101 1110 );
... ... @@ -1136,6 +1145,7 @@
1136 1145 19C735C82C1063A000CACF4E /* DigitalAuthViews */ = {
1137 1146 isa = PBXGroup;
1138 1147 children = (
  1148 + 19DFE6472C44BE9500E428AE /* DigitalResume */,
1139 1149 19C735C92C10647B00CACF4E /* CNLiveDigitalAuthCell.swift */,
1140 1150 19C735CB2C11A1F400CACF4E /* CNLiveDigitalThreeCollectCell.swift */,
1141 1151 194134952C2412C7004FC047 /* CNLiveRealManageCell.swift */,
... ... @@ -1165,6 +1175,31 @@
1165 1175 path = Util;
1166 1176 sourceTree = "<group>";
1167 1177 };
  1178 + 19DFE6412C41034C00E428AE /* Vitae */ = {
  1179 + isa = PBXGroup;
  1180 + children = (
  1181 + 19DFE6422C41039600E428AE /* CNLiveVitaeViewModel.swift */,
  1182 + );
  1183 + path = Vitae;
  1184 + sourceTree = "<group>";
  1185 + };
  1186 + 19DFE6442C41097400E428AE /* Vitae */ = {
  1187 + isa = PBXGroup;
  1188 + children = (
  1189 + 19DFE6452C41099900E428AE /* CNLiveVitaeModel.swift */,
  1190 + );
  1191 + path = Vitae;
  1192 + sourceTree = "<group>";
  1193 + };
  1194 + 19DFE6472C44BE9500E428AE /* DigitalResume */ = {
  1195 + isa = PBXGroup;
  1196 + children = (
  1197 + 19DFE6482C44BEAE00E428AE /* CNLiveDigitalResumeCell.swift */,
  1198 + 19DFE64A2C4516B000E428AE /* CNLiveDigitalResumeSecCell.swift */,
  1199 + );
  1200 + path = DigitalResume;
  1201 + sourceTree = "<group>";
  1202 + };
1168 1203 20238A324E444EF8C813D9FA /* Pods */ = {
1169 1204 isa = PBXGroup;
1170 1205 children = (
... ... @@ -1574,6 +1609,7 @@
1574 1609 7C83B43C2A52B899004BF4A4 /* ViewModel */ = {
1575 1610 isa = PBXGroup;
1576 1611 children = (
  1612 + 19DFE6412C41034C00E428AE /* Vitae */,
1577 1613 194134822C193AF0004FC047 /* DigitalAuth */,
1578 1614 191733462B2855D6007BCC04 /* ShopCoupon */,
1579 1615 191732F62B08AAD4007BCC04 /* ShopClassify */,
... ... @@ -1997,6 +2033,8 @@
1997 2033 1938BD3D2B4BDD4B00390A34 /* CNLiveAlbumCell.swift in Sources */,
1998 2034 19E9D1622B3BBB2E00D0FB30 /* CNLiveFileManager.swift in Sources */,
1999 2035 79E496E82AB9674300127BF8 /* NSMutableAttributedString+CNLiveExtensions.swift in Sources */,
  2036 + 19DFE64B2C4516B000E428AE /* CNLiveDigitalResumeSecCell.swift in Sources */,
  2037 + 19DFE6462C41099900E428AE /* CNLiveVitaeModel.swift in Sources */,
2000 2038 19CC4D472ADD006600308E2A /* CNDownSlideSingleCourseCell.swift in Sources */,
2001 2039 191733232B14601A007BCC04 /* CNLivePlayerProgressSlider.swift in Sources */,
2002 2040 1917334A2B2BE746007BCC04 /* CNLiveCreateCouponTableViewCell.swift in Sources */,
... ... @@ -2065,6 +2103,7 @@
2065 2103 1938BD3F2B4BE7C500390A34 /* CNLiveAlbumMsgModel.swift in Sources */,
2066 2104 798A44FF2A30A0A800815935 /* CNLiveInputFeedBackViewController.swift in Sources */,
2067 2105 19B153D22BC623980018906C /* CNLiveShopPayNeedPaymentCell.swift in Sources */,
  2106 + 19DFE6492C44BEAE00E428AE /* CNLiveDigitalResumeCell.swift in Sources */,
2068 2107 79282A442A2F1C1E00B5F8CF /* CNLiveLoginAuthView.swift in Sources */,
2069 2108 19B153CD2BC3EB690018906C /* CNLiveShoph5ViewModel.swift in Sources */,
2070 2109 79BB96A62AF21E2800AEA4AC /* CNLiveShopOrderDetailViewController.swift in Sources */,
... ... @@ -2107,6 +2146,7 @@
2107 2146 7C4931312A2F142F000E44B4 /* CNHomePageBackgroupView.swift in Sources */,
2108 2147 19BB1FF22AF21A950094D962 /* CNLliveShopDetailBannerCell.swift in Sources */,
2109 2148 1938BD432B4E34B200390A34 /* CNHomepageDuanJuDetailViewController.swift in Sources */,
  2149 + 19DFE6432C41039600E428AE /* CNLiveVitaeViewModel.swift in Sources */,
2110 2150 790D018B2A2D8B3300C5978D /* CNLiveLoginViewController.swift in Sources */,
2111 2151 19C735D02C12F5F600CACF4E /* CNLiveRealNameCell.swift in Sources */,
2112 2152 7999415C2B4E8E8E0014C721 /* CNLiveRefresh.swift in Sources */,
... ...
metaCode/Classes/Common/Base/CNLiveBaseTabBarViewController.swift
... ... @@ -67,7 +67,7 @@ class CNLiveBaseTabBarViewController: UITabBarController
67 67 CNLiveBaseNavigationController(rootViewController: authVC),
68 68 CNLiveBaseNavigationController(rootViewController: mineVC)
69 69 ]
70   -
  70 + self.selectedIndex = 1
71 71 }
72 72  
73 73 // MARK: - Tabar 背景图
... ...
metaCode/Classes/Main/HomePage/Controller/DigitalAuth/CNLiveDigitalResumeController.swift
... ... @@ -7,15 +7,235 @@
7 7  
8 8 import Foundation
9 9  
10   -class CNLiveDigitalResumeController:CNLiveBaseViewController{
  10 +class CNLiveDigitalResumeController:CNLiveBaseViewController,UITableViewDataSource, UITableViewDelegate{
  11 + //简历model
  12 + var vitaeModel:CNLiveVitaeModel?
  13 + lazy var moreNavBtn: UIButton = {
  14 + let moreNavBtn = UIButton(type: .custom)
  15 + moreNavBtn.frame = CGRect(x: 0, y: KStatusBarHeight, width: KNavigationHeight-KStatusBarHeight, height: KNavigationHeight-KStatusBarHeight)
  16 + moreNavBtn.backgroundColor = .clear
  17 + moreNavBtn.setImage(UIImage(named: "web_more"), for: .normal)
  18 + moreNavBtn.addTarget(self, action: #selector(moreNavBtnAction), for: .touchUpInside)
  19 + return moreNavBtn
  20 + }()
  21 + lazy var dataArray :NSMutableArray = {
  22 + let dataArray = NSMutableArray()
  23 + return dataArray
  24 + }()
  25 + let kCNLiveDigitalResumeCellIdentifier = "kCNLiveDigitalResumeCellIdentifier"
  26 + let kCNLiveDigitalResumeSecCellIdentifier = "kCNLiveDigitalResumeSecCellIdentifier"
  27 +
  28 + lazy var tableView : UITableView = {
  29 + let tableView = UITableView(frame: .zero, style: .plain)
  30 + tableView.dataSource = self
  31 + tableView.delegate = self
  32 + tableView.separatorStyle = .none
  33 + tableView.tableFooterView = UIView.init()
  34 + tableView.register(CNLiveDigitalResumeCell.self, forCellReuseIdentifier: kCNLiveDigitalResumeCellIdentifier)
  35 + tableView.register(CNLiveDigitalResumeSecCell.self, forCellReuseIdentifier: kCNLiveDigitalResumeSecCellIdentifier)
  36 + tableView.backgroundColor = .clear
  37 + return tableView
  38 + }()
  39 + lazy var bottomZhiNanWhiteView :UIView = {
  40 + let bottomNavView = UIView()
  41 + bottomNavView.backgroundColor = .white
  42 + return bottomNavView
  43 + }()
  44 + lazy var jiuYeZhiNanBtn: UIButton = {
  45 + let nextBtn = UIButton(type: .custom)
  46 + nextBtn.setTitle("TT互联网行业培训就业指南", for: .normal)
  47 + nextBtn.setTitleColor(.white, for: .normal)
  48 + nextBtn.backgroundColor = HexColor("#1961FE")
  49 + nextBtn.layer.cornerRadius = 20
  50 + nextBtn.clipsToBounds = true
  51 + nextBtn.addTarget(self, action: #selector(jiuYeZhiNanBtnAction), for: .touchUpInside)
  52 + return nextBtn
  53 + }()
  54 +
  55 +
11 56 override func viewDidLoad() {
12 57 super.viewDidLoad()
13 58 titleName = "数字简历"
14 59 navigationBarHidden = false
  60 + self.view.backgroundColor = HexColor("#F5F6FB")
  61 +
  62 + self.rightNavBtns = [self.moreNavBtn]
  63 +
  64 + self.view.addSubview(self.tableView)
  65 + self.tableView.snp.makeConstraints { make in
  66 + make.top.equalTo(KNavigationHeight)
  67 + make.left.right.equalToSuperview()
  68 + make.height.equalToSuperview().offset(-KNavigationHeight-60)
  69 + }
15 70  
  71 + self.view.addSubview(self.bottomZhiNanWhiteView)
  72 + self.bottomZhiNanWhiteView.snp.makeConstraints { make in
  73 + make.top.equalTo(self.tableView.snp.bottom)
  74 + make.bottom.left.right.equalToSuperview()
  75 + }
  76 +
  77 + self.bottomZhiNanWhiteView.addSubview(self.jiuYeZhiNanBtn)
  78 + self.jiuYeZhiNanBtn.snp.makeConstraints { make in
  79 + make.left.equalTo(15)
  80 + make.right.equalToSuperview().offset(-15)
  81 + make.top.equalTo(10)
  82 + make.height.equalTo(40)
  83 + }
  84 +
  85 + self.getVitae()
16 86 }
17 87  
  88 +
18 89 deinit {
19 90  
20 91 }
  92 +
  93 + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  94 + return 2
  95 + }
  96 +
  97 + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  98 + if indexPath.row == 0{
  99 + guard let cell = tableView.dequeueReusableCell(withIdentifier: kCNLiveDigitalResumeCellIdentifier) as? CNLiveDigitalResumeCell
  100 + else {
  101 + let cell = CNLiveDigitalResumeCell()
  102 + return cell
  103 + }
  104 + if self.vitaeModel?.vitae?.id ?? 0 > 0{
  105 + cell.vitaeModel = self.vitaeModel!
  106 + }
  107 + return cell
  108 + }else{
  109 + guard let cell = tableView.dequeueReusableCell(withIdentifier: kCNLiveDigitalResumeSecCellIdentifier) as? CNLiveDigitalResumeSecCell
  110 + else {
  111 + let cell = CNLiveDigitalResumeSecCell()
  112 + return cell
  113 + }
  114 + return cell
  115 + }
  116 + }
  117 +
  118 + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
  119 +
  120 + }
  121 +
  122 + func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
  123 + if indexPath.row == 0{
  124 + return 450+adapt_length(length: 86)
  125 + }else{
  126 + return adapt_length(length: 273+471+54.5)
  127 + }
  128 + }
  129 +
  130 + @objc func moreNavBtnAction(){
  131 + print("moreNavBtnAction")
  132 + }
  133 + @objc func jiuYeZhiNanBtnAction(){
  134 + self.show17Alert()
  135 + }
  136 +
  137 + // MARK: - 获取简历数据
  138 + func getVitae(){
  139 +
  140 + CNLiveVitaeViewModel.getVitae(vsid: UserInfoManager.shared.userInfo.currentUser?.vsid ?? "", type: 1) { result, status in
  141 + if status == .success{
  142 + if let model = result as? CNLiveVitaeModel{
  143 + if model.vitae == nil{
  144 + //没有简历-保存简历
  145 + self.saveUpdateVitae(isSave: true)
  146 + }else{
  147 + //有简历-刷新页面
  148 + self.vitaeModel = model
  149 + self.tableView.reloadData()
  150 + }
  151 + }else{
  152 +
  153 + }
  154 + }
  155 + }
  156 + }
  157 + func saveUpdateVitae(isSave:Bool){
  158 +
  159 + CNLiveVitaeViewModel.saveVitae(city: "", icon: "", isSave: isSave, id: 0, phone: "", profession: "", professionId: 0, selfIntroduction: "", showAddress: true, showAge: true, showAwards: true, showPhone: true, updateTime: "", vsid: UserInfoManager.shared.userInfo.currentUser?.vsid ?? "", workTime: "") { result, status in
  160 + if status == .success{
  161 +
  162 + }
  163 + }
  164 +
  165 +
  166 + /**
  167 + {
  168 + "city": "",
  169 + "icon": "",
  170 + "id": 0,
  171 + "phone": "",
  172 + "profession": "",
  173 + "professionId": 0,
  174 + "selfIntroduction": "",
  175 + "showAddress": true,
  176 + "showAge": true,
  177 + "showAwards": true,
  178 + "showPhone": true,
  179 + "updateTime": "",
  180 + "vsid": 9,
  181 + "workTime": ""
  182 + }
  183 + */
  184 +
  185 +
  186 + }
  187 +
  188 + // MARK: - Alert弹窗
  189 + let delegate = UIApplication.shared.delegate as! AppDelegate
  190 + /// 未认证-inputType17时弹窗背景图
  191 + lazy var alertBgImgView:UIImageView = {
  192 + let alertBgImgView:UIImageView = UIImageView()
  193 + alertBgImgView.tag = 20001
  194 + alertBgImgView.isUserInteractionEnabled = true
  195 + let ges = UITapGestureRecognizer(target: self, action: #selector(alertBgImgViewClickAction))
  196 + alertBgImgView.addGestureRecognizer(ges)
  197 +
  198 + return alertBgImgView
  199 + }()
  200 + lazy var alertBgView:UIView = {
  201 + let alertBgView:UIView = UIView(frame: CGRect(x: 0, y: 0, width: KSreenWidth, height: KSreenHeight))
  202 + alertBgView.backgroundColor = HexColor("#000000")
  203 + alertBgView.alpha = 0.6
  204 + alertBgView.isUserInteractionEnabled = true
  205 + alertBgView.tag = 20000
  206 +
  207 + let ges = UITapGestureRecognizer(target: self, action: #selector(alertBgViewClickAction))
  208 + alertBgView.addGestureRecognizer(ges)
  209 +
  210 + return alertBgView
  211 + }()
  212 + // MARK: - 点击弹窗,按类型跳转
  213 + @objc func alertBgImgViewClickAction() {
  214 + self.hiden17Alert()
  215 + }
  216 + @objc func alertBgViewClickAction() {
  217 + //点击蒙版隐藏view
  218 + self.hiden17Alert()
  219 + }
  220 + //弹出弹窗
  221 + func show17Alert(){
  222 +
  223 + delegate.window?.addSubview(self.alertBgView)
  224 + delegate.window?.addSubview(self.alertBgImgView)
  225 + alertBgImgView.snp.makeConstraints { make in
  226 + make.centerX.equalToSuperview()
  227 + make.centerY.equalToSuperview()
  228 + make.width.equalTo(KSreenWidth-80)
  229 + make.height.equalTo((KSreenWidth-80)*170.5/295)
  230 + }
  231 +
  232 + self.alertBgImgView.image = UIImage(named: "auth_alert_unOpen")
  233 + }
  234 + func hiden17Alert(){
  235 + delegate.window?.subviews.forEach({ view in
  236 + if view.tag >= 20000{
  237 + view.removeFromSuperview()
  238 + }
  239 + })
  240 + }
21 241 }
... ...
metaCode/Classes/Main/HomePage/View/DigitalAuthViews/CNLiveDigitalFirstCell.swift
... ... @@ -63,7 +63,7 @@ class CNLiveDigitalFirstCell: UITableViewCell {
63 63 closeBtn.backgroundColor = HexColor("#FFF8DB")
64 64 closeBtn.layer.cornerRadius = 3
65 65 closeBtn.clipsToBounds = true
66   - closeBtn.setTitle("实名对象切换", for: .normal)
  66 + closeBtn.setTitle("实名对象切换", for: .normal)
67 67 closeBtn.setTitleColor(HexColor("#F2A62E"), for: .normal)
68 68 closeBtn.titleLabel?.font = Font_12
69 69 closeBtn.addTarget(self, action: #selector(changePersonBtnAction), for: .touchUpInside)
... ...
metaCode/Classes/Main/HomePage/View/DigitalAuthViews/DigitalResume/CNLiveDigitalResumeCell.swift 0 → 100644
  1 +//
  2 +// CNLiveDigitalResumeCell.swift
  3 +// metaCode
  4 +//
  5 +// Created by zx on 2024/7/15.
  6 +// 数字简历顶部cell
  7 +
  8 +import Foundation
  9 +import Kingfisher
  10 +import SnapKit
  11 +
  12 +class CNLiveDigitalResumeCell: UITableViewCell {
  13 + //简历Model
  14 + var _vitaeModel : CNLiveVitaeModel?
  15 + var vitaeModel : CNLiveVitaeModel? {
  16 + get{
  17 + _vitaeModel
  18 + }
  19 + set{
  20 + _vitaeModel = newValue!
  21 + setupNewUI(model: _vitaeModel!)
  22 + }
  23 + }
  24 +
  25 + lazy var bgImgView :UIImageView = {
  26 + let iconImgView = UIImageView()
  27 + iconImgView.width = KSreenWidth
  28 + iconImgView.height = KSreenWidth*234/375
  29 + // fillCode
  30 + let bgLayer1 = CAGradientLayer()
  31 + bgLayer1.colors = [UIColor(red: 0.16, green: 0.45, blue: 0.99, alpha: 1).cgColor, UIColor(red: 0.96, green: 0.96, blue: 0.98, alpha: 1).cgColor]
  32 + bgLayer1.locations = [0, 1]
  33 + bgLayer1.frame = iconImgView.bounds
  34 + bgLayer1.startPoint = CGPoint(x: 0.5, y: 0)
  35 + bgLayer1.endPoint = CGPoint(x: 1, y: 1)
  36 + iconImgView.layer.addSublayer(bgLayer1)
  37 + return iconImgView
  38 + }()
  39 + lazy var iconImgView :UIImageView = {
  40 + let iconImgView = UIImageView()
  41 + iconImgView.image = UIImage(named: "mine_jianli_iconbg")
  42 + return iconImgView
  43 + }()
  44 + lazy var jianliTitleLabel: UILabel = {
  45 + let titleLabel = UILabel.init()
  46 + titleLabel.textColor = HexColor("#C2D7FF")
  47 + titleLabel.textAlignment = .left
  48 + titleLabel.font = Font_14//数字简历ID:123456789321
  49 + titleLabel.text = "数字简历ID:"
  50 + titleLabel.adjustsFontSizeToFitWidth=true
  51 + titleLabel.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(jianliAction)))
  52 + titleLabel.isUserInteractionEnabled = true
  53 + return titleLabel
  54 + }()
  55 + lazy var jianliDetailImgView :UIImageView = {
  56 + let iconImgView = UIImageView()
  57 + iconImgView.image = UIImage(named: "mine_jianli_back")
  58 + iconImgView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(jianliAction)))
  59 + iconImgView.isUserInteractionEnabled = true
  60 + return iconImgView
  61 + }()
  62 + lazy var whiteBgView :UIView = {
  63 + let whiteBgView = UIView()
  64 + whiteBgView.backgroundColor = .white
  65 + whiteBgView.layer.cornerRadius = 12
  66 + whiteBgView.clipsToBounds = true
  67 + return whiteBgView
  68 + }()
  69 + lazy var jianliIconBgView :UIView = {
  70 + let whiteBgView = UIView()
  71 + whiteBgView.backgroundColor = .white
  72 + whiteBgView.layer.cornerRadius = 12
  73 + whiteBgView.clipsToBounds = true
  74 + return whiteBgView
  75 + }()
  76 + lazy var jianliIconImgView :UIImageView = {
  77 + let iconImgView = UIImageView()
  78 + iconImgView.image = UIImage(named: "mine_jianli_icon")
  79 + iconImgView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(jianliIconAction)))
  80 + iconImgView.isUserInteractionEnabled = true
  81 + return iconImgView
  82 + }()
  83 + //已认证 名字
  84 + lazy var authNameTitleLabel: UILabel = {
  85 + let titleLabel = UILabel()
  86 + titleLabel.textColor = HexColor("#333333")
  87 + titleLabel.textAlignment = .center
  88 + titleLabel.text = ""
  89 + titleLabel.font = BoldFont_24
  90 + return titleLabel
  91 + }()
  92 + lazy var changePersonBtn: UIButton = {
  93 + let closeBtn = UIButton(type: .custom)
  94 + closeBtn.backgroundColor = HexColor("#FFF8DB")
  95 + closeBtn.layer.cornerRadius = 3
  96 + closeBtn.clipsToBounds = true
  97 + closeBtn.setTitle("实名对象切换 ▶", for: .normal)
  98 + closeBtn.setTitleColor(HexColor("#F2A62E"), for: .normal)
  99 + closeBtn.titleLabel?.font = Font_12
  100 + closeBtn.addTarget(self, action: #selector(changePersonBtnAction), for: .touchUpInside)
  101 + return closeBtn
  102 + }()
  103 + lazy var phoneTitleLabel: UILabel = {
  104 + let titleLabel = UILabel()
  105 + titleLabel.textColor = HexColor("#999999")
  106 + titleLabel.textAlignment = .left
  107 + titleLabel.text = "男 | xx岁 | 10000000000"
  108 + titleLabel.font = Font_14
  109 + return titleLabel
  110 + }()
  111 + lazy var workTitleLabel: UILabel = {
  112 + let titleLabel = UILabel()
  113 + titleLabel.textColor = HexColor("#999999")
  114 + titleLabel.textAlignment = .left
  115 + titleLabel.text = "参加工作时间未设置 >"
  116 + titleLabel.font = Font_14
  117 + titleLabel.isUserInteractionEnabled = true
  118 + titleLabel.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(workTitleLabelAciton)))
  119 + return titleLabel
  120 + }()
  121 + lazy var lineView :UIView = {
  122 + let bottomNavView = UIView()
  123 + bottomNavView.backgroundColor = HexColor("#EBEBEB")
  124 + return bottomNavView
  125 + }()
  126 + lazy var hangyeTitleLabel: UILabel = {
  127 + let titleLabel = UILabel()
  128 + titleLabel.textColor = HexColor("#333333")
  129 + titleLabel.textAlignment = .left
  130 + titleLabel.text = "行业"
  131 + titleLabel.font = BoldFont_14
  132 + return titleLabel
  133 + }()
  134 + lazy var hangyeDetailTitleLabel: UILabel = {
  135 + let titleLabel = UILabel()
  136 + titleLabel.textColor = HexColor("#999999")
  137 + titleLabel.textAlignment = .right
  138 + titleLabel.text = "选择您所在行业 >"
  139 + titleLabel.font = Font_14
  140 + titleLabel.isUserInteractionEnabled = true
  141 + titleLabel.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(hangyeDetailTitleLabelAciton)))
  142 +
  143 + return titleLabel
  144 + }()
  145 + lazy var renzhengTitleLabel: UILabel = {
  146 + let titleLabel = UILabel()
  147 + titleLabel.textColor = HexColor("#333333")
  148 + titleLabel.textAlignment = .left
  149 + titleLabel.text = "官方认证"
  150 + titleLabel.font = BoldFont_14
  151 + return titleLabel
  152 + }()
  153 + lazy var renzhengDetailTitleLabel: UILabel = {
  154 + let titleLabel = UILabel()
  155 + titleLabel.textColor = HexColor("#999999")
  156 + titleLabel.textAlignment = .right
  157 + titleLabel.text = "添加职业技能身份 0 >"
  158 + titleLabel.font = Font_14
  159 + titleLabel.isUserInteractionEnabled = true
  160 + titleLabel.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(renzhengDetailTitleLabelAciton)))
  161 +
  162 + return titleLabel
  163 + }()
  164 + lazy var zhengshuTitleLabel: UILabel = {
  165 + let titleLabel = UILabel()
  166 + titleLabel.textColor = HexColor("#333333")
  167 + titleLabel.textAlignment = .left
  168 + titleLabel.text = "其他证书"
  169 + titleLabel.font = BoldFont_14
  170 + return titleLabel
  171 + }()
  172 + lazy var zhengshuDetailTitleLabel: UILabel = {
  173 + let titleLabel = UILabel()
  174 + titleLabel.textColor = HexColor("#999999")
  175 + titleLabel.textAlignment = .right
  176 + titleLabel.text = "上传证书 0 >"
  177 + titleLabel.font = Font_14
  178 + titleLabel.isUserInteractionEnabled = true
  179 + titleLabel.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(zhengshuDetailTitleLabelAciton)))
  180 +
  181 + return titleLabel
  182 + }()
  183 + lazy var gongzuoTitleLabel: UILabel = {
  184 + let titleLabel = UILabel()
  185 + titleLabel.textColor = HexColor("#333333")
  186 + titleLabel.textAlignment = .left
  187 + titleLabel.text = "工作记录"
  188 + titleLabel.font = BoldFont_14
  189 + return titleLabel
  190 + }()
  191 + lazy var gongzuoDetailTitleLabel: UILabel = {
  192 + let titleLabel = UILabel()
  193 + titleLabel.textColor = HexColor("#999999")
  194 + titleLabel.textAlignment = .right
  195 + titleLabel.text = "补充工作记录 0 >"
  196 + titleLabel.font = Font_14
  197 + titleLabel.isUserInteractionEnabled = true
  198 + titleLabel.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(gongzuoDetailTitleLabelAciton)))
  199 +
  200 + return titleLabel
  201 + }()
  202 + lazy var huojiangTitleLabel: UILabel = {
  203 + let titleLabel = UILabel()
  204 + titleLabel.textColor = HexColor("#333333")
  205 + titleLabel.textAlignment = .left
  206 + titleLabel.text = "获奖情况"
  207 + titleLabel.font = BoldFont_14
  208 + return titleLabel
  209 + }()
  210 + lazy var huojiangDetailTitleLabel: UILabel = {
  211 + let titleLabel = UILabel()
  212 + titleLabel.textColor = HexColor("#999999")
  213 + titleLabel.textAlignment = .right
  214 + titleLabel.text = "展示获奖情况 0 >"
  215 + titleLabel.font = Font_14
  216 + titleLabel.isUserInteractionEnabled = true
  217 + titleLabel.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(huojiangDetailTitleLabelAciton)))
  218 +
  219 + return titleLabel
  220 + }()
  221 + lazy var bottomLineView :UIView = {
  222 + let bottomNavView = UIView()
  223 + bottomNavView.backgroundColor = HexColor("#EBEBEB")
  224 + return bottomNavView
  225 + }()
  226 + lazy var chakanTitleLabel: UILabel = {
  227 + let titleLabel = UILabel()
  228 + titleLabel.textColor = HexColor("#999999")
  229 + titleLabel.textAlignment = .right
  230 + titleLabel.text = "查看完整资料 >"
  231 + titleLabel.font = Font_14
  232 + titleLabel.isUserInteractionEnabled = true
  233 + titleLabel.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(chakanTitleLabelAciton)))
  234 +
  235 + return titleLabel
  236 + }()
  237 + lazy var shezhiView :UIView = {
  238 + let bottomNavView = UIView()
  239 + bottomNavView.width = KSreenWidth-30
  240 + bottomNavView.height = 61
  241 + // fillCode
  242 + let bgLayer1 = CAGradientLayer()
  243 + bgLayer1.colors = [UIColor(red: 0.98, green: 1, blue: 1, alpha: 1).cgColor, UIColor(red: 0.9, green: 0.95, blue: 1, alpha: 1).cgColor]
  244 + bgLayer1.locations = [0, 1]
  245 + bgLayer1.frame = bottomNavView.bounds
  246 + bgLayer1.startPoint = CGPoint(x: 0.5, y: 1)
  247 + bgLayer1.endPoint = CGPoint(x: 0, y: 0)
  248 + bottomNavView.layer.addSublayer(bgLayer1)
  249 + return bottomNavView
  250 + }()
  251 + lazy var shezhiBtn: UIButton = {
  252 + let closeBtn = UIButton(type: .custom)
  253 + closeBtn.layer.cornerRadius = 8
  254 + closeBtn.clipsToBounds = true
  255 + closeBtn.setTitle("设置", for: .normal)
  256 + closeBtn.setTitleColor(HexColor("#333333"), for: .normal)
  257 + closeBtn.titleLabel?.font = BoldFont_16
  258 + closeBtn.backgroundColor = HexColor("#E8EBF4")
  259 + closeBtn.addTarget(self, action: #selector(shezhiBtnAction), for: .touchUpInside)
  260 + return closeBtn
  261 + }()
  262 + lazy var chakanBtn: UIButton = {
  263 + let closeBtn = UIButton(type: .custom)
  264 + closeBtn.layer.cornerRadius = 8
  265 + closeBtn.clipsToBounds = true
  266 + closeBtn.setTitle("查看我的数字简历", for: .normal)
  267 + closeBtn.setTitleColor(HexColor("#FFFFFF"), for: .normal)
  268 + closeBtn.titleLabel?.font = BoldFont_16
  269 + closeBtn.backgroundColor = HexColor("#1961FE")
  270 + closeBtn.addTarget(self, action: #selector(chakanBtnAction), for: .touchUpInside)
  271 + return closeBtn
  272 + }()
  273 +
  274 +
  275 + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
  276 + super.init(style: style, reuseIdentifier: reuseIdentifier)
  277 + self.selectionStyle = .none
  278 + self.backgroundColor = .clear
  279 + self.contentView.backgroundColor = .clear
  280 + self.contentView.addSubview(self.bgImgView)
  281 + self.bgImgView.snp.makeConstraints { make in
  282 + make.top.equalTo(0)
  283 + make.left.right.equalToSuperview()
  284 + make.height.equalTo(KSreenWidth*234/375)
  285 + }
  286 +
  287 + self.bgImgView.addSubview(self.iconImgView)
  288 + self.iconImgView.snp.makeConstraints { make in
  289 + make.top.equalTo(23)
  290 + make.left.equalTo(15)
  291 + make.height.equalTo(25)
  292 + make.width.equalTo(149)
  293 + }
  294 +
  295 + self.bgImgView.addSubview(self.jianliTitleLabel)
  296 + self.jianliTitleLabel.snp.makeConstraints { make in
  297 + make.top.equalTo(self.iconImgView.snp.bottom).offset(7)
  298 + make.left.equalTo(15)
  299 + }
  300 + self.bgImgView.addSubview(self.jianliDetailImgView)
  301 + self.jianliDetailImgView.snp.makeConstraints { make in
  302 + make.left.equalTo(self.jianliTitleLabel.snp.right).offset(4)
  303 + make.centerY.equalTo(self.jianliTitleLabel.snp.centerY)
  304 + make.height.equalTo(12)
  305 + make.width.equalTo(12)
  306 + }
  307 +
  308 + self.contentView.addSubview(self.whiteBgView)
  309 + self.whiteBgView.snp.makeConstraints { make in
  310 + make.top.equalTo(adapt_length(length: 87))
  311 + make.bottom.equalToSuperview()
  312 + make.left.equalTo(15)
  313 + make.right.equalToSuperview().offset(-15)
  314 + }
  315 +
  316 + self.contentView.addSubview(self.jianliIconBgView)
  317 + self.jianliIconBgView.snp.makeConstraints { make in
  318 + make.top.equalTo(adapt_length(length: 57))
  319 + make.right.equalToSuperview().offset(adapt_length(length: -42))
  320 + make.width.height.equalTo(adapt_length(length: 90))
  321 + }
  322 + self.jianliIconBgView.addSubview(self.jianliIconImgView)
  323 + self.jianliIconImgView.snp.makeConstraints { make in
  324 + make.width.height.equalTo(adapt_length(length: 70))
  325 + make.center.equalToSuperview()
  326 + }
  327 +
  328 + self.whiteBgView.addSubview(self.authNameTitleLabel)
  329 + self.authNameTitleLabel.snp.makeConstraints { make in
  330 + make.left.equalTo(adapt_length(length: 15))
  331 + make.top.equalTo(adapt_length(length: 20))
  332 + }
  333 + self.authNameTitleLabel.text = UserInfoManager.shared.userInfo.currentUser?.name
  334 + self.whiteBgView.addSubview(self.changePersonBtn)
  335 + self.changePersonBtn.snp.makeConstraints { make in
  336 + make.left.equalTo(self.authNameTitleLabel.snp.right).offset(adapt_length(length: 5))
  337 + make.centerY.equalTo(self.authNameTitleLabel.snp.centerY)
  338 + make.width.equalTo(adapt_length(length: 91))
  339 + make.height.equalTo(adapt_length(length: 21))
  340 + }
  341 + self.whiteBgView.addSubview(self.phoneTitleLabel)
  342 + self.phoneTitleLabel.snp.makeConstraints { make in
  343 + make.left.equalTo(adapt_length(length: 15))
  344 + make.top.equalTo(self.authNameTitleLabel.snp.bottom).offset(adapt_length(length: 8))
  345 + }
  346 + let (gender, age) = self.extractGenderAndAge(fromIDCardNumber: UserInfoManager.shared.userInfo.currentUser?.idNo ?? "")
  347 + let ageStr = String(format: "%d", age ?? 0)
  348 + self.phoneTitleLabel.text = gender+" | "+ageStr+"岁"+" | "+UserInfoManager.shared.userInfo.mobile
  349 +
  350 + self.whiteBgView.addSubview(self.workTitleLabel)
  351 + self.workTitleLabel.snp.makeConstraints { make in
  352 + make.left.equalTo(adapt_length(length: 15))
  353 + make.top.equalTo(self.phoneTitleLabel.snp.bottom).offset(adapt_length(length: 4))
  354 + }
  355 +
  356 + self.whiteBgView.addSubview(self.lineView)
  357 + self.lineView.snp.makeConstraints { make in
  358 + make.left.equalTo(adapt_length(length: 15))
  359 + make.right.equalToSuperview().offset(adapt_length(length: -15))
  360 + make.top.equalTo(self.workTitleLabel.snp.bottom).offset(adapt_length(length: 15))
  361 + make.height.equalTo(0.5)
  362 + }
  363 +
  364 + self.whiteBgView.addSubview(self.hangyeTitleLabel)
  365 + self.hangyeTitleLabel.snp.makeConstraints { make in
  366 + make.left.equalTo(adapt_length(length: 15))
  367 + make.top.equalTo(self.lineView.snp.bottom).offset(adapt_length(length: 20))
  368 + }
  369 + self.whiteBgView.addSubview(self.hangyeDetailTitleLabel)
  370 + self.hangyeDetailTitleLabel.snp.makeConstraints { make in
  371 + make.right.equalToSuperview().offset(adapt_length(length: -20))
  372 + make.centerY.equalTo(self.hangyeTitleLabel.snp.centerY)
  373 + }
  374 +
  375 +
  376 +
  377 + self.whiteBgView.addSubview(self.renzhengTitleLabel)
  378 + self.renzhengTitleLabel.snp.makeConstraints { make in
  379 + make.left.equalTo(adapt_length(length: 15))
  380 + make.top.equalTo(self.hangyeTitleLabel.snp.bottom).offset(adapt_length(length: 20))
  381 + }
  382 + self.whiteBgView.addSubview(self.renzhengDetailTitleLabel)
  383 + self.renzhengDetailTitleLabel.snp.makeConstraints { make in
  384 + make.right.equalToSuperview().offset(adapt_length(length: -20))
  385 + make.centerY.equalTo(self.renzhengTitleLabel.snp.centerY)
  386 + }
  387 +
  388 + self.whiteBgView.addSubview(self.zhengshuTitleLabel)
  389 + self.zhengshuTitleLabel.snp.makeConstraints { make in
  390 + make.left.equalTo(adapt_length(length: 15))
  391 + make.top.equalTo(self.renzhengTitleLabel.snp.bottom).offset(adapt_length(length: 20))
  392 + }
  393 + self.whiteBgView.addSubview(self.zhengshuDetailTitleLabel)
  394 + self.zhengshuDetailTitleLabel.snp.makeConstraints { make in
  395 + make.right.equalToSuperview().offset(adapt_length(length: -20))
  396 + make.centerY.equalTo(self.zhengshuTitleLabel.snp.centerY)
  397 + }
  398 +
  399 + self.whiteBgView.addSubview(self.gongzuoTitleLabel)
  400 + self.gongzuoTitleLabel.snp.makeConstraints { make in
  401 + make.left.equalTo(adapt_length(length: 15))
  402 + make.top.equalTo(self.zhengshuTitleLabel.snp.bottom).offset(adapt_length(length: 20))
  403 + }
  404 + self.whiteBgView.addSubview(self.gongzuoDetailTitleLabel)
  405 + self.gongzuoDetailTitleLabel.snp.makeConstraints { make in
  406 + make.right.equalToSuperview().offset(adapt_length(length: -20))
  407 + make.centerY.equalTo(self.gongzuoTitleLabel.snp.centerY)
  408 + }
  409 +
  410 + self.whiteBgView.addSubview(self.huojiangTitleLabel)
  411 + self.huojiangTitleLabel.snp.makeConstraints { make in
  412 + make.left.equalTo(adapt_length(length: 15))
  413 + make.top.equalTo(self.gongzuoTitleLabel.snp.bottom).offset(adapt_length(length: 20))
  414 + }
  415 + self.whiteBgView.addSubview(self.huojiangDetailTitleLabel)
  416 + self.huojiangDetailTitleLabel.snp.makeConstraints { make in
  417 + make.right.equalToSuperview().offset(adapt_length(length: -20))
  418 + make.centerY.equalTo(self.huojiangTitleLabel.snp.centerY)
  419 + }
  420 +
  421 + self.whiteBgView.addSubview(self.bottomLineView)
  422 + self.bottomLineView.snp.makeConstraints { make in
  423 + make.left.equalTo(adapt_length(length: 15))
  424 + make.right.equalToSuperview().offset(adapt_length(length: -15))
  425 + make.top.equalTo(self.huojiangTitleLabel.snp.bottom).offset(adapt_length(length: 20))
  426 + make.height.equalTo(0.5)
  427 + }
  428 +
  429 + self.whiteBgView.addSubview(self.chakanTitleLabel)
  430 + self.chakanTitleLabel.snp.makeConstraints { make in
  431 + make.top.equalTo(self.bottomLineView.snp.bottom).offset(15)
  432 + make.centerX.equalToSuperview()
  433 + make.width.equalTo(100)
  434 + }
  435 + self.whiteBgView.addSubview(self.shezhiView)
  436 + self.shezhiView.snp.makeConstraints { make in
  437 + make.left.right.equalToSuperview()
  438 + make.top.equalTo(self.chakanTitleLabel.snp.bottom).offset(15)
  439 + make.height.equalTo(60)
  440 + }
  441 + self.shezhiView.addSubview(self.shezhiBtn)
  442 + self.shezhiBtn.snp.makeConstraints { make in
  443 + make.left.equalTo(adapt_length(length: 15))
  444 + make.width.equalTo(adapt_length(length: 105))
  445 + make.top.equalTo(10)
  446 + make.height.equalTo(40)
  447 + }
  448 + self.shezhiView.addSubview(self.chakanBtn)
  449 + self.chakanBtn.snp.makeConstraints { make in
  450 + make.right.equalToSuperview().offset(adapt_length(length: -15))
  451 + make.width.equalTo(adapt_length(length: 195))
  452 + make.top.equalTo(10)
  453 + make.height.equalTo(40)
  454 + }
  455 +
  456 + }
  457 +
  458 + required init?(coder: NSCoder) {
  459 + fatalError("init(coder:) has not been implemented")
  460 + }
  461 +
  462 + //身份证号提取 性别和年龄
  463 + func extractGenderAndAge(fromIDCardNumber idCardNumber: String) -> (gender: String, age: Int?) {
  464 + guard idCardNumber.count == 18 else {
  465 + return ("未知", nil)
  466 + }
  467 +
  468 + // 提取出生年份(身份证号码的第7位到第14位)
  469 + let birthYearStr = idCardNumber.subString(start: 6, length: 4)
  470 + guard let birthYear = Int(birthYearStr) else {
  471 + return ("未知", nil)
  472 + }
  473 +
  474 + // 计算年龄
  475 + let currentYear = Calendar.current.component(.year, from: Date())
  476 + let age = currentYear - birthYear
  477 +
  478 + // 提取性别(身份证号码的第17位,奇数代表男,偶数代表女)
  479 + let genderCode = Int(String(idCardNumber[idCardNumber.index(idCardNumber.startIndex, offsetBy: 16)]))
  480 + let gender = genderCode != nil && genderCode! % 2 == 0 ? "女" : "男"
  481 +
  482 + return (gender, age >= 0 ? age : nil)
  483 + }
  484 +
  485 + // MARK: - buttonAction
  486 + @objc func jianliAction(){
  487 +
  488 + }
  489 + @objc func jianliIconAction(){
  490 +
  491 + }
  492 + @objc func changePersonBtnAction(){
  493 +
  494 + }
  495 + @objc func workTitleLabelAciton(){
  496 +
  497 + }
  498 + @objc func hangyeDetailTitleLabelAciton(){
  499 +
  500 + }
  501 + @objc func renzhengDetailTitleLabelAciton(){
  502 +
  503 + }
  504 + @objc func zhengshuDetailTitleLabelAciton(){
  505 +
  506 + }
  507 + @objc func gongzuoDetailTitleLabelAciton(){
  508 +
  509 + }
  510 + @objc func huojiangDetailTitleLabelAciton(){
  511 +
  512 + }
  513 + @objc func chakanTitleLabelAciton(){
  514 +
  515 + }
  516 + @objc func shezhiBtnAction(){
  517 +
  518 + }
  519 + @objc func chakanBtnAction(){
  520 +
  521 + }
  522 +
  523 +
  524 + func setupNewUI(model:CNLiveVitaeModel){
  525 + self.jianliTitleLabel.text = "数字简历ID:"+"\(model.vitae!.id)"
  526 + }
  527 +}
... ...
metaCode/Classes/Main/HomePage/View/DigitalAuthViews/DigitalResume/CNLiveDigitalResumeSecCell.swift 0 → 100644
  1 +//
  2 +// CNLiveDigitalResumeSecCell.swift
  3 +// metaCode
  4 +//
  5 +// Created by zx on 2024/7/15.
  6 +// 数字简历-sec-cell
  7 +
  8 +import Foundation
  9 +
  10 +class CNLiveDigitalResumeSecCell:UITableViewCell{
  11 +
  12 + var _usersModel : MineGetUserMsgVerifyUsersModel?
  13 + var usersModel : MineGetUserMsgVerifyUsersModel? {
  14 + get{
  15 + _usersModel
  16 + }
  17 + set{
  18 + _usersModel = newValue!
  19 + setupNewUI(model: _usersModel!)
  20 + }
  21 + }
  22 +
  23 + lazy var leftWhiteBgView :UIImageView = {
  24 + let bottomNavView = UIImageView()
  25 + bottomNavView.backgroundColor = HexColor("#FFFFFF")
  26 + bottomNavView.layer.cornerRadius = 12
  27 + bottomNavView.clipsToBounds = true
  28 + bottomNavView.image = UIImage(named: "mine_jianli_qiuzhi")
  29 + bottomNavView.contentMode = .scaleAspectFit
  30 + bottomNavView.isUserInteractionEnabled = true
  31 + bottomNavView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(leftQiuZhiAction)))
  32 + return bottomNavView
  33 + }()
  34 + lazy var rightWhiteBgView :UIImageView = {
  35 + let bottomNavView = UIImageView()
  36 + bottomNavView.backgroundColor = HexColor("#FFFFFF")
  37 + bottomNavView.layer.cornerRadius = 12
  38 + bottomNavView.clipsToBounds = true
  39 + bottomNavView.image = UIImage(named: "mine_jianli_zhiye")
  40 + bottomNavView.contentMode = .scaleAspectFit
  41 + bottomNavView.isUserInteractionEnabled = true
  42 + bottomNavView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(rightZhiYeAction)))
  43 + return bottomNavView
  44 + }()
  45 + lazy var bottomWhiteBgView :UIView = {
  46 + let bottomNavView = UIView()
  47 + bottomNavView.backgroundColor = HexColor("#FFFFFF")
  48 + bottomNavView.layer.cornerRadius = 12
  49 + bottomNavView.clipsToBounds = true
  50 + return bottomNavView
  51 + }()
  52 + lazy var bottomTitleLabel: UILabel = {
  53 + let titleLabel = UILabel()
  54 + titleLabel.textColor = HexColor("#333333")
  55 + titleLabel.text = "大家都在看"
  56 + titleLabel.textAlignment = .left
  57 + titleLabel.font = BoldFont_18
  58 + return titleLabel
  59 + }()
  60 + lazy var bottomZhiYuanZheView :UIImageView = {
  61 + let bottomNavView = UIImageView()
  62 + bottomNavView.image = UIImage(named: "mine_jianli_zhiyuanzhe")
  63 + bottomNavView.contentMode = .scaleAspectFit
  64 + bottomNavView.isUserInteractionEnabled = true
  65 + bottomNavView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(zhiyuanzheAction)))
  66 + return bottomNavView
  67 + }()
  68 + lazy var bottomYangLaoHuLiYuanView :UIImageView = {
  69 + let bottomNavView = UIImageView()
  70 + bottomNavView.image = UIImage(named: "mine_jianli_huliyuan")
  71 + bottomNavView.contentMode = .scaleAspectFit
  72 + bottomNavView.isUserInteractionEnabled = true
  73 + bottomNavView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(yangLaoHuLiYuanAction)))
  74 + return bottomNavView
  75 + }()
  76 + lazy var bottomErTongPeiBanShiView :UIImageView = {
  77 + let bottomNavView = UIImageView()
  78 + bottomNavView.image = UIImage(named: "mine_jianli_peibanshi")
  79 + bottomNavView.contentMode = .scaleAspectFit
  80 + bottomNavView.isUserInteractionEnabled = true
  81 + bottomNavView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(erTongPeiBanShiAction)))
  82 + return bottomNavView
  83 + }()
  84 + lazy var bottomXinLiZhiYunShiView :UIImageView = {
  85 + let bottomNavView = UIImageView()
  86 + bottomNavView.image = UIImage(named: "mine_jianli_xinli")
  87 + bottomNavView.contentMode = .scaleAspectFit
  88 + bottomNavView.isUserInteractionEnabled = true
  89 + bottomNavView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(xinLiZhiYunShiAction)))
  90 + return bottomNavView
  91 + }()
  92 + lazy var bottomJiaTingJiaoYuView :UIImageView = {
  93 + let bottomNavView = UIImageView()
  94 + bottomNavView.image = UIImage(named: "mine_jianli_jiating")
  95 + bottomNavView.contentMode = .scaleAspectFit
  96 + bottomNavView.isUserInteractionEnabled = true
  97 + bottomNavView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(JiaTingJiaoYuAction)))
  98 + return bottomNavView
  99 + }()
  100 + lazy var bottomGaoKaoYiShuView :UIImageView = {
  101 + let bottomNavView = UIImageView()
  102 + bottomNavView.image = UIImage(named: "mine_jianli_gaokao")
  103 + bottomNavView.contentMode = .scaleAspectFit
  104 + bottomNavView.isUserInteractionEnabled = true
  105 + bottomNavView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(GaoKaoYiShuAction)))
  106 + return bottomNavView
  107 + }()
  108 + lazy var bottomZhiYeGuiHuaView :UIImageView = {
  109 + let bottomNavView = UIImageView()
  110 + bottomNavView.image = UIImage(named: "mine_jianli_zhiyeguigua")
  111 + bottomNavView.contentMode = .scaleAspectFit
  112 + bottomNavView.isUserInteractionEnabled = true
  113 + bottomNavView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(ZhiYeGuiHuaAction)))
  114 + return bottomNavView
  115 + }()
  116 +
  117 + lazy var bottomIconView :UIImageView = {
  118 + let bottomNavView = UIImageView()
  119 + bottomNavView.image = UIImage(named: "mine_jianli_grayIcon")
  120 + bottomNavView.contentMode = .scaleAspectFit
  121 + return bottomNavView
  122 + }()
  123 +
  124 + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
  125 + super.init(style: style, reuseIdentifier: reuseIdentifier)
  126 + self.selectionStyle = .none
  127 + self.backgroundColor = .clear
  128 + self.contentView.backgroundColor = .clear
  129 + self.initUI()
  130 + }
  131 +
  132 + required init?(coder: NSCoder) {
  133 + fatalError("init(coder:) has not been implemented")
  134 + }
  135 +
  136 + func initUI(){
  137 + self.contentView.addSubview(self.leftWhiteBgView)
  138 + self.leftWhiteBgView.snp.makeConstraints { make in
  139 + make.left.top.equalTo(adapt_length(length: 15))
  140 + make.width.equalTo(adapt_length(length: 165))
  141 + make.height.equalTo(adapt_length(length: 242))
  142 + }
  143 + self.contentView.addSubview(self.rightWhiteBgView)
  144 + self.rightWhiteBgView.snp.makeConstraints { make in
  145 + make.top.equalTo(adapt_length(length: 15))
  146 + make.right.equalToSuperview().offset(-adapt_length(length: 15))
  147 + make.width.equalTo(adapt_length(length: 165))
  148 + make.height.equalTo(adapt_length(length: 242))
  149 + }
  150 +
  151 + self.contentView.addSubview(self.bottomWhiteBgView)
  152 + self.bottomWhiteBgView.snp.makeConstraints { make in
  153 + make.top.equalTo(self.leftWhiteBgView.snp.bottom).offset(adapt_length(length: 15))
  154 + make.right.equalToSuperview().offset(-adapt_length(length: 15))
  155 + make.left.equalTo(adapt_length(length: 15))
  156 + make.height.equalTo(adapt_length(length: 471))
  157 + }
  158 + self.bottomWhiteBgView.addSubview(self.bottomTitleLabel)
  159 + self.bottomTitleLabel.snp.makeConstraints { make in
  160 + make.left.equalTo(adapt_length(length: 15))
  161 + make.top.equalTo(adapt_length(length: 15))
  162 + }
  163 +
  164 + self.bottomWhiteBgView.addSubview(self.bottomZhiYuanZheView)
  165 + self.bottomZhiYuanZheView.snp.makeConstraints { make in
  166 + make.left.equalTo(adapt_length(length: 15))
  167 + make.top.equalTo(self.bottomTitleLabel.snp.bottom).offset(adapt_length(length: 15))
  168 + make.width.equalTo(adapt_length(length: 152))
  169 + make.height.equalTo(adapt_length(length: 92))
  170 + }
  171 + self.bottomWhiteBgView.addSubview(self.bottomYangLaoHuLiYuanView)
  172 + self.bottomYangLaoHuLiYuanView.snp.makeConstraints { make in
  173 + make.right.equalToSuperview().offset(adapt_length(length: -15))
  174 + make.top.equalTo(self.bottomTitleLabel.snp.bottom).offset(adapt_length(length: 15))
  175 + make.width.equalTo(self.bottomZhiYuanZheView.snp.width)
  176 + make.height.equalTo(self.bottomZhiYuanZheView.snp.height)
  177 + }
  178 +
  179 + self.bottomWhiteBgView.addSubview(self.bottomErTongPeiBanShiView)
  180 + self.bottomErTongPeiBanShiView.snp.makeConstraints { make in
  181 + make.left.equalTo(adapt_length(length: 15))
  182 + make.top.equalTo(self.bottomZhiYuanZheView.snp.bottom).offset(adapt_length(length: 11))
  183 + make.width.equalTo(adapt_length(length: 152))
  184 + make.height.equalTo(adapt_length(length: 92))
  185 + }
  186 + self.bottomWhiteBgView.addSubview(self.bottomXinLiZhiYunShiView)
  187 + self.bottomXinLiZhiYunShiView.snp.makeConstraints { make in
  188 + make.right.equalToSuperview().offset(adapt_length(length: -15))
  189 + make.top.equalTo(self.bottomYangLaoHuLiYuanView.snp.bottom).offset(adapt_length(length: 11))
  190 + make.width.equalTo(self.bottomZhiYuanZheView.snp.width)
  191 + make.height.equalTo(self.bottomZhiYuanZheView.snp.height)
  192 + }
  193 +
  194 + self.bottomWhiteBgView.addSubview(self.bottomJiaTingJiaoYuView)
  195 + self.bottomJiaTingJiaoYuView.snp.makeConstraints { make in
  196 + make.left.equalTo(adapt_length(length: 15))
  197 + make.top.equalTo(self.bottomErTongPeiBanShiView.snp.bottom).offset(adapt_length(length: 11))
  198 + make.width.equalTo(adapt_length(length: 152))
  199 + make.height.equalTo(adapt_length(length: 92))
  200 + }
  201 + self.bottomWhiteBgView.addSubview(self.bottomGaoKaoYiShuView)
  202 + self.bottomGaoKaoYiShuView.snp.makeConstraints { make in
  203 + make.right.equalToSuperview().offset(adapt_length(length: -15))
  204 + make.top.equalTo(self.bottomXinLiZhiYunShiView.snp.bottom).offset(adapt_length(length: 11))
  205 + make.width.equalTo(self.bottomZhiYuanZheView.snp.width)
  206 + make.height.equalTo(self.bottomZhiYuanZheView.snp.height)
  207 + }
  208 +
  209 + self.bottomWhiteBgView.addSubview(self.bottomZhiYeGuiHuaView)
  210 + self.bottomZhiYeGuiHuaView.snp.makeConstraints { make in
  211 + make.left.equalTo(adapt_length(length: 15))
  212 + make.top.equalTo(self.bottomJiaTingJiaoYuView.snp.bottom).offset(adapt_length(length: 11))
  213 + make.width.equalTo(adapt_length(length: 152))
  214 + make.height.equalTo(adapt_length(length: 92))
  215 + }
  216 +
  217 + self.contentView.addSubview(self.bottomIconView)
  218 + self.bottomIconView.snp.makeConstraints { make in
  219 + make.top.equalTo(self.bottomWhiteBgView.snp.bottom).offset(adapt_length(length: 15))
  220 + make.centerX.equalToSuperview()
  221 + make.width.equalTo(adapt_length(length: 149))
  222 + make.height.equalTo(adapt_length(length: 25))
  223 + }
  224 +
  225 + }
  226 +
  227 + func setupNewUI(model:MineGetUserMsgVerifyUsersModel){
  228 +
  229 + }
  230 +
  231 + // MARK: - buttonAction
  232 + @objc func leftQiuZhiAction(){
  233 + self.show17Alert()
  234 + }
  235 + @objc func rightZhiYeAction(){
  236 + self.show17Alert()
  237 + }
  238 + @objc func zhiyuanzheAction(){
  239 + self.show17Alert()
  240 + }
  241 + @objc func yangLaoHuLiYuanAction(){
  242 + self.show17Alert()
  243 + }
  244 + @objc func erTongPeiBanShiAction(){
  245 + self.show17Alert()
  246 + }
  247 + @objc func xinLiZhiYunShiAction(){
  248 + self.show17Alert()
  249 + }
  250 + @objc func JiaTingJiaoYuAction(){
  251 + self.show17Alert()
  252 + }
  253 + @objc func GaoKaoYiShuAction(){
  254 + self.show17Alert()
  255 + }
  256 + @objc func ZhiYeGuiHuaAction(){
  257 + self.show17Alert()
  258 + }
  259 +
  260 + let delegate = UIApplication.shared.delegate as! AppDelegate
  261 + /// 未认证-inputType17时弹窗背景图
  262 + lazy var alertBgImgView:UIImageView = {
  263 + let alertBgImgView:UIImageView = UIImageView()
  264 + alertBgImgView.tag = 20001
  265 + alertBgImgView.isUserInteractionEnabled = true
  266 + let ges = UITapGestureRecognizer(target: self, action: #selector(alertBgImgViewClickAction))
  267 + alertBgImgView.addGestureRecognizer(ges)
  268 +
  269 + return alertBgImgView
  270 + }()
  271 + lazy var alertBgView:UIView = {
  272 + let alertBgView:UIView = UIView(frame: CGRect(x: 0, y: 0, width: KSreenWidth, height: KSreenHeight))
  273 + alertBgView.backgroundColor = HexColor("#000000")
  274 + alertBgView.alpha = 0.6
  275 + alertBgView.isUserInteractionEnabled = true
  276 + alertBgView.tag = 20000
  277 +
  278 + let ges = UITapGestureRecognizer(target: self, action: #selector(alertBgViewClickAction))
  279 + alertBgView.addGestureRecognizer(ges)
  280 +
  281 + return alertBgView
  282 + }()
  283 + // MARK: - 点击弹窗,按类型跳转
  284 + @objc func alertBgImgViewClickAction() {
  285 + self.hiden17Alert()
  286 + }
  287 + @objc func alertBgViewClickAction() {
  288 + //点击蒙版隐藏view
  289 + self.hiden17Alert()
  290 + }
  291 + //弹出弹窗
  292 + func show17Alert(){
  293 +
  294 + delegate.window?.addSubview(self.alertBgView)
  295 + delegate.window?.addSubview(self.alertBgImgView)
  296 + alertBgImgView.snp.makeConstraints { make in
  297 + make.centerX.equalToSuperview()
  298 + make.centerY.equalToSuperview()
  299 + make.width.equalTo(KSreenWidth-80)
  300 + make.height.equalTo((KSreenWidth-80)*170.5/295)
  301 + }
  302 +
  303 + self.alertBgImgView.image = UIImage(named: "auth_alert_unOpen")
  304 + }
  305 + func hiden17Alert(){
  306 + delegate.window?.subviews.forEach({ view in
  307 + if view.tag >= 20000{
  308 + view.removeFromSuperview()
  309 + }
  310 + })
  311 + }
  312 +}
... ...
metaCode/Classes/Main/HomePage/ViewModel/Vitae/CNLiveVitaeViewModel.swift 0 → 100644
  1 +//
  2 +// CNLiveVitaeViewModel.swift
  3 +// metaCode
  4 +//
  5 +// Created by zx on 2024/7/12.
  6 +// 数字简历
  7 +
  8 +import Foundation
  9 +import CNLiveRequestBastKit
  10 +
  11 +class CNLiveVitaeViewModel:NSObject{
  12 +
  13 + /*
  14 + 查看简历
  15 + 参数 vsid 实名对象id
  16 + 参数 type 1简历信息 2官方认证 3证书 4工作经历 4获奖情况
  17 + */
  18 + static func getVitae(vsid:String,type:NSInteger,resultBlock: @escaping downSlideResultBlock) {
  19 + let param = NSMutableDictionary()
  20 + param.setValue(vsid, forKey: "vsid")
  21 + param.setValue("\(type)", forKey: "type")
  22 + CNLiveNetworking.setAllowRequestDefaultArgument(true)
  23 + CNLiveNetworking.setupShowDataResult(false)
  24 + CNLiveNetworking.setupDSRequest(true)
  25 + let custom_param = NSMutableDictionary()
  26 + custom_param.setValue(CNLiveMCEnvironmentManager.shared.appId, forKey: "appId")
  27 + custom_param.setValue(CNLiveMCEnvironmentManager.shared.appKey, forKey: "appKey")
  28 + CNLiveNetworking.setupCustomParam(custom_param as? [String : String])
  29 +
  30 + CNLiveNetworking.requestNetwork(with: .GET, urlString: APPBaseMCUrl+"/userApi/getVitae", param: param as! [String : String], cacheType: .networkOnly) { task, result, error in
  31 + hiddenLoading()
  32 + if (error == nil) {
  33 + let resp = result as! NSDictionary
  34 + let dataDic = resp["data"] as! NSDictionary
  35 + let shopDetailModel = newDictionaryToModel(dataDic as! [String : Any], CNLiveVitaeModel.self)
  36 + resultBlock(shopDetailModel,.success)
  37 + }else{
  38 + resultBlock(NSNull(),.failed)
  39 + }
  40 + }
  41 +
  42 + }
  43 + /*
  44 + 保存简历/更新简历
  45 + 参数 vsid 实名对象id
  46 + 参数 type 1简历信息 2官方认证 3证书 4工作经历 4获奖情况
  47 + */
  48 + static func saveVitae(city:String,icon:String,isSave:Bool,id:NSInteger,phone:String,profession:String,professionId:NSInteger,selfIntroduction:String,showAddress:Bool,showAge:Bool,showAwards:Bool,showPhone:Bool,updateTime:String,vsid:String,workTime:String,resultBlock: @escaping downSlideResultBlock) {
  49 + let values = NSMutableDictionary()
  50 + values.addEntries(from: ["city":city])
  51 + values.addEntries(from: ["icon":icon])
  52 + //简历为nil保存简历时 不传id; 更新简历时id传简历的vitaeid
  53 + if !isSave{
  54 + values.addEntries(from: ["id":id])
  55 + }
  56 + values.addEntries(from: ["phone":phone])
  57 + values.addEntries(from: ["profession":profession])
  58 + values.addEntries(from: ["professionId":professionId])
  59 + values.addEntries(from: ["selfIntroduction":selfIntroduction])
  60 + values.addEntries(from: ["showAddress":showAddress])
  61 + values.addEntries(from: ["showAge":showAge])
  62 + values.addEntries(from: ["showAwards":showAwards])
  63 + values.addEntries(from: ["showPhone":showPhone])
  64 + values.addEntries(from: ["updateTime":updateTime])
  65 + values.addEntries(from: ["vsid":vsid])
  66 + values.addEntries(from: ["workTime":workTime])
  67 + do {
  68 + let request = URLRequest.init(url: URL.init(string: APPBaseMCUrl+"/userApi/saveVitae")!) as! NSMutableURLRequest
  69 + request.httpMethod = "POST"
  70 + request.timeoutInterval = 10
  71 + request.setValue("application/json", forHTTPHeaderField: "Content-Type")
  72 + let data = try JSONSerialization.data(withJSONObject: values, options: .prettyPrinted)
  73 + request.httpBody = data
  74 + showLoading(message: "")
  75 + let custom_param = NSMutableDictionary()
  76 + custom_param.setValue(CNLiveMCEnvironmentManager.shared.appId, forKey: "appId")
  77 + custom_param.setValue(CNLiveMCEnvironmentManager.shared.appKey, forKey: "appKey")
  78 + CNLiveNetworking.setupCustomParam(custom_param as? [String : String])
  79 + CNLiveNetworking.setAllowRequestDefaultArgument(false)
  80 + CNLiveNetworking.setupShowDataResult(false)
  81 + CNLiveNetworking.setBuildCustomUrlRequest(request as URLRequest) { task, result, error in
  82 + hiddenLoading()
  83 + if (error == nil) {
  84 + let resp = result as! NSDictionary
  85 + let errorCode = "\(resp["errorCode"] ?? "0")"
  86 + if (errorCode == "0") {
  87 + resultBlock(true,.success)
  88 + } else {
  89 + showMessage(message: resp["errorMessage"] as! String)
  90 + resultBlock(NSNull(),.failed)
  91 + }
  92 + } else {
  93 + if CNLiveNetworking.isNetworking() {
  94 + showMessage(message: "上传失败")
  95 + resultBlock(NSNull(),.failed)
  96 + } else {
  97 + showMessage(message: "似乎与网络断开链接")
  98 + resultBlock(NSNull(),.noNetwork)
  99 + }
  100 + }
  101 + }
  102 + } catch {
  103 + showMessage(message: "上传失败")
  104 + resultBlock(NSNull(),.failed)
  105 + }
  106 +
  107 + }
  108 +
  109 +}
  110 +
  111 +
... ...
metaCode/Classes/Main/Model/CNLiveShopConsoleModel.swift renamed to metaCode/Classes/Main/Model/ShopCoupon/CNLiveShopConsoleModel.swift
metaCode/Classes/Main/Model/Vitae/CNLiveVitaeModel.swift 0 → 100644
  1 +//
  2 +// CNLiveVitaeModel.swift
  3 +// metaCode
  4 +//
  5 +// Created by zx on 2024/7/12.
  6 +// 数字简历 /userApi/getVitae
  7 +
  8 +import Foundation
  9 +
  10 +class CNLiveVitaeModel:BaseModel{
  11 + ///简历
  12 + var vitae: CNLiveVitaeVitaeModel?
  13 + ///身份
  14 + var identities = [CNLiveVitaeIdentitiesModel]()
  15 + //工作
  16 + var works = [CNLiveVitaeWorksModel]()
  17 + //证书
  18 + var certificates = [CNLiveVitaeCertificatesModel]()
  19 + //奖
  20 + var awards = [CNLiveVitaeAwardsModel]()
  21 +
  22 +}
  23 +//简历模块
  24 +class CNLiveVitaeVitaeModel:BaseModel{
  25 + ///id
  26 + var id: Int = 0
  27 + var vsid: Int = 0
  28 + ///职业
  29 + var profession:String = ""
  30 + ///职业id
  31 + var professionId:String = ""
  32 + ///
  33 + var icon:String = ""
  34 + ///
  35 + var phone:String = ""
  36 + ///
  37 + var selfIntroduction:String = ""
  38 + ///
  39 + var city:String = ""
  40 + ///
  41 + var workTime:String = ""
  42 + ///
  43 + var showAge:Bool = false
  44 + ///
  45 + var showAddress:Bool = false
  46 + ///
  47 + var showAwards:Bool = false
  48 + ///
  49 + var updateTime:String = ""
  50 +}
  51 +//简历身份模块
  52 +class CNLiveVitaeIdentitiesModel:BaseModel{
  53 + ///
  54 + var identityId: Int = 0
  55 + ///
  56 + var name:String = ""
  57 + ///
  58 + var icon:String = ""
  59 + ///
  60 + var authTime:String = ""
  61 + ///
  62 + var selfIntroduction:String = ""
  63 + ///
  64 + var city:String = ""
  65 + ///
  66 + var workTime:String = ""
  67 + ///
  68 + var userStatus:Int = 0
  69 + ///不知道类型
  70 + var authInfos:String = ""
  71 +
  72 +// {
  73 +// "identityId": 100901,
  74 +// "name": "前端开发工程师",
  75 +// "icon": "https://wjj.ys2.cnliveimg.com/769/meta_image/1717057461458.webp",
  76 +// "authTime": null,
  77 +// "userStatus": null,
  78 +// "authInfos": null
  79 +// }
  80 +}
  81 +
  82 +//简历工作模块
  83 +class CNLiveVitaeWorksModel:BaseModel{
  84 + ///
  85 + var id: Int = 0
  86 + ///
  87 + var vitaeId:String = ""
  88 + ///
  89 + var vsid:String = ""
  90 + ///
  91 + var profession:String = ""
  92 + ///
  93 + var position:String = ""
  94 + ///
  95 + var companyName:String = ""
  96 + ///
  97 + var jobDuties:String = ""
  98 + ///
  99 + var startWorkingDate:String = ""
  100 + ///
  101 + var endWorkingDate:String = ""
  102 + ///
  103 + var city:String = ""
  104 + ///
  105 + var imgs:String = ""
  106 +
  107 +}
  108 +
  109 +//简历证书模块
  110 +class CNLiveVitaeCertificatesModel:BaseModel{
  111 + ///
  112 + var id: Int = 0
  113 + ///
  114 + var img:String = ""
  115 + ///
  116 + var vsid:String = ""
  117 + ///
  118 + var title:String = ""
  119 + ///
  120 + var uploadTime:String = ""
  121 + ///
  122 + var status:Int = 0
  123 + ///
  124 + var number:String = ""
  125 + ///
  126 + var lv:String = ""
  127 + ///
  128 + var time:String = ""
  129 + ///
  130 + var organization:String = ""
  131 + ///
  132 + var validity:String = ""
  133 +}
  134 +
  135 +//简历奖模块
  136 +class CNLiveVitaeAwardsModel:BaseModel{
  137 + ///
  138 + var id: Int = 0
  139 + ///
  140 + var vsid:String = ""
  141 + ///
  142 + var vitaeId:String = ""
  143 + ///
  144 + var title:String = ""
  145 + ///
  146 + var time:String = ""
  147 + ///
  148 + var company:Int = 0
  149 + ///
  150 + var description:String = ""
  151 + ///
  152 + var imgs:String = ""
  153 +}
  154 +/**
  155 + "data": {
  156 + "vitae": {
  157 + "id": 8,
  158 + "vsid": 13,
  159 + "profession": "互联网/AI · 前端/移动开发",
  160 + "professionId": 1000030,
  161 + "icon": "http://wjjtest.ys2.cnliveimg.com/802/img/vitae_avatar/2024/07/12/172074886708115930228.png",
  162 + "phone": "99855544478",
  163 + "selfIntroduction": "超级超级超级富豪复古坚持坚持好童发发发@长春师范发\n粗茶淡饭\n\n宝宝\n你那边吧v\n葛根粉粉吃炒饭的人方法",
  164 + "city": "吉林省延边朝鲜族自治州",
  165 + "workTime": "2015-04-05",
  166 + "showAge": true,
  167 + "showPhone": true,
  168 + "showAddress": false,
  169 + "showAwards": false,
  170 + "updateTime": 1720762878000
  171 + },
  172 + "identities": [
  173 + {
  174 + "identityId": 100901,
  175 + "name": "前端开发工程师",
  176 + "icon": "https://wjj.ys2.cnliveimg.com/769/meta_image/1717057461458.webp",
  177 + "authTime": null,
  178 + "userStatus": null,
  179 + "authInfos": null
  180 + },
  181 + {
  182 + "identityId": 100202,
  183 + "name": "Android开发",
  184 + "icon": "https://wjj.ys2.cnliveimg.com/769/meta_image/1717057523284.jpg",
  185 + "authTime": null,
  186 + "userStatus": null,
  187 + "authInfos": null
  188 + }
  189 + ],
  190 + "works": [
  191 + {
  192 + "id": 9,
  193 + "vitaeId": 8,
  194 + "vsid": 13,
  195 + "profession": "互联网/AI·前端/移动开发",
  196 + "position": "安卓开发",
  197 + "companyName": "",
  198 + "jobDuties": "vv吃饭长相厮守广告费\n广告费高校招生桂vv多大\n\n霍黑化股份刚发的\n黑科技关系\n脚后跟\n\n看见就看见",
  199 + "startWorkingDate": 1625443200000,
  200 + "endWorkingDate": 1720137600000,
  201 + "city": "",
  202 + "imgs": "http://wjjtest.ys2.cnliveimg.com/802/img/vitae_0/2024/07/05/172015273767714253238.jpg,http://wjjtest.ys2.cnliveimg.com/802/img/vitae_1/2024/07/05/172015273768665127233.jpg,http://wjjtest.ys2.cnliveimg.com/802/img/vitae_2/2024/07/05/172015273768852343438.jpg,http://wjjtest.ys2.cnliveimg.com/802/img/vitae_3/2024/07/05/172015273769060558156.jpg"
  203 + },
  204 + {
  205 + "id": 8,
  206 + "vitaeId": 8,
  207 + "vsid": 13,
  208 + "profession": "互联网/AI·前端/移动开发",
  209 + "position": "Android软件研发工程师",
  210 + "companyName": "中投视讯",
  211 + "jobDuties": "就是觉集体经济呱唧呱唧呱唧呱唧高级高级高级高级伽伽得就到你发酒疯减肥减肥发奖金发酒疯就放假发家,团队协同研发\"好家园\"、\"元码\"等App\n\n哈哈哈\n\n好尴尬",
  212 + "startWorkingDate": 1441843200000,
  213 + "endWorkingDate": 1915056000000,
  214 + "city": "北京市",
  215 + "imgs": "http://wjjtest.ys2.cnliveimg.com/802/img/vitae_video_0/2024/07/12/172075733914467248444.mp4,http://wjjtest.ys2.cnliveimg.com/802/img/vitae_0/2024/07/05/172014751998862535917.heic,http://wjjtest.ys2.cnliveimg.com/802/img/vitae_0/2024/07/11/172069307910466716490.jpg,http://wjjtest.ys2.cnliveimg.com/802/img/vitae_1/2024/07/11/172069307912474123160.jpg,http://wjjtest.ys2.cnliveimg.com/802/img/vitae_2/2024/07/11/172069307913311639676.jpg,http://wjjtest.ys2.cnliveimg.com/802/img/vitae_3/2024/07/11/172069307914163148297.jpg,http://wjjtest.ys2.cnliveimg.com/802/img/vitae_4/2024/07/11/172069307915129814099.jpg,http://wjjtest.ys2.cnliveimg.com/802/img/vitae_photo_0/2024/07/12/172075483116163173783.jpg"
  216 + }
  217 + ],
  218 + "certificates": [
  219 + {
  220 + "id": 8,
  221 + "vsid": 13,
  222 + "img": "https://p2.itc.cn/q_70/images03/20220510/3f47f88c98f24c55ba127050b772ab86.png",
  223 + "title": "测试证书",
  224 + "uploadTime": 1720503121000,
  225 + "status": 0,
  226 + "number": "o983982398",
  227 + "lv": "",
  228 + "time": "",
  229 + "organization": "测试机构",
  230 + "validity": ""
  231 + },
  232 + {
  233 + "id": 4,
  234 + "vsid": 13,
  235 + "img": "http://wjjtest.ys2.cnliveimg.com/802/img/vitae_0/2024/07/08/172041582379642062479.png",
  236 + "title": "全国计算机信息高新技术考试合格证书",
  237 + "uploadTime": 1720415826000,
  238 + "status": 1,
  239 + "number": "21085639858812",
  240 + "lv": "",
  241 + "time": "",
  242 + "organization": "人社部职业技能鉴定中心",
  243 + "validity": ""
  244 + }
  245 + ],
  246 + "awards": [
  247 + {
  248 + "id": 7,
  249 + "vsid": 13,
  250 + "vitaeId": 8,
  251 + "title": "计算机",
  252 + "time": 1625788800000,
  253 + "company": "测试颁发单位",
  254 + "description": "对对对,就是",
  255 + "imgs": "http://wjjtest.ys2.cnliveimg.com/802/img/vitae_0/2024/07/09/172049653128082972484.jpg,http://wjjtest.ys2.cnliveimg.com/802/img/vitae_0/2024/07/12/172076288039519102085.jpg"
  256 + },
  257 + {
  258 + "id": 2,
  259 + "vsid": 13,
  260 + "vitaeId": 8,
  261 + "title": "天马行空奖",
  262 + "time": 1564963200000,
  263 + "company": "家庭厨房",
  264 + "description": "家有星厨大奖赛第二期",
  265 + "imgs": "http://wjjtest.ys2.cnliveimg.com/802/img/vitae_0/2024/07/04/172008646664964885417.heic"
  266 + }
  267 + ]
  268 + }
  269 + **/
... ...
metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_back.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "filename" : "mine_jianli_back@2x.png",
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "filename" : "mine_jianli_back@3x.png",
  14 + "idiom" : "universal",
  15 + "scale" : "3x"
  16 + }
  17 + ],
  18 + "info" : {
  19 + "author" : "xcode",
  20 + "version" : 1
  21 + }
  22 +}
... ...
metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_back.imageset/mine_jianli_back@2x.png 0 → 100644

303 Bytes

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_back.imageset/mine_jianli_back@3x.png 0 → 100644

528 Bytes

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_gaokao.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "filename" : "mine_jianli_gaokao@2x.png",
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "filename" : "mine_jianli_gaokao@3x.png",
  14 + "idiom" : "universal",
  15 + "scale" : "3x"
  16 + }
  17 + ],
  18 + "info" : {
  19 + "author" : "xcode",
  20 + "version" : 1
  21 + }
  22 +}
... ...
metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_gaokao.imageset/mine_jianli_gaokao@2x.png 0 → 100644

37.8 KB

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_gaokao.imageset/mine_jianli_gaokao@3x.png 0 → 100644

74.7 KB

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_grayIcon.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "filename" : "mine_jianli_icon@2x.png",
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "filename" : "mine_jianli_icon@3x.png",
  14 + "idiom" : "universal",
  15 + "scale" : "3x"
  16 + }
  17 + ],
  18 + "info" : {
  19 + "author" : "xcode",
  20 + "version" : 1
  21 + }
  22 +}
... ...
metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_grayIcon.imageset/mine_jianli_icon@2x.png 0 → 100644

8.94 KB

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_grayIcon.imageset/mine_jianli_icon@3x.png 0 → 100644

16.4 KB

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_huliyuan.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "filename" : "mine_jianli_huliyuan@2x.png",
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "filename" : "mine_jianli_huliyuan@3x.png",
  14 + "idiom" : "universal",
  15 + "scale" : "3x"
  16 + }
  17 + ],
  18 + "info" : {
  19 + "author" : "xcode",
  20 + "version" : 1
  21 + }
  22 +}
... ...
metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_huliyuan.imageset/mine_jianli_huliyuan@2x.png 0 → 100644

43.1 KB

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_huliyuan.imageset/mine_jianli_huliyuan@3x.png 0 → 100644

82.2 KB

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_icon.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "filename" : "mine_jianli_icon@2x.png",
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "filename" : "mine_jianli_icon@3x.png",
  14 + "idiom" : "universal",
  15 + "scale" : "3x"
  16 + }
  17 + ],
  18 + "info" : {
  19 + "author" : "xcode",
  20 + "version" : 1
  21 + }
  22 +}
... ...
metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_icon.imageset/mine_jianli_icon@2x.png 0 → 100644

12.3 KB

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_icon.imageset/mine_jianli_icon@3x.png 0 → 100644

29.6 KB

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_iconbg.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "filename" : "mine_jianli_iconbg@2x.png",
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "filename" : "mine_jianli_iconbg@3x.png",
  14 + "idiom" : "universal",
  15 + "scale" : "3x"
  16 + }
  17 + ],
  18 + "info" : {
  19 + "author" : "xcode",
  20 + "version" : 1
  21 + }
  22 +}
... ...
metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_iconbg.imageset/mine_jianli_iconbg@2x.png 0 → 100644

7.8 KB

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_iconbg.imageset/mine_jianli_iconbg@3x.png 0 → 100644

14.5 KB

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_jiating.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "filename" : "mine_jianli_jiating@2x.png",
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "filename" : "mine_jianli_jiating@3x.png",
  14 + "idiom" : "universal",
  15 + "scale" : "3x"
  16 + }
  17 + ],
  18 + "info" : {
  19 + "author" : "xcode",
  20 + "version" : 1
  21 + }
  22 +}
... ...
metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_jiating.imageset/mine_jianli_jiating@2x.png 0 → 100644

31.8 KB

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_jiating.imageset/mine_jianli_jiating@3x.png 0 → 100644

60.4 KB

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_peibanshi.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "filename" : "mine_jianli_peibanshi@2x.png",
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "filename" : "mine_jianli_peibanshi@3x.png",
  14 + "idiom" : "universal",
  15 + "scale" : "3x"
  16 + }
  17 + ],
  18 + "info" : {
  19 + "author" : "xcode",
  20 + "version" : 1
  21 + }
  22 +}
... ...
metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_peibanshi.imageset/mine_jianli_peibanshi@2x.png 0 → 100644

49.7 KB

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_peibanshi.imageset/mine_jianli_peibanshi@3x.png 0 → 100644

96.3 KB

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_qiuzhi.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "filename" : "mine_jianli_qiuzhi.jpg",
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "author" : "xcode",
  19 + "version" : 1
  20 + }
  21 +}
... ...
metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_qiuzhi.imageset/mine_jianli_qiuzhi.jpg 0 → 100644

62.4 KB

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_xinli.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "filename" : "mine_jianli_xinli@2x.png",
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "filename" : "mine_jianli_xinli@3x.png",
  14 + "idiom" : "universal",
  15 + "scale" : "3x"
  16 + }
  17 + ],
  18 + "info" : {
  19 + "author" : "xcode",
  20 + "version" : 1
  21 + }
  22 +}
... ...
metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_xinli.imageset/mine_jianli_xinli@2x.png 0 → 100644

32.5 KB

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_xinli.imageset/mine_jianli_xinli@3x.png 0 → 100644

64.1 KB

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_zhiye.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "filename" : "mine_jianli_zhiye.jpg",
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "author" : "xcode",
  19 + "version" : 1
  20 + }
  21 +}
... ...
metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_zhiye.imageset/mine_jianli_zhiye.jpg 0 → 100644

67 KB

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_zhiyeguigua.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "filename" : "mine_jianli_zhiyeguigua@2x.png",
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "filename" : "mine_jianli_zhiyeguigua@3x.png",
  14 + "idiom" : "universal",
  15 + "scale" : "3x"
  16 + }
  17 + ],
  18 + "info" : {
  19 + "author" : "xcode",
  20 + "version" : 1
  21 + }
  22 +}
... ...
metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_zhiyeguigua.imageset/mine_jianli_zhiyeguigua@2x.png 0 → 100644

45.5 KB

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_zhiyeguigua.imageset/mine_jianli_zhiyeguigua@3x.png 0 → 100644

88.9 KB

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_zhiyuanzhe.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "filename" : "mine_jianli_zhiyuanzhe@2x.png",
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "filename" : "mine_jianli_zhiyuanzhe@3x.png",
  14 + "idiom" : "universal",
  15 + "scale" : "3x"
  16 + }
  17 + ],
  18 + "info" : {
  19 + "author" : "xcode",
  20 + "version" : 1
  21 + }
  22 +}
... ...
metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_zhiyuanzhe.imageset/mine_jianli_zhiyuanzhe@2x.png 0 → 100644

61.3 KB

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_jianli_zhiyuanzhe.imageset/mine_jianli_zhiyuanzhe@3x.png 0 → 100644

120 KB