史诗级更新!sv-print虽然不是很强,但却是很能打的设计器组件

哈喽哇!我是小不不简说的不。在代码世界疯狂蹦跶的 "非资深选手"🙋‍♂️!主打一个*"踩坑我来,避坑你学"*。毕竟独乐乐不如众乐乐,让大家少走弯路,才是咱的终极使命✨~

sv-print 可视化打印设计器 迎来重大更新!适配移动端啦~ 虽然功能不是很完美,但是确实很能打!

移动端可能不存在设计打印模板的情况,但是~ 有这功能和不用是两回事☺️

更多使用文档,可访问网站www.ibujian.cn/svp查看。

更新日志:

🌈 调整优化 支持触摸事件 & 适配移动端UI

🌈 新增支持 touchZoom 方法,以适配移动端预览双指缩放

js 复制代码
const box = globalThis.$("#preview_content .hiprint-printPaper");
const ww = window.innerWidth - 64; // 64: 边距
const tw = box.width();
const zoom = Math.round((ww / tw) * 100) / 100;
box.css({
  transform: `scale(${zoom})`,
  "transform-origin": "0px 0px",
});
globalThis.$(box).touchZoom({
  minScale: 0.2,
  maxScale: 6.0,
  transform: true, // 启用 transform 缩放
});

🌈 新增支持 ${paperNo} ${paperCount} 和 ${field} 值替换

🌈 新增支持 addPrintElementToPaperByTid 根据 tid 添加元素

js 复制代码
printTemplate?.addPrintElementToPaperByTid("defaultModule.text");
// 添加到指定位置 pt
const left = 10;
const top = 30;
printTemplate?.addPrintElementToPaperByTid("defaultModule.text", left,top);

🌈 新增支持 providerMap 支持传自定义渲染函数

js 复制代码
const providerMap = ref({
    container: '.hiprintEpContainer',
    value: 'defaultModule',
    render: (list) => {
      let container = globalThis.$('<div class="hiprint-printElement-type"></div>');
      // xxx
      return container;
    },
});

hiprint.PrintElementTypeManager.build('.hiprintEpContainer', 'defaultModule', (list) => {
  let container = globalThis.$('<div class="hiprint-printElement-type"></div>');
  list.forEach(function (item) {
    const box = globalThis.$(`
          <div class="draggable-ele-group">
            <span class="title">${item.name}</span>
            <div class="list"></div>
          </div>
          `);
    const typeList = box.find('.list');
    item.printElementTypes.forEach(function (t) {
      typeList.append(`
              <div class="draggable-ele ep-draggable-item" tid=${t.tid}>
                <i class="svicon sv-base sv-${t.type}"></i>
                <p style="white-space:nowrap">${t.getText()}</p>
              </div>
          `);
    });
    container.append(box);
  });
  return container;
});

🌈 调整优化 setElsAlign 支持对齐纸张;单项默认对齐纸张, 多选按住 ctrl/command 键可批量对齐

js 复制代码
printTemplate?.setElsAlign("left", true);
printTemplate?.setElsAlign("right", true);

🌈 调整优化 锁定元素 禁止调整大小 & 全局配置 disableNoDraggableSize 默认 true

js 复制代码
hiprint.setConfig({
  disableNoDraggableSize: false, // 锁定元素,可编辑属性 宽高大小
})

🌈 调整新增 buildPagination 构建多面板菜单

js 复制代码
// 手动构建多面板菜单
printTemplate.buildPagination("#printPanels");

✨ 优化 导出PDF,导出图片部分元素清晰度 & 导出图片支持 quality: 0~1

✨ 优化 双击编辑功能(可编辑为html)

✨ 优化 删除元素逻辑(锁定元素,全选元素) & 右键菜单删除情况

✨ 优化 预览支持设置是否隐藏 导出图片,导出PDF以及直接打印按钮

✨ 优化 全选时触发元素选中事件

✨ 优化 designer 组件传 template 为模板对象时,默认事件处理

✨ fix setConfig 方法可能导致 tab 显示错误问题

相关推荐
chxii17 分钟前
2.9 插槽
前端·javascript·vue.js
姑苏洛言1 小时前
扫码点餐小程序产品需求分析与功能梳理
前端·javascript·后端
Freedom风间1 小时前
前端必学-完美组件封装原则
前端·javascript·设计模式
江城开朗的豌豆1 小时前
React表单控制秘籍:受控组件这样玩就对了!
前端·javascript·react.js
一枚前端小能手1 小时前
📋 代码片段管理大师 - 5个让你的代码复用率翻倍的管理技巧
前端·javascript
国家不保护废物2 小时前
Web Worker 多线程魔法:告别卡顿,轻松实现图片压缩!😎
前端·javascript·面试
接着奏乐接着舞。2 小时前
如何在Vue中使用拓扑图功能
前端·javascript·vue.js
阳先森2 小时前
Vue3 Proxy 为何不直接返回target[key],选用Reflect
前端·vue.js
ONE_Gua2 小时前
魔改chromium源码——解除 iframe 的同源策略
前端·后端·浏览器
用户1512905452202 小时前
mysql8的collate问题和修改
前端