@uxda/appkit 4.3.11 → 4.3.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -4,12 +4,12 @@ import '@nutui/nutui-taro/dist/packages/checkbox/style/css';
4
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, NsTabsItem, 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) => {
@@ -128,6 +128,7 @@ function requestWxH5Pay(options) {
128
128
  title: "\u63D0\u793A",
129
129
  content: "\u5F53\u524D\u73AF\u5883\u4E0D\u652F\u6301\u5FAE\u4FE1\u652F\u4ED8\uFF0C\u8BF7\u5728\u5FAE\u4FE1\u5185\u7F6E\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00",
130
130
  confirmText: "\u786E\u5B9A",
131
+ confirmColor: "#017fff",
131
132
  success: () => {
132
133
  }
133
134
  });
@@ -310,71 +311,84 @@ function useEncode() {
310
311
  };
311
312
  }
312
313
 
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]));
314
+ const compressImageWithCanvas = (src, quality) => {
315
+ return new Promise((resolve, reject) => {
316
+ const img = new Image();
317
+ img.crossOrigin = "anonymous";
318
+ img.onload = () => {
319
+ try {
320
+ const canvas = document.createElement("canvas");
321
+ const ctx = canvas.getContext("2d");
322
+ if (!ctx) {
323
+ reject(new Error("\u65E0\u6CD5\u83B7\u53D6 canvas \u4E0A\u4E0B\u6587"));
324
+ return;
325
+ }
326
+ const maxWidth = 850;
327
+ const maxHeight = 850;
328
+ let width = img.width;
329
+ let height = img.height;
330
+ if (width > maxWidth || height > maxHeight) {
331
+ const ratio = Math.min(maxWidth / width, maxHeight / height);
332
+ width = width * ratio;
333
+ height = height * ratio;
334
+ }
335
+ canvas.width = width;
336
+ canvas.height = height;
337
+ ctx.drawImage(img, 0, 0, width, height);
338
+ canvas.toBlob(
339
+ (blob) => {
340
+ if (!blob) {
341
+ reject(new Error("\u56FE\u7247\u538B\u7F29\u5931\u8D25"));
342
+ return;
343
+ }
344
+ const compressedUrl = URL.createObjectURL(blob);
345
+ resolve(compressedUrl);
346
+ },
347
+ "image/jpeg",
348
+ quality / 100
349
+ );
350
+ } catch (error) {
351
+ reject(error);
352
+ }
353
+ };
354
+ img.onerror = () => {
355
+ reject(new Error("\u56FE\u7247\u52A0\u8F7D\u5931\u8D25"));
356
+ };
357
+ img.src = src;
358
+ });
343
359
  };
344
- const useUpload = (config) => {
345
- const appkitOptions = useAppKitOptions();
346
- const upload = (url, file) => {
360
+ async function compressImage(src, quality = 80) {
361
+ if (Taro.getEnv() === "WEB") {
362
+ try {
363
+ const compressedUrl = await compressImageWithCanvas(src, quality);
364
+ return { tempFilePath: compressedUrl };
365
+ } catch (error) {
366
+ console.error("\u56FE\u7247\u538B\u7F29\u5931\u8D25:", error);
367
+ return { tempFilePath: src };
368
+ }
369
+ } else {
347
370
  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()
371
+ Taro.compressImage({
372
+ src,
373
+ quality,
374
+ success: (res) => {
375
+ resolve(res);
358
376
  },
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
- }
377
+ fail: (res) => {
378
+ reject(res);
370
379
  }
371
380
  });
372
381
  });
373
- };
374
- return {
375
- upload
376
- };
377
- };
382
+ }
383
+ }
384
+ function getCompressQuality(size) {
385
+ let quality = 100;
386
+ const curSize = size / (1024 * 1024);
387
+ if (curSize > 6) {
388
+ quality = quality - (curSize - 6) / curSize * 100;
389
+ }
390
+ return quality;
391
+ }
378
392
 
379
393
  const defaultCryptoConfig = {
380
394
  maskField: "mask",
@@ -415,6 +429,25 @@ function useCrypto(config) {
415
429
  };
416
430
  }
417
431
 
432
+ const globalData = {};
433
+
434
+ const appKitOptions = {
435
+ app: () => "",
436
+ tenant: () => "",
437
+ token: () => "",
438
+ tempToken: () => "",
439
+ baseUrl: () => "",
440
+ 401() {
441
+ },
442
+ gray: () => ""
443
+ };
444
+ const useAppKitOptions = () => {
445
+ if (!globalData.$appKitOptions) {
446
+ globalData.$appKitOptions = appKitOptions;
447
+ }
448
+ return globalData.$appKitOptions;
449
+ };
450
+
418
451
  const defaultLogOptions = {
419
452
  projectName: "ddyk-dev",
420
453
  logStore: "ddjf-internet-web",
@@ -548,11 +581,59 @@ function useWxAuth() {
548
581
  };
549
582
  }
550
583
 
584
+ const mappings$1 = {
585
+ downloadUrl: "thrumb",
586
+ fileId: "id",
587
+ fileName: "name",
588
+ fileSize: "size",
589
+ fileSuffix: "ext",
590
+ fileType: "type",
591
+ originalUrl: "url"
592
+ };
593
+ const transformFields = (row) => {
594
+ return Object.fromEntries(Object.entries(row).map(([k, v]) => [mappings$1[k] || k, v]));
595
+ };
596
+ const useUpload = (config) => {
597
+ const appkitOptions = useAppKitOptions();
598
+ const upload = (url, file) => {
599
+ return new Promise((resolve, reject) => {
600
+ uploadFile({
601
+ url: config.baseUrl + url,
602
+ filePath: file.path,
603
+ name: "file",
604
+ formData: {
605
+ objectNo: `min${Date.now()}`,
606
+ appCode: config.headers?.appcode || appkitOptions.app()
607
+ },
608
+ header: {
609
+ ...config.headers,
610
+ token: appkitOptions.tempToken() || appkitOptions.token()
611
+ },
612
+ success: (rsp) => {
613
+ const { data } = rsp;
614
+ try {
615
+ const response = JSON.parse(data);
616
+ console.log("===response", response);
617
+ resolve(transformFields(response.result));
618
+ } catch (e) {
619
+ reject({
620
+ message: "\u6587\u4EF6\u4E0A\u4F20\u5F02\u5E38"
621
+ });
622
+ }
623
+ }
624
+ });
625
+ });
626
+ };
627
+ return {
628
+ upload
629
+ };
630
+ };
631
+
551
632
  const _hoisted_1$F = {
552
633
  key: 0,
553
634
  class: "page-title"
554
635
  };
