Эх сурвалжийг харах

Merge branch 'feature/v4.9.21' of https://jygit.jydev.jianyu360.cn/qmx/jy into dev/v4.9.21_wmh

wenmenghao321 1 жил өмнө
parent
commit
d1ede3561a
28 өөрчлөгдсөн 1187 нэмэгдсэн , 428 устгасан
  1. 1 1
      src/config.yaml
  2. 63 1
      src/jfw/front/dataExport.go
  3. 3 1
      src/jfw/modules/subscribepay/src/config.json
  4. 3 4
      src/jfw/modules/subscribepay/src/config/config.go
  5. 3 1
      src/jfw/modules/subscribepay/src/invoice.json
  6. 33 25
      src/jfw/modules/subscribepay/src/service/invoice.go
  7. 17 2
      src/jfw/modules/subscribepay/src/service/orderListDetails.go
  8. 114 0
      src/web/staticres/electronic_invoice/css/check_invoice.css
  9. 94 1
      src/web/staticres/electronic_invoice/css/invoice.css
  10. 166 166
      src/web/staticres/electronic_invoice/js/invoice.js
  11. 2 2
      src/web/templates/areaPack/pc/page_order.html
  12. 2 2
      src/web/templates/frontRouter/pc/dataFile/sess/orderDetail.html
  13. 2 2
      src/web/templates/order/pc/bidfile/bidfileDetail.html
  14. 2 2
      src/web/templates/order/pc/buyerPortraitPack/detail.html
  15. 2 2
      src/web/templates/order/pc/datareport/detail.html
  16. 1 1
      src/web/templates/order/pc/filePack/detail.html
  17. 1 1
      src/web/templates/order/pc/integral/integralDetail.html
  18. 1 1
      src/web/templates/pc/aiPack_orderDetail.html
  19. 210 34
      src/web/templates/pc/check_invoice.html
  20. 2 2
      src/web/templates/pc/dataPack/packDetail.html
  21. 1 1
      src/web/templates/pc/entniche_orderDetail.html
  22. 447 153
      src/web/templates/pc/invoice.html
  23. 2 2
      src/web/templates/pc/medaratus_orderDetail.html
  24. 2 2
      src/web/templates/pc/member_orderDetail.html
  25. 6 8
      src/web/templates/pc/myOrder.html
  26. 3 7
      src/web/templates/pc/orderDetail.html
  27. 2 2
      src/web/templates/pc/subAccount_orderDetail.html
  28. 2 2
      src/web/templates/pc/vip_orderDetail.html

+ 1 - 1
src/config.yaml

@@ -11,5 +11,5 @@ publicserviceKey: "publicservice.rpc"
 
 database:
   default:
-    link: "clickhouse:jianyu_appl:Cli3#fkh4ouSe@tcp(127.0.0.1:4012)/jyseo_test?dial_timeout=2000ms&max_execution_time=60"
+    link: "clickhouse:jianyu_appl:Cli3#fkh4ouSe@tcp(172.17.16.40:4012)/jyseo_test?dial_timeout=2000ms&max_execution_time=60"
     debug: true

+ 63 - 1
src/jfw/front/dataExport.go

@@ -346,6 +346,58 @@ func (d *DataExport) CancelOrder() error {
 	return nil
 }
 
