From a478b668ca1a5d4f6d2d9b1075d292cbbef90de5 Mon Sep 17 00:00:00 2001
From: 无故事王国 <841720330@qq.com>
Date: 星期四, 14 三月 2024 17:47:07 +0800
Subject: [PATCH] fix bug

---
 WanPai/Root/Activity/View/StudentUpdateInfoView.swift |  199 ++++++++++++++++++++++++++++++-------------------
 1 files changed, 121 insertions(+), 78 deletions(-)

diff --git a/WanPai/Root/Activity/View/StudentUpdateInfoView.swift b/WanPai/Root/Activity/View/StudentUpdateInfoView.swift
index 71318bd..b6b5d8f 100644
--- a/WanPai/Root/Activity/View/StudentUpdateInfoView.swift
+++ b/WanPai/Root/Activity/View/StudentUpdateInfoView.swift
@@ -13,94 +13,137 @@
 let StudentUpdate_Nofi = Notification.Name.init("StudentUpdate_Nofi")
 class StudentUpdateInfoView: UIView,JQNibView{
 
-    @IBOutlet weak var view_container: UIView!
-    @IBOutlet weak var cons_bottom: NSLayoutConstraint!
-    @IBOutlet weak var tf_height: QMUITextField!
-    @IBOutlet weak var tf_weight: QMUITextField!
-    @IBOutlet weak var tf_phone: QMUITextField!
+				@IBOutlet weak var img_profile: UIImageView!
+				@IBOutlet weak var view_profile: UIView!
+				@IBOutlet weak var view_container: UIView!
+				@IBOutlet weak var cons_bottom: NSLayoutConstraint!
+				@IBOutlet weak var tf_height: QMUITextField!
+				@IBOutlet weak var tf_weight: QMUITextField!
+				@IBOutlet weak var tf_phone: QMUITextField!
 
-    private var model:ActivityDetailPartModel?
-    private let disposeBag = DisposeBag()
-    
-    override func awakeFromNib() {
-        super.awakeFromNib()
-        cons_bottom.constant = -(JQ_ScreenW / 2)
-        alpha = 0
-        layoutIfNeeded()
+				private var model:ActivityDetailPartModel?
+				private var updateUserProfile:Bool = false
+				private let disposeBag = DisposeBag()
+				private var profileImg:UIImage?
 
-        NotificationCenter.default.rx.notification(UIApplication.keyboardWillHideNotification).subscribe(onNext: {noti in
-            if let userInfo = noti.userInfo{
-                self.cons_bottom.constant =  0
-                let duration = (userInfo["UIKeyboardAnimationDurationUserInfoKey"] as? Double) ?? 0
-                UIView.animate(withDuration: duration) {
-                    self.layoutIfNeeded()
-                }
-            }
-        }).disposed(by: disposeBag)
+				override func awakeFromNib() {
+								super.awakeFromNib()
+								cons_bottom.constant = -(JQ_ScreenW / 2)
+								alpha = 0
+								layoutIfNeeded()
 
-        NotificationCenter.default.rx.notification(UIApplication.keyboardWillShowNotification).subscribe(onNext: { noti in
-            if let userInfo = noti.userInfo{
-                self.cons_bottom.constant =  (userInfo["UIKeyboardFrameEndUserInfoKey"] as? CGRect)?.height ?? 0
-                let duration = (userInfo["UIKeyboardAnimationDurationUserInfoKey"] as? Double) ?? 0
-                UIView.animate(withDuration: duration) {
-                    self.layoutIfNeeded()
-                }
-            }
-        }).disposed(by: disposeBag)
-    }
-    
-    static func show(_ model:ActivityDetailPartModel){
-        let storesView = StudentUpdateInfoView.jq_loadNibView()
-        storesView.model = model
-        storesView.frame = sceneDelegate?.window?.frame ?? .zero
-		sceneDelegate?.window?.addSubview(storesView)
-        storesView.cons_bottom.constant = 0
-		storesView.tf_phone.text = model.phone
-		storesView.tf_height.text = "\(model.height.int)"
-		storesView.tf_weight.text = "\(model.weight.int)"
+								let tap = UITapGestureRecognizer(target: self, action: #selector(userImgUploadAction))
+								img_profile.isUserInteractionEnabled = true
+								img_profile.addGestureRecognizer(tap)
 
-        UIView.animate(withDuration: 0.4) {
-            storesView.alpha = 1
-            storesView.layoutIfNeeded()
-        }
-    }
+								NotificationCenter.default.rx.notification(UIApplication.keyboardWillHideNotification).subscribe(onNext: {noti in
+												if let userInfo = noti.userInfo{
+																self.cons_bottom.constant =  0
+																let duration = (userInfo["UIKeyboardAnimationDurationUserInfoKey"] as? Double) ?? 0
+																UIView.animate(withDuration: duration) {
+																				self.layoutIfNeeded()
+																}
+												}
+								}).disposed(by: disposeBag)
+
+								NotificationCenter.default.rx.notification(UIApplication.keyboardWillShowNotification).subscribe(onNext: { noti in
+												if let userInfo = noti.userInfo{
+																self.cons_bottom.constant =  (userInfo["UIKeyboardFrameEndUserInfoKey"] as? CGRect)?.height ?? 0
+																let duration = (userInfo["UIKeyboardAnimationDurationUserInfoKey"] as? Double) ?? 0
+																UIView.animate(withDuration: duration) {
+																				self.layoutIfNeeded()
+																}
+												}
+								}).disposed(by: disposeBag)
+				}
+
+				static func show(_ model:ActivityDetailPartModel,updateUserProfile:Bool = false){
+								let storesView = StudentUpdateInfoView.jq_loadNibView()
+								storesView.model = model
+								storesView.updateUserProfile = updateUserProfile
+								storesView.view_profile.isHidden = !updateUserProfile
+								storesView.frame = sceneDelegate?.window?.frame ?? .zero
+								sceneDelegate?.window?.addSubview(storesView)
+								storesView.cons_bottom.constant = 0
+								storesView.tf_phone.text = model.phone
+								storesView.tf_height.text = "\(model.height.int)"
+								storesView.tf_weight.text = "\(model.weight.int)"
+
+								if updateUserProfile{
+												storesView.img_profile.sd_setImage(with: URL(string: model.headImg),placeholderImage: UIImage(named: "btn_add_large_2"))
+								}
+
+								UIView.animate(withDuration: 0.4) {
+												storesView.alpha = 1
+												storesView.layoutIfNeeded()
+								}
+				}
+
+				@objc func userImgUploadAction(){
+								JQ_ImagePickerTool.getSharedInstance().singleImage({ [weak self] image in
+												self?.img_profile.image = image
+												self?.profileImg = image
+								}, clipSize: CGSize(width: JQ_ScreenW, height: JQ_ScreenW))
+				}
 
 
-    @IBAction func saveAction(_ sender: UIButton) {
-        guard !tf_height.text!.isEmpty else {alertError(msg: "请输入身高");return}
-        guard !tf_weight.text!.isEmpty else {alertError(msg: "请输入体重");return}
+				@IBAction func saveAction(_ sender: UIButton) {
+								guard !tf_height.text!.isEmpty else {alertError(msg: "请输入身高");return}
+								guard !tf_weight.text!.isEmpty else {alertError(msg: "请输入体重");return}
 
-        guard tf_height.text!.int != 0 else {alertError(msg: "请输入正确的身高");return}
-        guard tf_weight.text!.int != 0 else {alertError(msg: "请输入正确的体重");return}
+								guard tf_height.text!.int != 0 else {alertError(msg: "请输入正确的身高");return}
+								guard tf_weight.text!.int != 0 else {alertError(msg: "请输入正确的体重");return}
 
-        self.endEditing(true)
-		Services.editParticipant(id: model!.id, height: tf_height.text!.int ?? 0, weight: tf_weight.text!.int ?? 0, phone: tf_phone.text,isStudent: model!.isStudent).subscribe(onNext: {data in
-            alertSuccess(msg: "修改成功")
-            DispatchQueue.main.asyncAfter(deadline: .now()+1) {
-                NotificationCenter.default.post(name: StudentUpdate_Nofi, object: nil)
-                self.close()
-            }
-        }).disposed(by: disposeBag)
-    }
+								guard profileImg != nil || !(model?.headImg.isEmpty ?? true) else {
+												alertError(msg: "请上传头像");return
+								}
+
+								self.endEditing(true)
+
+								if profileImg != nil{
+												showHUD("正在上传头像")
+												profileImg!.uploadImgToService().subscribe(onNext: { [weak self] imgUrl in
+																guard let weakSelf = self else { return }
+																weakSelf.model?.headImg = imgUrl
+																hiddenHUD()
+																weakSelf.saveEdit()
+												}, onError: { error in
+																hiddenHUD()
+																alertError(msg: error.localizedDescription)
+												}).disposed(by: disposeBag)
+								}else{
+												saveEdit()
+								}
+				}
+
+				private func saveEdit(){
+								Services.editParticipant(id: model!.id, height: tf_height.text!.int ?? 0, weight: tf_weight.text!.int ?? 0, phone: tf_phone.text,isStudent: model!.isStudent,headImg: model!.headImg).subscribe(onNext: {data in
+												alertSuccess(msg: "修改成功")
+												DispatchQueue.main.asyncAfter(deadline: .now()+1) {
+																NotificationCenter.default.post(name: StudentUpdate_Nofi, object: nil)
+																self.close()
+												}
+								}).disposed(by: disposeBag)
+				}
 
 
-    @IBAction func closeAction(_ sender: UIButton) {
-        close()
-    }
+				@IBAction func closeAction(_ sender: UIButton) {
+								close()
+				}
 
-    
-    private func close(){
-        self.cons_bottom.constant = -(JQ_ScreenW / 2)
-        UIView.animate(withDuration: 0.4) {
-            self.alpha = 0
-            self.layoutIfNeeded()
-        } completion: { _ in
-            self.removeFromSuperview()
-        }
-    }
 
-	override func layoutSubviews() {
-		super.layoutSubviews()
-		view_container.jq_addCorners(corner: [.topLeft,.topRight], radius: 20,width: JQ_ScreenW,height: JQ_ScreenW)
-	}
+				private func close(){
+								self.cons_bottom.constant = -(JQ_ScreenW / 2)
+								UIView.animate(withDuration: 0.4) {
+												self.alpha = 0
+												self.layoutIfNeeded()
+								} completion: { _ in
+												self.removeFromSuperview()
+								}
+				}
+
+				override func layoutSubviews() {
+								super.layoutSubviews()
+								view_container.jq_addCorners(corner: [.topLeft,.topRight], radius: 20,width: JQ_ScreenW,height: JQ_ScreenW)
+				}
 }

--
Gitblit v1.7.1