lpapi-uniplugin.js 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450
  1. const api = uni.requireNativePlugin('DothanTech-LPAPI');
  2. function request(action, data, callback) {
  3. // console.log(`### Request: action = ${action}`);
  4. // console.log(data ? JSON.stringify(data) : data);
  5. return new Promise((resolve) => {
  6. if (api && api[action]) {
  7. api[action](data || {}, result => {
  8. // console.log(`### Response:`);
  9. // console.log(JSON.stringify(data));
  10. if (result && result.code === 0) {
  11. resolve(result.data || true);
  12. } else {
  13. resolve(undefined);
  14. // console.log(result.data);
  15. }
  16. if (typeof callback === "function") {
  17. callback(result.code === 0 ? result.data : null);
  18. }
  19. });
  20. } else {
  21. if (api) {
  22. resolve(undefined);
  23. console.log('LPAPI插件加载失败');
  24. } else {
  25. resolve(undefined);
  26. console.log('未检测到该方法:' + action);
  27. }
  28. }
  29. });
  30. }
  31. const lpapi = {
  32. /**
  33. * 获取指定型号的所有打印机;
  34. * @param { string | {name?: string} } data 参数;
  35. * @returns { {name: string, macAddress?: string}[] } 获取打印机列表;
  36. */
  37. getPrinters(data) {
  38. if (typeof data === 'string') {
  39. data = { name: data };
  40. }
  41. return request('getPrinters', data);
  42. },
  43. /**
  44. * 获取指定型号的一台打印机;
  45. * @param { string | {name?: string} } data 参数;
  46. * @returns { {name: string, macAddress?: string} } 获取检测到的第一台打印机;
  47. */
  48. getFirstPrinter(data) {
  49. if (typeof data === 'string') {
  50. data = { name: data };
  51. }
  52. return request('getFirstPrinter', data);
  53. },
  54. /**
  55. *
  56. * @param { string | {name?: string}} data 参数;
  57. */
  58. openPrinter(data, callback) {
  59. if (typeof data === 'string') {
  60. data = { name: data };
  61. }
  62. return request('openPrinter', typeof data === 'object' ? data : {}, callback);
  63. },
  64. /**
  65. * 获取当前已连接打印机名称;
  66. */
  67. getPrinterName() {
  68. return request('getPrinterName', {});
  69. },
  70. /**
  71. * 获取当前已连接打印机信息;
  72. * 调用该接口前要确保打印机已连接;
  73. */
  74. getPrinterInfo() {
  75. return request('getPrinterInfo', {});
  76. },
  77. // /**
  78. // * 获取当前打印机的连接状态;
  79. // */
  80. // getPrinterState() {
  81. // return request('getPrinterState', {});
  82. // },
  83. /**
  84. * 当前打印机是否已经打开;
  85. */
  86. isPrinterOpened() {
  87. return request('isPrinterOpened', {});
  88. },
  89. /**
  90. *
  91. * @param { string | {
  92. * name?: string;
  93. * model: string;
  94. * }} data 参数;
  95. * @returns
  96. */
  97. isPrinterSupported(data) {
  98. data = typeof data === "object" ? data : {
  99. name: arguments[0],
  100. model: arguments[1]
  101. };
  102. return request('isPrinterSupported', data || {});
  103. },
  104. // /**
  105. // * 取消当前打印任务;
  106. // */
  107. // cancel() {
  108. // return request('cancel', {});
  109. // },
  110. /**
  111. * 关闭打印机;
  112. */
  113. closePrinter() {
  114. return request('closePrinter', {});
  115. },
  116. /**
  117. * 打印BASE64图片;
  118. * @param { {
  119. * image: string,
  120. * PRINT_DENSITY?: number,
  121. * PRINT_SPEED?: number,
  122. * PRINT_COPIES?: number
  123. * } } data
  124. */
  125. printImage(data) {
  126. return request('printImage', data);
  127. },
  128. /**
  129. * 开始打印任务;
  130. * @param { {
  131. * width: number,
  132. * height: number,
  133. * orientation?: number
  134. * } } data 参数;
  135. */
  136. startJob(data) {
  137. return request('startJob', data);
  138. },
  139. // /**
  140. // * 终止打印任务;
  141. // */
  142. // abortJob() {
  143. // return request('abortJob', {});
  144. // },
  145. /**
  146. * 提交打印任务;
  147. * @param {{
  148. * PRINT_DENSITY?: number,
  149. * PRINT_SPEED?: number,
  150. * PRINT_COPIES?: number
  151. * }} data 参数;
  152. */
  153. commitJob(data) {
  154. return request('commitJob', data);
  155. },
  156. // /**
  157. // * 开始打印页面;
  158. // */
  159. // startPage() {
  160. // return request('startPage', {});
  161. // },
  162. // /**
  163. // * 结束打印页面;
  164. // */
  165. // endPage() {
  166. // return request('endPage', {});
  167. // },
  168. /**
  169. * 结束打印任务;
  170. */
  171. endJob() {
  172. return request('endJob', {});
  173. },
  174. /**
  175. * 获取当前的打印任务;
  176. */
  177. getJobPages() {
  178. return request('getJobPages', {});
  179. },
  180. //
  181. /**
  182. * 设置后续绘制参数,譬如字体名称,二维码纠错级别等等;
  183. * @param { {
  184. * name: string,
  185. * value: *
  186. * } } data 参数
  187. */
  188. setDrawParam(data) {
  189. return request('setDrawParam', data);
  190. },
  191. // /**
  192. // * 获取当前内容的旋转角度;
  193. // */
  194. // getItemOrientation() {
  195. // return request('getItemOrientation', {});
  196. // },
  197. /**
  198. * 设置后续内容的旋转方向;
  199. * @param { number | { orientation: [0, 90, 180, 270]}} data 参数;
  200. */
  201. setItemOrientation(data) {
  202. data = typeof data === 'object' ? data : { orientation: data };
  203. return request('setItemOrientation', data);
  204. },
  205. // /**
  206. // * 获取当前的水平对齐方式;
  207. // */
  208. // getItemHorizontalAlignment() {
  209. // return request('getItemHorizontalAlignment', {});
  210. // },
  211. /**
  212. * 设置水平对齐方式;
  213. * @param { number | { alignment: [0, 1, 2]}} data 参数;
  214. */
  215. setItemHorizontalAlignment(data) {
  216. data = typeof data === 'object' ? data : { alignment: data };
  217. return request('setItemHorizontalAlignment', data);
  218. },
  219. // /**
  220. // * 获取当前的垂直对齐方式;
  221. // */
  222. // getItemVerticalAlignment() {
  223. // return request('getItemVerticalAlignment', {});
  224. // },
  225. /**
  226. * 设置垂直对齐方式;
  227. * @param { number | { alignment: [0, 1, 2]}} data 参数;
  228. */
  229. setItemVerticalAlignment(data) {
  230. data = typeof data === 'object' ? data : { alignment: data };
  231. return request('setItemVerticalAlignment', data);
  232. },
  233. /**
  234. * 设置背景色;
  235. * 默认白色底色:0xFFFFFFFF;
  236. * 如需透明色,可设置:0x00000000;
  237. * @param { number | {color: number} } data 参数;
  238. */
  239. setBackground(data) {
  240. data = typeof data === 'object' ? data : { color: data };
  241. return request('setBackground', data);
  242. },
  243. // ***************************************************
  244. // * 打印相关图形对象。
  245. // ***************************************************
  246. /**
  247. * 绘制字符串;
  248. * @param { {
  249. * text: string,
  250. * x: number,
  251. * y: number,
  252. * width: number,
  253. * height: number,
  254. * fontHeight: number,
  255. * fontStyle: number,
  256. * fontName: string
  257. * } } data
  258. */
  259. drawText(data) {
  260. return request('drawText', data);
  261. },
  262. /**
  263. * 绘制一维码;
  264. * @param { {
  265. * text: string,
  266. * x: number,
  267. * y: number,
  268. * width: number,
  269. * height: number,
  270. * textHeight: number,
  271. * type: number
  272. * } } data
  273. */
  274. draw1DBarcode(data) {
  275. return request('draw1DBarcode', data);
  276. },
  277. /**
  278. * 绘制二维码;
  279. * @param { {
  280. * text: string,
  281. * x: number,
  282. * y: number,
  283. * width: number
  284. * } } data
  285. */
  286. draw2DQRCode(data) {
  287. return request('draw2DQRCode', data);
  288. },
  289. /**
  290. * 绘制PDF417码;
  291. * @param {{
  292. * text: string,
  293. * x: number,
  294. * y: number,
  295. * width: number,
  296. * height: number
  297. * }} data
  298. */
  299. draw2DPdf417(data) {
  300. return request('draw2DPdf417', data);
  301. },
  302. /**
  303. * 绘制矩形框;
  304. * @param {{
  305. * x: number,
  306. * y: number,
  307. * width: number,
  308. * height: number,
  309. * lineWidth: number
  310. * }} data
  311. */
  312. drawRectangle(data) {
  313. return request('drawRectangle', data);
  314. },
  315. /**
  316. * 绘制填充矩形;
  317. * @param {{
  318. * x: number,
  319. * y: number,
  320. * width: number,
  321. * height: number
  322. * }} data
  323. */
  324. fillRectangle(data) {
  325. return request('fillRectangle', data);
  326. },
  327. /**
  328. * 绘制圆角矩形框;
  329. * @param {{
  330. * x: number,
  331. * y: number,
  332. * width: number,
  333. * height: number,
  334. * cornerWidth: number,
  335. * cornerHeight: number,
  336. * lineWidth: number
  337. * }} data
  338. */
  339. drawRoundRectangle(data) {
  340. return request('drawRoundRectangle', data);
  341. },
  342. /**
  343. * 填充圆角矩形;
  344. * @param {{
  345. * x: number,
  346. * y: number,
  347. * width: number,
  348. * height: number,
  349. * cornerWidth: number,
  350. * cornerHeight: number
  351. * }} data
  352. */
  353. fillRoundRectangle(data) {
  354. return request('fillRoundRectangle', data);
  355. },
  356. /**
  357. * 绘制椭圆;
  358. * @param {{
  359. * x: number,
  360. * y: number,
  361. * width: number,
  362. * height: number,
  363. * lineWidth: number
  364. * }} data
  365. */
  366. drawEllipse(data) {
  367. return request('drawEllipse', data);
  368. },
  369. /**
  370. * 填充椭圆;
  371. * @param {{
  372. * x: number,
  373. * y: number,
  374. * width: number,
  375. * height: number
  376. * }} data
  377. */
  378. fillEllipse(data) {
  379. return request('fillEllipse', data);
  380. },
  381. /**
  382. * 绘制圆形;
  383. * @param {{
  384. * x: number,
  385. * y: number,
  386. * radius: number,
  387. * lineWidth: number
  388. * }} data
  389. */
  390. drawCircle(data) {
  391. return request('drawCircle', data);
  392. },
  393. /**
  394. * 填充圆;
  395. * @param {{
  396. * x: number,
  397. * y: number,
  398. * radius: number
  399. * }} data
  400. */
  401. fillCircle(data) {
  402. return request('fillCircle', data);
  403. },
  404. /**
  405. * 绘制直线;
  406. * @param {{
  407. * x1: number,
  408. * y1: number,
  409. * x2: number,
  410. * y2: number,
  411. * lineWidth: number
  412. * }} data
  413. */
  414. drawLine(data) {
  415. return request('drawLine', data);
  416. },
  417. /**
  418. * 绘制虚线;
  419. * @param {{
  420. * x1: number,
  421. * y1: number,
  422. * x2: number,
  423. * y2: number,
  424. * dashLen: number[],
  425. * lineWidth: number
  426. * }} data
  427. */
  428. drawDashLine(data) {
  429. return request('drawDashLine', data);
  430. },
  431. /**
  432. * 绘制图片;
  433. * @param {{
  434. * image: string,
  435. * x: number,
  436. * y: number,
  437. * width: number,
  438. * height: number,
  439. * threshold: number
  440. * }} data
  441. */
  442. drawImage(data) {
  443. return request('drawImage', data);
  444. }
  445. }
  446. export default lpapi;