CNLiveVitaeWorkDetailController.swift 9.68 KB
//
//  CNLiveVitaeWorkDetailController.swift
//  metaCode
//
//  Created by zx on 2024/7/31.
//  工作记录页面(工作记录详情)

import Foundation
import SnapKit
import JFHeroBrowser
class CNLiveVitaeWorkDetailController:CNLiveBaseViewController,UITableViewDataSource, UITableViewDelegate{
    var jianjieLblHeight:CGFloat = 40
    var cellHeights:Array<CGFloat> = Array()
    
    var workAwardType:CNLiveViateWorkAwardType = .work

    lazy var bgImgView :UIImageView = {
        let iconImgView = UIImageView()
        iconImgView.image = UIImage(named: "mine_jianli_workBg")
        return iconImgView
    }()
    lazy var yuanmaLabel: UILabel = {
        let titleLabel = UILabel()
        titleLabel.textColor = HexColor("#333333")
        titleLabel.text = "工作记录"
        titleLabel.font = BoldFont_24
        titleLabel.adjustsFontSizeToFitWidth=true
        return titleLabel
    }()

    lazy var yuanmaDescLabel: UILabel = {
        let titleLabel = UILabel()
        titleLabel.textColor = HexColor("#333333")
        titleLabel.text = "共 1 条"
        titleLabel.font = Font_16
        return titleLabel
    }()
    
    let kCNLiveVitaeWorkCellIdentifier = "kCNLiveVitaeWorkCellIdentifier"

    lazy var tableView : UITableView = {
        let tableView = UITableView(frame: .zero, style: .plain)
        tableView.dataSource = self
        tableView.delegate = self
        tableView.separatorStyle = .none
        tableView.tableFooterView = UIView.init()
        tableView.register(CNLiveVitaeWorkCell.self, forCellReuseIdentifier: kCNLiveVitaeWorkCellIdentifier)
        tableView.backgroundColor = .clear
        return tableView
    }()
    lazy var bottomZhiNanWhiteView :UIView = {
        let bottomNavView = UIView()
        bottomNavView.backgroundColor = .white
        return bottomNavView
    }()
    lazy var addWorkBtn: UIButton = {
        let  nextBtn = UIButton(type: .custom)
        nextBtn.setTitle("添加工作记录", for: .normal)
        nextBtn.setTitleColor(.white, for: .normal)
        nextBtn.backgroundColor = HexColor("#1961FE")
        nextBtn.layer.cornerRadius = 20
        nextBtn.clipsToBounds = true
        nextBtn.addTarget(self, action: #selector(addWorkBtnAction), for: .touchUpInside)
        return nextBtn
    }()
    lazy var workListArr :Array<Any> = {
        let dataArray = Array<Any>()
        return dataArray
    }()
    
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        self.getWorkList()
    }
    override func viewDidLoad() {
        super.viewDidLoad()
        navigationBarHidden = false
        self.initUI()
        if self.workAwardType == .work{
            titleName = "工作记录"
            self.bgImgView.image = UIImage(named: "mine_jianli_workBg")
            self.yuanmaLabel.text = "工作记录"
            self.addWorkBtn.setTitle("添加工作记录", for: .normal)
        }else{
            titleName = "获奖情况"
            self.bgImgView.image = UIImage(named: "mine_jianli_awardBg")
            self.yuanmaLabel.text = "获奖情况"
            self.addWorkBtn.setTitle("添加获奖记录", for: .normal)
        }
    }
    
