xh-lab-rc 0.16.0 → 0.16.3

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.
@@ -1,9 +1,11 @@
1
+ import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime";
2
+ import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
1
3
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
4
  /*
3
5
  * @Author: xqy
4
6
  * @Date: 2024-06-28 14:07:14
5
7
  * @LastEditors: xqy
6
- * @LastEditTime: 2024-07-14 18:30:17
8
+ * @LastEditTime: 2024-07-16 16:34:17
7
9
  * @Description:科密高拍仪
8
10
  */
9
11
  import { Uint8ArrayToString, byteToString, formatDate, stringToByte } from "../../utils/utils";
@@ -27,15 +29,7 @@ var KemiAlt = /*#__PURE__*/forwardRef(function (props, ref) {
27
29
  setSocketConnected = _useState2[1]; // socket连接状态
28
30
 
29
31
  var cameraRef = useRef(null);
30
- var _useState3 = useState({}),
31
- _useState4 = _slicedToArray(_useState3, 2),
32
- captureResult = _useState4[0],
33
- setCaptureResult = _useState4[1]; //拍照返回的结果
34
- var _useState5 = useState({}),
35
- _useState6 = _slicedToArray(_useState5, 2),
36
- compPDFResult = _useState6[0],
37
- setCompPDFResult = _useState6[1]; //合成返回的pdf结果
38
-
32
+ var intervalRef = useRef(null);
39
33
  console.log('isOpenMainCamera', isOpenMainCamera, socketConnected);
40
34
 
41
35
  //摄像头信息定义
@@ -46,12 +40,10 @@ var KemiAlt = /*#__PURE__*/forwardRef(function (props, ref) {
46
40
  var pMainShowStartX = 0;
47
41
  var pMainShowStartY = 0;
48
42
  var isMouseDown = false;
49
-
50
- //等待一段时间
51
- var sleep = function sleep(milliSeconds) {
43
+ function sleep(milliSeconds) {
52
44
  var startTime = new Date().getTime();
53
45
  while (new Date().getTime() < startTime + milliSeconds);
54
- };
46
+ }
55
47
 
56
48
  //设置文件格式
57
49
  function SetFileType(filetype) {
@@ -222,6 +214,18 @@ var KemiAlt = /*#__PURE__*/forwardRef(function (props, ref) {
222
214
  socket.binaryType = 'arraybuffer';
223
215
  };
224
216
 
217
+ //掉线重连
218
+ function reconnect() {
219
+ clearInterval(intervalRef.current);
220
+ // 设置新的定时器
221
+ intervalRef.current = setInterval(function () {
222
+ if (!isSocketConnect) {
223
+ webSocketConnect();
224
+ }
225
+ console.log('reconnectTimer.........!', isSocketConnect);
226
+ }, 3000); // 每3秒执行一次
227
+ }
228
+
225
229
  // 获取设备信息等基本信息
226
230
  function GetDevCount() {
227
231
  try {
@@ -236,6 +240,7 @@ var KemiAlt = /*#__PURE__*/forwardRef(function (props, ref) {
236
240
  }
237
241
  var handleSocketOpen = function handleSocketOpen(event) {
238
242
  console.log('9999', event);
243
+ clearInterval(intervalRef.current);
239
244
  isSocketConnect = true;
240
245
  setSocketConnected(true);
241
246
  isEffectiveService = true;
@@ -245,8 +250,9 @@ var KemiAlt = /*#__PURE__*/forwardRef(function (props, ref) {
245
250
  console.log(',Close', event, isEffectiveService, isSocketConnect);
246
251
  isSocketConnect = false;
247
252
  if (isEffectiveService) {
248
- webSocketConnect();
249
- message.warning('socket服务关闭,正在重启....');
253
+ // webSocketConnect();
254
+ // message.warning('socket服务关闭,正在重启....');
255
+ reconnect();
250
256
  } else {
251
257
  message.warning('socket连接失败,请重启服务....');
252
258
  }
@@ -255,7 +261,8 @@ var KemiAlt = /*#__PURE__*/forwardRef(function (props, ref) {
255
261
  console.log(',Error', event, isEffectiveService, isSocketConnect);
256
262
  isSocketConnect = false;
257
263
  if (isEffectiveService) {
258
- webSocketConnect();
264
+ // webSocketConnect();
265
+ reconnect();
259
266
  message.warning('socket服务出错,正在重启....');
260
267
  } else {
261
268
  message.warning('socket服务出错,请重启服务....');
@@ -275,24 +282,58 @@ var KemiAlt = /*#__PURE__*/forwardRef(function (props, ref) {
275
282
  socket.send(aDataArray.buffer);
276
283
  }
277
284
 
285
+ //*************设置JPG图片质量*************
286
+ function Cam_SetJpgQuality(val) {
287
+ console.log('val', val);
288
+ if (isSocketConnect) {
289
+ var aDataArray = new Uint8Array(4);
290
+ aDataArray[0] = 0x77;
291
+ aDataArray[1] = 0x88;
292
+ aDataArray[2] = 0x29;
293
+ aDataArray[3] = val;
294
+ socket.send(aDataArray.buffer);
295
+ }
296
+ }
297
+
278
298
  /**
279
299
  * 获取设备信息
280
300
  * @param devCount 设备数量
281
301
  * @param devNameArr 设备名称组
282
302
  */
283
- function GetDevCountAndNameResultCB(devCount, devNameArr) {
284
- if (devCount > 0) {
285
- //获取分辨率信息
286
- GetResolution(devNameArr[0]); // 发送获取分辨率的指令
287
- } else {
288
- message.error('没有发现合适的设备!');
289
- }
303
+ function GetDevCountAndNameResultCB(_x, _x2) {
304
+ return _GetDevCountAndNameResultCB.apply(this, arguments);
290
305
  }
291
-
292
306
  /**
293
307
  * 返回摄像头开启状态
294
308
  * @param status
295
309
  */
310
+ function _GetDevCountAndNameResultCB() {
311
+ _GetDevCountAndNameResultCB = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(devCount, devNameArr) {
312
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
313
+ while (1) switch (_context.prev = _context.next) {
314
+ case 0:
315
+ if (!(devCount > 0)) {
316
+ _context.next = 7;
317
+ break;
318
+ }
319
+ _context.next = 3;
320
+ return GetResolution(devNameArr[0]);
321
+ case 3:
322
+ _context.next = 5;
323
+ return Cam_SetJpgQuality('30');
324
+ case 5:
325
+ _context.next = 8;
326
+ break;
327
+ case 7:
328
+ message.error('没有发现合适的设备!');
329
+ case 8:
330
+ case "end":
331
+ return _context.stop();
332
+ }
333
+ }, _callee);
334
+ }));
335
+ return _GetDevCountAndNameResultCB.apply(this, arguments);
336
+ }
296
337
  function GetCameraOnOffStatus(status) {
297
338
  if (status === 0) {
298
339
  message.success('设备开启成功');
@@ -449,7 +490,7 @@ var KemiAlt = /*#__PURE__*/forwardRef(function (props, ref) {
449
490
  console.log('拍照结果返回', flag, path, base64Str);
450
491
  // localPath-本地路径
451
492
  if (flag === 0) {
452
- setCaptureResult({
493
+ getCaptureResult === null || getCaptureResult === void 0 || getCaptureResult({
453
494
  photoBase64: base64Str,
454
495
  localPath: path
455
496
  });
@@ -464,7 +505,6 @@ var KemiAlt = /*#__PURE__*/forwardRef(function (props, ref) {
464
505
  var path = encodeURI(filePath);
465
506
  var pathArray = stringToByte(path);
466
507
  var len = pathArray.length;
467
- console.log('path', path, pathArray, len);
468
508
  if (isSocketConnect) {
469
509
  if (filePath === '') {
470
510
  var _len2 = 0;
@@ -572,7 +612,7 @@ var KemiAlt = /*#__PURE__*/forwardRef(function (props, ref) {
572
612
  console.log('合并pdf的结果', flag, PdfBase64Str);
573
613
  if (flag === 0) {
574
614
  console.log(PdfBase64Str);
575
- setCompPDFResult({
615
+ getCompPDFResult === null || getCompPDFResult === void 0 || getCompPDFResult({
576
616
  base64: PdfBase64Str
577
617
  });
578
618
  } else {
@@ -801,9 +841,10 @@ var KemiAlt = /*#__PURE__*/forwardRef(function (props, ref) {
801
841
 
802
842
  //拍照
803
843
  var takePhoto = function takePhoto() {
844
+ console.log('拍照');
804
845
  var name = formatDate(new Date().getTime());
805
- var path = 'D:\\' + name + '.png'; //定下文件类型
806
- SetFileType(1); //设置文件格式(1-png文件格式)
846
+ var path = 'D:\\' + name + '.jpg'; //定下文件类型
847
+ SetFileType(0); //设置文件格式(0-jpg文件格式)
807
848
  Cam_Photo(path); //主摄像头拍照
808
849
  };
809
850
 
@@ -811,12 +852,12 @@ var KemiAlt = /*#__PURE__*/forwardRef(function (props, ref) {
811
852
  var _ToAddPDFFile = function ToAddPDFFile(path) {
812
853
  console.log('添加要合并的pdf路径', path);
813
854
  AddImgFileToPDF(path);
855
+ sleep(80);
814
856
  };
815
857
 
816
858
  //合并PDF文件(compPDFResult 获取合并返回的结果)
817
859
  var _ToCombinePDF = function ToCombinePDF(index) {
818
860
  console.log('index', index);
819
- sleep(100);
820
861
  CombinePDF("D:\\".concat(index, ".pdf")); //合并之后的保存的pdf路径
821
862
  };
822
863
 
@@ -872,29 +913,18 @@ var KemiAlt = /*#__PURE__*/forwardRef(function (props, ref) {
872
913
  // 接收消息
873
914
  socket.onmessage = handleSocketMessage.bind(props);
874
915
  }
875
- // return () => {
876
- // CloseCamera();
877
- // socket.onopen = null;
878
- // socket.onclose = null;
879
- // socket.onerror = null;
880
- // socket.onmessage = null;
881
- // isSocketConnect = false;
882
- // MainCanvas = null;
883
- // MainContext = null;
884
- // };
916
+ return function () {
917
+ clearInterval(intervalRef.current);
918
+ // CloseCamera();
919
+ // socket.onopen = null;
920
+ // socket.onclose = null;
921
+ // socket.onerror = null;
922
+ // socket.onmessage = null;
923
+ // isSocketConnect = false;
924
+ // MainCanvas = null;
925
+ // MainContext = null;
926
+ };
885
927
  }, []);
886
- useEffect(function () {
887
- var _Object$keys;
888
- if (captureResult && ((_Object$keys = Object.keys(captureResult)) === null || _Object$keys === void 0 ? void 0 : _Object$keys.length) > 0) {
889
- getCaptureResult === null || getCaptureResult === void 0 || getCaptureResult(captureResult);
890
- }
891
- }, [captureResult]);
892
- useEffect(function () {
893
- var _Object$keys2;
894
- if (compPDFResult && ((_Object$keys2 = Object.keys(compPDFResult)) === null || _Object$keys2 === void 0 ? void 0 : _Object$keys2.length) > 0) {
895
- getCompPDFResult === null || getCompPDFResult === void 0 || getCompPDFResult(compPDFResult);
896
- }
897
- }, [compPDFResult]);
898
928
  return /*#__PURE__*/React.createElement("div", {
899
929
  id: "CameraCtl",
900
930
  ref: cameraRef,
@@ -8,12 +8,12 @@ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
8
8
  * @Author: xqy
9
9
  * @Date: 2024-04-23 13:43:55
10
10
  * @LastEditors: xqy
11
- * @LastEditTime: 2024-07-14 18:38:11
11
+ * @LastEditTime: 2024-07-16 17:01:17
12
12
  * @Description: 高拍仪
13
13
  */
14
14
  import { Iconfont } from "../components";
15
15
  import { LabBase64ToFile } from "../utils/utils";
16
- import { Button, Checkbox, Input, Select, message } from 'antd';
16
+ import { Button, Checkbox, Input, Select, Spin, message } from 'antd';
17
17
  import cn from 'classnames';
18
18
  import dayjs from 'dayjs';
19
19
  import React, { useEffect, useRef, useState } from 'react';
@@ -102,18 +102,36 @@ var LabAltimeter = function LabAltimeter(_ref) {
102
102
  //高拍仪类型
103
103
  pdfQueResult: [] //pdf队列数组
104
104
  });
105
- var _useState25 = useState({}),
105
+ var _useState25 = useState(false),
106
106
  _useState26 = _slicedToArray(_useState25, 2),
107
- captureResult = _useState26[0],
108
- setCaptureResult = _useState26[1]; //科密拍照返回的结果
109
- var _useState27 = useState({}),
107
+ loading = _useState26[0],
108
+ setLoading = _useState26[1]; //加载中
109
+ var _useState27 = useState(''),
110
110
  _useState28 = _slicedToArray(_useState27, 2),
111
- pdfQueueResult = _useState28[0],
112
- setPdfQueueResult = _useState28[1]; //添加图片到pdf队列返回结果
111
+ tipMsg = _useState28[0],
112
+ setTipMsg = _useState28[1]; //加载提示语
113
+
113
114
  var _useState29 = useState({}),
114
115
  _useState30 = _slicedToArray(_useState29, 2),
115
- compPDFResult = _useState30[0],
116
- setCompPDFResult = _useState30[1]; //合成返回的pdf结果
116
+ captureResult = _useState30[0],
117
+ setCaptureResult = _useState30[1]; //科密拍照返回的结果
118
+ var _useState31 = useState({}),
119
+ _useState32 = _slicedToArray(_useState31, 2),
120
+ pdfQueueResult = _useState32[0],
121
+ setPdfQueueResult = _useState32[1]; //添加图片到pdf队列返回结果
122
+ var _useState33 = useState({}),
123
+ _useState34 = _slicedToArray(_useState33, 2),
124
+ compPDFResult = _useState34[0],
125
+ setCompPDFResult = _useState34[1]; //合成返回的pdf结果
126
+
127
+ var _useState35 = useState(0),
128
+ _useState36 = _slicedToArray(_useState35, 2),
129
+ curCompIndex = _useState36[0],
130
+ setCurCompIndex = _useState36[1]; // 当前添加到合成队列的是第几个图片
131
+ var _useState37 = useState([]),
132
+ _useState38 = _slicedToArray(_useState37, 2),
133
+ checkImgs = _useState38[0],
134
+ setCheckImgs = _useState38[1]; // 勾选的图片集合
117
135
 
118
136
  var kemiAltRef = useRef({
119
137
  toKemiTakePhoto: function toKemiTakePhoto() {},
@@ -235,6 +253,10 @@ var LabAltimeter = function LabAltimeter(_ref) {
235
253
  //科密高拍仪
236
254
  kemiAltRef === null || kemiAltRef === void 0 || (_kemiAltRef$current = kemiAltRef.current) === null || _kemiAltRef$current === void 0 || _kemiAltRef$current.openKemiCamera();
237
255
  setCurPreImgPath('');
256
+ setCurCompIndex(0);
257
+ setCheckImgs([]);
258
+ filterRef.current.pdfQueResult = [];
259
+ console.log('filterRef.current.pdfQueResult', filterRef.current.pdfQueResult);
238
260
  }
239
261
  setIsShowPdf(false);
240
262
  };
@@ -264,16 +286,18 @@ var LabAltimeter = function LabAltimeter(_ref) {
264
286
  return fetchRequest('http://127.0.0.1:38088/video=grabimage', params, 'POST');
265
287
  case 5:
266
288
  res = _context2.sent;
267
- _context2.next = 9;
289
+ _context2.next = 11;
268
290
  break;
269
291
  case 8:
270
292
  //科密高拍仪拍照
271
293
  kemiAltRef === null || kemiAltRef === void 0 || (_kemiAltRef$current2 = kemiAltRef.current) === null || _kemiAltRef$current2 === void 0 || _kemiAltRef$current2.toKemiTakePhoto();
272
- case 9:
294
+ setLoading(true);
295
+ setTipMsg('图片生成中...');
296
+ case 11:
273
297
  if (_typeof(res) === 'object' && Object.keys(res).length > 0) {
274
298
  add_image((_res = res) === null || _res === void 0 ? void 0 : _res.photoBase64, 0);
275
299
  }
276
- case 10:
300
+ case 12:
277
301
  case "end":
278
302
  return _context2.stop();
279
303
  }
@@ -357,7 +381,8 @@ var LabAltimeter = function LabAltimeter(_ref) {
357
381
  var onPreviewFile = function onPreviewFile(item) {
358
382
  console.log('预览图片和pdf', item.filePath, item);
359
383
  if (item.fileType === 'pdf') {
360
- setCurPreviewPath(item === null || item === void 0 ? void 0 : item.filePath);
384
+ var newFilePath = URL.createObjectURL(LabBase64ToFile(item === null || item === void 0 ? void 0 : item.filePath, item.fileName));
385
+ setCurPreviewPath(newFilePath);
361
386
  setIsShowPdf(true);
362
387
  } else {
363
388
  var _document2;
@@ -404,71 +429,12 @@ var LabAltimeter = function LabAltimeter(_ref) {
404
429
  return item.isChecked;
405
430
  }).length;
406
431
 
407
- //添加图片到pdf队列中
408
- var addImgToPdfQueue = /*#__PURE__*/function () {
409
- var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(checkImgList) {
410
- var newPromise;
411
- return _regeneratorRuntime().wrap(function _callee5$(_context5) {
412
- while (1) switch (_context5.prev = _context5.next) {
413
- case 0:
414
- if (!(checkImgList && checkImgList !== null && checkImgList !== void 0 && checkImgList.length)) {
415
- _context5.next = 6;
416
- break;
417
- }
418
- newPromise = checkImgList.map( /*#__PURE__*/function () {
419
- var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(item) {
420
- var _kemiAltRef$current5;
421
- return _regeneratorRuntime().wrap(function _callee4$(_context4) {
422
- while (1) switch (_context4.prev = _context4.next) {
423
- case 0:
424
- _context4.prev = 0;
425
- _context4.next = 3;
426
- return kemiAltRef === null || kemiAltRef === void 0 || (_kemiAltRef$current5 = kemiAltRef.current) === null || _kemiAltRef$current5 === void 0 ? void 0 : _kemiAltRef$current5.ToAddPDFFile(item === null || item === void 0 ? void 0 : item.localPath);
427
- case 3:
428
- item.executeFinish = true;
429
- _context4.next = 9;
430
- break;
431
- case 6:
432
- _context4.prev = 6;
433
- _context4.t0 = _context4["catch"](0);
434
- item.executeFinish = false;
435
- case 9:
436
- case "end":
437
- return _context4.stop();
438
- }
439
- }, _callee4, null, [[0, 6]]);
440
- }));
441
- return function (_x7) {
442
- return _ref6.apply(this, arguments);
443
- };
444
- }()); // 等待所有Promise都完成
445
- _context5.next = 4;
446
- return Promise.all(newPromise);
447
- case 4:
448
- if (!checkImgList.every(function (item) {
449
- return item.executeFinish === true;
450
- })) {
451
- _context5.next = 6;
452
- break;
453
- }
454
- return _context5.abrupt("return", true);
455
- case 6:
456
- case "end":
457
- return _context5.stop();
458
- }
459
- }, _callee5);
460
- }));
461
- return function addImgToPdfQueue(_x6) {
462
- return _ref5.apply(this, arguments);
463
- };
464
- }();
465
-
466
432
  //图片合成PDF
467
433
  var ComposePhotosPDF = /*#__PURE__*/function () {
468
- var _ref7 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {
434
+ var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
469
435
  var index, updateList, checkImgList, _Object$keys, imgs, data, params, _data;
470
- return _regeneratorRuntime().wrap(function _callee6$(_context6) {
471
- while (1) switch (_context6.prev = _context6.next) {
436
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
437
+ while (1) switch (_context4.prev = _context4.next) {
472
438
  case 0:
473
439
  index = pdfIndex + 1;
474
440
  updateList = _toConsumableArray(imgList);
@@ -476,7 +442,7 @@ var LabAltimeter = function LabAltimeter(_ref) {
476
442
  return item.isChecked;
477
443
  }); //选中的图片合成
478
444
  if (!(checkImgList && checkImgList.length)) {
479
- _context6.next = 19;
445
+ _context4.next = 20;
480
446
  break;
481
447
  }
482
448
  imgs = checkImgList.map(function (i) {
@@ -484,15 +450,16 @@ var LabAltimeter = function LabAltimeter(_ref) {
484
450
  }).join(',');
485
451
  data = {}; //合成pdf返回的参数
486
452
  if (!(filterRef.current.deviceVal === '2')) {
487
- _context6.next = 11;
453
+ _context4.next = 12;
488
454
  break;
489
455
  }
490
- _context6.next = 9;
491
- return addImgToPdfQueue(checkImgList);
492
- case 9:
493
- _context6.next = 15;
456
+ // 保存勾选的图片
457
+ setCheckImgs(checkImgList);
458
+ setLoading(true);
459
+ setTipMsg('PDF合成中...');
460
+ _context4.next = 16;
494
461
  break;
495
- case 11:
462
+ case 12:
496
463
  params = {
497
464
  outputfilepath: "D:\\\u56FE\u7247\u5408\u6210PDF\\".concat(index, ".pdf"),
498
465
  // 输出文件保存地址。例:D://图片合成pdf
@@ -504,27 +471,27 @@ var LabAltimeter = function LabAltimeter(_ref) {
504
471
  // 合成后文件类型:0:jpg;1:PDF
505
472
  imagelist: imgs.toString()
506
473
  };
507
- _context6.next = 14;
474
+ _context4.next = 15;
508
475
  return fetchRequest('http://127.0.0.1:38088/compose=photos', params, 'POST');
509
- case 14:
510
- data = _context6.sent;
511
476
  case 15:
477
+ data = _context4.sent;
478
+ case 16:
512
479
  if (data && ((_Object$keys = Object.keys(data)) === null || _Object$keys === void 0 ? void 0 : _Object$keys.length) > 0) {
513
480
  add_image((_data = data) === null || _data === void 0 ? void 0 : _data.base64, 1);
514
481
  }
515
482
  setPdfIndex(index);
516
- _context6.next = 20;
483
+ _context4.next = 21;
517
484
  break;
518
- case 19:
519
- message.warning('请先选择图片!');
520
485
  case 20:
486
+ message.warning('请先选择图片!');
487
+ case 21:
521
488
  case "end":
522
- return _context6.stop();
489
+ return _context4.stop();
523
490
  }
524
- }, _callee6);
491
+ }, _callee4);
525
492
  }));
526
493
  return function ComposePhotosPDF() {
527
- return _ref7.apply(this, arguments);
494
+ return _ref5.apply(this, arguments);
528
495
  };
529
496
  }();
530
497
 
@@ -580,8 +547,8 @@ var LabAltimeter = function LabAltimeter(_ref) {
580
547
  //关闭摄像头
581
548
  var closeCamera = function closeCamera() {
582
549
  if (filterRef.current.deviceVal === '2') {
583
- var _kemiAltRef$current6;
584
- kemiAltRef === null || kemiAltRef === void 0 || (_kemiAltRef$current6 = kemiAltRef.current) === null || _kemiAltRef$current6 === void 0 || _kemiAltRef$current6.toCloseCamera();
550
+ var _kemiAltRef$current5;
551
+ kemiAltRef === null || kemiAltRef === void 0 || (_kemiAltRef$current5 = kemiAltRef.current) === null || _kemiAltRef$current5 === void 0 || _kemiAltRef$current5.toCloseCamera();
585
552
  } else {
586
553
  var params = {
587
554
  camidx: '0'
@@ -589,12 +556,20 @@ var LabAltimeter = function LabAltimeter(_ref) {
589
556
  fetchRequest('http://127.0.0.1:38088/video=close', params, 'POST');
590
557
  }
591
558
  };
559
+ useEffect(function () {
560
+ var _kemiAltRef$current6, _checkImgs$curCompInd;
561
+ console.log('checkImgs和curCompIndex发生变化了', checkImgs, curCompIndex);
562
+ if (curCompIndex >= checkImgs.length) return;
563
+ // 图片按索引顺序,挨个添加到合成队列
564
+ kemiAltRef === null || kemiAltRef === void 0 || (_kemiAltRef$current6 = kemiAltRef.current) === null || _kemiAltRef$current6 === void 0 || _kemiAltRef$current6.ToAddPDFFile((_checkImgs$curCompInd = checkImgs[curCompIndex]) === null || _checkImgs$curCompInd === void 0 ? void 0 : _checkImgs$curCompInd.localPath);
565
+ }, [checkImgs, curCompIndex]);
592
566
 
593
567
  //科密拍照返回结果
594
568
  useEffect(function () {
595
569
  var _Object$keys2;
596
570
  if (captureResult && ((_Object$keys2 = Object.keys(captureResult)) === null || _Object$keys2 === void 0 ? void 0 : _Object$keys2.length) > 0) {
597
571
  add_image(captureResult === null || captureResult === void 0 ? void 0 : captureResult.photoBase64, 0, captureResult === null || captureResult === void 0 ? void 0 : captureResult.localPath);
572
+ setLoading(false);
598
573
  }
599
574
  }, [captureResult]);
600
575
 
@@ -604,6 +579,7 @@ var LabAltimeter = function LabAltimeter(_ref) {
604
579
  console.log('compPDFResult', compPDFResult);
605
580
  if (compPDFResult && ((_Object$keys3 = Object.keys(compPDFResult)) === null || _Object$keys3 === void 0 ? void 0 : _Object$keys3.length) > 0) {
606
581
  add_image(compPDFResult === null || compPDFResult === void 0 ? void 0 : compPDFResult.base64, 1);
582
+ setLoading(false);
607
583
  }
608
584
  }, [compPDFResult]);
609
585
 
@@ -612,10 +588,13 @@ var LabAltimeter = function LabAltimeter(_ref) {
612
588
  var _Object$keys4;
613
589
  if (pdfQueueResult && ((_Object$keys4 = Object.keys(pdfQueueResult)) === null || _Object$keys4 === void 0 ? void 0 : _Object$keys4.length) > 0) {
614
590
  var _imgList$filter;
591
+ // 上一个图片添加到合成队列后,就累加curCompIndex
592
+ setCurCompIndex(curCompIndex + 1);
615
593
  var checkLength = (_imgList$filter = imgList.filter(function (item) {
616
594
  return item.isChecked;
617
595
  })) === null || _imgList$filter === void 0 ? void 0 : _imgList$filter.length; //选中的图片数量
618
596
  var newQueueResult = filterRef.current.pdfQueResult;
597
+ console.log('xxxxxxxxxx', filterRef.current.pdfQueResult, curCompIndex);
619
598
  //执行合并事件
620
599
  newQueueResult.push(pdfQueueResult);
621
600
  if ((newQueueResult === null || newQueueResult === void 0 ? void 0 : newQueueResult.length) === checkLength) {
@@ -646,6 +625,9 @@ var LabAltimeter = function LabAltimeter(_ref) {
646
625
  }, [filterRef.current.deviceVal]);
647
626
  return /*#__PURE__*/React.createElement("div", {
648
627
  className: "altimeter"
628
+ }, /*#__PURE__*/React.createElement(Spin, {
629
+ spinning: loading,
630
+ tip: tipMsg
649
631
  }, /*#__PURE__*/React.createElement("div", {
650
632
  className: "top"
651
633
  }, /*#__PURE__*/React.createElement("span", {
@@ -664,6 +646,7 @@ var LabAltimeter = function LabAltimeter(_ref) {
664
646
  onChange: function onChange(val) {
665
647
  filterRef.current.deviceVal = val;
666
648
  setImgList([]);
649
+ setLoading(false);
667
650
  }
668
651
  }), /*#__PURE__*/React.createElement("div", {
669
652
  className: "g-f-rc icon-div"
@@ -720,14 +703,12 @@ var LabAltimeter = function LabAltimeter(_ref) {
720
703
  getPdfQueueResult: function getPdfQueueResult(result) {
721
704
  return setPdfQueueResult(result);
722
705
  }
723
- }) : /*#__PURE__*/React.createElement("embed", {
706
+ }) : /*#__PURE__*/React.createElement("iframe", {
724
707
  src: curPreviewPath,
725
- type: "application/pdf",
726
- width: "100%",
727
- height: "100%",
728
708
  style: {
729
- minHeight: '725px',
730
- overflowY: 'auto'
709
+ width: '100%',
710
+ height: '100%',
711
+ minHeight: '70vh'
731
712
  }
732
713
  })), /*#__PURE__*/React.createElement("div", {
733
714
  className: "con-right"
@@ -818,7 +799,7 @@ var LabAltimeter = function LabAltimeter(_ref) {
818
799
  }
819
800
  })
820
801
  })));
821
- }) : null))), /*#__PURE__*/React.createElement(SetupModal, {
802
+ }) : null)))), /*#__PURE__*/React.createElement(SetupModal, {
822
803
  visible: setUpVisible,
823
804
  onCancel: handleCancel
824
805
  }));
@@ -4,7 +4,7 @@ interface PdfViewerProps {
4
4
  src: string;
5
5
  pdfjsSrc?: string;
6
6
  fileId?: string;
7
- showMode: SHOWMODE;
7
+ showMode: number;
8
8
  isShowCheck?: boolean;
9
9
  checkedKey?: any[];
10
10
  selectedBookId?: any;
@@ -14,9 +14,5 @@ interface PdfViewerProps {
14
14
  onGetAllBookmarkDatas?: (any: any) => void;
15
15
  onTimeoutCallback?: () => void;
16
16
  }
17
- declare const enum SHOWMODE {
18
- NormalMode = 0,// 预览模式
19
- BookMarkMode = 1
20
- }
21
17
  declare const LabPdfView: ({ src, pdfjsSrc, isShowCheck, checkedKey, selectedBookId, fileId, showMode, timeout, onCheckingBookIds, onGetAllBookmarkDatas, onSelectIngBookmark, onTimeoutCallback, }: PdfViewerProps) => React.JSX.Element;
22
18
  export default LabPdfView;
@@ -11,6 +11,10 @@ interface PdfViewerProps {
11
11
  timeout?: number;
12
12
  onChangeBookmarkDatas?: (any: any) => void;
13
13
  onTimeoutCallback?: () => void;
14
+ onCollected?: () => void;
15
+ onDownloaded?: () => void;
16
+ isColl?: boolean;
17
+ btnShowList?: Array<boolean>;
14
18
  }
15
- declare const LabPdfViewMobile: ({ src, pdfjsSrc, fileTypeName, fileTitle, timeout, showTop, onTimeoutCallback, onChangeBookmarkDatas, }: PdfViewerProps) => React.JSX.Element;
19
+ declare const LabPdfViewMobile: ({ src, pdfjsSrc, fileTypeName, fileTitle, isColl, timeout, showTop, onCollected, onDownloaded, onTimeoutCallback, onChangeBookmarkDatas, btnShowList, }: PdfViewerProps) => React.JSX.Element;
16
20
  export default LabPdfViewMobile;
@@ -1,3 +1,5 @@
1
+ import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime";
2
+ import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
1
3
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
4
  /*
3
5
  * @Descripttion:
@@ -7,7 +9,7 @@ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
7
9
  * @LastEditTime: 2024-06-14 14:28:21
8
10
  */
9
11
  import { SearchBar, TabBar } from 'antd-mobile';
10
- import { CloseOutline, LeftOutline, RightOutline, SearchOutline, UnorderedListOutline } from 'antd-mobile-icons';
12
+ import { CloseOutline, DownlandOutline, LeftOutline, RightOutline, SearchOutline, StarOutline, UnorderedListOutline } from 'antd-mobile-icons';
11
13
  import * as React from 'react';
12
14
  import { useEffect, useState } from 'react';
13
15
  import "./style.less";
@@ -18,12 +20,18 @@ var LabPdfViewMobile = function LabPdfViewMobile(_ref) {
18
20
  pdfjsSrc = _ref$pdfjsSrc === void 0 ? '/statics/pdfjs/web/viewer.html' : _ref$pdfjsSrc,
19
21
  fileTypeName = _ref.fileTypeName,
20
22
  fileTitle = _ref.fileTitle,
23
+ _ref$isColl = _ref.isColl,
24
+ isColl = _ref$isColl === void 0 ? false : _ref$isColl,
21
25
  _ref$timeout = _ref.timeout,
22
26
  timeout = _ref$timeout === void 0 ? 5000 : _ref$timeout,
23
27
  _ref$showTop = _ref.showTop,
24
28
  showTop = _ref$showTop === void 0 ? true : _ref$showTop,
29
+ onCollected = _ref.onCollected,
30
+ onDownloaded = _ref.onDownloaded,
25
31
  onTimeoutCallback = _ref.onTimeoutCallback,
26
- onChangeBookmarkDatas = _ref.onChangeBookmarkDatas;
32
+ onChangeBookmarkDatas = _ref.onChangeBookmarkDatas,
33
+ _ref$btnShowList = _ref.btnShowList,
34
+ btnShowList = _ref$btnShowList === void 0 ? [true, true, false, false] : _ref$btnShowList;
27
35
  var fileSrc = src.replace(/\.(doc|docx|xls|xlsx)$/, '.pdf');
28
36
  var isTimeout = false;
29
37
  var isWork = false;
@@ -64,7 +72,24 @@ var LabPdfViewMobile = function LabPdfViewMobile(_ref) {
64
72
  ReplacePage.innerHTML = "\u7B2C".concat(curPages, "\u9875 \u5171").concat(totalPages, "\u9875");
65
73
  }
66
74
  }
67
- // 切换Tab
75
+ //下载文件
76
+ function downFileToLocal() {
77
+ return _downFileToLocal.apply(this, arguments);
78
+ } // 切换Tab
79
+ function _downFileToLocal() {
80
+ _downFileToLocal = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
81
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
82
+ while (1) switch (_context.prev = _context.next) {
83
+ case 0:
84
+ onDownloaded === null || onDownloaded === void 0 || onDownloaded();
85
+ case 1:
86
+ case "end":
87
+ return _context.stop();
88
+ }
89
+ }, _callee);
90
+ }));
91
+ return _downFileToLocal.apply(this, arguments);
92
+ }
68
93
  function changeTabHandle(key) {
69
94
  setIsShowBookMark(false);
70
95
  setIsShowFind(false);
@@ -72,9 +97,11 @@ var LabPdfViewMobile = function LabPdfViewMobile(_ref) {
72
97
  setIsShowBookMark(true);
73
98
  } else if (key === 'find') {
74
99
  setIsShowFind(true);
75
- } else if (key === 'dwon') {
100
+ } else if (key === 'down') {
101
+ downFileToLocal();
76
102
  setIsShowBookMark(false);
77
103
  } else if (key === 'remark') {
104
+ onCollected === null || onCollected === void 0 || onCollected();
78
105
  setIsShowBookMark(false);
79
106
  }
80
107
  }
@@ -106,6 +133,7 @@ var LabPdfViewMobile = function LabPdfViewMobile(_ref) {
106
133
  iframeWindow.PDFViewerApplication.findBar.highlightAll.checked = true;
107
134
  iframeWindow.PDFViewerApplication.findBar.dispatchEvent('highlightallchange');
108
135
  if (value === '') {
136
+ setFindCount(['0', '0']);
109
137
  return;
110
138
  }
111
139
  setTimeout(function () {
@@ -151,6 +179,7 @@ var LabPdfViewMobile = function LabPdfViewMobile(_ref) {
151
179
  ** 但是需要确保pdfjs已经基本完成初始化;
152
180
  ** 以下采用定时轮询方法,轮询完成后执行其他pdfjs操作;
153
181
  */
182
+
154
183
  function loadSuccessBookMask(bookMarksList) {
155
184
  if (isTimeout) return;
156
185
  isWork = true;
@@ -304,7 +333,7 @@ var LabPdfViewMobile = function LabPdfViewMobile(_ref) {
304
333
  },
305
334
  fontSize: 16,
306
335
  onClick: clickPreviousHandle
307
- }), /*#__PURE__*/React.createElement("span", null, findCount[0]), "/", /*#__PURE__*/React.createElement("span", null, findCount[1]), /*#__PURE__*/React.createElement(RightOutline, {
336
+ }), /*#__PURE__*/React.createElement("span", null, (findCount === null || findCount === void 0 ? void 0 : findCount[0]) || '0'), "/", /*#__PURE__*/React.createElement("span", null, (findCount === null || findCount === void 0 ? void 0 : findCount[1]) || '0'), /*#__PURE__*/React.createElement(RightOutline, {
308
337
  style: {
309
338
  marginLeft: '10px'
310
339
  },
@@ -313,14 +342,26 @@ var LabPdfViewMobile = function LabPdfViewMobile(_ref) {
313
342
  })))), /*#__PURE__*/React.createElement(TabBar, {
314
343
  activeKey: '',
315
344
  onChange: changeTabHandle
316
- }, /*#__PURE__*/React.createElement(TabBar.Item, {
345
+ }, btnShowList[0] && /*#__PURE__*/React.createElement(TabBar.Item, {
317
346
  key: 'title',
318
347
  icon: /*#__PURE__*/React.createElement(UnorderedListOutline, null),
319
348
  title: '目录'
320
- }), /*#__PURE__*/React.createElement(TabBar.Item, {
349
+ }), btnShowList[1] && /*#__PURE__*/React.createElement(TabBar.Item, {
321
350
  key: 'find',
322
351
  icon: /*#__PURE__*/React.createElement(SearchOutline, null),
323
352
  title: '查询'
353
+ }), btnShowList[2] && /*#__PURE__*/React.createElement(TabBar.Item, {
354
+ key: 'down',
355
+ icon: /*#__PURE__*/React.createElement(DownlandOutline, null),
356
+ title: '下载'
357
+ }), btnShowList[3] && /*#__PURE__*/React.createElement(TabBar.Item, {
358
+ key: 'remark',
359
+ icon: /*#__PURE__*/React.createElement(StarOutline, {
360
+ style: {
361
+ color: isColl ? '#0069fd' : ''
362
+ }
363
+ }),
364
+ title: '收藏'
324
365
  })));
325
366
  };
326
367
  export default LabPdfViewMobile;
package/package.json CHANGED
@@ -1,81 +1,82 @@
1
- {
2
- "name": "xh-lab-rc",
3
- "version": "0.16.0",
4
- "description": " A react library for xinhelab",
5
- "license": "MIT",
6
- "module": "dist/index.js",
7
- "types": "dist/index.d.ts",
8
- "files": [
9
- "dist"
10
- ],
11
- "scripts": {
12
- "build": "father build",
13
- "build:watch": "father dev",
14
- "dev": "dumi dev",
15
- "docs:build": "dumi build",
16
- "doctor": "father doctor",
17
- "lint": "npm run lint:es && npm run lint:css",
18
- "lint:css": "stylelint \"{src,test}/**/*.{css,less}\"",
19
- "lint:es": "eslint \"{src,test}/**/*.{js,jsx,ts,tsx}\"",
20
- "prepare": "husky install && dumi setup",
21
- "prepublishOnly": "father doctor && npm run build",
22
- "start": "npm run dev"
23
- },
24
- "commitlint": {
25
- "extends": [
26
- "@commitlint/config-conventional"
27
- ]
28
- },
29
- "lint-staged": {
30
- "*.{md,json}": [
31
- "prettier --write --no-error-on-unmatched-pattern"
32
- ],
33
- "*.{css,less}": [
34
- "stylelint --fix",
35
- "prettier --write"
36
- ],
37
- "*.{js,jsx}": [
38
- "eslint --fix",
39
- "prettier --write"
40
- ],
41
- "*.{ts,tsx}": [
42
- "eslint --fix",
43
- "prettier --parser=typescript --write"
44
- ]
45
- },
46
- "dependencies": {
47
- "@ant-design/icons": "^5.3.5",
48
- "@babel/runtime": "^7.24.6",
49
- "antd": "^5.15.3",
50
- "antd-mobile": "^5.36.1",
51
- "antd-mobile-icons": "^0.3.0",
52
- "classnames": "^2.5.1",
53
- "dayjs": "^1.11.10"
54
- },
55
- "devDependencies": {
56
- "@commitlint/cli": "^17.1.2",
57
- "@commitlint/config-conventional": "^17.1.0",
58
- "@types/react": "^18.0.0",
59
- "@types/react-dom": "^18.0.0",
60
- "@umijs/lint": "^4.0.0",
61
- "dumi": "^2.2.13",
62
- "eslint": "^8.23.0",
63
- "father": "^4.1.0",
64
- "husky": "^8.0.1",
65
- "lint-staged": "^13.0.3",
66
- "prettier": "^2.7.1",
67
- "prettier-plugin-organize-imports": "^3.0.0",
68
- "prettier-plugin-packagejson": "^2.2.18",
69
- "react": "^18.0.0",
70
- "react-dom": "^18.0.0",
71
- "stylelint": "^14.9.1"
72
- },
73
- "peerDependencies": {
74
- "react": "^16.3.0 || ^17.0.0 || ^18.0.0",
75
- "react-dom": "^16.3.0 || ^17.0.0 || ^18.0.0"
76
- },
77
- "publishConfig": {
78
- "access": "public"
79
- },
80
- "authors": []
81
- }
1
+ {
2
+ "name": "xh-lab-rc",
3
+ "version": "0.16.3",
4
+ "description": " A react library for xinhelab",
5
+ "license": "MIT",
6
+ "module": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "files": [
9
+ "dist"
10
+ ],
11
+ "scripts": {
12
+ "build": "father build",
13
+ "build:watch": "father dev",
14
+ "dev": "dumi dev",
15
+ "docs:build": "dumi build",
16
+ "doctor": "father doctor",
17
+ "lint": "npm run lint:es && npm run lint:css",
18
+ "lint:css": "stylelint \"{src,test}/**/*.{css,less}\"",
19
+ "lint:es": "eslint \"{src,test}/**/*.{js,jsx,ts,tsx}\"",
20
+ "prepare": "husky install && dumi setup",
21
+ "prepublishOnly": "father doctor && npm run build",
22
+ "start": "npm run dev"
23
+ },
24
+ "commitlint": {
25
+ "extends": [
26
+ "@commitlint/config-conventional"
27
+ ]
28
+ },
29
+ "lint-staged": {
30
+ "*.{md,json}": [
31
+ "prettier --write --no-error-on-unmatched-pattern"
32
+ ],
33
+ "*.{css,less}": [
34
+ "stylelint --fix",
35
+ "prettier --write"
36
+ ],
37
+ "*.{js,jsx}": [
38
+ "eslint --fix",
39
+ "prettier --write"
40
+ ],
41
+ "*.{ts,tsx}": [
42
+ "eslint --fix",
43
+ "prettier --parser=typescript --write"
44
+ ]
45
+ },
46
+ "dependencies": {
47
+ "@ant-design/icons": "^5.3.5",
48
+ "@babel/runtime": "^7.24.6",
49
+ "antd": "^5.15.3",
50
+ "antd-mobile": "^5.36.1",
51
+ "antd-mobile-icons": "^0.3.0",
52
+ "axios": "^1.7.2",
53
+ "classnames": "^2.5.1",
54
+ "dayjs": "^1.11.10"
55
+ },
56
+ "devDependencies": {
57
+ "@commitlint/cli": "^17.1.2",
58
+ "@commitlint/config-conventional": "^17.1.0",
59
+ "@types/react": "^18.0.0",
60
+ "@types/react-dom": "^18.0.0",
61
+ "@umijs/lint": "^4.0.0",
62
+ "dumi": "^2.2.13",
63
+ "eslint": "^8.23.0",
64
+ "father": "^4.1.0",
65
+ "husky": "^8.0.1",
66
+ "lint-staged": "^13.0.3",
67
+ "prettier": "^2.7.1",
68
+ "prettier-plugin-organize-imports": "^3.0.0",
69
+ "prettier-plugin-packagejson": "^2.2.18",
70
+ "react": "^18.0.0",
71
+ "react-dom": "^18.0.0",
72
+ "stylelint": "^14.9.1"
73
+ },
74
+ "peerDependencies": {
75
+ "react": "^16.3.0 || ^17.0.0 || ^18.0.0",
76
+ "react-dom": "^16.3.0 || ^17.0.0 || ^18.0.0"
77
+ },
78
+ "publishConfig": {
79
+ "access": "public"
80
+ },
81
+ "authors": []
82
+ }