| | |
| | | <template> |
| | | <div> |
| | | <h3>报表直接打印,通过AJAX方式获取报表模板与报表数据</h3> |
| | | |
| | | <el-button type="primary" @click="clickMe">点击我</el-button> |
| | | <!-- <p><a href="javascript:void" @click.prevent="ws_ajax_print">直接打印</a></p>--> |
| | | <p><a href="javascript:void" @click.prevent="ws_ajax_print">直接打印</a></p> |
| | | |
| | | <el-dialog |
| | | title="预览" |
| | | :visible.sync="dialogVisible" |
| | | width="1140" |
| | | > |
| | | <!-- 要打印的区域 --> |
| | | <div id="printMe" style="padding: 30px"> |
| | | <!-- <h3>自定义打印参数,指定打印机,设置逐份打印与打印份数等</h3>--> |
| | | |
| | | <div style="display: flex;justify-content: space-around;"> |
| | | <!-- 二维码部分--> |
| | | <div> |
| | | <div id="qrCode" ref="qrCodeDiv" /> |
| | | <!-- <img :src="QRImgUrl">--> |
| | | |
| | | <div style="font-size: 18px;width: 100px;text-align: center;margin-top: 10px">MO-79601</div> |
| | | </div> |
| | | <!-- 公司名称及打印单类型--> |
| | | <div |
| | | style="height: 100px;display: flex;justify-content:space-between;align-items: center;flex-direction: column;font-weight: bolder" |
| | | > |
| | | <div style="font-size: 26px;">永康新凯迪工业互联有限公司</div> |
| | | <div style="font-size: 22px;">委外派单</div> |
| | | </div> |
| | | <!--右侧水印及姓名日期--> |
| | | <div> |
| | | <!-- <div ref="watermark" style="width: 100px;height:100px;" />--> |
| | | <div style="color:#0f0f0f;;width: 100px;margin-top:40px;height: 50px;text-align: center">凯迪制造</div> |
| | | <div style="font-weight: bolder"> |
| | | <div>姓名:张三</div> |
| | | <div>日期:2022-07-05</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- <el-divider />--> |
| | | <div style="width:100%;height: 30px;border-bottom: 1px solid #eee;margin-bottom: 20px" /> |
| | | <el-table |
| | | id="table" |
| | | :data="tableData" |
| | | border |
| | | class="elTable" |
| | | style="width: 100%;" |
| | | > |
| | | <el-table-column |
| | | id="column0" |
| | | prop="date" |
| | | label="日期" |
| | | width="100" |
| | | /> |
| | | <el-table-column |
| | | id="column1" |
| | | prop="name" |
| | | label="姓名" |
| | | width="100" |
| | | /> |
| | | <el-table-column |
| | | id="column2" |
| | | prop="address" |
| | | label="地址" |
| | | width="150" |
| | | /> |
| | | <el-table-column |
| | | id="column3" |
| | | prop="address" |
| | | label="地址" |
| | | width="150" |
| | | /> |
| | | <el-table-column |
| | | id="column4" |
| | | prop="address" |
| | | width="150" |
| | | |
| | | label="地址" |
| | | /> |
| | | <el-table-column |
| | | id="column5" |
| | | width="150" |
| | | |
| | | prop="address" |
| | | label="地址" |
| | | /> |
| | | <el-table-column |
| | | id="column6" |
| | | prop="address" |
| | | width="120" |
| | | |
| | | label="地址" |
| | | /> |
| | | <el-table-column |
| | | id="column7" |
| | | width="119" |
| | | |
| | | prop="address" |
| | | label="地址" |
| | | /> |
| | | </el-table> |
| | | </div> |
| | | |
| | | <!-- <vue-easy-print ref="printRef" :button-show="true">--> |
| | | <!-- x--> |
| | | <!-- </vue-easy-print>--> |
| | | |
| | | <!-- 打印的按钮,显示打印预览 --> |
| | | <!-- <el-button v-print="'#printMe'">打印</el-button>--> |
| | | <el-button v-print="printObj">打印</el-button> |
| | | |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="dialogVisible = false">取 消</el-button> |
| | | <el-button type="primary" @click="dialogVisible = false">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | |
| | | <!--2222--> |
| | | <el-dialog |
| | | title="预览" |
| | | :visible.sync="dialogVisible2" |
| | | width="1140" |
| | | > |
| | | <!-- 要打印的区域 --> |
| | | <div id="printMe2" style="padding: 30px;"> |
| | | <!-- <div style="width: 500px; height: 300px;">--> |
| | | |
| | | <div style="display: flex;width: 300px;height: 200px;border: 1px solid #000;text-align: center;font-size: 16px;"> |
| | | <div style="width: 100px;display: flex;flex-direction: column;border-right: 1px solid #000"> |
| | | <div style="display: flex;height: 75%;border-bottom:1px solid #000;justify-content: center;align-items: center "> |
| | | <div id="qrCode2" ref="qrCodeDiv2" /> |
| | | </div> |
| | | <div style="display: flex;height: 25%;justify-content: center;align-items: center"> |
| | | 数量:100 |
| | | </div> |
| | | </div> |
| | | <div style="width:200px;display: flex;flex-direction: column"> |
| | | <div style="display: flex;height: 25%;border-bottom:1px solid #000;justify-content: center;align-items: center "> |
| | | 工单编号:1403-001-0001 |
| | | </div> |
| | | <div style="display: flex;height: 25%;border-bottom:1px solid #000;justify-content: center;align-items: center "> |
| | | 工单编号:1403-001-0001 |
| | | </div> |
| | | <div style="display: flex;height: 25%;border-bottom:1px solid #000 ;justify-content: center;align-items: center"> |
| | | 工单编号:1403-001-0001 |
| | | </div> |
| | | <div style="display: flex;height: 25%;justify-content: center;align-items: center"> |
| | | 工单编号:1403-001-0001 |
| | | </div> |
| | | |
| | | </div> |
| | | |
| | | </div> |
| | | |
| | | <!-- </div>--> |
| | | </div> |
| | | |
| | | <!-- <vue-easy-print ref="printRef" :button-show="true">--> |
| | | <!-- x--> |
| | | <!-- </vue-easy-print>--> |
| | | |
| | | <!-- 打印的按钮,显示打印预览 --> |
| | | <!-- <el-button v-print="'#printMe'">打印</el-button>--> |
| | | <el-button v-print="printObj2">打印</el-button> |
| | | |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="dialogVisible2 = false">取 消</el-button> |
| | | <el-button type="primary" @click="dialogVisible2 = false">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | |
| | | <el-button type="text" @click="outerVisible = true">点击打开外层 Dialog</el-button> |
| | | |
| | | <el-dialog |
| | | title="外层 Dialog" |
| | | top="15vh" |
| | | :close-on-click-modal="false" |
| | | width="840" |
| | | :visible.sync="outerVisible" |
| | | > |
| | | <el-dialog |
| | | width="30%" |
| | | title="内层 Dialog" |
| | | :visible.sync="innerVisible" |
| | | append-to-body |
| | | /> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button @click="outerVisible = false">取 消</el-button> |
| | | <el-button type="primary" @click="innerVisible = true">打开内层 Dialog</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | |
| | | <!-- <p>--> |
| | | <!-- <a href="javascript:void" @click.prevent="ws_ajax_customprint">自定义参数打印</a>--> |
| | | <!-- </p>--> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | // import vueEasyPrint from 'vue-easy-print' |
| | | import QRCode from 'qrcodejs2' |
| | | // import QRCode from 'qrcode' |
| | | import { webapp_ws_ajax_run, webapp_urlprotocol_startup, urlAddRandomNo } from '@/utils/grwebapp' |
| | | |
| | | export default { |
| | | name: 'Gdpg', |
| | | // components: { |
| | | // vueEasyPrint |
| | | // }, |
| | | data() { |
| | | return { |
| | | outerVisible: false, |
| | | innerVisible: false, |
| | | dialogVisible2: false, |
| | | printObj2: { |
| | | id: 'printMe2', |
| | | beforeOpenCallback(vue) { |
| | | vue.printLoading = true |
| | | console.log('打开之前') |
| | | console.log() |
| | | }, |
| | | openCallback(vue) { |
| | | vue.printLoading = false |
| | | console.log('执行了打印') |
| | | }, |
| | | closeCallback(vue) { |
| | | console.log('关闭了打印工具') |
| | | } |
| | | |
| | | }, |
| | | firstWatermark: true, // 第一次显示水印 |
| | | firstbindQRCode: true, // 第一次显示二维码 |
| | | form: { |
| | | describle: '' |
| | | }, |
| | | QRImgUrl: '', |
| | | QRlink: 'www.xxx.com', |
| | | dialogVisible: false, |
| | | printObj: { |
| | | id: 'printMe', |
| | | popTitle: '打印模板', |
| | | extraHead: '<meta http-equiv="Content-Language" content="zh-cn"/>', |
| | | previewBeforeOpenCallback() { |
| | | }, // 预览窗口打开之前的callback(开启预览模式调用) |
| | | previewOpenCallback() { |
| | | }, // 预览窗口打开之后的callback(开启预览模式调用) |
| | | beforeEntryIframe() { |
| | | const widthArr = ['10%', '10%', '15%', '15%', '15%', '15%', '10%', '10%'] |
| | | // const tables = document.getElementById('table').getElementsByTagName('el-table') // 获取打印的表格 |
| | | const tables = document.getElementById('table') // 获取打印的表格 |
| | | // const headcolgroupCol0 = tables[0].getElementsByTagName('colgroup')[0].getElementsByTagName('col') |
| | | // const headcolgroupCol0 = document.getElementById('column0').style.width = '400px' |
| | | // const headcolgroupCol1 = document.getElementById('column1') |
| | | // const headcolgroupCol2 = document.getElementById('column2') |
| | | // const headcolgroupCol3 = document.getElementById('column3') |
| | | // const headcolgroupCol4 = document.getElementById('column4') |
| | | // const headcolgroupCol5 = document.getElementById('column5') |
| | | // const headcolgroupCol6 = document.getElementById('column6') |
| | | // const headcolgroupCol7 = document.getElementById('column7') |
| | | // const headcolgroupCol1 = tables[1].getElementsByTagName('colgroup')[0].getElementsByTagName('col') |
| | | // widthArr.forEach((val, index) => { |
| | | // headcolgroupCol0[index].width = val |
| | | // headcolgroupCol1[index].width = val |
| | | // headcolgroupCol2[index].width = val |
| | | // headcolgroupCol3[index].width = val |
| | | // headcolgroupCol4[index].width = val |
| | | // headcolgroupCol5[index].width = val |
| | | // headcolgroupCol6[index].width = val |
| | | // headcolgroupCol7[index].width = val |
| | | // }) |
| | | }, |
| | | openCallback() { |
| | | |
| | | }, // 调用打印之后的回调事件 |
| | | closeCallback() { |
| | | } // 关闭打印的回调事件(无法确定点击的是确认还是取消) |
| | | |
| | | // id: 'printMe', |
| | | // popTitle: '打印', // 打印配置页上方标题 |
| | | // extraHead: '', // 最上方的头部文字,附加在head标签上的额外标签,使用逗号分隔 |
| | | // preview: '', // 是否启动预览模式,默认是false(开启预览模式,可以先预览后打印) |
| | | // previewTitle: '', // 打印预览的标题(开启预览模式后出现), |
| | | // previewPrintBtnLabel: '', // 打印预览的标题的下方按钮文本,点击可进入打印(开启预览模式后出现) |
| | | // zIndex: '', // 预览的窗口的z-index,默认是 20002(此值要高一些,这涉及到预览模式是否显示在最上面) |
| | | // previewBeforeOpenCallback() {}, // 预览窗口打开之前的callback(开启预览模式调用) |
| | | // previewOpenCallback() {}, // 预览窗口打开之后的callback(开启预览模式调用) |
| | | // beforeOpenCallback() {}, // 开启打印前的回调事件 |
| | | // openCallback() {}, // 调用打印之后的回调事件 |
| | | // closeCallback() {}, // 关闭打印的回调事件(无法确定点击的是确认还是取消) |
| | | // url: '', |
| | | // standard: '', |
| | | // extraCss: '' |
| | | }, |
| | | tableData: [{ |
| | | date: '2016-05-02', |
| | | name: '王小虎', |
| | | address: '上海市普陀区金沙江路 1518 弄' |
| | | }, { |
| | | date: '2016-05-04', |
| | | name: '王小虎', |
| | | address: '上海市普陀区金沙江路 1517 弄' |
| | | }, { |
| | | date: '2016-05-01', |
| | | name: '王小虎', |
| | | address: '上海市普陀区金沙江路 1519 弄' |
| | | }, { |
| | | date: '2016-05-03', |
| | | name: '王小虎', |
| | | address: '上海市普陀区金沙江路 1516 弄' |
| | | }] |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.$nextTick(() => { |
| | | this.bindQRCode() |
| | | }) |
| | | webapp_urlprotocol_startup() |
| | | }, |
| | | methods: { |
| | | addWatermark() { |
| | | if (this.firstWatermark) { |
| | | console.log(this.firstWatermark) |
| | | this.$watermark.set('凯迪制造', this.$refs.watermark) |
| | | this.firstWatermark = false |
| | | ws_ajax_print() { |
| | | // 参数具体说明请参考帮助文档中的“WEB报表(B/S报表)->WEB报表客户端->启动参数说明”部分 |
| | | var args = { |
| | | type: 'print', |
| | | // showOptionDlg: false, //如果不显示打印对话框而直接打印,将此行注释去掉即可 |
| | | report: urlAddRandomNo('./grf/simple.grf'), |
| | | data: './data/jsonCustomer.txt' |
| | | } |
| | | console.log(args, 1) |
| | | webapp_ws_ajax_run(args) |
| | | }, |
| | | clickMe() { |
| | | this.dialogVisible = true |
| | | this.$nextTick(() => { |
| | | this.bindQRCode() |
| | | this.addWatermark() |
| | | console.log(document.getElementById('column0').style.width = '200px', 0) |
| | | console.log(document.getElementById('column7'), 7) |
| | | console.log(document.getElementById('table'), 2) |
| | | console.log(document.getElementById('table').getElementsByTagName('el-table'), 1) |
| | | }) |
| | | }, |
| | | bindQRCode() { |
| | | if (this.firstbindQRCode) { |
| | | const text = 'PO202206280001;Step02' |
| | | new QRCode(this.$refs.qrCodeDiv2, { |
| | | // text: 'Vue实现生成二维码!', |
| | | text: text, |
| | | width: 80, |
| | | height: 80, |
| | | colorDark: '#333333', // 二维码颜色 |
| | | colorLight: '#ffffff', // 二维码背景色 |
| | | correctLevel: QRCode.CorrectLevel.L// 容错率,L/M/H |
| | | }) |
| | | this.firstbindQRCode = false |
| | | ws_ajax_customprint() { |
| | | // 参数具体说明请参考帮助文档中的“WEB报表(B/S报表)->WEB报表客户端->启动参数说明”部分 |
| | | var args = { |
| | | type: 'print', // 如果是要进行打印,将 type 设置为 print |
| | | report: urlAddRandomNo('./grf/simple.grf'), |
| | | data: './data/jsonCustomer.txt', |
| | | PrinterName: 'Microsoft Print to PDF', // 指定要输出的打印机名称 |
| | | Collate: false, // 不按逐份方式打印 |
| | | Copies: 5 // 共打印5份 |
| | | } |
| | | |
| | | // const opts = { |
| | | // errorCorrectionLevel: 'L', // 容错级别 |
| | | // type: 'image/png', // 生成的二维码类型 |
| | | // quality: 0.3, // 二维码质量 |
| | | // margin: 5, // 二维码留白边距 |
| | | // width: 128, // 宽 |
| | | // height: 128, // 高 |
| | | // text: 'http://www.baidu.com', // 二维码内容 |
| | | // color: { |
| | | // dark: '#666666', // 前景色 |
| | | // light: '#fff'// 背景色 |
| | | // } |
| | | // } |
| | | // // this.QRlink 生成的二维码地址url |
| | | // QRCode.toDataURL(this.QRlink, opts, (err, url) => { |
| | | // if (err) throw err |
| | | // // 将生成的二维码路径复制给data的QRImgUrl |
| | | // this.QRImgUrl = url |
| | | // }) |
| | | webapp_ws_ajax_run(args) |
| | | } |
| | | |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style media="print"> |
| | | /*@media print {*/ |
| | | @page { |
| | | /*size: auto;*/ |
| | | size: auto; |
| | | margin: 3mm; |
| | | /*margin: 0mm;*/ |
| | | /*padding: 0;*/ |
| | | } |
| | | /*}*/ |
| | | /*.elTable {*/ |
| | | |
| | | /*::v-deep .el-table {*/ |
| | | /* margin-top: 10px;*/ |
| | | /*}*/ |
| | | /*table {*/ |
| | | /* width: 100% !important;*/ |
| | | /*}*/ |
| | | |
| | | /*.el-table__body,*/ |
| | | /*.el-table__header {*/ |
| | | /* width: 100% !important;*/ |
| | | /*}*/ |
| | | |
| | | /*.el-table__body {*/ |
| | | /* width: 100% !important;*/ |
| | | /*}*/ |
| | | |
| | | /*}*/ |
| | | |
| | | /*/deep/.el-table__body-wrapper::-webkit-scrollbar{*/ |
| | | /* width: 0;*/ |
| | | /*}*/ |
| | | <style> |
| | | </style> |
| | | |