555
- var script$L = /* @__PURE__ */ defineComponent({
636
+ var script$N = /* @__PURE__ */ defineComponent({
556
637
  __name: "PageHeader",
557
638
  props: {
558
639
  title: { type: String, required: false, default: "" },
@@ -609,10 +690,10 @@ var script$L = /* @__PURE__ */ defineComponent({
609
690
  }
610
691
  });
611
692
 
612
- script$L.__file = "src/shared/components/PageHeader.vue";
693
+ script$N.__file = "src/shared/components/PageHeader.vue";
613
694
 
614
695
  const _hoisted_1$E = { class: "drawer-body" };
615
- var script$K = /* @__PURE__ */ defineComponent({
696
+ var script$M = /* @__PURE__ */ defineComponent({
616
697
  __name: "AppDrawer",
617
698
  props: {
618
699
  modelValue: { type: Boolean, required: true },
@@ -636,7 +717,7 @@ var script$K = /* @__PURE__ */ defineComponent({
636
717
  "onUpdate:visible": onVisibleChange
637
718
  }, {
638
719
  default: withCtx(() => [
639
- createVNode(script$L, {
720
+ createVNode(script$N, {
640
721
  title: __props.title,
641
722
  style: normalizeStyle(unref(Taro).getEnv() !== "WEB" ? "" : "--height: 40px"),
642
723
  onClose: onPageHeaderClose
@@ -652,18 +733,18 @@ var script$K = /* @__PURE__ */ defineComponent({
652
733
  }
653
734
  });
654
735
 
655
- script$K.__file = "src/shared/components/AppDrawer.vue";
736
+ script$M.__file = "src/shared/components/AppDrawer.vue";
656
737
 
657
738
  const _hoisted_1$D = { class: "app-verify column" };
658
739
  const _hoisted_2$s = { class: "caption" };
659
740
  const _hoisted_3$m = { class: "number" };
660
- const _hoisted_4$h = { class: "form-btn" };
661
- const _hoisted_5$d = {
741
+ const _hoisted_4$i = { class: "form-btn" };
742
+ const _hoisted_5$e = {
662
743
  key: 1,
663
744
  class: "caption"
664
745
  };
665
746
  const _hoisted_6$a = { class: "row buttons" };
666
- var script$J = /* @__PURE__ */ defineComponent({
747
+ var script$L = /* @__PURE__ */ defineComponent({
667
748
  __name: "AppVerify",
668
749
  props: {
669
750
  phone: { type: String, required: true },
@@ -738,7 +819,7 @@ var script$J = /* @__PURE__ */ defineComponent({
738
819
  method: (value) => value.length === 6
739
820
  }]
740
821
  }, null, 8, ["modelValue", "rules"]),
741
- createElementVNode("div", _hoisted_4$h, [
822
+ createElementVNode("div", _hoisted_4$i, [
742
823
  !sent.value ? withDirectives((openBlock(), createBlock(
743
824
  unref(NsButton),
744
825
  {
@@ -757,7 +838,7 @@ var script$J = /* @__PURE__ */ defineComponent({
757
838
  ]) : createCommentVNode("v-if", true),
758
839
  sent.value ? (openBlock(), createElementBlock(
759
840
  "div",
760
- _hoisted_5$d,
841
+ _hoisted_5$e,
761
842
  toDisplayString(countdown.value) + "s\u540E\u91CD\u65B0\u53D1\u9001",
762
843
  1
763
844
  /* TEXT */
@@ -770,6 +851,7 @@ var script$J = /* @__PURE__ */ defineComponent({
770
851
  createElementVNode("div", _hoisted_6$a, [
771
852
  withDirectives((openBlock(), createBlock(unref(NsButton), {
772
853
  class: "cancel-btn",
854
+ r: 20,
773
855
  onClick: _cache[2] || (_cache[2] = ($event) => emits("cancel"))
774
856
  }, {
775
857
  default: withCtx(() => [..._cache[3] || (_cache[3] = [
@@ -786,6 +868,7 @@ var script$J = /* @__PURE__ */ defineComponent({
786
868
  ]),
787
869
  withDirectives((openBlock(), createBlock(unref(NsButton), {
788
870
  color: "primary",
871
+ r: 20,
789
872
  onClick: onOk
790
873
  }, {
791
874
  default: withCtx(() => [..._cache[4] || (_cache[4] = [
@@ -806,10 +889,10 @@ var script$J = /* @__PURE__ */ defineComponent({
806
889
  }
807
890
  });
808
891
 
809
- script$J.__file = "src/shared/components/AppVerify.vue";
892
+ script$L.__file = "src/shared/components/AppVerify.vue";
810
893
 
811
894
  const _hoisted_1$C = { key: 0 };
812
- var script$I = /* @__PURE__ */ defineComponent({
895
+ var script$K = /* @__PURE__ */ defineComponent({
813
896
  __name: "index",
814
897
  props: {
815
898
  text: { type: String, required: false },
@@ -876,7 +959,7 @@ var script$I = /* @__PURE__ */ defineComponent({
876
959
  }
877
960
  });
878
961
 
879
- script$I.__file = "src/components/dd-notice-bar/index.vue";
962
+ script$K.__file = "src/components/dd-notice-bar/index.vue";
880
963
 
881
964
  const typeMappings = {
882
965
  CZ: "\u5145\u503C",
@@ -1081,7 +1164,7 @@ function useHttp$3() {
1081
1164
  return $http;
1082
1165
  }
1083
1166
 
1084
- var script$H = /* @__PURE__ */ defineComponent({
1167
+ var script$J = /* @__PURE__ */ defineComponent({
1085
1168
  __name: "DeviceVersion",
1086
1169
  props: {
1087
1170
  versions: { type: String, required: false, default: "{}" }
@@ -1128,7 +1211,7 @@ var script$H = /* @__PURE__ */ defineComponent({
1128
1211
  }
1129
1212
  });
1130
1213
  return (_ctx, _cache) => {
1131
- return showAlert.value ? (openBlock(), createBlock(script$I, {
1214
+ return showAlert.value ? (openBlock(), createBlock(script$K, {
1132
1215
  key: 0,
1133
1216
  showClose: "",
1134
1217
  style: normalizeStyle(topStype.value),
@@ -1139,102 +1222,83 @@ var script$H = /* @__PURE__ */ defineComponent({
1139
1222
  }
1140
1223
  });
1141
1224
 
1142
- script$H.__file = "src/shared/components/DeviceVersion.vue";
1225
+ script$J.__file = "src/shared/components/DeviceVersion.vue";
1143
1226
 
1144
- var script$G = /* @__PURE__ */ defineComponent({
1227
+ var script$I = /* @__PURE__ */ defineComponent({
1145
1228
  __name: "OcrIcon",
1146
1229
  props: {
1147
1230
  disabled: { type: Boolean, required: false, default: false },
1148
1231
  side: { type: String, required: false, default: "face" },
1149
- class: { type: String, required: false, default: "" }
1232
+ className: { type: String, required: false, default: "" },
1233
+ uploadUrl: { type: String, required: false, default: "/saas-base/file/uploadPublic" },
1234
+ customUpload: { type: Function, required: false },
1235
+ hasUploadVo: { type: Boolean, required: false, default: true },
1236
+ customClick: { type: Boolean, required: false, default: false }
1150
1237
  },
1151
1238
  emits: ["complete"],
1152
- setup(__props, { emit: __emit }) {
1239
+ setup(__props, { expose: __expose, emit: __emit }) {
1153
1240
  const appKitOptions = useAppKitOptions();
1241
+ const $http = useHttp$3(), $n = useNutshell();
1154
1242
  const emits = __emit;
1155
1243
  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);
1169
- }
1170
- });
1171
- });
1172
- }
1173
- }
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;
1179
- }
1180
- return quality;
1181
- }
1182
1244
  function allTrim(str) {
1183
1245
  return str.replace(/\s+/g, "");
1184
1246
  }
1185
1247
  async function onUploadFile(csRes) {
1186
1248
  let result = null;
1187
1249
  try {
1188
- console.log("===\u4E0A\u4F20", csRes);
1189
1250
  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;
1251
+ const compressImg = await compressImage(path || tempFilePath, getCompressQuality(size)) || {};
1252
+ const filePath = compressImg.tempFilePath || path;
1253
+ if (props.customUpload) {
1254
+ props.customUpload(filePath);
1255
+ return;
1196
1256
  }
1197
- console.log(filePath, "filePath");
1198
- showLoading({ title: "\u8EAB\u4EFD\u8BC1\u8BC6\u522B\u4E2D.." });
1257
+ showLoading({ title: "\u8EAB\u4EFD\u8BC1\u8BC6\u522B\u4E2D..", mask: true });
1199
1258
  const session = appKitOptions.token();
1200
1259
  const baseUrl = appKitOptions.baseUrl();
1201
1260
  const upRes = await uploadFile({
1202
- url: baseUrl + "/hkapprove/ocr/idcard",
1261
+ url: `${baseUrl}${!props.hasUploadVo ? props.uploadUrl : "/hkapprove/ocr/idcard"}`,
1203
1262
  filePath,
1204
1263
  name: "file",
1205
1264
  formData: {
1206
1265
  objectNo: `min${Date.now()}`,
1207
- side: props.side
1266
+ side: props.side,
1267
+ appCode: appKitOptions.app()
1208
1268
  },
1209
1269
  header: {
1210
1270
  token: session || ""
1211
1271
  }
1212
1272
  });
1213
- hideLoading();
1214
1273
  const res = JSON.parse(upRes.data);
1215
1274
  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" });
1275
+ if (props.hasUploadVo) {
1276
+ hideLoading();
1277
+ const faceInfo = res.result.faceInfo || {};
1278
+ const backInfo = res.result.backInfo || {};
1279
+ result = {
1280
+ faceInfo: {
1281
+ name: allTrim(faceInfo.name || ""),
1282
+ certNo: allTrim(faceInfo.num || ""),
1283
+ address: allTrim(faceInfo.address || "")
1284
+ },
1285
+ backInfo: {
1286
+ startDate: backInfo?.startDate || "",
1287
+ endDate: backInfo?.endDate || ""
1288
+ },
1289
+ fileUploadVO: res.result.fileUploadVO || {}
1290
+ };
1291
+ if (props.side === "face" && !result.faceInfo.name && !result.faceInfo.certNo) {
1292
+ showToast({ title: "\u8BC6\u522B\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5", icon: "none" });
1293
+ }
1294
+ if (props.side === "back" && !result.backInfo?.startDate && !result.backInfo?.endDate) {
1295
+ showToast({ title: "\u8BC6\u522B\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5", icon: "none" });
1296
+ }
1297
+ } else {
1298
+ await getOcrInfo(res.result);
1236
1299
  }
1237
1300
  } else {
1301
+ hideLoading();
1238
1302
  showToast({
1239
1303
  title: res.msg,
1240
1304
  icon: "error"
@@ -1244,7 +1308,42 @@ var script$G = /* @__PURE__ */ defineComponent({
1244
1308
  hideLoading();
1245
1309
  console.log(err);
1246
1310
  }
1247
- emits("complete", result);
1311
+ props.hasUploadVo && (result?.faceInfo.name || result?.backInfo.startDate) && emits("complete", result);
1312
+ }
1313
+ async function getOcrInfo(file) {
1314
+ try {
1315
+ const res = await $http.get("/hkbase/common/idCard", {
1316
+ fileUrl: typeof file === "string" ? file : file.originalUrl,
1317
+ side: props.side
1318
+ });
1319
+ hideLoading();
1320
+ if (props.side === "face" && !res?.name || props.side === "back" && !res?.signDate) {
1321
+ $n.dialog({
1322
+ title: "\u8BC6\u522B\u5931\u8D25",
1323
+ 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`,
1324
+ okText: "\u6211\u77E5\u9053\u4E86",
1325
+ cancelText: ""
1326
+ });
1327
+ return;
1328
+ }
1329
+ emits("complete", {
1330
+ faceInfo: {
1331
+ name: allTrim(res?.name || ""),
1332
+ certNo: allTrim(res?.cardNumber || ""),
1333
+ address: allTrim(res?.address || "")
1334
+ },
1335
+ backInfo: {
1336
+ startDate: res?.expireDate || "",
1337
+ endDate: res?.signDate || ""
1338
+ },
1339
+ fileUploadVO: {
1340
+ fileUrl: typeof file === "string" ? file : file.originalUrl,
1341
+ fileKey: typeof file === "string" ? file : file.fileId
1342
+ }
1343
+ });
1344
+ } catch (err) {
1345
+ hideLoading();
1346
+ }
1248
1347
  }
1249
1348
  const activeSheetVisible = ref(false);
1250
1349
  const actionSheetMenus = [
@@ -1282,21 +1381,545 @@ var script$G = /* @__PURE__ */ defineComponent({
1282
1381
  onUploadFile(csRes);
1283
1382
  }
1284
1383
  }
1285
- async function onPhotograph() {
1384
+ async function onUpload() {
1385
+ if (props.disabled) return;
1386
+ if (Taro.getEnv() === "WEB") {
1387
+ const csRes = await chooseMedia({
1388
+ count: 1,
1389
+ sourceType: ["album"],
1390
+ // "camera" | "album"
1391
+ maxDuration: 60
1392
+ // 使用duration属性判断是图片还是视频,图片没有该属性
1393
+ });
1394
+ onUploadFile(csRes);
1395
+ return;
1396
+ }
1397
+ activeSheetVisible.value = true;
1398
+ }
1399
+ __expose({
1400
+ onUpload
1401
+ });
1402
+ return (_ctx, _cache) => {
1403
+ const _component_nut_action_sheet = ActionSheet;
1404
+ const _directive_track_click = resolveDirective("track-click");
1405
+ return openBlock(), createElementBlock(
1406
+ Fragment,
1407
+ null,
1408
+ [
1409
+ withDirectives((openBlock(), createElementBlock(
1410
+ "div",
1411
+ {
1412
+ class: normalizeClass(["ocr-icon", [__props.disabled ? "disabled" : "", __props.className]]),
1413
+ onClick: _cache[0] || (_cache[0] = ($event) => !__props.customClick ? onUpload() : null)
1414
+ },
1415
+ [
1416
+ renderSlot(_ctx.$slots, "icon", {}, () => [
1417
+ createVNode(unref(NsIcon), { name: "https://cdn.ddjf.com/static/images/beidouxing/ocr-icon.png" })
1418
+ ])
1419
+ ],
1420
+ 2
1421
+ /* CLASS */
1422
+ )), [
1423
+ [_directive_track_click, "\u8EAB\u4EFD\u8BC1\u8BC6\u522B-\u70B9\u51FB"]
1424
+ ]),
1425
+ createVNode(_component_nut_action_sheet, {
1426
+ visible: activeSheetVisible.value,
1427
+ "onUpdate:visible": _cache[1] || (_cache[1] = ($event) => activeSheetVisible.value = $event),
1428
+ "menu-items": actionSheetMenus,
1429
+ onChoose: chooseImages,
1430
+ "cancel-txt": "\u53D6\u6D88"
1431
+ }, null, 8, ["visible"])
1432
+ ],
1433
+ 64
1434
+ /* STABLE_FRAGMENT */
1435
+ );
1436
+ };
1437
+ }
1438
+ });
1439
+
1440
+ script$I.__file = "src/shared/components/OcrIcon.vue";
1441
+
1442
+ var script$H = /* @__PURE__ */ defineComponent({
1443
+ __name: "OcrBank",
1444
+ props: {
1445
+ disabled: { type: Boolean, required: false, default: false },
1446
+ class: { type: String, required: false, default: "" },
1447
+ uploadUrl: { type: String, required: false, default: "/hkbase/file/uploadFile" },
1448
+ customClick: { type: Boolean, required: false, default: false }
1449
+ },
1450
+ emits: ["complete"],
1451
+ setup(__props, { expose: __expose, emit: __emit }) {
1452
+ const appKitOptions = useAppKitOptions();
1453
+ const $http = useHttp$3(), $n = useNutshell();
1454
+ const emits = __emit;
1455
+ const props = __props;
1456
+ async function onUploadFile(csRes) {
1457
+ try {
1458
+ let { path, size, tempFilePath } = csRes.tempFiles[0];
1459
+ const compressImg = await compressImage(path || tempFilePath, getCompressQuality(size)) || {};
1460
+ const filePath = compressImg.tempFilePath || path;
1461
+ showLoading({ title: "\u94F6\u884C\u5361\u8BC6\u522B\u4E2D..", mask: true });
1462
+ const session = appKitOptions.token();
1463
+ const baseUrl = appKitOptions.baseUrl();
1464
+ const upRes = await uploadFile({
1465
+ url: baseUrl + props.uploadUrl,
1466
+ filePath,
1467
+ name: "file",
1468
+ formData: {
1469
+ objectNo: `min${Date.now()}`,
1470
+ appCode: appKitOptions.app()
1471
+ },
1472
+ header: {
1473
+ token: session || ""
1474
+ }
1475
+ });
1476
+ const res = JSON.parse(upRes.data);
1477
+ if (res.code === "200") {
1478
+ await getBankCardInfo(res.result);
1479
+ } else {
1480
+ hideLoading();
1481
+ showToast({
1482
+ title: res.msg,
1483
+ icon: "error"
1484
+ });
1485
+ }
1486
+ } catch (err) {
1487
+ hideLoading();
1488
+ console.log(err);
1489
+ }
1490
+ }
1491
+ async function getBankCardInfo(file) {
1492
+ try {
1493
+ const res = await $http.get("/hkbase/common/bankCard", {
1494
+ fileUrl: typeof file === "string" ? file : file.originalUrl
1495
+ });
1496
+ hideLoading();
1497
+ if (res && !res.bankCardNumber) {
1498
+ $n.dialog({
1499
+ title: "\u8BC6\u522B\u5931\u8D25",
1500
+ 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`,
1501
+ okText: "\u6211\u77E5\u9053\u4E86",
1502
+ cancelText: ""
1503
+ });
1504
+ return;
1505
+ }
1506
+ emits("complete", {
1507
+ ...res,
1508
+ fileUrl: typeof file === "string" ? file : file.originalUrl,
1509
+ fileKey: typeof file === "string" ? file : file.fileId
1510
+ });
1511
+ } catch (err) {
1512
+ hideLoading();
1513
+ }
1514
+ }
1515
+ const activeSheetVisible = ref(false);
1516
+ const actionSheetMenus = [
1517
+ {
1518
+ name: "\u62CD\u6444",
1519
+ type: "camera"
1520
+ },
1521
+ {
1522
+ name: "\u4ECE\u76F8\u518C\u9009\u62E9",
1523
+ type: "album"
1524
+ },
1525
+ {
1526
+ name: "\u4ECE\u804A\u5929\u4F1A\u8BDD\u9009\u62E9",
1527
+ type: "message"
1528
+ }
1529
+ ];
1530
+ if (Taro.getEnv() === "WEB") {
1531
+ actionSheetMenus.pop();
1532
+ }
1533
+ async function chooseImages(item) {
1534
+ if (["camera", "album"].includes(item.type)) {
1535
+ const csRes = await chooseMedia({
1536
+ count: 1,
1537
+ sourceType: [item.type],
1538
+ // "camera" | "album"
1539
+ maxDuration: 60
1540
+ // 使用duration属性判断是图片还是视频,图片没有该属性
1541
+ });
1542
+ onUploadFile(csRes);
1543
+ } else {
1544
+ const csRes = await chooseMessageFile({
1545
+ count: 1,
1546
+ type: "image"
1547
+ });
1548
+ onUploadFile(csRes);
1549
+ }
1550
+ }
1551
+ async function onUpload() {
1552
+ if (props.disabled) return;
1553
+ if (Taro.getEnv() === "WEB") {
1554
+ const csRes = await chooseMedia({
1555
+ count: 1,
1556
+ sourceType: ["album"],
1557
+ // "camera" | "album"
1558
+ maxDuration: 60
1559
+ // 使用duration属性判断是图片还是视频,图片没有该属性
1560
+ });
1561
+ onUploadFile(csRes);
1562
+ return;
1563
+ }
1564
+ activeSheetVisible.value = true;
1565
+ }
1566
+ __expose({
1567
+ onUpload
1568
+ });
1569
+ return (_ctx, _cache) => {
1570
+ const _component_nut_action_sheet = ActionSheet;
1571
+ const _directive_track_click = resolveDirective("track-click");
1572
+ return openBlock(), createElementBlock(
1573
+ Fragment,
1574
+ null,
1575
+ [
1576
+ withDirectives((openBlock(), createElementBlock(
1577
+ "div",
1578
+ {
1579
+ class: normalizeClass(["ocr-bank", [__props.disabled ? "disabled" : ""]]),
1580
+ onClick: _cache[0] || (_cache[0] = ($event) => !__props.customClick ? onUpload() : null)
1581
+ },
1582
+ [
1583
+ renderSlot(_ctx.$slots, "icon", {}, () => [
1584
+ createVNode(unref(NsIcon), { name: "https://cdn.ddjf.com/static/images/beidouxing/ocr-icon.png" })
1585
+ ])
1586
+ ],
1587
+ 2
1588
+ /* CLASS */
1589
+ )), [
1590
+ [_directive_track_click, "\u94F6\u884C\u5361\u8BC6\u522B-\u70B9\u51FB"]
1591
+ ]),
1592
+ createVNode(_component_nut_action_sheet, {
1593
+ visible: activeSheetVisible.value,
1594
+ "onUpdate:visible": _cache[1] || (_cache[1] = ($event) => activeSheetVisible.value = $event),
1595
+ "menu-items": actionSheetMenus,
1596
+ onChoose: chooseImages,
1597
+ "cancel-txt": "\u53D6\u6D88"
1598
+ }, null, 8, ["visible"])
1599
+ ],
1600
+ 64
1601
+ /* STABLE_FRAGMENT */
1602
+ );
1603
+ };
1604
+ }
1605
+ });
1606
+
1607
+ script$H.__file = "src/shared/components/OcrBank.vue";
1608
+
1609
+ var script$G = /* @__PURE__ */ defineComponent({
1610
+ __name: "OcrBusinessLicense",
1611
+ props: {
1612
+ disabled: { type: Boolean, required: true, default: false },
1613
+ customClick: { type: Boolean, required: false, default: false }
1614
+ },
1615
+ emits: ["complete"],
1616
+ setup(__props, { expose: __expose, emit: __emit }) {
1617
+ const appKitOptions = useAppKitOptions();
1618
+ const emits = __emit;
1619
+ const props = __props;
1620
+ function allTrim(str) {
1621
+ return str.replace(/\s+/g, "");
1622
+ }
1623
+ async function onUpload() {
1624
+ if (props.disabled) {
1625
+ return;
1626
+ }
1627
+ let result = null;
1628
+ try {
1629
+ const csRes = await chooseMedia({
1630
+ count: 1,
1631
+ sourceType: ["album", "camera"]
1632
+ });
1633
+ let { size, tempFilePath } = csRes.tempFiles[0];
1634
+ const compressImg = await compressImage(tempFilePath, getCompressQuality(size)) || {};
1635
+ const filePath = compressImg.tempFilePath;
1636
+ showLoading({ title: "\u8425\u4E1A\u6267\u7167\u8BC6\u522B\u4E2D..", mask: true });
1637
+ const session = appKitOptions.token();
1638
+ const baseUrl = appKitOptions.baseUrl();
1639
+ const upRes = await uploadFile({
1640
+ url: baseUrl + "/promoact/common/parseBusinessLicense",
1641
+ filePath,
1642
+ name: "file",
1643
+ formData: {
1644
+ objectNo: `min${Date.now()}`,
1645
+ appCode: appKitOptions.app()
1646
+ },
1647
+ header: {
1648
+ token: session || ""
1649
+ }
1650
+ });
1651
+ hideLoading();
1652
+ const res = JSON.parse(upRes.data);
1653
+ if (res.code === "200") {
1654
+ const faceInfo = res.result || {};
1655
+ result = {
1656
+ companyName: allTrim(faceInfo.companyName || ""),
1657
+ idCardNo: allTrim(faceInfo.idCardNo || ""),
1658
+ legalPersonName: allTrim(faceInfo.legalPersonName || ""),
1659
+ fileId: faceInfo.fileId,
1660
+ originalUrl: faceInfo.originalUrl,
1661
+ downloadUrl: faceInfo.downloadUrl
1662
+ };
1663
+ console.log("===\u8BC6\u522B", result);
1664
+ if (!result.companyName && !result.idCardNo) {
1665
+ showToast({ title: "\u8BC6\u522B\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5", icon: "none" });
1666
+ }
1667
+ } else {
1668
+ showToast({
1669
+ title: res.msg,
1670
+ icon: "error"
1671
+ });
1672
+ }
1673
+ } catch (err) {
1674
+ hideLoading();
1675
+ console.log(err);
1676
+ }
1677
+ emits("complete", result);
1678
+ }
1679
+ __expose({
1680
+ onUpload
1681
+ });
1682
+ return (_ctx, _cache) => {
1683
+ const _directive_track_click = resolveDirective("track-click");
1684
+ return withDirectives((openBlock(), createElementBlock(
1685
+ "div",
1686
+ {
1687
+ class: normalizeClass([["ocr-business-license", __props.disabled ? "disabled" : ""], "ocr-icon"]),
1688
+ onClick: _cache[0] || (_cache[0] = ($event) => !__props.customClick ? onUpload() : null)
1689
+ },
1690
+ [
1691
+ renderSlot(_ctx.$slots, "icon", {}, () => [
1692
+ createVNode(unref(NsIcon), { name: "https://cdn.ddjf.com/static/images/beidouxing/ocr-icon.png" })
1693
+ ])
1694
+ ],
1695
+ 2
1696
+ /* CLASS */
1697
+ )), [
1698
+ [_directive_track_click, "\u8425\u4E1A\u6267\u7167\u8BC6\u522B-\u70B9\u51FB"]
1699
+ ]);
1700
+ };
1701
+ }
1702
+ });
1703
+
1704
+ script$G.__file = "src/shared/components/OcrBusinessLicense.vue";
1705
+
1706
+ var script$F = /* @__PURE__ */ defineComponent({
1707
+ __name: "OcrInvoice",
1708
+ props: {
1709
+ disabled: { type: Boolean, required: false, default: false },
1710
+ side: { type: String, required: false, default: "face" },
1711
+ className: { type: String, required: false, default: "" },
1712
+ customUpload: { type: Function, required: false },
1713
+ uploadUrl: { type: String, required: false, default: "/hkbase/file/uploadFile" },
1714
+ customClick: { type: Boolean, required: false, default: false }
1715
+ },
1716
+ emits: ["complete"],
1717
+ setup(__props, { expose: __expose, emit: __emit }) {
1718
+ const appKitOptions = useAppKitOptions();
1719
+ const $http = useHttp$3(), $n = useNutshell();
1720
+ const emits = __emit;
1721
+ const props = __props;
1722
+ function getFileType(filePath, fileName) {
1723
+ const lowerPath = filePath.toLowerCase();
1724
+ const lowerName = (fileName || "").toLowerCase();
1725
+ if (lowerPath.endsWith(".pdf") || lowerName.endsWith(".pdf")) {
1726
+ return "pdf";
1727
+ }
1728
+ const imageExtensions = [".jpg", ".jpeg", ".png", ".gif", ".bmp", ".webp"];
1729
+ if (imageExtensions.some((ext) => lowerPath.endsWith(ext) || lowerName.endsWith(ext))) {
1730
+ return "img";
1731
+ }
1732
+ return "img";
1733
+ }
1734
+ async function onUploadFile(csRes, fileType) {
1735
+ try {
1736
+ let { path, size, tempFilePath, name } = csRes.tempFiles[0];
1737
+ const originalPath = path || tempFilePath;
1738
+ const detectedFileType = fileType || getFileType(originalPath, name);
1739
+ let filePath = originalPath;
1740
+ if (detectedFileType === "img") {
1741
+ const compressImg = await compressImage(originalPath, getCompressQuality(size)) || {};
1742
+ filePath = compressImg.tempFilePath || originalPath;
1743
+ }
1744
+ if (props.customUpload) {
1745
+ props.customUpload(filePath, detectedFileType);
1746
+ return;
1747
+ }
1748
+ showLoading({ title: "\u53D1\u7968\u8BC6\u522B\u4E2D..", mask: true });
1749
+ const session = appKitOptions.token();
1750
+ const baseUrl = appKitOptions.baseUrl();
1751
+ const upRes = await uploadFile({
1752
+ url: `${baseUrl}${props.uploadUrl}`,
1753
+ filePath,
1754
+ name: "file",
1755
+ formData: {
1756
+ objectNo: `min${Date.now()}`,
1757
+ appCode: appKitOptions.app()
1758
+ },
1759
+ header: {
1760
+ token: session || ""
1761
+ }
1762
+ });
1763
+ const res = JSON.parse(upRes.data);
1764
+ if (res.code === "200") {
1765
+ await getOcrInfo(res.result, detectedFileType);
1766
+ } else {
1767
+ hideLoading();
1768
+ showToast({
1769
+ title: res.msg,
1770
+ icon: "error"
1771
+ });
1772
+ }
1773
+ } catch (err) {
1774
+ hideLoading();
1775
+ console.log(err);
1776
+ }
1777
+ }
1778
+ async function getOcrInfo(file, fileType = "img") {
1779
+ try {
1780
+ const fileUrl = typeof file === "string" ? file : file.originalUrl;
1781
+ const res = await $http.get("/hkbase/common/vatInvoice", {
1782
+ fileUrl,
1783
+ fileType
1784
+ });
1785
+ hideLoading();
1786
+ if (!res?.purchaserRegisterNum) {
1787
+ $n.dialog({
1788
+ title: "\u8BC6\u522B\u5931\u8D25",
1789
+ message: `\u60A8\u4E0A\u4F20\u7684${fileType === "pdf" ? "\u6587\u4EF6" : "\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${fileType === "pdf" ? "PDF\u6587\u4EF6" : "\u56FE\u7247"}\u3002\u8C22\u8C22\uFF01`,
1790
+ okText: "\u6211\u77E5\u9053\u4E86",
1791
+ cancelText: ""
1792
+ });
1793
+ return;
1794
+ }
1795
+ emits("complete", {
1796
+ invoiceDate: res?.invoiceDate,
1797
+ invoiceNum: res?.invoiceNum,
1798
+ invoiceNumConfirm: res?.invoiceNumConfirm,
1799
+ invoiceType: res?.invoiceType,
1800
+ noteDrawer: res?.noteDrawer,
1801
+ purchaserBank: res?.purchaserBank,
1802
+ purchaserName: res?.purchaserName,
1803
+ purchaserRegisterNum: res?.purchaserRegisterNum,
1804
+ remarks: res?.remarks,
1805
+ sellerName: res?.sellerName,
1806
+ sellerRegisterNum: res?.sellerRegisterNum,
1807
+ serviceType: res?.serviceType,
1808
+ totalAmount: res?.totalAmount,
1809
+ totalTax: res?.totalTax,
1810
+ fileUrl,
1811
+ fileType,
1812
+ fileKey: typeof file === "string" ? file : file.fileId
1813
+ });
1814
+ } catch (err) {
1815
+ hideLoading();
1816
+ }
1817
+ }
1818
+ const activeSheetVisible = ref(false);
1819
+ const actionSheetMenus = [
1820
+ {
1821
+ name: "\u62CD\u6444",
1822
+ type: "camera"
1823
+ },
1824
+ {
1825
+ name: "\u4ECE\u76F8\u518C\u9009\u62E9",
1826
+ type: "album"
1827
+ },
1828
+ {
1829
+ name: "\u4ECE\u804A\u5929\u4F1A\u8BDD\u9009\u62E9",
1830
+ type: "message"
1831
+ },
1832
+ {
1833
+ name: "\u9009\u62E9\u6587\u4EF6",
1834
+ type: "file"
1835
+ }
1836
+ ];
1837
+ if (Taro.getEnv() === "WEB") {
1838
+ actionSheetMenus.splice(2, 1);
1839
+ }
1840
+ async function chooseImages(item) {
1841
+ if (["camera", "album"].includes(item.type)) {
1842
+ const csRes = await chooseMedia({
1843
+ count: 1,
1844
+ sourceType: [item.type],
1845
+ // "camera" | "album"
1846
+ maxDuration: 60
1847
+ // 使用duration属性判断是图片还是视频,图片没有该属性
1848
+ });
1849
+ onUploadFile(csRes);
1850
+ } else if (item.type === "message") {
1851
+ const csRes = await chooseMessageFile({
1852
+ count: 1,
1853
+ type: "image"
1854
+ });
1855
+ onUploadFile(csRes);
1856
+ } else if (item.type === "file") {
1857
+ const csRes = await chooseMessageFile({
1858
+ count: 1,
1859
+ type: "file"
1860
+ });
1861
+ onUploadFile(csRes);
1862
+ }
1863
+ }
1864
+ function chooseFileInWeb() {
1865
+ return new Promise((resolve, reject) => {
1866
+ const input = document.createElement("input");
1867
+ input.type = "file";
1868
+ input.accept = "image/*,.pdf";
1869
+ input.style.display = "none";
1870
+ input.onchange = async (e) => {
1871
+ const file = e.target?.files?.[0];
1872
+ if (!file) {
1873
+ document.body.removeChild(input);
1874
+ resolve();
1875
+ return;
1876
+ }
1877
+ let fileType = "img";
1878
+ if (file.type === "application/pdf" || file.name.toLowerCase().endsWith(".pdf")) {
1879
+ fileType = "pdf";
1880
+ }
1881
+ const filePath = URL.createObjectURL(file);
1882
+ try {
1883
+ const csRes = {
1884
+ tempFiles: [{
1885
+ path: filePath,
1886
+ tempFilePath: filePath,
1887
+ size: file.size,
1888
+ name: file.name
1889
+ }]
1890
+ };
1891
+ await onUploadFile(csRes, fileType);
1892
+ resolve();
1893
+ } catch (error) {
1894
+ reject(error);
1895
+ } finally {
1896
+ document.body.removeChild(input);
1897
+ URL.revokeObjectURL(filePath);
1898
+ }
1899
+ };
1900
+ input.oncancel = () => {
1901
+ document.body.removeChild(input);
1902
+ resolve();
1903
+ };
1904
+ document.body.appendChild(input);
1905
+ input.click();
1906
+ });
1907
+ }
1908
+ async function onUpload() {
1286
1909
  if (props.disabled) return;
1287
1910
  if (Taro.getEnv() === "WEB") {
1288
- const csRes = await chooseMedia({
1289
- count: 1,
1290
- sourceType: ["album"],
1291
- // "camera" | "album"
1292
- maxDuration: 60
1293
- // 使用duration属性判断是图片还是视频,图片没有该属性
1294
- });
1295
- onUploadFile(csRes);
1911
+ try {
1912
+ await chooseFileInWeb();
1913
+ } catch (err) {
1914
+ console.error("\u6587\u4EF6\u9009\u62E9\u5931\u8D25:", err);
1915
+ }
1296
1916
  return;
1297
1917
  }
1298
1918
  activeSheetVisible.value = true;
1299
1919
  }
1920
+ __expose({
1921
+ onUpload
1922
+ });
1300
1923
  return (_ctx, _cache) => {
1301
1924
  const _component_nut_action_sheet = ActionSheet;
1302
1925
  const _directive_track_click = resolveDirective("track-click");
@@ -1307,8 +1930,8 @@ var script$G = /* @__PURE__ */ defineComponent({
1307
1930
  withDirectives((openBlock(), createElementBlock(
1308
1931
  "div",
1309
1932
  {
1310
- class: normalizeClass(["ocr-icon", [__props.disabled ? "disabled" : ""]]),
1311
- onClick: onPhotograph
1933
+ class: normalizeClass(["ocr-invoice", [__props.disabled ? "disabled" : "", __props.className]]),
1934
+ onClick: _cache[0] || (_cache[0] = ($event) => !__props.customClick ? onUpload() : null)
1312
1935
  },
1313
1936
  [
1314
1937
  renderSlot(_ctx.$slots, "icon", {}, () => [
@@ -1318,11 +1941,11 @@ var script$G = /* @__PURE__ */ defineComponent({
1318
1941
  2
1319
1942
  /* CLASS */
1320
1943
  )), [
1321
- [_directive_track_click, "\u8EAB\u4EFD\u8BC1\u8BC6\u522B-\u70B9\u51FB"]
1944
+ [_directive_track_click, "\u53D1\u7968\u8BC6\u522B-\u70B9\u51FB"]
1322
1945
  ]),
1323
1946
  createVNode(_component_nut_action_sheet, {
1324
1947
  visible: activeSheetVisible.value,
1325
- "onUpdate:visible": _cache[0] || (_cache[0] = ($event) => activeSheetVisible.value = $event),
1948
+ "onUpdate:visible": _cache[1] || (_cache[1] = ($event) => activeSheetVisible.value = $event),
1326
1949
  "menu-items": actionSheetMenus,
1327
1950
  onChoose: chooseImages,
1328
1951
  "cancel-txt": "\u53D6\u6D88"
@@ -1335,125 +1958,7 @@ var script$G = /* @__PURE__ */ defineComponent({
1335
1958
  }
1336
1959
  });
1337
1960
 
1338
- script$G.__file = "src/shared/components/OcrIcon.vue";
1339
-
1340
- var script$F = /* @__PURE__ */ defineComponent({
1341
- __name: "OcrBusinessLicense",
1342
- props: {
1343
- disabled: { type: Boolean, required: true }
1344
- },
1345
- emits: ["complete"],
1346
- setup(__props, { emit: __emit }) {
1347
- const appKitOptions = useAppKitOptions();
1348
- const emits = __emit;
1349
- 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
- function allTrim(str) {
1373
- return str.replace(/\s+/g, "");
1374
- }
1375
- async function onIconClick() {
1376
- if (props.disabled) {
1377
- return;
1378
- }
1379
- console.log("===onIconClick");
1380
- let result = null;
1381
- try {
1382
- const csRes = await chooseMedia({
1383
- count: 1,
1384
- sourceType: ["album", "camera"]
1385
- });
1386
- 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.." });
1395
- const session = appKitOptions.token();
1396
- const baseUrl = appKitOptions.baseUrl();
1397
- const upRes = await uploadFile({
1398
- url: baseUrl + "/promoact/common/parseBusinessLicense",
1399
- filePath,
1400
- name: "file",
1401
- formData: {
1402
- objectNo: `min${Date.now()}`
1403
- },
1404
- header: {
1405
- token: session || ""
1406
- }
1407
- });
1408
- hideLoading();
1409
- const res = JSON.parse(upRes.data);
1410
- if (res.code === "200") {
1411
- const faceInfo = res.result || {};
1412
- result = {
1413
- companyName: allTrim(faceInfo.companyName || ""),
1414
- idCardNo: allTrim(faceInfo.idCardNo || ""),
1415
- legalPersonName: allTrim(faceInfo.legalPersonName || ""),
1416
- fileId: faceInfo.fileId,
1417
- originalUrl: faceInfo.originalUrl,
1418
- downloadUrl: faceInfo.downloadUrl
1419
- };
1420
- console.log("===\u8BC6\u522B", result);
1421
- if (!result.companyName && !result.idCardNo) {
1422
- showToast({ title: "\u8BC6\u522B\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5", icon: "none" });
1423
- }
1424
- } else {
1425
- showToast({
1426
- title: res.msg,
1427
- icon: "error"
1428
- });
1429
- }
1430
- } catch (err) {
1431
- hideLoading();
1432
- console.log(err);
1433
- }
1434
- emits("complete", result);
1435
- }
1436
- return (_ctx, _cache) => {
1437
- const _directive_track_click = resolveDirective("track-click");
1438
- return withDirectives((openBlock(), createElementBlock(
1439
- "div",
1440
- {
1441
- class: normalizeClass([["ocr-business-license", __props.disabled ? "disabled" : ""], "ocr-icon"]),
1442
- onClick: onIconClick
1443
- },
1444
- [
1445
- createVNode(unref(NsIcon), { name: "https://cdn.ddjf.com/static/images/beidouxing/ocr-icon.png" })
1446
- ],
1447
- 2
1448
- /* CLASS */
1449
- )), [
1450
- [_directive_track_click, "\u8425\u4E1A\u6267\u7167\u8BC6\u522B-\u70B9\u51FB"]
1451
- ]);
1452
- };
1453
- }
1454
- });
1455
-
1456
- script$F.__file = "src/shared/components/OcrBusinessLicense.vue";
1961
+ script$F.__file = "src/shared/components/OcrInvoice.vue";
1457
1962
 
1458
1963
  var HttpMethod = /* @__PURE__ */ ((HttpMethod2) => {
1459
1964
  HttpMethod2["get"] = "GET";
@@ -1501,6 +2006,7 @@ const request = (config) => {
1501
2006
  }
1502
2007
  }).catch((e) => {
1503
2008
  console.log("request.catch===", e);
2009
+ reject(e);
1504
2010
  });
1505
2011
  });
1506
2012
  };
@@ -2008,7 +2514,6 @@ class TrackingSDK {
2008
2514
  * 发送埋点数据
2009
2515
  */
2010
2516
  async flush() {
2011
- console.log(this.eventQueue.length, "this.eventQueue.length");
2012
2517
  if (this.eventQueue.length === 0) return;
2013
2518
  const events = [...this.eventQueue];
2014
2519
  this.eventQueue = [];
@@ -2694,9 +3199,11 @@ const endpointsList$2 = {
2694
3199
  certificateNo: params.user,
2695
3200
  accountAuthFlag: params.accountAuthFlag || false,
2696
3201
  channelCode: params.channelCode || null,
2697
- payFinishJumpUrl: params.payFinishJumpUrl || null
3202
+ payFinishJumpUrl: params.payFinishJumpUrl || null,
3203
+ useCloudBean: params.useCloudBean || false
2698
3204
  }),
2699
3205
  transform: (data) => {
3206
+ console.log(data, "data-----");
2700
3207
  let json = null;
2701
3208
  try {
2702
3209
  json = JSON.parse(data.prePayStr);
@@ -2764,6 +3271,7 @@ const vendor$2 = {
2764
3271
  title: data.msg,
2765
3272
  icon: "none"
2766
3273
  });
3274
+ reject(data.msg);
2767
3275
  }
2768
3276
  }).catch((e) => {
2769
3277
  reject(e);
@@ -2927,6 +3435,8 @@ const requestBrandWCPayByBean = (params, Appcode = "") => {
2927
3435
  }
2928
3436
  });
2929
3437
  }
3438
+ }).catch(() => {
3439
+ resolve(false);
2930
3440
  });
2931
3441
  });
2932
3442
  };
@@ -2955,7 +3465,7 @@ const isIOS = () => {
2955
3465
  const _hoisted_1$B = { class: "view recharge-view" };
2956
3466
  const _hoisted_2$r = { class: "flex-grow" };
2957
3467
  const _hoisted_3$l = { class: "amount-footer" };
2958
- const _hoisted_4$g = { class: "agreement" };
3468
+ const _hoisted_4$h = { class: "agreement" };
2959
3469
  var script$E = /* @__PURE__ */ defineComponent({
2960
3470
  __name: "RechargeView",
2961
3471
  props: {
@@ -3053,7 +3563,7 @@ var script$E = /* @__PURE__ */ defineComponent({
3053
3563
  const _directive_track_click = resolveDirective("track-click");
3054
3564
  return openBlock(), createElementBlock("view", _hoisted_1$B, [
3055
3565
  createElementVNode("view", _hoisted_2$r, [
3056
- createVNode(script$M, {
3566
+ createVNode(script$O, {
3057
3567
  items: amounts.value,
3058
3568
  selected: state.selected,
3059
3569
  onChange: onAmountSelect
@@ -3061,7 +3571,7 @@ var script$E = /* @__PURE__ */ defineComponent({
3061
3571
  renderSlot(_ctx.$slots, "banner")
3062
3572
  ]),
3063
3573
  createElementVNode("view", _hoisted_3$l, [
3064
- createElementVNode("view", _hoisted_4$g, [
3574
+ createElementVNode("view", _hoisted_4$h, [
3065
3575
  createVNode(_component_nut_checkbox, {
3066
3576
  modelValue: state.agreed,
3067
3577
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => state.agreed = $event)
@@ -3134,7 +3644,7 @@ const _hoisted_3$k = {
3134
3644
  key: 0,
3135
3645
  class: "caption"
3136
3646
  };
3137
- const _hoisted_4$f = {
3647
+ const _hoisted_4$g = {
3138
3648
  key: 1,
3139
3649
  class: "caption"
3140
3650
  };
@@ -3175,7 +3685,7 @@ var script$C = /* @__PURE__ */ defineComponent({
3175
3685
  ),
3176
3686
  __props.payMethod == "bean" ? (openBlock(), createElementBlock("div", _hoisted_3$k, "\u6743\u76CA\u5DF2\u5230\u8D26")) : (openBlock(), createElementBlock(
3177
3687
  "div",
3178
- _hoisted_4$f,
3688
+ _hoisted_4$g,
3179
3689
  toDisplayString(views[__props.type][1]) + "\u5C06\u57281\u5206\u949F\u4E4B\u5185\u5230\u8D26",
3180
3690
  1
3181
3691
  /* TEXT */
@@ -3322,8 +3832,8 @@ const _hoisted_3$i = {
3322
3832
  key: 0,
3323
3833
  class: "bean-buy"
3324
3834
  };
3325
- const _hoisted_4$e = { class: "left" };
3326
- const _hoisted_5$c = {
3835
+ const _hoisted_4$f = { class: "left" };
3836
+ const _hoisted_5$d = {
3327
3837
  key: 0,
3328
3838
  class: "amount"
3329
3839
  };
@@ -3333,24 +3843,33 @@ const _hoisted_6$9 = {
3333
3843
  };
3334
3844
  const _hoisted_7$6 = { class: "amount" };
3335
3845
  const _hoisted_8$5 = ["src"];
3336
- const _hoisted_9$4 = { class: "amount-footer" };
3846
+ const _hoisted_9$4 = {
3847
+ key: 0,
3848
+ class: "balance-warning"
3849
+ };
3337
3850
  const _hoisted_10$3 = {
3851
+ key: 1,
3852
+ class: "balance-warning-tip"
3853
+ };
3854
+ const _hoisted_11$3 = { class: "amount-footer" };
3855
+ const _hoisted_12$3 = {
3338
3856
  key: 0,
3339
3857
  class: "agreement"
3340
3858
  };
3341
- const _hoisted_11$3 = { class: "buy-amount" };
3342
- const _hoisted_12$3 = { class: "left" };
3343
- const _hoisted_13$2 = { class: "amount" };
3344
- const _hoisted_14$2 = { class: "item" };
3345
- const _hoisted_15$2 = { class: "item" };
3859
+ const _hoisted_13$2 = { class: "buy-amount" };
3860
+ const _hoisted_14$2 = { class: "left" };
3861
+ const _hoisted_15$2 = { class: "amount" };
3346
3862
  const _hoisted_16$2 = { class: "item" };
3863
+ const _hoisted_17$2 = { class: "item" };
3864
+ const _hoisted_18$2 = { class: "item" };
3347
3865
  var script$A = /* @__PURE__ */ defineComponent({
3348
3866
  __name: "TradeView",
3349
3867
  props: {
3350
3868
  headerApp: { type: String, required: true },
3351
3869
  app: { type: String, required: true },
3352
3870
  tenant: { type: String, required: true },
3353
- payFinishJumpUrl: { type: String, required: false }
3871
+ payFinishJumpUrl: { type: String, required: false },
3872
+ apps: { type: String, required: false }
3354
3873
  },
3355
3874
  emits: ["complete", "agree", "loaded"],
3356
3875
  setup(__props, { emit: __emit }) {
@@ -3376,8 +3895,28 @@ var script$A = /* @__PURE__ */ defineComponent({
3376
3895
  state.selected = selected;
3377
3896
  selectBean.value = false;
3378
3897
  };
3898
+ const extraPaymentAmount = computed(() => {
3899
+ if (!selectBean.value || !amounts.value[state.selected]) {
3900
+ return 0;
3901
+ }
3902
+ const paymentAmount = amounts.value[state.selected].paymentAmount || 0;
3903
+ const currentBalance = balance.value || 0;
3904
+ return Math.max(0, paymentAmount - currentBalance);
3905
+ });
3379
3906
  const currentAmount = computed(() => {
3380
- return amounts.value[state.selected] && !selectBean.value ? amounts.value[state.selected].paymentAmount : 0;
3907
+ if (!amounts.value[state.selected]) {
3908
+ return 0;
3909
+ }
3910
+ if (selectBean.value) {
3911
+ if (balance.value < amounts.value[state.selected].paymentAmount) {
3912
+ return extraPaymentAmount.value;
3913
+ }
3914
+ return 0;
3915
+ }
3916
+ return amounts.value[state.selected].paymentAmount || 0;
3917
+ });
3918
+ const isCombinedPayment = computed(() => {
3919
+ return selectBean.value && amounts.value[state.selected] && balance.value < amounts.value[state.selected].paymentAmount;
3381
3920
  });
3382
3921
  onMounted(() => {
3383
3922
  const $http = useHttp$2({ Appcode: props.headerApp, Tenant: props.tenant });
@@ -3392,24 +3931,28 @@ var script$A = /* @__PURE__ */ defineComponent({
3392
3931
  const showDialog = ref(false);
3393
3932
  async function beanPay() {
3394
3933
  const $http = useHttp$2({ Appcode: props.headerApp, Tenant: props.tenant });
3395
- $http.post(`/payment/paymentCaseConfig/purchase/${amounts.value[state.selected].id}`).then((response) => {
3934
+ try {
3935
+ const response = await $http.post(
3936
+ `/payment/paymentCaseConfig/purchase/${amounts.value[state.selected].id}`
3937
+ );
3396
3938
  if (response) {
3397
3939
  showDialog.value = false;
3398
3940
  emit("complete", { result: response, type: "bean" });
3399
3941
  } else {
3400
3942
  showToast({
3401
- title: response.message,
3943
+ title: response?.message || "\u652F\u4ED8\u5931\u8D25",
3402
3944
  icon: "none"
3403
3945
  });
3404
3946
  }
3405
- });
3406
- }
3407
- const onPayClick = () => {
3408
- if (selectBean.value) {
3409
- showDialog.value = true;
3410
- return;
3947
+ } catch (error) {
3948
+ showToast({
3949
+ title: error?.message || "\u652F\u4ED8\u5931\u8D25",
3950
+ icon: "none"
3951
+ });
3411
3952
  }
3412
- if (!selectBean.value && !state.agreed) {
3953
+ }
3954
+ function proceedWechatPayment() {
3955
+ if (!state.agreed) {
3413
3956
  showToast({
3414
3957
  title: "\u8BF7\u52FE\u9009\u300A\u5927\u9053\u4E91\u5E73\u53F0\u4E91\u8C46\u5145\u503C\u534F\u8BAE\u300B",
3415
3958
  icon: "none"
@@ -3428,41 +3971,109 @@ var script$A = /* @__PURE__ */ defineComponent({
3428
3971
  }
3429
3972
  requestBrandWCPayByBean({
3430
3973
  caseConfigId: amounts.value[state.selected].id,
3431
- amount: amounts.value[state.selected].paymentAmount,
3974
+ amount: currentAmount.value,
3432
3975
  app: "loankitMp",
3433
3976
  tenant: props.tenant,
3434
3977
  accountAuthFlag: false,
3435
3978
  channelCode: "centergzh",
3436
3979
  payFinishJumpUrl: props.payFinishJumpUrl,
3437
- fromMini: !!params.from
3980
+ fromMini: !!params.from,
3981
+ useCloudBean: isCombinedPayment.value
3438
3982
  }).then((result) => {
3439
- console.log(result, "------requestBrandWCPay");
3440
3983
  state.buttonLoading = false;
3441
3984
  if (typeof result === "boolean" && result) {
3442
3985
  window.location.href = props.payFinishJumpUrl;
3443
3986
  } else {
3444
- emit("complete", { result, type: "wePay" });
3987
+ emit("complete", {
3988
+ result,
3989
+ type: isCombinedPayment.value ? "combined" : "wePay"
3990
+ });
3445
3991
  }
3992
+ }).catch((error) => {
3993
+ state.buttonLoading = false;
3994
+ showToast({
3995
+ title: error.message || "\u652F\u4ED8\u5931\u8D25",
3996
+ icon: "none"
3997
+ });
3446
3998
  });
3447
3999
  } else {
3448
4000
  wx.login({
3449
4001
  success({ code }) {
3450
- requestPaymentByBean({
3451
- caseConfigId: amounts.value[state.selected].id,
3452
- amount: amounts.value[state.selected].paymentAmount,
3453
- app: props.app,
3454
- tenant: props.tenant,
3455
- user: code
3456
- }, props.headerApp).then((result) => {
4002
+ requestPaymentByBean(
4003
+ {
4004
+ caseConfigId: amounts.value[state.selected].id,
4005
+ amount: currentAmount.value,
4006
+ app: props.app,
4007
+ tenant: props.tenant,
4008
+ user: code
4009
+ },
4010
+ props.headerApp
4011
+ ).then((result) => {
3457
4012
  state.buttonLoading = false;
3458
4013
  if (result) {
3459
- emit("complete", { result: true, type: "wePay" });
4014
+ emit("complete", {
4015
+ result: true,
4016
+ type: isCombinedPayment.value ? "combined" : "wePay"
4017
+ });
3460
4018
  }
4019
+ }).catch((error) => {
4020
+ state.buttonLoading = false;
4021
+ showToast({
4022
+ title: error.message || "\u652F\u4ED8\u5931\u8D25",
4023
+ icon: "none"
4024
+ });
4025
+ });
4026
+ },
4027
+ fail() {
4028
+ state.buttonLoading = false;
4029
+ showToast({
4030
+ title: "\u767B\u5F55\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5",
4031
+ icon: "none"
3461
4032
  });
3462
4033
  }
3463
4034
  });
3464
4035
  }
4036
+ }
4037
+ const onPayClick = async () => {
4038
+ if (selectBean.value && !isCombinedPayment.value) {
4039
+ showDialog.value = true;
4040
+ return;
4041
+ }
4042
+ if (isCombinedPayment.value) {
4043
+ const res = await checkBalance();
4044
+ if (!res) return;
4045
+ }
4046
+ proceedWechatPayment();
3465
4047
  };
4048
+ async function checkBalance() {
4049
+ const $http = useHttp$2();
4050
+ return new Promise((resolve, reject) => {
4051
+ state.buttonLoading = true;
4052
+ $http.get(endpoints$2.\u83B7\u53D6\u4F59\u989D\u660E\u7EC6, {
4053
+ app: props.apps
4054
+ }).then((data) => {
4055
+ state.buttonLoading = false;
4056
+ if (data.commonAccount < balance.value) {
4057
+ showModal({
4058
+ title: "\u6E29\u99A8\u63D0\u793A",
4059
+ content: "\u4E91\u8C46\u4E0D\u8DB3\uFF0C\u8BF7\u5237\u65B0\u540E\u518D\u6B21\u786E\u8BA4",
4060
+ showCancel: false,
4061
+ confirmText: "\u5237\u65B0",
4062
+ confirmColor: "#017fff",
4063
+ success: () => {
4064
+ balance.value = data.commonAccount;
4065
+ }
4066
+ });
4067
+ resolve(false);
4068
+ } else {
4069
+ resolve(true);
4070
+ }
4071
+ }).catch((error) => {
4072
+ state.buttonLoading = false;
4073
+ resolve(false);
4074
+ });
4075
+ });
4076
+ }
3466
4077
  return (_ctx, _cache) => {
3467
4078
  const _component_nut_checkbox = Checkbox;
3468
4079
  const _component_nut_button = Button;
@@ -3476,7 +4087,7 @@ var script$A = /* @__PURE__ */ defineComponent({
3476
4087
  onChange: onAmountSelect
3477
4088
  }, null, 8, ["items", "selected"]),
3478
4089
  amounts.value[state.selected] ? (openBlock(), createElementBlock("div", _hoisted_3$i, [
3479
- createElementVNode("div", _hoisted_4$e, [
4090
+ createElementVNode("div", _hoisted_4$f, [
3480
4091
  _cache[4] || (_cache[4] = createElementVNode(
3481
4092
  "div",
3482
4093
  { class: "title" },
@@ -3484,29 +4095,28 @@ var script$A = /* @__PURE__ */ defineComponent({
3484
4095
  -1
3485
4096
  /* CACHED */
3486
4097
  )),
3487
- !selectBean.value ? (openBlock(), createElementBlock(
4098
+ !selectBean.value || isCombinedPayment.value ? (openBlock(), createElementBlock(
3488
4099
  "div",
3489
- _hoisted_5$c,
3490
- "\u4F59\u989D " + toDisplayString(unref(formatAmount)(balance.value || 0)),
4100
+ _hoisted_5$d,
4101
+ " \u4F59\u989D " + toDisplayString(unref(formatAmount)(balance.value || 0)),
3491
4102
  1
3492
4103
  /* TEXT */
3493
4104
  )) : (openBlock(), createElementBlock(
3494
4105
  "div",
3495
4106
  _hoisted_6$9,
3496
- "\u6263\u51CF\u540E\u4F59\u989D " + toDisplayString(unref(formatAmount)(balance.value - amounts.value[state.selected].paymentAmount)),
4107
+ " \u6263\u51CF\u540E\u4F59\u989D " + toDisplayString(unref(formatAmount)(balance.value - amounts.value[state.selected].paymentAmount)),
3497
4108
  1
3498
4109
  /* TEXT */
3499
4110
  ))
3500
4111
  ]),
3501
- balance.value >= amounts.value[state.selected].paymentAmount ? (openBlock(), createElementBlock("div", {
3502
- key: 0,
4112
+ createElementVNode("div", {
3503
4113
  class: "right",
3504
4114
  onClick: _cache[0] || (_cache[0] = ($event) => selectBean.value = !selectBean.value)
3505
4115
  }, [
3506
4116
  createElementVNode(
3507
4117
  "div",
3508
4118
  _hoisted_7$6,
3509
- "-" + toDisplayString(unref(formatAmount)(amounts.value[state.selected].paymentAmount || 0)),
4119
+ " -" + toDisplayString(unref(formatAmount)(amounts.value[state.selected].paymentAmount || 0)),
3510
4120
  1
3511
4121
  /* TEXT */
3512
4122
  ),
@@ -3514,12 +4124,20 @@ var script$A = /* @__PURE__ */ defineComponent({
3514
4124
  class: "icon",
3515
4125
  src: selectBean.value ? "https://cdn.ddjf.com/static/images/appkit/select.svg" : "https://cdn.ddjf.com/static/images/appkit/not-select.svg"
3516
4126
  }, null, 8, _hoisted_8$5)
3517
- ])) : createCommentVNode("v-if", true)
4127
+ ]),
4128
+ isCombinedPayment.value ? (openBlock(), createElementBlock(
4129
+ "div",
4130
+ _hoisted_9$4,
4131
+ " \u4E91\u8C46\u4F59\u989D\u4E0D\u8DB3,\u8FD8\u9700\u989D\u5916\u652F\u4ED8" + toDisplayString(unref(formatAmount)(extraPaymentAmount.value)) + "\u5143 ",
4132
+ 1
4133
+ /* TEXT */
4134
+ )) : createCommentVNode("v-if", true)
3518
4135
  ])) : createCommentVNode("v-if", true),
4136
+ 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),
3519
4137
  renderSlot(_ctx.$slots, "banner")
3520
4138
  ]),
3521
- createElementVNode("view", _hoisted_9$4, [
3522
- !selectBean.value ? (openBlock(), createElementBlock("view", _hoisted_10$3, [
4139
+ createElementVNode("view", _hoisted_11$3, [
4140
+ !selectBean.value || isCombinedPayment.value ? (openBlock(), createElementBlock("view", _hoisted_12$3, [
3523
4141
  createVNode(_component_nut_checkbox, {
3524
4142
  modelValue: state.agreed,
3525
4143
  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => state.agreed = $event)
@@ -3547,14 +4165,14 @@ var script$A = /* @__PURE__ */ defineComponent({
3547
4165
  /* STABLE */
3548
4166
  }, 8, ["modelValue"])
3549
4167
  ])) : createCommentVNode("v-if", true),
3550
- createElementVNode("div", _hoisted_11$3, [
3551
- createElementVNode("div", _hoisted_12$3, [
4168
+ createElementVNode("div", _hoisted_13$2, [
4169
+ createElementVNode("div", _hoisted_14$2, [
3552
4170
  _cache[8] || (_cache[8] = createTextVNode(
3553
4171
  " \u5F85\u652F\u4ED8\uFF1A ",
3554
4172
  -1
3555
4173
  /* CACHED */
3556
4174
  )),
3557
- createElementVNode("span", _hoisted_13$2, [
4175
+ createElementVNode("span", _hoisted_15$2, [
3558
4176
  _cache[7] || (_cache[7] = createElementVNode(
3559
4177
  "i",
3560
4178
  null,
@@ -3605,22 +4223,22 @@ var script$A = /* @__PURE__ */ defineComponent({
3605
4223
  [
3606
4224
  createElementVNode(
3607
4225
  "div",
3608
- _hoisted_14$2,
3609
- "\u4E91\u8C46\u6263\u51CF\uFF1A" + toDisplayString(unref(formatAmount)(amounts.value[state.selected].paymentAmount || 0)),
4226
+ _hoisted_16$2,
4227
+ " \u4E91\u8C46\u6263\u51CF\uFF1A" + toDisplayString(unref(formatAmount)(amounts.value[state.selected].paymentAmount || 0)),
3610
4228
  1
3611
4229
  /* TEXT */
3612
4230
  ),
3613
4231
  createElementVNode(
3614
4232
  "div",
3615
- _hoisted_15$2,
3616
- "\u6743\u76CA\u589E\u52A0\uFF1A" + toDisplayString(unref(formatAmount)(amounts.value[state.selected].priceRightNum || 0)) + "\u7B14",
4233
+ _hoisted_17$2,
4234
+ " \u6743\u76CA\u589E\u52A0\uFF1A" + toDisplayString(unref(formatAmount)(amounts.value[state.selected].priceRightNum || 0)) + "\u7B14 ",
3617
4235
  1
3618
4236
  /* TEXT */
3619
4237
  ),
3620
4238
  createElementVNode(
3621
4239
  "div",
3622
- _hoisted_16$2,
3623
- "\u6263\u51CF\u540E\u4E91\u8C46\u4F59\u989D\uFF1A" + toDisplayString(unref(formatAmount)(balance.value - amounts.value[state.selected].paymentAmount)),
4240
+ _hoisted_18$2,
4241
+ " \u6263\u51CF\u540E\u4E91\u8C46\u4F59\u989D\uFF1A" + toDisplayString(unref(formatAmount)(balance.value - amounts.value[state.selected].paymentAmount)),
3624
4242
  1
3625
4243
  /* TEXT */
3626
4244
  )
@@ -3640,7 +4258,7 @@ var script$A = /* @__PURE__ */ defineComponent({
3640
4258
  script$A.__file = "src/payment/components/TradeView.vue";
3641
4259
 
3642
4260
  const components = {
3643
- AmountPicker: script$M,
4261
+ AmountPicker: script$O,
3644
4262
  RechargeView: script$E,
3645
4263
  UserAgreement: script$D,
3646
4264
  RechargeResult: script$C,
@@ -3650,8 +4268,8 @@ const components = {
3650
4268
  const _hoisted_1$w = { class: "account-card" };
3651
4269
  const _hoisted_2$n = { class: "card" };
3652
4270
  const _hoisted_3$h = { class: "card-row" };
3653
- const _hoisted_4$d = { class: "card-row-left" };
3654
- const _hoisted_5$b = { class: "bean-nums number" };
4271
+ const _hoisted_4$e = { class: "card-row-left" };
4272
+ const _hoisted_5$c = { class: "bean-nums number" };
3655
4273
  const _hoisted_6$8 = { class: "card-row-right" };
3656
4274
  var script$z = /* @__PURE__ */ defineComponent({
3657
4275
  __name: "BalanceCard",
@@ -3698,7 +4316,7 @@ var script$z = /* @__PURE__ */ defineComponent({
3698
4316
  return openBlock(), createElementBlock("div", _hoisted_1$w, [
3699
4317
  createElementVNode("div", _hoisted_2$n, [
3700
4318
  createElementVNode("div", _hoisted_3$h, [
3701
- createElementVNode("div", _hoisted_4$d, [
4319
+ createElementVNode("div", _hoisted_4$e, [
3702
4320
  _cache[0] || (_cache[0] = createElementVNode(
3703
4321
  "div",
3704
4322
  { class: "bean-box" },
@@ -3716,7 +4334,7 @@ var script$z = /* @__PURE__ */ defineComponent({
3716
4334
  )),
3717
4335
  createElementVNode(
3718
4336
  "div",
3719
- _hoisted_5$b,
4337
+ _hoisted_5$c,
3720
4338
  toDisplayString(unref(formatAmount)(balance.value.total || 0)),
3721
4339
  1
3722
4340
  /* TEXT */
@@ -3778,8 +4396,8 @@ const consumptionDirections = ["\u5168\u90E8", "\u6536\u5165", "\u652F\u51FA"];
3778
4396
  const _hoisted_1$v = { class: "consumption-filter" };
3779
4397
  const _hoisted_2$m = { class: "consumption-filter-content" };
3780
4398
  const _hoisted_3$g = { class: "title" };
3781
- const _hoisted_4$c = { class: "info" };
3782
- const _hoisted_5$a = ["onClick"];
4399
+ const _hoisted_4$d = { class: "info" };
4400
+ const _hoisted_5$b = ["onClick"];
3783
4401
  const _hoisted_6$7 = { class: "consumption-filter-btn spa-between" };
3784
4402
  var script$y = /* @__PURE__ */ defineComponent({
3785
4403
  __name: "ConsumptionFilter",
@@ -3858,7 +4476,7 @@ var script$y = /* @__PURE__ */ defineComponent({
3858
4476
  1
3859
4477
  /* TEXT */
3860
4478
  ),
3861
- createElementVNode("div", _hoisted_4$c, [
4479
+ createElementVNode("div", _hoisted_4$d, [
3862
4480
  (openBlock(true), createElementBlock(
3863
4481
  Fragment,
3864
4482
  null,
@@ -3867,7 +4485,7 @@ var script$y = /* @__PURE__ */ defineComponent({
3867
4485
  onClick: () => onFilterSectionClick(index, it.code),
3868
4486
  class: normalizeClass([getItemClass(index, it.code), "info-item"]),
3869
4487
  key: i
3870
- }, toDisplayString(typeof it === "string" ? it : it.name), 11, _hoisted_5$a);
4488
+ }, toDisplayString(typeof it === "string" ? it : it.name), 11, _hoisted_5$b);
3871
4489
  }),
3872
4490
  128
3873
4491
  /* KEYED_FRAGMENT */
@@ -3917,7 +4535,7 @@ script$y.__file = "src/balance/components/ConsumptionFilter.vue";
3917
4535
  const _hoisted_1$u = { class: "appkit-date-filter" };
3918
4536
  const _hoisted_2$l = { class: "content" };
3919
4537
  const _hoisted_3$f = { class: "time" };
3920
- const _hoisted_4$b = { class: "buttons spa-between" };
4538
+ const _hoisted_4$c = { class: "buttons spa-between" };
3921
4539
  var script$x = /* @__PURE__ */ defineComponent({
3922
4540
  __name: "DateFilter",
3923
4541
  props: {
@@ -4040,7 +4658,7 @@ var script$x = /* @__PURE__ */ defineComponent({
4040
4658
  )
4041
4659
  ])
4042
4660
  ]),
4043
- createElementVNode("div", _hoisted_4$b, [
4661
+ createElementVNode("div", _hoisted_4$c, [
4044
4662
  createElementVNode("div", {
4045
4663
  class: "btn",
4046
4664
  onClick: reset
@@ -4216,8 +4834,8 @@ script$u.__file = "src/balance/components/Tip.vue";
4216
4834
  const _hoisted_1$q = { class: "account-view" };
4217
4835
  const _hoisted_2$k = { class: "scroll-content" };
4218
4836
  const _hoisted_3$e = { class: "row jusify-right" };
4219
- const _hoisted_4$a = { class: "balance" };
4220
- const _hoisted_5$9 = { class: "bean-box spa-between" };
4837
+ const _hoisted_4$b = { class: "balance" };
4838
+ const _hoisted_5$a = { class: "bean-box spa-between" };
4221
4839
  const _hoisted_6$6 = { class: "bean-counts spa-between" };
4222
4840
  const _hoisted_7$5 = { class: "counts number" };
4223
4841
  const _hoisted_8$4 = {
@@ -4458,7 +5076,7 @@ var script$t = /* @__PURE__ */ defineComponent({
4458
5076
  [
4459
5077
  createElementVNode("div", _hoisted_1$q, [
4460
5078
  createElementVNode("div", _hoisted_2$k, [
4461
- createVNode(unref(script$L), {
5079
+ createVNode(unref(script$N), {
4462
5080
  title: unref(Taro).getEnv() !== "WEB" ? "\u6211\u7684\u8D26\u6237" : "",
4463
5081
  class: normalizeClass({ "with-background": scrolled.value > 0 }),
4464
5082
  onClose: onPageHeaderClose
@@ -4479,8 +5097,8 @@ var script$t = /* @__PURE__ */ defineComponent({
4479
5097
  [_directive_track_click]
4480
5098
  ])
4481
5099
  ]),
4482
- createElementVNode("div", _hoisted_4$a, [
4483
- createElementVNode("div", _hoisted_5$9, [
5100
+ createElementVNode("div", _hoisted_4$b, [
5101
+ createElementVNode("div", _hoisted_5$a, [
4484
5102
  _cache[9] || (_cache[9] = createElementVNode(
4485
5103
  "div",
4486
5104
  { class: "bean-img" },
@@ -4763,7 +5381,7 @@ var script$t = /* @__PURE__ */ defineComponent({
4763
5381
  _: 1
4764
5382
  /* STABLE */
4765
5383
  }, 8, ["visible"]),
4766
- createVNode(unref(script$K), {
5384
+ createVNode(unref(script$M), {
4767
5385
  modelValue: secondBalanceOpen.value,
4768
5386
  "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => secondBalanceOpen.value = $event),
4769
5387
  title: "\u6536\u652F\u660E\u7EC6"
@@ -4953,8 +5571,8 @@ script$t.__file = "src/balance/components/AccountView.vue";
4953
5571
  const _hoisted_1$p = { class: "balance-reminder" };
4954
5572
  const _hoisted_2$j = { class: "body" };
4955
5573
  const _hoisted_3$d = { class: "footer" };
4956
- const _hoisted_4$9 = { class: "col" };
4957
- const _hoisted_5$8 = { class: "col" };
5574
+ const _hoisted_4$a = { class: "col" };
5575
+ const _hoisted_5$9 = { class: "col" };
4958
5576
  var script$s = /* @__PURE__ */ defineComponent({
4959
5577
  __name: "BalanceReminder",
4960
5578
  props: {
@@ -4995,7 +5613,7 @@ var script$s = /* @__PURE__ */ defineComponent({
4995
5613
  )
4996
5614
  ]),
4997
5615
  createElementVNode("div", _hoisted_3$d, [
4998
- createElementVNode("div", _hoisted_4$9, [
5616
+ createElementVNode("div", _hoisted_4$a, [
4999
5617
  createVNode(_component_nut_button, {
5000
5618
  class: "cancel-button",
5001
5619
  onClick: _cache[0] || (_cache[0] = ($event) => emit("update:modelValue", false)),
@@ -5012,7 +5630,7 @@ var script$s = /* @__PURE__ */ defineComponent({
5012
5630
  /* STABLE */
5013
5631
  })
5014
5632
  ]),
5015
- createElementVNode("div", _hoisted_5$8, [
5633
+ createElementVNode("div", _hoisted_5$9, [
5016
5634
  withDirectives((openBlock(), createBlock(_component_nut_button, {
5017
5635
  block: "",
5018
5636
  class: "recharge-button",
@@ -5150,8 +5768,8 @@ script$r.__file = "src/balance/components/DateRange.vue";
5150
5768
  const _hoisted_1$n = { class: "list-filter-picker" };
5151
5769
  const _hoisted_2$i = { class: "list-filter-picker-content" };
5152
5770
  const _hoisted_3$c = { class: "title" };
5153
- const _hoisted_4$8 = { class: "info" };
5154
- const _hoisted_5$7 = ["onClick"];
5771
+ const _hoisted_4$9 = { class: "info" };
5772
+ const _hoisted_5$8 = ["onClick"];
5155
5773
  const _hoisted_6$5 = { class: "list-filter-picker-btn spa-between" };
5156
5774
  var script$q = /* @__PURE__ */ defineComponent({
5157
5775
  __name: "ListFilterPicker",
@@ -5228,7 +5846,7 @@ var script$q = /* @__PURE__ */ defineComponent({
5228
5846
  1
5229
5847
  /* TEXT */
5230
5848
  ),
5231
- createElementVNode("div", _hoisted_4$8, [
5849
+ createElementVNode("div", _hoisted_4$9, [
5232
5850
  (openBlock(true), createElementBlock(
5233
5851
  Fragment,
5234
5852
  null,
@@ -5237,7 +5855,7 @@ var script$q = /* @__PURE__ */ defineComponent({
5237
5855
  onClick: () => onFilterSectionClick(item.name, it.value),
5238
5856
  class: normalizeClass([getItemClass(item.name, it.value), "info-item"]),
5239
5857
  key: i
5240
- }, toDisplayString(typeof it === "string" ? it : it.label), 11, _hoisted_5$7);
5858
+ }, toDisplayString(typeof it === "string" ? it : it.label), 11, _hoisted_5$8);
5241
5859
  }),
5242
5860
  128
5243
5861
  /* KEYED_FRAGMENT */
@@ -5353,8 +5971,8 @@ const _hoisted_1$m = {
5353
5971
  };
5354
5972
  const _hoisted_2$h = { class: "promoter-card-hd-num number" };
5355
5973
  const _hoisted_3$b = ["src"];
5356
- const _hoisted_4$7 = { class: "promoter-card-ft" };
5357
- const _hoisted_5$6 = {
5974
+ const _hoisted_4$8 = { class: "promoter-card-ft" };
5975
+ const _hoisted_5$7 = {
5358
5976
  key: 0,
5359
5977
  class: "promoter-card-ft-item"
5360
5978
  };
@@ -5450,6 +6068,7 @@ var script$o = /* @__PURE__ */ defineComponent({
5450
6068
  showModal({
5451
6069
  content: toastMap[type],
5452
6070
  showCancel: false,
6071
+ confirmColor: "#017fff",
5453
6072
  confirmText: "\u77E5\u9053\u4E86"
5454
6073
  });
5455
6074
  }
@@ -5512,8 +6131,8 @@ var script$o = /* @__PURE__ */ defineComponent({
5512
6131
  ])), [
5513
6132
  [_directive_track_click]
5514
6133
  ]) : createCommentVNode("v-if", true),
5515
- createElementVNode("div", _hoisted_4$7, [
5516
- __props.applyRecord.accessCheckStatus === "Y" ? (openBlock(), createElementBlock("div", _hoisted_5$6, [
6134
+ createElementVNode("div", _hoisted_4$8, [
6135
+ __props.applyRecord.accessCheckStatus === "Y" ? (openBlock(), createElementBlock("div", _hoisted_5$7, [
5517
6136
  __props.\u663E\u793A\u4E0B\u7EA7\u5206\u9500\u5546 ? (openBlock(), createElementBlock(
5518
6137
  Fragment,
5519
6138
  { key: 0 },
@@ -5955,8 +6574,8 @@ script$l.__file = "src/components/dd-selector/index.vue";
5955
6574
  const _hoisted_1$j = { class: "self-registration" };
5956
6575
  const _hoisted_2$f = { class: "self-registration-body" };
5957
6576
  const _hoisted_3$a = ["src"];
5958
- const _hoisted_4$6 = { class: "self-registration__input" };
5959
- const _hoisted_5$5 = { class: "self-registration-bottom" };
6577
+ const _hoisted_4$7 = { class: "self-registration__input" };
6578
+ const _hoisted_5$6 = { class: "self-registration-bottom" };
5960
6579
  var script$k = /* @__PURE__ */ defineComponent({
5961
6580
  __name: "SelfRegistration",
5962
6581
  props: {
@@ -6116,7 +6735,7 @@ var script$k = /* @__PURE__ */ defineComponent({
6116
6735
  required: ""
6117
6736
  }, {
6118
6737
  default: withCtx(() => [
6119
- createElementVNode("div", _hoisted_4$6, [
6738
+ createElementVNode("div", _hoisted_4$7, [
6120
6739
  withDirectives(createElementVNode(
6121
6740
  "input",
6122
6741
  {
@@ -6132,7 +6751,10 @@ var script$k = /* @__PURE__ */ defineComponent({
6132
6751
  ), [
6133
6752
  [vModelText, formState.name]
6134
6753
  ]),
6135
- createVNode(script$G, { onComplete: onOCRInfo }, {
6754
+ createVNode(script$I, {
6755
+ "has-upload-vo": false,
6756
+ onComplete: onOCRInfo
6757
+ }, {
6136
6758
  icon: withCtx(() => [..._cache[9] || (_cache[9] = [
6137
6759
  createElementVNode(
6138
6760
  "img",
@@ -6267,7 +6889,7 @@ var script$k = /* @__PURE__ */ defineComponent({
6267
6889
  /* STABLE */
6268
6890
  })
6269
6891
  ]),
6270
- createElementVNode("div", _hoisted_5$5, [
6892
+ createElementVNode("div", _hoisted_5$6, [
6271
6893
  withDirectives((openBlock(), createBlock(_component_nut_button, {
6272
6894
  block: "",
6273
6895
  type: "primary",
@@ -6703,7 +7325,7 @@ var script$i = /* @__PURE__ */ defineComponent({
6703
7325
  Fragment,
6704
7326
  null,
6705
7327
  renderList(bannerMessages.value, (item, key) => {
6706
- return withDirectives((openBlock(), createBlock(script$I, {
7328
+ return withDirectives((openBlock(), createBlock(script$K, {
6707
7329
  class: normalizeClass({ show: key === activeKey.value }),
6708
7330
  key,
6709
7331
  showClose: item.noticeType === 0,
@@ -6974,7 +7596,8 @@ function useCommonList(api, query, loading = true, method = "GET") {
6974
7596
  const isLoading = ref(false);
6975
7597
  async function fetchData(loading2) {
6976
7598
  loading2 && showLoading({
6977
- title: "\u52A0\u8F7D\u4E2D..."
7599
+ title: "\u52A0\u8F7D\u4E2D...",
7600
+ mask: true
6978
7601
  });
6979
7602
  isLoading.value = true;
6980
7603
  const $http = useHttp$1();
@@ -7031,8 +7654,8 @@ const _hoisted_3$7 = {
7031
7654
  key: 0,
7032
7655
  class: "wrapper"
7033
7656
  };
7034
- const _hoisted_4$5 = ["onClick"];
7035
- const _hoisted_5$4 = { class: "time" };
7657
+ const _hoisted_4$6 = ["onClick"];
7658
+ const _hoisted_5$5 = { class: "time" };
7036
7659
  const _hoisted_6$3 = {
7037
7660
  key: 0,
7038
7661
  class: "notice-list-label"
@@ -7165,7 +7788,7 @@ var script$f = /* @__PURE__ */ defineComponent({
7165
7788
  createElementVNode("div", null, [
7166
7789
  createElementVNode(
7167
7790
  "div",
7168
- _hoisted_5$4,
7791
+ _hoisted_5$5,
7169
7792
  toDisplayString(formatMinutes(item.receiveTime)),
7170
7793
  1
7171
7794
  /* TEXT */
@@ -7222,7 +7845,7 @@ var script$f = /* @__PURE__ */ defineComponent({
7222
7845
  /* CLASS */
7223
7846
  )
7224
7847
  ])
7225
- ], 10, _hoisted_4$5)), [
7848
+ ], 10, _hoisted_4$6)), [
7226
7849
  [_directive_track_click, "\u6D88\u606F\u8BE6\u60C5"]
7227
7850
  ]);
7228
7851
  }),
@@ -7264,16 +7887,21 @@ var script$f = /* @__PURE__ */ defineComponent({
7264
7887
 
7265
7888
  script$f.__file = "src/notice/components/NoticeList.vue";
7266
7889
 
7267
- const _hoisted_1$d = {
7890
+ const _hoisted_1$d = ["onClick"];
7891
+ const _hoisted_2$9 = {
7892
+ key: 0,
7893
+ class: "custom-title-dot"
7894
+ };
7895
+ const _hoisted_3$6 = {
7268
7896
  key: 0,
7269
7897
  class: "read-all"
7270
7898
  };
7271
- const _hoisted_2$9 = {
7899
+ const _hoisted_4$5 = {
7272
7900
  key: 0,
7273
7901
  class: "news-item-title-icon",
7274
- src: "https://cdn.ddjf.com/static/images/loan-manage-app/ic_msg_system_notice.webp"
7902
+ src: "https://cdn.ddjf.com/static/images/fnfundkit/ic_msg_system_notice.png"
7275
7903
  };
7276
- const _hoisted_3$6 = { class: "news-item-time" };
7904
+ const _hoisted_5$4 = { class: "news-item-time" };
7277
7905
  var script$e = /* @__PURE__ */ defineComponent({
7278
7906
  __name: "NoticeList2",
7279
7907
  props: {
@@ -7284,9 +7912,28 @@ var script$e = /* @__PURE__ */ defineComponent({
7284
7912
  emits: ["itemClick"],
7285
7913
  setup(__props, { expose: __expose, emit: __emit }) {
7286
7914
  const props = __props;
7915
+ const tabList = ref([
7916
+ {
7917
+ label: "\u5168\u90E8",
7918
+ value: "\u5168\u90E8"
7919
+ },
7920
+ {
7921
+ label: "\u4E1A\u52A1\u6D88\u606F",
7922
+ value: "\u4E1A\u52A1\u6D88\u606F"
7923
+ },
7924
+ {
7925
+ label: "\u7CFB\u7EDF\u516C\u544A",
7926
+ value: "\u7CFB\u7EDF\u516C\u544A"
7927
+ },
7928
+ {
7929
+ label: "\u672A\u8BFB",
7930
+ value: "\u672A\u8BFB"
7931
+ }
7932
+ ]);
7287
7933
  const $http = useHttp$1(), \u663E\u793A\u9AA8\u67B6\u5C4F = ref(true);
7288
7934
  useDidShow(() => {
7289
7935
  nextPage(1);
7936
+ getNotice();
7290
7937
  });
7291
7938
  const state = reactive({
7292
7939
  search: "",
@@ -7339,6 +7986,7 @@ var script$e = /* @__PURE__ */ defineComponent({
7339
7986
  }
7340
7987
  function itemClick(item) {
7341
7988
  read(item);
7989
+ getNotice();
7342
7990
  emits("itemClick", item);
7343
7991
  }
7344
7992
  function read(item) {
@@ -7351,7 +7999,8 @@ var script$e = /* @__PURE__ */ defineComponent({
7351
7999
  async function readAll() {
7352
8000
  try {
7353
8001
  showLoading({
7354
- title: "\u8BF7\u7A0D\u540E..."
8002
+ title: "\u8BF7\u7A0D\u540E...",
8003
+ mask: true
7355
8004
  });
7356
8005
  const appkitOptions = useAppKitOptions();
7357
8006
  const ep = endpoints["\u5168\u90E8\u5DF2\u8BFB"];
@@ -7366,9 +8015,26 @@ var script$e = /* @__PURE__ */ defineComponent({
7366
8015
  });
7367
8016
  });
7368
8017
  } finally {
8018
+ setTimeout(() => {
8019
+ getNotice();
8020
+ }, 300);
7369
8021
  hideLoading();
7370
8022
  }
7371
8023
  }
8024
+ const noticeShow = ref(false);
8025
+ async function getNotice() {
8026
+ const appkitOptions = useAppKitOptions();
8027
+ const $http2 = useHttp$1();
8028
+ $http2.get("/cas/msg/count-unread", {
8029
+ deviceType: 2,
8030
+ appCode: props.app,
8031
+ tenantId: appkitOptions.tenant(),
8032
+ userId: props.userId
8033
+ }).then((result) => {
8034
+ if (typeof result === "object") return;
8035
+ noticeShow.value = result > 0;
8036
+ });
8037
+ }
7372
8038
  const emits = __emit;
7373
8039
  __expose({
7374
8040
  readAll
@@ -7384,7 +8050,7 @@ var script$e = /* @__PURE__ */ defineComponent({
7384
8050
  class: normalizeClass(["tabContainer", { inH5: unref(isWeb)() }])
7385
8051
  },
7386
8052
  [
7387
- createCommentVNode(' <ns-search\n v-track-search="{\n trackInput: false,\n trackSubmit: true,\n minLength: 2,\n }"\n style="margin: 0 12px"\n placeholder="\u8BF7\u8F93\u5165\u5173\u952E\u5B57\u641C\u7D22"\n v-model="state.search"\n ></ns-search> '),
8053
+ 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> '),
7388
8054
  createVNode(unref(NsTabs), {
7389
8055
  modelValue: state.tab,
7390
8056
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => state.tab = $event),
@@ -7392,30 +8058,50 @@ var script$e = /* @__PURE__ */ defineComponent({
7392
8058
  square: "",
7393
8059
  size: "xl",
7394
8060
  style: { "height": "46px" },
7395
- onChange: onTabChange
8061
+ class: "news-tab",
8062
+ items: tabList.value
7396
8063
  }, {
7397
- default: withCtx(() => [
7398
- createVNode(unref(NsTabsItem), {
7399
- key: "\u5168\u90E8",
7400
- tab: "\u5168\u90E8"
7401
- }),
7402
- createVNode(unref(NsTabsItem), {
7403
- key: "\u4E1A\u52A1\u6D88\u606F",
7404
- tab: "\u4E1A\u52A1\u6D88\u606F"
7405
- }),
7406
- createVNode(unref(NsTabsItem), {
7407
- key: "\u7CFB\u7EDF\u516C\u544A",
7408
- tab: "\u7CFB\u7EDF\u516C\u544A"
7409
- }),
7410
- createVNode(unref(NsTabsItem), {
7411
- key: "\u672A\u8BFB",
7412
- tab: "\u672A\u8BFB"
7413
- })
8064
+ titles: withCtx(() => [
8065
+ (openBlock(true), createElementBlock(
8066
+ Fragment,
8067
+ null,
8068
+ renderList(tabList.value, (item) => {
8069
+ return openBlock(), createElementBlock("div", {
8070
+ class: normalizeClass([{ customLine: state.tab === item.value }, "nut-tabs__titles-item custom-tab-item"]),
8071
+ key: item.value,
8072
+ onClick: ($event) => {
8073
+ state.tab = item.value;
8074
+ onTabChange();
8075
+ }
8076
+ }, [
8077
+ createElementVNode(
8078
+ "div",
8079
+ {
8080
+ class: normalizeClass(["custom-title", { active: state.tab === item.value }])
8081
+ },
8082
+ [
8083
+ createElementVNode(
8084
+ "div",
8085
+ null,
8086
+ toDisplayString(item.label),
8087
+ 1
8088
+ /* TEXT */
8089
+ ),
8090
+ item.value === "\u672A\u8BFB" && noticeShow.value ? (openBlock(), createElementBlock("div", _hoisted_2$9, " \u2022\u2022\u2022 ")) : createCommentVNode("v-if", true)
8091
+ ],
8092
+ 2
8093
+ /* CLASS */
8094
+ )
8095
+ ], 10, _hoisted_1$d);
8096
+ }),
8097
+ 128
8098
+ /* KEYED_FRAGMENT */
8099
+ ))
7414
8100
  ]),
7415
8101
  _: 1
7416
8102
  /* STABLE */
7417
- }, 8, ["modelValue"]),
7418
- state.list.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_1$d, [
8103
+ }, 8, ["modelValue", "items"]),
8104
+ state.list.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_3$6, [
7419
8105
  withDirectives((openBlock(), createElementBlock("div", {
7420
8106
  class: "btn",
7421
8107
  onClick: readAll
@@ -7472,7 +8158,7 @@ var script$e = /* @__PURE__ */ defineComponent({
7472
8158
  class: "news-item-title"
7473
8159
  },
7474
8160
  [
7475
- item.\u662F\u516C\u544A ? (openBlock(), createElementBlock("img", _hoisted_2$9)) : createCommentVNode("v-if", true),
8161
+ item.\u662F\u516C\u544A ? (openBlock(), createElementBlock("img", _hoisted_4$5)) : createCommentVNode("v-if", true),
7476
8162
  createTextVNode(
7477
8163
  " " + toDisplayString(item.\u6807\u9898),
7478
8164
  1
@@ -7493,7 +8179,7 @@ var script$e = /* @__PURE__ */ defineComponent({
7493
8179
  }, null, 8, ["style", "content"]),
7494
8180
  createElementVNode(
7495
8181
  "div",
7496
- _hoisted_3$6,
8182
+ _hoisted_5$4,
7497
8183
  toDisplayString(item.\u65F6\u95F4),
7498
8184
  1
7499
8185
  /* TEXT */
@@ -7950,7 +8636,8 @@ var script$b = /* @__PURE__ */ defineComponent({
7950
8636
  }
7951
8637
  async function updateImage(filePath) {
7952
8638
  showLoading({
7953
- title: "\u4E0A\u4F20\u4E2D..."
8639
+ title: "\u4E0A\u4F20\u4E2D...",
8640
+ mask: true
7954
8641
  });
7955
8642
  const appkitOptions = useAppKitOptions();
7956
8643
  const $http = useHttp();
@@ -8063,6 +8750,7 @@ var script$b = /* @__PURE__ */ defineComponent({
8063
8750
  title: "\u63D0\u793A",
8064
8751
  content: "\u786E\u5B9A\u8981\u9000\u51FA\u767B\u5F55\u5417\uFF1F",
8065
8752
  confirmText: "\u786E\u5B9A",
8753
+ confirmColor: "#017fff",
8066
8754
  success: async (e) => {
8067
8755
  if (e.confirm) {
8068
8756
  emits("logout");
@@ -9926,7 +10614,8 @@ var script$6 = /* @__PURE__ */ defineComponent({
9926
10614
  const $http = useHttp();
9927
10615
  const appkitOptions = useAppKitOptions();
9928
10616
  showLoading({
9929
- title: "\u53CD\u9988\u4E2D..."
10617
+ title: "\u53CD\u9988\u4E2D...",
10618
+ mask: true
9930
10619
  });
9931
10620
  const attachment = JSON.parse(
9932
10621
  JSON.stringify(
@@ -10636,8 +11325,9 @@ var script$2 = /* @__PURE__ */ defineComponent({
10636
11325
  rules: ["required"]
10637
11326
  }, {
10638
11327
  append: withCtx(() => [
10639
- !\u5DF2\u8BA4\u8BC1.value ? (openBlock(), createBlock(unref(script$G), {
11328
+ !\u5DF2\u8BA4\u8BC1.value ? (openBlock(), createBlock(unref(script$I), {
10640
11329
  key: 0,
11330
+ "has-upload-vo": false,
10641
11331
  onComplete: onOcrComplete
10642
11332
  })) : createCommentVNode("v-if", true)
10643
11333
  ]),
@@ -11246,4 +11936,4 @@ const AppKit = {
11246
11936
  }
11247
11937
  };
11248
11938
 
11249
- 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 };
11939
+ 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 };