文章目录
概要
项目中,我们可能需要实现打印的需求功能,而打印时,用户可以先去编辑打印模版,这样再其他模版,只需要提供数据,就可以使用模版进行打印。
例如:
发货单模版的编辑与使用,如图所示。
安装插件
vue-plugin-hiprint
npm i -S vue-plugin-hiprint
引入全局样式
打印样式print-lock.css必须正确引入
注意:文章里涉及到的一些文件会在文章下方提供下载链接。
引入字体图标库
注意:文章里涉及到的一些文件会在文章下方提供下载链接。
完整demo
index.vue
注意:文章里涉及到的一些文件会在文章下方提供下载链接。
<template>
<div class="flex-col">
<div
class="printTitle"
style="margin-bottom: 10px; background-color: white; padding: 3px 0"
>
<h4 style="margin-left: 10px; display: inline-block">
{
{
demo }}模版名称:<el-input
v-model="input"
placeholder="请输入标题"
></el-input>
</h4>
<button class="api circle-10 ml-10" @click.stop="exportJson">
<i class="iconfont sv-save" />
保存
</button>
</div>
<div class="flex-row" style="height: 87vh">
<div class="flex-2 left">
<div class="flex-row justify-center flex-wrap">
<div
id="provider-container2"
class="container custom-style-types"
></div>
<div class="title">辅助元素</div>
<div class="ep-draggable-item item" tid="defaultModule.hline">
<i class="iconfont sv-hline" />
<span>横线</span>
</div>
<div class="ep-draggable-item item" tid="defaultModule.vline">
<i class="iconfont sv-vline" />
<span>竖线</span>
</div>
<div class="ep-draggable-item item" tid="defaultModule.rect">
<i class="iconfont sv-rect" />
<span>矩形</span>
</div>
<div class="ep-draggable-item item" tid="defaultModule.oval">
<i class="iconfont sv-oval" />
<span>圆形</span>
</div>
</div>
</div>
<div class="flex-5 center">
<!-- 设计器的 容器 -->
<div id="hiprint-printTemplate"></div>
</div>
<div class="flex-2 right">
<!-- 元素参数的 容器 -->
<div id="PrintElementOptionSetting"></div>
</div>
</div>
</div>
</template>
<script>
import {
hiprint, defaultElementTypeProvider } from "vue-plugin-hiprint";
import {
provider3 } from "./provider3";
import {
provider2 } from "./provider2";
import {
provider1 } from "./provider1";
import {
newHiprintPrintTemplate } from "../../utils/template-helper";
import {
getPrintDetail, savePrint, updatePrint } from "@/api/print";
export default {
props: ["id", "type"],
name: "start-01",
data() {
return {
hiprintTemplate: null,
input: "",
template: null,
provider: null,
demo: "",
};
},
methods: {
/**
* 构建左侧可拖拽元素
* 注意: 可拖拽元素必须在 hiprint.init() 之后调用
* 而且 必须包含 class="ep-draggable-item" 否则无法拖拽进设计器
*/
buildLeftElement() {
// eslint-disable-next-line no-undef
hiprint.PrintElementTypeManager.buildByHtml($(".ep-draggable-item"));
$("#provider-container2").empty(); // 先清空, 避免重复构建
// eslint-disable-next-line no-undef
hiprint.PrintElementTypeManager.build(
$("#provider-container2"),
"providerModule2"
);
},
buildDesigner() {
if (this.id != 0) {
getPrintDetail({
id: this.id }).then((res) => {
this.input = res.name;
this.template = JSON.parse(res.content);
console.log("temp", JSON.parse(res.content));
// eslint-disable-next-line no-undef
$("#hiprint-printTemplate").empty(); // 先清空, 避免重复构建
// this.hiprintTemplate = new hiprint.PrintTemplate({<
标签:hiprint,插件,vue,模版,打印,res,import
From: https://blog.csdn.net/qq_14852047/article/details/142054514