wui-components-v2 1.1.69 → 1.1.71

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 (117) hide show
  1. package/api/core/index.ts +74 -74
  2. package/api/feishu.ts +20 -20
  3. package/api/index.ts +4 -4
  4. package/api/login.ts +51 -51
  5. package/api/menu.ts +45 -45
  6. package/api/page.ts +114 -114
  7. package/api/sys.ts +12 -12
  8. package/api/tree.ts +28 -28
  9. package/components/action-popup/action-popup.vue +116 -116
  10. package/components/add-address-list/add-address-list.vue +187 -187
  11. package/components/add-address-page/add-address-page.vue +77 -77
  12. package/components/add-address-page/config.ts +297 -297
  13. package/components/audio-play/audio-play.vue +220 -220
  14. package/components/batch-upload-file/batch-upload-file.vue +75 -75
  15. package/components/card-botom-buttons/card-botom-buttons.vue +279 -279
  16. package/components/custom-date-picker/custom-date-picker.vue +106 -106
  17. package/components/custom-select-picker/custom-select-picker.vue +95 -95
  18. package/components/demo-block/demo-block.vue +63 -63
  19. package/components/demo-card/demo-card.vue +44 -44
  20. package/components/detail-popup/detail-popup.vue +99 -99
  21. package/components/evaluation-page/evaluation-page.vue +196 -196
  22. package/components/fold-card/fold-card.vue +171 -171
  23. package/components/form-control/form-control.vue +661 -661
  24. package/components/global-loading/GlobalLoading.md +366 -366
  25. package/components/global-loading/global-loading.vue +55 -55
  26. package/components/global-message/GlobalMessage.md +570 -570
  27. package/components/global-message/global-message.vue +68 -68
  28. package/components/global-toast/GlobalToast.md +261 -261
  29. package/components/global-toast/global-toast.vue +56 -56
  30. package/components/label-value/label-value.vue +144 -144
  31. package/components/label-value/open-value-more.vue +56 -56
  32. package/components/list-top-buttons/list-top-buttons.vue +19 -19
  33. package/components/loading/loading.vue +5 -5
  34. package/components/login-form/login-form.vue +126 -126
  35. package/components/login-form-box/login-form-box.vue +65 -65
  36. package/components/mulselect-picker/mulselect-picker.vue +86 -86
  37. package/components/phone-login-form/phone-login-form.vue +204 -204
  38. package/components/privacy-popup/privacy-popup.vue +191 -191
  39. package/components/product-card/product-card.vue +201 -201
  40. package/components/scan-input/scan-input.vue +406 -406
  41. package/components/search/search.vue +128 -128
  42. package/components/select-col-picker/select-col-picker.vue +168 -168
  43. package/components/tab-search/tab-search.vue +73 -73
  44. package/components/tree-select/components/TreeNode.vue +200 -200
  45. package/components/tree-select/components/index.vue +471 -471
  46. package/components/tree-select/components/tree-select.vue +56 -56
  47. package/components/tree-select/index.vue +93 -93
  48. package/components/user-choose/user-choose.vue +169 -151
  49. package/components/video-play/video-play.vue +56 -56
  50. package/components/wui-auto-update-component/wui-auto-update-component.vue +132 -132
  51. package/components/wui-default/wui-default.vue +49 -49
  52. package/components/wui-details-page/wui-details-page.vue +147 -147
  53. package/components/wui-edit-page/wui-edit-page-copy.vue +757 -757
  54. package/components/wui-edit-page/wui-edit-page.vue +793 -793
  55. package/components/wui-enume-select-control/wui-enume-select-control.vue +92 -92
  56. package/components/wui-list/wui-list.vue +235 -235
  57. package/components/wui-login/wui-login.vue +43 -43
  58. package/components/wui-login1/wui-login.vue +41 -41
  59. package/components/wui-menus/wui-menus-top.vue +137 -137
  60. package/components/wui-menus/wui-menus-top1.vue +8 -8
  61. package/components/wui-menus/wui-menus.vue +247 -247
  62. package/components/wui-menus1/components/banner-carousel.vue +320 -320
  63. package/components/wui-menus1/components/navbar.vue +43 -43
  64. package/components/wui-menus1/components/quick-panel.vue +55 -55
  65. package/components/wui-menus1/components/search-bar.vue +49 -49
  66. package/components/wui-menus1/components/section-menus.vue +208 -208
  67. package/components/wui-menus1/wui-menus-top.vue +718 -718
  68. package/components/wui-menus1/wui-menus-top1.vue +398 -398
  69. package/components/wui-menus1/wui-menus.vue +564 -564
  70. package/components/wui-notify-info/notify-handle.vue +53 -53
  71. package/components/wui-notify-info/wui-notify-info.vue +280 -280
  72. package/components/wui-scan-binding-sensor/wui-scan-binding-sensor.vue +75 -75
  73. package/components/wui-search-history-babbar/components/SearchBar.vue +70 -70
  74. package/components/wui-search-history-babbar/wui-search-history-babbar.vue +204 -204
  75. package/components/wui-select-list/wui-select-list.vue +310 -310
  76. package/components/wui-select-popup/wui-select-popup.vue +613 -612
  77. package/components/wui-system-settings/wui-system-settings.vue +144 -144
  78. package/components/wui-tabbar/wui-tabbar.vue +106 -106
  79. package/components/wui-tree-page/components/tree-item.vue +238 -238
  80. package/components/wui-tree-page/wui-tree-page.vue +297 -297
  81. package/components/wui-update-component/wui-update-component.vue +221 -221
  82. package/components/wui-user/wui-user.vue +202 -202
  83. package/composables/types/theme.ts +65 -65
  84. package/composables/types/user.ts +5 -5
  85. package/composables/useColorGenerator.ts +221 -221
  86. package/composables/useCompanyFieldFilter.ts +91 -91
  87. package/composables/useEnumes.ts +43 -43
  88. package/composables/useEventBus.ts +37 -37
  89. package/composables/useGlobalLoading.ts +47 -47
  90. package/composables/useGlobalMessage.ts +53 -53
  91. package/composables/useGlobalToast.ts +63 -63
  92. package/composables/useLocale.ts +54 -54
  93. package/composables/useManualTheme.ts +179 -179
  94. package/composables/useMenus.ts +193 -193
  95. package/composables/useSectionMenus.ts +120 -120
  96. package/composables/useTabbar.ts +50 -50
  97. package/composables/useTheme.ts +74 -74
  98. package/composables/useUser.ts +24 -24
  99. package/index.d.ts +90 -90
  100. package/index.ts +83 -83
  101. package/package.json +24 -24
  102. package/static/iconfont/iconfont.css +63 -63
  103. package/store/language.ts +151 -151
  104. package/store/manualThemeStore.ts +143 -143
  105. package/store/persist.ts +41 -41
  106. package/store/themeStore.ts +74 -74
  107. package/store/userStore.ts +22 -22
  108. package/styles/dark-mode.css +523 -523
  109. package/styles/dark-mode.min.css +1 -1
  110. package/styles/dark-mode.scss +498 -498
  111. package/type.ts +154 -154
  112. package/utils/control-tree.ts +353 -353
  113. package/utils/control-type-supportor.ts +148 -148
  114. package/utils/eventBus.ts +36 -36
  115. package/utils/idata-scan.ts +99 -99
  116. package/utils/index.ts +979 -979
  117. package/utils/rsaEncrypt.ts +10 -10
