// // WorkCViewController.swift // GeliBusinessPlatform // // Created by 刘俊宏 on 2020/5/6. // Copyright © 2020 junye lu. All rights reserved. // import UIKit import IQKeyboardManagerSwift import SwiftDate import Alamofire import SwiftyJSON class WorkCViewController: BaseViewController, UITableViewDelegate, UITableViewDataSource ,WorkSelectTimeViewDelegate,WorkItemTableViewCellDelegate,EditWorkCViewControllerDelegate, GeliAlertViewDelegate{ @IBOutlet weak var topNavBtn: UIButton! @IBOutlet weak var contentView: UIView! var isFirstEnter:Bool = true override func viewWillAppear(_ animated: Bool) { //MARK:--viewWillAppear 因重写出现问题,需要补写 self.navigationController?.navigationBar.isHidden = true IQKeyboardManager.shared.shouldPlayInputClicks = true IQKeyboardManager.shared.enable = true IQKeyboardManager.shared.shouldResignOnTouchOutside = true //MARK:--每次进来都更新 if self.dataModel == nil { updataUIbyEditWorkSave() }else{ loadData() } } override func viewDidLoad() { super.viewDidLoad() setTabv() NotificationCenter.default.addObserver(self, selector: #selector(jpushServiceNotification(notion:)), name: NSNotification.Name(rawValue: "jpushServiceNotification2"), object: nil) updateApp() } //MARK:--jpushServiceNotification @objc func jpushServiceNotification(notion:Notification) { let dict = notion.userInfo! as NSDictionary print("123123 ==",dict.allKeys) let vc = MsgCenterViewController() self.navigationController?.pushViewController(vc, animated: true) } //MARK:--二维码方法 @IBAction func codeAction(_ sender: UIButton) { print("二维码方法")//加一个透明的显示弹窗 let browser = JXPhotoBrowser() browser.numberOfItems = { 1 } var url:URL? url = URL(string:SERVERCE_ImageHost + (self.dataModel?.qr_code)!) browser.reloadCellAtIndex = { context in let browserCell = context.cell as? JXPhotoBrowserImageCell // 用SDWebImage加载 browserCell?.imageView.sd_setImage(with: url, placeholderImage: nil, options: [], completed: { (_, _, _, _) in browserCell?.setNeedsLayout() }) } browser.show() } //MARK:--头部按钮方法 let selectV = WorkSelectTimeView() var selelctIndex = 1001 @IBAction func topNavBtnAction(_ sender: UIButton) { sender.isSelected = !sender.isSelected if sender.isSelected { selectV.delegate = self selectV.selectIndex = selelctIndex self.view.window?.addSubview(selectV) selectV.snp.makeConstraints { (make) in make.top.equalTo(contentView) make.left.right.bottom.equalToSuperview() } selectV.BeginDate = starTime selectV.EndDate = endTime topNavBtn.setImage(UIImage.init(named: "workzhankai"), for: .normal) }else{ selectV.removeFromSuperview() topNavBtn.setImage(UIImage.init(named: "workxiala"), for: .normal) } } //MARK:--时间选择视图反馈 func selectWorkIndx(sender: Int, beginDate: Date?, endginDate: Date?) { selelctIndex = sender; topNavBtn.setImage(UIImage.init(named: "workxiala"), for: .normal) topNavBtn.isSelected = false switch sender { case 1001: topNavBtn.setTitle("今日", for: .normal) endTime = DateInRegion().dateAt(.endOfDay).date - 8.hours starTime = DateInRegion().dateAt(.startOfDay).date - 8.hours //今天开始时间 loadData() break case 1002: topNavBtn.setTitle("本周", for: .normal) endTime = DateInRegion().dateAt(.endOfDay).date - 8.hours starTime = DateInRegion().dateAt(.startOfWeek).date + 1.days - 8.hours //当周周一开始时间 loadData() break case 1003: topNavBtn.setTitle("本月", for: .normal) endTime = DateInRegion().dateAt(.endOfDay).date - 8.hours starTime = DateInRegion().dateAt(.startOfMonth).date - 9.hours - 1.minutes - 1.seconds //本月开始时间 loadData() break case 1004: if beginDate != nil && endginDate != nil { let timeInterval:TimeInterval = beginDate!.timeIntervalSince1970 let timeIntervalEnd:TimeInterval = endginDate!.timeIntervalSince1970 let timestr = dayByDouble(sender: timeInterval) + "-" + dayByDouble(sender: timeIntervalEnd) topNavBtn.setTitle(timestr, for: .normal) endTime = endginDate! starTime = beginDate! loadData() } break default: break } } //MARK:--列表视图 var tableV :UITableView! func setTabv() { tableV = UITableView() contentView.addSubview(tableV); tableV.snp.makeConstraints { (make) in make.top.left.right.bottom.equalToSuperview() } tableV.backgroundColor = UIColor.init(named: "app底色") tableV.delegate = self tableV.dataSource = self tableV.separatorStyle = .none tableV?.register(UINib(nibName: "WorkItemTableViewCell", bundle: nil), forCellReuseIdentifier: "WorkItemTableViewCell") tableV?.register(UINib(nibName: "WorkBannerTableViewCell", bundle: nil), forCellReuseIdentifier: "WorkBannerTableViewCell") //设置estimatedRowHeight属性默认值 tableV.estimatedRowHeight = 44 //rowHeight属性设置为UITableViewAutomaticDimension tableV.rowHeight = UITableView.automaticDimension //下拉刷新相关设置 headerMJ.setRefreshingTarget(self, refreshingAction: #selector(loadData)) self.tableV!.mj_header = headerMJ self.tableV.mj_header?.beginRefreshing() } //MARK:--使用默认的数据库 var endTime = DateInRegion().dateAt(.endOfDay).date var starTime = DateInRegion().dateAt(.startOfDay).date var dataModel:WorkcenterIndexDataModel? = nil var oftenArr:Array? = [] func updateTheNowTime(){ switch topNavBtn.titleLabel?.text { case "今日": endTime = DateInRegion().dateAt(.endOfDay).date - 8.hours starTime = DateInRegion().dateAt(.startOfDay).date - 8.hours //今天开始时间 break case "本周": endTime = DateInRegion().dateAt(.endOfDay).date - 8.hours starTime = DateInRegion().dateAt(.startOfWeek).date + 1.days - 8.hours //当周周一开始时间 case "本月": endTime = DateInRegion().dateAt(.endOfDay).date - 8.hours starTime = DateInRegion().dateAt(.startOfMonth).date - 9.hours - 1.minutes - 1.seconds //本月开始时间 break default: break } } //MARK:--加载数据 @objc func loadData() { print("请求网络数据") updateTheNowTime() let UserToken = UserDefaults.standard.value(forKey: "user_token") let star_time = Int(starTime.timeIntervalSince1970) let end_time = Int(endTime.timeIntervalSince1970) //从周一开始(国际时间是从周日) print("本周开始时间:", starTime) WorkcenterIndex(["user_token":UserToken as Any,"star_time":star_time as Any,"end_time":end_time as Any], success: { (data) in let dataM = data as! WorkcenterIndexModel if dataM.code == 1 { self.dataModel = dataM.data //查询常用的 let userdataStr = UserDefaults.standard.value(forKey: "WorkDataModel") if userdataStr != nil { print("有数据哦--") let workTestMd = WorkDataModel(JSONString: userdataStr as! String) let oftenStr = workTestMd!.oftenArrStr if oftenStr.count > 0 { //经过对比需要删除剩哪一些 let oldOftenArr = Array(JSONString: oftenStr) self.oftenArr?.removeAll() oldOftenArr?.forEach({ (md) in self.dataModel?.auth_res?.forEach({ (pmd) in if md.auth_id == pmd.auth_id { //存在且还常用 self.oftenArr?.append(pmd) } }) }) } }else{ //常用功能 self.oftenArr?.removeAll() self.dataModel?.auth_res?.forEach({ (md) in if self.oftenArr!.count < 10 && md.is_often == 1 && md.auth_pid != 0 { self.oftenArr?.append(md) } }) } let modelStr = dataM.data?.toJSONString() let oftenStr = self.oftenArr?.toJSONString() let saveModel = WorkDataModel() saveModel.dataModelStr = modelStr! saveModel.star_time = star_time saveModel.end_time = end_time saveModel.oftenArrStr = oftenStr! // 数据持久化操作--(退出登录的话,或者token异常那里,全部要删除) let userDataStr = saveModel.toJSONString() UserDefaults.standard.set(userDataStr, forKey: "WorkDataModel") UserDefaults.standard.synchronize() self.tableV.reloadData() } self.tableV.mj_header?.endRefreshing() }) { (data) in self.tableV.mj_header?.endRefreshing() } } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { if dataModel == nil { return 0 } return 4 } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { if indexPath.row == 0 { let cell = tableView.dequeueReusableCell(withIdentifier: "WorkBannerTableViewCell") as! WorkBannerTableViewCell let total = (self.dataModel?.paid)! + (self.dataModel?.npaid)! cell.totalPriceLbl.text = String(format: "%.2f", total) cell.orderCountLbl.text = StringByInt(number: (self.dataModel?.order_count)!) cell.paidLbl.text = String(format: "%.2f", (self.dataModel?.paid)!) cell.npaidLbl.text = String(format: "%.2f", (self.dataModel?.npaid)!) return cell }else{ let cell = tableView.dequeueReusableCell(withIdentifier: "WorkItemTableViewCell") as! WorkItemTableViewCell //下面这两个语句一定要添加,否则第一屏显示的collection view尺寸,以及里面的单元格位置会不正确 cell.frame = tableView.bounds cell.delegate = self cell.layoutIfNeeded() let arr = ["常用功能","代办事项","功能列表"] if indexPath.row == 1{ cell.gotoImgV.isHidden = false }else{ cell.gotoImgV.isHidden = true } cell.dataIndexSection = indexPath.row switch indexPath.row { case 1: var tempArr:[String] = [] self.oftenArr?.forEach({ (md) in tempArr.append(md.auth_name!) }) cell.itemDataArrs = self.oftenArr! cell.reloadData(title: arr[indexPath.row - 1], items: tempArr) break case 2: let tempArr:[String] = ["未发货订单","待确认订单","入库申请","出库申请","采购入库"] cell.dataModel = self.dataModel //对本地数据库进行更新,每次进入工作中心就可以刷新啦 cell.reloadData(title: arr[indexPath.row - 1], items: tempArr) break case 3: var tempArr:[String] = [] var itemDataArrs:[WorkcenterIndexAuthResModel] = [] self.dataModel?.auth_res?.forEach({ (md) in if md.auth_pid != 0 { tempArr.append(md.auth_name!) itemDataArrs.append(md) } }) cell.itemDataArrs = itemDataArrs cell.reloadData(title: arr[indexPath.row - 1], items: tempArr) break default: break } return cell } } func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { print("点中cell--\(indexPath.row)") if indexPath.row == 1 { let vc = EditWorkCViewController() vc.delegate = self vc.oftenArr = self.oftenArr vc.dataModel = self.dataModel self.navigationController?.pushViewController(vc, animated: true) } } //MARK:--常用功能无数据跳转 func WorkItemNoDataTableViewCell() { let vc = EditWorkCViewController() vc.delegate = self vc.oftenArr = self.oftenArr vc.dataModel = self.dataModel self.navigationController?.pushViewController(vc, animated: true) } func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { if indexPath.row == 0 { return 223*glscale; } return tableV.rowHeight } //MARK: - diy cell delegate func WorkItemTableViewCellAuthId(sender: WorkItemTableViewCell, auth_id: Int) { print("跳转的id",auth_id) getTheWorkVcByAuthId(auth_id: auth_id) } func WorkItemTableViewCellBtnClick(sender: WorkItemTableViewCell, idx: IndexPath) { print("选中item=\(idx.section)=\(idx.row)") switch idx.row { case 0: //未发货订单 NotificationCenter.default.post(name: NSNotification.Name(rawValue: "changgeTabItem"), object: nil, userInfo: ["tag":0]) NotificationCenter.default.post(name: NSNotification.Name(rawValue: "orderNavChange"), object: nil, userInfo: ["tag":3]) return case 1: //待确认订单 NotificationCenter.default.post(name: NSNotification.Name(rawValue: "changgeTabItem"), object: nil, userInfo: ["tag":0]) NotificationCenter.default.post(name: NSNotification.Name(rawValue: "orderNavChange"), object: nil, userInfo: ["tag":1]) return case 2: //入库申请 let vc = CRKListVC() vc.status = 1 vc.io_type = 1 self.navigationController?.pushViewController(vc, animated: true) return case 3: //出库申请 let vc = CRKListVC() vc.status = 1 vc.io_type = 2 self.navigationController?.pushViewController(vc, animated: true) return case 4: //采购入库 let vc = CGDListViewController() vc.selectIndex = 1 self.navigationController?.pushViewController(vc, animated: true) // HUD.flash(.label("敬请期待"),delay: 1.2) return default: break } } //MARK:--item相关跳转 func getTheWorkVcByAuthId(auth_id:Int){ switch auth_id { case 47: //订单列表 NotificationCenter.default.post(name: NSNotification.Name(rawValue: "changgeTabItem"), object: nil, userInfo: ["tag":0]) return case 48: //销售统计 HUD.flash(.label("敬请期待"),delay: 1.2) return case 50: //商品列表 NotificationCenter.default.post(name: NSNotification.Name(rawValue: "changgeTabItem"), object: nil, userInfo: ["tag":1]) return case 51: //品牌列表 // HUD.flash(.label("敬请期待"),delay: 1.2) let vc = PinPaiListViewController() self.navigationController?.pushViewController(vc, animated: true) return case 53: //销售下单-代客下单 let vc = DaiKeXiaDanGouWuViewController() self.navigationController?.pushViewController(vc, animated: true) return case 54: //扫码下单 HUD.flash(.label("敬请期待"),delay: 1.2) return case 55: //预售下单 let vc = DaiKeXiaDanGouWuViewController() vc.orderType = 1 self.navigationController?.pushViewController(vc, animated: true) return case 57: //商家信息 let vc = ShopInfoViewController() self.navigationController?.pushViewController(vc, animated: true) return case 58: //支付账号==格利支付 let vc = PayViewController() self.navigationController?.pushViewController(vc, animated: true) return case 59: //地址管理 // HUD.flash(.label("敬请期待"),delay: 1.2) // return let vc = DZGLViewController() self.navigationController?.pushViewController(vc, animated: true ) return case 61: //库存商品 HUD.flash(.label("敬请期待"),delay: 1.2) return case 62: //出入库记录 let vc = CRKListVC() self.navigationController?.pushViewController(vc, animated: true) return case 63: //入库--直接入库 let vc = NewRKVc() self.navigationController?.pushViewController(vc, animated: true) return case 64: //出库--直接出库 let vc = NewCKVc() self.navigationController?.pushViewController(vc, animated: true) return case 65: //申请入库 let vc = NewRKVc() vc.gmNumber = 65 self.navigationController?.pushViewController(vc, animated: true) return case 66: //申请出库 let vc = NewCKVc() vc.gmNumber = 66 self.navigationController?.pushViewController(vc, animated: true) return case 67: //仓库管理 NotificationCenter.default.post(name: NSNotification.Name(rawValue: "changgeTabItem"), object: nil, userInfo: ["tag":3]) return case 69: //主营收入 HUD.flash(.label("敬请期待"),delay: 1.2) return case 70: //其他收入 HUD.flash(.label("敬请期待"),delay: 1.2) return case 71: //费用支出 HUD.flash(.label("敬请期待"),delay: 1.2) return case 72: //样品福利 HUD.flash(.label("敬请期待"),delay: 1.2) return case 73: //主营成本 HUD.flash(.label("敬请期待"),delay: 1.2) return case 74: //现金记账 HUD.flash(.label("敬请期待"),delay: 1.2) return case 75: //收支统计 // HUD.flash(.label("敬请期待"),delay: 1.2) // return // let vc = XiaYunDanViewController() let vc = ShouZhiTongJiViewController() self.navigationController?.pushViewController(vc, animated: true) return case 76: //收支详情 HUD.flash(.label("敬请期待"),delay: 1.2) return case 77: //应收账款 // HUD.flash(.label("敬请期待"),delay: 1.2) let vc = YingFuZKListViewController() vc.barTitle = "应收账款" self.navigationController?.pushViewController(vc, animated: true) return case 78: //应付账款 // HUD.flash(.label("敬请期待"),delay: 1.2) let vc = YingFuZKListViewController() vc.barTitle = "应付账款" self.navigationController?.pushViewController(vc, animated: true) return case 80: //客户列表 // HUD.flash(.label("敬请期待"),delay: 1.2) let vc = KeHuListViewController() self.navigationController?.pushViewController(vc, animated: true) return case 82: //账期用户列表 HUD.flash(.label("敬请期待"),delay: 1.2) return case 83: //用户账期申请列表 HUD.flash(.label("敬请期待"),delay: 1.2) return case 84: //账期设置 HUD.flash(.label("敬请期待"),delay: 1.2) return case 86: //档口列表 HUD.flash(.label("敬请期待"),delay: 1.2) return case 88: //运单列表 HUD.flash(.label("敬请期待"),delay: 1.2) // let vc = YDLBVc() // self.navigationController?.pushViewController(vc, animated: true) return case 89: //物流公司列表 HUD.flash(.label("敬请期待"),delay: 1.2) // let vc = YDLBVc() // self.navigationController?.pushViewController(vc, animated: true) return case 90: //下运单 HUD.flash(.label("敬请期待"),delay: 1.2) return case 92: //采购订单管理 // HUD.flash(.label("敬请期待"),delay: 1.2) let vc = CGDListViewController() self.navigationController?.pushViewController(vc, animated: true) return case 93: //供应商管理 // HUD.flash(.label("敬请期待"),delay: 1.2) let vc = GYSListViewController() vc.barTitle = "供应商管理" self.navigationController?.pushViewController(vc, animated: true) return case 113: //管理员列表 HUD.flash(.label("敬请期待"),delay: 1.2) return case 115: //角色列表 HUD.flash(.label("敬请期待"),delay: 1.2) return case 116: //字段列表 HUD.flash(.label("敬请期待"),delay: 1.2) return case 118: //新增商品 let vc = ProductDetailViewController() self.navigationController?.pushViewController(vc, animated: true) return case 119: //新增采购单 // let vc = YDLBVc() let vc = XinCaiGouViewController() self.navigationController?.pushViewController(vc, animated: true) return case 120: //商品毛利统计 HUD.flash(.label("敬请期待"),delay: 1.2) return case 121: //出库审核 let vc = CRKListVC() vc.status = 1 vc.io_type = 2 self.navigationController?.pushViewController(vc, animated: true) return case 122: //入库审核 let vc = CRKListVC() vc.status = 1 vc.io_type = 1 self.navigationController?.pushViewController(vc, animated: true) return case 123: //新增仓库 let vc = CheckWareHourseViewController() vc.titleStr = "新增仓库" self.navigationController?.pushViewController(vc, animated: true) return case 124: //采购入库 let vc = CGDListViewController() vc.selectIndex = 1 self.navigationController?.pushViewController(vc, animated: true) // HUD.flash(.label("敬请期待"),delay: 1.2) return case 125: //申请采购单 // let vc = YDLBVc() let vc = XinCaiGouViewController() vc.isSQ = true self.navigationController?.pushViewController(vc, animated: true) return default: break; } HUD.flash(.label("敬请期待"),delay: 1.2) return } //MARK:--编辑页面保存回调(主要增加使用体验)不应网络请求出差而无法改变 func updataUIbyEditWorkSave() { let userdataStr = UserDefaults.standard.value(forKey: "WorkDataModel") if userdataStr != nil { print("有数据哦--") let workTestMd = WorkDataModel(JSONString: userdataStr as! String) let dataModelStr = workTestMd?.dataModelStr self.dataModel = WorkcenterIndexDataModel(JSONString: dataModelStr!) //旧的常用功能 let oftenStr = workTestMd?.oftenArrStr if oftenStr!.count > 0 { self.oftenArr?.removeAll() self.oftenArr = Array(JSONString: oftenStr!) } self.tableV.reloadData() }else{ print("没有数据hehe--") } } //MARK:--检测app更新 func updateApp(){ let infoDicod = Bundle.main.infoDictionary let currentVersion:String = infoDicod!["CFBundleShortVersionString"] as! String Alamofire.request("http://itunes.apple.com/cn/lookup?id=1515684912") .responseJSON { response in switch response.result.isSuccess { case true: if let value = response.result.value { let json = JSON(value) print(json) if let appStoreVersion = json["results"][0]["version"].string { if currentVersion.caseInsensitiveCompare(appStoreVersion).rawValue == -1 { print("需要更新哦+++") let oldappStoreVersion = UserDefaults.standard.object(forKey: "appStoreVersion") if oldappStoreVersion != nil { if appStoreVersion != oldappStoreVersion as!String { self.updateStr = json["results"][0]["trackViewUrl"].string! let alertView = GeliAlertView(frame: self.view.window!.bounds) alertView.upAppIconV.isHidden = false alertView.versionLbl.isHidden = false alertView.tLbl.isHidden = false alertView.versionLbl.text = "V" + json["results"][0]["version"].string! alertView.delegate = self; alertView.tishiLbl.text = "" alertView.titileLbl.text = json["results"][0]["releaseNotes"].string alertView.titileLbl.textAlignment = .left alertView.rightBtn.setAttributedTitle(NSAttributedString(string: "立即更新"), for: .normal) alertView.leftBtn.setAttributedTitle(NSAttributedString(string: "残忍拒绝"), for: .normal) alertView.rightBtn.tag = 1515684912 alertView.appStoreVersion = appStoreVersion self.view.window?.addSubview(alertView) } }else{ self.updateStr = json["results"][0]["trackViewUrl"].string! let alertView = GeliAlertView(frame: self.view.window!.bounds) alertView.upAppIconV.isHidden = false alertView.versionLbl.isHidden = false alertView.tLbl.isHidden = false alertView.versionLbl.text = "V" + json["results"][0]["version"].string! alertView.delegate = self; alertView.tishiLbl.text = "" alertView.titileLbl.text = json["results"][0]["releaseNotes"].string alertView.titileLbl.textAlignment = .left alertView.rightBtn.setAttributedTitle(NSAttributedString(string: "立即更新"), for: .normal) alertView.leftBtn.setAttributedTitle(NSAttributedString(string: "残忍拒绝"), for: .normal) alertView.rightBtn.tag = 1515684912 alertView.appStoreVersion = appStoreVersion self.view.window?.addSubview(alertView) } }else{ print("不需要更新哦---") } } } case false: break //错误 } } } var updateStr:String = "" func sureGeliAlertViewAction(sender: UIButton) { if sender.tag == 1515684912 { UIApplication.shared.open(URL(string: updateStr)!) } } }