//
|
// InvoiceInputViewController.swift
|
// OKProject
|
//
|
// Created by 无故事王国 on 2022/6/9.
|
// Copyright © 2022 yangwang. All rights reserved.
|
//
|
|
import UIKit
|
|
class InvoiceInputViewController: YYViewController {
|
|
var selectItems:Set = Set<InvoiceModel>()
|
@IBOutlet weak var headTypeBtn: UIButton!
|
@IBOutlet weak var headTextField: UITextField!
|
@IBOutlet weak var taxNumField: UITextField!
|
@IBOutlet weak var contentField: UITextField!
|
@IBOutlet weak var priceField: UITextField!
|
@IBOutlet weak var moreBtn: UIButton!
|
@IBOutlet weak var emailField: UITextField!
|
@IBOutlet weak var taxView: UIView!
|
|
private var address:String?
|
private var bank:String?
|
private var code:String? //税号
|
private var content:String?
|
private var email:String = ""
|
private var id:Int?
|
private var insertTime:String?
|
private var money:Double?
|
private var name:String?
|
private var order:String = ""
|
private var orderNum:Int?
|
private var remark:String?
|
private var state:Int?
|
private var type:Int = 2
|
private var userId:Int?
|
|
override func viewDidLoad() {
|
super.viewDidLoad()
|
title = "开具电子发票"
|
view.backgroundColor = UIColor(hexString: "#F3F4F5")
|
priceField.delegate = self
|
|
var price:Double = 0
|
var tempArray = Array<Dictionary<String,Any>>()
|
selectItems.forEach { m in
|
price += m.payMoney
|
tempArray.append(["type":m.orderType.rawValue,"id":m.orderId])
|
}
|
priceField.text = String(format: "%.2lf", price)
|
money = price
|
order = tempArray.ld_toJson
|
}
|
|
override func bindRx() {
|
emailField.rx.text.orEmpty.subscribe(onNext: {text in
|
self.email = text
|
}).disposed(by: disposeBag)
|
|
taxNumField.rx.text.orEmpty.subscribe(onNext: {text in
|
self.code = text
|
}).disposed(by: disposeBag)
|
|
headTextField.rx.text.orEmpty.subscribe(onNext: {text in
|
self.name = text
|
}).disposed(by: disposeBag)
|
|
contentField.rx.text.orEmpty.subscribe(onNext: {text in
|
self.content = text
|
}).disposed(by: disposeBag)
|
|
priceField.rx.text.orEmpty.subscribe(onNext: {text in
|
self.money = text.double()
|
}).disposed(by: disposeBag)
|
|
}
|
|
override func setupViews() {
|
headTypeBtn.set(image: UIImage(named: "icon_more_black"), title: "企业单位", titlePosition: .left, additionalSpacing: 5, state: .normal)
|
|
moreBtn.set(image: UIImage(named: "icon_more_black"), title: "填写备注、地址等", titlePosition: .left, additionalSpacing: 5, state: .normal)
|
}
|
|
@IBAction func headTypeAction(_ sender: UIButton) {
|
CommonAlertSheetView.show(type: .single, titles: ["企业单位","个人/非企业单位"]) { [self] index, str in
|
self.taxView.isHidden = index == 1
|
if index == 0{
|
self.type = 2
|
}else{
|
self.type = 1
|
}
|
self.headTypeBtn.set(image: UIImage(named: "icon_more_black"), title: str, titlePosition: .left, additionalSpacing: 5, state: .normal)
|
}
|
}
|
|
@IBAction func moreAction(_ sender: UIButton) {
|
let vc = InvoiceInputMoreViewController(remark: remark ?? "", address: address ?? "", account: bank ?? "")
|
vc.completeClouse = {[weak self] remak,address,account in
|
self?.address = address
|
self?.bank = account
|
self?.remark = remak
|
self?.moreBtn.setTitle("已填", for: .normal)
|
}
|
yy_push(vc: vc)
|
}
|
|
@IBAction func submitAction(_ sender: UIButton) {
|
|
guard !headTextField.isEmpty else {
|
alert(text: "请输入发票抬头");return
|
}
|
|
if type == 2{
|
guard !taxNumField.isEmpty else {
|
alert(text: "请输入纳税人识别号");return
|
}
|
}
|
|
guard !emailField.isEmpty else {
|
alert(text: "请输入电子邮件");return
|
}
|
|
if !emailField.text!.isValidEmail{
|
alert(text: "请输入正确的电子邮件");return
|
}
|
|
if self.taxView.isHidden{
|
code = nil
|
}
|
|
show()
|
APIManager.shared.provider.rx.request(.invoicing(address: address, bank: bank, code: code, content: content, email: email, id: id, insertTime: insertTime, money: money, name: name, order: order, orderNum: orderNum, remak: remark, state: state, type: type, userId: userId)).map(YYModel<Nothing>.self).validate().subscribe { _ in
|
self.hide()
|
alert(text: "提交成功")
|
NotificationCenter.default.post(name: RefreshInvoice_Noti, object: nil)
|
DispatchQueue.main.asyncAfter(deadline: .now()+1) {
|
self.yy_pop()
|
}
|
} onError: { error in
|
self.hide()
|
alert(text: error.localizedDescription)
|
}.disposed(by: disposeBag)
|
}
|
|
}
|
|
extension InvoiceInputViewController:UITextFieldDelegate{
|
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
|
// 前面的判断都是正确滴 不需要改动 在最后面加位数限制
|
let Digits = 5
|
if textField.text?.contains(".") == false && string != "" && string != "."{
|
if (textField.text?.length)! > Digits{
|
return false
|
}
|
}
|
|
let scanner = Scanner(string: string)
|
let numbers : NSCharacterSet
|
let pointRange = (textField.text! as NSString).range(of: ".")
|
|
if (pointRange.length > 0) && pointRange.length < range.location || pointRange.location > range.location + range.length {
|
numbers = NSCharacterSet(charactersIn: "0123456789.")
|
}else{
|
numbers = NSCharacterSet(charactersIn: "0123456789.")
|
}
|
|
if textField.text == "" && string == "." {
|
return false
|
}
|
|
let remain = 2
|
|
let tempStr = textField.text!.appending(string)
|
|
let strlen = tempStr.length
|
|
if pointRange.length > 0 && pointRange.location > 0{//判断输入框内是否含有“.”。
|
if string == "." {
|
return false
|
}
|
|
if strlen > 0 && (strlen - pointRange.location) > remain + 1 {//当输入框内已经含有“.”,当字符串长度减去小数点前面的字符串长度大于需要要保留的小数点位数,则视当次输入无效。
|
return false
|
}
|
}
|
|
let zeroRange = (textField.text! as NSString).range(of: "0")
|
if zeroRange.length == 1 && zeroRange.location == 0 { //判断输入框第一个字符是否为“0”
|
if !(string == "0") && !(string == ".") && textField.text?.length == 1 {//当输入框只有一个字符并且字符为“0”时,再输入不为“0”或者“.”的字符时,则将此输入替换输入框的这唯一字符。
|
textField.text = string
|
return false
|
}else {
|
if pointRange.length == 0 && pointRange.location > 0 {//当输入框第一个字符为“0”时,并且没有“.”字符时,如果当此输入的字符为“0”,则视当此输入无效。
|
if string == "0" {
|
return false
|
}
|
}
|
}
|
}
|
// let buffer : NSString!
|
if !scanner.scanCharacters(from: numbers as CharacterSet, into: nil) && string.length != 0 {
|
return false
|
}
|
return true
|
}
|
}
|