@@ -1,148 +1,148 @@
1
- import type { Fields } from '../type'
2
- // import {ProgramConfig} from "../index";
3
-
4
- const SupportInputTypes: Set<string> = new Set<string>()
5
- SupportInputTypes.add('date-YY')
6
- SupportInputTypes.add('daterange-YY')
7
- SupportInputTypes.add('date-M1')
8
- SupportInputTypes.add('daterange-M1')
9
- SupportInputTypes.add('date')
10
- SupportInputTypes.add('daterange')
11
- SupportInputTypes.add('datetime-HH')
12
- SupportInputTypes.add('datetimerange-HH')
13
- SupportInputTypes.add('datetime-mm')
14
- SupportInputTypes.add('datetimerange-mm')
15
- SupportInputTypes.add('datetime')
16
- SupportInputTypes.add('datetimerange')
17
- SupportInputTypes.add('timestamp')
18
-
19
- SupportInputTypes.add('time-HH')
20
- SupportInputTypes.add('timerange-HH')
21
- SupportInputTypes.add('time-mm')
22
- SupportInputTypes.add('timerange-mm')
23
- SupportInputTypes.add('time')
24
- SupportInputTypes.add('timerange')
25
-
26
- SupportInputTypes.add('timerange-HH-unorder')
27
- SupportInputTypes.add('timerange-mm-unorder')
28
- SupportInputTypes.add('timerange-unorder')
29
-
30
- SupportInputTypes.add('text')
31
- SupportInputTypes.add('textarea')
32
- SupportInputTypes.add('text-view')
33
- SupportInputTypes.add('html')
34
- SupportInputTypes.add('steps')
35
- SupportInputTypes.add('progress')
36
- SupportInputTypes.add('password')
37
- SupportInputTypes.add('preselect')
38
- SupportInputTypes.add('select')
39
- SupportInputTypes.add('multiselect')
40
- SupportInputTypes.add('checkbox')
41
- SupportInputTypes.add('radio')
42
- SupportInputTypes.add('yes-no-select')
43
- SupportInputTypes.add('yes-no-radio')
44
- SupportInputTypes.add('yes-no-switch')
45
- SupportInputTypes.add('caselect')
46
- SupportInputTypes.add('relation')
47
- SupportInputTypes.add('file')
48
- SupportInputTypes.add('picture')
49
- SupportInputTypes.add('chemstruc')
50
- SupportInputTypes.add('sql-code-editor')
51
- SupportInputTypes.add('video')// 没支持上
52
- SupportInputTypes.add('takeVideo')// 没支持上
53
- SupportInputTypes.add('signature')// 签名组件
54
- SupportInputTypes.add('non-download-file')
55
-
56
- SupportInputTypes.add('decimal')
57
- SupportInputTypes.add('float')
58
- SupportInputTypes.add('double')
59
- SupportInputTypes.add('int')
60
- SupportInputTypes.add('relselect')
61
- SupportInputTypes.add('relselect-extdis')
62
- SupportInputTypes.add('relselectvalue')// 弃用
63
- SupportInputTypes.add('entity-select-value')
64
- SupportInputTypes.add('refselect')
65
- SupportInputTypes.add('field-history')
66
-
67
- SupportInputTypes.add('range')
68
- SupportInputTypes.add('intrange')
69
- SupportInputTypes.add('decimalrange')
70
- SupportInputTypes.add('texttags')
71
- // SupportInputTypes.add('relation_existion');
72
- SupportInputTypes.add('entity-select')
73
- SupportInputTypes.add('table-entity-select')
74
- SupportInputTypes.add('modal-entity-select')
75
- SupportInputTypes.add('color')
76
- SupportInputTypes.add('url')
77
- SupportInputTypes.add('hidden')
78
- SupportInputTypes.add('lab-tree-select')
79
- SupportInputTypes.add('tree-entity-select-value')
80
- SupportInputTypes.add('tree-entity-select')
81
- SupportInputTypes.add('ltree-entity-select-value')
82
- SupportInputTypes.add('ltree-entity-select')
83
- SupportInputTypes.add('field-history')
84
- SupportInputTypes.add('relfile')
85
- SupportInputTypes.add('QRCode')
86
- SupportInputTypes.add('progress')
87
-
88
-
89
- const CUSTOM_VIEW_CONTROL_MAP: { [key: string]: string } = {}
90
-
91
- function ControlTypeSupportor() {
92
-
93
- }
94
-
95
- function getCustomViewControl(key: string) {
96
- if (!key) {
97
- return null
98
- }
99
- if (!key.startsWith('/')) {
100
- return CUSTOM_VIEW_CONTROL_MAP[`/${key}`]
101
- }
102
- else {
103
- return CUSTOM_VIEW_CONTROL_MAP[key]
104
- }
105
- }
106
- ControlTypeSupportor.isSupport = function (type: string): boolean {
107
- if (type) {
108
- if (getCustomViewControl(type)) {
109
- return true
110
- }
111
- else {
112
- return SupportInputTypes.has(type)
113
- }
114
- }
115
- else {
116
- return false
117
- }
118
- }
119
- ControlTypeSupportor.getSupportControlType = function (fieldConfig: Fields): string {
120
- if (!fieldConfig) {
121
- return 'text'
122
- }
123
- if (this.isSupport(fieldConfig.extControlType)) {
124
- return fieldConfig.extControlType
125
- }
126
- else if (this.isSupport(fieldConfig.controlType)) {
127
- return fieldConfig.controlType
128
- }
129
- else {
130
- return 'text'
131
- }
132
- }
133
-
134
- ControlTypeSupportor.getControlType = function (fieldConfig: Fields, fieldValue?: any) {
135
- let itemType: string
136
- itemType = this.getSupportControlType(fieldConfig)
137
- // 对关系属性之文件进行特殊处理
138
- if (fieldValue && typeof (fieldValue) == 'string' && !fieldValue.includes('@R@') && itemType === 'relselect' && fieldValue.includes('download-files/')) {
139
- itemType = 'file'
140
- }
141
-
142
- if (fieldValue && Array.isArray(fieldValue) && itemType === 'relselect' && fieldValue.length > 0 && fieldValue[0].includes('valid')) {
143
- itemType = 'file'
144
- }
145
- return itemType
146
- }
147
-
148
- export default ControlTypeSupportor
1
+ import type { Fields } from '../type'
2
+ // import {ProgramConfig} from "../index";
3
+
4
+ const SupportInputTypes: Set<string> = new Set<string>()
5
+ SupportInputTypes.add('date-YY')
6
+ SupportInputTypes.add('daterange-YY')
7
+ SupportInputTypes.add('date-M1')
8
+ SupportInputTypes.add('daterange-M1')
9
+ SupportInputTypes.add('date')
10
+ SupportInputTypes.add('daterange')
11
+ SupportInputTypes.add('datetime-HH')
12
+ SupportInputTypes.add('datetimerange-HH')
13
+ SupportInputTypes.add('datetime-mm')
14
+ SupportInputTypes.add('datetimerange-mm')
15
+ SupportInputTypes.add('datetime')
16
+ SupportInputTypes.add('datetimerange')
17
+ SupportInputTypes.add('timestamp')
18
+
19
+ SupportInputTypes.add('time-HH')
20
+ SupportInputTypes.add('timerange-HH')
21
+ SupportInputTypes.add('time-mm')
22
+ SupportInputTypes.add('timerange-mm')
23
+ SupportInputTypes.add('time')
24
+ SupportInputTypes.add('timerange')
25
+
26
+ SupportInputTypes.add('timerange-HH-unorder')
27
+ SupportInputTypes.add('timerange-mm-unorder')
28
+ SupportInputTypes.add('timerange-unorder')
29
+
30
+ SupportInputTypes.add('text')
31
+ SupportInputTypes.add('textarea')
32
+ SupportInputTypes.add('text-view')
33
+ SupportInputTypes.add('html')
34
+ SupportInputTypes.add('steps')
35
+ SupportInputTypes.add('progress')
36
+ SupportInputTypes.add('password')
37
+ SupportInputTypes.add('preselect')
38
+ SupportInputTypes.add('select')
39
+ SupportInputTypes.add('multiselect')
40
+ SupportInputTypes.add('checkbox')
41
+ SupportInputTypes.add('radio')
42
+ SupportInputTypes.add('yes-no-select')
43
+ SupportInputTypes.add('yes-no-radio')
44
+ SupportInputTypes.add('yes-no-switch')
45
+ SupportInputTypes.add('caselect')
46
+ SupportInputTypes.add('relation')
47
+ SupportInputTypes.add('file')
48
+ SupportInputTypes.add('picture')
49
+ SupportInputTypes.add('chemstruc')
50
+ SupportInputTypes.add('sql-code-editor')
51
+ SupportInputTypes.add('video')// 没支持上
52
+ SupportInputTypes.add('takeVideo')// 没支持上
53
+ SupportInputTypes.add('signature')// 签名组件
54
+ SupportInputTypes.add('non-download-file')
55
+
56
+ SupportInputTypes.add('decimal')
57
+ SupportInputTypes.add('float')
58
+ SupportInputTypes.add('double')
59
+ SupportInputTypes.add('int')
60
+ SupportInputTypes.add('relselect')
61
+ SupportInputTypes.add('relselect-extdis')
62
+ SupportInputTypes.add('relselectvalue')// 弃用
63
+ SupportInputTypes.add('entity-select-value')
64
+ SupportInputTypes.add('refselect')
65
+ SupportInputTypes.add('field-history')
66
+
67
+ SupportInputTypes.add('range')
68
+ SupportInputTypes.add('intrange')
69
+ SupportInputTypes.add('decimalrange')
70
+ SupportInputTypes.add('texttags')
71
+ // SupportInputTypes.add('relation_existion');
72
+ SupportInputTypes.add('entity-select')
73
+ SupportInputTypes.add('table-entity-select')
74
+ SupportInputTypes.add('modal-entity-select')
75
+ SupportInputTypes.add('color')
76
+ SupportInputTypes.add('url')
77
+ SupportInputTypes.add('hidden')
78
+ SupportInputTypes.add('lab-tree-select')
79
+ SupportInputTypes.add('tree-entity-select-value')
80
+ SupportInputTypes.add('tree-entity-select')
81
+ SupportInputTypes.add('ltree-entity-select-value')
82
+ SupportInputTypes.add('ltree-entity-select')
83
+ SupportInputTypes.add('field-history')
84
+ SupportInputTypes.add('relfile')
85
+ SupportInputTypes.add('QRCode')
86
+ SupportInputTypes.add('progress')
87
+
88
+
89
+ const CUSTOM_VIEW_CONTROL_MAP: { [key: string]: string } = {}
90
+
91
+ function ControlTypeSupportor() {
92
+
93
+ }
94
+
95
+ function getCustomViewControl(key: string) {
96
+ if (!key) {
97
+ return null
98
+ }
99
+ if (!key.startsWith('/')) {
100
+ return CUSTOM_VIEW_CONTROL_MAP[`/${key}`]
101
+ }
102
+ else {
103
+ return CUSTOM_VIEW_CONTROL_MAP[key]
104
+ }
105
+ }
106
+ ControlTypeSupportor.isSupport = function (type: string): boolean {
107
+ if (type) {
108
+ if (getCustomViewControl(type)) {
109
+ return true
110
+ }
111
+ else {
112
+ return SupportInputTypes.has(type)
113
+ }
114
+ }
115
+ else {
116
+ return false
117
+ }
118
+ }
119
+ ControlTypeSupportor.getSupportControlType = function (fieldConfig: Fields): string {
120
+ if (!fieldConfig) {
121
+ return 'text'
122
+ }
123
+ if (this.isSupport(fieldConfig.extControlType)) {
124
+ return fieldConfig.extControlType
125
+ }
126
+ else if (this.isSupport(fieldConfig.controlType)) {
127
+ return fieldConfig.controlType
128
+ }
129
+ else {
130
+ return 'text'
131
+ }
132
+ }
133
+
134
+ ControlTypeSupportor.getControlType = function (fieldConfig: Fields, fieldValue?: any) {
135
+ let itemType: string
136
+ itemType = this.getSupportControlType(fieldConfig)
137
+ // 对关系属性之文件进行特殊处理
138
+ if (fieldValue && typeof (fieldValue) == 'string' && !fieldValue.includes('@R@') && itemType === 'relselect' && fieldValue.includes('download-files/')) {
139
+ itemType = 'file'
140
+ }
141
+
142
+ if (fieldValue && Array.isArray(fieldValue) && itemType === 'relselect' && fieldValue.length > 0 && fieldValue[0].includes('valid')) {
143
+ itemType = 'file'
144
+ }
145
+ return itemType
146
+ }
147
+
148
+ export default ControlTypeSupportor
package/utils/eventBus.ts CHANGED
@@ -1,36 +1,36 @@
1
- // 事件总线实现,用于跨组件通信
2
- class EventBus {
3
- private events: { [key: string]: Array<(...args: any[]) => void> } = {}
4
-
5
- on(event: string, callback: (...args: any[]) => void) {
6
- if (!this.events[event]) {
7
- this.events[event] = []
8
- }
9
- this.events[event].push(callback)
10
- }
11
-
12
- off(event: string, callback: (...args: any[]) => void) {
13
- if (this.events[event]) {
14
- const index = this.events[event].indexOf(callback)
15
- if (index > -1) {
16
- this.events[event].splice(index, 1)
17
- }
18
- }
19
- }
20
-
21
- emit(event: string, ...args: any[]) {
22
- if (this.events[event]) {
23
- this.events[event].forEach(callback => callback(...args))
24
- }
25
- }
26
-
27
- once(event: string, callback: (...args: any[]) => void) {
28
- const onceCallback = (...args: any[]) => {
29
- callback(...args)
30
- this.off(event, onceCallback)
31
- }
32
- this.on(event, onceCallback)
33
- }
34
- }
35
-
36
- export const eventBus = new EventBus()
1
+ // 事件总线实现,用于跨组件通信
2
+ class EventBus {
3
+ private events: { [key: string]: Array<(...args: any[]) => void> } = {}
4
+
5
+ on(event: string, callback: (...args: any[]) => void) {
6
+ if (!this.events[event]) {
7
+ this.events[event] = []
8
+ }
9
+ this.events[event].push(callback)
10
+ }
11
+
12
+ off(event: string, callback: (...args: any[]) => void) {
13
+ if (this.events[event]) {
14
+ const index = this.events[event].indexOf(callback)
15
+ if (index > -1) {
16
+ this.events[event].splice(index, 1)
17
+ }
18
+ }
19
+ }
20
+
21
+ emit(event: string, ...args: any[]) {
22
+ if (this.events[event]) {
23
+ this.events[event].forEach(callback => callback(...args))
24
+ }
25
+ }
26
+
27
+ once(event: string, callback: (...args: any[]) => void) {
28
+ const onceCallback = (...args: any[]) => {
29
+ callback(...args)
30
+ this.off(event, onceCallback)
31
+ }
32
+ this.on(event, onceCallback)
33
+ }
34
+ }
35
+
36
+ export const eventBus = new EventBus()
@@ -1,99 +1,99 @@
1
- // 注意:需要在插件市场 安装 安卓原生插件“iData条码扫描插件”,https://ext.dcloud.net.cn/plugin?id=3898#
2
- interface callback {
3
- (scanData: any): void
4
- }
5
- let barcodeModel: { initScan: (arg0: (ret: any) => void) => void, closeScan: (arg0: (ret: any) => void) => void, scanStop: (arg0: (ret: any) => void) => void, scanStart: (arg0: (ret: any) => void) => void } | null = null
6
- let globalEvent: {
7
- addEventListener: (arg0: string, arg1: (e: any) => void) => void
8
- removeEventListener: (arg0: string) => void
9
- } | null = null
10
-
11
- // 初始化手持机扫码模块
12
- function initBarcode(callback: callback) {
13
- // #ifdef APP-PLUS
14
- console.log('initBarcode')
15
-
16
- // 获取手持机扫描module
17
- barcodeModel = uni.requireNativePlugin('iData-BarcodePlugin-BarcodeModule')
18
-
19
- if (!barcodeModel) {
20
- return uni.showToast({
21
- icon: 'none',
22
- title: '请在插件市场安装安卓原生插件“iData条码扫描插件”',
23
- })
24
- }
25
- // 初始化
26
- barcodeModel.initScan(() => {
27
-
28
- })
29
-
30
- // 页面监听event事件,建议在页面onLoad方法里调用
31
- globalEvent = uni.requireNativePlugin('globalEvent')
32
-
33
- if (globalEvent) {
34
- globalEvent.addEventListener('iDataBarcodeEvent', (e: any) => {
35
- console.log(`收到条码:${e.barcode}`)
36
- // 判断是否登录
37
- const token = uni.getStorageSync('token')
38
- if (!token) {
39
- return uni.showModal({
40
- title: '提示',
41
- content: '请登录,才可使用扫码功能',
42
- success(res) {
43
- if (res.confirm) {
44
- console.log('用户点击确定')
45
- uni.reLaunch({
46
- url: '/pages/login/login',
47
- })
48
- }
49
- else if (res.cancel) {
50
- console.log('用户点击取消')
51
- }
52
- },
53
- })
54
- }
55
- callback(e)
56
- })
57
- }
58
-
59
- // #endif
60
- }
61
- function closeBarcode() {
62
- // #ifdef APP-PLUS
63
- // 建议在页面onExit方法里调用
64
- // 接口closeScan(UniJSCallback callback)
65
- // 结束扫描
66
- barcodeModel?.closeScan((ret: any) => {
67
- console.log(ret)
68
- })
69
- // #endif
70
- }
71
-
72
- function stopBarcode() {
73
- // #ifdef APP-PLUS
74
- /// 手动调用
75
- // 停止扫描
76
- // 接口scanStop(UniJSCallback callback)
77
- globalEvent?.removeEventListener('iDataBarcodeEvent')
78
- barcodeModel?.scanStop((ret) => {
79
- console.log(ret)
80
- })
81
-
82
- // #endif
83
- }
84
- function startBarcode() {
85
- // #ifdef APP-PLUS
86
- // 手动调用
87
- // 开始扫描
88
- // 接口scanStop(UniJSCallback callback)
89
- barcodeModel?.scanStart((ret) => {
90
- console.log(ret)
91
- })
92
- // #endif
93
- }
94
- export default {
95
- initBarcode,
96
- closeBarcode,
97
- stopBarcode,
98
- startBarcode,
99
- }
1
+ // 注意:需要在插件市场 安装 安卓原生插件“iData条码扫描插件”,https://ext.dcloud.net.cn/plugin?id=3898#
2
+ interface callback {
3
+ (scanData: any): void
4
+ }
5
+ let barcodeModel: { initScan: (arg0: (ret: any) => void) => void, closeScan: (arg0: (ret: any) => void) => void, scanStop: (arg0: (ret: any) => void) => void, scanStart: (arg0: (ret: any) => void) => void } | null = null
6
+ let globalEvent: {
7
+ addEventListener: (arg0: string, arg1: (e: any) => void) => void
8
+ removeEventListener: (arg0: string) => void
9
+ } | null = null
10
+
11
+ // 初始化手持机扫码模块
12
+ function initBarcode(callback: callback) {
13
+ // #ifdef APP-PLUS
14
+ console.log('initBarcode')
15
+
16
+ // 获取手持机扫描module
17
+ barcodeModel = uni.requireNativePlugin('iData-BarcodePlugin-BarcodeModule')
18
+
19
+ if (!barcodeModel) {
20
+ return uni.showToast({
21
+ icon: 'none',
22
+ title: '请在插件市场安装安卓原生插件“iData条码扫描插件”',
23
+ })
24
+ }
25
+ // 初始化
26
+ barcodeModel.initScan(() => {
27
+
28
+ })
29
+
30
+ // 页面监听event事件,建议在页面onLoad方法里调用
31
+ globalEvent = uni.requireNativePlugin('globalEvent')
32
+
33
+ if (globalEvent) {
34
+ globalEvent.addEventListener('iDataBarcodeEvent', (e: any) => {
35
+ console.log(`收到条码:${e.barcode}`)
36
+ // 判断是否登录
37
+ const token = uni.getStorageSync('token')
38
+ if (!token) {
39
+ return uni.showModal({
40
+ title: '提示',
41
+ content: '请登录,才可使用扫码功能',
42
+ success(res) {
43
+ if (res.confirm) {
44
+ console.log('用户点击确定')
45
+ uni.reLaunch({
46
+ url: '/pages/login/login',
47
+ })
48
+ }
49
+ else if (res.cancel) {
50
+ console.log('用户点击取消')
51
+ }
52
+ },
53
+ })
54
+ }
55
+ callback(e)
56
+ })
57
+ }
58
+
59
+ // #endif
60
+ }
61
+ function closeBarcode() {
62
+ // #ifdef APP-PLUS
63
+ // 建议在页面onExit方法里调用
64
+ // 接口closeScan(UniJSCallback callback)
65
+ // 结束扫描
66
+ barcodeModel?.closeScan((ret: any) => {
67
+ console.log(ret)
68
+ })
69
+ // #endif
70
+ }
71
+
72
+ function stopBarcode() {
73
+ // #ifdef APP-PLUS
74
+ /// 手动调用
75
+ // 停止扫描
76
+ // 接口scanStop(UniJSCallback callback)
77
+ globalEvent?.removeEventListener('iDataBarcodeEvent')
78
+ barcodeModel?.scanStop((ret) => {
79
+ console.log(ret)
80
+ })
81
+
82
+ // #endif
83
+ }
84
+ function startBarcode() {
85
+ // #ifdef APP-PLUS
86
+ // 手动调用
87
+ // 开始扫描
88
+ // 接口scanStop(UniJSCallback callback)
89
+ barcodeModel?.scanStart((ret) => {
90
+ console.log(ret)
91
+ })
92
+ // #endif
93
+ }
94
+ export default {
95
+ initBarcode,
96
+ closeBarcode,
97
+ stopBarcode,
98
+ startBarcode,
99
+ }