// // EPViewController.swift // GeliBusinessPlatform // // Created by junye lu on 2020/5/20. // Copyright © 2020 junye lu. All rights reserved. // import UIKit import LGButton import Photos import IQKeyboardManagerSwift import Dollar import SwiftyJSON protocol EPViewControllerDelegate { func EPViewControllerFinishEdit() } class EPViewController: BaseViewController,UITableViewDelegate,UITableViewDataSource,TitleAndBtnCellDelegate,GLAlertSelectViewDelegate,GoodsClassViewControllerDelegate,PinPaiListViewControllerDelegate,AddImgCellDelegate,AddGuiGeCellDelegate,CreatNewSpecsViewControllerDelegate,ShangPinGguiGeCellDelegate,UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout,TitleAndSwitchCellDelegate,TitleAndTFCellDelegate,YuShouWeiKuanFaHuoCellDelegate,UITextFieldDelegate,ShowTimeSelectViewDelegate, LMNoteViewControllerDelegate,GeliAlertViewDelegate, UIPickerViewDataSource, UIPickerViewDelegate{ func CreatNewSpecsViewControllerCreateNew(datas: Array, selectIdx: IndexPath) { let vc = CreatNewSpecsViewController() vc.barTitle = "新增规格" vc.delegate = self vc.danWeiArr = generalInfoModel?.data!.unit vc.isYuShouSetting = isYuShouShangPin! vc.datasArr = guiGeArr vc.selectIdx = selectIdx self.navigationController?.pushViewController(vc, animated: false) } func CheckCellBtnClick(sender: UIButton, cell: AddImgCell) { let browser = JXPhotoBrowser() browser.numberOfItems = { cell.imgs.count } browser.pageIndex = sender.tag browser.reloadCellAtIndex = { context in let browserCell = context.cell as? JXPhotoBrowserImageCell let url = URL(string:SERVERCE_ImageHost + cell.imgs[context.index]) browserCell?.imageView.sd_setImage(with: url, placeholderImage: nil, options: [], completed: { (_, _, _, _) in browserCell?.setNeedsLayout() }) } browser.show() } let UserToken = UserDefaults.standard.value(forKey: "user_token") var delegate:EPViewControllerDelegate? @IBOutlet weak var btmColor:UIView! @IBOutlet weak var btmBtnViewH:NSLayoutConstraint! @IBOutlet weak var listTbv:UITableView! @IBOutlet weak var btmBtnBGView:UIView! var generalInfoModel:GeneralInfoModel? = nil var pinPai = ""//品牌 var pinPai_id:Int? //品牌id var titleStrArr:Array? = [] var goods_id:Int? var sku_id:Int? var goodsDetailModel:GoodsDetailModel? = nil var editActionArr = ["保存"] func GLASClose(view: GLAlertSelectView, selectnum: Int, selectArr: Array) { if view.titleLbl.text == "请选择商品类型" { print(itemTypeArr,selectArr) itemTypeArr = selectArr } if selectnum != 10086 { if view.titleLbl.text == "请选择运输方式" { yunShuType = selectnum } if view.titleLbl.text == "请选择商品状态" { shangPinStatus = selectnum } } view.removeFromSuperview() glSelectView = nil } var titleArr = ["商品信息","商品图片","商品规格","预售设置","其它信息","商品详情"] let spxxArr = ["商品名称","商品类型","商品分类","品牌","可售库存","起卖数量","是否清真","是否询价"] var tishixxArr = ["请输入商品名称","请选择商品类型","请选择商品分类","请选择品牌","查看库存","请输入起卖数量"] var tishixxArr1 = ["请输入关键字","请输入物流费用","请选择产品产地","热销","请选择运输方式"] let sptpArr = ["商品封面图(限一张)","商品主图(限五张)"] let qtxxArr = ["关键字","物流费用","产品产地","商品状态","运输方式"] let ysszArr = ["用户付款是否需要审核","预设预付定金时间段","预设预付尾款时间段","预设预付尾款发货时间"] var ysszHolder = ["0","请选择时段","请选择时段","0"] var shangPinStatusArr:Array? = [] var yunShuTypeArr = ["冷链","常温","热链"] var countryArr = ["中国"] var layout = UICollectionViewFlowLayout() var webH:CGFloat = 250 var glSelectView:GLAlertSelectView? var selectIdx:IndexPath? = IndexPath(item: 0, section: 0) //多规格状态下点击collectionCell的row记录 var isYuShouShangPin:Bool? = false//是否为预售商品 var itemTypeArr:Array? = []//多选 var shangPinStatus:Int? = 1//商品状态 var yunShuType:Int? = 0//运输类型 var maxFiveImgsArr:Array = []//多图 var singleImgArr:Array = []//单张图 var itemName = ""//商品名称 var qiMaiShuLiang = ""//起卖数量 var shiFouQZ = false//是否清真 var shiFouXJ = false//是否询价 var keyWord = ""//关键字 var wuLiuPrice = ""//物流费用 // var countrySelect:Int? = 0//选择国家 var guiGeArr:Array = []//规格数组,根据规格资料数量控制右上角新增按钮是否显示 var shiFouSH = false //是否审核 var faHuoTime = ""//发货时间 //预售时间段 var dj_time_start:Double? = 0 var dj_time_end:Double? = 0 var wk_time_start:Double? = 0 var wk_time_end:Double? = 0 var isAllEditing = false func sureGeliAlertViewAction(sender: UIButton) { if sender.tag == 10086 {//正在编辑,询问是否离开 self.navigationController?.popViewController(animated: true) return } if sender.tag == 1001 { navbar.rightTitle = "取消编辑" GeneralInfo(["user_token":UserToken as Any], success: { (data) in HUD.hide(animated: true) self.generalInfoModel = (data as! GeneralInfoModel) self.shangPinStatusArr = (self.generalInfoModel?.data!.gs)! self.editBtn!.setTitle("保存", for: .normal) self.isAllEditing = true self.listTbv.reloadData() self.btmBtnBGView.subviews.forEach { (view) in view.removeFromSuperview() } for i in 0 ..< self.editActionArr.count { let btn = UIButton(frame: CGRect(x: 0 , y: 1, width:fullScreenWidth, height: 49)) self.btmBtnBGView.addSubview(btn) btn.setTitle(self.editActionArr[i], for: .normal) btn.setTitleColor(UIColor.white, for: .normal) btn.backgroundColor = UIColor(named: "蓝色字体颜色") btn.titleLabel?.font = UIFont.boldSystemFont(ofSize: 17) btn.addTarget(self, action: #selector(self.btmBtnClick(sender:)), for: .touchUpInside) } self.btmColor.backgroundColor = UIColor(named: "蓝色字体颜色") }) { (error) in } }else if sender.tag == 1002 { //MARK:---新增商品接口 var goods_type = "" for i in 1.. 0 { let model = self.shangPinStatusArr![shangPinStatus!] gs_id = model.gs_id! } let transportation = yunShuType! + 1 //futu let goods_bannerStr = self.getNewPicDictsArray() var original_img_edit = 0 if goodsDetailModel!.data?.goods_res?.original_img != original_img { original_img_edit = 1 } getUpSkuInfoEditByData(dataArr: guiGeArr) let dic = ["user_token":UserToken as Any, //验证token "goods_id":goods_id as Any,//修改的商品ID "cat_id":selectGoodsClassModel.cat_id as Any, //分类ID "brand_id":pinPai_id as Any, // 品牌ID "goods_name":itemName as Any, //商品名称 "is_qz":is_qz as Any, //是否清真商品,1是0非 "goods_type":goods_type as Any, //商品类型,普通2现货3期货4团购 "is_adsale":is_adsale as Any, //商品类型字段,预售专用,选定”预售”则值为1,否则值为0 "is_inquiry":is_inquiry as Any, //是否询价:1是0非 "need_check":need_check as Any, //付款是否需要审核, 1是0非 "dj_time_start":dj_time_start as Any, //预设预付定金开始时间,时间戳,预售专用 "dj_time_end":dj_time_end as Any, //预设预付定金结束时间,时间戳,预售专用 "wk_time_start":wk_time_start as Any, //预设预付尾款开始时间,时间戳,预售专用 "wk_time_end":wk_time_end as Any, //预设预付尾款结束时间,时间戳,预售专用 "set_time":faHuoTime as Any, //预付尾款后几天后发货 "keywords":keyWord as Any, //关键字 "logistics":wuLiuPrice as Any, //物流费用 "origin_number":qiMaiShuLiang as Any, //起购数量 "coun_id":"1" as Any, //国家id 1(中国) "gs_id":gs_id as Any, //商品状态 "transportation":transportation as Any, //运输方式,1冷链,2常温,3热链 "goods_desc":goodsDesc as Any, //商品详情 html p标签 "specifications":specifications as Any, //默认规格,选sku中最低价格(需判定阶梯价)的 规格值 "shop_price":shop_price as Any, //默认售价,选sku中最低价格(需判定阶梯价)的价格 "goods_unit":goods_unit as Any, //默认商品单位,选sku中最低价格(需判定阶梯价)的单位 "original_img":original_img as Any, //商品封面图 "original_img_edit":original_img_edit as Any,//商品封面图是否有修改,1是0非 "goods_banner":goods_bannerStr as Any, //商品副图,多张,最多5张,使用一维数组转json格式 "sku_info":sku_info as Any] print(sku_info) //MARK:--修改商品接口 goodsEdit(dic, success: { (data) in HUD.flash(.labeledSubSuccess(subtitle: "提交修改成功"), delay: 1.2) self.btmBtnBGView.subviews.forEach { (view) in view.removeFromSuperview() } self.setBtmBtnUi() self.btmColor.backgroundColor = UIColor.white self.isAllEditing = false self.navbar.rightTitle = "" self.listTbv.reloadData() self.delegate?.EPViewControllerFinishEdit() }) { (error) in } }else if sender.tag == 1003 { onOff(["user_token":UserToken as Any,"goods_id":goods_id as Any,"is_show":1], success: { (data) in let dataM = data as! UpDataModel if dataM.code == 1 { HUD.flash(.label("提交成功"), delay: 1.2) self.loadData() self.delegate?.EPViewControllerFinishEdit() } }) { (erro) in } }else if sender.tag == 1004 { onOff(["user_token":UserToken as Any,"goods_id":goods_id as Any,"is_show":0], success: { (data) in let dataM = data as! UpDataModel if dataM.code == 1 { HUD.flash(.label("提交成功"), delay: 1.2) self.loadData() self.delegate?.EPViewControllerFinishEdit() } }) { (erro) in } }else if sender.tag == 1005 { editField(["user_token":UserToken as Any,"function_id":"16","prval":goods_id as Any,"value":1,], success: { (data) in let dataM = data as! UpDataModel if dataM.code == 1 { HUD.flash(.label("删除成功"), delay: 1.2) self.delegate?.EPViewControllerFinishEdit() self.navigationController?.popViewController(animated: true) } }) { (erro) in } } } func rightBtnClick() { navbar.rightTitle = "" self.isAllEditing = false self.btmColor.backgroundColor = UIColor.white loadData() } var editBtn:UIButton? @objc func btmBtnClick(sender:UIButton){ switch sender.titleLabel!.text { case "编辑": editBtn = sender let alertView = GeliAlertView(frame: self.view.window!.bounds) alertView.delegate = self; alertView.tishiLbl.text = "" alertView.titileLbl.text = "是否打开编辑?" alertView.rightBtn.setAttributedTitle(NSAttributedString(string: "确认"), for: .normal) alertView.rightBtn.tag = 1001 self.view.window?.addSubview(alertView) break case "保存": print("保存按钮submitAction") if itemName.count == 0 { HUD.flash(.label("请输入商品名称"), delay: 1.2) return } if itemTypeArr == [] || itemTypeArr == [99,99,99,99] { HUD.flash(.label("请选择商品类型"), delay: 1.2) return } //待补充 if itemName.count == 0 { HUD.flash(.label("请输入商品名称"), delay: 1.2) return } if itemTypeArr == [99,99,99,99] { HUD.flash(.label("请选择商品类型"), delay: 1.2) return } if selectGoodsClassModel.cat_id == nil { HUD.flash(.label("请选择商品分类"), delay: 1.2) return } if pinPai.count == 0 { HUD.flash(.label("请选择品牌"), delay: 1.2) return } if qiMaiShuLiang.count == 0 { HUD.flash(.label("请输入起卖数量"), delay: 1.2) return } if singleImgArr.count == 0 { HUD.flash(.label("请选择商品封面图"), delay: 1.2) return } if maxFiveImgsArr.count == 0 { HUD.flash(.label("请选择商品主图"), delay: 1.2) return } // if guiGeArr.count == 0 { HUD.flash(.label("请填写商品规格"), delay: 1.2) return } if isYuShouShangPin! { if faHuoTime.count == 0 { HUD.flash(.label("请输入尾款发货时间"), delay: 1.2) return } } if wuLiuPrice.count == 0 { HUD.flash(.label("请输入物流费用"), delay: 1.2) return } // if countrySelect == nil { // HUD.flash(.label("请选择国家"), delay: 1.2) // return // } if shangPinStatus == nil { HUD.flash(.label("请选择商品状态"), delay: 1.2) return } if yunShuType == nil { HUD.flash(.label("请选择运输方式"), delay: 1.2) return } let alertView = GeliAlertView(frame: self.view.window!.bounds) alertView.delegate = self; alertView.tishiLbl.text = "" alertView.titileLbl.text = "是否保存编辑?" alertView.rightBtn.setAttributedTitle(NSAttributedString(string: "确认"), for: .normal) alertView.rightBtn.tag = 1002 self.view.window?.addSubview(alertView) break case "入库": let vc = NewRKVc() vc.goods_id = goods_id! vc.sku_id = sku_id! self.navigationController?.pushViewController(vc, animated: true) break case "出库": let vc = NewCKVc() vc.goods_id = goods_id! vc.sku_id = sku_id! self.navigationController?.pushViewController(vc, animated: true) break case "上架": //提示是否上架 let alertView = GeliAlertView(frame: self.view.window!.bounds) alertView.delegate = self; alertView.tishiLbl.text = "" alertView.titileLbl.text = "是否上架商品?" alertView.rightBtn.setAttributedTitle(NSAttributedString(string: "确认"), for: .normal) alertView.rightBtn.tag = 1003 self.view.window?.addSubview(alertView) break case "下架": //提示是否下架 let alertView = GeliAlertView(frame: self.view.window!.bounds) alertView.delegate = self; alertView.tishiLbl.text = "" alertView.titileLbl.text = "是否下架商品?" alertView.rightBtn.setAttributedTitle(NSAttributedString(string: "确认"), for: .normal) alertView.rightBtn.tag = 1004 self.view.window?.addSubview(alertView) break case "删除": //提示是否删除 let alertView = GeliAlertView(frame: self.view.window!.bounds) alertView.delegate = self; alertView.tishiLbl.text = "" alertView.titileLbl.text = "是否删除商品?" alertView.rightBtn.setAttributedTitle(NSAttributedString(string: "确认"), for: .normal) alertView.rightBtn.tag = 1005 self.view.window?.addSubview(alertView) break default: break } } func loadData () { //MARK:--新增商品和编辑商品所需要的基本信息(无)就页面不正常显示 goodsDetail(["user_token":UserToken,"goods_id":goods_id], success: { (data) in //MARK: - 获取详情 self.listTbv.isHidden = false let model = data as! GoodsDetailModel self.goodsDetailModel = model //商品名 self.itemName = (model.data?.goods_res!.goods_name)! //默认单位 self.goods_unit = (model.data?.goods_res!.goods_unit)! //商品类型 if model.data?.goods_res!.is_adsale == 0{ self.itemTypeArr = [99,99,99,99,99] }else{ self.itemTypeArr = [0,99,99,99,99] } if (model.data?.goods_res!.goods_type)! == 1 || (model.data?.goods_res!.goods_type)! == 2 { self.itemTypeArr?.insert(1, at: 1) self.itemTypeArr?.remove(at: 2) }else{ self.itemTypeArr?.insert((model.data?.goods_res!.goods_type)!, at: (model.data?.goods_res!.goods_type)!-1) self.itemTypeArr?.remove(at: (model.data?.goods_res!.goods_type)!) } self.btmBtnBGView.subviews.forEach { (view) in view.removeFromSuperview() } if model.data?.goods_res?.is_show == 0 { if (self.titleStrArr?.contains("下架"))!{ self.titleStrArr?.insert("上架", at: 3) self.titleStrArr?.remove(at: 1) } }else{ if (self.titleStrArr?.contains("上架"))!{ self.titleStrArr?.insert("下架", at: 1) self.titleStrArr?.remove(at: 3) } } self.setBtmBtnUi() let contentArr = ["预售","现货","期货","团购"] let titles = NSMutableArray() titles.removeAllObjects() for num in self.itemTypeArr! { if num != 99{ if num > 1 { if num == 5 { break } titles.add(contentArr[num-1]) }else{ titles.add(contentArr[num]) } } } if titles.componentsJoined(by: ",").contains("预售") { self.isYuShouShangPin = true }else{ self.isYuShouShangPin = false } self.tishixxArr.insert(titles.componentsJoined(by: ","), at: 1) self.tishixxArr.remove(at: 2) //商品分类 self.selectGoodsClassModel.cat_id = model.data?.goods_res?.cat_id self.tishixxArr.insert((model.data?.goods_res!.cat_name)!, at: 2) self.tishixxArr.remove(at: 3) //品牌名 self.pinPai_id = (model.data?.goods_res!.brand_id)! if (model.data?.goods_res!.brand_name) != nil{ self.pinPai = (model.data?.goods_res!.brand_name)! }else{ self.pinPai = "" } self.tishixxArr.insert(self.pinPai, at: 3) self.tishixxArr.remove(at: 4) //起卖数量 self.qiMaiShuLiang = "\(model.data!.goods_res!.origin_number!)" //是否清真 self.shiFouQZ = true if model.data?.goods_res!.is_qz == 0 { self.shiFouQZ = false } //默认规格 self.specifications = (model.data?.goods_res!.specifications)! //是否询价 self.shiFouXJ = true if model.data?.goods_res!.is_inquiry == 0 { self.shiFouXJ = false } //是否有封面图 self.singleImgArr = [ (model.data?.goods_res!.original_img)!]//单张图 self.original_img = (model.data?.goods_res!.original_img)! //商品规格 if (model.data?.sku_res?.count)! > 0{ self.guiGeArr.removeAll() for item in model.data!.sku_res! { let dataSource = item let data = GuiGeModel() data.price = dataSource.price!//价格 data.danWei = dataSource.unit!//单位 data.sku_id = dataSource.sku_id!//sku_id let arr = dataSource.spec_str?.components(separatedBy: ":") data.guiGe = (arr?.last)!//规格 print("dict == ",dataSource.pack_attr!) let dict = getDictionaryFromJSONString(jsonString: dataSource.pack_attr!) data.weight = dict["wg"] as! String//重量 data.wenDu = dataSource.refrigerate!//温藏 data.originalPrice = item.original_price! data.originNumberSku = StringByInt(number: item.origin_number_sku!) //预售设置 data.isOpenYSSetting = false if dataSource.is_open_adsale! == 1 { data.isOpenYSSetting = true } //普通阶梯价是否打开 data.isJieTiOpen = false if dataSource.is_tiered == 1 { data.isJieTiOpen = true data.selectYuShou = false } //预售阶梯价是否打开 data.isYsJieTiOpen = false if dataSource.is_adsale_tiered == 1 { data.selectYuShou = true data.isYsJieTiOpen = true } //预售价格 data.yuShouPrice = dataSource.adsale_pri! //预售库存 data.ysKuCun = StringByInt(number: dataSource.adsale_inventory!) //百分比 data.DJBiLi = StringByInt(number: dataSource.pct!) //阶梯价 if dataSource.tiered_pri!.count > 0 { data.jieTiArr = self.getResponseArr(str: dataSource.tiered_pri!) } //预售阶梯价 if dataSource.adsale_tiered_pri!.count > 0 { data.specalArr = self.getResponseArr(str:dataSource.adsale_tiered_pri!) } self.guiGeArr.append(data) } } //是否审核 self.shiFouSH = false if model.data?.goods_res?.need_check == 1 { self.shiFouSH = true } //预设预付定金时间段 // print("abcl === ",model.data?.goods_res!.dj_time_start!) if model.data?.goods_res!.dj_time_start != 0 { let begin = dayByDouble(sender: (model.data?.goods_res!.dj_time_start)!) + "-" + dayByDouble(sender: (model.data?.goods_res!.dj_time_end)!) self.dj_time_start = (model.data?.goods_res!.dj_time_start) self.dj_time_end = (model.data?.goods_res!.dj_time_end) self.ysszHolder.insert(begin, at: 1) self.ysszHolder.remove(at: 2) } //预设预付尾款时间段 if model.data?.goods_res!.wk_time_start != 0 { let end = dayByDouble(sender: (model.data?.goods_res!.wk_time_start)!) + "-" + dayByDouble(sender: (model.data?.goods_res!.wk_time_end)!) self.wk_time_start = (model.data?.goods_res!.wk_time_start) self.wk_time_end = (model.data?.goods_res!.wk_time_end) self.ysszHolder.insert(end, at: 2) self.ysszHolder.remove(at: 3) } //发货时间 if model.data?.goods_res?.set_time != nil { self.faHuoTime = "\(model.data!.goods_res!.set_time!)" } //商品附图 self.maxFiveImgsArr.removeAll() let imgArr = model.data?.banner_res! if imgArr!.count > 0 { for i in 0 ..< imgArr!.count { if i < 5 { let imgData = imgArr![i] self.maxFiveImgsArr.append(imgData.img_original!) self.goods_banner?.insert(imgData.img_original!, at: i) self.goods_banner?.remove(at: i+1) } } } //关键字 self.keyWord = (model.data?.goods_res!.keywords)! //物流费用 self.wuLiuPrice = (model.data?.goods_res!.logistics)! //国家 //待完善 // self.countrySelect = (model.data?.goods_res!.coun_id)!-1 // self.tishixxArr1.insert(self.countryArr[self.countrySelect!], at: 2) // self.tishixxArr1.remove(at: 3) //商品状态 self.shangPinStatus = (model.data?.goods_res?.gs_id)!-1 self.tishixxArr1.insert((model.data?.goods_res!.gs_name)!, at: 3) self.tishixxArr1.remove(at: 4) //运输方式 self.yunShuType = (model.data?.goods_res!.transportation)! - 1 self.tishixxArr1.insert(self.yunShuTypeArr[self.yunShuType!], at: 4) self.tishixxArr1.remove(at: 5) //商品详情 self.goodsDesc = model.data?.goods_res?.goods_desc as! String self.listTbv.reloadData() }) { (error) in } } func setBtmBtnUi(){ if titleStrArr!.count == 2 { titleStrArr?.insert("编辑", at: 0) titleStrArr?.append("删除") } let w = fullScreenWidth / 4 // if titleStrArr!.count == 4 { for i in 0 ..< titleStrArr!.count { let btn = UIButton(frame: CGRect(x: CGFloat(i) * w , y: 1, width: w, height: 49)) btmBtnBGView.addSubview(btn) btn.setTitle(titleStrArr![i], for: .normal) btn.setTitleColor(UIColor(named: "蓝色字体颜色"), for: .normal) btn.titleLabel?.font = UIFont.boldSystemFont(ofSize: 13) btn.addTarget(self, action: #selector(btmBtnClick(sender:)), for: .touchUpInside) } } override func viewDidLoad() { super.viewDidLoad() //MARK:--获取新增商品的基本信息(品牌和分类等) HUD.flash(.progress) getIndex() setBtmBtnUi() // } //是否为预售商品 isYuShouShangPin = false navbar.title = "商品详情" self.view.addSubview(navbar) SetTopFrameView(view: listTbv, btmView: btmBtnBGView) listTbv.isHidden = true loadData() self.listTbv.separatorStyle = .none self.listTbv.delegate = self self.listTbv.dataSource = self self.listTbv.register(UINib(nibName: "TitleAndTFCell", bundle: nil), forCellReuseIdentifier: "TitleAndTF") self.listTbv.register(UINib(nibName: "TitleAndSwitchCell", bundle: nil), forCellReuseIdentifier: "TitleAndSwitch") self.listTbv.register(UINib(nibName: "TitleAndBtnCell", bundle: nil), forCellReuseIdentifier: "TitleAndBtn") self.listTbv.register(UINib(nibName: "AddImgCell", bundle: nil), forCellReuseIdentifier: "AddImg") self.listTbv.register(UINib(nibName: "AddGuiGeCell", bundle: nil), forCellReuseIdentifier: "AddGuiGe") self.listTbv.register(UINib(nibName: "YuShouWeiKuanFaHuoCell", bundle: nil), forCellReuseIdentifier: "YuShouWeiKuanFaHuoCell") self.listTbv.register(UINib(nibName: "ShangPinGguiGeCell", bundle: nil), forCellReuseIdentifier: "ShangPinGguiGeCell") // Do any additional setup after loading the view. } func getResponseArr(str:String)->Array{ let dict = getDictionaryFromJSONString(jsonString: str) var arr:Array = [] for key in dict.allKeys{ let k = key as! String let str = (dict[k] as! String) + "_" + k arr.append(str) } return arr } //MARK: - cell delegate func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { switch indexPath.section { case 0: if indexPath.row == 0 || indexPath.row == 5 { let cell = tableView.dequeueReusableCell(withIdentifier: "TitleAndTF") as! TitleAndTFCell cell.textTF.delegate = self cell.nameLbl.text = spxxArr[indexPath.row] cell.textTF.isUserInteractionEnabled = isAllEditing //商家名称 switch cell.nameLbl.text { case "商品名称": cell.textTF.text = itemName cell.textTF.returnKeyType = .done break case "起卖数量": cell.textTF.text = qiMaiShuLiang cell.textTF.keyboardType = .numberPad break default: break } cell.textTF.placeholder = tishixxArr[indexPath.row] as! String cell.delegate = self return cell } if indexPath.row > 5{ let cell = tableView.dequeueReusableCell(withIdentifier: "TitleAndSwitch") as! TitleAndSwitchCell cell.infoSw.isUserInteractionEnabled = isAllEditing cell.namelbl.text = spxxArr[indexPath.row] cell.delegate = self switch cell.namelbl.text { case "是否清真": cell.infoSw.isOn = shiFouQZ break case "是否询价": cell.infoSw.isOn = shiFouXJ break default: break } return cell } let cell = tableView.dequeueReusableCell(withIdentifier: "TitleAndBtn") as! TitleAndBtnCell cell.btn.isUserInteractionEnabled = isAllEditing cell.nameLbl.text = spxxArr[indexPath.row] cell.contentLbl.text = tishixxArr[indexPath.row] as! String cell.tag = indexPath.row if isAllEditing == false { cell.contentRight.constant = 15 cell.arrowImg.isHidden = true }else{ cell.contentRight.constant = 32 cell.arrowImg.isHidden = false } cell.delegate = self return cell case 1: let cell = tableView.dequeueReusableCell(withIdentifier: "AddImg") as! AddImgCell cell.addBtn.isUserInteractionEnabled = isAllEditing cell.isAllEditing = isAllEditing if isAllEditing { cell.addBtn.isHidden = false }else{ cell.addBtn.isHidden = true } cell.nameLbl.text = sptpArr[indexPath.row] if indexPath.row == 0 { cell.isSingle = true if singleImgArr.count > 0{ cell.imgs = singleImgArr cell.addBtn.isHidden = true }else{ cell.scrollView?.isHidden = true cell.addBtn.isHidden = false } }else{ cell.isSingle = false if maxFiveImgsArr.count > 0{ cell.imgs = maxFiveImgsArr }else{ cell.scrollView?.isHidden = true cell.addBtnX.constant = 15 } } cell.delegate = self cell.addBtn.tag = indexPath.row cell.isEdit = true return cell case 2: if guiGeArr.count > 0 { let cell = tableView.dequeueReusableCell(withIdentifier: "ShangPinGguiGeCell") as! ShangPinGguiGeCell cell.isCheck = true cell.delegate = self if isAllEditing { cell.btn.setTitle("编辑规格", for: .normal) }else{ cell.btn.setTitle("查看规格", for: .normal) } var dict:GuiGeModel! if selectIdx != nil{ print(selectIdx?.item) dict = guiGeArr[selectIdx!.item] }else{ dict = guiGeArr.first } cell.code_lbl.text = "商品条码:未记录" if dict.code_number.count > 0 { cell.code_lbl.text = "商品条码:\(dict.code_number)" } cell.tempLbl.text = "温藏:未记录" if dict.wenDu.count > 0 { cell.tempLbl.text = "温藏:\(dict.wenDu)" } cell.weightLbl.text = "重量(kg):未记录" if dict.weight.count > 0 { cell.weightLbl.text = "重量(kg):\(dict.weight)kg" } cell.guiGeLbl.text = "规格:\(dict.guiGe)" cell.danWeiLbl.text = "单位:未记录" if dict.danWei.count > 0 { cell.danWeiLbl.text = "单位:\(dict.danWei)" } cell.sellPriceLbl.text = "售价:¥\(dict.price)" return cell } let cell = tableView.dequeueReusableCell(withIdentifier: "AddGuiGe") as! AddGuiGeCell cell.delegate = self cell.tag = indexPath.section cell.imgBtn.isUserInteractionEnabled = isAllEditing cell.imgBtn.setImage(UIImage(named: "xinzeng"), for: .normal) cell.webView.isHidden = true cell.actp.isHidden = true return cell case 3: if indexPath.row == 0 { let cell = tableView.dequeueReusableCell(withIdentifier: "TitleAndSwitch") as! TitleAndSwitchCell cell.namelbl.text = ysszArr[indexPath.row] cell.delegate = self cell.infoSw.isUserInteractionEnabled = isAllEditing cell.infoSw.isOn = shiFouSH return cell } if indexPath.row == 3 { let cell = tableView.dequeueReusableCell(withIdentifier: "YuShouWeiKuanFaHuoCell") as! YuShouWeiKuanFaHuoCell cell.textTF.isUserInteractionEnabled = isAllEditing cell.nameLbl.text = ysszArr[indexPath.row] cell.textTF.keyboardType = .numberPad cell.delegate = self cell.textTF.text = faHuoTime return cell } let cell = tableView.dequeueReusableCell(withIdentifier: "TitleAndBtn") as! TitleAndBtnCell cell.nameLbl.text = ysszArr[indexPath.row] cell.delegate = self cell.btn.isUserInteractionEnabled = isAllEditing cell.contentLbl.text = ysszHolder[indexPath.row] if isAllEditing{ cell.contentRight.constant = 32 cell.arrowImg.isHidden = false }else{ cell.contentRight.constant = 15 cell.arrowImg.isHidden = true } return cell case 4: if indexPath.row < 2 { let cell = tableView.dequeueReusableCell(withIdentifier: "TitleAndTF") as! TitleAndTFCell cell.nameLbl.text = qtxxArr[indexPath.row] cell.textTF.delegate = self cell.textTF.isUserInteractionEnabled = isAllEditing cell.textTF.returnKeyType = .done switch cell.nameLbl.text { case "关键字": cell.textTF.text = keyWord cell.textTF.keyboardType = .default break case "物流费用": cell.textTF.text = wuLiuPrice cell.textTF.keyboardType = .decimalPad break default: break } cell.textTF.placeholder = tishixxArr1[indexPath.row] as! String cell.tag = indexPath.row cell.delegate = self return cell }else{ let cell = tableView.dequeueReusableCell(withIdentifier: "TitleAndBtn") as! TitleAndBtnCell cell.nameLbl.text = qtxxArr[indexPath.row] cell.tag = indexPath.row cell.btn.isUserInteractionEnabled = isAllEditing cell.contentLbl.text = tishixxArr1[indexPath.row] as! String if isAllEditing{ cell.contentRight.constant = 32 cell.arrowImg.isHidden = false }else{ cell.contentRight.constant = 15 cell.arrowImg.isHidden = true } cell.delegate = self return cell } default: let cell = tableView.dequeueReusableCell(withIdentifier: "AddGuiGe") as! AddGuiGeCell cell.imgBtn.isUserInteractionEnabled = isAllEditing cell.tag = indexPath.section cell.actp.isHidden = true if goodsDesc.count > 0 { cell.actp.isHidden = false cell.actp.startAnimating() cell.webView.isHidden = false let headerString : String = "
" let goodsDescHmtl = "" + goodsDesc + "" cell.webView.loadHTMLString(goodsDescHmtl + headerString, baseURL: nil) } cell.imgBtn.setImage(UIImage(named: "tjxq"), for: .normal) cell.btmH.constant = 25 cell.delegate = self return cell } } func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { if indexPath.row == 4 { //MARK: - 查看库存详情 let vc = S_P_K_C_Detail_Vc() self.navigationController?.pushViewController(vc, animated: true) } } //MARK: - 底部广告软文跳转 && 编辑 @objc func editHtml(){ print("编辑软文") let vc = LMNoteViewController() vc.htmlStr = goodsDesc; vc.delegatedata = self self.navigationController?.pushViewController(vc, animated: true) } func AddGuiGeCellClick(cell: AddGuiGeCell) { if cell.tag == 5 { let vc = LMNoteViewController() vc.htmlStr = goodsDesc; vc.delegatedata = self self.navigationController?.pushViewController(vc, animated: true) }else{ print("新增规格") let vc = CreatNewSpecsViewController() vc.barTitle = "新增规格" vc.delegate = self vc.danWeiArr = generalInfoModel?.data!.unit vc.isYuShouSetting = isYuShouShangPin! vc.datasArr = guiGeArr vc.selectIdx = selectIdx self.navigationController?.pushViewController(vc, animated: true) } } //MARK: -- 点击按钮事件,跳转或者展示选择界面 func btnClick(content: String, cell: TitleAndBtnCell) { if cell.nameLbl.text == "商品类型" { if glSelectView == nil { let view = GLAlertSelectView(frame: self.view.bounds) view.tag = cell.tag view.isMultipleS = true view.isShangPinType = true view.titleLbl.text = "请选择商品类型" view.delegate = self view.dataArr = ["预售","现货","期货","团购"] if itemTypeArr?.count == 0 { for _ in view.dataArr { itemTypeArr?.append(99) } } view.selectArray = itemTypeArr view.tempArr = itemTypeArr self.view.addSubview(view) glSelectView = view } } if cell.nameLbl.text == "商品分类" { let vc = GoodsClassViewController() vc.delegate = self vc.selectModel = selectGoodsClassModel vc.dataModelArray = generalInfoModel?.data?.cats self.navigationController?.pushViewController(vc, animated: true) } if cell.nameLbl.text == "品牌" { let vc = PinPaiListViewController() vc.isSelectData = true vc.delegate = self vc.selectModel = selectPinPaiData vc.dataModelArray = generalInfoModel?.data?.brand self.navigationController?.pushViewController(vc, animated: true) } if cell.nameLbl.text == "产品产地" { createLocSelectView() } if cell.nameLbl.text == "商品状态" { let view = GLAlertSelectView(frame: self.view.bounds) view.tag = cell.tag view.titleLbl.text = "请选择商品状态" view.delegate = self if shangPinStatusArr != nil { var arr:Array? = [] for item in shangPinStatusArr! { arr?.append(item.gs_name!) } view.dataArr = arr! } if shangPinStatus != nil { view.selectNum = shangPinStatus! } self.view.addSubview(view) glSelectView = view } if cell.nameLbl.text == "运输方式" { let view = GLAlertSelectView(frame: self.view.bounds) view.tag = cell.tag view.titleLbl.text = "请选择运输方式" view.delegate = self view.dataArr = yunShuTypeArr if yunShuType != nil{ view.selectNum = yunShuType! } self.view.addSubview(view) glSelectView = view } if cell.nameLbl.text == "预设预付定金时间段" { print("定金时间段") let timeSelectV = ShowTimeSelectView(frame: self.view.window!.bounds) if dj_time_start != 0 && dj_time_end != 0{ var time = TimeInterval(exactly: dj_time_start!) timeSelectV.BeginDate = Date(timeIntervalSince1970: time!) time = TimeInterval(exactly: dj_time_end!) timeSelectV.EndDate = Date(timeIntervalSince1970: time!) } timeSelectV.beginDateByWork = Date() timeSelectV.titleLbl.text = "预设预付定金时间段" timeSelectV.delegate = self self.view.window?.addSubview(timeSelectV) isWeiTime = false } if cell.nameLbl.text == "预设预付尾款时间段" { print("预付尾款时") if dj_time_start == 0 { HUD.flash(.label("请先选择预付定金时间段"), delay: 1.2) return } let timeSelectV = ShowTimeSelectView(frame: self.view.window!.bounds) timeSelectV.titleLbl.text = "预设预付尾款时间段" timeSelectV.delegate = self if wk_time_start != 0 && wk_time_end != 0{ var time = TimeInterval(exactly: wk_time_start!) timeSelectV.BeginDate = Date(timeIntervalSince1970: time!) time = TimeInterval(exactly: wk_time_end!) timeSelectV.EndDate = Date(timeIntervalSince1970: time!) } let dijitime:TimeInterval = TimeInterval(exactly: (dj_time_start! + (24 * 60 * 60)))! let beginDate = Date(timeIntervalSince1970: dijitime) timeSelectV.beginDateByWork = beginDate self.view.window?.addSubview(timeSelectV) isWeiTime = true } } //MARK:--选择预售时间回调数据 var isWeiTime : Bool = false func showTimeSelectByData(timeStr: String, beginDate: Date, endginDate: Date) { let timeInterval:TimeInterval = beginDate.timeIntervalSince1970 let timeIntervalEnd:TimeInterval = endginDate.timeIntervalSince1970 if isWeiTime { ysszHolder.insert(timeStr, at: 2) ysszHolder.remove(at: 3) wk_time_start = Double(timeInterval) wk_time_end = Double(timeIntervalEnd) }else{ ysszHolder.insert(timeStr, at: 1) ysszHolder.remove(at: 2) dj_time_start = Double(timeInterval) dj_time_end = Double(timeIntervalEnd) } listTbv.reloadData() } //MARK:---选择商品分类返回数据 var selectGoodsClassModel = GoodsClassModel() func blackGoodsClass(sender: GoodsClassModel) { print("选择商品分类返回数据=\(sender)") selectGoodsClassModel = sender tishixxArr.insert(sender.cat_name!, at: 2) tishixxArr.remove(at: 3) listTbv.reloadData() } //MARK:--选择品牌返回的数据 var selectPinPaiData:GeneralInfoBrandModel? = nil func blackSelectPinPaiData(sender: GeneralInfoBrandModel) { print("选择品牌返回的数据=\(sender)") selectPinPaiData = sender pinPai = selectPinPaiData!.brand_name! pinPai_id = selectPinPaiData!.brand_id! tishixxArr.insert(sender.brand_name!, at: 3) tishixxArr.remove(at: 4) listTbv.reloadData() } //MARK:--图片选择处理 func AddImgCellBtnClick(cell: AddImgCell) { if cell.addBtn.tag == 0 {//仅一张 _ = self.presentHGImagePicker(maxSelected:1) { (assets) in //结果处理 print("共选择了\(assets.count)张图片,分别如下:") let option = PHImageRequestOptions() option.isSynchronous = true option.isNetworkAccessAllowed = true for asset in assets { PHImageManager.default().requestImage(for: asset, targetSize: PHImageManagerMaximumSize , contentMode: .default , options: option, resultHandler: { (image, _: [AnyHashable : Any]?) in // print("上传图片==\(image)") // self.singleImgArr.append(image!) self.uploadImg(imge: image!, isOriginal: true, tag: 0) }) } self.listTbv.reloadData() } }else{//可多张 let num = 5 - maxFiveImgsArr.count _ = self.presentHGImagePicker(maxSelected:num) { (assets) in //结果处理 print("共选择了\(assets.count)张图片,分别如下:") let option = PHImageRequestOptions() option.isSynchronous = true option.isNetworkAccessAllowed = true for asset in assets { PHImageManager.default().requestImage(for: asset, targetSize: PHImageManagerMaximumSize , contentMode: .default , options: option, resultHandler: { (image, _: [AnyHashable : Any]?) in // print("上传图片==\(image)") // self.maxFiveImgsArr.append(image!) // let index = Dollar.indexOf(self.maxFiveImgsArr, value: image!) self.maxFiveImgsArr.append("insert") self.uploadImg(imge: image!, isOriginal: false, tag: self.maxFiveImgsArr.count-1) }) } self.listTbv.reloadData() } } } //MARK: - 修改图片 func ChangeCellBtnClick(sender: UIButton, cell: AddImgCell) { print(sender.tag) if cell.addBtn.tag == 0 {//仅一张 _ = self.presentHGImagePicker(maxSelected:1) { (assets) in //结果处理 print("共选择了\(assets.count)张图片,分别如下:") let option = PHImageRequestOptions() option.isSynchronous = true option.isNetworkAccessAllowed = true for asset in assets { PHImageManager.default().requestImage(for: asset, targetSize: PHImageManagerMaximumSize , contentMode: .default , options: option, resultHandler: { (image, _: [AnyHashable : Any]?) in // print("上传图片==\(image)") self.singleImgArr.removeAll() self.uploadImg(imge: image!, isOriginal: true, tag: 0) }) } self.listTbv.reloadData() } }else{//可多张 _ = self.presentHGImagePicker(maxSelected:1) { (assets) in //结果处理 print("共选择了\(assets.count)张图片,分别如下:") let option = PHImageRequestOptions() option.isSynchronous = true option.isNetworkAccessAllowed = true for asset in assets { PHImageManager.default().requestImage(for: asset, targetSize: PHImageManagerMaximumSize , contentMode: .default , options: option, resultHandler: { (image, _: [AnyHashable : Any]?) in // print("上传图片==\(image)") self.uploadImg(imge: image!, isOriginal: false, tag: sender.tag) }) } self.listTbv.reloadData() } } } //MARK:--图片上传功能 var original_img:String? = "" //商品封面图 var goods_banner:Array? = ["","","","",""] //商品副图,多张,最多5张,使用一维数组转json格式 func uploadImg (imge:UIImage,isOriginal:Bool,tag:Int){ let dateStr = getTimeDayNowByUpdate() var path = "" if isOriginal { path = "goods/" + dateStr }else{ path = "banner/" + dateStr } let upLoadImg = imge as! UIImage HUD.show(.progress) saveFile(image: upLoadImg, ["user_token":UserToken as Any,"path":path as Any], success: { (data) in let dataM = data as! SaveFileModel if dataM.code == 200 { print("图片上传成功\(dataM.data?.url)") if isOriginal { self.original_img = dataM.data?.url! self.singleImgArr.removeAll() self.singleImgArr.append(self.original_img!) }else{ self.goods_banner?.insert((dataM.data?.url!)!, at: tag) self.goods_banner?.remove(at: tag + 1) self.maxFiveImgsArr.removeAll() print("source3 === ",self.goods_banner) self.goods_banner?.forEach({ (str) in if str.count > 0 { self.maxFiveImgsArr.append(str) } }) } self.listTbv.reloadData() HUD.hide() } }) { (error) in print("图片上传失败\(error)") } } //MARK: - 删除图片处理 func DelImgCellBtnClick(sender:UIButton, cell: AddImgCell) { print("sender.tag == ",sender.tag) if cell.isSingle == true { singleImgArr.remove(at:sender.tag) self.original_img = "" listTbv.reloadData() }else{ maxFiveImgsArr.remove(at:sender.tag) print("删除前") print(self.goods_banner) self.goods_banner?.remove(at: sender.tag) self.goods_banner?.append("") print("删除后") print(self.goods_banner) listTbv.reloadData() } } //MARK: - GLAlertView(单选)下的页面 func GLAlertSelectViewClick(selectNum: Int, view: GLAlertSelectView) { switch view.titleLbl.text { case "请选择商品状态": shangPinStatus = selectNum let item = shangPinStatusArr![selectNum] print(item.gs_name!) tishixxArr1.insert(item.gs_name!, at: view.tag) tishixxArr1.remove(at: view.tag+1) break case "请选择运输方式": yunShuType = selectNum tishixxArr1.insert(yunShuTypeArr[selectNum], at: view.tag) tishixxArr1.remove(at: view.tag+1) break case "请选择国家": // countrySelect = selectNum break default: break } glSelectView?.removeFromSuperview() glSelectView = nil listTbv.reloadData() } //MARK: - GLAlertView(多选)下的页面 func GLAlertMoreSelectViewClick(sender: Array, view:UIView) { itemTypeArr = sender let contentArr = ["预售","现货","期货","团购"] let titles = NSMutableArray() titles.removeAllObjects() for num in itemTypeArr! { if num != 99 && num != 5{ titles.add(contentArr[num]) } } if titles.componentsJoined(by: ",").contains("预售") { isYuShouShangPin = true }else{ isYuShouShangPin = false } print("isYuShouShangPin == ",isYuShouShangPin) tishixxArr.insert(titles.componentsJoined(by: ","), at: view.tag) tishixxArr.remove(at: view.tag+1) if itemTypeArr == [99,99,99,99] { tishixxArr.insert("请选择商品类型", at: view.tag) tishixxArr.remove(at: view.tag+1) } glSelectView?.removeFromSuperview() glSelectView = nil listTbv.reloadData() } //MARK: - titleAndTFdelegate func textFieldContent(content: String, cell: TitleAndTFCell) { switch cell.nameLbl.text { case "商品名称": itemName = content break case "起卖数量": qiMaiShuLiang = content break case "关键字": keyWord = content break case "物流费用": wuLiuPrice = content break default: break } } //MARK: - 编辑规格 func ShangPinGguiGeCellEditAction(cell: ShangPinGguiGeCell) { let vc = CreatNewSpecsViewController() if isAllEditing{ vc.barTitle = "编辑规格" }else{ vc.barTitle = "查看规格" } vc.datasArr = guiGeArr vc.danWeiArr = generalInfoModel?.data?.unit! let dataDict:GuiGeModel! if selectIdx?.item != nil { dataDict = guiGeArr[selectIdx!.item] }else{ dataDict = guiGeArr.first } vc.price = dataDict.price vc.guiGe = dataDict.guiGe vc.weight = dataDict.weight vc.wenDu = dataDict.wenDu vc.danWei = dataDict.danWei vc.isJieTiOpen = dataDict.isJieTiOpen vc.isYuShouSetting = isYuShouShangPin! vc.isYsJieTiOpen = dataDict.isYsJieTiOpen vc.yuShouPrice = dataDict.yuShouPrice vc.specalArr = dataDict.specalArr vc.jieTiArr = dataDict.jieTiArr vc.originalPrice = dataDict.originalPrice vc.originNumberSku = dataDict.originNumberSku // vc.isOpenYSSetting = dataDict.isOpenYSSetting vc.selectIdx = selectIdx vc.itemDanWeiSelect = dataDict.itemDanWeiSelect if dataDict.tempSelect != nil { vc.tempSelect = dataDict.tempSelect! } vc.delegate = self vc.DJBiLi = dataDict.DJBiLi vc.ysKuCun = dataDict.ysKuCun self.navigationController?.pushViewController(vc, animated: true) } // //MARK: - 删除规格 func CreatNewSpecsViewControllerDeleteAction(datas: Array,selectIdx:IndexPath) { guiGeArr = datas self.selectIdx = selectIdx listTbv.reloadData() } //MARK: - 新增规格 @objc func addGuiGe(sender:UIView){ print("新增规格") let vc = CreatNewSpecsViewController() vc.barTitle = "新增规格" vc.delegate = self vc.danWeiArr = generalInfoModel?.data!.unit vc.isYuShouSetting = isYuShouShangPin! vc.datasArr = guiGeArr vc.selectIdx = selectIdx self.navigationController?.pushViewController(vc, animated: true) } //MARK: - 新增、编辑规格数据返回 func CreatNewSpecsViewControllerSaveAction(datas: Array,selectIdx:IndexPath) { guiGeArr = datas self.selectIdx = selectIdx listTbv.reloadData() } //MARK: - COLLECTIONVIEW DELEGATE func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat { return 0 } func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return guiGeArr.count } func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "ItemCell", for: indexPath) as! ItemCell cell.tag = indexPath.row cell.nameLbl.text = "规格" + "\(indexPath.item+1)" if indexPath == selectIdx { cell.nameLbl.textColor = UIColor(named: "蓝色字体颜色") cell.lineView.isHidden = false }else{ cell.nameLbl.textColor = UIColor(named: "标题字颜色") cell.lineView.isHidden = true } return cell } func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { selectIdx = indexPath //刷新cell collectionView.reloadData() listTbv.reloadRows(at: [IndexPath(row: 0, section: 2)], with:.none) let item = collectionView.cellForItem(at: indexPath) collectionView.scrollRectToVisible(item!.frame, animated: true) } //MARK: - switchClick func switchClick(content: UISwitch, cell: TitleAndSwitchCell) { switch cell.namelbl.text { case "是否清真": shiFouQZ = content.isOn break case "是否询价": shiFouXJ = content.isOn break case "用户付款是否需要审核": shiFouSH = content.isOn break default: break } } func numberOfSections(in tableView: UITableView) -> Int { return 6 } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { switch section { case 0: return 8 case 1:return 2 case 2:return 1 case 3: if isYuShouShangPin == false { return 0 } return 4 case 4:return 5 default:return 1 } } //MARK: - tableview footer func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? { let view = UIView(frame: CGRect(x: 0, y: 0, width: fullScreenWidth, height: 10)) view.backgroundColor = UIColor(named: "app底色") return view } func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat { if section == 3 { if isYuShouShangPin == false { return 0.001 } } return 10 } //MARK: - tableview header func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { if section == 3 { if isYuShouShangPin == false { return UIView() } } let view = UIView(frame: CGRect(x: 0, y: 0, width: fullScreenWidth, height: 39)) let lbl = UILabel(frame: CGRect(x: 15, y: 15, width: fullScreenWidth, height: 21)) lbl.text = titleArr[section] lbl.textColor = UIColor(named: "标题字颜色") lbl.font = UIFont.boldSystemFont(ofSize: 15) view.addSubview(lbl) if section == 5 && goodsDesc.count > 0 && isAllEditing{ let btn = UIButton() btn.setTitle("编辑", for: .normal) btn.isUserInteractionEnabled = isAllEditing btn.titleLabel?.font = UIFont.systemFont(ofSize: 13) btn.setTitleColor(UIColor(named: "蓝色字体颜色"), for: .normal) view.addSubview(btn) btn.sizeToFit() btn.snp.makeConstraints { (make) in make.centerY.equalTo(lbl.snp_centerY) make.right.equalTo(-15) make.height.equalTo(btn.frame.size.height) make.width.equalTo(btn.frame.size.width) } btn.addTarget(self, action: #selector(editHtml), for: .touchUpInside) } if section == 2 && guiGeArr.count > 0{ if isAllEditing { let btn = UIButton() btn.setTitle(" 新增", for: .normal) btn.titleLabel?.font = UIFont.systemFont(ofSize: 13) btn.setTitleColor(UIColor(named: "蓝色字体颜色"), for: .normal) btn.setImage(UIImage(named: "jiahaoXG"), for: .normal) view.addSubview(btn) btn.sizeToFit() btn.snp.makeConstraints { (make) in make.centerY.equalTo(lbl.snp_centerY) make.right.equalTo(-15) make.height.equalTo(btn.frame.size.height) make.width.equalTo(btn.frame.size.width) } let btn2 = UIButton() view.addSubview(btn2) btn2.snp.makeConstraints { (make) in make.top.right.bottom.equalTo(0) make.width.equalTo(80) } btn2.addTarget(self, action: #selector(addGuiGe(sender:)), for: .touchUpInside) print("guigear == ",guiGeArr.count) } if guiGeArr.count > 1 { view.frame = CGRect(x: 0, y: 0, width: fullScreenWidth, height: 80) let collectionView = UICollectionView(frame: CGRect(x: 0, y: 0, width: 0, height: 0), collectionViewLayout: layout) collectionView.backgroundColor = UIColor.white collectionView.delegate = self collectionView.dataSource = self view.addSubview(collectionView) collectionView.snp.makeConstraints { (make) in make.bottom.left.right.equalTo(0) make.height.equalTo(41) } collectionView.showsHorizontalScrollIndicator = false collectionView.isPagingEnabled = true if guiGeArr.count < 5 { layout.itemSize = CGSize(width: Int(fullScreenWidth)/guiGeArr.count, height: 41) }else{ layout.itemSize = CGSize(width: fullScreenWidth/4.5, height: 41) } layout.scrollDirection = .horizontal collectionView.collectionViewLayout = layout collectionView.register(UINib(nibName: "ItemCell", bundle: nil), forCellWithReuseIdentifier: "ItemCell") if guiGeArr.count > 0 { collectionView.layoutIfNeeded() collectionView.scrollToItem(at: selectIdx!, at: .top, animated: false) } } } return view } func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { if section == 3 { if isYuShouShangPin == false { return 0.001 } } if section == 2 { if guiGeArr.count > 1 { return 80 } } return 39 } func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { switch indexPath.section { case 0: return 49 case 1:return 148.5 case 2: if guiGeArr.count > 0 { return 199 } return 123.5 case 3: if isYuShouShangPin == false { return 0.01 }else{ return 49 } case 4:return 49 default: if goodsDesc.count > 0 {//有内容 return webH }else{//无内容 if isAllEditing == false {//非编辑 return 0.001 }else{//编辑 return 98 } } } } func YuShouWeiKuanFaHuoCellString(str: String) { faHuoTime = str } override func backAction() { if btmBtnBGView.subviews.count == 1{ let alertView = GeliAlertView(frame: self.view.window!.bounds) alertView.delegate = self; alertView.tishiLbl.text = "" alertView.titileLbl.text = "编辑尚未保存,是否离开?" alertView.rightBtn.setAttributedTitle(NSAttributedString(string: "确认"), for: .normal) alertView.rightBtn.tag = 10086 self.view.window?.addSubview(alertView) }else{ self.navigationController?.popViewController(animated: true) } } //MARK:--处理规格数据 var specifications = "" var shop_price: Float = 0.0 var goods_unit = "" var sku_info = "" // var is_del = 0 func getUpSkuInfoEditByData(dataArr:Array) { var price: Float = 0.0 var isgetP :Bool = false var model : GuiGeModel? = nil var skuArr:Array = [] for i in 0 ..< dataArr.count{ let item = dataArr[i] var pData = "" if item.price.contains(",") { let pArr = item.price.components(separatedBy: ",") pData = pArr.joined(separator: "") // let arr = item.price.components(separatedBy: ",") // pData = arr.joined(separator: "") }else{ pData = item.price } if isPurnNumber(str: pData) { if isgetP { let peiceP = Float(pData)! //第n个售价(n > 1) if peiceP < price { price = peiceP model = item } }else { price = Float(pData)! //第一个售价 model = item isgetP = true } } var oData = "" if item.originalPrice.contains(","){ let arr = item.originalPrice.components(separatedBy: ",") oData = arr.joined(separator: "") }else{ oData = item.originalPrice } var skuOData = "" if item.originNumberSku.contains(","){ let arr = item.originNumberSku.components(separatedBy: ",") skuOData = arr.joined(separator: "") }else{ skuOData = item.originNumberSku } // //普通阶梯价 var is_tiered = 0 var tiered_pri:Dictionary = [:] if item.isJieTiOpen { is_tiered = 1 item.jieTiArr.forEach { (obj) in let str = obj as! String let arr = str.components(separatedBy: "_") let priceStr = arr[0] let coutStr = arr[1] if isPurnNumber(str: priceStr) { let specaP = Float(priceStr)! if specaP < price { price = specaP model = item } } tiered_pri.updateValue(priceStr, forKey: coutStr) } } //预售价 var is_adsale_tiered = 0 var adsale_tiered_pri:Dictionary = [:] if item.isOpenYSSetting { if isPurnNumber(str: item.yuShouPrice) { let yushoup = Float(item.yuShouPrice)! if yushoup < price { price = yushoup model = item } } } if item.isYsJieTiOpen { is_adsale_tiered = 1 //每一个预售阶梯价 item.specalArr.forEach { (obj) in let str = obj as! String let arr = str.components(separatedBy: "_") let priceStr = arr[0] let coutStr = arr[1] if isPurnNumber(str: priceStr) { let specaP = Float(priceStr)! if specaP < price { price = specaP model = item } adsale_tiered_pri.updateValue(priceStr, forKey: coutStr) } } } let pack_attr = ["l":"0","w":"0","h":"0","wg":item.weight,"v":"0"] let packAttrStr = dictChangeString(sender: pack_attr) var is_open_adsale = 0 var adsale_pri = "" var adsale_inventory = "0" var pct = "" if item.isOpenYSSetting { is_open_adsale = 1 adsale_pri = item.yuShouPrice if item.ysKuCun.count != 0{ adsale_inventory = item.ysKuCun } pct = item.DJBiLi } var sku = ["sku_sn":"", "sku_id":item.sku_id, "goods_id":goods_id, "is_del":0, "spec_id":"1", "attr":item.guiGe, "pack_attr":packAttrStr, "refrigerate":item.wenDu, "unit":item.danWei, "price":pData, "original_price":oData, "origin_number_sku":skuOData, "is_tiered":is_tiered, "is_open_adsale":is_open_adsale, "adsale_pri":adsale_pri, "adsale_inventory":adsale_inventory, "pct":pct, "is_adsale_tiered":is_adsale_tiered] as [String : Any] if tiered_pri.keys.count > 0{ let tieredPriStr = dictChangeString(sender: tiered_pri) sku.updateValue(tieredPriStr, forKey: "tiered_pri") }else{ sku.updateValue("", forKey: "tiered_pri") } if adsale_tiered_pri.keys.count > 0 { let adsaletieredPriStr = dictChangeString(sender: adsale_tiered_pri) sku.updateValue(adsaletieredPriStr, forKey: "adsale_tiered_pri") }else{ sku.updateValue("", forKey: "adsale_tiered_pri") } //修改2 新增3 skuArr.append(sku) } goodsDetailModel?.data?.sku_res?.forEach({ (skuModel) in //判断最后的数据源,如果没有源数据了(即为被删除了) var isDel = true dataArr.forEach { (guiModel) in if guiModel.sku_id == skuModel.sku_id { isDel = false } } if isDel { let arr = skuModel.spec_str?.components(separatedBy: ":") let strattr = (arr?.last)!//规格 let sku = ["sku_sn":"", "sku_id":skuModel.sku_id as Any, "goods_id":goods_id as Any, "is_del":1, "spec_id":"1", "attr":strattr as Any, "pack_attr":skuModel.pack_attr as Any, "refrigerate":skuModel.refrigerate as Any, "unit":skuModel.unit as Any, "price":skuModel.price as Any, "is_tiered":skuModel.is_tiered as Any, "is_open_adsale":skuModel.is_open_adsale as Any, "adsale_pri":skuModel.adsale_pri as Any, "adsale_inventory":skuModel.adsale_inventory as Any, "pct":skuModel.pct as Any, "tiered_pri":skuModel.tiered_pri as Any, "adsale_tiered_pri":skuModel.adsale_tiered_pri as Any, "is_adsale_tiered":skuModel.is_adsale_tiered as Any] as [String : Any] //del 1 skuArr.append(sku) } }) //修改2 新增3 del 1 if skuArr.count > 0 { sku_info = dataChangeString(sender: skuArr) } shop_price = price if model != nil { specifications = model!.guiGe goods_unit = model!.danWei } } func getNewPicDictsArray()->String{ print("源数据") var tempArr:Array = [] var tempOldArr:Array = [] goodsDetailModel!.data!.banner_res!.forEach { (model) in tempOldArr.append(model) } goods_banner?.forEach({ (str) in tempArr.append(str) }) var data1:Array> = [] tempArr.forEach({ (str) in tempOldArr.forEach({ (model) in if str == model.img_original! { var data:Dictionary = [:] data.updateValue(goods_id, forKey: "goods_id") data.updateValue(model.img_id, forKey: "img_id") data.updateValue(str, forKey: "banner_img") data.updateValue(1, forKey: "status") data1.append(data) } }) }) data1.forEach { (dict) in tempArr.forEach({ (str) in let dic = dict let str1 = dic["banner_img"] as! String if str == str1{ let idx = tempArr.index(of: str) tempArr.remove(at: idx!) } }) } var data2:Array> = [] for item in tempArr { if item.count > 0 { var data:Dictionary = [:] data.updateValue(goods_id, forKey: "goods_id") data.updateValue(0, forKey: "img_id") data.updateValue(item, forKey: "banner_img") data.updateValue(2, forKey: "status") data2.append(data) } } data1.forEach { (dict) in tempOldArr.forEach({ (model) in let dic = dict let str1 = dic["banner_img"] as! String if model.img_original == str1{ let idx = tempOldArr.firstIndex(where: { (data) -> Bool in return (data.img_original == model.img_original) }) tempOldArr.remove(at: idx!) } }) } var data3:Array> = [] for item in tempOldArr { var data:Dictionary = [:] data.updateValue(goods_id, forKey: "goods_id") data.updateValue(item.img_id, forKey: "img_id") data.updateValue(item.img_original!, forKey: "banner_img") data.updateValue(3, forKey: "status") data3.append(data) } var data4 = data3 + data2 + data1 return dataChangeString(sender:data4) } var isWebH:Bool = false func AddGuiGeCellWebViewHeight(height: CGFloat) { webH = height if !isWebH { listTbv.reloadData() isWebH = true } } var goodsDesc = "" func getHTMLByVc(_ model: String!) { goodsDesc = model isWebH = false listTbv.reloadData() } //MARK: - 地区选择 var btmView:UIView? var bgBtn:UIButton? //设置选择框的列数为3列,继承于UIPickerViewDataSource协议 func numberOfComponents(in pickerView: UIPickerView) -> Int { return 2 } //设置选择框的行数,继承于UIPickerViewDataSource协议 func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { if component == 0 { return self.addressArray.count } else { let province = self.addressArray[provinceIndex] as! Dictionary return (province["city_list"]! as AnyObject).count } } //设置选择框各选项的内容,继承于UIPickerViewDelegate协议 func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { if component == 0 { let rowDic = self.addressArray[row] as! Dictionary return rowDic["area_name"] as? String }else { let province = self.addressArray[provinceIndex] as! Dictionary let city = (province["city_list"] as! NSArray)[row] as! [String: AnyObject] return city["area_name"] as? String } } //选中项改变事件(将在滑动停止后触发) func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { //根据列、行索引判断需要改变数据的区域 switch (component) { case 0: provinceIndex = row; pickerView.reloadComponent(1); pickerView.selectRow(cityIndex, inComponent: 1, animated: false) case 1: cityIndex = row; default: break; } } func pickerView(_ pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat { return 50 } //自定义UIPickerView func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView { let genderLbl = UILabel() genderLbl.textAlignment = .center genderLbl.font = UIFont.systemFont(ofSize: 15) genderLbl.textColor = UIColor.init(named: "标题字颜色") if component == 0 { let rowDic = self.addressArray[row] as! Dictionary genderLbl.text = rowDic["area_name"] as? String }else { let province = self.addressArray[provinceIndex] as! Dictionary let city = (province["city_list"] as! NSArray)[row] as! [String: AnyObject] genderLbl.text = city["area_name"] as? String } return genderLbl } //选择器 var pickerView:UIPickerView! //所以地址数据集合 var addressArray:Array = [] //选择的省索引 var provinceIndex = 0 //选择的市索引 var cityIndex = 0 var proDict:Dictionary = Dictionary() var cityDict:Dictionary = Dictionary() func get_location_id(){ let proDict = addressArray[provinceIndex] as! Dictionary var cityDict:Dictionary = Dictionary() var areaDict:Dictionary = Dictionary() cityDict["area_id"] = "" areaDict["area_id"] = "" if (proDict["city_list"] as! NSArray).count > 0 { cityDict = (proDict["city_list"] as! NSArray)[cityIndex] as! [String: AnyObject] } } func getIndex(){ let path = Bundle.main.path(forResource: "address_new", ofType: "json") let url = URL(fileURLWithPath: path!) // 带throws的方法需要抛异常 do { let data = try Data(contentsOf: url) let jsonData = JSON(data) print("地址文件数据",jsonData["data"]) self.addressArray = jsonData["data"].arrayObject! // if navTitle == "编辑地址" { for i in 0 ..< addressArray.count { let item = addressArray[i] as! Dictionary if item["area_id"] as! Int == provinceIndex { let citys = item["city_list"] as! Array> if citys.count == 0 { provinceIndex = i } for j in 0 ..< citys.count { let cItem = citys[j] if cItem["area_id"] as! Int == cityIndex { let districts = cItem["district_list"] as! Array> if districts.count == 0 { cityIndex = j } } } } proDict = addressArray[provinceIndex] as! Dictionary // } } } catch let error as Error? { print("读取本地数据出现错误!",error as Any) } } func showAreaSelect(view:UIView){ //创建选择器 pickerView=UIPickerView() //将dataSource设置成自己 pickerView.dataSource=self //将delegate设置成自己 pickerView.delegate=self view.addSubview(pickerView) pickerView.snp.makeConstraints { (make) in make.top.equalTo(30) make.left.right.bottom.equalTo(0) } pickerView.selectRow(provinceIndex, inComponent: 0, animated: false) pickerView(pickerView, didSelectRow: provinceIndex, inComponent: 0) pickerView.selectRow(cityIndex, inComponent: 1, animated: false) pickerView(pickerView, didSelectRow: cityIndex, inComponent: 1) } var tempProvince_select = -1//临时省id var tempCity_select = -1//临时市id var tempArea_select = -1//临时区id var dzStr = "" @objc func closeAction(sender:UIButton){ bgBtn?.removeFromSuperview() btmView?.subviews.forEach({ (view) in view.removeFromSuperview() }) btmView?.removeFromSuperview() btmView = nil bgBtn = nil } @objc func adrSelectFinish(sender:UIButton){ var proName = "" var cityName = "" cityDict["area_id"] = "" cityDict["area_name"] = "" proName = proDict["area_name"] as! String if (proDict["city_list"] as! NSArray).count > 0 { cityDict = (proDict["city_list"] as! NSArray)[cityIndex] as! [String: AnyObject] cityName = cityDict["area_name"] as! String } var selectAdr = proName if cityName.count > 0 { selectAdr = proName + "-" + cityName } dzStr = "中国-" + selectAdr tishixxArr1.insert(dzStr, at: 2) tishixxArr1.remove(at: 3) bgBtn?.removeFromSuperview() btmView?.subviews.forEach({ (view) in view.removeFromSuperview() }) btmView?.removeFromSuperview() btmView = nil bgBtn = nil listTbv.reloadData() } func createLocSelectView(){ if bgBtn == nil { let btn = UIButton() self.view.addSubview(btn) btn.backgroundColor = UIColor.black btn.alpha = 0.4 btn.addTarget(self, action: #selector(closeAction(sender:)), for: .touchUpInside) btn.snp.makeConstraints { (make) in make.top.right.bottom.left.equalTo(0) } bgBtn = btn } if btmView == nil { let view = UIView() view.backgroundColor = UIColor.white btmView = view self.view.addSubview(btmView!) btmView!.snp.makeConstraints { (make) in make.left.bottom.right.equalTo(0) make.height.equalTo(240) } showAreaSelect(view:btmView!) let rightBtn = UIButton() rightBtn.setTitle("确定", for: .normal) rightBtn.setTitleColor(UIColor(named: "蓝色字体颜色"), for: .normal) rightBtn.titleLabel?.font = UIFont.systemFont(ofSize: 15) rightBtn.addTarget(self, action: #selector(adrSelectFinish(sender:)), for: .touchUpInside) btmView?.addSubview(rightBtn) rightBtn.snp.makeConstraints { (make) in make.right.equalTo(-15) make.top.equalTo(10) make.height.equalTo(30) make.width.equalTo(50) } let leftBtn = UIButton() leftBtn.setTitle("取消", for: .normal) leftBtn.setTitleColor(UIColor(named: "多选按钮字体颜色"), for: .normal) leftBtn.titleLabel?.font = UIFont.systemFont(ofSize: 15) leftBtn.addTarget(self, action: #selector(closeAction(sender:)), for: .touchUpInside) btmView?.addSubview(leftBtn) leftBtn.snp.makeConstraints { (make) in make.left.equalTo(15) make.top.equalTo(10) make.height.equalTo(30) make.width.equalTo(50) } } } }