    deinit {}
    func initUI(){
        self.view.backgroundColor = HexColor("#F9F9F9")
        
        self.view.addSubview(self.bgImgView)
        self.bgImgView.snp.makeConstraints { make in
            make.top.equalTo(KNavigationHeight)
            make.left.right.equalToSuperview()
            make.height.equalTo(KSreenWidth*457/375)
        }
        self.bgImgView.addSubview(self.yuanmaLabel)
        self.yuanmaLabel.snp.makeConstraints { make in
            make.top.equalTo(59)
            make.left.equalTo(adapt_length(length: 30))
        }
        self.bgImgView.addSubview(self.yuanmaDescLabel)
        self.yuanmaDescLabel.snp.makeConstraints { make in
            make.top.equalTo(self.yuanmaLabel.snp.bottom).offset(adapt_length(length: 5))
            make.left.equalTo(adapt_length(length: 30))
        }
        
        self.view.addSubview(self.tableView)
        self.tableView.snp.makeConstraints { make in
            make.top.equalTo(150+KNavigationHeight)
            make.left.right.equalToSuperview()
            make.bottom.equalToSuperview().offset(-60)
        }
        
        self.view.addSubview(self.bottomZhiNanWhiteView)
        self.bottomZhiNanWhiteView.snp.makeConstraints { make in
            make.top.equalTo(self.tableView.snp.bottom)
            make.bottom.left.right.equalToSuperview()
        }
        
        self.bottomZhiNanWhiteView.addSubview(self.addWorkBtn)
        self.addWorkBtn.snp.makeConstraints { make in
            make.left.equalTo(15)
            make.right.equalToSuperview().offset(-15)
            make.top.equalTo(10)
            make.height.equalTo(40)
        }

    }
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.workListArr.count
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        guard let cell = tableView.dequeueReusableCell(withIdentifier: kCNLiveVitaeWorkCellIdentifier) as? CNLiveVitaeWorkCell
        else {
            let cell = CNLiveVitaeWorkCell()
            return cell
        }
        if self.workAwardType == .work{
            let model = workListArr[indexPath.row] as! CNLiveVitaeWorksModel
            cell.workModel = model
        }else{
            let model = workListArr[indexPath.row] as! CNLiveVitaeAwardsModel
            cell.awardModel = model
        }
        cell.vitaeWorkCellChangedBlock = { workCell,jianjieHeight,isExpand in
            let res = self.workListArr
            var tempArr = Array<Any>()
            let idxPath = tableView.indexPath(for: workCell)
            for (idx,mdl) in res.enumerated() {
                if idx == idxPath?.row{
                    if self.workAwardType == .work{
                        let layout = CNLiveViateWorkModelLayout(model: mdl as! CNLiveVitaeWorksModel,descH: Float(jianjieHeight),isPreview: false, isExpand: isExpand)
                        let newWorkModel = layout.getCellHModel()
                        tempArr.append(newWorkModel)
                    }else{
                        let layout = CNLiveViateAwardModelLayout(model: mdl as! CNLiveVitaeAwardsModel,descH: Float(jianjieHeight), isPreview: false, isExpand: isExpand)
                        let newWorkModel = layout.getCellHModel()
                        tempArr.append(newWorkModel)
                    }
                }else{
                    tempArr.append(mdl)
                }
            }
            self.workListArr = Array(tempArr)
            self.tableView.reloadData()
        }
        cell.vitaeWorkPreviewVideoPhotoBlock = { images , index in
            self.hero.browserMultiSoures(viewModules: images, initIndex: index) {
                [
                    .enableBlurEffect(false),
                    .heroView(nil),
                    .imageDidChangeHandle({ imageIndex in
                        return nil
                    })
                ]
            }
        }
        cell.vitaeWorkListBlock = {
            self.getWorkList()
        }
        return cell
    }
    
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        
    }
    
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        if self.workAwardType == .work{
            let model = self.workListArr[indexPath.row] as! CNLiveVitaeWorksModel
            return CGFloat(model.cellH)
        }else{
            let model = self.workListArr[indexPath.row] as! CNLiveVitaeAwardsModel
            return CGFloat(model.cellH)
        }
    }
    
    @objc func addWorkBtnAction(){
        let vc = CNLiveVitaeAddWorkController()
        vc.workAwardType = self.workAwardType
        self.navigationController?.pushViewController(vc, animated: true)
    }
    
    func getWorkList(){
        let vsid = UserInfoManager.shared.userInfo.currentUser?.vsid ?? ""
        if self.workAwardType == .work{
            CNLiveVitaeViewModel.getWorkList(vsid: vsid){ result, respStatus in
                if respStatus == .success{
                    if let res = result as? [CNLiveVitaeWorksModel]{
                        self.workListArr = Array()
                        for mdl in res {
                            let layout = CNLiveViateWorkModelLayout(model: mdl,descH: 40.0,isPreview: false, isExpand: false)
                            let newWorkModel = layout.getCellHModel()
                            self.workListArr.append(newWorkModel)
                        }
                        self.tableView.reloadData()
                        self.yuanmaDescLabel.text = "共 \(res.count) 条"
                    }
                }else{
                    showMessage(message: "数据异常")
                }
                
            }
        }else{
            CNLiveVitaeViewModel.getAwardList(vsid: vsid){ result, respStatus in
                if respStatus == .success{
                    if let res = result as? [CNLiveVitaeAwardsModel]{
                        self.workListArr = Array()
                        for mdl in res {
                            let layout = CNLiveViateAwardModelLayout(model: mdl,descH: 40.0, isPreview: false, isExpand: false)
                            let newWorkModel = layout.getCellHModel()
                            self.workListArr.append(newWorkModel)
                        }
                        self.tableView.reloadData()
                        self.yuanmaDescLabel.text = "共 \(res.count) 条"
                    }
                }else{
                    showMessage(message: "数据异常")
                }
                
            }
        }
    }
}