fstarter 2.10.56 → 2.10.57

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 (93) hide show
  1. package/.babelrc +6 -6
  2. package/.editorconfig +9 -9
  3. package/index.html +22 -22
  4. package/index.js +222 -222
  5. package/package.json +104 -104
  6. package/src/App.vue +38 -38
  7. package/src/i18n/en-US.js +35 -35
  8. package/src/i18n/zh-CN.js +35 -35
  9. package/src/main.js +95 -95
  10. package/src/plugins/assets/ak.js +948 -948
  11. package/src/plugins/assets/callNative.js +490 -490
  12. package/src/plugins/assets/compressImg.js +75 -75
  13. package/src/plugins/assets/config.js +106 -106
  14. package/src/plugins/assets/fileServer.js +469 -469
  15. package/src/plugins/assets/http.js +344 -344
  16. package/src/plugins/assets/ua.js +27 -27
  17. package/src/plugins/components/BSButton.vue +61 -61
  18. package/src/plugins/components/BSCascader.vue +465 -465
  19. package/src/plugins/components/BSCell.vue +48 -48
  20. package/src/plugins/components/BSDatePicker.vue +167 -167
  21. package/src/plugins/components/BSImage.vue +42 -42
  22. package/src/plugins/components/BSInput.vue +140 -140
  23. package/src/plugins/components/BSList.vue +81 -81
  24. package/src/plugins/components/BSPicCode.vue +96 -96
  25. package/src/plugins/components/BSPopup.vue +43 -43
  26. package/src/plugins/components/BSRadio.vue +97 -97
  27. package/src/plugins/components/BSSearch.vue +109 -109
  28. package/src/plugins/components/BSSelect.vue +144 -144
  29. package/src/plugins/components/BSSign.vue +454 -454
  30. package/src/plugins/components/BSStepper.vue +115 -115
  31. package/src/plugins/components/BSUpload.vue +92 -92
  32. package/src/plugins/components/BSUpload2.vue +397 -397
  33. package/src/plugins/components/BSVerCode.vue +128 -128
  34. package/src/plugins/components/BSViewer.vue +92 -92
  35. package/src/plugins/components/base.js +496 -496
  36. package/src/plugins/components/base2.js +489 -489
  37. package/src/plugins/lib/weixin.js +20 -20
  38. package/src/plugins/platform/index.js +7 -7
  39. package/src/plugins/platform/isp_phone.js +310 -310
  40. package/src/plugins/plugins/README.md +560 -0
  41. package/src/plugins/plugins/browserUtils.js +925 -0
  42. package/src/plugins/plugins/components/imageCropper.vue +299 -0
  43. package/src/plugins/plugins/components/images/bz.png +0 -0
  44. package/src/plugins/plugins/components/images/correct.png +0 -0
  45. package/src/plugins/plugins/components/images/error.png +0 -0
  46. package/src/plugins/plugins/components/images/mohu.png +0 -0
  47. package/src/plugins/plugins/components/images/qs.png +0 -0
  48. package/src/plugins/plugins/components/images/zd.png +0 -0
  49. package/src/plugins/plugins/components/pdfPreview.vue +688 -0
  50. package/src/plugins/plugins/demo.vue +832 -0
  51. package/src/plugins/plugins/native-js-sdk.js +360 -0
  52. package/src/plugins/plugins/nativeUtils.js +1444 -0
  53. package/src/plugins/route/index.js +140 -140
  54. package/src/plugins/selector/index.js +342 -342
  55. package/src/plugins/service/index.js +81 -81
  56. package/src/plugins/services/callCamera.js +53 -53
  57. package/src/plugins/services/exit.js +37 -36
  58. package/src/plugins/services/face.js +69 -69
  59. package/src/plugins/services/faceH5.js +54 -54
  60. package/src/plugins/services/faceInApp.js +31 -31
  61. package/src/plugins/services/faceTx.js +61 -61
  62. package/src/plugins/services/getFaceResult.js +104 -104
  63. package/src/plugins/services/getH5FaceResult.js +62 -62
  64. package/src/plugins/services/getMenus.js +40 -40
  65. package/src/plugins/services/getSystemData.js +144 -128
  66. package/src/plugins/services/getToken.js +93 -79
  67. package/src/plugins/services/getTxFaceResult.js +83 -83
  68. package/src/plugins/services/getUserInfo.js +47 -47
  69. package/src/plugins/services/goSetPage.js +40 -40
  70. package/src/plugins/services/hideFhoneTitle.js +36 -36
  71. package/src/plugins/services/index.js +45 -45
  72. package/src/plugins/services/init.js +35 -35
  73. package/src/plugins/services/jumpView.js +42 -40
  74. package/src/plugins/services/logout.js +44 -43
  75. package/src/plugins/services/share.js +113 -113
  76. package/src/plugins/services/statusBarHeight.js +39 -39
  77. package/src/plugins/session/index.js +32 -32
  78. package/src/services/getAuthInfo.js +22 -22
  79. package/src/services/index.js +9 -9
  80. package/src/services/sendVerCode.js +23 -23
  81. package/src/views/auth.vue +367 -367
  82. package/src/views/auth2.vue +90 -90
  83. package/src/views/auth3.vue +157 -157
  84. package/src/views/auth4.vue +8979 -8979
  85. package/src/views/auth5.vue +50 -50
  86. package/src/views/authh5.vue +369 -369
  87. package/src/views/components/BankSelect.vue +55 -55
  88. package/src/views/foot.vue +140 -140
  89. package/src/views/page.vue +222 -222
  90. package/src/views/shellFunc.vue +41 -41
  91. package/themes/basic.css +1 -1
  92. package/webpack.config.js +144 -144
  93. package/fstarter.iml +0 -9
