/* * @Author: 54xavier * @LastEditors: admin@54xavier.cn * @Date: 2023-02-28 14:00:03 * @LastEditTime: 2023-08-08 19:32:55 */ export const name = "Echarts实现"; export const desc = "通过HTML元素实现Echarts-svg"; export const author = "54xavier"; export const link = "https://ccsimple.gitee.io/vue-plugin-hiprint/"; // url 或者 base64 或者 require('../../../assets/logo.png') export const preview = "https://gitee.com/CcSimple/vue-plugin-hiprint/raw/main/res/template6.png"; function getRandomInt({ min = 10, max = 200 }) { return Math.floor(Math.random() * (max - min + 1)) + min; } export const printData = { lineData: Array.from(new Array(7), () => getRandomInt({})), barData: Array.from(new Array(7), () => getRandomInt({})), pieData: Array.from(new Array(5), (_, i) => ({ value: getRandomInt({}), name: `系列${i}`, })), }; export const json = { panels: [ { index: 0, name: 1, height: 297, width: 210, paperHeader: 0, paperFooter: 842, printElements: [ { options: { left: 0, top: 0, height: 1, width: 1, formatter: `function(t, e, printData) { var script = document.createElement("script"); script.setAttribute("type", "text/javascript"); script.setAttribute("src", "https://cdnjs.cloudflare.com/ajax/libs/echarts/5.4.3/echarts.min.js"); return script; }`, }, printElementType: { // 此元素为 Echarts 依赖,此方法仅浏览器打印(print)生效,print2可能会无法加载依赖,需要手动在electron-hiprint项目中引入依赖 // 如果不使用 print2 可将此依赖全局添加到你自己项目中,只需设计、预览时能加载到此依赖即可 title: "Echarts依赖", type: "html", }, }, { options: { left: 12, top: 12, height: 200, width: 200, formatter: `function(t, e, printData) { if (window.echarts) { var echartDom = document.createElement("div"); echartDom.style.width = "267px"; echartDom.style.height = "267px"; var echartInstance = echarts.init(echartDom,null,{renderer: "svg"}) echartInstance.setOption({ animation: false, grid: { top: 10, right: 20, bottom: 30, left: 36, }, xAxis: { type: 'category', data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] }, yAxis: { type: 'value' }, series: [ { data: printData?.lineData || [150, 230, 224, 218, 135, 147, 260], type: 'line' } ] }) return echartDom; } else { return '
点击打印预览查看
' } }`, }, printElementType: { title: "html", type: "html" }, }, { options: { left: 230, top: 12, height: 200, width: 200, formatter: `function(t, e, printData) { if (window.echarts) { var echartDom = document.createElement("div"); echartDom.style.width = "267px"; echartDom.style.height = "267px"; var echartInstance = echarts.init(echartDom,null,{renderer: "svg"}) echartInstance.setOption({ animation: false, grid: { top: 10, right: 20, bottom: 30, left: 36, }, xAxis: { type: 'category', data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] }, yAxis: { type: 'value' }, series: [ { data: printData?.barData || [150, 230, 224, 218, 135, 147, 260], type: 'bar' } ] }) return echartDom; } else { return '
点击打印预览查看
' } }`, }, printElementType: { title: "html", type: "html" }, }, { options: { left: 12, top: 230, height: 200, width: 200, formatter: `function(t, e, printData) { if (window.echarts) { var echartDom = document.createElement("div"); echartDom.style.width = "267px"; echartDom.style.height = "267px"; var echartInstance = echarts.init(echartDom,null,{renderer: "svg"}) echartInstance.setOption({ animation: false, series: [ { name: 'Access From', type: 'pie', radius: ['40%', '70%'], avoidLabelOverlap: false, itemStyle: { borderRadius: 10, borderColor: '#fff', borderWidth: 2 }, label: { show: false, position: 'center' }, emphasis: { label: { show: true, fontSize: 40, fontWeight: 'bold' } }, labelLine: { show: false }, data: printData?.pieData || [ { value: 1048, name: 'Search Engine' }, { value: 735, name: 'Direct' }, { value: 580, name: 'Email' }, { value: 484, name: 'Union Ads' }, { value: 300, name: 'Video Ads' } ] } ] }) return echartDom; } else { return '
点击打印预览查看
' } }`, }, printElementType: { title: "html", type: "html" }, }, { options: { left: 12, top: 460, height: 12, width: 418, title: "说明:此处模版以一个不可见 html 元素加载 echarts ,故第一次打开无法显示预览,但后续的 print api 能够正常显示,你可以在你的项目中全局加载 echarts 依赖,保证设计、预览时能加载到 echarts 依赖,即可删除用于引入依赖的html元素。使用 print2 需要在 electron-hiprint 项目渲染层中添加该依赖,否则客户端首次打印都无法正常渲染 echarts", }, printElementType: { title: "说明", type: "text" }, }, ], paperNumberLeft: 565.5, paperNumberTop: 819, paperNumberContinue: true, watermarkOptions: {}, }, ], }; export default { preview: preview, name: name, desc: desc, author: author, link: link, printData: printData, json: json, };