+// 查询订单最后开票状态
+func QmxInvoice(res map[string]interface{}) bool {
+	if res["is_backstage_order"] == 1 && res["order_channel"] != "xdqd04" {
+		if res["return_status"] == 1 && public.Mysql.Count("invoice", map[string]interface{}{
+			"order_code": res["order_code"],
+		}) == 0 && res["signing_subject"] == "北京剑鱼信息技术有限公司" {
+			return true
+		}
+	}
+	return false
+}
+
+// 剩余金额
+func InvoicePrice(orderData map[string]interface{}) int64 {
+	residueMoney := int64(0)
+	if util.Int64All(orderData["applybill_status"]) == 2 {
+		return residueMoney
+	}
+
+	return util.Int64All(orderData["pay_money"]) - InvoiceAmount(util.InterfaceToStr(orderData["order_code"]))
+}
+
+func InvoiceAmount(orderCode string) (invoicedMoney int64) {
+	invoicedInfo := public.Mysql.SelectBySql(fmt.Sprintf("SELECT invoice_order_money,only_Identifying FROM invoice WHERE order_code = '%s' and invoice_status>=0", orderCode))
+	if invoicedInfo != nil && len(*invoicedInfo) > 0 {
+		onlyMap := make(map[string]int64)
+		for _, m := range *invoicedInfo {
+			if m["only_Identifying"] != nil { //过滤换票过程中的数据
+				onlyMap[util.InterfaceToStr(m["only_Identifying"])] = util.Int64All(m["invoice_order_money"])
+			} else {
+				invoicedMoney += util.Int64All(m["invoice_order_money"])
+			}
+		}
+		if len(onlyMap) > 0 {
+			for _, i := range onlyMap {
+				invoicedMoney += i
+			}
+		}
+	}
+	return
+}
+
+func ShowList(order_code string) []map[string]interface{} {
+	data := public.Mysql.SelectBySql(fmt.Sprintf(`SELECT *,(
+  SELECT count(1) as count FROM invoice b WHERE b.order_code = a.order_code and  b.only_Identifying is not null and b.only_Identifying = a.only_Identifying
+) as isChanged FROM invoice a WHERE order_code = '%s' and invoice_status != -2 and invoice_variety is not null and invoice_variety not  LIKE '%s' ORDER BY create_time DESC`, order_code, "%纸质%"))
+	if data == nil {
+		return nil
+	}
+	return *data
+}
+
 /*
 *
 根据 订单编号+userId 查询
@@ -367,7 +419,17 @@ func (d *DataExport) ToOrderDetail(orderCode string) error {
 	if orderCode != "" {
 		orderDetail = *public.Mysql.FindOne(tableName_order, queryMap, "", "")
 		//最后一次开票查询
-		orderDetail["source"] = LastInvoiceSource(orderCode)
+		//orderDetail["source"] = LastInvoiceSource(orderCode)
+		//如果是管理后台的单子 是否满足可开票
+		orderDetail["qmx_invoice"] = QmxInvoice(orderDetail)
+		//剩余可开票金额
+		var invoicePrice bool
+		if util.Int64All(orderDetail["create_time"]) > 1704038400 {
+			invoicePrice = InvoicePrice(orderDetail) > 0
+		}
+		orderDetail["invoice_price"] = invoicePrice
+		//是否存在可查看发票
+		orderDetail["invoice_show"] = len(ShowList(util.InterfaceToStr(orderDetail["order_code"]))) > 0
 	}
 	//	log.Println("ToOrderDetail", orderCode, orderDetail)
 	if orderDetail["pay_money"] != nil {

+ 3 - 1
src/jfw/modules/subscribepay/src/config.json

@@ -234,5 +234,7 @@
       }
     }
   },
-  "newOrderTime": 1709827200
+  "newOrderTime": 1709827200,
+  "signing_Subject":"北京剑鱼信息技术有限公司",
+  "orderTime":1704038400
 }

+ 3 - 4
src/jfw/modules/subscribepay/src/config/config.go

@@ -162,10 +162,7 @@ type config struct {
 			Name       string `json:"name"`
 		} `json:"activity"`
 	} `json:"payRaffle"`
-	NewOrderTime   int64  `json:"newOrderTime"`
-	SigningSubject string `json:"signing_subject"` //管理后台订单发票签约主体配置
-	SubmitNum      int64  `json:"submit_num"`
-	OrderTime      int64  `json:"orderTime"`
+	NewOrderTime int64 `json:"newOrderTime"`
 }
 type mgoConf struct {
 	Address           string
@@ -243,6 +240,8 @@ type Invoice struct {
 	Red_invoice_msg    string //提示信息
 	Third_party_switch bool   //第三方开票开关
 	Order_createtime   int64  //24年之前的订单不能开票
+	SigningSubject     string `json:"signing_subject"` //管理后台订单发票签约主体配置
+	SubmitNum          int64  `json:"submit_num"`
 }
 
 type entnicheConfig struct {

+ 3 - 1
src/jfw/modules/subscribepay/src/invoice.json

@@ -13,5 +13,7 @@
   "red_invoice_switch": false,
   "red_invoice_msg": "由于系统升级,线上换开发票功能暂时维护阶段,如需换开请直接联系在线客服!",
   "third_party_switch": false,
-  "order_createtime": 1704038400
+  "order_createtime": 1704038400,
+  "submit_num": 3,
+  "signing_Subject":"北京剑鱼信息技术有限公司"
 }

+ 33 - 25
src/jfw/modules/subscribepay/src/service/invoice.go

@@ -452,7 +452,7 @@ func (this *Invoice) ShowinvoiceList() {
 	}
 	invoices := ShowList(order_code)
 	if invoices != nil && len(invoices) > 0 {
-		isIos := util.IsMobileIOS(this.Request.UserAgent())
+		//isIos := util.IsMobileIOS(this.Request.UserAgent())
 		var invoiceData []map[string]interface{}
 		for _, data := range invoices {
 			//是否换过票
@@ -461,24 +461,27 @@ func (this *Invoice) ShowinvoiceList() {
 				continue
 			}
 			delete(data, "user_id")
-			isJyInvoice := !strings.Contains(qutil.InterfaceToStr(data["url"]), "/jyInvoice/") //非数电票
-			isJyEntity := data["invoicing_entity"] != nil && qutil.InterfaceToStr(data["invoicing_entity"]) != config.Config.SigningSubject
-			data["changed"] = qutil.If(isJyInvoice || isChanged || isJyEntity, true, false)
-			if url := qutil.InterfaceToStr(data["url"]); url != "" {
-				//ios 移动端
-				if isIos {
-					//国家税务局-增值税电子发票公共服务平台
-					if strings.Contains(url, "tysl.beijing.chinatax") {
-						data["url"] = strings.ReplaceAll(url, "/preview.html?code=", "/web-reader/reader?file=")
-					}
-				}
-			}
-			var isReopen bool
-			if data["invoice_status"] == -1 {
+			data["id"] = encrypt.SE.Encode2Hex(qutil.InterfaceToStr(data["id"]))
+			timeLimit := qutil.Int64All(data["create_time"]) <= config.InvoiceConfig.Order_createtime //24年之前的发票不让换票
+			isJyInvoice := !strings.Contains(qutil.InterfaceToStr(data["url"]), "/jyInvoice/")        //非数电票
+			isJyEntity := data["invoicing_entity"] != nil && qutil.InterfaceToStr(data["invoicing_entity"]) != config.InvoiceConfig.SigningSubject
+			data["changed"] = qutil.If(isJyInvoice || isChanged || isJyEntity || timeLimit, true, false)
+			//if url := qutil.InterfaceToStr(data["url"]); url != "" {
+			//	//ios 移动端
+			//	if isIos {
+			//		//国家税务局-增值税电子发票公共服务平台
+			//		if strings.Contains(url, "tysl.beijing.chinatax") {
+			//			data["url"] = strings.ReplaceAll(url, "/preview.html?code=", "/web-reader/reader?file=")
+			//		}
+			//	}
+			//}
+			isReopen := timeLimit
+			//var isReopen bool
+			if data["invoice_status"] == -1 && !isReopen {
 				isReopen = util.Mysql.Count("invoice_fail_record", map[string]interface{}{
 					"only_Identifying": data["only_Identifying"],
 					"order_code":       order_code,
-				})+1 >= config.Config.SubmitNum
+				})+1 >= config.InvoiceConfig.SubmitNum
 			}
 			data["isReopen"] = isReopen
 			invoiceData = append(invoiceData, data)
@@ -522,7 +525,10 @@ func (this *Invoice) NewInvoiceShow() {
 	case "1": //订单回显金额
 		data["pay_money"] = ResidueMoney(code)
 	case "2": //发票信息回显
-		invoice := util.Mysql.FindOne("invoice", map[string]interface{}{"id": code}, "id,order_code,invoice_money,invoice_type,invoice_content,invoice_variety,company_name,phone,mail,taxpayer_identnum,invoice_money,invoice_order_money,company_address,bank_name,recipient,delivery_address,bank_account,company_phone", "")
+		invoice := util.Mysql.FindOne("invoice", map[string]interface{}{"id": encrypt.SE.Decode4Hex(code)}, "id,only_Identifying,order_code,invoice_money,invoice_type,invoice_content,invoice_variety,company_name,phone,mail,taxpayer_identnum,invoice_money,invoice_order_money,company_address,bank_name,recipient,delivery_address,bank_account,company_phone", "")
+		if invoice != nil {
+			(*invoice)["id"] = code
+		}
 		data["invoice"] = invoice
 	}
 	this.ServeJson(map[string]interface{}{
@@ -1111,10 +1117,10 @@ func (this *Invoice) NewReplaceinvoice() {
 	invoice_status := 0
 	//userId := qutil.ObjToString(this.GetSession("userId"))  支持扫描换票
 	//order_code := this.GetString("order_code")
-	sid := this.GetString("sid")
+	sid := encrypt.SE.Decode4Hex(this.GetString("sid"))
 	oRes := util.Mysql.FindOne(dbname, map[string]interface{}{"id": sid, "invoie_changed": 0}, "", "") //仅线上开发票可换票
 	if oRes != nil && len(*oRes) > 0 &&
-		((*oRes)["invoicing_entity"] == nil || qutil.InterfaceToStr((*oRes)["invoicing_entity"]) == config.Config.SigningSubject) {
+		((*oRes)["invoicing_entity"] == nil || qutil.InterfaceToStr((*oRes)["invoicing_entity"]) == config.InvoiceConfig.SigningSubject) {
 		var (
 			qSql    string
 			errCode []string
@@ -1372,7 +1378,7 @@ func QmxInvoice(res map[string]interface{}) bool {
 	if res["is_backstage_order"] == 1 && res["order_channel"] != "xdqd04" {
 		if res["return_status"] == 1 && util.Mysql.Count("invoice", map[string]interface{}{
 			"order_code": res["order_code"],
-		}) == 0 && res["signing_subject"] == config.Config.SigningSubject {
+		}) == 0 && res["signing_subject"] == config.InvoiceConfig.SigningSubject {
 			return true
 		}
 	}
@@ -1467,9 +1473,9 @@ func (this *Invoice) InvoiceSubmit() {
 		//"invoice_order_money": payMoney,
 		"invoicing_entity": "北京剑鱼信息技术有限公司",
 		"remark":           this.GetString("remark"),
-		"source":           0,
-		"invoice_variety":  this.GetString("invoice_variety"),
-		"bank_account":     this.GetString("bank_account"),
+		//"source":           0,
+		"invoice_variety": this.GetString("invoice_variety"),
+		"bank_account":    this.GetString("bank_account"),
 		//"only_Identifying":    onlyIdentifying,
 		"company_address":  this.GetString("company_address"),
 		"bank_name":        this.GetString("bank_name"),
@@ -1525,7 +1531,7 @@ func OpenInvoiceAgain(oldOnlyIdentifying string, data map[string]interface{}) er
 	if !ok {
 		return errors.New("插入失败记录出错")
 	}
-	if util.Mysql.Count("invoice_fail_record", map[string]interface{}{"only_Identifying": oldOnlyIdentifying}) >= int64(config.Config.SubmitNum) {
+	if util.Mysql.Count("invoice_fail_record", map[string]interface{}{"only_Identifying": oldOnlyIdentifying}) >= config.InvoiceConfig.SubmitNum {
 		return errors.New("提交次数已达上限")
 	}
 	if !util.Mysql.Update("invoice", map[string]interface{}{"only_Identifying": oldOnlyIdentifying}, data) {
@@ -1556,6 +1562,7 @@ func JyOpenInvoice(orderCode, userId string, data map[string]interface{}) error
 	data["invoice_order_money"] = invoiceMoney
 	data["product_type"] = qutil.ObjToString((*orderInfo)["product_type"])
 	data["user_id"] = userId
+	data["source"] = 0
 	if !util.Mysql.ExecTx("用户端开发票", func(tx *sql.Tx) bool {
 		if util.Mysql.InsertByTx(tx, "invoice", data) <= 0 {
 			log.Println("插入invoice出错", orderCode)
@@ -1623,6 +1630,7 @@ func AdminOpenInvoice(onlyIdentifying, invoiceMoney, operator string, data map[s
 			data["product_type"] = productType
 			data["user_id"] = qutil.ObjToString((*orderInfo)["user_id"])
 			data["operator"] = operator
+			data["source"] = 1
 			if util.Mysql.Insert("invoice", data) <= 0 {
 				log.Println("扫码开票插入invoice表出错", orderCode)
 				return false
@@ -1717,7 +1725,7 @@ func (this *Invoice) InvoiceQuery() {
 			(*invoiceOne)["isReopen"] = util.Mysql.Count("invoice_fail_record", map[string]interface{}{
 				"only_Identifying": (*invoiceOne)["only_Identifying"],
 				"order_code":       (*invoiceOne)["order_code"],
-			})+1 >= config.Config.SubmitNum
+			})+1 >= config.InvoiceConfig.SubmitNum
 		}
 	}
 	this.ServeJson(NewResult(map[string]interface{}{

+ 17 - 2
src/jfw/modules/subscribepay/src/service/orderListDetails.go

@@ -666,7 +666,11 @@ func (o *OrderListDetails) Datas(sql string, pageNum, pagesize_max int) (haveNex
 			//如果是管理后台的单子 是否满足可开票
 			result[i]["qmx_invoice"] = QmxInvoice(result[i])
 			//剩余可开票金额
-			result[i]["invoice_price"] = InvoicePrice(result[i]) > 0
+			var invoicePrice bool
+			if create_time.Unix() > config.InvoiceConfig.Order_createtime {
+				invoicePrice = InvoicePrice(result[i]) > 0
+			}
+			result[i]["invoice_price"] = invoicePrice
 			//是否存在可查看发票
 			result[i]["invoice_show"] = len(ShowList(qutil.InterfaceToStr(result[i]["order_code"]))) > 0
 		}
@@ -863,13 +867,24 @@ func CommonDetail(bigm int, fields, userId, order_code string, session *httpsess
 			}
 			data = *util.Mysql.FindOne(tableName_order, info, fields, "")
 			if data != nil {
+
 				layout := "2006-01-02 15:04:05"
 				create_time := qutil.InterfaceToStr(data["create_time"])
 				t, err := time.Parse(layout, create_time)
 				if err == nil {
 					data["isNewOrder"] = qutil.If(t.Unix() >= config.Config.NewOrderTime, true, false)
 				}
-				data["source"] = LastInvoiceSource(qutil.InterfaceToStr(data["order_code"]))
+				//data["source"] = LastInvoiceSource(qutil.InterfaceToStr(data["order_code"]))
+				//如果是管理后台的单子 是否满足可开票
+				data["qmx_invoice"] = QmxInvoice(data)
+				//剩余可开票金额
+				var invoicePrice bool
+				if t.Unix() > config.InvoiceConfig.Order_createtime {
+					invoicePrice = InvoicePrice(data) > 0
+				}
+				data["invoice_price"] = invoicePrice
+				//是否存在可查看发票
+				data["invoice_show"] = len(ShowList(qutil.InterfaceToStr(data["order_code"]))) > 0
 				if bigm == 0 || bigm == 4 {
 					//查询回款记录
 					if qutil.IntAll((data)["is_backstage_order"]) == 1 && qutil.IntAll((data)["return_status"]) > 0 {

+ 114 - 0
src/web/staticres/electronic_invoice/css/check_invoice.css

@@ -22,6 +22,120 @@
   color: #2CB7CA;
 }
 
+#check_invoice .invoice_status{
+  position: relative;
+  padding-top: 24px;
+  /* width: auto; */
+}
+#check_invoice .invoice_status .invoice_num {
+  margin-bottom: 12px;
+  height: 22px;
+  line-height: 22px;
+  font-size: 14px;
+  color: #1D1D1D;
+}
+.invoice_main{
+  width: 100%;
+  height: 40px;
+  overflow-x: scroll;
+  overflow-y: hidden;
+}
+.invoice_main::-webkit-scrollbar {
+  display: none;
+}
+.white_shadow{
+  position: absolute;
+  left: 0;
+  bottom: 0;
+  display: flex;
+  align-items: center;
+  width: 110px;
+  height: 40px;
+  z-index: 9;
+  cursor: pointer;
+  background: linear-gradient(to right, rgba(255, 255, 255, 1), rgba(255, 255, 255, 0));
+}
+.white_shadow.right_shadow{
+  display: flex;
+  justify-content: flex-end;
+  right: 0;
+  left: initial;
+  background: linear-gradient(to left, rgba(255, 255, 255, 1), rgba(255, 255, 255, 0));
+}
+.white_shadow .el-iconfont {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  width: 28px;
+  height: 28px;
+  background: rgba(0, 0, 0, 0.12);
+  border-radius: 50%;
+}
+.el-icon-arrow-left, .el-icon-arrow-right{
+  font-size: 20px;
+}
+#check_invoice .invoice_status .invoice_status_list{
+  position: relative;
+  left: 0;
+  display: flex;
+  align-items: center;
+  height: 40px;
+  min-width: 1200px;
+  max-width: 100%;
+}
+#check_invoice .invoice_status .invoice_status_item{
+  flex: none;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  padding: 8px 16px;
+  margin-right: 12px;
+  height: 40px;
+  border: 1px solid #E0E0E0;
+  border-radius: 4px;
+  background-color: #F2F2F4;
+  color: #686868;
+  font-size: 12px;
+  cursor: pointer;
+}
+
+#check_invoice .invoice_status .invoice_status_item_title{
+  margin-right: 8px;
+  font-size: 16px;
+  color: #1D1D1D;
+}
+#check_invoice .invoice_status .invoice_status_item.active{
+  background-color: #EAF8FA;
+  border: 1px solid #2CB7CA;
+}
+#check_invoice .invoice_status .invoice_status_item.active .invoice_status_item_title{
+  color: #2ABED1;
+}
+.w.invoice_fail_container{
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  margin-top: 32px;
+}
+.w.invoice_fail_container .invoice_fail{
+  width: 100%;
+  text-align: center;
+}
+.w.invoice_fail_container .invoice_fail .invoice_fail_title{
+  font-size: 18px;
+  color: #171826;
+  line-height: 28px;
+}
+.w.invoice_fail_container .invoice_fail_title .el-icon-error{
+  margin-right: 10px;
+  font-size: 20px;
+  color: #FB483D;
+}
+.w.invoice_fail_container .invoice_fail_content {
+  font-size: 13px;
+  color: #5F5E64;
+  line-height: 20px;
+}
 #check_invoice .step {
   height: auto;
   padding-left: 140px;

+ 94 - 1
src/web/staticres/electronic_invoice/css/invoice.css

@@ -53,6 +53,92 @@ input[type="number"] {
   padding: 26px 30px 50px;
 }
 