@@ -0,0 +1,832 @@
1
+ <template>
2
+ <div class="demo-container">
3
+ <van-nav-bar title="Native Utils Demo" fixed />
4
+
5
+ <div class="content">
6
+ <van-cell-group title="用户信息管理">
7
+ <van-cell title="设置用户信息" is-link @click="handleSetUserInfo" />
8
+ <van-cell title="获取用户信息" is-link @click="handleGetUserInfo" />
9
+ <van-cell title="清空用户信息" is-link @click="handleClearUserInfo" />
10
+ </van-cell-group>
11
+
12
+ <van-cell-group title="分享功能">
13
+ <van-cell title="微信分享" is-link @click="handleShare" />
14
+ <van-cell title="微信分享-图片" is-link @click="handleShare1" />
15
+ <van-cell title="微信分享-文字" is-link @click="handleShare2" />
16
+ <van-cell title="微信分享-文件" is-link @click="handleShare3" />
17
+ </van-cell-group>
18
+
19
+ <van-cell-group title="登录认证">
20
+ <van-cell title="微信登录" is-link @click="handleWechatLogin" />
21
+ </van-cell-group>
22
+
23
+ <van-cell-group title="系统功能">
24
+ <van-cell title="打开系统浏览器" is-link @click="handleOpenSystemBrowser" />
25
+ <van-cell title="截屏" is-link @click="handleScreenshot" />
26
+ <van-cell title="设置屏幕方向" is-link @click="handleSetScreenOrientation" />
27
+ </van-cell-group>
28
+
29
+ <van-cell-group title="应用间交互">
30
+ <van-cell title="唤起其他APP" is-link @click="handleLaunchApp" />
31
+ <van-cell title="设置返回拦截" is-link @click="handleSetBackInterceptor" />
32
+ </van-cell-group>
33
+
34
+ <van-cell-group title="页面导航">
35
+ <van-cell title="页面重定向" is-link @click="handleRedirectTo" />
36
+ <van-cell title="打开新页面" is-link @click="handleOpenPage" />
37
+ <van-cell title="关闭当前页面" is-link @click="handleClosePage" />
38
+ <van-cell title="隐藏原生标题栏" is-link @click="handleSetNavigationBarVisible" />
39
+ </van-cell-group>
40
+
41
+ <van-cell-group title="人脸识别">
42
+ <van-cell title="前往人脸识别" is-link @click="handleGoCheckFace" />
43
+ <van-cell title="检测人脸识别结果" is-link @click="handleCheckFace" />
44
+ </van-cell-group>
45
+
46
+ <van-cell-group title="设备功能">
47
+ <van-cell title="扫码" is-link @click="handleScanQRCode" />
48
+ <van-cell title="拨打电话" is-link @click="handleCallPhone" />
49
+ <van-cell title="发送短信" is-link @click="handleSendSMS" />
50
+ <van-cell title="唤起通讯录" is-link @click="handleReadContacts" />
51
+ </van-cell-group>
52
+
53
+ <van-cell-group title="媒体功能">
54
+ <van-cell title="调起壳拍照" is-link @click="handleTakePhoto" />
55
+ <img :src="img1" alt="" style="width: 50px;height: 100px;" v-show="img1">
56
+ <van-cell title="调起壳相册" is-link @click="handleChooseImage" />
57
+ <img :src="img2" alt="" style="width: 50px;height: 100px;" v-show="img2" >
58
+ <van-cell title="调起相机和相册" is-link @click="handleTakePicture" />
59
+ <van-uploader
60
+ accept=".pdf"
61
+ :after-read="afterRead"
62
+ >
63
+ <van-cell title="上传pdf示例" is-link @click="handleTakePdf" />
64
+ </van-uploader>
65
+ </van-cell-group>
66
+
67
+ <van-cell-group title="文件处理">
68
+ <van-cell title="PDF阅读1个" is-link @click="handlePdfRead" />
69
+ <van-cell title="PDF阅读多个" is-link @click="handlePdfRead1" />
70
+ <van-cell title="PDF阅读带倒计时" is-link @click="handlePdfRead2" />
71
+ </van-cell-group>
72
+
73
+ <van-cell-group title="数据存储">
74
+ <van-cell title="持久化存储" is-link @click="handleSetItem" />
75
+ <van-cell title="获取持久化存储" is-link @click="handleGetItem" />
76
+ <van-cell title="删除持久化存储" is-link @click="handleRemoveItem" />
77
+ </van-cell-group>
78
+
79
+ <van-cell-group title="工具功能">
80
+ <van-cell title="Toast提示" is-link @click="handleToast" />
81
+ <van-cell title="添加日历事件" is-link @click="handleAddCalendarEvent" />
82
+ <van-cell title="数据加密" is-link @click="handleEncrypt" />
83
+ </van-cell-group>
84
+
85
+ <van-cell-group title="位置服务">
86
+ <van-cell title="获取位置信息" is-link @click="handleGetLocation" />
87
+ </van-cell-group>
88
+
89
+ <van-cell-group title="缓存管理">
90
+ <van-cell title="获取缓存大小" is-link @click="handleGetCacheSize" />
91
+ <van-cell title="清除缓存" is-link @click="handleClearCache" />
92
+ <van-cell title="获取设备信息" is-link @click="handleGetDeviceInfo" />
93
+ </van-cell-group>
94
+ </div>
95
+ </div>
96
+ </template>
97
+
98
+ <script>
99
+ import Vue from 'vue';
100
+ import {
101
+ NavBar,
102
+ Cell,
103
+ CellGroup,
104
+ Toast,
105
+ Dialog,
106
+ Uploader
107
+ } from 'vant';
108
+
109
+ Vue.use(NavBar);
110
+ Vue.use(Cell);
111
+ Vue.use(CellGroup);
112
+ Vue.use(Toast);
113
+ Vue.use(Dialog);
114
+ Vue.use(Uploader);
115
+
116
+ import axios from 'axios'
117
+ import nativeUtils from './nativeUtils'
118
+
119
+
120
+
121
+ export default {
122
+ name: 'NativeUtilsDemo',
123
+ data() {
124
+ return {
125
+ // 示例数据
126
+ testUserInfo: {
127
+ userId: '123456',
128
+ userName: 'Test User',
129
+ mobile: '13800138000'
130
+ },
131
+ img1: '',
132
+ img2: '',
133
+ };
134
+ },
135
+ methods: {
136
+ // 用户信息管理
137
+ handleSetUserInfo() {
138
+ this.$native.setUserInfo(this.testUserInfo)
139
+ .then(res => {
140
+ Toast.success('设置用户信息成功');
141
+ console.log('设置用户信息结果:', res);
142
+ })
143
+ .catch(err => {
144
+ Toast.fail('设置用户信息失败: ' + err.message);
145
+ });
146
+ },
147
+
148
+ handleGetUserInfo() {
149
+ this.$native.getUserInfo()
150
+ .then(userInfo => {
151
+ Toast.success('获取用户信息成功');
152
+ console.log('用户信息:', userInfo);
153
+ Dialog.alert({
154
+ title: '用户信息',
155
+ message: JSON.stringify(userInfo, null, 2)
156
+ });
157
+ })
158
+ .catch(err => {
159
+ Toast.fail('获取用户信息失败: ' + err.message);
160
+ });
161
+ },
162
+
163
+ handleClearUserInfo() {
164
+ this.$native.clearUserInfo()
165
+ .then(() => {
166
+ Toast.success('清空用户信息成功');
167
+ })
168
+ .catch(err => {
169
+ Toast.fail('清空用户信息失败: ' + err.message);
170
+ });
171
+ },
172
+
173
+ // 分享功能
174
+ handleShare() {
175
+ const shareConfig = {
176
+ type: 'webpage',
177
+ scene: 'session',
178
+ content: {
179
+ title: '恒安标准人寿',
180
+ description: '恒安标准人寿官网描述',
181
+ webpageUrl: 'https://www.hengansl.com/',
182
+ thumb: ''
183
+ }
184
+ };
185
+
186
+ this.$native.share(shareConfig)
187
+ .then(res => {
188
+ Toast.success('分享成功');
189
+ console.log('分享结果:', res);
190
+ })
191
+ .catch(err => {
192
+ Toast.fail('分享失败: ' + err.message);
193
+ });
194
+ },
195
+ handleShare1() {
196
+ const shareConfig = {
197
+ type: 'image',
198
+ scene: 'session',
199
+ content: {
200
+ image: 'https://www.hengansl.com/hengan/imageDir/2023/09/img_pc_site/2023092110340623410.jpg' // 替换为实际的图片链接
201
+ }
202
+ };
203
+
204
+ this.$native.share(shareConfig)
205
+ .then(res => {
206
+ Toast.success('分享成功');
207
+ console.log('分享结果:', res);
208
+ })
209
+ .catch(err => {
210
+ Toast.fail('分享失败: ' + err.message);
211
+ });
212
+ },
213
+ handleShare2() {
214
+ const shareConfig = {
215
+ type: 'text',
216
+ scene: 'session',
217
+ content: {
218
+ text: '这是一个文本分享示例'
219
+ }
220
+ };
221
+
222
+ this.$native.share(shareConfig)
223
+ .then(res => {
224
+ Toast.success('分享成功');
225
+ console.log('分享结果:', res);
226
+ })
227
+ .catch(err => {
228
+ Toast.fail('分享失败: ' + err.message);
229
+ });
230
+ },
231
+
232
+ handleShare3() {
233
+ const shareConfig = {
234
+ type: 'file',
235
+ scene: 'session',
236
+ content: {
237
+ type: 'pdf', // 替换为实际的文件类型
238
+ title: 'PDF文件分享示例', // 替换为实际的PDF文件标题
239
+ url: 'https://teststatic.ihasl.com/pages/salessupport/app/iamges/pdf/hastar.pdf'
240
+ }
241
+ };
242
+
243
+ this.$native.share(shareConfig)
244
+ .then(res => {
245
+ Toast.success('分享成功');
246
+ console.log('分享结果:', res);
247
+ })
248
+ .catch(err => {
249
+ Toast.fail('分享失败: ' + err.message);
250
+ });
251
+ },
252
+
253
+ // 登录认证
254
+ handleWechatLogin() {
255
+ this.$native.wechatLogin()
256
+ .then(result => {
257
+ Toast.success('微信登录成功');
258
+ console.log('微信登录结果:', result);
259
+ })
260
+ .catch(err => {
261
+ Toast.fail('微信登录失败: ' + err.message);
262
+ });
263
+ },
264
+
265
+ // 系统功能
266
+ handleOpenSystemBrowser() {
267
+ const url = 'https://www.hengansl.com/';
268
+ this.$native.openSystemBrowser(url)
269
+ .then(() => {
270
+ Toast.success('已打开系统浏览器');
271
+ })
272
+ .catch(err => {
273
+ Toast.fail('打开系统浏览器失败: ' + err.message);
274
+ });
275
+ },
276
+
277
+ handleScreenshot() {
278
+ this.$native.screenshot()
279
+ .then(imageData => {
280
+ Toast.success('截屏成功');
281
+ console.log('截屏数据:', imageData);
282
+ })
283
+ .catch(err => {
284
+ Toast.fail('截屏失败: ' + err.message);
285
+ });
286
+ },
287
+
288
+ handleSetScreenOrientation() {
289
+ Dialog.confirm({
290
+ title: '设置屏幕方向',
291
+ message: '请选择屏幕方向',
292
+ confirmButtonText: '竖屏',
293
+ cancelButtonText: '横屏'
294
+ }).then(() => {
295
+ // 设置为竖屏
296
+ this.$native.setScreenOrientation('portrait')
297
+ .then(() => {
298
+ Toast.success('已设置为竖屏');
299
+ })
300
+ .catch(err => {
301
+ Toast.fail('设置屏幕方向失败: ' + err.message);
302
+ });
303
+ }).catch(() => {
304
+ // 设置为横屏
305
+ this.$native.setScreenOrientation('landscape')
306
+ .then(() => {
307
+ Toast.success('已设置为横屏');
308
+ })
309
+ .catch(err => {
310
+ Toast.fail('设置屏幕方向失败: ' + err.message);
311
+ });
312
+ });
313
+ },
314
+
315
+ // 应用间交互
316
+ handleLaunchApp() {
317
+ // 示例配置,实际使用时需要根据目标APP调整
318
+ const config = {
319
+ packageName: 'wxa029bbfb66ba0ce0://', // 这是e行的
320
+ params: {
321
+ key1: 'value1',
322
+ key2: 'value2'
323
+ },
324
+ fallbackUrl: 'https://www.hengansl.com/' // 备用 H5 地址
325
+ };
326
+
327
+ this.$native.launchApp(config)
328
+ .then(() => {
329
+ Toast.success('已尝试唤起APP');
330
+ })
331
+ .catch(err => {
332
+ Toast.fail('唤起APP失败: ' + err.message);
333
+ });
334
+ },
335
+
336
+ handleSetBackInterceptor() {
337
+ Dialog.confirm({
338
+ title: '设置返回拦截',
339
+ message: '是否启用返回拦截?',
340
+ confirmButtonText: '启用',
341
+ cancelButtonText: '禁用'
342
+ }).then(() => {
343
+ // 启用返回拦截
344
+ this.$native.setBackInterceptor(true)
345
+ .then(() => {
346
+ Toast.success('已启用返回拦截');
347
+ })
348
+ .catch(err => {
349
+ Toast.fail('设置返回拦截失败: ' + err.message);
350
+ });
351
+ }).catch(() => {
352
+ // 禁用返回拦截
353
+ this.$native.setBackInterceptor(false)
354
+ .then(() => {
355
+ Toast.success('已禁用返回拦截');
356
+ })
357
+ .catch(err => {
358
+ Toast.fail('设置返回拦截失败: ' + err.message);
359
+ });
360
+ });
361
+ },
362
+
363
+ // 页面导航
364
+ handleRedirectTo() {
365
+ const url = 'https://www.hengansl.com/';
366
+ this.$native.redirectTo(url)
367
+ .then(() => {
368
+ Toast.success('页面重定向成功');
369
+ })
370
+ .catch(err => {
371
+ Toast.fail('页面重定向失败: ' + err.message);
372
+ });
373
+ },
374
+
375
+ handleOpenPage() {
376
+ const url = 'https://www.hengansl.com/';
377
+ this.$native.openPage(url)
378
+ .then(() => {
379
+ Toast.success('打开新页面成功');
380
+ })
381
+ .catch(err => {
382
+ Toast.fail('打开新页面失败: ' + err.message);
383
+ });
384
+ },
385
+
386
+ handleClosePage() {
387
+ this.$native.closePage()
388
+ .then(() => {
389
+ Toast.success('关闭页面成功');
390
+ })
391
+ .catch(err => {
392
+ Toast.fail('关闭页面失败: ' + err.message);
393
+ });
394
+ },
395
+
396
+ handleSetNavigationBarVisible() {
397
+ Dialog.confirm({
398
+ title: '设置标题栏可见性',
399
+ message: '是否隐藏原生标题栏?',
400
+ confirmButtonText: '隐藏',
401
+ cancelButtonText: '显示'
402
+ }).then(() => {
403
+ // 隐藏原生标题栏
404
+ this.$native.setNavigationBarVisible(false)
405
+ .then(() => {
406
+ Toast.success('已隐藏原生标题栏');
407
+ })
408
+ .catch(err => {
409
+ Toast.fail('设置标题栏可见性失败: ' + err.message);
410
+ });
411
+ }).catch(() => {
412
+ // 显示原生标题栏
413
+ this.$native.setNavigationBarVisible(true)
414
+ .then(() => {
415
+ Toast.success('已显示原生标题栏');
416
+ })
417
+ .catch(err => {
418
+ Toast.fail('设置标题栏可见性失败: ' + err.message);
419
+ });
420
+ });
421
+ },
422
+
423
+ // 人脸识别
424
+ handleGoCheckFace() {
425
+ let params = {
426
+ requestType: 'YX',// 请求类型
427
+ userName: '项语晴', // 姓名
428
+ userIdNo: '131128199509262429', // 身份证号码
429
+ redirectUrl: window.location.href, // 跳转地址
430
+ terminal: 'YX', // 终端类型
431
+ requestSource: 'YX', // 请求来源
432
+ meta: { // 元数据
433
+ tenantCode: 'YX', // 租户编码
434
+ businessCode: 'YX-EDOR', // 业务编码
435
+ serviceType: 'FACE' // 业务类型
436
+ }
437
+ }
438
+ this.$native.goCheckFace(params).then(res => {
439
+ if (res.h5FaceUrl) {
440
+ this.$native.redirectTo(res.h5FaceUrl).then(res => {
441
+
442
+ }).catch(err => {
443
+ Toast('壳跳转人脸识别失败,请重试')
444
+ });
445
+ }
446
+ }).catch(err => {
447
+ Toast('获得人脸识别失败,请重试')
448
+ });
449
+ },
450
+
451
+ handleCheckFace() {
452
+ this.$native.checkFace().then(response => {
453
+ console.log('人脸识别结果:', response);
454
+ }).catch(err => {});
455
+ },
456
+
457
+ // 设备功能
458
+ handleScanQRCode() {
459
+ this.$native.scanQRCode()
460
+ .then(result => {
461
+ Toast.success('扫码成功');
462
+ console.log('扫码结果:', result);
463
+ Dialog.alert({
464
+ title: '扫码结果',
465
+ message: result
466
+ });
467
+ })
468
+ .catch(err => {
469
+ Toast.fail('扫码失败: ' + err.message);
470
+ });
471
+ },
472
+
473
+ handleCallPhone() {
474
+ const phoneNumber = '10086';
475
+ this.$native.callphone(phoneNumber)
476
+ .then(() => {
477
+ Toast.success('已尝试拨打电话');
478
+ })
479
+ .catch(err => {
480
+ Toast.fail('拨打电话失败: ' + err.message);
481
+ });
482
+ },
483
+
484
+ handleSendSMS() {
485
+ const phoneNumber = '10086';
486
+ const content = '测试短信内容';
487
+ this.$native.sendSMS(phoneNumber, content)
488
+ .then(() => {
489
+ Toast.success('已尝试发送短信');
490
+ })
491
+ .catch(err => {
492
+ Toast.fail('发送短信失败: ' + err.message);
493
+ });
494
+ },
495
+
496
+ handleReadContacts() {
497
+ this.$native.readContacts()
498
+ .then(contact => {
499
+ Toast.success('选择联系人成功');
500
+ console.log('选择的联系人:', contact);
501
+ Dialog.alert({
502
+ title: '选择的联系人',
503
+ message: JSON.stringify(contact, null, 2)
504
+ });
505
+ })
506
+ .catch(err => {
507
+ Toast.fail('选择联系人失败: ' + err.message);
508
+ });
509
+ },
510
+
511
+ // 媒体功能
512
+ handleTakePhoto() {
513
+ this.$native.takePhoto(
514
+ {
515
+ maxSize: 500, // 图片大小限制,单位为KB
516
+ actions: '',
517
+ domain: 'INDUCTION',
518
+ buz: 'PICTURE',
519
+ buzId: '111',
520
+ isCopper: false,
521
+ isUpload: false // 如果是false 只返回imageBase64
522
+ }
523
+ )
524
+ .then(photo => {
525
+ Toast.success('拍照成功');
526
+ this.img1 = 'https://testfile.ihasl.com/file/v1/hasl/fileAdmin/fileAdmin/get/'+ photo.fileId + '.' + photo.ext
527
+ console.log('拍摄的照片:', photo);
528
+ })
529
+ .catch(err => {
530
+ Toast.fail('拍照失败: ' + err.message);
531
+ });
532
+ },
533
+
534
+ handleChooseImage() {
535
+ this.$native.chooseImage({
536
+ maxCount: 2, // 最多可选择的图片数量, 默认为9
537
+ maxSize: 500, // 图片大小限制,单位为KB
538
+ sourceType: ['album'], // 可选来源类型,'album' 为相册,'camera' 为相机 默认两者都有
539
+ sceneDesc: '选择图片上传', // 场景描述
540
+ actions: '',
541
+ domain: 'INDUCTION',
542
+ buz: 'PICTURE',
543
+ buzId: '111',
544
+ isCopper: false, // 是否裁剪 裁剪只能选择1张图片
545
+ isUpload: true
546
+ })
547
+ .then(images => {
548
+ // 选择多张返回的是数组,单张返回的是对象
549
+ Toast.success('选择图片成功');
550
+ this.img2 = 'https://testfile.ihasl.com/file/v1/hasl/fileAdmin/fileAdmin/get/'+ images.fileId + '.' + images.ext
551
+
552
+ console.log('选择的图片:', images.length);
553
+ })
554
+ .catch(err => {
555
+ Toast.fail('选择图片失败: ' + err.message);
556
+ });
557
+ },
558
+
559
+ handleTakePicture() {
560
+ this.$native.takePicture({
561
+ maxCount: 1, // 最多可选择的图片数量, 默认为9
562
+ maxSize: 500, // 图片大小限制,单位为KB
563
+ sourceType: ['album'], // 可选来源类型,'album' 为相册,'camera' 为相机 默认两者都有
564
+ sceneDesc: '选择图片上传', // 场景描述
565
+ actions: '',
566
+ domain: 'INDUCTION',
567
+ buz: 'PICTURE',
568
+ buzId: '111'
569
+ })
570
+ .then(result => {
571
+ Toast.success('拍摄/选择成功');
572
+ console.log('拍摄/选择结果:', result);
573
+ })
574
+ .catch(err => {
575
+ Toast.fail('拍摄/选择失败: ' + err.message);
576
+ });
577
+ },
578
+ handleTakePdf(){
579
+
580
+ },
581
+ async afterRead(file) {
582
+ // 此时可以自行将文件上传至服务器
583
+ console.log(file.content);
584
+ let aaa = await nativeUtils.base64ToFile(file.content,'sss.pdf')
585
+ const params = new FormData();
586
+ params.append('file', aaa);
587
+ params.append('domain', 'INDUCTION'); //业务系统代码
588
+ params.append('buz', 'PICTURE'); //文件种类代码
589
+ params.append('actions', 'actions');
590
+ params.append('buzId', '111'); // 业务编码
591
+ params.append('expired', '-1'); // 失效时间
592
+ params.append('auth', 0); // 是否需要token
593
+ axios({
594
+ method: 'post',
595
+ url: 'https://testfile.ihasl.com/file/v1/hasl/fileAdmin/fileAdmin/upload',
596
+ data: params,
597
+ timeout: 60 * 1000,
598
+ headers: {
599
+ 'Content-Type': 'multipart/form-data',
600
+ 'Authorization': 'Basic ' + sessionStorage.getItem('token'),
601
+ 'Accept-Device': 'Null',
602
+ 'Accept-DeviceOS': 'NULL',
603
+ 'Accept-Location': 'NULL',
604
+ 'Accept-ISP': 'NULL',
605
+ 'Accept-StartTime': 'NULL',
606
+ 'Accept-TimeZone': 28800000,
607
+ 'Accept-Attr1': 'NULL',
608
+ 'Accept-Attr2': 'PC',
609
+ 'Accept-Attr3': 'en_CN',
610
+ 'Real-Ip': 'NULL',
611
+ 'Accept-Attr4': 'NULL',
612
+ 'Accept-Attr6': '623023198301252893'
613
+ }
614
+ });
615
+ },
616
+
617
+ // 文件处理
618
+ handlePdfRead() {
619
+ const pdfFiles = [
620
+ {
621
+ url: "https://teststatic.ihasl.com/pages/salessupport/app/iamges/pdf/hastar.pdf",
622
+ title: "测试文件1"
623
+ }
624
+ ];
625
+
626
+ this.$native.pdfRead(pdfFiles)
627
+ .then(res => {
628
+ Toast.success('PDF阅读成功');
629
+ console.log('PDF阅读结果:', res);
630
+ })
631
+ .catch(err => {
632
+ Toast.fail('PDF阅读失败: ' + err.message);
633
+ });
634
+ },
635
+
636
+ handlePdfRead1() {
637
+ const pdfFiles = [
638
+ {
639
+ url: "https://teststatic.ihasl.com/pages/salessupport/app/iamges/pdf/hastar.pdf",
640
+ title: "测试文件1"
641
+ },
642
+ {
643
+ url: "https://teststatic.ihasl.com/pages/salessupport/app/iamges/pdf/hastar.pdf",
644
+ title: "测试文件1"
645
+ }
646
+ ];
647
+
648
+ this.$native.pdfRead(pdfFiles)
649
+ .then(res => {
650
+ Toast.success('PDF阅读成功');
651
+ console.log('PDF阅读结果:', res);
652
+ })
653
+ .catch(err => {
654
+ Toast.fail('PDF阅读失败: ' + err.message);
655
+ });
656
+ },
657
+ handlePdfRead2() {
658
+ const pdfFiles = [
659
+ {
660
+ url: "https://teststatic.ihasl.com/pages/salessupport/app/iamges/pdf/hastar.pdf",
661
+ title: "测试文件1",
662
+ countdownTime: 5
663
+ },
664
+ {
665
+ url: "https://teststatic.ihasl.com/pages/salessupport/app/iamges/pdf/hastar.pdf",
666
+ title: "测试文件2",
667
+ countdownTime: 5
668
+ }
669
+ ];
670
+
671
+ this.$native.pdfRead(pdfFiles,{
672
+ showCountdown: true
673
+ })
674
+ .then(res => {
675
+ Toast.success('PDF阅读成功');
676
+ console.log('PDF阅读结果:', res);
677
+ })
678
+ .catch(err => {
679
+ Toast.fail('PDF阅读失败: ' + err.message);
680
+ });
681
+ },
682
+
683
+ // 数据存储
684
+ handleSetItem() {
685
+ const key = 'demo_key';
686
+ const value = 'demo_value';
687
+ this.$native.setItem(key, value)
688
+ .then(() => {
689
+ Toast.success('持久化存储成功');
690
+ })
691
+ .catch(err => {
692
+ Toast.fail('持久化存储失败: ' + err.message);
693
+ });
694
+ },
695
+
696
+ handleGetItem() {
697
+ const key = 'demo_key';
698
+ this.$native.getItem(key)
699
+ .then(value => {
700
+ Toast.success('获取持久化存储成功');
701
+ console.log('获取的值:', value);
702
+ Dialog.alert({
703
+ title: '获取的值',
704
+ message: value || '未找到对应值'
705
+ });
706
+ })
707
+ .catch(err => {
708
+ Toast.fail('获取持久化存储失败: ' + err.message);
709
+ });
710
+ },
711
+
712
+ handleRemoveItem() {
713
+ const key = 'demo_key';
714
+ this.$native.removeItem(key)
715
+ .then(() => {
716
+ Toast.success('删除持久化存储成功');
717
+ })
718
+ .catch(err => {
719
+ Toast.fail('删除持久化存储失败: ' + err.message);
720
+ });
721
+ },
722
+
723
+ // 工具功能
724
+ handleToast() {
725
+ this.$native.Toast('这是一条Toast提示');
726
+ },
727
+
728
+ handleAddCalendarEvent() {
729
+ const event = {
730
+ title: '会议',
731
+ startTime: '2024-01-01 10:00',
732
+ endTime: '2024-01-01 11:00'
733
+ };
734
+
735
+ this.$native.addCalendarEvent(event)
736
+ .then(() => {
737
+ Toast.success('添加日历事件成功');
738
+ })
739
+ .catch(err => {
740
+ Toast.fail('添加日历事件失败: ' + err.message);
741
+ });
742
+ },
743
+
744
+ handleEncrypt() {
745
+ const str = '需要加密的敏感数据';
746
+ this.$native.encrypt(str)
747
+ .then(encrypted => {
748
+ Toast.success('数据加密成功');
749
+ console.log('加密结果:', encrypted);
750
+ Dialog.alert({
751
+ title: '加密结果',
752
+ message: encrypted
753
+ });
754
+ })
755
+ .catch(err => {
756
+ Toast.fail('数据加密失败: ' + err.message);
757
+ });
758
+ },
759
+
760
+ // 位置服务
761
+ handleGetLocation() {
762
+ this.$native.getLocation()
763
+ .then(location => {
764
+ Toast.success('获取位置信息成功');
765
+ console.log('位置信息:', location);
766
+ Dialog.alert({
767
+ title: '位置信息',
768
+ message: JSON.stringify(location, null, 2)
769
+ });
770
+ })
771
+ .catch(err => {
772
+ Toast.fail('获取位置信息失败: ' + err.message);
773
+ });
774
+ },
775
+
776
+ // 缓存管理
777
+ handleGetCacheSize() {
778
+ this.$native.getCacheSize()
779
+ .then(size => {
780
+ Toast.success('获取缓存大小成功');
781
+ console.log('缓存大小:', size);
782
+ Dialog.alert({
783
+ title: '缓存大小',
784
+ message: size
785
+ });
786
+ })
787
+ .catch(err => {
788
+ Toast.fail('获取缓存大小失败: ' + err.message);
789
+ });
790
+ },
791
+
792
+ handleClearCache() {
793
+ this.$native.clearCache()
794
+ .then(() => {
795
+ Toast.success('清除缓存成功');
796
+ })
797
+ .catch(err => {
798
+ Toast.fail('清除缓存失败: ' + err.message);
799
+ });
800
+ },
801
+
802
+ handleGetDeviceInfo() {
803
+ this.$native.getDeviceInfo()
804
+ .then(deviceInfo => {
805
+ Toast.success('获取设备信息成功');
806
+ console.log('设备信息:', deviceInfo);
807
+ Dialog.alert({
808
+ title: '设备信息',
809
+ message: JSON.stringify(deviceInfo, null, 2)
810
+ });
811
+ })
812
+ .catch(err => {
813
+ Toast.fail('获取设备信息失败: ' + err.message);
814
+ });
815
+ }
816
+ }
817
+ };
818
+ </script>
819
+
820
+ <style scoped>
821
+ .demo-container {
822
+ padding-top: 46px;
823
+ }
824
+
825
+ .content {
826
+ padding: 10px;
827
+ }
828
+
829
+ .van-cell-group {
830
+ margin-bottom: 10px;
831
+ }
832
+ </style>