1.2.4 • Published 3 months ago

zvos-print-sdk v1.2.4

Weekly downloads
-
License
ISC
Repository
-
Last release
3 months ago

打印中心 - 前端 sdk 接入文档

最新 sdk 版本:v1.2.4

sdk 和该文档更新时间:2024.2.4

1. 安装

npm install zvos-print-sdk

2. 引入

import sdk from "zvos-print-sdk";

3. 配置

① baseUrl

【注意】原 sdk 调用接口时默认使用的 baseUrl 是项目本身的 baseUrlwindow[process.env.VUE_APP_PAGE_CONFIG].baseUrl),现已移除。

sdk 调用接口时默认使用的 baseUrl 是麓谷生产地址,如果要设置其他 baseUrl,可以在 main.js 中导入包后调用 setBaseUrl 方法。

/**
 * 设置 BaseUrl
 * @param {String} url url
 */
function setBaseUrl(url)

例如:

// main.js
import sdk from "zvos-print-sdk";
sdk.setBaseUrl("http://paas-portal.test.zoomlion.com/api"); // 麓谷测试

从 v1.1.1 开始还可以使用 setEnv 方法通过环境编码来设置 baseUrl

/**
 * 根据环境编码设置 BaseUrl
 * @param {String} env 环境编码
 */
function setEnv(env)

例如:

sdk.setEnv("LUGU_TEST"); // 麓谷测试
// 其效果和 sdk.setBaseUrl("http://paas-portal.test.zoomlion.com/api"); 相同

常用的环境编码及其对应 baseUrl 如下:

② 用户信息

现在商砼、制造业务侧都提出了打印模板需要支持“租户+应用”内对应模板编码唯一的需求,所以 sdk 在请求接口的过程中,需要获取当前用户的应用和租户信息。

src/store/modules/user.js 中引入,并修改 mutations 中的 SET_USER 方法:

// src/store/modules/user.js
import sdk from "zvos-print-sdk";

const mutations = {
  ...
  SET_USER: (state, user) => {
    state.user = user;
    // 调用 setUser 方法
    sdk.setUser(user);
  },
  ...
}

③ 文档名称

在打印机的打印队列中会显示文档的文档名,默认为“Document Name”。

若要更改文档的文档名,可以在打印文档前调用 setDocName 方法。

/**
 * 设置文档名
 * @param {String} name 文档名
 */
function setDocName(name)

例如:

import sdk from "zvos-print-sdk";
sdk.setDocName("发货单");

④ 签名(已废弃)

对于开启了签名验证的多租户系统,需要调用 setSign 方法配置签名。

src/store/modules/app.js 中引入,并修改 mutations 中的 SET_WEB_CONFIG 方法:

// src/store/modules/app.js
import sdk from "zvos-print-sdk";

const mutations = {
  ...
  SET_WEB_CONFIG: (state, webConfig) => {
    state.webConfig = webConfig;
    // 添加 if 条件调用 setSign 方法
    if (webConfig && webConfig.signSalt) {
      sdk.setSign(webConfig.signSalt);
    }
  },
  ...
}

4. 打印方式

① 浏览器打印

大部分情况下,调用浏览器自带的打印方法进行打印。

② Lodop 打印

使用 Lodop 插件打印可以无需预览进行静默打印。Lodop 官网

使用 Lodop 打印,需要下载插件,Lodop 下载地址: https://data-api.zvalley.com/v1/openapi/download/5656e3f6a71e4a8caf2eb74431bf8922

使用 Lodop 打印时,若内容包含 二维码条形码,可能打印失败,需要高版本的 IE,IE 11 下载地址: https://data-api.zvalley.com/v1/openapi/download/7c23487cb55043a4b2c04dd3eb3b8853

5. 方法调用和捕获错误

import sdk from "zvos-print-sdk"; 

// 异步方法
sdk
  .getHtmlByTemplateCode("templateCode", { no: "1" })
  .then((_) => {})
  .catch((error) => {});

// 同步方法
try {
  sdk.getHtmlByLayout(
    {
      panels: [
        {
          index: 0,
          height: 60,
          width: 90,
          paperHeader: 6,
          paperFooter: 157.5,
          printElements: […]
        }
      ]
    },
    { data: "123" }
  );
} catch (error) {}

6. 方法

① 模板

获取模板列表

/**
 * 获取模板列表
 * @param {Object} params 参数 { systemCode, type }
 * @returns 模板列表
 */
function getTemplateList(params)

根据模板编码获取模板 json

/**
 * 根据模板编码获取模板
 * @param {String} templateCode 模板编码
 * @returns 模板编码对应的模板
 */
function getTemplateByTemplateCode(templateCode)

② 获取 HTML 字符串

根据布局 JSON 和 data 获取 HTML

/**
 * 根据布局 JSON 和 data 获取 HTML
 * @param {String | Object} layout 布局对象 / JSON 字符串
 * @param {String | Object} data 数据对象 / JSON 字符串
 * @returns HTML 字符串
 */
function getHtmlByLayout(layout, data)

根据模板编码和 data 获取 HTML

/**
 * 根据模板编码和 data 获取 HTML
 * @param {String} templateCode 模板编码
 * @param {String | Object} data 数据对象 / JSON 字符串
 * @returnsHTML 字符串
 */
