@uxda/appkit 4.3.3 → 4.3.4

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.
Files changed (135) hide show
  1. package/.eslintrc.mjs +7 -7
  2. package/COMPONENT_USAGE.md +1523 -1523
  3. package/PROJECT_DOCS.md +142 -142
  4. package/README.md +187 -187
  5. package/babel.config.js +12 -12
  6. package/dist/appkit.css +63 -15
  7. package/dist/index.js +766 -254
  8. package/package.json +79 -79
  9. package/project.config.json +15 -15
  10. package/project.tt.json +13 -13
  11. package/rollup.config.mjs +78 -78
  12. package/src/Appkit.ts +72 -72
  13. package/src/balance/api/endpoints.ts +133 -133
  14. package/src/balance/api/index.ts +118 -118
  15. package/src/balance/components/AccountView.vue +770 -770
  16. package/src/balance/components/BalanceCard.vue +210 -210
  17. package/src/balance/components/BalanceReminder.vue +84 -84
  18. package/src/balance/components/ConsumptionFilter.vue +218 -218
  19. package/src/balance/components/ConsumptionRules.vue +68 -68
  20. package/src/balance/components/DateFilter.vue +259 -259
  21. package/src/balance/components/DateRange.vue +111 -111
  22. package/src/balance/components/ListFilter.vue +62 -62
  23. package/src/balance/components/ListFilterPicker.vue +191 -191
  24. package/src/balance/components/PromoterCard.vue +307 -307
  25. package/src/balance/components/SecondBalance.vue +77 -77
  26. package/src/balance/components/Tip.vue +45 -45
  27. package/src/balance/components/index.ts +8 -8
  28. package/src/balance/types.ts +99 -99
  29. package/src/components/bt-cropper/index.vue +730 -730
  30. package/src/components/bt-cropper/utils/calcCropper.js +42 -42
  31. package/src/components/bt-cropper/utils/calcImagePosition.js +23 -23
  32. package/src/components/bt-cropper/utils/calcImageSize.js +37 -37
  33. package/src/components/bt-cropper/utils/calcPointDistance.js +12 -12
  34. package/src/components/bt-cropper/utils/calcRightAndBottom.js +7 -7
  35. package/src/components/bt-cropper/utils/ratio.js +3 -3
  36. package/src/components/bt-cropper/utils/tools.js +25 -25
  37. package/src/components/dd-area/index.vue +225 -225
  38. package/src/components/dd-icon/doc.md +21 -21
  39. package/src/components/dd-icon/index.vue +23 -23
  40. package/src/components/dd-notice-bar/index.vue +78 -78
  41. package/src/components/dd-search/doc.md +34 -34
  42. package/src/components/dd-search/index.vue +168 -168
  43. package/src/components/dd-selector/index.vue +124 -124
  44. package/src/components/dd-skeleton/doc.md +19 -19
  45. package/src/components/dd-skeleton/index.vue +36 -36
  46. package/src/global.ts +6 -6
  47. package/src/index.ts +101 -101
  48. package/src/main.scss +1 -1
  49. package/src/notice/api/endpoints.ts +54 -54
  50. package/src/notice/api/index.ts +121 -121
  51. package/src/notice/components/NoticeBanner.vue +247 -247
  52. package/src/notice/components/NoticeEntry.vue +99 -99
  53. package/src/notice/components/NoticeList.vue +311 -311
  54. package/src/notice/components/NoticeList2.vue +399 -398
  55. package/src/notice/components/NoticePopup.vue +163 -163
  56. package/src/notice/components/index.ts +6 -6
  57. package/src/notice/components/useCommonList.ts +87 -86
  58. package/src/notice/components/useNotice.ts +35 -35
  59. package/src/notice/index.ts +1 -1
  60. package/src/notice/types.ts +25 -25
  61. package/src/payment/api/config.ts +7 -7
  62. package/src/payment/api/endpoints.ts +98 -96
  63. package/src/payment/api/index.ts +108 -107
  64. package/src/payment/components/AmountPicker.vue +90 -90
  65. package/src/payment/components/RechargeResult.vue +68 -69
  66. package/src/payment/components/RechargeView.vue +191 -191
  67. package/src/payment/components/RightsPicker.vue +105 -105
  68. package/src/payment/components/TradeView.vue +523 -363
  69. package/src/payment/components/UserAgreement.vue +234 -234
  70. package/src/payment/components/index.ts +22 -22
  71. package/src/payment/index.ts +5 -5
  72. package/src/payment/services/index.ts +16 -16
  73. package/src/payment/services/invoke-recharge.ts +25 -25
  74. package/src/payment/services/request-payment.ts +132 -130
  75. package/src/payment/types.ts +34 -33
  76. package/src/register/components/SelfRegistration.vue +233 -233
  77. package/src/register/components/index.ts +2 -2
  78. package/src/scenarios/components/SharePoster.vue +364 -364
  79. package/src/scenarios/components/index.ts +2 -2
  80. package/src/scenarios/components/poster-paste.vue +93 -93
  81. package/src/scenarios/components/share-poster.md +273 -273
  82. package/src/shared/components/AppDrawer.vue +53 -53
  83. package/src/shared/components/AppVerify.vue +137 -128
  84. package/src/shared/components/DeviceVersion.vue +78 -78
  85. package/src/shared/components/EmptyView.vue +33 -33
  86. package/src/shared/components/OcrBank.vue +202 -0
  87. package/src/shared/components/OcrBusinessLicense.vue +120 -137
  88. package/src/shared/components/OcrIcon.vue +267 -229
  89. package/src/shared/components/OcrInvoice.vue +218 -0
  90. package/src/shared/components/PageHeader.vue +84 -84
  91. package/src/shared/components/index.ts +10 -8
  92. package/src/shared/composables/index.ts +10 -9
  93. package/src/shared/composables/useAmount.ts +46 -46
  94. package/src/shared/composables/useCompress.ts +64 -0
  95. package/src/shared/composables/useCountdown.ts +46 -46
  96. package/src/shared/composables/useCrypto.ts +76 -76
  97. package/src/shared/composables/useDeviceEnv.ts +26 -26
  98. package/src/shared/composables/useDragBox.ts +97 -97
  99. package/src/shared/composables/useEncode.ts +43 -43
  100. package/src/shared/composables/useLogger.ts +144 -144
  101. package/src/shared/composables/useSafeArea.ts +46 -46
  102. package/src/shared/composables/useTabbar.ts +24 -24
  103. package/src/shared/composables/useUpload.ts +106 -61
  104. package/src/shared/composables/useValidator.ts +32 -32
  105. package/src/shared/composables/useWxAuth.ts +48 -48
  106. package/src/shared/http/Http.ts +149 -148
  107. package/src/shared/http/index.ts +1 -1
  108. package/src/shared/http/types.ts +163 -163
  109. package/src/shared/index.ts +9 -9
  110. package/src/shared/tracking/directives/index.ts +40 -40
  111. package/src/shared/tracking/examples/page-tracking-template.vue +27 -27
  112. package/src/shared/tracking/tracking-sdk.ts +0 -1
  113. package/src/shared/weixin/index.ts +9 -9
  114. package/src/shared/weixin/jssdk.ts +103 -103
  115. package/src/shared/weixin/payment.ts +38 -38
  116. package/src/styles/vars.scss +3 -3
  117. package/src/user/api/endpoints.ts +17 -17
  118. package/src/user/api/index.ts +123 -123
  119. package/src/user/components/LoginSetting.vue +114 -114
  120. package/src/user/components/UserAuth.vue +218 -218
  121. package/src/user/components/UserBinding.vue +277 -277
  122. package/src/user/components/UserBindingSuccess.vue +80 -80
  123. package/src/user/components/UserEntry.vue +139 -139
  124. package/src/user/components/UserFeedback.vue +428 -427
  125. package/src/user/components/UserFeedbackEntry.vue +175 -175
  126. package/src/user/components/UserHeadCrop.vue +65 -65
  127. package/src/user/components/UserInfo.vue +710 -709
  128. package/src/user/components/UserResourceEmpty.vue +75 -75
  129. package/src/user/components/index.ts +23 -23
  130. package/src/user/index.ts +1 -1
  131. package/src/utils/utils.ts +33 -33
  132. package/tsconfig.json +30 -30
  133. package/types/global.d.ts +24 -22
  134. package/types/vue.d.ts +10 -10
  135. package/dist/assets/asset-DcH8Kg-2 +0 -1
package/dist/index.js CHANGED
@@ -1,15 +1,15 @@
1
- import { Grid, GridItem, Popup, ActionSheet, Checkbox, Button, Dialog, DatePicker, Form, FormItem, RadioGroup, Radio, Ellipsis, Skeleton, Cell, Input, Steps, Step } from '@nutui/nutui-taro';
1
+ import { GridItem, Grid, Popup, ActionSheet, Checkbox, Button, Dialog, DatePicker, Radio, RadioGroup, FormItem, Form, Ellipsis, Skeleton, Cell, Input, Step, Steps } from '@nutui/nutui-taro';
2
2
  import '@nutui/nutui-taro/dist/packages/button/style/css';
3
3
  import '@nutui/nutui-taro/dist/packages/checkbox/style/css';
4
- import { defineComponent, reactive, createBlock, openBlock, withCtx, createElementBlock, Fragment, renderList, normalizeClass, createElementVNode, toDisplayString, createTextVNode, ref, computed, onUnmounted, resolveDirective, createCommentVNode, withDirectives, renderSlot, createVNode, normalizeStyle, unref, isRef, onMounted, createStaticVNode, watch, vShow, mergeModels, useModel, resolveComponent, vModelText, watchPostEffect, withModifiers } from 'vue';
4
+ import { defineComponent, reactive, openBlock, createBlock, withCtx, createElementBlock, Fragment, renderList, normalizeClass, createElementVNode, toDisplayString, createTextVNode, ref, computed, onUnmounted, resolveDirective, createCommentVNode, withDirectives, renderSlot, createVNode, normalizeStyle, unref, isRef, onMounted, createStaticVNode, watch, vShow, mergeModels, useModel, resolveComponent, vModelText, watchPostEffect, withModifiers } from 'vue';
5
5
  import '@nutui/nutui-taro/dist/packages/grid/style/css';
6
6
  import '@nutui/nutui-taro/dist/packages/griditem/style/css';
7
- import Taro, { showModal, getSystemInfoSync, getMenuButtonBoundingClientRect, uploadFile, request as request$1, showToast, chooseMedia, chooseMessageFile, showLoading, hideLoading, getStorageSync, setStorageSync, getSystemInfo, getNetworkType, getEnv, getAccountInfoSync, getPerformance, onAppHide, useDidShow, onAppShow, onNetworkStatusChange, useRouter } from '@tarojs/taro';
7
+ import Taro, { showModal, getSystemInfoSync, getMenuButtonBoundingClientRect, request as request$1, uploadFile, showToast, chooseMedia, chooseMessageFile, showLoading, hideLoading, getStorageSync, setStorageSync, getSystemInfo, getNetworkType, getEnv, getAccountInfoSync, getPerformance, onAppHide, useDidShow, onAppShow, onNetworkStatusChange, useRouter } from '@tarojs/taro';
8
8
  import '@nutui/nutui-taro/dist/packages/popup/style/css';
