| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- // 打印类属性、方法定义
- // 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
|