async function getHtmlByTemplateCode(templateCode, data)

③ 浏览器打印

根据布局 JSON 和 data 进行浏览器打印

/**
 * 根据布局 JSON 和 data 浏览器打印
 * @param {String | Object} layout 布局对象 / JSON 字符串
 * @param {String | Object} data 数据对象 / JSON 字符串
 * @returns HTML 字符串
 */
function printByLayout(layout, data)

根据模板编码和 data 进行浏览器打印

/**
 * 根据模板编码和 data 浏览器打印
 * @param {String} templateCode 模板编码
 * @param {String | Object} data 数据对象 / JSON 字符串
 */
async function printByTemplateCode(templateCode, data)

④ Lodop 打印

根据布局进行 Lodop 打印

/**
 * 根据布局进行 Lodop 打印
 * @param {String | Object} layout 布局对象 / JSON 字符串
 * @param {String | Object} data 数据对象 / JSON 字符串
 * @param {Boolean} needPreview 是否需要预览,默认为 false
 * @param {String} mode 打印缩放控制,默认为 null,详见 http://www.c-lodop.com/demolist/PrintSample42.html
 */
function lodopPrintByLayout(layout, data, needPreview = false, mode = null)

根据模板编码进行 Lodop 打印

/**
 * 根据模板编码进行 Lodop 打印
 * @param {String} templateCode 模板编码
 * @param {String | Object} data 数据对象 / JSON 字符串
 * @param {Boolean} needPreview 是否需要预览,默认为 false
 * @param {String} mode 打印缩放控制,默认为 null
 */
async function lodopPrintByTemplateCode(templateCode, data, needPreview = false, mode = null)

⑤ 获取 Lodop 实例

该方法返回了 Lodop 实例,获取之后可以直接调用 Lodop 的内置方法,详见 Lodop 官网或其它参考网址

/**
 * 获取 Lodop 实例
 */
function getLodopInstance()

例如:

let lodop = sdk.getLodopInstance();
console.log(lodop.GET_PRINTER_COUNT()); // 获取打印机个数

⑥ 获取 hiprintTemplate 实例

该方法返回了 hiprintTemplate 实例,获取之后可以直接调用 hiprintTemplate 的内置方法,详见 Hiprint 官网

/**
 * 根据布局 JSON 获取 hiprintTemplate 实例
 * @param {String | Object} layout 布局对象 / JSON 字符串
 * @returns hiprintTemplate 实例
 */
function getHiprintTemplate(layout)

例如:

let hiprintTemplate = getHiprintTemplate(layoutJson);
console.log(hiprintTemplate.getHtml({})); // 根据用户数据获取打印 html

更新日志

v1.2.4 (2024.2.4)

【修复】表格 border 在 Lodop 下的显示问题

v1.2.1 ~ v1.2.3 (2024.1.17)

【升级】插件升级

【移除】baseUrl 默认取当前项目的 baseUrl

v1.1.3 (2023.8.8)

【优化】移除 sass-loader

v1.1.2 (2023.8.7)

【优化】baseUrl 默认取当前项目的 baseUrl

【优化】更新了各个环境的 baseUrl

v1.1.1 (2023.5.6)

【新增】设置用户的方法 setUser

【优化】设置 BaseUrl 时可以通过环境编码设置

v1.0.18 (2023.3.2)

【优化】优化 script 注入逻辑

v1.0.17 (2023.2.1)

【修复】修复当字段为空时显示 undefined 的问题

v1.0.16 (2023.2.1)

【优化】接口新增 mode 参数,控制打印缩放

v1.0.15 (2023.1.9)

【修复】修复 Lodop 打印不出线条的问题

v1.0.14 (2022.12.28)

【新增】获取模板 json 的方法 getTemplateByTemplateCode

【新增】获取 hiprintTemplate 实例方法 getHiprintTemplate

v1.0.13 (2022.12.6)

【新增】设置文档名称方法 setDocName

【新增】获取 Lodop 实例方法 getLodopInstance

v1.0.12 (2022.10.24)

【优化】移除 css-loader

v.1.0.11 (2022.10.10)

【优化】优化 Lodop 启动时的提示

v1.0.10 (2022.10.10)

【优化】打印效果优化

v1.0.8 / v1.0.9 (2022.7.22)

【优化】baseUrl 配置

v1.0.6 / v1.0.7 (2022.6.28)

【修复】修复打印样式问题,css 新增 media="print"

v1.0.5 (2022.6.22)

【新增】模板调用地址配置

【优化】核心代码优化

v1.0.4 (2022.6.16)

【优化】方法调用异常处理优化

v1.0.3 (2022.6.15)

【新增】新增多个打印相关方法

v1.0.2 (2022.6.14)

【新增】新增多个模板相关方法

v1.0.1 (2022.6.13)

【新增】初始化

1.2.4

3 months ago

1.2.3

4 months ago

1.2.2

4 months ago

1.2.1

4 months ago

1.1.3

8 months ago

1.1.2

9 months ago

1.1.1

12 months ago

1.0.18

1 year ago

1.0.17

1 year ago

1.0.16

1 year ago

1.0.11

2 years ago

1.0.10

2 years ago

1.0.15

1 year ago

1.0.14

1 year ago

1.0.13

1 year ago

1.0.12

2 years ago

1.0.9

2 years ago

1.0.8

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago