@lambo-design-mobile/lambo-js-bridge 1.0.0-beta.26 → 1.0.0-beta.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,47 +1,56 @@
1
1
  # Changelog
2
- ## [1.0.0-beta.26](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/compare/@lambo-design-mobile/lambo-js-bridge@1.0.0-beta.25...@lambo-design-mobile/lambo-js-bridge@1.0.0-beta.26) (2025-03-19)
3
-
4
-
5
- ### ✨ Features | 新功能
6
-
7
- * **@lambo-design-mobile/js-bridge:** 新增生物认证接口 ([cfb8f94](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/commit/cfb8f9453f3ec769463b1cacc8fa9ab5b32e808f))
8
-
9
- ## [1.0.0-beta.25](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/compare/@lambo-design-mobile/lambo-js-bridge@1.0.0-beta.24...@lambo-design-mobile/lambo-js-bridge@1.0.0-beta.25) (2025-03-10)
10
-
11
-
12
- ### ✨ Features | 新功能
13
-
14
- * **@lambo-design-mobile/js-bridge:** 录音接口新增silenceDelay、silenceStopSeconds、volumeThreshold入参 ([e501510](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/commit/e5015100c715b07a677ca90dffd4228ae13bd659))
15
-
16
- ## [1.0.0-beta.24](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/compare/@lambo-design-mobile/lambo-js-bridge@1.0.0-beta.23...@lambo-design-mobile/lambo-js-bridge@1.0.0-beta.24) (2025-03-04)
17
-
18
-
19
- ### ✨ Features | 新功能
20
-
21
- * **@lambo-design-mobile/js-bridge:** 录音新增base64出参;新增下载接口 ([131e4a6](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/commit/131e4a68228d528badea094d057a3d81c41f359b))
22
-
23
- ## [1.0.0-beta.23](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/compare/@lambo-design-mobile/lambo-js-bridge@1.0.0-beta.22...@lambo-design-mobile/lambo-js-bridge@1.0.0-beta.23) (2025-02-28)
24
-
25
-
26
- ### ✨ Features | 新功能
27
-
28
- * **@lambo-design-mobile/js-bridge:** 更改录音功能调用方式 ([2aa9dd0](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/commit/2aa9dd033c77b2cdb8f14787f3420f903da7e961))
29
-
30
- ## [1.0.0-beta.22](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/compare/@lambo-design-mobile/lambo-js-bridge@1.0.0-beta.21...@lambo-design-mobile/lambo-js-bridge@1.0.0-beta.22) (2025-02-21)
31
-
32
-
33
- ### 🐛 Bug Fixes | Bug 修复
34
-
35
- * **@lambo-design-mobile/js-bridge:** 修正录音bug ([5fc3bc1](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/commit/5fc3bc16a07718380e10f74616198f2c9b0dbb35))
36
-
37
-
38
- ### ✨ Features | 新功能
39
-
40
- * **@lambo-design-mobile/js-bridge:** 新增可传入参数 ([17d57b0](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/commit/17d57b0ea87214eb5773c234154f025c263146a9))
41
- * **@lambo-design-mobile/js-bridge:** 新增录音功能 ([ca7bd5e](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/commit/ca7bd5e77c0f49b8b8d5c1c05dd873a50fa375f1))
42
- * **@lambo-design-mobile/js-bridge:** 新增录音功能说明文档 ([9c36a35](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/commit/9c36a35942046554b5f9ee4f0fd2419964ed3aa4))
43
- * **@lambo-design-mobile/js-bridge:** 新增录音预览、录音状态、录音地址 ([7c6ea67](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/commit/7c6ea67769de76cd83e4d83ae1d3cb8b2f25785a))
2
+ ## [1.0.0-beta.28](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/compare/@lambo-design-mobile/lambo-js-bridge@1.0.0-beta.27...@lambo-design-mobile/lambo-js-bridge@1.0.0-beta.28) (2025-04-17)
44
3
 
4
+ ## [1.0.0-beta.27](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/compare/@lambo-design-mobile/lambo-js-bridge@1.0.0-beta.26...@lambo-design-mobile/lambo-js-bridge@1.0.0-beta.27) (2025-03-25)
5
+
6
+
7
+ ### ✨ Features | 新功能
8
+
9
+ * **@lambo-design-mobile/js-bridge:** 生物识别接口新增入参 ([b276936](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/commit/b276936a9a6b80c6e96cb00ae3e08fc8ad466795))
10
+
11
+ ## [1.0.0-beta.26](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/compare/@lambo-design-mobile/lambo-js-bridge@1.0.0-beta.25...@lambo-design-mobile/lambo-js-bridge@1.0.0-beta.26) (2025-03-19)
12
+
13
+
14
+ ### ✨ Features | 新功能
15
+
16
+ * **@lambo-design-mobile/js-bridge:** 新增生物认证接口 ([cfb8f94](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/commit/cfb8f9453f3ec769463b1cacc8fa9ab5b32e808f))
17
+
18
+ ## [1.0.0-beta.25](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/compare/@lambo-design-mobile/lambo-js-bridge@1.0.0-beta.24...@lambo-design-mobile/lambo-js-bridge@1.0.0-beta.25) (2025-03-10)
19
+
20
+
21
+ ### ✨ Features | 新功能
22
+
23
+ * **@lambo-design-mobile/js-bridge:** 录音接口新增silenceDelay、silenceStopSeconds、volumeThreshold入参 ([e501510](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/commit/e5015100c715b07a677ca90dffd4228ae13bd659))
24
+
25
+ ## [1.0.0-beta.24](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/compare/@lambo-design-mobile/lambo-js-bridge@1.0.0-beta.23...@lambo-design-mobile/lambo-js-bridge@1.0.0-beta.24) (2025-03-04)
26
+
27
+
28
+ ### ✨ Features | 新功能
29
+
30
+ * **@lambo-design-mobile/js-bridge:** 录音新增base64出参;新增下载接口 ([131e4a6](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/commit/131e4a68228d528badea094d057a3d81c41f359b))
31
+
32
+ ## [1.0.0-beta.23](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/compare/@lambo-design-mobile/lambo-js-bridge@1.0.0-beta.22...@lambo-design-mobile/lambo-js-bridge@1.0.0-beta.23) (2025-02-28)
33
+
34
+
35
+ ### ✨ Features | 新功能
36
+
37
+ * **@lambo-design-mobile/js-bridge:** 更改录音功能调用方式 ([2aa9dd0](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/commit/2aa9dd033c77b2cdb8f14787f3420f903da7e961))
38
+
39
+ ## [1.0.0-beta.22](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/compare/@lambo-design-mobile/lambo-js-bridge@1.0.0-beta.21...@lambo-design-mobile/lambo-js-bridge@1.0.0-beta.22) (2025-02-21)
40
+
41
+
42
+ ### 🐛 Bug Fixes | Bug 修复
43
+
44
+ * **@lambo-design-mobile/js-bridge:** 修正录音bug ([5fc3bc1](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/commit/5fc3bc16a07718380e10f74616198f2c9b0dbb35))
45
+
46
+
47
+ ### ✨ Features | 新功能
48
+
49
+ * **@lambo-design-mobile/js-bridge:** 新增可传入参数 ([17d57b0](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/commit/17d57b0ea87214eb5773c234154f025c263146a9))
50
+ * **@lambo-design-mobile/js-bridge:** 新增录音功能 ([ca7bd5e](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/commit/ca7bd5e77c0f49b8b8d5c1c05dd873a50fa375f1))
51
+ * **@lambo-design-mobile/js-bridge:** 新增录音功能说明文档 ([9c36a35](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/commit/9c36a35942046554b5f9ee4f0fd2419964ed3aa4))
52
+ * **@lambo-design-mobile/js-bridge:** 新增录音预览、录音状态、录音地址 ([7c6ea67](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/commit/7c6ea67769de76cd83e4d83ae1d3cb8b2f25785a))
53
+
45
54
  ## [1.0.0-beta.21](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/compare/@lambo-design-mobile/lambo-js-bridge@1.0.0-beta.20...@lambo-design-mobile/lambo-js-bridge@1.0.0-beta.21) (2025-01-23)
