// 打印类属性、方法定义

// const Print = function (dom, options) {
//   if (!(this instanceof Print)) return new Print(dom, options)

//   this.options = this.extend({
//     'noPrint': '.no-print'
//   }, options)

//   if ((typeof dom) === 'string') {
//     this.dom = document.querySelector(dom)
//   } else {
//     this.dom = dom
//   }

//   this.init()
// }
// Print.prototype = {
//   init: function () {
//     var content = this.getStyle() + this.getHtml()
//     this.writeIframe(content)
//   },
//   extend: function (obj, obj2) {
//     for (var k in obj2) {
//       obj[k] = obj2[k]
//     }
//     return obj
//   },

//   getStyle: function () {
//     var str = ''
//     var styles = document.getElementById('print')
//     // for (var i = 0; i < styles.length; i++) {
//     str += styles.outerHTML
//     // }
//     str += '<style>' + (this.options.noPrint ? this.options.noPrint : '.no-print') + '{display:none;}</style>'

//     return str
//   },

//   getHtml: function () {
//     var inputs = document.querySelectorAll('input')
//     var textareas = document.querySelectorAll('textarea')
//     var selects = document.querySelectorAll('select')

//     for (var k in inputs) {
//       if (inputs[k].type === 'checkbox' || inputs[k].type === 'radio') {
//         if (inputs[k].checked === true) {
//           inputs[k].setAttribute('checked', 'checked')
//         } else {
//           inputs[k].removeAttribute('checked')
//         }
//       } else if (inputs[k].type === 'text') {
//         inputs[k].setAttribute('value', inputs[k].value)
//       }
//     }

//     for (var k2 in textareas) {
//       if (textareas[k2].type === 'textarea') {
//         textareas[k2].innerHTML = textareas[k2].value
//       }
//     }

//     for (var k3 in selects) {
//       if (selects[k3].type === 'select-one') {
//         var child = selects[k3].children
//         for (var i in child) {
//           if (child[i].tagName === 'OPTION') {
//             if (child[i].selected === true) {
//               child[i].setAttribute('selected', 'selected')
//             } else {
//               child[i].removeAttribute('selected')
//             }
//           }
//         }
//       }
//     }

//     return this.dom.outerHTML
//   },

//   writeIframe: function (content) {
//     // eslint-disable-next-line
//     var w, doc, iframe = document.createElement('iframe'),
//       f = document.body.appendChild(iframe)
//     iframe.id = 'myIframe'
//     iframe.style = 'position:absolute;width:0;height:0;top:-10px;left:-10px;'

//     w = f.contentWindow || f.contentDocument
//     doc = f.contentDocument || f.contentWindow.document
//     doc.open()
//     doc.write(content)
//     doc.close()
//     this.toPrint(w)

//     setTimeout(function () {
//       document.body.removeChild(iframe)
//     }, 100)
//   },

//   toPrint: function (frameWindow) {
//     try {
//       setTimeout(function () {
//         frameWindow.focus()
//         try {
//           if (!frameWindow.document.execCommand('print', false, null)) {
//             frameWindow.print()
//           }
//         } catch (e) {
//           frameWindow.print()
//         }
//         frameWindow.close()
//       }, 10)
//     } catch (err) {
//       console.log('err', err)
//     }
//   }
// }
import store from '@/store'
import moment from 'moment'

/**
 *
 *
 * @param {*} order 订单门票打印
 * @param {*} ticket 单张门票信息打印，通常用于测试打印，或者已经构造好数据的门票对象
 */
const Print = function (order, ticket) {
  if (ticket) {
    // 必须是数组
    store.commit('SET_PRINT_LIST', [ticket])
  } else {
    let tickets = order.tickets || order.ticketList || []

    tickets.forEach((item, index) => {
      item.teamId = order.teamId
      item.index = index
      item.remark = order.remark
      item.orderNo = order.orderNo
      item.is_otaorder = order.is_otaorder
      item.createTime = moment(order.createTime).format('YYYY-MM-DD HH:mm')
      item.hidePrice = order.hidePrice
      item.buyerName = order.buyerName
      item.groupIndividual = order.groupIndividual
      item.travelAgencyName = order.travelAgencyName
      item.manager_name = order.manager_name
      item.invoiceQrcode = order.invoiceQrcode || ''
    })

    store.commit('SET_PRINT_LIST', tickets)
  }
}

const PrintSmallTicket = function (order) {
  store.commit('SET_PRINT_ORDER', order)
}

const PrintPlugin = {}

PrintPlugin.install = function (Vue, options) {
  // 4. 添加实例方法
  Vue.prototype.$print = Print
  Vue.prototype.$printSmallTicket = PrintSmallTicket
}

export default PrintPlugin