9
9
  import isMobilePhone from 'validator/es/lib/isMobilePhone';
10
10
  import isIdentityCard from 'validator/es/lib/isIdentityCard';
11
11
  import qs from 'qs';
12
- import { NsForm, NsInput, NsButton, NsIcon, usePopup, useNutshell, NsButtonGroup, usePaging, NsPage, NsTabs, NsPageContent, NsSkeleton, NsRepeator, NsCard, NsEmpty, NsCheckbox } from '@uxda/nutshell/taro';
12
+ import { NsForm, NsInput, NsButton, useNutshell, NsIcon, usePopup, NsButtonGroup, usePaging, NsPage, NsTabs, NsPageContent, NsSkeleton, NsRepeator, NsCard, NsEmpty, NsCheckbox } from '@uxda/nutshell/taro';
13
13
  import '@nutui/nutui-taro/dist/packages/actionsheet/style/css';
14
14
  import pako from 'pako';
15
15
  import dsBridge from 'dsbridge';
@@ -34,7 +34,7 @@ import '@nutui/nutui-taro/dist/packages/step/style/css';
34
34
 
35
35
  const _hoisted_1$G = { class: "token-line number" };
36
36
  const _hoisted_2$t = { class: "number" };
37
- var script$M = /* @__PURE__ */ defineComponent({
37
+ var script$O = /* @__PURE__ */ defineComponent({
38
38
  __name: "AmountPicker",
39
39
  props: {
40
40
  items: { type: Array, required: true, default: () => [] },
@@ -107,7 +107,7 @@ var script$M = /* @__PURE__ */ defineComponent({
107
107
  }
108
108
  });
109
109
 
110
- script$M.__file = "src/payment/components/AmountPicker.vue";
110
+ script$O.__file = "src/payment/components/AmountPicker.vue";
111
111
 
112
112
  const getSdkConfig = (appCode, url) => {
113
113
  return new Promise((resolve, reject) => {
@@ -310,71 +310,84 @@ function useEncode() {
310
310
  };
311
311
  }
312
312
 
313
- const globalData = {};
314
-
315
- const appKitOptions = {
316
- app: () => "",
317
- tenant: () => "",
318
- token: () => "",
319
- tempToken: () => "",
320
- baseUrl: () => "",
321
- 401() {
322
- },
323
- gray: () => ""
324
- };
325
- const useAppKitOptions = () => {
326
- if (!globalData.$appKitOptions) {
327
- globalData.$appKitOptions = appKitOptions;
328
- }
329
- return globalData.$appKitOptions;
330
- };
331
-
332
- const mappings$1 = {
333
- downloadUrl: "thrumb",
334
- fileId: "id",
335
- fileName: "name",
336
- fileSize: "size",
337
- fileSuffix: "ext",
338
- fileType: "type",
339
- originalUrl: "url"
340
- };
341
- const transformFields = (row) => {
342
- return Object.fromEntries(Object.entries(row).map(([k, v]) => [mappings$1[k] || k, v]));
313
+ const compressImageWithCanvas = (src, quality) => {
314
+ return new Promise((resolve, reject) => {
315
+ const img = new Image();
316
+ img.crossOrigin = "anonymous";
317
+ img.onload = () => {
318
+ try {
319
+ const canvas = document.createElement("canvas");
320
+ const ctx = canvas.getContext("2d");
321
+ if (!ctx) {
322
+ reject(new Error("\u65E0\u6CD5\u83B7\u53D6 canvas \u4E0A\u4E0B\u6587"));
323
+ return;
324
+ }
325
+ const maxWidth = 900;
326
+ const maxHeight = 900;
327
+ let width = img.width;
328
+ let height = img.height;
329
+ if (width > maxWidth || height > maxHeight) {
330
+ const ratio = Math.min(maxWidth / width, maxHeight / height);
331
+ width = width * ratio;
332
+ height = height * ratio;
333
+ }
334
+ canvas.width = width;
335
+ canvas.height = height;
336
+ ctx.drawImage(img, 0, 0, width, height);
337
+ canvas.toBlob(
338
+ (blob) => {
339
+ if (!blob) {
340
+ reject(new Error("\u56FE\u7247\u538B\u7F29\u5931\u8D25"));
341
+ return;
342
+ }
343
+ const compressedUrl = URL.createObjectURL(blob);
344
+ resolve(compressedUrl);
345
+ },
346
+ "image/jpeg",
347
+ quality / 100
348
+ );
349
+ } catch (error) {
350
+ reject(error);
351
+ }
352
+ };
353
+ img.onerror = () => {
354
+ reject(new Error("\u56FE\u7247\u52A0\u8F7D\u5931\u8D25"));
355
+ };
356
+ img.src = src;
357
+ });
343
358
  };
344
- const useUpload = (config) => {
345
- const appkitOptions = useAppKitOptions();
346
- const upload = (url, file) => {
359
+ async function compressImage(src, quality = 80) {
360
+ if (Taro.getEnv() === "WEB") {
361
+ try {
362
+ const compressedUrl = await compressImageWithCanvas(src, quality);
363
+ return { tempFilePath: compressedUrl };
364
+ } catch (error) {
365
+ console.error("\u56FE\u7247\u538B\u7F29\u5931\u8D25:", error);
366
+ return { tempFilePath: src };
367
+ }
368
+ } else {
347
369
  return new Promise((resolve, reject) => {
348
- uploadFile({
349
- url: config.baseUrl + url,
350
- filePath: file.path,
351
- name: "file",
352
- formData: {
353
- objectNo: `min${Date.now()}`
354
- },
355
- header: {
356
- ...config.headers,
357
- token: appkitOptions.tempToken() || appkitOptions.token()
370
+ Taro.compressImage({
371
+ src,
372
+ quality,
373
+ success: (res) => {
374
+ resolve(res);
358
375
  },
359
- success: (rsp) => {
360
- const { data } = rsp;
361
- try {
362
- const response = JSON.parse(data);
363
- console.log("===response", response);
364
- resolve(transformFields(response.result));
365
- } catch (e) {
366
- reject({
367
- message: "\u6587\u4EF6\u4E0A\u4F20\u5F02\u5E38"
368
- });
369
- }
376
+ fail: (res) => {
377
+ reject(res);
370
378
  }
371
379
  });
372
380
  });
373
- };
374
- return {
375
- upload
376
- };
377
- };
381
+ }
382
+ }
383
+ function getCompressQuality(size) {
384
+ let quality = 100;
385
+ const curSize = size / (1024 * 1024);
386
+ if (curSize > 6) {
387
+ quality = quality - (curSize - 6) / curSize * 100;
388
+ }
389
+ return quality;
390
+ }
378
391
 
379
392
  const defaultCryptoConfig = {
380
393
  maskField: "mask",
@@ -415,6 +428,25 @@ function useCrypto(config) {
415
428
  };
416
429
  }
417
430
 
431
+ const globalData = {};
432
+
433
+ const appKitOptions = {
434
+ app: () => "",
435
+ tenant: () => "",
436
+ token: () => "",
437
+ tempToken: () => "",
438
+ baseUrl: () => "",
439
+ 401() {
440
+ },
441
+ gray: () => ""
442
+ };
443
+ const useAppKitOptions = () => {
444
+ if (!globalData.$appKitOptions) {
445
+ globalData.$appKitOptions = appKitOptions;
446
+ }
447
+ return globalData.$appKitOptions;
448
+ };
449
+
418
450
  const defaultLogOptions = {
419
451
  projectName: "ddyk-dev",
420
452
  logStore: "ddjf-internet-web",
@@ -548,11 +580,59 @@ function useWxAuth() {
548
580
  };
549
581
  }
550
582
 
583
+ const mappings$1 = {
584
+ downloadUrl: "thrumb",
585
+ fileId: "id",
586
+ fileName: "name",
587
+ fileSize: "size",
588
+ fileSuffix: "ext",
589
+ fileType: "type",
590
+ originalUrl: "url"
591
+ };
592
+ const transformFields = (row) => {
593
+ return Object.fromEntries(Object.entries(row).map(([k, v]) => [mappings$1[k] || k, v]));
594
+ };
595
+ const useUpload = (config) => {
596
+ const appkitOptions = useAppKitOptions();
597
+ const upload = (url, file) => {
598
+ return new Promise((resolve, reject) => {
599
+ uploadFile({
600
+ url: config.baseUrl + url,
601
+ filePath: file.path,
602
+ name: "file",
603
+ formData: {
604
+ objectNo: `min${Date.now()}`,
605
+ appCode: config.headers?.appcode || appkitOptions.app()
606
+ },
607
+ header: {
608
+ ...config.headers,
609
+ token: appkitOptions.tempToken() || appkitOptions.token()
610
+ },
611
+ success: (rsp) => {
612
+ const { data } = rsp;
613
+ try {
614
+ const response = JSON.parse(data);
615
+ console.log("===response", response);
616
+ resolve(transformFields(response.result));
617
+ } catch (e) {
618
+ reject({
619
+ message: "\u6587\u4EF6\u4E0A\u4F20\u5F02\u5E38"
620
+ });
621
+ }
622
+ }
623
+ });
624
+ });
625
+ };
626
+ return {
627
+ upload
628
+ };
629
+ };
630
+
551
631
  const _hoisted_1$F = {
552
632
  key: 0,
553
633
  class: "page-title"
554
634
  };
555
- var script$L = /* @__PURE__ */ defineComponent({
635
+ var script$N = /* @__PURE__ */ defineComponent({
556
636
  __name: "PageHeader",
557
637
  props: {
558
638
  title: { type: String, required: false, default: "" },
@@ -609,10 +689,10 @@ var script$L = /* @__PURE__ */ defineComponent({
609
689
  }
610
690
  });
611
691
 
612
- script$L.__file = "src/shared/components/PageHeader.vue";
692
+ script$N.__file = "src/shared/components/PageHeader.vue";
613
693
 
614
694
  const _hoisted_1$E = { class: "drawer-body" };
615
- var script$K = /* @__PURE__ */ defineComponent({
695
+ var script$M = /* @__PURE__ */ defineComponent({
616
696
  __name: "AppDrawer",
617
697
  props: {
618
698
  modelValue: { type: Boolean, required: true },
@@ -636,7 +716,7 @@ var script$K = /* @__PURE__ */ defineComponent({
636
716
  "onUpdate:visible": onVisibleChange
637
717
  }, {
638
718
  default: withCtx(() => [
639
- createVNode(script$L, {
719
+ createVNode(script$N, {
640
720
  title: __props.title,
641
721
  style: normalizeStyle(unref(Taro).getEnv() !== "WEB" ? "" : "--height: 40px"),
642
722
  onClose: onPageHeaderClose
@@ -652,7 +732,7 @@ var script$K = /* @__PURE__ */ defineComponent({
652
732
  }
653
733
  });
654
734
 
655
- script$K.__file = "src/shared/components/AppDrawer.vue";
735
+ script$M.__file = "src/shared/components/AppDrawer.vue";
656
736
 
657
737
  const _hoisted_1$D = { class: "app-verify column" };
658
738
  const _hoisted_2$s = { class: "caption" };
@@ -663,7 +743,7 @@ const _hoisted_5$e = {
663
743
  class: "caption"
664
744
  };
665
745
  const _hoisted_6$a = { class: "row buttons" };
666
- var script$J = /* @__PURE__ */ defineComponent({
746
+ var script$L = /* @__PURE__ */ defineComponent({
667
747
  __name: "AppVerify",
668
748
  props: {
669
749
  phone: { type: String, required: true },
@@ -770,6 +850,7 @@ var script$J = /* @__PURE__ */ defineComponent({
770
850
  createElementVNode("div", _hoisted_6$a, [
771
851
  withDirectives((openBlock(), createBlock(unref(NsButton), {
772
852
  class: "cancel-btn",
853
+ r: 20,
773
854
  onClick: _cache[2] || (_cache[2] = ($event) => emits("cancel"))
774
855
  }, {
775
856
  default: withCtx(() => [..._cache[3] || (_cache[3] = [
@@ -786,6 +867,7 @@ var script$J = /* @__PURE__ */ defineComponent({
786
867
  ]),
787
868
  withDirectives((openBlock(), createBlock(unref(NsButton), {
788
869
  color: "primary",
870
+ r: 20,
789
871
  onClick: onOk
790
872
  }, {
791
873
  default: withCtx(() => [..._cache[4] || (_cache[4] = [
@@ -806,10 +888,10 @@ var script$J = /* @__PURE__ */ defineComponent({
806
888
  }
807
889
  });
808
890
 
809
- script$J.__file = "src/shared/components/AppVerify.vue";
891
+ script$L.__file = "src/shared/components/AppVerify.vue";
810
892
 
811
893
  const _hoisted_1$C = { key: 0 };
812
- var script$I = /* @__PURE__ */ defineComponent({
894
+ var script$K = /* @__PURE__ */ defineComponent({
813
895
  __name: "index",
814
896
  props: {
815
897
  text: { type: String, required: false },
@@ -876,7 +958,7 @@ var script$I = /* @__PURE__ */ defineComponent({
876
958
  }
877
959
  });
878
960
 
879
- script$I.__file = "src/components/dd-notice-bar/index.vue";
961
+ script$K.__file = "src/components/dd-notice-bar/index.vue";
880
962
 
881
963
  const typeMappings = {
882
964
  CZ: "\u5145\u503C",
@@ -1081,7 +1163,7 @@ function useHttp$3() {
1081
1163
  return $http;
1082
1164
  }
1083
1165
 
1084
- var script$H = /* @__PURE__ */ defineComponent({
1166
+ var script$J = /* @__PURE__ */ defineComponent({
1085
1167
  __name: "DeviceVersion",
1086
1168
  props: {
1087
1169
  versions: { type: String, required: false, default: "{}" }
@@ -1128,7 +1210,7 @@ var script$H = /* @__PURE__ */ defineComponent({
1128
1210
  }
1129
1211
  });
1130
1212
  return (_ctx, _cache) => {
1131
- return showAlert.value ? (openBlock(), createBlock(script$I, {
1213
+ return showAlert.value ? (openBlock(), createBlock(script$K, {
1132
1214
  key: 0,
1133
1215
  showClose: "",
1134
1216
  style: normalizeStyle(topStype.value),
@@ -1139,102 +1221,262 @@ var script$H = /* @__PURE__ */ defineComponent({
1139
1221
  }
1140
1222
  });
1141
1223
 
1142
- script$H.__file = "src/shared/components/DeviceVersion.vue";
1224
+ script$J.__file = "src/shared/components/DeviceVersion.vue";
1143
1225
 
1144
- var script$G = /* @__PURE__ */ defineComponent({
1226
+ var script$I = /* @__PURE__ */ defineComponent({
1145
1227
  __name: "OcrIcon",
1146
1228
  props: {
1147
1229
  disabled: { type: Boolean, required: false, default: false },
1148
1230
  side: { type: String, required: false, default: "face" },
1149
- class: { type: String, required: false, default: "" }
1231
+ className: { type: String, required: false, default: "" },
1232
+ uploadUrl: { type: String, required: false, default: "/saas-base/file/uploadPublic" },
1233
+ customUpload: { type: Function, required: false },
1234
+ hasUploadVo: { type: Boolean, required: false, default: true },
1235
+ customClick: { type: Boolean, required: false, default: false }
1150
1236
  },
1151
1237
  emits: ["complete"],
1152
- setup(__props, { emit: __emit }) {
1238
+ setup(__props, { expose: __expose, emit: __emit }) {
1153
1239
  const appKitOptions = useAppKitOptions();
1240
+ const $http = useHttp$3(), $n = useNutshell();
1154
1241
  const emits = __emit;
1155
1242
  const props = __props;
1156
- async function taroImgCompress(src, quality = 80) {
1157
- if (Taro.getEnv() === "WEB") {
1158
- return src;
1159
- } else {
1160
- return new Promise((resolve, reject) => {
1161
- Taro.compressImage({
1162
- src,
1163
- quality,
1164
- success: (res) => {
1165
- resolve(res);
1166
- },
1167
- fail: (res) => {
1168
- reject(res);
1243
+ function allTrim(str) {
1244
+ return str.replace(/\s+/g, "");
1245
+ }
1246
+ async function onUploadFile(csRes) {
1247
+ let result = null;
1248
+ try {
1249
+ let { path, size, tempFilePath } = csRes.tempFiles[0];
1250
+ const compressImg = await compressImage(path || tempFilePath, getCompressQuality(size)) || {};
1251
+ const filePath = compressImg.tempFilePath || path;
1252
+ if (props.customUpload) {
1253
+ props.customUpload(filePath);
1254
+ return;
1255
+ }
1256
+ showLoading({ title: "\u8EAB\u4EFD\u8BC1\u8BC6\u522B\u4E2D..", mask: true });
1257
+ const session = appKitOptions.token();
1258
+ const baseUrl = appKitOptions.baseUrl();
1259
+ const upRes = await uploadFile({
1260
+ url: `${baseUrl}${!props.hasUploadVo ? props.uploadUrl : "/hkapprove/ocr/idcard"}`,
1261
+ filePath,
1262
+ name: "file",
1263
+ formData: {
1264
+ objectNo: `min${Date.now()}`,
1265
+ side: props.side,
1266
+ appCode: appKitOptions.app()
1267
+ },
1268
+ header: {
1269
+ token: session || ""
1270
+ }
1271
+ });
1272
+ const res = JSON.parse(upRes.data);
1273
+ if (res.code === "200") {
1274
+ if (props.hasUploadVo) {
1275
+ hideLoading();
1276
+ const faceInfo = res.result.faceInfo || {};
1277
+ const backInfo = res.result.backInfo || {};
1278
+ result = {
1279
+ faceInfo: {
1280
+ name: allTrim(faceInfo.name || ""),
1281
+ certNo: allTrim(faceInfo.num || ""),
1282
+ address: allTrim(faceInfo.address || "")
1283
+ },
1284
+ backInfo: {
1285
+ startDate: backInfo?.startDate || "",
1286
+ endDate: backInfo?.endDate || ""
1287
+ },
1288
+ fileUploadVO: res.result.fileUploadVO || {}
1289
+ };
1290
+ if (props.side === "face" && !result.faceInfo.name && !result.faceInfo.certNo) {
1291
+ showToast({ title: "\u8BC6\u522B\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5", icon: "none" });
1292
+ }
1293
+ if (props.side === "back" && !result.backInfo?.startDate && !result.backInfo?.endDate) {
1294
+ showToast({ title: "\u8BC6\u522B\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5", icon: "none" });
1169
1295
  }
1296
+ } else {
1297
+ await getOcrInfo(res.result);
1298
+ }
1299
+ } else {
1300
+ hideLoading();
1301
+ showToast({
1302
+ title: res.msg,
1303
+ icon: "error"
1170
1304
  });
1305
+ }
1306
+ } catch (err) {
1307
+ hideLoading();
1308
+ console.log(err);
1309
+ }
1310
+ props.hasUploadVo && (result?.faceInfo.name || result?.backInfo.startDate) && emits("complete", result);
1311
+ }
1312
+ async function getOcrInfo(file) {
1313
+ try {
1314
+ const res = await $http.get("/hkbase/common/idCard", {
1315
+ fileUrl: typeof file === "string" ? file : file.originalUrl,
1316
+ side: props.side
1171
1317
  });
1318
+ hideLoading();
1319
+ if (props.side === "face" && !res?.name || props.side === "back" && !res?.startDate) {
1320
+ $n.dialog({
1321
+ title: "\u8BC6\u522B\u5931\u8D25",
1322
+ message: `\u60A8\u4E0A\u4F20\u7684\u56FE\u7247\u53EF\u80FD\u4E0D\u591F\u6E05\u6670\u6216\u4E0E\u5F53\u524D\u529F\u80FD\u4E0D\u7B26\uFF0C\u8BF7\u91CD\u65B0\u4E0A\u4F20\u4E00\u5F20\u6E05\u6670\u3001\u5B8C\u6574\u7684\u56FE\u7247\u3002\u8C22\u8C22\uFF01`,
1323
+ okText: "\u6211\u77E5\u9053\u4E86",
1324
+ cancelText: ""
1325
+ });
1326
+ return;
1327
+ }
1328
+ emits("complete", {
1329
+ faceInfo: {
1330
+ name: allTrim(res?.name || ""),
1331
+ certNo: allTrim(res?.cardNumber || ""),
1332
+ address: allTrim(res?.address || "")
1333
+ },
1334
+ backInfo: {
1335
+ startDate: res?.expireDate || "",
1336
+ endDate: res?.signDate || ""
1337
+ },
1338
+ fileUploadVO: {
1339
+ fileUrl: typeof file === "string" ? file : file.originalUrl,
1340
+ fileKey: typeof file === "string" ? file : file.fileId
1341
+ }
1342
+ });
1343
+ } catch (err) {
1344
+ hideLoading();
1345
+ }
1346
+ }
1347
+ const activeSheetVisible = ref(false);
1348
+ const actionSheetMenus = [
1349
+ {
1350
+ name: "\u62CD\u6444",
1351
+ type: "camera"
1352
+ },
1353
+ {
1354
+ name: "\u4ECE\u76F8\u518C\u9009\u62E9",
1355
+ type: "album"
1356
+ },
1357
+ {
1358
+ name: "\u4ECE\u804A\u5929\u4F1A\u8BDD\u9009\u62E9",
1359
+ type: "message"
1172
1360
  }
1361
+ ];
1362
+ if (Taro.getEnv() === "WEB") {
1363
+ actionSheetMenus.pop();
1173
1364
  }
1174
- function getCompressQuality(size) {
1175
- let quality = 100;
1176
- const curSize = size / (1024 * 1024);
1177
- if (curSize > 6) {
1178
- quality = quality - (curSize - 6) / curSize * 100;
1365
+ async function chooseImages(item) {
1366
+ if (["camera", "album"].includes(item.type)) {
1367
+ const csRes = await chooseMedia({
1368
+ count: 1,
1369
+ sourceType: [item.type],
1370
+ // "camera" | "album"
1371
+ maxDuration: 60
1372
+ // 使用duration属性判断是图片还是视频,图片没有该属性
1373
+ });
1374
+ onUploadFile(csRes);
1375
+ } else {
1376
+ const csRes = await chooseMessageFile({
1377
+ count: 1,
1378
+ type: "image"
1379
+ });
1380
+ onUploadFile(csRes);
1179
1381
  }
1180
- return quality;
1181
1382
  }
1182
- function allTrim(str) {
1183
- return str.replace(/\s+/g, "");
1383
+ async function onUpload() {
1384
+ if (props.disabled) return;
1385
+ if (Taro.getEnv() === "WEB") {
1386
+ const csRes = await chooseMedia({
1387
+ count: 1,
1388
+ sourceType: ["album"],
1389
+ // "camera" | "album"
1390
+ maxDuration: 60
1391
+ // 使用duration属性判断是图片还是视频,图片没有该属性
1392
+ });
1393
+ onUploadFile(csRes);
1394
+ return;
1395
+ }
1396
+ activeSheetVisible.value = true;
1184
1397
  }
1398
+ __expose({
1399
+ onUpload
1400
+ });
1401
+ return (_ctx, _cache) => {
1402
+ const _component_nut_action_sheet = ActionSheet;
1403
+ const _directive_track_click = resolveDirective("track-click");
1404
+ return openBlock(), createElementBlock(
1405
+ Fragment,
1406
+ null,
1407
+ [
1408
+ withDirectives((openBlock(), createElementBlock(
1409
+ "div",
1410
+ {
1411
+ class: normalizeClass(["ocr-icon", [__props.disabled ? "disabled" : "", __props.className]]),
1412
+ onClick: _cache[0] || (_cache[0] = ($event) => !__props.customClick ? onUpload() : null)
1413
+ },
1414
+ [
1415
+ renderSlot(_ctx.$slots, "icon", {}, () => [
1416
+ createVNode(unref(NsIcon), { name: "https://cdn.ddjf.com/static/images/beidouxing/ocr-icon.png" })
1417
+ ])
1418
+ ],
1419
+ 2
1420
+ /* CLASS */
1421
+ )), [
1422
+ [_directive_track_click, "\u8EAB\u4EFD\u8BC1\u8BC6\u522B-\u70B9\u51FB"]
1423
+ ]),
1424
+ createVNode(_component_nut_action_sheet, {
1425
+ visible: activeSheetVisible.value,
1426
+ "onUpdate:visible": _cache[1] || (_cache[1] = ($event) => activeSheetVisible.value = $event),
1427
+ "menu-items": actionSheetMenus,
1428
+ onChoose: chooseImages,
1429
+ "cancel-txt": "\u53D6\u6D88"
1430
+ }, null, 8, ["visible"])
1431
+ ],
1432
+ 64
1433
+ /* STABLE_FRAGMENT */
1434
+ );
1435
+ };
1436
+ }
1437
+ });
1438
+
1439
+ script$I.__file = "src/shared/components/OcrIcon.vue";
1440
+
1441
+ var script$H = /* @__PURE__ */ defineComponent({
1442
+ __name: "OcrBank",
1443
+ props: {
1444
+ disabled: { type: Boolean, required: false, default: false },
1445
+ class: { type: String, required: false, default: "" },
1446
+ uploadUrl: { type: String, required: false, default: "/hkbase/file/uploadFile" },
1447
+ customClick: { type: Boolean, required: false, default: false }
1448
+ },
1449
+ emits: ["complete"],
1450
+ setup(__props, { expose: __expose, emit: __emit }) {
1451
+ const appKitOptions = useAppKitOptions();
1452
+ const $http = useHttp$3(), $n = useNutshell();
1453
+ const emits = __emit;
1454
+ const props = __props;
1185
1455
  async function onUploadFile(csRes) {
1186
- let result = null;
1187
1456
  try {
1188
- console.log("===\u4E0A\u4F20", csRes);
1189
1457
  let { path, size, tempFilePath } = csRes.tempFiles[0];
1190
- let filePath;
1191
- if (Taro.getEnv() !== "WEB") {
1192
- const compressImg = await taroImgCompress(path || tempFilePath, getCompressQuality(size)) || {};
1193
- filePath = compressImg.tempFilePath || path;
1194
- } else {
1195
- filePath = path || tempFilePath;
1196
- }
1197
- console.log(filePath, "filePath");
1198
- showLoading({ title: "\u8EAB\u4EFD\u8BC1\u8BC6\u522B\u4E2D.." });
1458
+ const compressImg = await compressImage(path || tempFilePath, getCompressQuality(size)) || {};
1459
+ const filePath = compressImg.tempFilePath || path;
1460
+ showLoading({ title: "\u94F6\u884C\u5361\u8BC6\u522B\u4E2D..", mask: true });
1199
1461
  const session = appKitOptions.token();
1200
1462
  const baseUrl = appKitOptions.baseUrl();
1201
1463
  const upRes = await uploadFile({
1202
- url: baseUrl + "/hkapprove/ocr/idcard",
1464
+ url: baseUrl + props.uploadUrl,
1203
1465
  filePath,
1204
1466
  name: "file",
1205
1467
  formData: {
1206
1468
  objectNo: `min${Date.now()}`,
1207
- side: props.side
1469
+ appCode: appKitOptions.app()
1208
1470
  },
1209
1471
  header: {
1210
1472
  token: session || ""
1211
1473
  }
1212
1474
  });
1213
- hideLoading();
1214
1475
  const res = JSON.parse(upRes.data);
1215
1476
  if (res.code === "200") {
1216
- const faceInfo = res.result.faceInfo || {};
1217
- const backInfo = res.result.backInfo || {};
1218
- result = {
1219
- faceInfo: {
1220
- name: allTrim(faceInfo.name || ""),
1221
- certNo: allTrim(faceInfo.num || ""),
1222
- address: allTrim(faceInfo.address || "")
1223
- },
1224
- backInfo: {
1225
- startDate: backInfo?.startDate || "",
1226
- endDate: backInfo?.endDate || ""
1227
- },
1228
- fileUploadVO: res.result.fileUploadVO || {}
1229
- };
1230
- console.log("===\u8BC6\u522B", result);
1231
- if (props.side === "face" && !result.faceInfo.name && !result.faceInfo.certNo) {
1232
- showToast({ title: "\u8BC6\u522B\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5", icon: "none" });
1233
- }
1234
- if (props.side === "back" && !result.backInfo?.startDate && !result.backInfo?.endDate) {
1235
- showToast({ title: "\u8BC6\u522B\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5", icon: "none" });
1236
- }
1477
+ await getBankCardInfo(res.result);
1237
1478
  } else {
1479
+ hideLoading();
1238
1480
  showToast({
1239
1481
  title: res.msg,
1240
1482
  icon: "error"
@@ -1244,7 +1486,30 @@ var script$G = /* @__PURE__ */ defineComponent({
1244
1486
  hideLoading();
1245
1487
  console.log(err);
1246
1488
  }
1247
- emits("complete", result);
1489
+ }
1490
+ async function getBankCardInfo(file) {
1491
+ try {
1492
+ const res = await $http.get("/hkbase/common/bankCard", {
1493
+ fileUrl: typeof file === "string" ? file : file.originalUrl
1494
+ });
1495
+ hideLoading();
1496
+ if (res && !res.bankCardNumber) {
1497
+ $n.dialog({
1498
+ title: "\u8BC6\u522B\u5931\u8D25",
1499
+ message: `\u60A8\u4E0A\u4F20\u7684\u56FE\u7247\u53EF\u80FD\u4E0D\u591F\u6E05\u6670\u6216\u4E0E\u5F53\u524D\u529F\u80FD\u4E0D\u7B26\uFF0C\u8BF7\u91CD\u65B0\u4E0A\u4F20\u4E00\u5F20\u6E05\u6670\u3001\u5B8C\u6574\u7684\u56FE\u7247\u3002\u8C22\u8C22\uFF01`,
1500
+ okText: "\u6211\u77E5\u9053\u4E86",
1501
+ cancelText: ""
1502
+ });
1503
+ return;
1504
+ }
1505
+ emits("complete", {
1506
+ ...res,
1507
+ fileUrl: typeof file === "string" ? file : file.originalUrl,
1508
+ fileKey: typeof file === "string" ? file : file.fileId
1509
+ });
1510
+ } catch (err) {
1511
+ hideLoading();
1512
+ }
1248
1513
  }
1249
1514
  const activeSheetVisible = ref(false);
1250
1515
  const actionSheetMenus = [
@@ -1282,7 +1547,7 @@ var script$G = /* @__PURE__ */ defineComponent({
1282
1547
  onUploadFile(csRes);
1283
1548
  }
1284
1549
  }
1285
- async function onPhotograph() {
1550
+ async function onUpload() {
1286
1551
  if (props.disabled) return;
1287
1552
  if (Taro.getEnv() === "WEB") {
1288
1553
  const csRes = await chooseMedia({
@@ -1297,6 +1562,9 @@ var script$G = /* @__PURE__ */ defineComponent({
1297
1562
  }
1298
1563
  activeSheetVisible.value = true;
1299
1564
  }
1565
+ __expose({
1566
+ onUpload
1567
+ });
1300
1568
  return (_ctx, _cache) => {
1301
1569
  const _component_nut_action_sheet = ActionSheet;
1302
1570
  const _directive_track_click = resolveDirective("track-click");
@@ -1307,8 +1575,8 @@ var script$G = /* @__PURE__ */ defineComponent({
1307
1575
  withDirectives((openBlock(), createElementBlock(
1308
1576
  "div",
1309
1577
  {
1310
- class: normalizeClass(["ocr-icon", [__props.disabled ? "disabled" : ""]]),
1311
- onClick: onPhotograph
1578
+ class: normalizeClass(["ocr-bank", [__props.disabled ? "disabled" : ""]]),
1579
+ onClick: _cache[0] || (_cache[0] = ($event) => !__props.customClick ? onUpload() : null)
1312
1580
  },
1313
1581
  [
1314
1582
  renderSlot(_ctx.$slots, "icon", {}, () => [
@@ -1318,11 +1586,11 @@ var script$G = /* @__PURE__ */ defineComponent({
1318
1586
  2
1319
1587
  /* CLASS */
1320
1588
  )), [
1321
- [_directive_track_click, "\u8EAB\u4EFD\u8BC1\u8BC6\u522B-\u70B9\u51FB"]
1589
+ [_directive_track_click, "\u94F6\u884C\u5361\u8BC6\u522B-\u70B9\u51FB"]
1322
1590
  ]),
1323
1591
  createVNode(_component_nut_action_sheet, {
1324
1592
  visible: activeSheetVisible.value,
1325
- "onUpdate:visible": _cache[0] || (_cache[0] = ($event) => activeSheetVisible.value = $event),
1593
+ "onUpdate:visible": _cache[1] || (_cache[1] = ($event) => activeSheetVisible.value = $event),
1326
1594
  "menu-items": actionSheetMenus,
1327
1595
  onChoose: chooseImages,
1328
1596
  "cancel-txt": "\u53D6\u6D88"
@@ -1335,48 +1603,26 @@ var script$G = /* @__PURE__ */ defineComponent({
1335
1603
  }
1336
1604
  });
1337
1605
 
1338
- script$G.__file = "src/shared/components/OcrIcon.vue";
1606
+ script$H.__file = "src/shared/components/OcrBank.vue";
1339
1607
 
1340
- var script$F = /* @__PURE__ */ defineComponent({
1608
+ var script$G = /* @__PURE__ */ defineComponent({
1341
1609
  __name: "OcrBusinessLicense",
1342
1610
  props: {
1343
- disabled: { type: Boolean, required: true }
1611
+ disabled: { type: Boolean, required: true, default: false },
1612
+ customClick: { type: Boolean, required: false, default: false }
1344
1613
  },
1345
1614
  emits: ["complete"],
1346
- setup(__props, { emit: __emit }) {
1615
+ setup(__props, { expose: __expose, emit: __emit }) {
1347
1616
  const appKitOptions = useAppKitOptions();
1348
1617
  const emits = __emit;
1349
1618
  const props = __props;
1350
- async function taroImgCompress(src, quality = 80) {
1351
- return new Promise((resolve, reject) => {
1352
- Taro.compressImage({
1353
- src,
1354
- quality,
1355
- success: (res) => {
1356
- resolve(res);
1357
- },
1358
- fail: (res) => {
1359
- reject(res);
1360
- }
1361
- });
1362
- });
1363
- }
1364
- function getCompressQuality(size) {
1365
- let quality = 100;
1366
- const curSize = size / (1024 * 1024);
1367
- if (curSize > 6) {
1368
- quality = quality - (curSize - 6) / curSize * 100;
1369
- }
1370
- return quality;
1371
- }
1372
1619
  function allTrim(str) {
1373
1620
  return str.replace(/\s+/g, "");
1374
1621
  }
1375
- async function onIconClick() {
1622
+ async function onUpload() {
1376
1623
  if (props.disabled) {
1377
1624
  return;
1378
1625
  }
1379
- console.log("===onIconClick");
1380
1626
  let result = null;
1381
1627
  try {
1382
1628
  const csRes = await chooseMedia({
@@ -1384,14 +1630,9 @@ var script$F = /* @__PURE__ */ defineComponent({
1384
1630
  sourceType: ["album", "camera"]
1385
1631
  });
1386
1632
  let { size, tempFilePath } = csRes.tempFiles[0];
1387
- let filePath;
1388
- if (Taro.getEnv() !== "WEB") {
1389
- const compressImg = await taroImgCompress(tempFilePath, getCompressQuality(size)) || {};
1390
- filePath = compressImg.tempFilePath;
1391
- } else {
1392
- filePath = tempFilePath;
1393
- }
1394
- showLoading({ title: "\u8425\u4E1A\u6267\u7167\u8BC6\u522B\u4E2D.." });
1633
+ const compressImg = await compressImage(tempFilePath, getCompressQuality(size)) || {};
1634
+ const filePath = compressImg.tempFilePath;
1635
+ showLoading({ title: "\u8425\u4E1A\u6267\u7167\u8BC6\u522B\u4E2D..", mask: true });
1395
1636
  const session = appKitOptions.token();
1396
1637
  const baseUrl = appKitOptions.baseUrl();
1397
1638
  const upRes = await uploadFile({
@@ -1399,7 +1640,8 @@ var script$F = /* @__PURE__ */ defineComponent({
1399
1640
  filePath,
1400
1641
  name: "file",
1401
1642
  formData: {
1402
- objectNo: `min${Date.now()}`
1643
+ objectNo: `min${Date.now()}`,
1644
+ appCode: appKitOptions.app()
1403
1645
  },
1404
1646
  header: {
1405
1647
  token: session || ""
@@ -1433,16 +1675,21 @@ var script$F = /* @__PURE__ */ defineComponent({
1433
1675
  }
1434
1676
  emits("complete", result);
1435
1677
  }
1678
+ __expose({
1679
+ onUpload
1680
+ });
1436
1681
  return (_ctx, _cache) => {
1437
1682
  const _directive_track_click = resolveDirective("track-click");
1438
1683
  return withDirectives((openBlock(), createElementBlock(
1439
1684
  "div",
1440
1685
  {
1441
1686
  class: normalizeClass([["ocr-business-license", __props.disabled ? "disabled" : ""], "ocr-icon"]),
1442
- onClick: onIconClick
1687
+ onClick: _cache[0] || (_cache[0] = ($event) => !__props.customClick ? onUpload() : null)
1443
1688
  },
1444
1689
  [
1445
- createVNode(unref(NsIcon), { name: "https://cdn.ddjf.com/static/images/beidouxing/ocr-icon.png" })
1690
+ renderSlot(_ctx.$slots, "icon", {}, () => [
1691
+ createVNode(unref(NsIcon), { name: "https://cdn.ddjf.com/static/images/beidouxing/ocr-icon.png" })
1692
+ ])
1446
1693
  ],
1447
1694
  2
1448
1695
  /* CLASS */
@@ -1453,7 +1700,194 @@ var script$F = /* @__PURE__ */ defineComponent({
1453
1700
  }
1454
1701
  });
1455
1702
 
1456
- script$F.__file = "src/shared/components/OcrBusinessLicense.vue";
1703
+ script$G.__file = "src/shared/components/OcrBusinessLicense.vue";
1704
+
1705
+ var script$F = /* @__PURE__ */ defineComponent({
1706
+ __name: "OcrInvoice",
1707
+ props: {
1708
+ disabled: { type: Boolean, required: false, default: false },
1709
+ side: { type: String, required: false, default: "face" },
1710
+ className: { type: String, required: false, default: "" },
1711
+ customUpload: { type: Function, required: false },
1712
+ uploadUrl: { type: String, required: false, default: "/hkbase/file/uploadFile" },
1713
+ customClick: { type: Boolean, required: false, default: false }
1714
+ },
1715
+ emits: ["complete"],
1716
+ setup(__props, { expose: __expose, emit: __emit }) {
1717
+ const appKitOptions = useAppKitOptions();
1718
+ const $http = useHttp$3(), $n = useNutshell();
1719
+ const emits = __emit;
1720
+ const props = __props;
1721
+ async function onUploadFile(csRes) {
1722
+ try {
1723
+ let { path, size, tempFilePath } = csRes.tempFiles[0];
1724
+ const compressImg = await compressImage(path || tempFilePath, getCompressQuality(size)) || {};
1725
+ const filePath = compressImg.tempFilePath || path;
1726
+ if (props.customUpload) {
1727
+ props.customUpload(filePath);
1728
+ return;
1729
+ }
1730
+ showLoading({ title: "\u53D1\u7968\u8BC6\u522B\u4E2D..", mask: true });
1731
+ const session = appKitOptions.token();
1732
+ const baseUrl = appKitOptions.baseUrl();
1733
+ const upRes = await uploadFile({
1734
+ url: `${baseUrl}${props.uploadUrl}`,
1735
+ filePath,
1736
+ name: "file",
1737
+ formData: {
1738
+ objectNo: `min${Date.now()}`,
1739
+ appCode: appKitOptions.app()
1740
+ },
1741
+ header: {
1742
+ token: session || ""
1743
+ }
1744
+ });
1745
+ const res = JSON.parse(upRes.data);
1746
+ if (res.code === "200") {
1747
+ await getOcrInfo(res.result);
1748
+ } else {
1749
+ hideLoading();
1750
+ showToast({
1751
+ title: res.msg,
1752
+ icon: "error"
1753
+ });
1754
+ }
1755
+ } catch (err) {
1756
+ hideLoading();
1757
+ console.log(err);
1758
+ }
1759
+ }
1760
+ async function getOcrInfo(file) {
1761
+ try {
1762
+ const res = await $http.get("/hkbase/common/vatInvoice", {
1763
+ fileUrl: typeof file === "string" ? file : file.originalUrl,
1764
+ fileType: "img"
1765
+ });
1766
+ hideLoading();
1767
+ if (!res?.purchaserRegisterNum) {
1768
+ $n.dialog({
1769
+ title: "\u8BC6\u522B\u5931\u8D25",
1770
+ message: `\u60A8\u4E0A\u4F20\u7684\u56FE\u7247\u53EF\u80FD\u4E0D\u591F\u6E05\u6670\u6216\u4E0E\u5F53\u524D\u529F\u80FD\u4E0D\u7B26\uFF0C\u8BF7\u91CD\u65B0\u4E0A\u4F20\u4E00\u5F20\u6E05\u6670\u3001\u5B8C\u6574\u7684\u56FE\u7247\u3002\u8C22\u8C22\uFF01`,
1771
+ okText: "\u6211\u77E5\u9053\u4E86",
1772
+ cancelText: ""
1773
+ });
1774
+ return;
1775
+ }
1776
+ emits("complete", {
1777
+ invoiceDate: res?.invoiceDate,
1778
+ invoiceNum: res?.invoiceNum,
1779
+ invoiceNumConfirm: res?.invoiceNumConfirm,
1780
+ invoiceType: res?.invoiceType,
1781
+ noteDrawer: res?.noteDrawer,
1782
+ purchaserBank: res?.purchaserBank,
1783
+ purchaserName: res?.purchaserName,
1784
+ purchaserRegisterNum: res?.purchaserRegisterNum,
1785
+ remarks: res?.remarks,
1786
+ sellerName: res?.sellerName,
1787
+ sellerRegisterNum: res?.sellerRegisterNum,
1788
+ serviceType: res?.serviceType,
1789
+ totalAmount: res?.totalAmount,
1790
+ totalTax: res?.totalTax,
1791
+ fileUrl: typeof file === "string" ? file : file.originalUrl,
1792
+ fileKey: typeof file === "string" ? file : file.fileId
1793
+ });
1794
+ } catch (err) {
1795
+ hideLoading();
1796
+ }
1797
+ }
1798
+ const activeSheetVisible = ref(false);
1799
+ const actionSheetMenus = [
1800
+ {
1801
+ name: "\u62CD\u6444",
1802
+ type: "camera"
1803
+ },
1804
+ {
1805
+ name: "\u4ECE\u76F8\u518C\u9009\u62E9",
1806
+ type: "album"
1807
+ },
1808
+ {
1809
+ name: "\u4ECE\u804A\u5929\u4F1A\u8BDD\u9009\u62E9",
1810
+ type: "message"
1811
+ }
1812
+ ];
1813
+ if (Taro.getEnv() === "WEB") {
1814
+ actionSheetMenus.pop();
1815
+ }
1816
+ async function chooseImages(item) {
1817
+ if (["camera", "album"].includes(item.type)) {
1818
+ const csRes = await chooseMedia({
1819
+ count: 1,
1820
+ sourceType: [item.type],
1821
+ // "camera" | "album"
1822
+ maxDuration: 60
1823
+ // 使用duration属性判断是图片还是视频,图片没有该属性
1824
+ });
1825
+ onUploadFile(csRes);
1826
+ } else {
1827
+ const csRes = await chooseMessageFile({
1828
+ count: 1,
1829
+ type: "image"
1830
+ });
1831
+ onUploadFile(csRes);
1832
+ }
1833
+ }
1834
+ async function onUpload() {
1835
+ if (props.disabled) return;
1836
+ if (Taro.getEnv() === "WEB") {
1837
+ const csRes = await chooseMedia({
1838
+ count: 1,
1839
+ sourceType: ["album"],
1840
+ // "camera" | "album"
1841
+ maxDuration: 60
1842
+ // 使用duration属性判断是图片还是视频,图片没有该属性
1843
+ });
1844
+ onUploadFile(csRes);
1845
+ return;
1846
+ }
1847
+ activeSheetVisible.value = true;
1848
+ }
1849
+ __expose({
1850
+ onUpload
1851
+ });
1852
+ return (_ctx, _cache) => {
1853
+ const _component_nut_action_sheet = ActionSheet;
1854
+ const _directive_track_click = resolveDirective("track-click");
1855
+ return openBlock(), createElementBlock(
1856
+ Fragment,
1857
+ null,
1858
+ [
1859
+ withDirectives((openBlock(), createElementBlock(
1860
+ "div",
1861
+ {
1862
+ class: normalizeClass(["ocr-invoice", [__props.disabled ? "disabled" : "", __props.className]]),
1863
+ onClick: _cache[0] || (_cache[0] = ($event) => !__props.customClick ? onUpload() : null)
1864
+ },
1865
+ [
1866
+ renderSlot(_ctx.$slots, "icon", {}, () => [
1867
+ createVNode(unref(NsIcon), { name: "https://cdn.ddjf.com/static/images/beidouxing/ocr-icon.png" })
1868
+ ])
1869
+ ],
1870
+ 2
1871
+ /* CLASS */
1872
+ )), [
1873
+ [_directive_track_click, "\u53D1\u7968\u8BC6\u522B-\u70B9\u51FB"]
1874
+ ]),
1875
+ createVNode(_component_nut_action_sheet, {
1876
+ visible: activeSheetVisible.value,
1877
+ "onUpdate:visible": _cache[1] || (_cache[1] = ($event) => activeSheetVisible.value = $event),
1878
+ "menu-items": actionSheetMenus,
1879
+ onChoose: chooseImages,
1880
+ "cancel-txt": "\u53D6\u6D88"
1881
+ }, null, 8, ["visible"])
1882
+ ],
1883
+ 64
1884
+ /* STABLE_FRAGMENT */
1885
+ );
1886
+ };
1887
+ }
1888
+ });
1889
+
1890
+ script$F.__file = "src/shared/components/OcrInvoice.vue";
1457
1891
 
1458
1892
  var HttpMethod = /* @__PURE__ */ ((HttpMethod2) => {
1459
1893
  HttpMethod2["get"] = "GET";
@@ -1501,6 +1935,7 @@ const request = (config) => {
1501
1935
  }
1502
1936
  }).catch((e) => {
1503
1937
  console.log("request.catch===", e);
1938
+ reject(e);
1504
1939
  });
1505
1940
  });
1506
1941
  };
@@ -1559,15 +1994,6 @@ function isApp() {
1559
1994
  var __defProp = Object.defineProperty;
1560
1995
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1561
1996
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
1562
- var TrackingEventType = /* @__PURE__ */ ((TrackingEventType2) => {
1563
- TrackingEventType2["PAGE_VIEW"] = "page_view";
1564
- TrackingEventType2["PAGE_LEAVE"] = "page_leave";
1565
- TrackingEventType2["APP_DEVICE_INFO"] = "app_device_info";
1566
- TrackingEventType2["CLICK"] = "click";
1567
- TrackingEventType2["CUSTOM"] = "custom";
1568
- return TrackingEventType2;
1569
- })(TrackingEventType || {});
1570
- const { PAGE_VIEW, PAGE_LEAVE, CLICK, CUSTOM, APP_DEVICE_INFO } = TrackingEventType;
1571
1997
  const DEFAULT_CONFIG = {
1572
1998
  enabled: true,
1573
1999
  debug: false,
@@ -2017,7 +2443,6 @@ class TrackingSDK {
2017
2443
  * 发送埋点数据
2018
2444
  */
2019
2445
  async flush() {
2020
- console.log(this.eventQueue.length, "this.eventQueue.length");
2021
2446
  if (this.eventQueue.length === 0) return;
2022
2447
  const events = [...this.eventQueue];
2023
2448
  this.eventQueue = [];
@@ -2703,9 +3128,11 @@ const endpointsList$2 = {
2703
3128
  certificateNo: params.user,
2704
3129
  accountAuthFlag: params.accountAuthFlag || false,
2705
3130
  channelCode: params.channelCode || null,
2706
- payFinishJumpUrl: params.payFinishJumpUrl || null
3131
+ payFinishJumpUrl: params.payFinishJumpUrl || null,
3132
+ useCloudBean: params.useCloudBean || false
2707
3133
  }),
2708
3134
  transform: (data) => {
3135
+ console.log(data, "data-----");
2709
3136
  let json = null;
2710
3137
  try {
2711
3138
  json = JSON.parse(data.prePayStr);
@@ -2773,6 +3200,7 @@ const vendor$2 = {
2773
3200
  title: data.msg,
2774
3201
  icon: "none"
2775
3202
  });
3203
+ reject(data.msg);
2776
3204
  }
2777
3205
  }).catch((e) => {
2778
3206
  reject(e);
@@ -2936,6 +3364,8 @@ const requestBrandWCPayByBean = (params, Appcode = "") => {
2936
3364
  }
2937
3365
  });
2938
3366
  }
3367
+ }).catch(() => {
3368
+ resolve(false);
2939
3369
  });
2940
3370
  });
2941
3371
  };
@@ -3061,7 +3491,7 @@ var script$E = /* @__PURE__ */ defineComponent({
3061
3491
  const _directive_track_click = resolveDirective("track-click");
3062
3492
  return openBlock(), createElementBlock("view", _hoisted_1$B, [
3063
3493
  createElementVNode("view", _hoisted_2$r, [
3064
- createVNode(script$M, {
3494
+ createVNode(script$O, {
3065
3495
  items: amounts.value,
3066
3496
  selected: state.selected,
3067
3497
  onChange: onAmountSelect
@@ -3340,17 +3770,25 @@ const _hoisted_6$9 = {
3340
3770
  };
3341
3771
  const _hoisted_7$6 = { class: "amount" };
3342
3772
  const _hoisted_8$5 = ["src"];
3343
- const _hoisted_9$4 = { class: "amount-footer" };
3773
+ const _hoisted_9$4 = {
3774
+ key: 0,
3775
+ class: "balance-warning"
3776
+ };
3344
3777
  const _hoisted_10$3 = {
3778
+ key: 1,
3779
+ class: "balance-warning-tip"
3780
+ };
3781
+ const _hoisted_11$3 = { class: "amount-footer" };
3782
+ const _hoisted_12$3 = {
3345
3783
  key: 0,
3346
3784
  class: "agreement"
3347
3785
  };
3348
- const _hoisted_11$3 = { class: "buy-amount" };
3349
- const _hoisted_12$3 = { class: "left" };
3350
- const _hoisted_13$2 = { class: "amount" };
3351
- const _hoisted_14$2 = { class: "item" };
3352
- const _hoisted_15$2 = { class: "item" };
3786
+ const _hoisted_13$2 = { class: "buy-amount" };
3787
+ const _hoisted_14$2 = { class: "left" };
3788
+ const _hoisted_15$2 = { class: "amount" };
3353
3789
  const _hoisted_16$2 = { class: "item" };
3790
+ const _hoisted_17$2 = { class: "item" };
3791
+ const _hoisted_18$2 = { class: "item" };
3354
3792
  var script$A = /* @__PURE__ */ defineComponent({
3355
3793
  __name: "TradeView",
3356
3794
  props: {
@@ -3383,8 +3821,28 @@ var script$A = /* @__PURE__ */ defineComponent({
3383
3821
  state.selected = selected;
3384
3822
  selectBean.value = false;
3385
3823
  };
3824
+ const extraPaymentAmount = computed(() => {
3825
+ if (!selectBean.value || !amounts.value[state.selected]) {
3826
+ return 0;
3827
+ }
3828
+ const paymentAmount = amounts.value[state.selected].paymentAmount || 0;
3829
+ const currentBalance = balance.value || 0;
3830
+ return Math.max(0, paymentAmount - currentBalance);
3831
+ });
3386
3832
  const currentAmount = computed(() => {
3387
- return amounts.value[state.selected] && !selectBean.value ? amounts.value[state.selected].paymentAmount : 0;
3833
+ if (!amounts.value[state.selected]) {
3834
+ return 0;
3835
+ }
3836
+ if (selectBean.value) {
3837
+ if (balance.value < amounts.value[state.selected].paymentAmount) {
3838
+ return extraPaymentAmount.value;
3839
+ }
3840
+ return 0;
3841
+ }
3842
+ return amounts.value[state.selected].paymentAmount || 0;
3843
+ });
3844
+ const isCombinedPayment = computed(() => {
3845
+ return selectBean.value && amounts.value[state.selected] && balance.value < amounts.value[state.selected].paymentAmount;
3388
3846
  });
3389
3847
  onMounted(() => {
3390
3848
  const $http = useHttp$2({ Appcode: props.headerApp, Tenant: props.tenant });
@@ -3398,24 +3856,28 @@ var script$A = /* @__PURE__ */ defineComponent({
3398
3856
  const showDialog = ref(false);
3399
3857
  async function beanPay() {
3400
3858
  const $http = useHttp$2({ Appcode: props.headerApp, Tenant: props.tenant });
3401
- $http.post(`/payment/paymentCaseConfig/purchase/${amounts.value[state.selected].id}`).then((response) => {
3859
+ try {
3860
+ const response = await $http.post(
3861
+ `/payment/paymentCaseConfig/purchase/${amounts.value[state.selected].id}`
3862
+ );
3402
3863
  if (response) {
3403
3864
  showDialog.value = false;
3404
3865
  emit("complete", { result: response, type: "bean" });
3405
3866
  } else {
3406
3867
  showToast({
3407
- title: response.message,
3868
+ title: response?.message || "\u652F\u4ED8\u5931\u8D25",
3408
3869
  icon: "none"
3409
3870
  });
3410
3871
  }
3411
- });
3412
- }
3413
- const onPayClick = () => {
3414
- if (selectBean.value) {
3415
- showDialog.value = true;
3416
- return;
3872
+ } catch (error) {
3873
+ showToast({
3874
+ title: error?.message || "\u652F\u4ED8\u5931\u8D25",
3875
+ icon: "none"
3876
+ });
3417
3877
  }
3418
- if (!selectBean.value && !state.agreed) {
3878
+ }
3879
+ function proceedWechatPayment() {
3880
+ if (!state.agreed) {
3419
3881
  showToast({
3420
3882
  title: "\u8BF7\u52FE\u9009\u300A\u5927\u9053\u4E91\u5E73\u53F0\u4E91\u8C46\u5145\u503C\u534F\u8BAE\u300B",
3421
3883
  icon: "none"
@@ -3434,40 +3896,75 @@ var script$A = /* @__PURE__ */ defineComponent({
3434
3896
  }
3435
3897
  requestBrandWCPayByBean({
3436
3898
  caseConfigId: amounts.value[state.selected].id,
3437
- amount: amounts.value[state.selected].paymentAmount,
3899
+ amount: currentAmount.value,
3438
3900
  app: "loankitMp",
3439
3901
  tenant: props.tenant,
3440
3902
  accountAuthFlag: false,
3441
3903
  channelCode: "centergzh",
3442
3904
  payFinishJumpUrl: props.payFinishJumpUrl,
3443
- fromMini: !!params.from
3905
+ fromMini: !!params.from,
3906
+ useCloudBean: isCombinedPayment.value
3444
3907
  }).then((result) => {
3445
- console.log(result, "------requestBrandWCPay");
3446
3908
  state.buttonLoading = false;
3447
3909
  if (typeof result === "boolean" && result) {
3448
3910
  window.location.href = props.payFinishJumpUrl;
3449
3911
  } else {
3450
- emit("complete", { result, type: "wePay" });
3912
+ emit("complete", {
3913
+ result,
3914
+ type: isCombinedPayment.value ? "combined" : "wePay"
3915
+ });
3451
3916
  }
3917
+ }).catch((error) => {
3918
+ state.buttonLoading = false;
3919
+ showToast({
3920
+ title: error.message || "\u652F\u4ED8\u5931\u8D25",
3921
+ icon: "none"
3922
+ });
3452
3923
  });
3453
3924
  } else {
3454
3925
  wx.login({
3455
3926
  success({ code }) {
3456
- requestPaymentByBean({
3457
- caseConfigId: amounts.value[state.selected].id,
3458
- amount: amounts.value[state.selected].paymentAmount,
3459
- app: props.app,
3460
- tenant: props.tenant,
3461
- user: code
3462
- }, props.headerApp).then((result) => {
3927
+ requestPaymentByBean(
3928
+ {
3929
+ caseConfigId: amounts.value[state.selected].id,
3930
+ amount: currentAmount.value,
3931
+ app: props.app,
3932
+ tenant: props.tenant,
3933
+ user: code
3934
+ },
3935
+ props.headerApp
3936
+ ).then((result) => {
3463
3937
  state.buttonLoading = false;
3464
3938
  if (result) {
3465
- emit("complete", { result: true, type: "wePay" });
3939
+ emit("complete", {
3940
+ result: true,
3941
+ type: isCombinedPayment.value ? "combined" : "wePay"
3942
+ });
3466
3943
  }
3944
+ }).catch((error) => {
3945
+ state.buttonLoading = false;
3946
+ showToast({
3947
+ title: error.message || "\u652F\u4ED8\u5931\u8D25",
3948
+ icon: "none"
3949
+ });
3950
+ });
3951
+ },
3952
+ fail() {
3953
+ state.buttonLoading = false;
3954
+ showToast({
3955
+ title: "\u767B\u5F55\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5",
3956
+ icon: "none"
3467
3957
  });
3468
3958
  }
3469
3959
  });
3470
3960
  }
3961
+ }
3962
+ const onPayClick = () => {
3963
+ if (selectBean.value && !isCombinedPayment.value) {
3964
+ showDialog.value = true;
3965
+ return;
3966
+ }
3967
+ proceedWechatPayment();
3471
3968
  };
3472
3969
  return (_ctx, _cache) => {
3473
3970
  const _component_nut_checkbox = Checkbox;
@@ -3490,29 +3987,28 @@ var script$A = /* @__PURE__ */ defineComponent({
3490
3987
  -1
3491
3988
  /* CACHED */
3492
3989
  )),
3493
- !selectBean.value ? (openBlock(), createElementBlock(
3990
+ !selectBean.value || isCombinedPayment.value ? (openBlock(), createElementBlock(
3494
3991
  "div",
3495
3992
  _hoisted_5$d,
3496
- "\u4F59\u989D " + toDisplayString(unref(formatAmount)(balance.value || 0)),
3993
+ " \u4F59\u989D " + toDisplayString(unref(formatAmount)(balance.value || 0)),
3497
3994
  1
3498
3995
  /* TEXT */
3499
3996
  )) : (openBlock(), createElementBlock(
3500
3997
  "div",
3501
3998
  _hoisted_6$9,
3502
- "\u6263\u51CF\u540E\u4F59\u989D " + toDisplayString(unref(formatAmount)(balance.value - amounts.value[state.selected].paymentAmount)),
3999
+ " \u6263\u51CF\u540E\u4F59\u989D " + toDisplayString(unref(formatAmount)(balance.value - amounts.value[state.selected].paymentAmount)),
3503
4000
  1
3504
4001
  /* TEXT */
3505
4002
  ))
3506
4003
  ]),
3507
- balance.value >= amounts.value[state.selected].paymentAmount ? (openBlock(), createElementBlock("div", {
3508
- key: 0,
4004
+ createElementVNode("div", {
3509
4005
  class: "right",
3510
4006
  onClick: _cache[0] || (_cache[0] = ($event) => selectBean.value = !selectBean.value)
3511
4007
  }, [
3512
4008
  createElementVNode(
3513
4009
  "div",
3514
4010
  _hoisted_7$6,
3515
- "-" + toDisplayString(unref(formatAmount)(amounts.value[state.selected].paymentAmount || 0)),
4011
+ " -" + toDisplayString(unref(formatAmount)(amounts.value[state.selected].paymentAmount || 0)),
3516
4012
  1
3517
4013
  /* TEXT */
3518
4014
  ),
@@ -3520,12 +4016,20 @@ var script$A = /* @__PURE__ */ defineComponent({
3520
4016
  class: "icon",
3521
4017
  src: selectBean.value ? "https://cdn.ddjf.com/static/images/appkit/select.svg" : "https://cdn.ddjf.com/static/images/appkit/not-select.svg"
3522
4018
  }, null, 8, _hoisted_8$5)
3523
- ])) : createCommentVNode("v-if", true)
4019
+ ]),
4020
+ isCombinedPayment.value ? (openBlock(), createElementBlock(
4021
+ "div",
4022
+ _hoisted_9$4,
4023
+ " \u4E91\u8C46\u4F59\u989D\u4E0D\u8DB3,\u8FD8\u9700\u989D\u5916\u652F\u4ED8" + toDisplayString(unref(formatAmount)(extraPaymentAmount.value)) + "\u5143 ",
4024
+ 1
4025
+ /* TEXT */
4026
+ )) : createCommentVNode("v-if", true)
3524
4027
  ])) : createCommentVNode("v-if", true),
4028
+ isCombinedPayment.value ? (openBlock(), createElementBlock("div", _hoisted_10$3, " \u8BF7\u5728\u652F\u4ED8\u5B8C\u6210\u524D\u786E\u4FDD\u5143\u8C46\u4F59\u989D\u4E0D\u88AB\u6D88\u8017,\u5426\u5219\u672C\u6B21\u6743\u76CA\u53EF\u80FD\u8D2D\u4E70\u5931\u8D25 ")) : createCommentVNode("v-if", true),
3525
4029
  renderSlot(_ctx.$slots, "banner")
3526
4030
  ]),
3527
- createElementVNode("view", _hoisted_9$4, [
3528
- !selectBean.value ? (openBlock(), createElementBlock("view", _hoisted_10$3, [
4031
+ createElementVNode("view", _hoisted_11$3, [
4032
+ !selectBean.value || isCombinedPayment.value ? (openBlock(), createElementBlock("view", _hoisted_12$3, [
3529
4033
  createVNode(_component_nut_checkbox, {
3530
4034
  modelValue: state.agreed,
3531
4035
  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => state.agreed = $event)
@@ -3553,14 +4057,14 @@ var script$A = /* @__PURE__ */ defineComponent({
3553
4057
  /* STABLE */
3554
4058
  }, 8, ["modelValue"])
3555
4059
  ])) : createCommentVNode("v-if", true),
3556
- createElementVNode("div", _hoisted_11$3, [
3557
- createElementVNode("div", _hoisted_12$3, [
4060
+ createElementVNode("div", _hoisted_13$2, [
4061
+ createElementVNode("div", _hoisted_14$2, [
3558
4062
  _cache[8] || (_cache[8] = createTextVNode(
3559
4063
  " \u5F85\u652F\u4ED8\uFF1A ",
3560
4064
  -1
3561
4065
  /* CACHED */
3562
4066
  )),
3563
- createElementVNode("span", _hoisted_13$2, [
4067
+ createElementVNode("span", _hoisted_15$2, [
3564
4068
  _cache[7] || (_cache[7] = createElementVNode(
3565
4069
  "i",
3566
4070
  null,
@@ -3611,22 +4115,22 @@ var script$A = /* @__PURE__ */ defineComponent({
3611
4115
  [
3612
4116
  createElementVNode(
3613
4117
  "div",
3614
- _hoisted_14$2,
3615
- "\u4E91\u8C46\u6263\u51CF\uFF1A" + toDisplayString(unref(formatAmount)(amounts.value[state.selected].paymentAmount || 0)),
4118
+ _hoisted_16$2,
4119
+ " \u4E91\u8C46\u6263\u51CF\uFF1A" + toDisplayString(unref(formatAmount)(amounts.value[state.selected].paymentAmount || 0)),
3616
4120
  1
3617
4121
  /* TEXT */
3618
4122
  ),
3619
4123
  createElementVNode(
3620
4124
  "div",
3621
- _hoisted_15$2,
3622
- "\u6743\u76CA\u589E\u52A0\uFF1A" + toDisplayString(unref(formatAmount)(amounts.value[state.selected].priceRightNum || 0)) + "\u7B14",
4125
+ _hoisted_17$2,
4126
+ " \u6743\u76CA\u589E\u52A0\uFF1A" + toDisplayString(unref(formatAmount)(amounts.value[state.selected].priceRightNum || 0)) + "\u7B14 ",
3623
4127
  1
3624
4128
  /* TEXT */
3625
4129
  ),
3626
4130
  createElementVNode(
3627
4131
  "div",
3628
- _hoisted_16$2,
3629
- "\u6263\u51CF\u540E\u4E91\u8C46\u4F59\u989D\uFF1A" + toDisplayString(unref(formatAmount)(balance.value - amounts.value[state.selected].paymentAmount)),
4132
+ _hoisted_18$2,
4133
+ " \u6263\u51CF\u540E\u4E91\u8C46\u4F59\u989D\uFF1A" + toDisplayString(unref(formatAmount)(balance.value - amounts.value[state.selected].paymentAmount)),
3630
4134
  1
3631
4135
  /* TEXT */
3632
4136
  )
@@ -3646,7 +4150,7 @@ var script$A = /* @__PURE__ */ defineComponent({
3646
4150
  script$A.__file = "src/payment/components/TradeView.vue";
3647
4151
 
3648
4152
  const components = {
3649
- AmountPicker: script$M,
4153
+ AmountPicker: script$O,
3650
4154
  RechargeView: script$E,
3651
4155
  UserAgreement: script$D,
3652
4156
  RechargeResult: script$C,
@@ -3757,7 +4261,7 @@ var script$z = /* @__PURE__ */ defineComponent({
3757
4261
  ])
3758
4262
  ])
3759
4263
  ]),
3760
- createCommentVNode(' <div class="line"></div>\r\n <div class="card-row">\r\n <div class="card-row-left desc">\u6743\u76CA\u4F7F\u7528\u65F6\u81EA\u52A8\u6263\u51CF\u4E91\u8C46</div>\r\n <div class="card-row-right">\r\n <div class="pay" v-track-click @click="gotoRecharge">\r\n <div>\u5145\u503C</div>\r\n <img\r\n class="pay-icon"\r\n src="https://cdn.ddjf.com/static/images/bpms-workBench/bean-right.png"\r\n />\r\n </div>\r\n </div>\r\n </div> ')
4264
+ createCommentVNode(' <div class="line"></div>\n <div class="card-row">\n <div class="card-row-left desc">\u6743\u76CA\u4F7F\u7528\u65F6\u81EA\u52A8\u6263\u51CF\u4E91\u8C46</div>\n <div class="card-row-right">\n <div class="pay" v-track-click @click="gotoRecharge">\n <div>\u5145\u503C</div>\n <img\n class="pay-icon"\n src="https://cdn.ddjf.com/static/images/bpms-workBench/bean-right.png"\n />\n </div>\n </div>\n </div> ')
3761
4265
  ])
3762
4266
  ]);
3763
4267
  };
@@ -4464,7 +4968,7 @@ var script$t = /* @__PURE__ */ defineComponent({
4464
4968
  [
4465
4969
  createElementVNode("div", _hoisted_1$q, [
4466
4970
  createElementVNode("div", _hoisted_2$k, [
4467
- createVNode(unref(script$L), {
4971
+ createVNode(unref(script$N), {
4468
4972
  title: unref(Taro).getEnv() !== "WEB" ? "\u6211\u7684\u8D26\u6237" : "",
4469
4973
  class: normalizeClass({ "with-background": scrolled.value > 0 }),
4470
4974
  onClose: onPageHeaderClose
@@ -4769,7 +5273,7 @@ var script$t = /* @__PURE__ */ defineComponent({
4769
5273
  _: 1
4770
5274
  /* STABLE */
4771
5275
  }, 8, ["visible"]),
4772
- createVNode(unref(script$K), {
5276
+ createVNode(unref(script$M), {
4773
5277
  modelValue: secondBalanceOpen.value,
4774
5278
  "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => secondBalanceOpen.value = $event),
4775
5279
  title: "\u6536\u652F\u660E\u7EC6"
@@ -6138,7 +6642,10 @@ var script$k = /* @__PURE__ */ defineComponent({
6138
6642
  ), [
6139
6643
  [vModelText, formState.name]
6140
6644
  ]),
6141
- createVNode(script$G, { onComplete: onOCRInfo }, {
6645
+ createVNode(script$I, {
6646
+ "has-upload-vo": false,
6647
+ onComplete: onOCRInfo
6648
+ }, {
6142
6649
  icon: withCtx(() => [..._cache[9] || (_cache[9] = [
6143
6650
  createElementVNode(
6144
6651
  "img",
@@ -6584,7 +7091,7 @@ var script$i = /* @__PURE__ */ defineComponent({
6584
7091
  emits: ["detail", "close", "view", "popup", "hasBanner"],
6585
7092
  setup(__props, { emit: __emit }) {
6586
7093
  const props = __props;
6587
- const { noticeClick } = useNotice();
7094
+ const { toReadFun, noticeClick } = useNotice();
6588
7095
  const bannerMessages = ref([]);
6589
7096
  const popMessages = ref([]);
6590
7097
  const activeKey = ref(0);
@@ -6709,7 +7216,7 @@ var script$i = /* @__PURE__ */ defineComponent({
6709
7216
  Fragment,
6710
7217
  null,
6711
7218
  renderList(bannerMessages.value, (item, key) => {
6712
- return withDirectives((openBlock(), createBlock(script$I, {
7219
+ return withDirectives((openBlock(), createBlock(script$K, {
6713
7220
  class: normalizeClass({ show: key === activeKey.value }),
6714
7221
  key,
6715
7222
  showClose: item.noticeType === 0,
@@ -6980,7 +7487,8 @@ function useCommonList(api, query, loading = true, method = "GET") {
6980
7487
  const isLoading = ref(false);
6981
7488
  async function fetchData(loading2) {
6982
7489
  loading2 && showLoading({
6983
- title: "\u52A0\u8F7D\u4E2D..."
7490
+ title: "\u52A0\u8F7D\u4E2D...",
7491
+ mask: true
6984
7492
  });
6985
7493
  isLoading.value = true;
6986
7494
  const $http = useHttp$1();
@@ -7382,7 +7890,8 @@ var script$e = /* @__PURE__ */ defineComponent({
7382
7890
  async function readAll() {
7383
7891
  try {
7384
7892
  showLoading({
7385
- title: "\u8BF7\u7A0D\u540E..."
7893
+ title: "\u8BF7\u7A0D\u540E...",
7894
+ mask: true
7386
7895
  });
7387
7896
  const appkitOptions = useAppKitOptions();
7388
7897
  const ep = endpoints["\u5168\u90E8\u5DF2\u8BFB"];
@@ -7430,7 +7939,7 @@ var script$e = /* @__PURE__ */ defineComponent({
7430
7939
  class: normalizeClass(["tabContainer", { inH5: unref(isWeb)() }])
7431
7940
  },
7432
7941
  [
7433
- createCommentVNode(' <ns-tabs\r\n v-model="state.tab"\r\n fill="#fff"\r\n square\r\n size="xl"\r\n style="height: 46px"\r\n @change="onTabChange"\r\n >\r\n <ns-tabs-item key="\u5168\u90E8" tab="\u5168\u90E8"></ns-tabs-item>\r\n <ns-tabs-item key="\u4E1A\u52A1\u6D88\u606F" tab="\u4E1A\u52A1\u6D88\u606F"></ns-tabs-item>\r\n <ns-tabs-item key="\u7CFB\u7EDF\u516C\u544A" tab="\u7CFB\u7EDF\u516C\u544A"></ns-tabs-item>\r\n <ns-tabs-item key="\u672A\u8BFB" tab="\u672A\u8BFB"></ns-tabs-item>\r\n </ns-tabs> '),
7942
+ createCommentVNode(' <ns-tabs\n v-model="state.tab"\n fill="#fff"\n square\n size="xl"\n style="height: 46px"\n @change="onTabChange"\n >\n <ns-tabs-item key="\u5168\u90E8" tab="\u5168\u90E8"></ns-tabs-item>\n <ns-tabs-item key="\u4E1A\u52A1\u6D88\u606F" tab="\u4E1A\u52A1\u6D88\u606F"></ns-tabs-item>\n <ns-tabs-item key="\u7CFB\u7EDF\u516C\u544A" tab="\u7CFB\u7EDF\u516C\u544A"></ns-tabs-item>\n <ns-tabs-item key="\u672A\u8BFB" tab="\u672A\u8BFB"></ns-tabs-item>\n </ns-tabs> '),
7434
7943
  createVNode(unref(NsTabs), {
7435
7944
  modelValue: state.tab,
7436
7945
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => state.tab = $event),
@@ -8016,7 +8525,8 @@ var script$b = /* @__PURE__ */ defineComponent({
8016
8525
  }
8017
8526
  async function updateImage(filePath) {
8018
8527
  showLoading({
8019
- title: "\u4E0A\u4F20\u4E2D..."
8528
+ title: "\u4E0A\u4F20\u4E2D...",
8529
+ mask: true
8020
8530
  });
8021
8531
  const appkitOptions = useAppKitOptions();
8022
8532
  const $http = useHttp();
@@ -9992,7 +10502,8 @@ var script$6 = /* @__PURE__ */ defineComponent({
9992
10502
  const $http = useHttp();
9993
10503
  const appkitOptions = useAppKitOptions();
9994
10504
  showLoading({
9995
- title: "\u53CD\u9988\u4E2D..."
10505
+ title: "\u53CD\u9988\u4E2D...",
10506
+ mask: true
9996
10507
  });
9997
10508
  const attachment = JSON.parse(
9998
10509
  JSON.stringify(
@@ -10702,8 +11213,9 @@ var script$2 = /* @__PURE__ */ defineComponent({
10702
11213
  rules: ["required"]
10703
11214
  }, {
10704
11215
  append: withCtx(() => [
10705
- !\u5DF2\u8BA4\u8BC1.value ? (openBlock(), createBlock(unref(script$G), {
11216
+ !\u5DF2\u8BA4\u8BC1.value ? (openBlock(), createBlock(unref(script$I), {
10706
11217
  key: 0,
11218
+ "has-upload-vo": false,
10707
11219
  onComplete: onOcrComplete
10708
11220
  })) : createCommentVNode("v-if", true)
10709
11221
  ]),
@@ -11312,4 +11824,4 @@ const AppKit = {
11312
11824
  }
11313
11825
  };
11314
11826
 
11315
- export { script$t as AccountView, script$M as AmountPicker, script$K as AppDrawer, script$J as AppVerify, script$z as BalanceCard, script$s as BalanceReminder, script$r as DateRange, script$H as DeviceVersion, script$p as ListFilter, script$4 as LoginSetting, script$i as NoticeBanner, script$h as NoticeEntry, script$f as NoticeList, script$e as NoticeList2, script$F as OcrBusinessLicense, script$G as OcrIcon, script$L as PageHeader, script$o as PromoterCard, script$C as RechargeResult, script$E as RechargeView, script$k as SelfRegistration, script as SharePoster, script$A as TradeView, script$D as UserAgreement, script$2 as UserAuth, script$a as UserBinding, script$9 as UserBindingSuccess, script$d as UserEntry, script$6 as UserFeedback, script$5 as UserFeedbackEntry, script$7 as UserHeadCrop, script$b as UserInfo, script$3 as UserResourceEmpty, components, createHttp, AppKit as default, defaultCryptoConfig, generateUniqueId, getSdkConfig, initTracking, installTrackingPlugin, jssdkServices, requestPayment$2 as requestPayment, requestWxH5Pay, services$1 as services, trackingSDK, useAppKit, useCountdown, useCrypto, useEncode, useLogger, usePageTracking, useSafeArea, useTabbar, useUpload, useValidator, useWxAuth };
11827
+ export { script$t as AccountView, script$O as AmountPicker, script$M as AppDrawer, script$L as AppVerify, script$z as BalanceCard, script$s as BalanceReminder, script$r as DateRange, script$J as DeviceVersion, script$p as ListFilter, script$4 as LoginSetting, script$i as NoticeBanner, script$h as NoticeEntry, script$f as NoticeList, script$e as NoticeList2, script$H as OcrBank, script$G as OcrBusinessLicense, script$I as OcrIcon, script$F as OcrInvoice, script$N as PageHeader, script$o as PromoterCard, script$C as RechargeResult, script$E as RechargeView, script$k as SelfRegistration, script as SharePoster, script$A as TradeView, script$D as UserAgreement, script$2 as UserAuth, script$a as UserBinding, script$9 as UserBindingSuccess, script$d as UserEntry, script$6 as UserFeedback, script$5 as UserFeedbackEntry, script$7 as UserHeadCrop, script$b as UserInfo, script$3 as UserResourceEmpty, components, compressImage, compressImageWithCanvas, createHttp, AppKit as default, defaultCryptoConfig, generateUniqueId, getCompressQuality, getSdkConfig, initTracking, installTrackingPlugin, jssdkServices, requestPayment$2 as requestPayment, requestWxH5Pay, services$1 as services, trackingSDK, useAppKit, useCountdown, useCrypto, useEncode, useLogger, usePageTracking, useSafeArea, useTabbar, useUpload, useValidator, useWxAuth };