ContactPersonInfoV2ViewController.swift 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290
  1. //
  2. // ContactPersonInfoV2ViewController.swift
  3. // O2Platform
  4. //
  5. // Created by 程剑 on 2017/7/11.
  6. // Copyright © 2017年 zoneland. All rights reserved.
  7. //
  8. import UIKit
  9. import Alamofire
  10. import AlamofireImage
  11. import AlamofireObjectMapper
  12. import SwiftyJSON
  13. import ObjectMapper
  14. import Eureka
  15. import CocoaLumberjack
  16. import O2OA_Auth_SDK
  17. class ContactPersonInfoV2ViewController: UITableViewController {
  18. @IBOutlet weak var beijingImg: UIImageView!
  19. @IBOutlet weak var personImg: UIImageView!
  20. @IBOutlet weak var personName: UILabel!
  21. @IBOutlet weak var personQQ: UILabel!
  22. @IBOutlet weak var personCollect: UIButton!
  23. @IBOutlet weak var personGirl: UIButton!
  24. @IBOutlet weak var personMan: UIButton!
  25. @IBOutlet weak var personCollectLab: UILabel!
  26. var isCollect = false
  27. @IBAction func collectPerson(_ sender: UIButton) {
  28. let me = O2AuthSDK.shared.myInfo()
  29. if personCollect.isSelected == true {
  30. //删除
  31. DBManager.shared.deleteContactData(contact!, (me?.id)!)
  32. }else{
  33. //增加
  34. DBManager.shared.insertContactData(contact!, (me?.id)!)
  35. }
  36. personCollect.isSelected = !personCollect.isSelected
  37. }
  38. let nameLabs = ["企业信息","姓名","员工号","唯一编码","联系电话","电子邮件","部门"]
  39. var myPersonURL:String?
  40. var identity:IdentityV2? {
  41. didSet {
  42. self.myPersonURL = AppDelegate.o2Collect.generateURLWithAppContextKey(ContactContext.contactsContextKeyV2, query: ContactContext.personInfoByNameQuery, parameter: ["##name##":identity!.person! as AnyObject])
  43. }
  44. }
  45. var person:PersonV2?{
  46. didSet {
  47. self.myPersonURL = AppDelegate.o2Collect.generateURLWithAppContextKey(ContactContext.contactsContextKeyV2, query: ContactContext.personInfoByNameQuery, parameter: ["##name##":person!.id! as AnyObject])
  48. }
  49. }
  50. var isLoadPerson:Bool = true
  51. var contact:PersonV2? {
  52. didSet {
  53. isLoadPerson = false
  54. }
  55. }
  56. override func viewDidLoad() {
  57. super.viewDidLoad()
  58. self.beijingImg.theme_image = ThemeImagePicker(keyPath: "Icon.pic_beijing1")
  59. self.personImg.layer.cornerRadius = self.personImg.frame.size.width / 2
  60. self.personImg.clipsToBounds = true
  61. loadPersonInfo(nil)
  62. let startChatButton = OOBaseUIButton(x: (kScreenW - 260)/2, y: 5, w: 260, h: 30, target: self, action: #selector(_startChat))
  63. startChatButton.setTitle("发起聊天", for: .normal)
  64. let btnContainerView = UIView(frame: CGRect(x: 0, y: 0, width: kScreenW, height: 40))
  65. btnContainerView.addSubview(startChatButton)
  66. tableView.tableFooterView = btnContainerView
  67. }
  68. override func viewWillAppear(_ animated: Bool) {
  69. super.viewWillAppear(animated)
  70. //去掉nav底部分割线
  71. self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
  72. self.navigationController?.navigationBar.shadowImage = UIImage()
  73. }
  74. override func didReceiveMemoryWarning() {
  75. super.didReceiveMemoryWarning()
  76. // Dispose of any resources that can be recreated.
  77. }
  78. @objc private func _startChat() {
  79. MBProgressHUD_JChat.showMessage(message: "创建中...", toView: view)
  80. var username = ""
  81. if self.person != nil {
  82. username = self.person?.id ?? ""
  83. }else if self.identity != nil {
  84. username = self.identity?.person ?? ""
  85. }
  86. if username == "" {
  87. return
  88. }
  89. JMSGConversation.createSingleConversation(withUsername: username) { (result, error) in
  90. MBProgressHUD_JChat.hide(forView: self.view, animated: true)
  91. if error == nil {
  92. let conv = result as! JMSGConversation
  93. let vc = JCChatViewController(conversation: conv)
  94. NotificationCenter.default.post(name: NSNotification.Name(rawValue: kUpdateConversation), object: nil, userInfo: nil)
  95. self.navigationController?.pushViewController(vc, animated: true)
  96. }else{
  97. DDLogError(error.debugDescription)
  98. MBProgressHUD_JChat.show(text: "创建会话失败,请重试", view: self.view)
  99. }
  100. }
  101. }
  102. override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  103. // #warning Incomplete implementation, return the number of rows
  104. return nameLabs.count
  105. }
  106. override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  107. let cell = tableView.dequeueReusableCell(withIdentifier: "personInfoCell", for: indexPath) as! ContactPersonInfoCell
  108. cell.nameLab.text = self.nameLabs[indexPath.row]
  109. switch self.nameLabs[indexPath.row] {
  110. case "企业信息":
  111. cell.nameLab.font = UIFont.systemFont(ofSize: 17)
  112. cell.nameLab.textColor = UIColor.black
  113. cell.valueLab.isHidden = true
  114. cell.eventBut.isHidden = true
  115. case "姓名":
  116. cell.valueLab.text = self.contact?.name
  117. cell.eventBut.isHidden = true
  118. case "员工号":
  119. cell.valueLab.text = self.contact?.employee
  120. cell.eventBut.isHidden = true
  121. case "唯一编码":
  122. cell.valueLab.text = self.contact?.unique
  123. cell.eventBut.isHidden = true
  124. case "联系电话":
  125. cell.valueLab.text = self.contact?.mobile
  126. cell.eventBut.addTarget(self, action: #selector(self.call), for: UIControl.Event.touchUpInside)
  127. case "电子邮件":
  128. cell.valueLab.text = self.contact?.mail
  129. cell.eventBut.theme_setImage(ThemeImagePicker(keyPath:"Icon.icon_email"), forState: .normal)
  130. cell.eventBut.addTarget(self, action: #selector(self.sendMail), for: UIControl.Event.touchUpInside)
  131. case "部门":
  132. var unitName = ""
  133. if let idenList = self.contact?.woIdentityList {
  134. for iden in idenList {
  135. if let unit = iden.woUnit {
  136. if unitName != "" {
  137. unitName.append(";")
  138. }
  139. unitName.append(unit.name ?? "")
  140. }
  141. }
  142. }
  143. cell.valueLab.text = unitName
  144. cell.eventBut.isHidden = true
  145. default:
  146. break
  147. }
  148. return cell
  149. }
  150. override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
  151. switch self.nameLabs[indexPath.row] {
  152. case "联系电话":
  153. self.call()
  154. case "电子邮件":
  155. self.sendMail()
  156. default:
  157. break
  158. }
  159. self.tableView.deselectRow(at: indexPath, animated: true)
  160. }
  161. @objc func sendMail() {
  162. if let mail = self.contact?.mail, mail != "" {
  163. let alertController = UIAlertController(title: "", message: nil,preferredStyle: .actionSheet)
  164. let mailAction = UIAlertAction(title: "发邮件", style: .default, handler: { _ in
  165. let mailURL = URL(string: "mailto://\(mail)")
  166. if UIApplication.shared.canOpenURL(mailURL!) {
  167. UIApplication.shared.openURL(mailURL!)
  168. }else{
  169. self.showError(title: "发邮件失败")
  170. }
  171. })
  172. let copyAction = UIAlertAction(title: "复制", style: .default, handler: { _ in
  173. UIPasteboard.general.string = mail
  174. self.showSuccess(title: "复制成功")
  175. })
  176. let cancelAction = UIAlertAction(title: "取消", style: .cancel, handler: nil)
  177. alertController.addAction(mailAction)
  178. alertController.addAction(copyAction)
  179. alertController.addAction(cancelAction)
  180. self.present(alertController, animated: true, completion: nil)
  181. }
  182. }
  183. @objc func call(){
  184. if let phone = self.contact?.mobile, phone != "" {
  185. let alertController = UIAlertController(title: "", message: nil,preferredStyle: .actionSheet)
  186. let smsAction = UIAlertAction(title: "发短信", style: .default, handler: { _ in
  187. let smsURL = URL(string: "sms://\(phone)")
  188. if UIApplication.shared.canOpenURL(smsURL!) {
  189. UIApplication.shared.openURL(smsURL!)
  190. }else{
  191. self.showError(title: "发短信失败")
  192. }
  193. })
  194. let phoneAction = UIAlertAction(title: "打电话", style: .default, handler: { _ in
  195. let phoneURL = URL(string: "tel://\(phone)")
  196. if UIApplication.shared.canOpenURL(phoneURL!) {
  197. UIApplication.shared.openURL(phoneURL!)
  198. }else{
  199. self.showError(title: "打电话失败")
  200. }
  201. })
  202. let copyAction = UIAlertAction(title: "复制", style: .default, handler: { _ in
  203. UIPasteboard.general.string = phone
  204. self.showSuccess(title: "复制成功")
  205. })
  206. let cancelAction = UIAlertAction(title: "取消", style: .cancel, handler: nil)
  207. alertController.addAction(phoneAction)
  208. alertController.addAction(smsAction)
  209. alertController.addAction(copyAction)
  210. alertController.addAction(cancelAction)
  211. self.present(alertController, animated: true, completion: nil)
  212. }
  213. }
  214. func loadPersonInfo(_ sender: AnyObject?){
  215. self.showLoading(title: "加载中...")
  216. Alamofire.request(myPersonURL!).responseJSON {
  217. response in
  218. switch response.result {
  219. case .success( let val):
  220. let json = JSON(val)["data"]
  221. self.contact = Mapper<PersonV2>().map(JSONString:json.description)!
  222. //OOCon
  223. let me = O2AuthSDK.shared.myInfo()
  224. self.isCollect = DBManager.shared.isCollect(self.contact!, (me?.id)!)
  225. if self.isCollect == true {
  226. self.personCollect.isSelected = true
  227. }else{
  228. self.personCollect.isSelected = false
  229. }
  230. self.personName.text = self.contact?.name
  231. if let qq = self.contact?.qq, qq != "" {
  232. self.personQQ.text = "QQ \(qq)"
  233. }else{
  234. self.personQQ.text = ""
  235. }
  236. if let gt = self.contact?.genderType, gt == "f" {
  237. self.personGirl.setImage(UIImage(named: "icon_girl_2"), for: .normal)
  238. }else{
  239. self.personMan.setImage(UIImage(named: "icon_boy_2"), for: .normal)
  240. }
  241. let urlstr = AppDelegate.o2Collect.generateURLWithAppContextKey(ContactContext.contactsContextKeyV2, query: ContactContext.personIconByNameQueryV2, parameter: ["##name##":self.contact?.unique as AnyObject], generateTime: false)
  242. let url = URL(string: urlstr!)
  243. self.personImg.hnk_setImageFromURL(url!)
  244. DispatchQueue.main.async {
  245. self.hideLoading()
  246. self.tableView.reloadData()
  247. }
  248. case .failure(let err):
  249. DDLogError(err.localizedDescription)
  250. DispatchQueue.main.async {
  251. self.showError(title: "加载失败")
  252. }
  253. }
  254. }
  255. }
  256. }