46
55
 
47
56
 
package/README.md CHANGED
@@ -456,13 +456,25 @@ async downloadFile() {
456
456
  提供本地生物特征认证能力,支持指纹/面容识别验证,支持查询设备可用生物特征类型。
457
457
 
458
458
  ``` javascript
459
- async localAuth() {
459
+ async localAuth() {
460
460
  try {
461
- const result = await this.$lamboJsBridge.localAuthPlugin()
461
+ const options = {
462
+ localizedReason: 'A1',
463
+ biometricHint: 'A2',
464
+ cancelButton: 'A3',
465
+ signInTitle: 'A4'
466
+ }
467
+ const result = await this.$lamboJsBridge.localAuthPlugin(options)
462
468
  this.localAuthResult = JSON.stringify(result, null, 2)
469
+ console.log('localAuthResult:', result);
463
470
  this.availableBiometrics = '' // 清空另一个结果
464
471
  } catch (error) {
465
- this.localAuthResult = `认证失败: ${error.message}`
472
+ // 结构化错误处理
473
+ const errorMessage = error.msg || error.message || '未知错误';
474
+ const authId = error.authId || '未知设备';
475
+
476
+ this.localAuthResult = `认证失败:${errorMessage},authId:${authId}`;
477
+ console.error('完整错误信息:', error);
466
478
  }
467
479
  },
468
480
  async getAvailableBiometrics() {
@@ -478,7 +490,17 @@ async localAuth() {
478
490
 
479
491
  ### 参数说明
480
492
 
481
- `localAuthPlugin`: 无需参数<br>
493
+ `localAuthPlugin params`: Object
494
+
495
+ | 属性 | 类型 | 默认值 | 必填 | 支持平台 | 说明 |
496
+ |-----------|--------|-------|-----|----------|---------------------|
497
+ | localizedReason | string | 认证 | 否 | Yuntu | 自定义生物识别验证弹窗居中正文文字 |
498
+ | biometricHint | string | 扫描指纹进行身份验证 | 否 | Yuntu | 自定义生物识别验证弹窗副标题文字 |
499
+ | cancelButton | string | 取消 | 否 | Yuntu | 自定义生物识别验证弹窗取消位置按钮文字 |
500
+ | signInTitle | string | 指纹验证 | 否 | Yuntu | 自定义生物识别验证弹窗标题 |
501
+
502
+ <br>
503
+
482
504
  `getAvailableBiometrics`: 无需参数
483
505
 
484
506
  ### 返回说明
@@ -494,8 +516,8 @@ async localAuth() {
494
516
 
495
517
  `getAvailableBiometrics: Promise<Object>`
496
518
 
497
- | 属性 | 类型 | 默认值 | 必填 | 支持平台 | 说明 |
498
- |--------|--------|----------|-----|----------|---------|
499
- | msg | string | | 是 | Yuntu | 返回信息 |
500
- | authId | array | | 是 | Yuntu | 支持的生物识别 |
501
- | authId | string | | 是 | Yuntu | 设备ID |
519
+ | 属性 | 类型 | 默认值 | 必填 | 支持平台 | 说明 |
520
+ |---------------------|--------|----------|-----|----------|---------|
521
+ | msg | string | | 是 | Yuntu | 返回信息 |
522
+ | availableBiometrics | array | | 是 | Yuntu | 支持的生物识别 |
523
+ | authId | string | | 是 | Yuntu | 设备ID |
package/demo/index.vue CHANGED
@@ -86,6 +86,7 @@
86
86
 
87
87
  <script>
88
88
  import LamboJsBridge from "../src/sdk/LamboJsBridge";
89
+ import {PRINTER_PLUGIN} from "../src/sdk/YunTuAdapter";
89
90
 
90
91
  export default {
91
92
  name: 'js-bridge-demo',
@@ -144,7 +145,7 @@ export default {
144
145
  weComId:this.weComId,
145
146
  agentId:this.agentId,
146
147
  dingTalkId:this.dingTalkId,
147
- pluginConfig:["localAuthPlugin","amapPlugin","tabBarPlugin","scanCodePlugin","filePreviewPlugin","autoRecordPlugin","downloadFilePlugin"],
148
+ pluginConfig:["localAuthPlugin","amapPlugin","tabBarPlugin","scanCodePlugin","filePreviewPlugin","autoRecordPlugin","downloadFilePlugin", PRINTER_PLUGIN],
148
149
  };
149
150
  this.$lamboJsBridge = new LamboJsBridge(options);
150
151
  await this.getPlatform();
@@ -349,15 +350,28 @@ export default {
349
350
  },
350
351
  async localAuth() {
351
352
  try {
352
- const result = await this.$lamboJsBridge.localAuthPlugin()
353
+ const options = {
354
+ localizedReason: 'A1',
355
+ biometricHint: 'A2',
356
+ cancelButton: 'A3',
357
+ signInTitle: 'A4'
358
+ }
359
+ const result = await this.$lamboJsBridge.localAuthPlugin(options)
353
360
  this.localAuthResult = JSON.stringify(result, null, 2)
361
+ console.log('localAuthResult:', result);
354
362
  this.availableBiometrics = '' // 清空另一个结果
355
363
  } catch (error) {
356
- this.localAuthResult = `认证失败: ${error.message}`
364
+ // 结构化错误处理
365
+ const errorMessage = error.msg || error.message || '未知错误';
366
+ const authId = error.authId || '未知设备';
367
+
368
+ this.localAuthResult = `认证失败:${errorMessage},authId:${authId}`;
369
+ console.error('完整错误信息:', error);
357
370
  }
358
371
  },
359
372
  async getAvailableBiometrics() {
360
373
  try {
374
+
361
375
  const result = await this.$lamboJsBridge.getAvailableBiometrics()
362
376
  this.availableBiometrics = JSON.stringify(result, null, 2)
363
377
  this.localAuthResult = '' // 清空另一个结果
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lambo-design-mobile/lambo-js-bridge",
3
- "version": "1.0.0-beta.26",
3
+ "version": "1.0.0-beta.28",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "author": "lambo",
@@ -0,0 +1,1034 @@
1
+ /**
2
+ * Created by HuDianxing on 2017-12-16.
3
+ *
4
+ * 德佟电子标签打印机 JavaScript 接口的封装。
5
+ *
6
+ * Copyright(C) 2011~2017, 上海道臻信息技术有限公司
7
+ *
8
+ */
9
+ const api = {};
10
+ let LPAPIPlugin = new Proxy({window}, {
11
+ get(target, prop, receiver) {
12
+ const original = target[prop];
13
+ if (typeof original === "undefined" && typeof window?.printer?.[prop] === "function") {
14
+ return async function (...args) {
15
+ return window.printer[prop].apply(window.printer, args);
16
+ };
17
+ } else if (typeof original !== "undefined") {
18
+ return original;
19
+ } else {
20
+ console.error(`获取安卓平台打印机接口${prop}失败`);
21
+ return (...args) => {console.error(`调用${prop}接口失败,调用参数为%O`, args)};
22
+ }
23
+ }
24
+ });
25
+ let lpapiModel = window.lpapiModel;
26
+
27
+ /***************************************************************************
28
+ * 打印机的打开与断开操作。
29
+ **************************************************************************/
30
+
31
+ /**
32
+ * 以字符串的形式返回已经安装过的所有打印机名称,不同打印机名称间以英文","分隔。
33
+ * @param names 打印机型号,
34
+ * 空字符串表示返回所有型号的打印机
35
+ * 要获取多个型号的打印机,多个型号之间可以用";"进行分割;
36
+ * @param success 成功回调函数;
37
+ * @param fail 失败回调函数;
38
+ * 平台支持:Android+IOS;
39
+ */
40
+ api.getAllPrinters = function (names, success, fail) {
41
+ if (typeof names === "function") {
42
+ fail = success;
43
+ success = names;
44
+ names = "";
45
+ }
46
+
47
+ if (Mobile.isAndroid()) {
48
+ LPAPIPlugin.getAllPrinters(success, fail, {
49
+ name: names
50
+ });
51
+ } else if (Mobile.isIOS()) {
52
+ // 设置型号限制
53
+ if (names) {
54
+ var nameKeys = names.split(";");
55
+ lpapiModel.jsSetSupportPrefixs(nameKeys);
56
+ }
57
+ lpapiModel.jsScanPrinters(function(array){
58
+ var str = array.join(",");
59
+ success(str);
60
+ }, fail);
61
+ }
62
+ };
63
+
64
+ /**
65
+ * 以数组的形式返货制定型号打印机的详细信息;
66
+ * @param names 打印机型号(或者成功回调函数),
67
+ * 空字符串表示返回所有型号的打印机
68
+ * 要获取多个型号的打印机,多个型号之间可以用";"进行分割;
69
+ * @param success 成功的结果回调函数;
70
+ * @param error 失败的结果回调函数;
71
+ * 平台支持:Android;
72
+ */
73
+ api.getAllPrinterAddresses = function (names, success, error = () => {}) {
74
+ if (typeof names === "function") {
75
+ success = names;
76
+ names = "";
77
+ }
78
+
79
+ if (Mobile.isAndroid()) {
80
+ LPAPIPlugin.getAllPrinterAddresses(success, error, {
81
+ name: names
82
+ });
83
+ }
84
+ };
85
+
86
+ // /**
87
+ // * 获取默认打印机详细信息;
88
+ // *
89
+ // * @param names 所要获取打印机的型号,不指定则获取所有型号;
90
+ // * @param success 成功的结果回调函数;
91
+ // * @param error 失败的结果回调函数;
92
+ // * 平台支持:Android;
93
+ // */
94
+ // api.getFirstPrinter = function (names, success, error = () => {}) {
95
+ // if (typeof names === "function"){
96
+ // success = names;
97
+ // names = "";
98
+ // }
99
+ //
100
+ // if (Mobile.isAndroid()) {
101
+ // LPAPIPlugin.getFirstPrinter(success, error, {
102
+ // name: names
103
+ // });
104
+ // }
105
+ // };
106
+
107
+ // /**
108
+ // * 打开指定名称的打印机(异步调用)。
109
+ // * @param printerName
110
+ // * 打印机名称。打印机名称类型:
111
+ // * 1、空字符串:打开当前客户端系统上的第一个支持的打印机;
112
+ // * 2、打印机型号:例如:DT20S;
113
+ // * 3、打印机名称:例如:DT20S-60901687;
114
+ // * 4、MAC地址:打开指定地址的打印机,例如:00:18:E4:0C:68:CA。
115
+ // * @param success 成功回调函数;
116
+ // * @param fail 失败回调函数;
117
+ // * 平台支持:Android+IOS;
118
+ // */
119
+ // api.openPrinter = function (printerName, success, fail) {
120
+ // var printer = printerName;
121
+ // var successCallback = success;
122
+ // var failCallback = fail;
123
+ // if (typeof printerName === "function") {
124
+ // successCallback = printerName;
125
+ // failCallback = success;
126
+ // printer = null;
127
+ // }
128
+ //
129
+ // if (Mobile.isAndroid()) {
130
+ // LPAPIPlugin.openPrinter(successCallback, failCallback, {
131
+ // name: printer
132
+ // });
133
+ // } else if (Mobile.isIOS()) {
134
+ // lpapiModel.jsOpenPrinter(success, fail, [printerName]);
135
+ // }
136
+ // };
137
+
138
+ /**
139
+ * 断开当前打印机的连接。
140
+ * 平台支持:Android+IOS;
141
+ * @param success 成功回调函数;
142
+ * @param error 失败回调函数;
143
+ */
144
+ api.closePrinter = function (success = () => {}, error = () => {}) {
145
+ if (Mobile.isAndroid()) {
146
+ LPAPIPlugin.closePrinter(success, error);
147
+ } else if (Mobile.isIOS()) {
148
+ lpapiModel.jsClosePrinter();
149
+ }
150
+ };
151
+
152
+ /**
153
+ * 得到当前使用的打印机名称。
154
+ * @param success 成功回调函数;
155
+ * @param error 失败回调函数;
156
+ * @return 如果已连接打印机,则返回当前使用的打印机名称,否则返回空字符串。
157
+ * 平台支持:Android+IOS;
158
+ */
159
+ api.getPrinterName = function (success, error) {
160
+ if (Mobile.isAndroid()) {
161
+ LPAPIPlugin.getPrinterName(success, error);
162
+ } else if (Mobile.isIOS()) {
163
+ lpapiModel.jsConnectingPrinterName(success, error);
164
+ }
165
+ };
166
+
167
+ /**
168
+ * 获取当前打印机的链接信息;
169
+ * @param success 成功回调函数;
170
+ * @param error 失败回调函数;
171
+ * 平台支持:Android;
172
+ */
173
+ api.getPrinterState = function (success, error = () => {}) {
174
+ if (Mobile.isAndroid()) {
175
+ LPAPIPlugin.getPrinterState(success, error);
176
+ }
177
+ };
178
+
179
+ /**
180
+ * 获取当前已连接打印机的详细信息;
181
+ * @param success 成功回调函数;
182
+ * @param error 失败回调函数;
183
+ * @param success 结果回调函数;
184
+ * 平台支持:Android;
185
+ */
186
+ api.getPrinterInfo = function (success, error = () => {}) {
187
+ if (Mobile.isAndroid()) {
188
+ LPAPIPlugin.getPrinterInfo(success, error);
189
+ }
190
+ };
191
+
192
+ /**
193
+ * 判断当前打印机是否打开(连接成功)?
194
+ * 平台支持:Android;
195
+ * @param success 成功回调函数;
196
+ * @param error 失败回调函数;
197
+ */
198
+ api.isPrinterOpened = function (success, error) {
199
+ if (Mobile.isAndroid()) {
200
+ LPAPIPlugin.isPrinterOpened(success, error);
201
+ }
202
+ };
203
+
204
+ /**
205
+ * 重新连接上次连接的打印机(异步调用)。
206
+ * @param success 成功回调函数;
207
+ * @param error 失败回调函数;
208
+ * @return 异步连接操作是否成功提交?
209
+ * 注意:返回成功仅仅表示操作被提交成功,并不代表着连接成功了,具体的连接结果会通过回调函数给出通知。
210
+ * 平台支持:Android;
211
+ */
212
+ api.reopenPrinter = function (success, error) {
213
+ if (Mobile.isAndroid()) {
214
+ LPAPIPlugin.reopenPrinter(success, error);
215
+ }
216
+ };
217
+
218
+ /***************************************************************************
219
+ * 打印任务的开始,分页,结束等操作。
220
+ **************************************************************************/
221
+
222
+ /**
223
+ * 以指定的参数,开始一个打印任务。
224
+ *
225
+ * @param width
226
+ * 标签宽度(单位mm)。
227
+ * @param height
228
+ * 标签高度(单位mm)。
229
+ * @param orientation
230
+ * 标签打印方向。0:不旋转;90:顺时针旋转90度;180:旋转180度;270:逆时针旋转90度。
231
+ * @param success 成功回调函数;
232
+ * @param error 失败回调函数;
233
+ * @return 成功与否?
234
+ * 平台支持:Android+IOS;
235
+ */
236
+ api.startJob = function (width, height, orientation, success = () => {}, error = () => {}) {
237
+ if (Mobile.isAndroid()) {
238
+ LPAPIPlugin.startJob(success, error,{
239
+ width: width,
240
+ height: height,
241
+ orientation: orientation
242
+ });
243
+ } else if (Mobile.isIOS()) {
244
+ lpapiModel.jsStartPrint([width, height, orientation, 1]);
245
+ }
246
+ };
247
+
248
+ /**
249
+ * 开始一个打印页面。
250
+ * @param success 成功回调函数;
251
+ * @param error 失败回调函数;
252
+ * 平台支持:Android;
253
+ */
254
+ api.startPage = function (success, error) {
255
+ if (Mobile.isAndroid()) {
256
+ LPAPIPlugin.startPage(success, error);
257
+ }
258
+ };
259
+
260
+ /**
261
+ * 结束一个打印页面。
262
+ * 平台支持:Android;
263
+ */
264
+ api.endPage = function (success = () => {}, error = () => {}) {
265
+ if (Mobile.isAndroid()) {
266
+ LPAPIPlugin.endPage(success, error);
267
+ }
268
+ };
269
+
270
+ /**
271
+ * 结束绘图任务。
272
+ * 调用endJob()后,并未将打印任务提交给打印机,但是可以通过调用getJobPages(),然后以图片形式获取打印任务;
273
+ * @param success 成功回调函数;
274
+ * @param error 失败回调函数;
275
+ * 平台支持:Android;
276
+ */
277
+ api.endJob = function (success = () => {}, error = () => {}) {
278
+ if (Mobile.isAndroid()) {
279
+ LPAPIPlugin.endJob(success, error);
280
+ }
281
+ };
282
+
283
+ /**
284
+ * 取消绘图任务,用于取消任务提交前的所有绘制操作。
285
+ * @param success 成功回调函数;
286
+ * @param error 失败回调函数;
287
+ * 平台支持:Android
288
+ */
289
+ api.abortJob = function (success = () => {}, error = () => {}) {
290
+ if (Mobile.isAndroid()) {
291
+ LPAPIPlugin.abortJob(success, error);
292
+ }
293
+ };
294
+
295
+ /**
296
+ * 提交打印数据,进行真正的打印。
297
+ * @param success 成功回调函数;
298
+ * @param error 失败回调函数;
299
+ * @param options 可选,具体参数取决于打印机和原生实现
300
+ * 平台支持:Android+IOS;
301
+ */
302
+ api.commitJob = function (success, error, options =null) {
303
+ if (Mobile.isAndroid()) {
304
+ LPAPIPlugin.commitJob(success, error, options);
305
+ } else if (Mobile.isIOS()) {
306
+ lpapiModel.jsCommitPrint(success, error);
307
+ }
308
+ };
309
+
310
+ // /**
311
+ // * 取消当前的打印操作,用于在提交打印任务后执行取消操作。
312
+ // * 平台支持:Android;
313
+ // */
314
+ // api.cancel = function () {
315
+ // if (Mobile.isAndroid()) {
316
+ // LPAPIPlugin.cancel();
317
+ // }
318
+ // };
319
+
320
+ /**
321
+ * 调用函数endJob() 之后可以调用该函数,获取base64图片格式的打印任务;
322
+ * @param success 数据获取成功回调函数(返回值);
323
+ * @param error 数据获取失败回调函数(返回值);
324
+ * 平台支持:Android;
325
+ */
326
+ api.getJobPages = function (success, error = () => {}) {
327
+ if (Mobile.isAndroid()) {
328
+ LPAPIPlugin.getJobPages(success, error);
329
+ }
330
+ };
331
+
332
+ // /**
333
+ // * 打印base64格式的图片对象
334
+ // * @param image base64格式图片或者URL路径;
335
+ // * @param success 打印成功回调;
336
+ // * @param fail 打印失败回调;
337
+ // * 平台支持:Android;
338
+ // */
339
+ // api.printImage = function (image, success, fail) {
340
+ // if (Mobile.isAndroid()) {
341
+ // LPAPIPlugin.printImage({
342
+ // image: image || ""
343
+ // }, success, fail);
344
+ // }
345
+ // };
346
+
347
+ /***************************************************************************
348
+ * 打印参数设置。
349
+ **************************************************************************/
350
+
351
+ /**
352
+ * 得到当前打印动作的顺时针旋转角度。
353
+ *
354
+ * @param success 成功回调函数;
355
+ * @param error 失败回调函数;
356
+ * 当前打印动作的顺时针旋转角度(0,90,180,270)。
357
+ * 平台支持:Android;
358
+ */
359
+ api.getItemOrientation = function (success, error = () => {}) {
360
+ if (Mobile.isAndroid()) {
361
+ LPAPIPlugin.getItemOrientation(success, error);
362
+ }
363
+ };
364
+
365
+ /**
366
+ * 设置打印动作的旋转角度。
367
+ * @param success 成功回调函数;
368
+ * @param error 失败回调函数;
369
+ * @param orientation
370
+ * orientation: 旋转角度。参数描述如下:
371
+ * 0:不旋转;
372
+ * 90:顺时针旋转90度;
373
+ * 180:旋转180度;
374
+ * 270:逆时针旋转90度。
375
+ * 平台支持:Android + IOS;
376
+ */
377
+ api.setItemOrientation = function (orientation, success = () => {}, error = () => {}) {
378
+ if (Mobile.isAndroid()) {
379
+ LPAPIPlugin.setItemOrientation(success, error, {
380
+ orientation: orientation || 0
381
+ });
382
+ } else if (Mobile.isIOS()) {
383
+ lpapiModel.jsSetItemOrientation([orientation]);
384
+ }
385
+ };
386
+
387
+ /**
388
+ * 得到当前打印动作的水平对齐方式。
389
+ *
390
+ * @param success 成功回调函数;
391
+ * @param error 失败回调函数;
392
+ * 水平对齐方式值如下:
393
+ * 0:水平居左;
394
+ * 1:水平居中;
395
+ * 2:水平居右;
396
+ * 平台支持:Android;
397
+ */
398
+ api.getItemHorizontalAlignment = function (success, error = () => {}) {
399
+ if (Mobile.isAndroid()) {
400
+ LPAPIPlugin.getItemHorizontalAlignment(success, error);
401
+ }
402
+ };
403
+
404
+ /**
405
+ * 设置打印动作的水平对齐方式。
406
+ *
407
+ * @param alignment
408
+ * 水平对齐方式。参数描述如下:
409
+ * 0:水平居左(默认方式);
410
+ * 1:水平居中;
411
+ * 2:水平居右。
412
+ * 平台支持:Android + IOS;
413
+ */
414
+ api.setItemHorizontalAlignment = function (alignment, success = () => {}, error = () => {}) {
415
+ if (Mobile.isAndroid()) {
416
+ LPAPIPlugin.setItemHorizontalAlignment(success, error,{
417
+ alignment: alignment || 0
418
+ });
419
+ } else if (Mobile.isIOS()) {
420
+ lpapiModel.jsSetItemHorizontalAlignment([alignment]);
421
+ }
422
+ };
423
+
424
+ /**
425
+ * 得到当前打印动作的垂直对齐方式。
426
+ *
427
+ * @param success 成功回调函数;
428
+ * @param error 失败回调函数;
429
+ * 后续打印动作的垂直对齐方式。返回结果描述如下:
430
+ * 0:垂直居上;
431
+ * 1:垂直居中;
432
+ * 2:垂直居下;
433
+ * 平台支持:Android;
434
+ */
435
+ api.getItemVerticalAlignment = function (success, error = () => {}) {
436
+ if (Mobile.isAndroid()) {
437
+ LPAPIPlugin.getItemVerticalAlignment(success, error);
438
+ } else if (Mobile.isIOS()) {
439
+
440
+ }
441
+ };
442
+
443
+ /**
444
+ * 设置打印动作的垂直对齐方式。
445
+ * @param success 成功回调函数;
446
+ * @param error 失败回调函数;
447
+ * @param alignment
448
+ * 垂直对齐方式,参数描述如下:
449
+ * 0:垂直居上(默认方式);
450
+ * 1:垂直居中;
451
+ * 2:垂直居下。
452
+ * 平台支持:Android + IOS;
453
+ */
454
+ api.setItemVerticalAlignment = function (alignment, success = () => {}, error = () => {}) {
455
+ if (Mobile.isAndroid()) {
456
+ LPAPIPlugin.setItemVerticalAlignment(success, error, {
457
+ alignment: alignment || 0
458
+ });
459
+ } else if (Mobile.isIOS()) {
460
+ lpapiModel.jsSetItemVerticalAlignment([alignment]);
461
+ }
462
+ };
463
+
464
+ /**
465
+ * 得到线条画笔对齐方式。
466
+ * @param success 成功回调函数;
467
+ * @param error 失败回调函数;
468
+ * @return 线条画笔对齐方式,<br>
469
+ * 数值为以下两者之一:<br>
470
+ * PenAlignment.CENTER:绘制的线以指定的位置为中央;<br>
471
+ * PenAlignment.INSET:绘制的线在指定的位置内侧。<br>
472
+ * 平台支持:Android;
473
+ */
474
+ api.getItemPenAlignment = function (success, error = () => {}) {
475
+ if (Mobile.isAndroid()) {
476
+ LPAPIPlugin.getItemPenAlignment(success, error);
477
+ }
478
+ };
479
+
480
+ /**
481
+ * 设置线条画笔对齐方式。
482
+ * @param success 成功回调函数;
483
+ * @param error 失败回调函数;
484
+ * @param penAlignment
485
+ * 线条画笔对齐方式,<br>
486
+ * 数值为以下两者之一:<br>
487
+ * PenAlignment.CENTER:绘制的线以指定的位置为中央; <br>
488
+ * PenAlignment.INSET:绘制的线在指定的位置内侧。
489
+ * 平台支持:Android;
490
+ */
491
+ api.setItemPenAlignment = function (penAlignment, success = () => {}, error = () => {}) {
492
+ if (Mobile.isAndroid()) {
493
+ LPAPIPlugin.setItemPenAlignment(success, error,{
494
+ alignment: penAlignment
495
+ });
496
+ }
497
+ };
498
+
499
+ /***************************************************************************
500
+ * 打印对象的绘制操作。
501
+ **************************************************************************/
502
+
503
+ /**
504
+ * 打印文本。
505
+ *
506
+ * @param success 成功回调函数;
507
+ * @param error 失败回调函数;
508
+ *
509
+ * @param text
510
+ * 文本内容。
511
+ * @param x
512
+ * 打印对象的位置(单位mm)。
513
+ * @param y
514
+ * 打印对象的位置(单位mm)。
515
+ * @param width
516
+ * 打印对象的宽度(单位mm)。
517
+ * @param height
518
+ * 打印对象的高度(单位mm)。
519
+ * height 为 0 时,真正的打印文本高度会根据内容来扩展;否则当指定的高度不足以打印指定的文本时,会自动缩小字体来适应指定的高度进行文本打印。
520
+ * @param fontHeight
521
+ * 文本的字体高度(单位mm)。
522
+ * @param fontStyle
523
+ * 文本的字体风格(可按位组合),可以不指定,默认为0(正常)。0:正常;1:粗体;2:斜体;3:粗斜体 ;4:下划线;8:删除线。
524
+ * @return 打印成功与否?
525
+ */
526
+ api.drawText = function (text, x, y, width, height, fontHeight, fontStyle, success = () => {}, error = () => {}) {
527
+ if (Mobile.isAndroid()) {
528
+ LPAPIPlugin.drawText(success, error, {
529
+ text: text,
530
+ x: x || 0,
531
+ y: y || 0,
532
+ width: width || 0,
533
+ height: height || 0,
534
+ fontHeight: fontHeight || 0,
535
+ fontStyle: fontStyle || 0
536
+ });
537
+ } else if (Mobile.isIOS()) {
538
+ lpapiModel.jsDrawText([text, x, y, width, height, "", fontHeight, fontStyle]);
539
+ }
540
+ };
541
+
542
+ /**
543
+ * 以指定的线宽,打印矩形框。
544
+ * @param success 成功回调函数;
545
+ * @param error 失败回调函数;
546
+ * @param x
547
+ * 绘制的矩形框的左上角水平位置(单位mm)。
548
+ * @param y
549
+ * 绘制的矩形框的左上角垂直位置(单位mm)。
550
+ * @param width
551
+ * 绘制的矩形框的水平宽度(单位mm)。
552
+ * @param height
553
+ * 绘制的矩形框的垂直高度(单位mm)。
554
+ * @param lineWidth
555
+ * 矩形框的线宽(单位mm)。矩形框的线宽是向矩形框内部延伸的。
556
+ * @return 打印成功与否?
557
+ */
558
+ api.drawRectangle = function (x, y, width, height, lineWidth, success = () => {}, error = () => {}) {
559
+ if (Mobile.isAndroid()) {
560
+ LPAPIPlugin.drawRectangle(success, error,{
561
+ x: x,
562
+ y: y,
563
+ width: width,
564
+ height: height,
565
+ lineWidth: lineWidth
566
+ });
567
+ } else if (Mobile.isIOS()) {
568
+ lpapiModel.jsDrawRectangle([x, y, width, height, lineWidth, false]);
569
+ }
570
+ };
571
+
572
+ /**
573
+ * 打印填充的矩形框。
574
+ * @param success 成功回调函数;
575
+ * @param error 失败回调函数;
576
+ * @param x
577
+ * 绘制的填充矩形框的左上角水平位置(单位mm)。
578
+ * @param y
579
+ * 绘制的填充矩形框的左上角垂直位置(单位mm)。
580
+ * @param width
581
+ * 绘制的填充矩形框的水平宽度(单位mm)。
582
+ * @param height
583
+ * 绘制的填充矩形框的垂直高度(单位mm)。
584
+ * @return 打印成功与否?
585
+ */
586
+ api.fillRectangle = function (x, y, width, height, success = () => {}, error = () => {}) {
587
+ if (Mobile.isAndroid()) {
588
+ LPAPIPlugin.fillRectangle(success, error,{
589
+ x: x,
590
+ y: y,
591
+ width: width,
592
+ height: height
593
+ });
594
+ } else if (Mobile.isIOS()) {
595
+ lpapiModel.jsDrawRectangle([x, y, width, height, 0.1, true]);
596
+ }
597
+ };
598
+
599
+ /**
600
+ * 以指定的线宽,打印圆角矩形框。
601
+ * @param success 成功回调函数;
602
+ * @param error 失败回调函数;
603
+ * @param x
604
+ * 绘制的圆角矩形框的左上角水平位置(单位mm)。
605
+ * @param y
606
+ * 绘制的圆角矩形框的左上角垂直位置(单位mm)。
607
+ * @param width
608
+ * 绘制的圆角矩形框的水平宽度(单位mm)。
609
+ * @param height
610
+ * 绘制的圆角矩形框的垂直高度(单位mm)。
611
+ * @param cornerWidth
612
+ * 圆角宽度(单位mm)。
613
+ * @param cornerHeight
614
+ * 圆角高度(单位mm)。
615
+ * @param lineWidth
616
+ * 圆角矩形框的线宽(单位mm)。圆角矩形框的线宽是向圆角矩形框内部延伸的。
617
+ * @return 打印成功与否?
618
+ */
619
+ api.drawRoundRectangle = function (x, y, width, height, cornerWidth, cornerHeight, lineWidth, success = () => {}, error = () => {}) {
620
+ if (Mobile.isAndroid()) {
621
+ LPAPIPlugin.drawRoundRectangle(success, error,{
622
+ x: x,
623
+ y: y,
624
+ width: width,
625
+ height: height,
626
+ cornerWidth: cornerWidth,
627
+ cornerHeight: cornerHeight,
628
+ lineWidth: lineWidth
629
+ });
630
+ } else if (Mobile.isIOS()) {
631
+ lpapiModel.jsDrawRoundRectangle([x, y, width, height, lineWidth, cornerWidth, false]);
632
+ }
633
+ };
634
+
635
+ /**
636
+ * 打印填充的圆角矩形框。
637
+ * @param success 成功回调函数;
638
+ * @param error 失败回调函数;
639
+ * @param x
640
+ * 绘制的填充圆角矩形框的左上角水平位置(单位mm)。
641
+ * @param y
642
+ * 绘制的填充圆角矩形框的左上角垂直位置(单位mm)。
643
+ * @param width
644
+ * 绘制的填充圆角矩形框的水平宽度(单位mm)。
645
+ * @param height
646
+ * 绘制的填充圆角矩形框的垂直高度(单位mm)。
647
+ * @param cornerWidth
648
+ * 圆角宽度(单位mm)。
649
+ * @param cornerHeight
650
+ * 圆角高度(单位mm)。
651
+ * @return 打印成功与否?
652
+ */
653
+ api.fillRoundRectangle = function (x, y, width, height, cornerWidth, cornerHeight, success = () => {}, error = () => {}) {
654
+ if (Mobile.isAndroid()) {
655
+ LPAPIPlugin.fillRoundRectangle(success, error,{
656
+ x: x,
657
+ y: y,
658
+ width: width,
659
+ height: height,
660
+ cornerWidth: cornerWidth,
661
+ cornerHeight: cornerHeight
662
+ });
663
+ } else if (Mobile.isIOS()) {
664
+ lpapiModel.jsDrawRoundRectangle([x, y, width, height, 0.1, cornerWidth, true]);
665
+ }
666
+ };
667
+
668
+ /**
669
+ * 以指定的线宽,打印椭圆/圆。
670
+ * @param success 成功回调函数;
671
+ * @param error 失败回调函数;
672
+ * @param x
673
+ * 绘制的椭圆的左上角水平位置(单位mm)。
674
+ * @param y
675
+ * 绘制的椭圆的左上角垂直位置(单位mm)。
676
+ * @param width
677
+ * 绘制的椭圆的水平宽度(单位mm)。
678
+ * @param height
679
+ * 绘制的椭圆的垂直高度(单位mm)。
680
+ * @param lineWidth
681
+ * 椭圆的线宽(单位mm)。椭圆的线宽是向椭圆内部延伸的。
682
+ * @return 打印成功与否?
683
+ */
684
+ api.drawEllipse = function (x, y, width, height, lineWidth, success = () => {}, error = () => {}) {
685
+ if (Mobile.isAndroid()) {
686
+ LPAPIPlugin.drawEllipse(success, error,{
687
+ x: x,
688
+ y: y,
689
+ width: width,
690
+ height: height,
691
+ lineWidth: lineWidth
692
+ });
693
+ } else if (Mobile.isIOS()) {
694
+ lpapiModel.jsDrawEllipse([x, y, width, height, lineWidth, false]);
695
+ }
696
+ };
697
+
698
+ /**
699
+ * 打印填充的椭圆/圆。
700
+ * @param success 成功回调函数;
701
+ * @param error 失败回调函数;
702
+ * @param x
703
+ * 绘制的填充椭圆的左上角水平位置(单位mm)。
704
+ * @param y
705
+ * 绘制的填充椭圆的左上角垂直位置(单位mm)。
706
+ * @param width
707
+ * 绘制的填充椭圆的水平宽度(单位mm)。
708
+ * @param height
709
+ * 绘制的填充椭圆的垂直高度(单位mm)。
710
+ * @return 打印成功与否?
711
+ */
712
+ api.fillEllipse = function (x, y, width, height, success = () => {}, error = () => {}) {
713
+ if (Mobile.isAndroid()) {
714
+ LPAPIPlugin.fillEllipse(success, error,{
715
+ x: x,
716
+ y: y,
717
+ width: width,
718
+ height: height
719
+ });
720
+ } else if (Mobile.isIOS()) {
721
+ lpapiModel.jsDrawEllipse([x, y, width, height, 0.1, true]);
722
+ }
723
+ };
724
+
725
+ /**
726
+ * 以指定的线宽,打印圆。
727
+ * @param success 成功回调函数;
728
+ * @param error 失败回调函数;
729
+ * @param x
730
+ * 绘制的圆形的X轴圆心位置(单位mm)。
731
+ * @param y
732
+ * 绘制的圆形的Y轴圆心位置(单位mm)。
733
+ * @param radius
734
+ * 绘制的圆的半径(单位mm)。
735
+ * @param lineWidth
736
+ * 圆的线宽(单位mm)。圆的线宽是向圆内部延伸的。
737
+ * @return 打印成功与否?
738
+ */
739
+ api.drawCircle = function (x, y, radius, lineWidth, success = () => {}, error = () => {}) {
740
+ x = x - radius;
741
+ y = y - radius;
742
+
743
+ if (Mobile.isAndroid()) {
744
+ LPAPIPlugin.drawCircle(success, error,{
745
+ x: x,
746
+ y: y,
747
+ radius: radius,
748
+ lineWidth: lineWidth
749
+ });
750
+ } else if (Mobile.isIOS()) {
751
+ lpapiModel.jsDrawCircle([x, y, radius * 2, radius * 2, lineWidth, false]);
752
+ }
753
+ };
754
+
755
+ /**
756
+ * 打印填充的圆。
757
+ * @param success 成功回调函数;
758
+ * @param error 失败回调函数;
759
+ * @param x
760
+ * 绘制的圆形的X轴圆心位置(单位mm)。
761
+ * @param y
762
+ * 绘制的圆形的Y轴圆心位置(单位mm)。
763
+ * @param radius
764
+ * 绘制的填充圆的半径(单位mm)。
765
+ * @return 打印成功与否?
766
+ */
767
+ api.fillCircle = function (x, y, radius, success = () => {}, error = () => {}) {
768
+ x = x - radius;
769
+ y = y - radius;
770
+
771
+ if (Mobile.isAndroid()) {
772
+ LPAPIPlugin.fillCircle(success, error,{
773
+ x: x,
774
+ y: y,
775
+ radius: radius
776
+ });
777
+ } else if (Mobile.isIOS()) {
778
+ lpapiModel.jsDrawCircle([x, y, radius * 2, radius * 2, 0.1, true]);
779
+ }
780
+ };
781
+
782
+ /**
783
+ * 打印线(直线/斜线)。
784
+ * @param success 成功回调函数;
785
+ * @param error 失败回调函数;
786
+ * @param x1
787
+ * 线的起点的水平位置(单位mm)。
788
+ * @param y1
789
+ * 线的起点的垂直位置(单位mm)。
790
+ * @param x2
791
+ * 线的终点的水平位置(单位mm)。
792
+ * @param y2
793
+ * 线的终点的垂直位置(单位mm)。
794
+ * @param lineWidth
795
+ * 线宽(单位mm)。线宽是向线的下方延伸的。
796
+ * @return 打印成功与否?
797
+ */
798
+ api.drawLine = function (x1, y1, x2, y2, lineWidth, success = () => {}, error = () => {}) {
799
+ if (Mobile.isAndroid()) {
800
+ LPAPIPlugin.drawLine(success, error,{
801
+ x1: x1,
802
+ y1: y1,
803
+ x2: x2,
804
+ y2: y2,
805
+ lineWidth: lineWidth
806
+ });
807
+ } else if (Mobile.isIOS()) {
808
+ lpapiModel.jsDrawLine([x1, y1, x2 - x1, y2 - y1]);
809
+ }
810
+ };
811
+
812
+ /**
813
+ * 打印点划线。
814
+ * @param success 成功回调函数;
815
+ * @param error 失败回调函数;
816
+ * @param x1
817
+ * 线的起点的水平位置(单位mm)。
818
+ * @param y1
819
+ * 线的起点的垂直位置(单位mm)。
820
+ * @param x2
821
+ * 线的终点的水平位置(单位mm)。
822
+ * @param y2
823
+ * 线的终点的垂直位置(单位mm)。
824
+ * @param lineWidth
825
+ * 线宽(单位mm)。线宽是向线的下方延伸的。
826
+ * @param dashLen
827
+ * 点划线线段长度的数组(单位mm)。
828
+ * @param dashCount
829
+ * 点划线线段长度数组的元素个数。
830
+ * @return 打印成功与否。
831
+ */
832
+ api.drawDashLine = function (x1, y1, x2, y2, lineWidth, dashLen, dashCount, success = () => {}, error = () => {}) {
833
+ if (Mobile.isAndroid()) {
834
+ LPAPIPlugin.drawDashLine(success, error,{
835
+ x1: x1,
836
+ y1: y1,
837
+ x2: x2,
838
+ y2: y2,
839
+ lineWidth: lineWidth,
840
+ dashLen: dashLen,
841
+ dashCount: dashCount
842
+ });
843
+ } else if (Mobile.isIOS()) {
844
+
845
+ }
846
+ };
847
+
848
+ // /**
849
+ // * 打印点划线。
850
+ // *
851
+ // * @param x1
852
+ // * 线的起点的水平位置(单位mm)。
853
+ // * @param y1
854
+ // * 线的起点的垂直位置(单位mm)。
855
+ // * @param x2
856
+ // * 线的终点的水平位置(单位mm)。
857
+ // * @param y2
858
+ // * 线的终点的垂直位置(单位mm)。
859
+ // * @param lineWidth
860
+ // * 线宽(单位mm)。线宽是向线的下方延伸的。
861
+ // * @param dashLen1
862
+ // * 点划线第一段的长度(单位mm)。
863
+ // * @param dashLen2
864
+ // * 点划线第二段的长度(单位mm)。
865
+ // * @return 打印成功与否。
866
+ // */
867
+ // api.drawDashLine2 = function (x1, y1, x2, y2, lineWidth, dashLen1, dashLen2) {
868
+ // if (Mobile.isAndroid()) {
869
+ // LPAPIPlugin.drawDashLine({
870
+ // x1: x1,
871
+ // y1: y1,
872
+ // x2: x2,
873
+ // y2: y2,
874
+ // lineWidth: lineWidth,
875
+ // dashLen1: dashLen1,
876
+ // dashLen2: dashLen2
877
+ // });
878
+ // } else if (Mobile.isIOS()) {
879
+ //
880
+ // }
881
+ // };
882
+
883
+ // /**
884
+ // * 打印点划线。
885
+ // *
886
+ // * @param x1
887
+ // * 线的起点的水平位置(单位mm)。
888
+ // * @param y1
889
+ // * 线的起点的垂直位置(单位mm)。
890
+ // * @param x2
891
+ // * 线的终点的水平位置(单位mm)。
892
+ // * @param y2
893
+ // * 线的终点的垂直位置(单位mm)。
894
+ // * @param lineWidth
895
+ // * 线宽(单位mm)。线宽是向线的下方延伸的。
896
+ // * @param dashLen1
897
+ // * 点划线第一段的长度(单位mm)。
898
+ // * @param dashLen2
899
+ // * 点划线第二段的长度(单位mm)。
900
+ // * @param dashLen3
901
+ // * 点划线第三段的长度(单位mm)。
902
+ // * @param dashLen4
903
+ // * 点划线第四段的长度(单位mm)。
904
+ // * @return 打印成功与否。
905
+ // */
906
+ // api.drawDashLine4 = function (x1, y1, x2, y2, lineWidth, dashLen1, dashLen2, dashLen3, dashLen4) {
907
+ // if (Mobile.isAndroid()) {
908
+ // LPAPIPlugin.drawDashLine({
909
+ // x1: x1,
910
+ // y1: y1,
911
+ // x2: x2,
912
+ // y2: y2,
913
+ // lineWidth: lineWidth,
914
+ // dashLen1: dashLen1,
915
+ // dashLen2: dashLen2,
916
+ // dashLen3: dashLen3,
917
+ // dashLen4: dashLen4
918
+ // });
919
+ // } else if (Mobile.isIOS()) {
920
+ //
921
+ // }
922
+ // };
923
+
924
+ /**
925
+ * 打印一维条码。
926
+ * @param success 成功回调函数;
927
+ * @param error 失败回调函数;
928
+ * @param text
929
+ * 需要绘制的一维条码的内容。
930
+ * @param x
931
+ * 绘制的一维条码的左上角水平位置(单位mm)。
932
+ * @param y
933
+ * 绘制的一维条码的左上角垂直位置(单位mm)。
934
+ * @param width
935
+ * 一维条码的整体显示宽度。
936
+ * @param height
937
+ * 一维条码的显示高度(包括供人识读文本)。
938
+ * @param textHeight
939
+ * 供人识读文本的高度(单位mm),建议为3毫米。
940
+ * @param type
941
+ * 一维条码的编码类型参考文档。
942
+ * @return 打印成功与否?
943
+ */
944
+ api.drawBarcode = function (text, x, y, width, height, textHeight, type, success = () => {}, error = () => {}) {
945
+ if (Mobile.isAndroid()) {
946
+ LPAPIPlugin.draw1DBarcode(success, error,{
947
+ text: text,
948
+ type: type,
949
+ x: x,
950
+ y: y,
951
+ width: width,
952
+ height: height,
953
+ textHeight: textHeight
954
+ });
955
+ } else if (Mobile.isIOS()) {
956
+ lpapiModel.jsDrawBarcode([text, x, y, width, height, "", textHeight, 0, 2]);
957
+ }
958
+ };
959
+
960
+ /**
961
+ * 打印 QRCode 二维码。
962
+ * @param success 成功回调函数;
963
+ * @param error 失败回调函数;
964
+ * @param text
965
+ * 需要绘制的QRCode二维码的内容。
966
+ * @param x
967
+ * 绘制的QRCode二维码的左上角水平位置(单位mm)。
968
+ * @param y
969
+ * 绘制的QRCode二维码的左上角垂直位置(单位mm)。
970
+ * @param width
971
+ * 绘制的QRCode二维码的水平宽度(单位mm)。
972
+ * @return 打印成功与否?
973
+ */
974
+ api.drawQRCode = function (text, x, y, width, success = () => {}, error = () => {}) {
975
+ if (Mobile.isAndroid()) {
976
+ LPAPIPlugin.draw2DQRCode(success, error, {
977
+ text: text,
978
+ x: x,
979
+ y: y,
980
+ width: width
981
+ });
982
+ } else if (Mobile.isIOS()) {
983
+ lpapiModel.jsDrawQRCode([text, x, y, width]);
984
+ }
985
+ };
986
+
987
+ /**
988
+ * 打印图片。
989
+ * @param success 成功回调函数;
990
+ * @param error 失败回调函数;
991
+ * @param image
992
+ * 图片路径。
993
+ * @param x
994
+ * 打印对象在水平方向上的位置(单位mm)。
995
+ * @param y
996
+ * 打印对象在垂直方向上的位置(单位mm)。
997
+ * @param width
998
+ * 打印对象的宽度(单位mm)。
999
+ * @param height
1000
+ * 打印对象的高度(单位mm)。
1001
+ * @param threshold
1002
+ * 绘制位图的灰度阀值。
1003
+ * 256 表示绘制灰度图片;
1004
+ * 257 表示绘制原色图片;
1005
+ * 0~255表示绘制黑白图片,原图颜色>=灰度阀值的点会被认为是白色,而原图颜色<灰度阀值的点会被认为是黑色。默认值为192。
1006
+ * @return 打印成功与否?
1007
+ */
1008
+ api.drawImage = function (image, x, y, width, height, threshold, success = () => {}, error = () => {}) {
1009
+ if (Mobile.isAndroid()) {
1010
+ LPAPIPlugin.drawImage(success, error, {
1011
+ image: image || "",
1012
+ x: x || 0,
1013
+ y: y || 0,
1014
+ width: width || 0,
1015
+ height: height || 0,
1016
+ threshold: threshold || ""
1017
+ });
1018
+ } else if (Mobile.isIOS()) {
1019
+ lpapiModel.jsDrawImage([image, x, y, width, height, threshold]);
1020
+ }
1021
+ };
1022
+
1023
+ /**用于判断当前js运行的环境是什么平台 */
1024
+ let Mobile = {
1025
+ isAndroid: function () {
1026
+ // 目前只支持安卓平台
1027
+ return true;
1028
+ },
1029
+ isIOS: function () {
1030
+ return false;
1031
+ }
1032
+ };
1033
+
1034
+ export default api;
@@ -92,6 +92,9 @@ class LamboJsBridge {
92
92
  return this.platform.downloadFile(options);
93
93
  }
94
94
 
95
+ getPrinterApi(options={}){
96
+ return this.platform.getPrinterApi(options);
97
+ }
95
98
  // 创建一个 Vue 插件
96
99
  static install(Vue) {
97
100
  // 将 LamboJsBridge 实例挂载到 Vue 原型上,全局可用
@@ -1,4 +1,7 @@
1
1
  import './yuntu';
2
+ import printerApi from './LPAPI';
3
+
4
+ export const PRINTER_PLUGIN = "printerPlugin"
2
5
 
3
6
  class YunTuAdapter {
4
7
  constructor(options) {
@@ -14,7 +17,7 @@ class YunTuAdapter {
14
17
  try {
15
18
  const configToUse = Array.isArray(pluginConfig) && pluginConfig.length > 0
16
19
  ? JSON.stringify(pluginConfig)
17
- : '["localAuthPlugin","amapPlugin","tabBarPlugin","scanCodePlugin","filePreviewPlugin","imagePickerPlugin"]';
20
+ : '["localAuthPlugin","amapPlugin","tabBarPlugin","scanCodePlugin","filePreviewPlugin","imagePickerPlugin","' + PRINTER_PLUGIN +'"]';
18
21
  // eslint-disable-next-line no-undef
19
22
  await yuntuConfig(configToUse); // 确保等待 yuntuConfig 执行完成
20
23
  this.isInitialized = true;
@@ -309,6 +312,11 @@ class YunTuAdapter {
309
312
  });
310
313
  }
311
314
 
315
+ getPrinterApi(options) {
316
+ console.log('YunTu: get printerApi with options', options);
317
+ return printerApi;
318
+ }
319
+
312
320
 
313
321
  }
314
322