//
|
// HomeListenSubV2VC.swift
|
// DolphinEnglishLearnStudent
|
//
|
// Created by 无故事王国 on 2025/7/27.
|
//
|
|
import UIKit
|
|
class HomeListenSubV2VC: BaseVC {
|
|
private var quarter:Int!
|
private var week:Int!
|
private(set) var tableView:UITableView!
|
var studyScheduleModel:StudyScheduleModel?
|
|
required init(quarter:Int,week:Int,studyScheduleModel:StudyScheduleModel) {
|
super.init(nibName: nil, bundle: nil)
|
self.quarter = quarter
|
self.week = week
|
self.studyScheduleModel = studyScheduleModel
|
}
|
|
required init?(coder: NSCoder) {
|
fatalError("init(coder:) has not been implemented")
|
}
|
|
override func viewDidLoad() {
|
super.viewDidLoad()
|
navigationItem.titleView = UIView()
|
}
|
|
override func setUI() {
|
super.setUI()
|
tableView = UITableView(frame: .zero, style: .plain)
|
tableView.delegate = self
|
tableView.dataSource = self
|
tableView.separatorStyle = .none
|
tableView.showsVerticalScrollIndicator = false
|
tableView.showsHorizontalScrollIndicator = false
|
tableView.backgroundColor = Config.ThemeBGColor
|
tableView.register(UINib(nibName: "HomeListen_process_TCell", bundle: nil), forCellReuseIdentifier: "_HomeListen_process_TCell")
|
tableView.register(UINib(nibName: "HomeListen_item_TV2Cell", bundle: nil), forCellReuseIdentifier: "_HomeListen_item_TV2Cell")
|
view.addSubview(tableView)
|
tableView.snp.makeConstraints { make in
|
make.edges.equalToSuperview()
|
}
|
|
let uIImageView = UIImageView(image: UIImage(named: "erji"))
|
view.addSubview(uIImageView)
|
uIImageView.snp.makeConstraints { make in
|
make.trailing.equalTo(-28)
|
make.width.equalTo(272)
|
make.height.equalTo(174)
|
make.centerY.equalToSuperview()
|
}
|
|
let uiLabel = UILabel()
|
uiLabel.text = "听懂英语的声音世界"
|
uiLabel.font = UIFont.systemFont(ofSize: 26, weight: .medium)
|
uiLabel.textColor = UIColor(hexString: "#2B3648")
|
view.addSubview(uiLabel)
|
uiLabel.snp.makeConstraints { make in
|
make.top.equalTo(uIImageView.snp.bottom).offset(33)
|
make.centerX.equalTo(uIImageView)
|
make.height.equalTo(37)
|
}
|
|
let ui1Label = UILabel()
|
ui1Label.text = "万物有声"
|
ui1Label.numberOfLines = 0
|
ui1Label.font = UIFont.systemFont(ofSize: 25, weight: .semibold)
|
ui1Label.textColor = UIColor.black
|
view.addSubview(ui1Label)
|
ui1Label.snp.makeConstraints { make in
|
make.top.equalTo(uIImageView.snp.top).offset(39)
|
make.centerX.equalTo(uIImageView)
|
make.width.equalTo(26)
|
}
|
}
|
|
func jumpAt(listenType:ListenType){
|
let row = listenType.rawValue - 1
|
let jumpIndex:IndexPath = IndexPath(row: row, section: 1)
|
tableView(self.tableView, didSelectRowAt: jumpIndex)
|
}
|
}
|
|
extension HomeListenSubV2VC:UITableViewDelegate{
|
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
|
|
sceneDelegate?.startTimer()
|
|
let day = indexPath.row + 1
|
if indexPath.row == 0{
|
Services.teamSchedule(type: .lesson1, week: week, day: day).subscribe(onNext: {[weak self] teamSchedule in
|
guard let weakSelf = self else { return }
|
//听音选图
|
Services.listenSelectPicture(day:day, quarter: weakSelf.quarter, week: weakSelf.week).subscribe(onNext: {[weak self] result in
|
guard let weakSelf = self else { return }
|
if let data = result.data{
|
let fightVC = HomeListenFightVC(listenType: .lesson1,quarter:weakSelf.quarter,week: weakSelf.week,day:day)
|
fightVC.title = ListenType.lesson1.rawTitle
|
fightVC.teamScheduleModel = teamSchedule.data
|
fightVC.data = data
|
fightVC.studyScheduleModel = self?.studyScheduleModel
|
JQ_currentViewController().jq_push(vc:fightVC)
|
}
|
}).disposed(by: weakSelf.disposeBag)
|
}).disposed(by: disposeBag)
|
}
|
|
if indexPath.row == 1{
|
//看图选音
|
Services.teamSchedule(type: .lesson2, week: week, day: day).subscribe(onNext: {[weak self] teamSchedule in
|
guard let weakSelf = self else { return }
|
Services.pictureSelectVoice(day: day, quarter: weakSelf.quarter, week: weakSelf.week).subscribe(onNext: {[weak self] result in
|
guard let weakSelf = self else { return }
|
if let data = result.data{
|
let fightVC = HomeListenFightVC(listenType: .lesson2,quarter:weakSelf.quarter,week: weakSelf.week,day:day)
|
fightVC.title = ListenType.lesson2.rawTitle
|
fightVC.teamScheduleModel = teamSchedule.data
|
fightVC.data = data
|
fightVC.studyScheduleModel = self?.studyScheduleModel
|
JQ_currentViewController().jq_push(vc:fightVC)
|
}
|
}).disposed(by: weakSelf.disposeBag)
|
}).disposed(by: disposeBag)
|
|
}
|
|
if indexPath.row == 2{
|
//归纳排除
|
Services.teamSchedule(type: .lesson3, week: week, day: day).subscribe(onNext: {[weak self] teamSchedule in
|
guard let weakSelf = self else { return }
|
Services.induceExclude(day: day, quarter: weakSelf.quarter, week: weakSelf.week).subscribe(onNext: {[weak self] result in
|
guard let weakSelf = self else { return }
|
if let data = result.data{
|
let fightVC = HomeListenFightVC(listenType: .lesson3,quarter:weakSelf.quarter,week: weakSelf.week,day:day)
|
fightVC.title = ListenType.lesson3.rawTitle
|
fightVC.teamScheduleModel = teamSchedule.data
|
fightVC.data = data
|
fightVC.studyScheduleModel = self?.studyScheduleModel
|
JQ_currentViewController().jq_push(vc: fightVC)
|
}
|
}).disposed(by: weakSelf.disposeBag)
|
}).disposed(by: disposeBag)
|
}
|
|
if indexPath.row == 3{
|
//有问有答
|
Services.teamSchedule(type: .lesson4, week: week, day: day).subscribe(onNext: {[weak self] teamSchedule in
|
guard let weakSelf = self else { return }
|
Services.questionsAndAnswers(day: day, quarter: weakSelf.quarter, week: weakSelf.week).subscribe(onNext: {[weak self] result in
|
guard let weakSelf = self else { return }
|
if let data = result.data{
|
let fightVC = HomeListenFightVC(listenType: .lesson4,quarter:weakSelf.quarter,week: weakSelf.week,day:day)
|
fightVC.title = ListenType.lesson4.rawTitle
|
fightVC.teamScheduleModel = teamSchedule.data
|
fightVC.data = data
|
fightVC.studyScheduleModel = self?.studyScheduleModel
|
JQ_currentViewController().jq_push(vc: fightVC)
|
}
|
}).disposed(by: weakSelf.disposeBag)
|
}).disposed(by: disposeBag)
|
}
|
|
if indexPath.row == 4{
|
//音图相配
|
Services.teamSchedule(type: .lesson5, week: week, day: day).subscribe(onNext: {[weak self] teamSchedule in
|
guard let weakSelf = self else { return }
|
Services.pictureMateVoice(day: day, quarter: weakSelf.quarter, week: weakSelf.week).subscribe(onNext: {[weak self] result in
|
guard let weakSelf = self else { return }
|
if let data = result.data{
|
let fightVC = HomeListenFightVC(listenType: .lesson5,quarter:weakSelf.quarter,week: weakSelf.week,day:day)
|
fightVC.title = ListenType.lesson5.rawTitle
|
fightVC.teamScheduleModel = teamSchedule.data
|
fightVC.data = data
|
fightVC.studyScheduleModel = self?.studyScheduleModel
|
JQ_currentViewController().jq_push(vc: fightVC)
|
}
|
}).disposed(by: weakSelf.disposeBag)
|
}).disposed(by: disposeBag)
|
}
|
|
guard (studyScheduleModel?.day ?? 0) >= 6 else {return}
|
|
//自主游戏
|
if indexPath.row == 5{
|
CommonAlertSheetView.show(type: .single, titles: ["自主游戏1","自主游戏2"]) {[weak self] index, str in
|
guard let weakSelf = self else { return }
|
switch index{
|
case 0:
|
let fightVC = HomeListenFightVC(listenType: .game1,quarter: weakSelf.quarter,week: weakSelf.week,day: day)
|
fightVC.title = ListenType.game1.rawTitle
|
fightVC.studyScheduleModel = weakSelf.studyScheduleModel
|
JQ_currentViewController().jq_push(vc:fightVC)
|
case 1:
|
Services.gameMemory(quarter: weakSelf.quarter, week: weakSelf.week).subscribe(onNext: {[weak self]result in
|
guard let weakSelf = self else { return }
|
if let data = result.data{
|
let fightVC = HomeListenFightVC(listenType: .game2,quarter: weakSelf.quarter,week: weakSelf.week,day: day)
|
fightVC.title = ListenType.game2.rawTitle
|
fightVC.data = data
|
fightVC.studyScheduleModel = self?.studyScheduleModel
|
JQ_currentViewController().jq_push(vc: fightVC)
|
}
|
}).disposed(by: weakSelf.disposeBag)
|
default:break
|
}
|
}
|
}
|
|
//听故事
|
if indexPath.row == 6{
|
CommonAlertSheetView.show(type: .single, titles: ["看图配音","框架记忆"]) {[weak self] index, str in
|
guard let weakSelf = self else { return }
|
switch index {
|
case 0:
|
Services.lookpictureDbu(quarter: weakSelf.quarter, week: weakSelf.week).subscribe(onNext: {[weak self]result in
|
guard let weakSelf = self else { return }
|
if let data = result.data{
|
let fightVC = HomeListenFightVC(listenType: .story1,quarter: weakSelf.quarter,week: weakSelf.week,day: day)
|
fightVC.title = ListenType.story1.rawTitle
|
fightVC.data = data
|
fightVC.studyScheduleModel = self?.studyScheduleModel
|
JQ_currentViewController().jq_push(vc: fightVC)
|
}
|
}).disposed(by: weakSelf.disposeBag)
|
|
case 1:
|
Services.frameworkMemory(quarter: weakSelf.quarter, week: weakSelf.week).subscribe(onNext: {[weak self]result in
|
guard let weakSelf = self else { return }
|
if let data = result.data{
|
let fightVC = HomeListenFightVC(listenType: .story2,quarter: weakSelf.quarter,week: weakSelf.week,day: day)
|
fightVC.title = ListenType.story2.rawTitle
|
fightVC.data = data
|
fightVC.studyScheduleModel = self?.studyScheduleModel
|
JQ_currentViewController().jq_push(vc: fightVC)
|
}
|
}).disposed(by: weakSelf.disposeBag)
|
default:break
|
}
|
}
|
}
|
|
}
|
}
|
|
extension HomeListenSubV2VC:UITableViewDataSource{
|
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
if section == 0{return 1}
|
return 7
|
}
|
|
func numberOfSections(in tableView: UITableView) -> Int {
|
return 2
|
}
|
|
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
if indexPath.section == 0{
|
let cell = tableView.dequeueReusableCell(withIdentifier: "_HomeListen_process_TCell", for: indexPath) as! HomeListen_process_TCell
|
cell.studyScheduleModel = studyScheduleModel
|
cell.label_currentWeek.text = "当前周目:\(week.jq_cn)周目"
|
return cell
|
}else{
|
let cell = tableView.dequeueReusableCell(withIdentifier: "_HomeListen_item_TV2Cell", for: indexPath) as! HomeListen_item_TV2Cell
|
cell.label_title.text = "\(indexPath.row + 1)"
|
cell.label_title.text = "第\(indexPath.row + 1)天"
|
cell.view_state.isHidden = false
|
|
switch indexPath.row {
|
case 0:
|
cell.label_subTitle.text = "自主学习1-听音选图"
|
cell.setProgress(progress: studyScheduleModel?.listen ?? 0)
|
cell.view_center.backgroundColor = UIColor.white
|
case 1:
|
cell.label_subTitle.text = "自主学习2-看图选音"
|
cell.setProgress(progress: studyScheduleModel?.look ?? 0)
|
if (studyScheduleModel?.listen ?? 0) >= 90{
|
cell.view_center.backgroundColor = UIColor.white
|
}
|
|
case 2:
|
cell.label_subTitle.text = "自主学习3-归纳排除"
|
cell.setProgress(progress: studyScheduleModel?.computeSchedule ?? 0)
|
if (studyScheduleModel?.look ?? 0) >= 90{
|
cell.view_center.backgroundColor = UIColor.white
|
}
|
case 3:
|
cell.label_subTitle.text = "自主学习4-有问有答"
|
cell.setProgress(progress: studyScheduleModel?.answer ?? 0)
|
if (studyScheduleModel?.computeSchedule ?? 0) >= 90{
|
cell.view_center.backgroundColor = UIColor.white
|
}
|
case 4:
|
cell.label_subTitle.text = "自主学习5-音图相配"
|
cell.setProgress(progress: studyScheduleModel?.pair ?? 0)
|
if (studyScheduleModel?.answer ?? 0) >= 90{
|
cell.view_center.backgroundColor = UIColor.white
|
}
|
case 5:
|
cell.label_subTitle.text = "自主游戏"
|
cell.view_state.isHidden = true
|
if (studyScheduleModel?.day ?? 0) >= 6{
|
cell.setProgress(progress: 100)
|
}else{
|
cell.setProgress(progress: 0)
|
}
|
case 6:
|
cell.label_subTitle.text = "听故事"
|
cell.view_state.isHidden = true
|
if (studyScheduleModel?.day ?? 0) >= 6{
|
cell.setProgress(progress: 100)
|
}else{
|
cell.setProgress(progress: 0)
|
}
|
default:break
|
}
|
|
return cell
|
}
|
}
|
|
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
|
if indexPath.section == 0{return 145.5}
|
return 90
|
}
|
}
|