+#invoice .invoice_main .i_m_body .el-form-item {
+  margin-bottom: 12px;
+  width: 696px;
+  height: 36px;
+}
+#invoice .invoice_main .i_m_body .invoice_unit{
+  border-bottom: 1px dashed #E0E0E0;
+  margin-bottom: 12px;
+}
+#invoice .invoice_main .i_m_body .el-form-item .el-button{
+  width: 180px;
+  height: 46px;
+  background-color: #2ABED1;
+  color: #FFFFFF;
+  font-size: 16px;
+}
+#invoice .invoice_main .i_m_body .el-form-item .el-button.el-button--default{
+  border: 1px solid #E0E0E0;
+  background-color: #fff;
+  color: #1D1D1D;
+}
+#invoice .invoice_main .i_m_body .el-form-item .el-form-item__content{
+  line-height: 36px;
+}
+.el-form-item.invoice_select .el-select{
+  width: 260px;
+}
+#invoice .invoice_main .i_m_body .el-form-item.invoice_unit_name{
+  position: relative;
+}
+#invoice .invoice_main .i_m_body .el-form-item.invoice_unit_name .box-card{
+  position: absolute;
+  top: 40px;
+  width: 590px;
+  z-index: 9;
+  border-radius: 4px;
+  border: 1px solid #2ABED1;
+}
+#invoice .invoice_main .i_m_body .el-form-item.invoice_unit_name .box-card .el-card__body {
+  padding: 0;
+}
+#invoice .invoice_main .i_m_body .el-form-item.invoice_unit_name .box-card .list-item{
+  padding: 0 20px;
+  cursor: pointer;
+}
+.el-form-item.invoice_unit_name .box-card .list-item .high-light {
+  color: #2ABED1;
+}
+#invoice .invoice_main .i_m_body .el-form-item.invoice_unit_name .box-card .list-item:hover{
+  background-color: #ECECEC;
+}
+#invoice .invoice_main .i_m_body .el-form-item .el-input__inner{
+  height: 36px;
+  line-height: 36px;
+}
+#invoice .invoice_main .i_m_body .el-form-item .el-form-item__label {
+  position: relative;
+  height: 36px;
+  line-height: 36px;
+  text-align: left;
+}
+.el-form-item__label:before{
+  position: absolute;
+  left: -8px;
+}
+#invoice .invoice_main .i_m_body .el-form-item .el-form-item__error{
+  top: 26%;
+  right: -218px;
+  left: initial;
+  min-width: 200px;
+  font-size: 14px;
+}
+
+#invoice .invoice_main .i_m_body .el-radio__input.is-checked .el-radio__inner {
+  border-color: #2ABED1;
+  background: #fff;
+}
+
+#invoice .invoice_main .i_m_body .el-radio__input.is-checked .el-radio__inner::after{
+  width: 8px;
+  height: 8px;
+  background-color: #2ABED1;
+}
+#invoice .invoice_main .i_m_body .el-radio.is-checked .el-radio__label {
+  color: #1D1D1D;
+}
 #invoice .invoice_main .i_m_body .copyright {
   line-height: 24px;
 }
@@ -168,7 +254,6 @@ input[type="number"] {
 }
 
 #invoice .toast {
-  display: none;
   position: fixed;
   top: 50%;
   left: 50%;
@@ -262,4 +347,12 @@ input[type="number"] {
   border: 0;
   color: #fff;
   outline: 0;
+}
+
+.invoice_select_option .el-scrollbar__view.el-select-dropdown__list {
+  display: flex;
+  flex-direction: column;
+}
+.invoice_select_option .el-select-dropdown__item.selected {
+  color: #2ABED1;
 }

+ 166 - 166
src/web/staticres/electronic_invoice/js/invoice.js

@@ -34,171 +34,171 @@ function checkForm() {
     }
 }
 
-$(function () {
-    checkForm();//初始化
-    /*
-        |-- dom [object]        :指定生成下拉列表组件的dom对象。
-        |-- name[string]            :设置表单控件的name属性值。隐藏域的name属性,用来校验表单
-        |-- data [object]        :生成下拉列表选项的数据。
-        |-- fn[function]        :选择下来列表后的回调函数。
-    */
-    // 发票抬头
-    simSelect({
-        'dom': document.getElementById('invoice_title'),
-        'data': [{ 'key': '单位', 'value': '单位' }, { 'key': '个人', 'value': '个人' }],
-        'name': 'invoice_title',
-        'fn': function (val) {
-            if(val == '单位'){
-                $('.unit_invoice').show();
-                checkForm();
-            }else{
-                $('.unit_invoice').hide();
-                checkForm();
-            }
-        }
-    });
+// $(function () {
+//     // checkForm();//初始化
+//     /*
+//         |-- dom [object]        :指定生成下拉列表组件的dom对象。
+//         |-- name[string]            :设置表单控件的name属性值。隐藏域的name属性,用来校验表单
+//         |-- data [object]        :生成下拉列表选项的数据。
+//         |-- fn[function]        :选择下来列表后的回调函数。
+//     */
+//     // 发票抬头
+//     simSelect({
+//         'dom': document.getElementById('invoice_title'),
+//         'data': [{ 'key': '单位', 'value': '单位' }, { 'key': '个人', 'value': '个人' }],
+//         'name': 'invoice_title',
+//         'fn': function (val) {
+//             if(val == '单位'){
+//                 $('.unit_invoice').show();
+//                 checkForm();
+//             }else{
+//                 $('.unit_invoice').hide();
+//                 checkForm();
+//             }
+//         }
+//     });
 
-    // 公司名称校验
-    $('.unit_name').on('blur',function(){
-        if ($(this).val() == '') {
-            $(this).parent().siblings('.success').hide().siblings('.error').hide();
-            return;
-        }
-        if(regCompany.test($(this).val())){
-            $(this).parent().siblings('.success').show().siblings('.error').hide();
-            checkForm();
-        }else{
-            $(this).parent().siblings('.success').hide().siblings('.error').show();
-            checkForm();
-        }
-    })
-    // 纳税人识别号校验
-    $('.taxpayer_number').on('blur',function(){
-        if ($(this).val() == '') {
-            $(this).parent().siblings('.success').hide().siblings('.error').hide();
-            return;
-        }
-        if(regCode.test($(this).val())){
-            $(this).parent().siblings('.success').show().siblings('.error').hide();
-            checkForm();
-        }else{
-            $(this).parent().siblings('.success').hide().siblings('.error').show();
-            checkForm();
-        }
-    })
-    // 手机号校验
-    $('.tel').on('blur',function(){
-        if ($(this).val() == '') {
-            $(this).parent().siblings('.success').hide().siblings('.error').hide();
-            return;
-        }
-        if(regPhone.test($(this).val())){
-            $(this).parent().siblings('.success').show().siblings('.error').hide();
-            checkForm();
-        }else{
-            $(this).parent().siblings('.success').hide().siblings('.error').show();
-            checkForm();
-        }
-    })
-    // 邮箱校验
-    $('.email').on('blur',function(){
-        if ($(this).val() == '') {
-            $(this).parent().siblings('.success').hide().siblings('.error').hide();
-            return;
-        }
-        if(regEmail.test($(this).val())){
-            $(this).parent().siblings('.success').show().siblings('.error').hide();
-            checkForm();
-        }else{
-            $(this).parent().siblings('.success').hide().siblings('.error').show();
-            checkForm();
-        }
-    })
-    // 初始化默认选择
-    function initSelect(){
-        $('input[name="invoice_title"]').val("个人");
-        $('#invoice_title button').html("个人");
-        $('.unit_invoice').hide()
-    }
-    initSelect();
-    // 提交
-    $('.submit_btn').click(function(){
-		var order_code =$(".order_code").text();
-        var company = $('.unit_name').val().trim();//开票单位
-        var code = $('.taxpayer_number').val().trim();//纳税人识别号
-        var phone = $('.tel').val().trim();//手机号
-        var email = $('.email').val().trim();//邮箱
-        var inputUnit = $('input[name="invoice_title"]').val();//发票抬头
-        var param = "";
-		var invoice_title = $("#invoice_title > button").text()
-		if (invoice_title == '个人') {
-            param = {
-            	"order_code": order_code,
-            	"invoice_type": "个人",
-            	"email": email,
-            	"phone_num": phone
-            }
-        } else {
-			param = {
-				"order_code": order_code,
-				"invoice_type": "单位",
-				"company": company,
-				"id_num": code,
-				"email": email,
-				"phone_num": phone
-			}
-        }
-		$('.toast').show("linear");
-		setTimeout(function () {
-		    $('.toast').hide();
-		}, 2000)
-		var changed = getParam("changed");
-		var isSys = getParam("isSys");
-		if(isSys === "true"){
-			param["isSys"] = true
-		}
-		if(changed === "true"){
-			$.ajax({
-	            url: "/jypay/invoice/replace",
-	            async: false,//设置为同步执行 (兼容火狐浏览器)
-	            type: "POST",
-	            data: param,
-	            success: function (data) {
-	            }
-	        });
-			window.location.replace("/front/order/check_invoice/"+order_code);
-			return
-		}
-		$.ajax({
-            url: "/jypay/invoice/add",
-            async: false,//设置为同步执行 (兼容火狐浏览器)
-            type: "POST",
-            data: param,
-            success: function (data) {
-            }
-        });
-		window.location.replace("/front/order/check_invoice/"+order_code);
-    })
-    // 取消
-    $('.cancel_btn').click(function(){
-        $('.unit_name').val('');
-        $('.taxpayer_number').val('');
-        $('.tel').val('');
-        $('.email').val('');
-        $('input[name="invoice_title"]').val("个人");
-        $('#invoice_title button').html("个人");
-        $('.error').hide()
-        $('.success').hide()
-    })
+//     // 公司名称校验
+//     $('.unit_name').on('blur',function(){
+//         if ($(this).val() == '') {
+//             $(this).parent().siblings('.success').hide().siblings('.error').hide();
+//             return;
+//         }
+//         if(regCompany.test($(this).val())){
+//             $(this).parent().siblings('.success').show().siblings('.error').hide();
+//             checkForm();
+//         }else{
+//             $(this).parent().siblings('.success').hide().siblings('.error').show();
+//             checkForm();
+//         }
+//     })
+//     // 纳税人识别号校验
+//     $('.taxpayer_number').on('blur',function(){
+//         if ($(this).val() == '') {
+//             $(this).parent().siblings('.success').hide().siblings('.error').hide();
+//             return;
+//         }
+//         if(regCode.test($(this).val())){
+//             $(this).parent().siblings('.success').show().siblings('.error').hide();
+//             checkForm();
+//         }else{
+//             $(this).parent().siblings('.success').hide().siblings('.error').show();
+//             checkForm();
+//         }
+//     })
+//     // 手机号校验
+//     $('.tel').on('blur',function(){
+//         if ($(this).val() == '') {
+//             $(this).parent().siblings('.success').hide().siblings('.error').hide();
+//             return;
+//         }
+//         if(regPhone.test($(this).val())){
+//             $(this).parent().siblings('.success').show().siblings('.error').hide();
+//             checkForm();
+//         }else{
+//             $(this).parent().siblings('.success').hide().siblings('.error').show();
+//             checkForm();
+//         }
+//     })
+//     // 邮箱校验
+//     $('.email').on('blur',function(){
+//         if ($(this).val() == '') {
+//             $(this).parent().siblings('.success').hide().siblings('.error').hide();
+//             return;
+//         }
+//         if(regEmail.test($(this).val())){
+//             $(this).parent().siblings('.success').show().siblings('.error').hide();
+//             checkForm();
+//         }else{
+//             $(this).parent().siblings('.success').hide().siblings('.error').show();
+//             checkForm();
+//         }
+//     })
+//     // 初始化默认选择
+//     function initSelect(){
+//         $('input[name="invoice_title"]').val("个人");
+//         $('#invoice_title button').html("个人");
+//         $('.unit_invoice').hide()
+//     }
+//     initSelect();
+//     // 提交
+//     $('.submit_btn').click(function(){
+// 		var order_code =$(".order_code").text();
+//         var company = $('.unit_name').val().trim();//开票单位
+//         var code = $('.taxpayer_number').val().trim();//纳税人识别号
+//         var phone = $('.tel').val().trim();//手机号
+//         var email = $('.email').val().trim();//邮箱
+//         var inputUnit = $('input[name="invoice_title"]').val();//发票抬头
+//         var param = "";
+// 		var invoice_title = $("#invoice_title > button").text()
+// 		if (invoice_title == '个人') {
+//             param = {
+//             	"order_code": order_code,
+//             	"invoice_type": "个人",
+//             	"email": email,
+//             	"phone_num": phone
+//             }
+//         } else {
+// 			param = {
+// 				"order_code": order_code,
+// 				"invoice_type": "单位",
+// 				"company": company,
+// 				"id_num": code,
+// 				"email": email,
+// 				"phone_num": phone
+// 			}
+//         }
+// 		$('.toast').show("linear");
+// 		setTimeout(function () {
+// 		    $('.toast').hide();
+// 		}, 2000)
+// 		var changed = getParam("changed");
+// 		var isSys = getParam("isSys");
+// 		if(isSys === "true"){
+// 			param["isSys"] = true
+// 		}
+// 		if(changed === "true"){
+// 			$.ajax({
+// 	            url: "/jypay/invoice/replace",
+// 	            async: false,//设置为同步执行 (兼容火狐浏览器)
+// 	            type: "POST",
+// 	            data: param,
+// 	            success: function (data) {
+// 	            }
+// 	        });
+// 			window.location.replace("/front/order/check_invoice/"+order_code);
+// 			return
+// 		}
+// 		$.ajax({
+//             url: "/jypay/invoice/add",
+//             async: false,//设置为同步执行 (兼容火狐浏览器)
+//             type: "POST",
+//             data: param,
+//             success: function (data) {
+//             }
+//         });
+// 		window.location.replace("/front/order/check_invoice/"+order_code);
+//     })
+//     // 取消
+//     $('.cancel_btn').click(function(){
+//         $('.unit_name').val('');
+//         $('.taxpayer_number').val('');
+//         $('.tel').val('');
+//         $('.email').val('');
+//         $('input[name="invoice_title"]').val("个人");
+//         $('#invoice_title button').html("个人");
+//         $('.error').hide()
+//         $('.success').hide()
+//     })
 
-	function getParam(name) {
-		var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
-		var r = window.location.search.substr(1).match(reg); //获取url中"?"符后的字符串并正则匹配
-		var context = "";
-		if (r != null)
-			context = r[2];
-		reg = null;
-		r = null;
-		return context == null || context == "" || context == "undefined" ? "" : context;
-	}
-})
+// 	function getParam(name) {
+// 		var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
+// 		var r = window.location.search.substr(1).match(reg); //获取url中"?"符后的字符串并正则匹配
+// 		var context = "";
+// 		if (r != null)
+// 			context = r[2];
+// 		reg = null;
+// 		r = null;
+// 		return context == null || context == "" || context == "undefined" ? "" : context;
+// 	}
+// })

+ 2 - 2
src/web/templates/areaPack/pc/page_order.html

@@ -221,9 +221,9 @@
                             $(".pay_num_p").css("display", "");
                             if (r.data.transaction_id) $(".pay_num").text(r.data.transaction_id);
                             //发票
-                            if (r.data.order.applybill_status === 0) {
+                            if (r.data.order.applybill_status === 0 && r.data.order.invoice_price) {
                                 $(".openinvoice").css("display", "");
-                            } else if ((r.data.applybill_status === 1 || r.data.applybill_status === 2) && r.data.source !== 1) {
+                            } else if (r.data.applybill_status === 1 || r.data.applybill_status === 2) {
                                 $(".lookinvoice").css("display", "").on("click", function () {
                                     checkinvoice(r.data.applybill_status, orderCode)//查看发票
                                 })

+ 2 - 2
src/web/templates/frontRouter/pc/dataFile/sess/orderDetail.html

@@ -189,9 +189,9 @@
                             $(".pay_num_p").css("display", "");
                             if (r.data.transaction_id) $(".pay_num").text(r.data.transaction_id);
                             //发票
-                            if (r.data.order.applybill_status === 0 && r.data.order.billingMode === 1 && r.data.order.is_backstage_order === 0 && r.data.order.source !== 1) {
+                            if (r.data.order.applybill_status === 0 && r.data.order.billingMode === 1 && r.data.order.is_backstage_order === 0 && r.data.order.invoice_price) {
                                 $(".openinvoice").css("display", "");
-                            } else if ((r.data.applybill_status === 1 || r.data.applybill_status === 2) && r.data.order.source !== 1 ) {
+                            } else if (r.data.applybill_status === 1 || r.data.applybill_status === 2 ) {
                                 $(".lookinvoice").css("display", "").on("click", function () {
                                     checkinvoice(r.data.applybill_status, orderCode)//查看发票
                                 })

+ 2 - 2
src/web/templates/order/pc/bidfile/bidfileDetail.html

@@ -178,9 +178,9 @@
                             $(".pay_num_p").show();
                         }
                         //发票
-                        if (r.data.applybill_status === 0 && r.data.source !== 1) {
+                        if (r.data.applybill_status === 0 && r.data.invoice_price) {
                             $(".openinvoice").css("display", "");
-                        } else if ((r.data.applybill_status === 1 || r.data.applybill_status === 2) && r.data.source !== 1) {
+                        } else if (r.data.applybill_status === 1 || r.data.applybill_status === 2) {
                             $(".lookinvoice").css("display", "").on("click", function () {
                                 checkinvoice(r.data.applybill_status, orderCode)
                             })

+ 2 - 2
src/web/templates/order/pc/buyerPortraitPack/detail.html

@@ -190,9 +190,9 @@
                             $(".pay_num_p").css("display", "");
                             if (r.data.transaction_id) $(".pay_num").text(r.data.transaction_id);
                             //发票
-                            if (r.data.order.applybill_status === 0) {
+                            if (r.data.order.applybill_status === 0 && r.data.order.invoice_price) {
                                 $(".openinvoice").css("display", "");
-                            } else if ((r.data.applybill_status === 1 || r.data.applybill_status === 2) && r.data.source !== 1) {
+                            } else if (r.data.applybill_status === 1 || r.data.applybill_status === 2) {
                                 $(".lookinvoice").css("display", "").on("click", function () {
                                     checkinvoice(r.data.applybill_status, orderCode)//查看发票
                                 })

+ 2 - 2
src/web/templates/order/pc/datareport/detail.html

@@ -166,9 +166,9 @@
                         $(".pay_num_p").css("display", "");
                         if (r.data.orderInfo.paymentId) $(".pay_num").text(r.data.orderInfo.paymentId);
                         //发票
-                        if (r.data.orderInfo.applybillStatus === 0) {
+                        if (r.data.orderInfo.applybillStatus === 0 && r.data.orderInfo.invoice_price) {
                             $(".openinvoice").css("display", "");
-                        } else if ((r.data.applybill_status === 1 || r.data.applybill_status === 2) && r.data.source !== 1) {
+                        } else if (r.data.applybill_status === 1 || r.data.applybill_status === 2) {
                             $(".lookinvoice").css("display", "").on("click", function () {
                                 checkinvoice(r.data.applybill_status, orderCode)
                             })

+ 1 - 1
src/web/templates/order/pc/filePack/detail.html

@@ -190,7 +190,7 @@
                             $(".pay_num_p").css("display", "");
                             if (r.data.transaction_id) $(".pay_num").text(r.data.transaction_id);
                             //发票
-                            if (r.data.order.applybill_status === 0) {
+                            if (r.data.order.applybill_status === 0 && r.data.order.invoice_price) {
                                 $(".openinvoice").css("display", "");
                             } else if (r.data.applybill_status === 1 || r.data.applybill_status === 2) {
                                 $(".lookinvoice").css("display", "").on("click", function () {

+ 1 - 1
src/web/templates/order/pc/integral/integralDetail.html

@@ -200,7 +200,7 @@
                             $(".pay_num_p").show();
                         }
                         //发票
-                        if (r.data.applybill_status === 0) {
+                        if (r.data.applybill_status === 0 && r.data.invoice_price) {
                             $(".openinvoice").css("display", "");
                         } else if (r.data.applybill_status === 1 || r.data.applybill_status === 2) {
                             $(".lookinvoice").css("display", "").on("click", function () {

+ 1 - 1
src/web/templates/pc/aiPack_orderDetail.html

@@ -225,7 +225,7 @@
                         if (source===""){
                             if (r.data.is_backstage_order!==1){
                                 //发票
-                                if (r.data.applybill_status === 0) {
+                                if (r.data.applybill_status === 0 && r.data.invoice_price) {
                                     $(".openinvoice").css("display", "");
                                 }  else if (r.data.applybill_status === 1 || r.data.applybill_status === 2) {
                                     $(".lookinvoice").css("display", "").on("click", function () {

+ 210 - 34
src/web/templates/pc/check_invoice.html

@@ -20,6 +20,10 @@
     <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/electronic_invoice/iconfont/iconfont.css?v={{Msg "seo" "version"}}">
     <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/electronic_invoice/css/reset_pc.css?v={{Msg "seo" "version"}}">
     <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/electronic_invoice/css/check_invoice.css?v={{Msg "seo" "version"}}">
+    <link href="//cdn-common.jianyu360.com/cdn/lib/element-ui/2.15.7/lib/theme-chalk/index.css" rel="stylesheet" />
+    <script src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js></script>
+    <script src=//cdn-common.jianyu360.com/cdn/lib/element-ui/2.15.7/lib/index.js></script>
+    <script type="text/javascript" src="{{Msg "seo" "cdn"}}/big-member/js/utils.js"></script>
     <!--[if lt IE 9]>
             <script src="https://cdn-common.jianyu360.com/cdn/lib/html5shiv/3.7.3/html5shiv.min.js"></script>
             <script src="https://cdn-common.jianyu360.com/cdn/lib/respond-js/1.4.2/respond.min.js"></script>
@@ -43,27 +47,55 @@
     <!-- header -->
 	{{include "/common/pchead.html"}}
     <!-- main  START -->
-    <div class="check_invoice" id="check_invoice">
+    <div class="check_invoice" id="check_invoice" style="display: none;">
         <div class="w ci_crumb">
             <a href="javascript:;" data-type="work-bench" data-href="/front/swordfish/toMyOrder">我的订单</a><em> > </em>
             <a href="javascript:;" class="active">查看发票</a>
         </div>
-        <div class="w step clearfix">
+        <div class="w invoice_status" v-if="invoiceData.length > 1">
+          <div class="white_shadow left_shadow" @click="clickArrow('left')" v-if="invoiceData.length > 6 && leftBtn">
+            <div class="el-iconfont">
+              <i class="el-icon-arrow-left"></i>
+            </div>
+          </div>
+          <div class="invoice_num">共 <span style="color: #2ABED1;" class="num">${invoiceData.length}</span> 张发票</div>
+          <div class="invoice_main">
+            <div class="invoice_status_list">
+              <div class="invoice_status_item" @click="changeInvoice(item)" :class="{'active': item.active}" v-for="(item, index) in invoiceData" :key="index" >
+                <div class="invoice_status_item_title">${item.info.title}</div>
+                <div class="invoice_status_item_content">申请时间: ${item.info.time}</div>
+              </div>
+            </div>
+          </div>
+          <div class="white_shadow right_shadow" @click="clickArrow('right')" v-if="invoiceData.length > 6 && rightBtn">
+            <div class="el-iconfont">
+              <i class="el-icon-arrow-right"></i>
+            </div>
+          </div>
+        </div>
+        <div class="w step clearfix" v-if="selectinvoice.invoice_status !== -1">
             <!-- 进行中 类名为 active  已完成 类名为 finish  未完成默认颜色-->
-            <div id="l" class="pro l active"></div>
-            <div id="c" class="pro c">财务处理</div>
-            <div id="r" class="pro r">发票开具</div>
+            <div id="l" class="pro l" :class="{'active': selectinvoice.invoice_status === 0}">已完成</div>
+            <div id="c" class="pro c" :class="{'active': selectinvoice.invoice_status === 0}">财务处理</div>
+            <div id="r" class="pro r" :class="{'finish': selectinvoice.invoice_status === 1}">发票开具</div>
             <div class="rules" data-toggle="modal" data-target="#ruleModal">开票规则</div>
         </div>
+        <div class="w step invoice_fail_container" v-else>
+          <div class="invoice_fail">
+            <div class="invoice_fail_title"><i class="el-icon-error"></i>开票失败</div>
+            <div class="invoice_fail_content">公司名称/单位税号填写错误,请核实开票信息再次申请开票</div>
+          </div>
+          <div class="rules" data-toggle="modal" data-target="#ruleModal">开票规则</div>
+        </div>
         <div class="w ci_main">
             <!-- 订单信息 -->
             <div class="ci_list">
                 <div class="list_thead">
-                    <span>订单编号:<span class="order_code"></span></span>
+                    <span>订单编号:<span class="order_code">${selectinvoice.invoice_order_code}</span></span>
                 </div>
                 <div class="list_tbody">
-                    <p>发票类型:普通发票(电子发票)  </p>
-                    <p>发票内容:明细</p>
+                    <p>发票类型:${selectinvoice.invoice_variety} </p>
+                    <p>发票内容:${selectinvoice.invoice_content}</p>
                 </div>
             </div>
             <!-- 发票信息 -->
@@ -72,21 +104,30 @@
                     <span>发票信息</span>
                 </div>
                 <div class="list_tbody">
-					<p>发票抬头:<span id="fptt"></span></p>
-                    <p class="displaynone company_p">公司名称:<span class="company_name"></span></p>
-                    <p class="displaynone tax_p">纳税人识别号:<span class="tax_num"></span></p>
-                    <p>手机号:<span class="phonenum"></span></p>
-                    <p>电子邮箱:<span class="mail"></span></p>
+					          <p>发票抬头:<span>${selectinvoice.invoice_type}</span></p>
+                    <div v-if="selectinvoice.invoice_type == '单位'">
+                      <p class="displaynone company_p">公司名称:<span class="company_name">${selectinvoice.company_name}</span></p>
+                      <p class="displaynone tax_p">单位税号:<span class="tax_num">${selectinvoice.taxpayer_identnum}</span></p>
+                      <p>单位地址:<span class="company_address">${selectinvoice.company_address}</span></p>
+                      <p>电话号码:<span class="phonenum">${selectinvoice.company_phone}</span></p>
+                      <p>开户银行:<span class="bank_name">${selectinvoice.bank_name}</span></p>
+                      <p>银行账号:<span class="bank_account">${selectinvoice.bank_account}</span></p>
+                      <p>开票备注:<span class="remark">${selectinvoice.remark || '-'}</span></p>
+                    </div>
+                    <p>联系电话:<span class="phonenum">${selectinvoice.phone}</span></p>
+                    <p>电子邮箱:<span class="mail">${selectinvoice.mail}</span></p>
+                    <p v-if="selectinvoice.invoice_type == '个人'">开票备注:<span class="remark">${selectinvoice.remark || '-'}</span></p>
                 </div>
             </div>
             <!-- 状态 -->
             <div class="btn-cells">
-              <p class="backInvoice backP" style="display: none;padding-bottom: 8px;color: red;">系统问题,开票失败</p>
-              <button class="btn btn-confirm backInvoice" style="display: none;">重新开票</button>
-              <button class="btn btn-confirm" id="ing" disabled id="opening" style="border: 0;">开票中</button>
-              <button class="btn btn-confirm" style="display: none;" id="look_invoice">查看发票</button>
-              <button class="btn btn-cancel" style="display: none;" id="again_invoice">换开申请</button>
-              <p style="text-align: center;font-size: 14px;color: #686868;padding: 12px 0">您申请的发票将在3个工作日内由平台开具并发送至您的邮箱,请注意查收。</p>
+              <!-- <p class="backInvoice backP" style="display: none;padding-bottom: 8px;color: red;">系统问题,开票失败</p> -->
+              <button class="btn btn-confirm" id="ing" disabled v-if="selectinvoice.invoice_status == 0" style="border: 0;">开票中</button>
+              <button class="btn btn-confirm" @click="lookInvoice" id="look_invoice" v-if="selectinvoice.invoice_status == 1">查看发票</button>
+              <button class="btn btn-cancel" @click="againInvoice('replace')" id="again_invoice" v-if="selectinvoice.invoice_status == 1 && !selectinvoice.changed">换开申请</button>
+              <button class="btn btn-confirm" @click="againInvoice('again')" v-if="selectinvoice.invoice_status == -1">再次开票</button>
+              <button class="btn btn-confirm" @click="concatKf" v-if="selectinvoice.isReopen">联系客服</button>
+              <p style="text-align: center;font-size: 14px;color: #686868;padding: 12px 0">您申请的发票已由平台开具并发送至您的邮箱,请注意查收。</p>
             </div>
         </div>
         <!-- 开票规则弹窗 -->
@@ -98,11 +139,9 @@
                     </div>
                     <div class="modal-body">
                         <div class="text" style="text-align:justify;">
-                          1.平台提供电子普通发票,您可点击“我的订单-开发票”,开票内容统一为“信息技术服务”。<br>
-                          2.您申请的发票将在3个工作日内由平台开具并发送至您的邮箱,请注意查收。<br>
-                          3.购买线上产品服务,请在订单完成90天内,申请开票,逾期请联系客服,开具纸质发票。<br>
-                          4.如需开具增值税专用发票,请联系客服,开票金额<200元发票邮寄费用自行承担。 <br>
-                          客服电话:400-108-6670
+                          1.平台提供电子普通发票、电子专用发票,发票内容为可选“信息技术服务-技术服务费”、“信息技术服务-会员费”、“信息技术服务-招投标数据服务”;<br>
+                          2.您申请的电子发票将在3个工作日内由平台开具并发送至您的邮箱,请注意查收;<br>
+                          3.如有问题可联系客服,客服电话:400-108-6670。<br>
                         </div>
                     </div>
                     <div class="modal-footer">
@@ -144,8 +183,8 @@
           });
       });
 			var order_code={{.T.order_code}};
-			$(".order_code").text(order_code)
-			viewInvoice(order_code)
+			// $(".order_code").text(order_code)
+			// viewInvoice(order_code)
 			//checkInvoice(order_code);
 			var changed = false;
 			var interval;
@@ -266,13 +305,13 @@
 				}, 2000)
 			}
 
-			$("#again_invoice").on("click",function(){
-        if(!redInvoiceSwitch){
-          $('#switchModal').modal('show').find('.text').text(redInvoiceMsg);
-        }else{
-				  window.location.href = "/front/order/invoice/"+ order_code +"?changed=true";
-        }
-			})
+			// $("#again_invoice").on("click",function(){
+      //   if(!redInvoiceSwitch){
+      //     $('#switchModal').modal('show').find('.text').text(redInvoiceMsg);
+      //   }else{
+			// 	  window.location.href = "/front/order/invoice/"+ order_code +"?changed=true";
+      //   }
+			// })
 
 			function viewInvoice(order_code){
 				$.post("/jypay/invoice/show",{"order_code":order_code},function(r){
@@ -394,7 +433,144 @@
 					}
 				})
 			})
-
+      var invoiceDetailNode = new Vue({
+        el: '#check_invoice',
+        delimiters: ['${', '}'],
+        data() {
+          return {
+            invoiceData: [],
+            selectinvoice: {},
+            loading: true,
+            leftBtn: false,
+            rightBtn: true
+          }
+        },
+        created() {
+          this.getInvoiceShowList();
+        },
+        mounted() {
+          $('#check_invoice').show()
+        },
+        methods: {
+          // 联系客服
+          concatKf: function () {
+            if (goTemplateData.inIframe) {
+              window.$BRACE.$emit('open-customer')
+            } else {
+              // 打开客服弹窗
+              checkCustomerService()
+            }
+          },
+          getInvoiceShowList() {
+            const url = '/jypay/invoice/showList'
+            const params = {
+              order_code: order_code
+            }
+            this.ajaxComponent(url, params).then(res => {
+              if (res && res.status === 'success') {
+                const list = res?.invoiceData
+                if(list.length) {
+                  list.forEach((e, i) => {
+                    let info = {
+                      title: '',
+                      time: ''
+                    }
+                    info.time = new Date(e.create_time * 1000).pattern('yyyy-MM-dd')
+                    switch (e.invoice_status) {
+                      case -2:
+                        // 已冲红
+                        info.title = '已冲红'
+                        break;
+                      case -1:
+                        // 开票失败
+                        info.title = '开票失败'
+                        break;
+                      case 0:
+                        // 开票中
+                        info.title = '开票中'
+                        break;
+                      case 1:
+                        // 开票成功
+                        info.title = '已开具'
+                        break;
+                      default:
+                        break;
+                    }
+                    e.info = info
+                    e.active = false
+                    if(i == 0) {
+                      e.active = true
+                    }
+                  });
+                  this.invoiceData = list
+                  this.selectinvoice = list[0]
+                }
+              }
+            })
+          },
+          changeInvoice(item) {
+            this.invoiceData.forEach(e => {
+              e.active = false
+            });
+            item.active = true
+            this.selectinvoice = item
+          },
+          clickArrow(data) {
+            var invoiceStatusList = $('.invoice_status_list');
+            var invoiceStatusListWidth = invoiceStatusList.width();
+            var invoiceStatusItem = $('.invoice_status_item')
+            var itemAllWidth = $('.invoice_status_item').map(function() {
+              return $(this).outerWidth() + 12; // 获取包括内边距的宽度 + margin值
+            }).get();
+            itemAllWidth = itemAllWidth.reduce((a, b) => a + b) - 1200;
+            var currentLeft = invoiceStatusList.position().left;
+            if(data == 'right') {
+              this.leftBtn = true
+              if(currentLeft <= -itemAllWidth) {
+                invoiceStatusList.css('left', -itemAllWidth + 'px');
+                this.rightBtn = false
+                return;
+              }
+              invoiceStatusList.css('left', currentLeft - 100 + 'px');
+            } else {
+              if(currentLeft >= 0) {
+                this.leftBtn = false
+                this.rightBtn = true
+                return;
+              }
+              this.rightBtn = true
+              invoiceStatusList.css('left', currentLeft + 100 + 'px');
+            }
+          },
+          // 查看发票
+          lookInvoice() {
+            if(this.selectinvoice.invoice_status == 1) {
+              window.open(this.selectinvoice.url, '_blank');
+            }
+          },
+          // 换开发票
+          againInvoice(type) {
+            window.open(`/front/order/invoice/${order_code}?type=${type}&invoiceid=${this.selectinvoice.id}`, '_blank');
+          },
+          // 封装公共ajax
+          ajaxComponent(url, params, contentType) {
+            return new Promise((resolve, reject) => {
+              $.ajax({
+                type: "POST",
+                url: url,
+                contentType: contentType || 'application/x-www-form-urlencoded',
+                data: contentType ? JSON.stringify(params) : params || {},
+                success: function (res) {
+                  resolve(res)
+                }.bind(this),
+                error: function (err) {
+                  reject(err)
+                }.bind(this)
+              });
+            });
+          }
+        }
+      })
 		})
 
 		$("#public-nav").css("background","#fff");

+ 2 - 2
src/web/templates/pc/dataPack/packDetail.html

@@ -218,9 +218,9 @@
                             $(".pay_num_p").css("display", "");
                             if (r.data.transaction_id) $(".pay_num").text(r.data.transaction_id);
                             //发票 "item.applybill_status === 0 &&  && item.is_backstage_order === 0"
-                            if (r.data.order.applybill_status === 0 && r.data.order.billingMode === 1 && r.data.order.is_backstage_order === 0) {
+                            if (r.data.order.applybill_status === 0 && r.data.order.invoice_price && r.data.order.billingMode === 1 && r.data.order.is_backstage_order === 0) {
                                 $(".openinvoice").css("display", "");
-                            } else if ((r.data.applybill_status === 1 || r.data.applybill_status === 2) && r.data.source !== 1) {
+                            } else if (r.data.applybill_status === 1 || r.data.applybill_status === 2) {
                                 $(".lookinvoice").css("display", "").on("click", function () {
                                     checkinvoice(r.data.applybill_status, orderCode)//查看发票
                                 })

+ 1 - 1
src/web/templates/pc/entniche_orderDetail.html

@@ -155,7 +155,7 @@
                         $(".pay_num_p").css("display", "");
                         if (r.data.prepay_id) $(".pay_num").text(r.data.prepay_id);
                         //发票
-                        if (r.data.applybill_status === 0) {
+                        if (r.data.applybill_status === 0 && r.data.invoice_price) {
                             $(".openinvoice").css("display", "");
                         } else if (r.data.applybill_status === 1 || r.data.applybill_status === 2) {
                             $(".lookinvoice").css("display", "").on("click", function () {

+ 447 - 153
src/web/templates/pc/invoice.html

@@ -22,6 +22,10 @@
     <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/electronic_invoice/css/reset_pc.css?v={{Msg "seo" "version"}}">
     <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/electronic_invoice/css/city-picker.css?v={{Msg "seo" "version"}}">
     <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/electronic_invoice/css/invoice.css?v={{Msg "seo" "version"}}">
+    <link href="//cdn-common.jianyu360.com/cdn/lib/element-ui/2.15.7/lib/theme-chalk/index.css" rel="stylesheet" />
+    <script src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js></script>
+    <script src=//cdn-common.jianyu360.com/cdn/lib/element-ui/2.15.7/lib/index.js></script>
+    <script type="text/javascript" src="{{Msg "seo" "cdn"}}/big-member/js/utils.js"></script>
     <!--[if lt IE 9]>
             <script src="https://cdn-common.jianyu360.com/cdn/lib/html5shiv/3.7.3/html5shiv.min.js"></script>
             <script src="https://cdn-common.jianyu360.com/cdn/lib/respond-js/1.4.2/respond.min.js"></script>
@@ -43,8 +47,25 @@
 	input:-ms-input-placeholder { /* Internet Explorer 10+ */
 	    color: #999999;
 	}
+  .custom-toast {
+    /* display: none; */
+  }
+  .custom-toast .toast-container{
+    /* display: none; */
+    position: fixed;
+    top: 50%;
+    left: 50%;
+    width: auto;
+    padding: 16px 32px;
+    font-size: 16px;
+    background: rgba(0, 0, 0, 0.65);
+    border-radius: 8px;
+    color: #fff;
+    transform: translateX(-50%) translateY(-50%);
+    z-index: 99;
+  }
 </style>
-<body class="hidden">
+<body>
     <!-- header -->
 	{{include "/common/pchead.html"}}
     <!-- main  START -->
@@ -56,73 +77,76 @@
         <div class="w invoice_main">
             <div class="i_m_head">开发票<a style="float: right;color: #2CB7CA;" data-toggle="modal" data-target="#ruleModal">开票规则</a></div>
             <div class="i_m_body">
-                <div class="invariability">
-                    <div class="clearfix invoice_control">
-                        <div class="fl invoice_control_label">订单编号:</div>
-                        <div class="fl order_code"></div>
-                    </div>
-                    <div class="clearfix invoice_control">
-                        <div class="fl invoice_control_label">发票类型:</div>
-                        <div class="fl">普通发票(电子发票)</div>
-                    </div>
-                    <div class="clearfix invoice_control">
-                        <div class="fl invoice_control_label">发票内容:</div>
-                        <div class="fl">明细</div>
-                    </div>
-                    <div class="clearfix invoice_control">
-                        <div class="fl invoice_control_label">发票抬头:</div>
-                        <div class="fl invoice_control_select" id="invoice_title"></div>
-                    </div>
-                </div>
+                <el-form  :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px">
+                  <el-form-item label="订单编号:" >
+                    <div>${ruleForm.order_code}</div>
+                  </el-form-item>
+                  <el-form-item label="发票类型:">
+                    <el-radio-group v-model="ruleForm.invoice_variety">
+                      <el-radio label="电子普通发票">电子普通发票</el-radio>
+                      <el-radio label="电子专用发票">电子专用发票</el-radio>
+                    </el-radio-group>
+                  </el-form-item>
+                  <el-form-item label="发票内容:" class="invoice_select">
+                    <el-select popper-class="invoice_select_option" v-model="ruleForm.invoice_content">
+                      <el-option v-for="(item, index) in invoiceContentList" :label="item.label" :key="index" :value="item.label"></el-option>
+                    </el-select>
+                  </el-form-item>
+                  <el-form-item label="发票抬头:">
+                    <el-radio-group v-model="ruleForm.invoice_type">
+                      <el-radio v-if="ruleForm.invoice_variety != '电子专用发票'" label="个人"></el-radio>
+                      <el-radio label="单位"></el-radio>
+                    </el-radio-group>
+                  </el-form-item>
+                  <div class="invoice_unit" v-if="ruleForm.invoice_type == '单位'">
+                    <el-form-item label="公司名称:" class="invoice_unit_name" prop="company_name">
+                      <el-input @blur="handleBlur" @input="handleInput" placeholder="请输入公司名称" v-model="ruleForm.company_name"></el-input>
+                      <el-card class="box-card" v-if="companyList.length">
+                        <div @click="handleClick(item)" v-html="setHighLight(item)" v-for="(item, index) in companyList" :key="index" class="list-item"></div>
+                      </el-card>
+                    </el-form-item>
+                    <el-form-item label="单位税号:" prop="taxpayer_identnum">
+                      <el-input placeholder="请输入单位税号" v-model="ruleForm.taxpayer_identnum"></el-input>
+                    </el-form-item>
+                    <el-form-item style="min-height: 36px;height: auto;" label="单位地址:" :rules="[{ required: ruleForm.invoice_variety == '电子专用发票', message: '请输入单位地址', trigger: 'blur' }]" prop="company_address">
+                      <el-input ref="company_address" :style="{height: addressHeight + 'px'}" type="textarea" :rows="1" placeholder="请输入单位地址" v-model="ruleForm.company_address"></el-input>
+                    </el-form-item>
+                    <el-form-item label="电话号码:">
+                      <el-input placeholder="请输入电话号码" v-model="ruleForm.company_phone"></el-input>
+                    </el-form-item>
+                    <el-form-item label="开户银行:">
+                      <el-input placeholder="请输入开户银行" v-model="ruleForm.bank_name"></el-input>
+                    </el-form-item>
+                    <el-form-item label="银行账号:">
+                      <el-input placeholder="请输入银行账号" v-model="ruleForm.bank_account"></el-input>
+                    </el-form-item>
+                    <el-form-item style="min-height: 36px;height: auto;" class="invoice_desc" label="开票备注:">
+                      <el-input ref="remark" :style="{height: remarkHeight + 'px'}" :rows="1" placeholder="非必填,此部分内容会展示在发票“备注”上,请按照贵司财务要求进行填写" type="textarea" v-model="ruleForm.remark"></el-input>
+                    </el-form-item>
+                  </div>
+                  <el-form-item label="联系电话:" prop="phone">
+                    <el-input placeholder="请输入手机号" v-model="ruleForm.phone"></el-input>
+                  </el-form-item>
+                  <el-form-item  label="电子邮箱:" prop="mail">
+                    <el-input placeholder="邮箱用于接收电子发票" v-model="ruleForm.mail"></el-input>
+                  </el-form-item>
+                  <el-form-item style="min-height: 36px;height: auto;" v-if="ruleForm.invoice_type == '个人'" label="开票备注:">
+                    <el-input ref="remark" :style="{height: remarkHeight + 'px'}" :rows="1" placeholder="非必填,此部分内容会展示在发票“备注”上,请按照贵司财务要求进行填写" type="textarea" v-model="ruleForm.remark"></el-input>
+                  </el-form-item>
+                  <el-form-item style="margin-top: 32px;">
+                    <el-button type="primary" @click="submitForm('ruleForm')">提交</el-button>
+                    <el-button @click="resetForm('ruleForm')">取消</el-button>
+                  </el-form-item>
+                </el-form>
                 <!-- 单位发票信息 -->
-                <div class="unit_invoice">
-                    <div class="clearfix invoice_control" id="unitName">
-                        <div class="fl invoice_control_label">公司名称:</div>
-                        <div class="fl invoice_control_input" name="" id="">
-                            <input type="text" placeholder="请输入公司名称" class="unit_name">
-                        </div>
-                        <span class="error"><i class="iconfont icon-cuowutishi"></i>开票单位名称格式不正确</span>
-                        <span class="success"><i class="iconfont icon-zhengquetishi"></i></span>
-                    </div>
-                    <div class="clearfix invoice_control" id="txtNumber">
-                        <div class="fl invoice_control_label">纳税人识别号:</div>
-                        <div class="fl invoice_control_input" name="" id="">
-                            <input type="text" placeholder="请输入纳税人识别号" maxlength="18" class="taxpayer_number">
-                        </div>
-                        <span class="error"><i class="iconfont icon-cuowutishi"></i>纳税人识别号格式不正确</span>
-                        <span class="success"><i class="iconfont icon-zhengquetishi"></i></span>
-                    </div>
-                </div>
-                <div class="common_invoice">
-                    <div class="clearfix invoice_control" id="telBox">
-                        <div class="fl invoice_control_label">手机号:</div>
-                        <div class="fl invoice_control_input" name="" id="">
-                            <input type="text" placeholder="请输入手机号" maxlength="11" onkeyup="this.value=this.value.replace(/\D/g,'')" class="tel">
-                        </div>
-                        <span class="error"><i class="iconfont icon-cuowutishi"></i>手机号格式不正确</span>
-                        <span class="success"><i class="iconfont icon-zhengquetishi"></i></span>
-                    </div>
-                    <div class="clearfix invoice_control" id="emailBox">
-                        <div class="fl invoice_control_label">电子邮箱:</div>
-                        <div class="fl invoice_control_input" name="" id="">
-                            <input type="text" placeholder="邮箱用于接收电子发票" class="email">
-                        </div>
-                        <span class="error"><i class="iconfont icon-cuowutishi"></i>邮箱格式不正确</span>
-                        <span class="success"><i class="iconfont icon-zhengquetishi"></i></span>
-                    </div>
-                </div>
-                <div class="invoice_btn">
-                    <button class="submit_btn save-btn" disabled>提交</button>
-                    <button class="cancel_btn">取消</button>
-                </div>
                 <p style="text-align: justify;font-size: 14px;color: #686868;padding: 12px 0 12px 100px;">您申请的发票将在3个工作日内由平台开具并发送至您的邮箱,请注意查收。</p>
             </div>
         </div>
         <!-- toast提示框 -->
-        <div class="toast">
+        <!-- <div class="toast" v-if="toastStatus.toastShow">
             <i class="iconfont icon-zhifuwancheng"></i>
-            <span>提交成功</span>
-        </div>
+            <span>${toastStatus.text}</span>
+        </div> -->
     </div>
 	  <div class="modal fade" id="ruleModal" tabindex="-1" role="dialog" data-backdrop="static" aria-labelledby="myModalLabel" aria-hidden="true">
 	    <div class="modal-dialog">
@@ -132,11 +156,9 @@
 	            </div>
 	            <div class="modal-body">
 	                <div class="text">
-                    1.平台提供电子普通发票,您可点击“我的订单-开发票”,开票内容统一为“信息技术服务”。<br>
-                    2.您申请的发票将在3个工作日内由平台开具并发送至您的邮箱,请注意查收。<br>
-                    3.购买线上产品服务,请在订单完成90天内,申请开票,逾期请联系客服,开具纸质发票。<br>
-                    4.如需开具增值税专用发票,请联系客服,开票金额<200元发票邮寄费用自行承担。 <br>
-                    客服电话:400-108-6670
+                    1.平台提供电子普通发票、电子专用发票,发票内容为可选“信息技术服务-技术服务费”、“信息技术服务-会员费”、“信息技术服务-招投标数据服务”;<br>
+                    2.您申请的电子发票将在3个工作日内由平台开具并发送至您的邮箱,请注意查收;<br>
+                    3.如有问题可联系客服,客服电话:400-108-6670。<br>
 	                </div>
 	            </div>
 	            <div class="modal-footer">
@@ -145,7 +167,7 @@
 	        </div>
 	    </div>
 	  </div>
-    <div class="modal fade" id="switchModal" tabindex="-1" data-keyboard="false" role="dialog" data-backdrop="static" aria-labelledby="myModalLabel" aria-hidden="true">
+    <!-- <div class="modal fade" id="switchModal" tabindex="-1" data-keyboard="false" role="dialog" data-backdrop="static" aria-labelledby="myModalLabel" aria-hidden="true">
 	    <div class="modal-dialog" style="max-width:400px;">
 	        <div class="modal-content">
 	            <div class="modal-header">
@@ -158,7 +180,7 @@
 	                <button type="button" class="btn btn-default" data-dismiss="modal" id="i-know-btn">我知道了</button>
 	            </div>
 	        </div>
-	    </div>
+	    </div> -->
 	</div>
     <!-- main END -->
 	{{include "/common/pcbottom.html"}}
@@ -171,97 +193,369 @@
     <script src="{{Msg "seo" "cdn"}}/electronic_invoice/js/invoice.js?v={{Msg "seo" "version"}}"></script>
 	<script>
 		  $(function(){
-        var orderCode = {{.T.order_code}};
+        var order_code = {{.T.order_code}};
+        var order_mail = {{.T.mail}};
+        var order_phone = {{.T.phone}};
         // 查询是否可以开发票
-        $.ajax({
-          url: '/jypay/invoice/switch',
-          type: "GET",
-          success: function(res) {
-            if (res.code === '1001') {
-              $('body').removeClass('hidden')
-              // 不能开票
-              $('#switchModal').modal('show').find('.text').text(res.messge)
-              return
-            } else{
-              $.post("/jypay/invoice/available",{order_code:orderCode},function(rr){
-                if(rr.status==0){
-                  window.location.replace("/front/order/invoicetimeOut?f=upgrade")
-                }else{
-                  $("body").removeClass("hidden");
-          			  var order_mail = {{.T.mail}};
-          			  var order_phone = {{.T.phone}};
-          			  if(order_mail!==""&&order_mail!==null&&order_mail!==undefined){
-          				$(".email").val(order_mail)
-          				$(".email").parent().siblings('.success').show();
-          			  }
-          			  if(order_phone!==""&&order_phone!==null&&order_phone!==undefined){
-          			  	$(".tel").val(order_phone)
-          				$(".tel").parent().siblings('.success').show();
-          			  }
-          			  var isSys = getParam("isSys");
-          			  if(isSys === "true"){
-        			  	  $.ajax({
-        			  	  	type: 'POST',
-        			  	  	url: '/jypay/invoice/show',
-        			  	  	data: {"order_code":orderCode},
-        					    success: function(r){
-            						if(r.status === "processing"){
-            							if(r.data.invoice_type === "个人"){
-            								$(".email").val(r.data.mail);
-            								$(".tel").val(r.data.phone);
-            								$(".email").parent().siblings('.success').show();
-            								$(".tel").parent().siblings('.success').show();
-            							}else{
-            								$(".email").val(r.data.mail);
-            								$(".tel").val(r.data.phone);
-            								$(".unit_name").val(r.data.company_name);
-            								$(".taxpayer_number").val(r.data.taxpayer_identnum);
-            								$(".email").parent().siblings('.success').show();
-            								$(".tel").parent().siblings('.success').show();
-            								$(".unit_name").parent().siblings('.success').show();
-            								$(".taxpayer_number").parent().siblings('.success').show();
-            								$("#invoice_title > button").text("单位")
-            								$(".unit_invoice").show();
-            							}
-            						}
-        					    }
-        			  	  });
-          			  }
-          			  checkForm();
-          			  var order_code = {{.T.order_code}};
-          			  $(".order_code").text(order_code);
-          			  $(".cancel_btn").on("click",function(){
-          					window.history.go(-1);
-          			  })
+        // $.ajax({
+        //   url: '/jypay/invoice/switch',
+        //   type: "GET",
+        //   success: function(res) {
+        //     if (res.code === '1001') {
+        //       $('body').removeClass('hidden')
+        //       // 不能开票
+        //       $('#switchModal').modal('show').find('.text').text(res.messge)
+        //       return
+        //     } else{
+        //       $.post("/jypay/invoice/available",{order_code:orderCode},function(rr){
+        //         if(rr.status==0){
+        //           window.location.replace("/front/order/invoicetimeOut?f=upgrade")
+        //         }else{
+        //           $("body").removeClass("hidden");
+        //   			  var order_mail = {{.T.mail}};
+        //   			  var order_phone = {{.T.phone}};
+        //   			  if(order_mail!==""&&order_mail!==null&&order_mail!==undefined){
+        //   				$(".email").val(order_mail)
+        //   				$(".email").parent().siblings('.success').show();
+        //   			  }
+        //   			  if(order_phone!==""&&order_phone!==null&&order_phone!==undefined){
+        //   			  	$(".tel").val(order_phone)
+        //   				$(".tel").parent().siblings('.success').show();
+        //   			  }
+        //   			  var isSys = getParam("isSys");
+        //   			  if(isSys === "true"){
+        // 			  	  $.ajax({
+        // 			  	  	type: 'POST',
+        // 			  	  	url: '/jypay/invoice/show',
+        // 			  	  	data: {"order_code":orderCode},
+        // 					    success: function(r){
+        //     						if(r.status === "processing"){
+        //     							if(r.data.invoice_type === "个人"){
+        //     								$(".email").val(r.data.mail);
+        //     								$(".tel").val(r.data.phone);
+        //     								$(".email").parent().siblings('.success').show();
+        //     								$(".tel").parent().siblings('.success').show();
+        //     							}else{
+        //     								$(".email").val(r.data.mail);
+        //     								$(".tel").val(r.data.phone);
+        //     								$(".unit_name").val(r.data.company_name);
+        //     								$(".taxpayer_number").val(r.data.taxpayer_identnum);
+        //     								$(".email").parent().siblings('.success').show();
+        //     								$(".tel").parent().siblings('.success').show();
+        //     								$(".unit_name").parent().siblings('.success').show();
+        //     								$(".taxpayer_number").parent().siblings('.success').show();
+        //     								$("#invoice_title > button").text("单位")
+        //     								$(".unit_invoice").show();
+        //     							}
+        //     						}
+        // 					    }
+        // 			  	  });
+        //   			  }
+        //   			  checkForm();
+        //   			  $(".cancel_btn").on("click",function(){
+        //   					window.history.go(-1);
+        //   			  })
 
-          			  $('#ruleModal').on('show.bs.modal', function () {
-          			      var $this = $(this);
-          			      var $modal_dialog = $this.find('.modal-dialog');
-          			      $this.css('display', 'block');
-          			      $modal_dialog.css({
-          			          'margin-top': Math.max(0, ($(window).height() - $modal_dialog.height()) / 2)
-          			      });
-          			  });
+        //   			  $('#ruleModal').on('show.bs.modal', function () {
+        //   			      var $this = $(this);
+        //   			      var $modal_dialog = $this.find('.modal-dialog');
+        //   			      $this.css('display', 'block');
+        //   			      $modal_dialog.css({
+        //   			          'margin-top': Math.max(0, ($(window).height() - $modal_dialog.height()) / 2)
+        //   			      });
+        //   			  });
 
-          			  $("#public-nav").css("background","#fff");
-          			  $(".public-nav").css("border-bottom", "1px solid #e0e0e0");
+        //   			  $("#public-nav").css("background","#fff");
+        //   			  $(".public-nav").css("border-bottom", "1px solid #e0e0e0");
+        //         }
+        //       });
+        //     }
+        //   }
+        // })
+        haslogin({{.T.logid}});
+        var invoiceNode = new Vue({
+          el: '#invoice',
+          delimiters: ['${', '}'],
+          data() {
+            return {
+              ruleForm: {
+                order_code: '',
+                invoice_content: '信息技术服务-技术服务费',
+                invoice_type: '单位',
+                invoice_variety: '电子普通发票',
+                mail: '',
+                phone: '',
+                remark: '',
+                company_name: '',
+                taxpayer_identnum: '',
+                company_address: '',
+                company_phone: '',
+                bank_name: '',
+                bank_account: ''
+              },
+              invoiceContentList: [
+                {
+                  label: '信息技术服务-技术服务费',
+                  value: '信息技术服务-技术服务费'
+                },
+                {
+                  label: '信息技术服务-会员费',
+                  value: '信息技术服务-会员费'
+                },
+                {
+                  label: '信息技术服务-招投标数据服务',
+                  value: '信息技术服务-招投标数据服务'
                 }
-              });
+              ],
+              rules: {
+                phone: [
+                  { required: true, message: '请输入手机号', trigger: 'blur' },
+                  { min: 11, max: 11, message: '手机号长度为11位', trigger: 'blur' }
+                ],
+                mail: [
+                  { required: true, message: '请输入邮箱地址', trigger: 'blur' },
+                  { type: 'email', message: '请输入正确的邮箱地址', trigger: 'blur' }
+                ],
+                company_name: [
+                  { required: true, message: '请输入单位名称', trigger: 'blur' }
+                ],
+                taxpayer_identnum: [
+                  { required: true, message: '请输入纳税人识别号', trigger: 'blur' },
+                  { validator: this.validateCode, trigger: 'blur' }
+
+                ],
+                company_address: [
+                  { required: true, message: '请输入单位地址', trigger: 'blur' }
+                ]
+              },
+              companyList: [],
+              urlParams: {
+                type: '',
+                invoiceid: '',
+                only_Identifying: ''
+              },
+              addressHeight: 36,
+              remarkHeight: 36
             }
-          }
-        })
-        haslogin({{.T.logid}});
-        $('#i-know-btn').on('click', function () {
-            // 新窗口打开
-            // 判断窗口是不是window.open打开的
-            if (window.opener && window.opener !== window) {
-                window.close()
-            } else {
-                if (history.length <= 1) {
-                    window.close()
+          },
+          created () {
+            this.ruleForm.order_code = order_code
+            this.ruleForm.mail = order_mail
+            this.ruleForm.phone = order_phone
+            const type = utils.getParam('type')
+            const invoiceid = utils.getParam('invoiceid')
+            this.urlParams.type = type
+            this.urlParams.invoiceid = invoiceid
+            this.invouceInfoEcho()
+          },
+          watch: {
+            'ruleForm.invoice_variety': {
+              handler (val) {
+                if (val === '电子专用发票') {
+                  this.ruleForm.invoice_type = '单位'
+                }
+              }
+            },
+            'ruleForm.company_address': {
+              handler() {
+                this.addressHeight = this.getTextareaHeight(this.$refs.company_address.$el);
+              }
+            },
+            'ruleForm.remark': {
+              handler() {
+                this.remarkHeight = this.getTextareaHeight(this.$refs.remark.$el);
+              }
+            }
+          },
+          methods: {
+            getTextareaHeight(textareaEl) {
+              textareaEl = textareaEl.querySelector('textarea');
+              textareaEl.style.height = 'auto';
+              textareaEl.style.height = `${textareaEl.scrollHeight}px`;
+              console.info(textareaEl.clientHeight, 'textareaEl')
+              return textareaEl.clientHeight;
+            },
+            // 发票信息回显
+            invouceInfoEcho () {
+              const url = '/jypay/invoice/newShow'
+              const params = {
+                stype: 2,
+                code: this.urlParams.invoiceid
+              }
+              this.ajaxComponent(url, params).then((res) => {
+                if(res) {
+                  this.echoFun(res.data.invoice)
+                }
+              })
+            },
+            echoFun(data) {
+              const { only_Identifying, invoice_type, invoice_variety, invoice_content, mail, phone, remark, company_name, taxpayer_identnum, company_address, company_phone, bank_name, bank_account } = data
+              this.ruleForm.invoice_type = invoice_type
+              this.ruleForm.invoice_variety = invoice_variety
+              this.ruleForm.invoice_content = [invoice_content]
+              this.ruleForm.mail = mail
+              this.ruleForm.phone = phone
+              this.ruleForm.remark = remark
+              this.ruleForm.company_name = company_name
+              this.ruleForm.taxpayer_identnum = taxpayer_identnum
+              this.ruleForm.company_address = company_address
+              this.ruleForm.company_phone = company_phone
+              this.ruleForm.bank_name = bank_name
+              this.ruleForm.bank_account = bank_account
+              this.urlParams.only_Identifying = only_Identifying
+            },
+            validateCode: (rule, value, callback) => {
+              if (!value) {
+                return callback(new Error('请输入纳税人识别号'))
+              } else {
+                if (
+                  value.trim().length === 18 ||
+                  value.trim().length === 15 ||
+                  value.trim().length === 20
+                ) {
+                  return callback()
+                }
+                return callback(new Error('请输入正确的纳税人识别号'))
+              }
+            },
+            setHighLight(item) {
+              const keyword = utils.replaceKeyword(item.name, this.ruleForm.company_name, '<span class="highlight-text">' + this.ruleForm.company_name + '</span>')
+              return keyword
+            },
+            submitForm(formName) {
+              this.$refs[formName].validate((valid) => {
+                if (valid) {
+                  const { order_code, invoice_content, invoice_type, invoice_variety, mail, phone, remark, company_name, taxpayer_identnum, company_address, company_phone, bank_name, bank_account } = this.ruleForm
+                  let params = {
+                    order_code: order_code, // 唯一标识
+                    invoice_variety: invoice_variety, // 发票类型
+                    invoiceContent: invoice_content, // 发票内容
+                    invoice_type: invoice_type, // 发票抬头
+                    phone: phone, // 手机号
+                    mail: mail, // 邮箱
+                    remark: remark, // 备注
+                    source: 0 // 来源
+                  }
+                  if (invoice_type === '单位') {
+                    params = {
+                      order_code: order_code, // 唯一标识
+                      invoice_variety: invoice_variety, // 发票类型
+                      invoiceContent: invoice_content, // 发票内容
+                      invoice_type: invoice_type, // 发票抬头
+                      company_name: company_name, // 公司名称
+                      taxpayer_identnum: taxpayer_identnum, // 单位税号
+                      company_address: company_address, // 单位地址
+                      company_phone: company_phone, // 电话号码
+                      bank_name: bank_name, // 开户银行
+                      bank_account: bank_account, // 银行账号
+                      phone: phone, // 手机号
+                      mail: mail, // 邮箱
+                      remark: remark, // 备注
+                      source: 0 // 来源
+                    }
+                  }
+                  let url = '/jypay/invoice/submit'
+                  if(this.urlParams.type === 'replace') {
+                    // 换开发票接口
+                    url = '/jypay/invoice/newReplace'
+                    params.sid = this.urlParams.invoiceid
+                  } else if(this.urlParams.type === 'again') {
+                    // 开票失败,再次开票
+                    params.only_Identifying = this.urlParams.only_Identifying
+                  }
+                  this.onConfirm(url, params)
+                } else {
+                  console.log('error submit!!');
+                  return false;
+                }
+              });
+            },
+            onConfirm(url, params) {
+              this.ajaxComponent(url, params).then((res) => {
+                if(res && res.error_code === 0) {
+                  this.toastFn('提交成功', 2000)
+                } else {
+                  this.toastFn(res.error_msg || res.invoice_msg, 2000)
                 }
-                history.back()
+              }).catch(err => {
+                this.toastFn('提交失败', 2000)
+              })
+            },
+            resetForm(formName) {
+              this.$refs[formName].resetFields();
+            },
+            handleInput(value) {
+              this.debounce(this.getCompanyList(value), 500)
+            },
+            handleBlur() {
+              setTimeout(() => {
+                this.companyList = []
+              }, 200);
+            },
+            handleClick(item) {
+              const { name, taxCode } = item
+              this.ruleForm.company_name = name
+              this.ruleForm.taxpayer_identnum = taxCode
+              setTimeout(() => {
+                this.companyList = []
+              }, 200);
+            },
+            getCompanyList(key) {
+              if(!key) return
+              const url = '/bigmember/search/ent/association'
+              const params = {
+                name: key,
+                type: "ent",
+                num: "5"
+              }
+              this.ajaxComponent(url, params).then((res) => {
+                if(res && res.error_code === 0) {
+                  this.companyList = res.data.list
+                }
+              })
+            },
+            debounce(fn, delay) {
+              let timeoutId;
+              return function(...args) {
+                if (timeoutId) {
+                  clearTimeout(timeoutId);
+                }
+                timeoutId = setTimeout(() => {
+                  fn.apply(this, args);
+                  timeoutId = null;
+                }, delay);
+              };
+            },
+            // 封装公共ajax
+            ajaxComponent(url, params, contentType) {
+              return new Promise((resolve, reject) => {
+                $.ajax({
+                  type: "POST",
+                  url: url,
+                  contentType: contentType || 'application/x-www-form-urlencoded',
+                  data: contentType ? JSON.stringify(params) : params || {},
+                  success: function (res) {
+                    resolve(res)
+                  }.bind(this),
+                  error: function (err) {
+                    reject(err)
+                  }.bind(this)
+                });
+              });
+            },
+            toastFn: function (text, duration) {
+              if (!duration) {
+                duration = 1000
+              }
+              var _html = ""
+              _html+='<div class="custom-toast"><div class="mask" style="background-color: transparent;"></div><div class="toast-container">'
+              _html+='<span>' + text + '</span></div></div>'
+              $('body').append(_html)
+              setTimeout(function(){
+                $(".custom-toast").fadeOut().remove();
+              },duration)
             }
+          }
         })
       })
 	</script>

+ 2 - 2
src/web/templates/pc/medaratus_orderDetail.html

@@ -295,9 +295,9 @@
                             //发票
                             // 后台渠道为xdqd04(销售代下单)可以开发票,其他后台创建订单不可以开发票
                             if (r.data.order.is_backstage_order!==1 || r.data.order.order_channel === 'xdqd04'){
-                                if (r.data.order.applybill_status === 0) {
+                                if (r.data.order.applybill_status === 0 && r.data.order.invoice_price) {
                                     $(".openinvoice").css("display", "");
-                                } else if ((r.data.applybill_status === 1 || r.data.applybill_status === 2) && r.data.source !== 1) {
+                                } else if (r.data.applybill_status === 1 || r.data.applybill_status === 2) {
                                     $(".lookinvoice").css("display", "").on("click", function () {
                                         checkinvoice(r.data.applybill_status, orderCode)//查看发票
                                     })

+ 2 - 2
src/web/templates/pc/member_orderDetail.html

@@ -354,7 +354,7 @@
                         }
                         if (source===""){
                             if(r.data.is_backstage_order!==1){ //发票
-                                if (r.data.applybill_status === 0) {
+                                if (r.data.applybill_status === 0 && r.data.invoice_price) {
                                     $(".openinvoice").css("display", "").on("click", function () {
                                         // return false // 待可开发票时删除
 
@@ -370,7 +370,7 @@
                                             }
                                         })
                                     });
-                                }else if ((r.data.applybill_status === 1 || r.data.applybill_status === 2) && r.data.source !== 1) {
+                                }else if (r.data.applybill_status === 1 || r.data.applybill_status === 2) {
                                     $(".lookinvoice").css("display", "").on("click", function () {
                                         checkinvoice(r.data.applybill_status, orderCode)//查看发票
                                     })

+ 6 - 8
src/web/templates/pc/myOrder.html

@@ -555,9 +555,9 @@
                       <p><a data-jy-track="click-hover" @click="goCancel(item)">取消订单</a></p>
                     </div>
                     <div v-if="item.order_status === 1 && (item.filter.source || '') === '' && item.filter.badge!='exchange'">
-                      <p><a v-if="item.applybill_status === 0 && item.source !== 1" data-jy-track="click-hover"
+                      <p><a v-if="item.applybill_status === 0 && item.invoice_price" data-jy-track="click-hover"
                           @click="goInvoice(item)">开发票</a></p>
-                      <p><a v-if="(item.applybill_status === 1 || item.applybill_status === 2) && item.source !== 1" data-jy-track="click-hover" @click="goInvoice(item)">发票信息</a></p>
+                      <p><a v-if="item.invoice_show" data-jy-track="click-hover" @click="goInvoice(item)">发票信息</a></p>
                     </div>
                   </div>
                   <div class="handleBox" v-else-if="item.product_type === '大会员-AI中标预测包'
@@ -574,9 +574,9 @@
                     </div>
                     <div v-if="item.order_status === 1 && (item.filter.source || '') === ''&& item.filter.badge!='exchange'">
                       <!--                                        <div v-if="(item.filter.canInvoice !=undefined  && !item.filter.canInvoice)">-->
-                      <p><a v-if="item.applybill_status === 0 && item.source !== 1" data-jy-track="click-hover"
+                      <p><a v-if="item.applybill_status === 0 && item.invoice_price" data-jy-track="click-hover"
                           @click="goInvoice(item)">开发票</a></p>
-                      <p><a v-if="(item.applybill_status === 1 || item.applybill_status === 2) && item.source !== 1"
+                      <p><a v-if="item.invoice_show"
                           data-jy-track="click-hover" @click="goInvoice(item)">发票信息</a></p>
                       <!--                                        </div>-->
                     </div>
@@ -593,11 +593,9 @@
                     </p>
                     <!--已完成 && && item.filter.badge!='exchange' P307 权益码兑换 不开发票-->
                     <p v-if="item.order_status === 1 && item.filter.badge!='exchange'"><a
-                        v-if="item.applybill_status === 0 && item.billingMode === 1 && (item.is_backstage_order === 0 || item.order_channel === 'xdqd04') && item.source !== 1"
+                        v-if="item.billingMode === 1 && (item.is_backstage_order === 0 || item.order_channel === 'xdqd04' ||  item.order_qmx_invoice ) && item.invoice_price"
                         data-jy-track="click-hover" @click="goInvoice(item)">开发票</a></p>
-                    <p v-if="item.order_status === 1"><a
-                        v-if="(item.applybill_status === 1 || item.applybill_status === 2) && item.source !== 1" data-jy-track="click-hover"
-                        @click="goInvoice(item)">发票信息</a></p>
+                    <p v-if="item.order_status === 1"><a v-if="item.invoice_show" data-jy-track="click-hover" @click="goInvoice(item)">发票信息</a></p>
                     <!--已取消-->
                     <!--历史数据 再次购买-->
                     <p v-if="item.product_type === '历史数据'"><a target="_parent" :href="'/front/dataExport/toSieve?id=' + item.filter_id">再次购买</a>

+ 3 - 7
src/web/templates/pc/orderDetail.html

@@ -516,12 +516,8 @@
     $(function () {
         var orderStatus = {{ .T.o.order_status }};
         var invoiceStatus = {{ .T.o.applybill_status }}
+        var invoicePrice = {{ .T.o.invoice_price }}
         var orderCode = {{.T.o.order_code}}
-        try{
-        var source_ ={{.T.o.source}}
-        }catch(e){
-
-        }
 
         if (orderStatus === 0) {
             $("#status_wait_pay").show();
@@ -529,9 +525,9 @@
             $(".o_m_thead").removeClass("greenBg").addClass("redBg")
         } else if (orderStatus === 1) {
             $("#status_success").show();
-            if (invoiceStatus === 0) {
+            if (invoiceStatus === 0 && invoicePrice) {
                 $(".openinvoice").show();
-            } else if ((invoiceStatus === 1 || invoiceStatus === 2) && source_ !== 1) {
+            } else if (invoiceStatus === 1 || invoiceStatus === 2) {
                 $(".lookinvoice").show().on("click", function () {
                     checkinvoice({{.T.o.applybill_status}}, orderCode)
                 });

+ 2 - 2
src/web/templates/pc/subAccount_orderDetail.html

@@ -217,9 +217,9 @@
                         if (source===""){
                           //发票
                             if (r.data.is_backstage_order!==1){
-                                if (r.data.applybill_status === 0 && r.data.source !== 1) {
+                                if (r.data.applybill_status === 0 && r.data.invoice_price) {
                                     $(".openinvoice").css("display", "");
-                                } else if ((r.data.applybill_status === 1 || r.data.applybill_status === 2) && r.data.source !== 1) {
+                                } else if (r.data.applybill_status === 1 || r.data.applybill_status === 2) {
                                     $(".lookinvoice").css("display", "").on("click", function () {
                                         checkinvoice(r.data.applybill_status, orderCode)//查看发票
                                     })

+ 2 - 2
src/web/templates/pc/vip_orderDetail.html

@@ -302,9 +302,9 @@
                             //发票
                             // 后台渠道为xdqd04(销售代下单)可以开发票,其他后台创建订单不可以开发票
                             if (r.data.order.is_backstage_order!==1 || r.data.order.order_channel === 'xdqd04'){
-                                if (r.data.order.applybill_status === 0 && r.data.order.source !== 1) {
+                                if (r.data.order.applybill_status === 0 && r.data.order.invoice_price) {
                                     $(".openinvoice").css("display", "");
-                                } else if ((r.data.applybill_status === 1 || r.data.applybill_status === 2) && r.data.source !== 1) {
+                                } else if (r.data.applybill_status === 1 || r.data.applybill_status === 2) {
                                     $(".lookinvoice").css("display", "").on("click", function () {
                                         checkinvoice(r.data.applybill_status, orderCode)//查看发票
                                     })