@uxda/appkit 4.0.2 → 4.0.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.
Files changed (114) hide show
  1. package/.eslintrc.mjs +7 -7
  2. package/README.md +187 -187
  3. package/babel.config.js +12 -12
  4. package/dist/appkit.css +144 -5
  5. package/dist/index.js +731 -249
  6. package/package.json +75 -80
  7. package/project.config.json +15 -15
  8. package/project.tt.json +13 -13
  9. package/rollup.config.mjs +56 -56
  10. package/src/Appkit.ts +65 -65
  11. package/src/balance/api/endpoints.ts +126 -126
  12. package/src/balance/api/index.ts +82 -82
  13. package/src/balance/components/AccountView.vue +748 -748
  14. package/src/balance/components/BalanceCard.vue +205 -209
  15. package/src/balance/components/BalanceReminder.vue +85 -85
  16. package/src/balance/components/ConsumptionFilter.vue +218 -218
  17. package/src/balance/components/ConsumptionRules.vue +68 -68
  18. package/src/balance/components/DateFilter.vue +226 -226
  19. package/src/balance/components/DateRange.vue +62 -0
  20. package/src/balance/components/ListFilter.vue +40 -0
  21. package/src/balance/components/ListFilterPicker.vue +195 -0
  22. package/src/balance/components/SecondBalance.vue +71 -71
  23. package/src/balance/components/Tip.vue +45 -45
  24. package/src/balance/components/index.ts +13 -9
  25. package/src/balance/types.ts +91 -90
  26. package/src/components/bt-cropper/index.vue +774 -774
  27. package/src/components/bt-cropper/utils/calcCropper.js +42 -42
  28. package/src/components/bt-cropper/utils/calcImagePosition.js +23 -23
  29. package/src/components/bt-cropper/utils/calcImageSize.js +37 -37
  30. package/src/components/bt-cropper/utils/calcPointDistance.js +12 -12
  31. package/src/components/bt-cropper/utils/calcRightAndBottom.js +7 -7
  32. package/src/components/bt-cropper/utils/ratio.js +3 -3
  33. package/src/components/bt-cropper/utils/tools.js +25 -25
  34. package/src/components/dd-area/index.vue +225 -225
  35. package/src/components/dd-icon/doc.md +21 -21
  36. package/src/components/dd-icon/index.vue +23 -23
  37. package/src/components/dd-notice-bar/index.vue +78 -78
  38. package/src/components/dd-search/doc.md +34 -34
  39. package/src/components/dd-search/index.vue +168 -168
  40. package/src/components/dd-selector/index.vue +124 -124
  41. package/src/components/dd-skeleton/doc.md +19 -19
  42. package/src/components/dd-skeleton/index.vue +36 -36
  43. package/src/components/ocr-id/index.vue +114 -114
  44. package/src/components/ocr-id/types.d.ts +12 -12
  45. package/src/global.ts +6 -6
  46. package/src/index.ts +89 -89
  47. package/src/main.scss +1 -1
  48. package/src/notice/api/endpoints.ts +17 -17
  49. package/src/notice/api/index.ts +82 -82
  50. package/src/notice/components/NoticeBanner.vue +243 -243
  51. package/src/notice/components/NoticeEntry.vue +99 -99
  52. package/src/notice/components/NoticeList.vue +315 -315
  53. package/src/notice/components/NoticePopup.vue +161 -161
  54. package/src/notice/components/index.ts +5 -5
  55. package/src/notice/components/useCommonList.ts +86 -86
  56. package/src/notice/components/useNotice.ts +35 -35
  57. package/src/notice/index.ts +1 -1
  58. package/src/notice/types.ts +25 -25
  59. package/src/payment/api/config.ts +7 -7
  60. package/src/payment/api/endpoints.ts +103 -103
  61. package/src/payment/api/index.ts +71 -71
  62. package/src/payment/components/AmountPicker.vue +93 -93
  63. package/src/payment/components/RechargeResult.vue +69 -69
  64. package/src/payment/components/RechargeView.vue +154 -154
  65. package/src/payment/components/RightsPicker.vue +105 -105
  66. package/src/payment/components/TradeView.vue +298 -298
  67. package/src/payment/components/UserAgreement.vue +234 -234
  68. package/src/payment/components/index.ts +22 -22
  69. package/src/payment/index.ts +5 -5
  70. package/src/payment/services/index.ts +16 -16
  71. package/src/payment/services/invoke-recharge.ts +25 -25
  72. package/src/payment/services/request-payment.ts +58 -58
  73. package/src/payment/types.ts +28 -28
  74. package/src/register/components/SelfRegistration.vue +254 -254
  75. package/src/register/components/index.ts +2 -2
  76. package/src/shared/components/AppDrawer.vue +58 -58
  77. package/src/shared/components/AppVerify.vue +84 -0
  78. package/src/shared/components/DeviceVersion.vue +68 -68
  79. package/src/shared/components/EmptyView.vue +33 -33
  80. package/src/shared/components/OcrIcon.vue +119 -0
  81. package/src/shared/components/PageHeader.vue +79 -79
  82. package/src/shared/components/index.ts +7 -5
  83. package/src/shared/composables/index.ts +6 -5
  84. package/src/shared/composables/useCountdown.ts +46 -46
  85. package/src/shared/composables/useDragBox.ts +97 -97
  86. package/src/shared/composables/useEncode.ts +43 -43
  87. package/src/shared/composables/useSafeArea.ts +46 -46
  88. package/src/shared/composables/useTabbar.ts +24 -24
  89. package/src/shared/composables/useUpload.ts +55 -0
  90. package/src/shared/composables/useValidator.ts +31 -31
  91. package/src/shared/http/Http.ts +136 -136
  92. package/src/shared/http/index.ts +1 -1
  93. package/src/shared/http/types.ts +157 -157
  94. package/src/shared/index.ts +3 -3
  95. package/src/shared/weixin/payment.ts +38 -38
  96. package/src/styles/fonts.scss +2 -2
  97. package/src/styles/vars.scss +3 -3
  98. package/src/user/api/endpoints.ts +17 -17
  99. package/src/user/api/index.ts +87 -87
  100. package/src/user/components/LoginSetting.vue +114 -114
  101. package/src/user/components/UserBinding.vue +307 -307
  102. package/src/user/components/UserBindingSuccess.vue +80 -80
  103. package/src/user/components/UserEntry.vue +142 -142
  104. package/src/user/components/UserFeedback.vue +440 -440
  105. package/src/user/components/UserFeedbackEntry.vue +192 -192
  106. package/src/user/components/UserHeadCrop.vue +65 -65
  107. package/src/user/components/UserInfo.vue +632 -632
  108. package/src/user/components/UserResourceEmpty.vue +75 -75
  109. package/src/user/components/index.ts +21 -21
  110. package/src/user/index.ts +1 -1
  111. package/tsconfig.json +30 -30
  112. package/types/global.d.ts +21 -21
  113. package/types/vue.d.ts +10 -10
  114. package/dist/assets/asset-3B_CoPto +0 -1
@@ -1,24 +1,24 @@
1
- import { ref } from 'vue'
2
-
3
- const tab = ref<string>(''),
4
- changeCallback = ref<(value: string) => void>(
5
- (value: string) => {
6
- console.log('ORIGINAL changeCallback===', value)
7
- }
8
- )
9
-
10
- const setTab = (value: string) => {
11
- tab.value = value
12
- changeCallback.value(value)
13
- }
14
-
15
- const onTabChange = (callback: (value: string) => void) => {
16
- changeCallback.value = callback
17
- }
18
-
19
- export function useTabbar () {
20
- return {
21
- onTabChange,
22
- setTab
23
- }
24
- }
1
+ import { ref } from 'vue'
2
+
3
+ const tab = ref<string>(''),
4
+ changeCallback = ref<(value: string) => void>(
5
+ (value: string) => {
6
+ console.log('ORIGINAL changeCallback===', value)
7
+ }
8
+ )
9
+
10
+ const setTab = (value: string) => {
11
+ tab.value = value
12
+ changeCallback.value(value)
13
+ }
14
+
15
+ const onTabChange = (callback: (value: string) => void) => {
16
+ changeCallback.value = callback
17
+ }
18
+
19
+ export function useTabbar () {
20
+ return {
21
+ onTabChange,
22
+ setTab
23
+ }
24
+ }
@@ -0,0 +1,55 @@
1
+ import Taro from '@tarojs/taro'
2
+ import { Media } from '@uxda/nutshell/taro'
3
+
4
+ export type UploadConfig = {
5
+ baseUrl: string,
6
+ name?: string,
7
+ headers?: Record<string, string>
8
+ }
9
+
10
+ const mappings = {
11
+ downloadUrl: 'thrumb',
12
+ fileId: 'id',
13
+ fileName: 'name',
14
+ fileSize: 'size',
15
+ fileSuffix: 'ext',
16
+ fileType: 'type',
17
+ originalUrl: 'url'
18
+ }
19
+
20
+ const transformFields = (row: any) => {
21
+ return Object.fromEntries(Object.entries(row).map(([k, v]) => [mappings[k] || k, v]))
22
+ }
23
+
24
+ type UploadFunction = (url: string, file: Media) => Promise<Media>
25
+
26
+ export const useUpload = (config: UploadConfig) => {
27
+ const upload: UploadFunction = (url: string, file: Media) => {
28
+ return new Promise<Media>((resolve, reject) => {
29
+ Taro.uploadFile({
30
+ url: config.baseUrl + url,
31
+ filePath: file.path!,
32
+ name: 'file',
33
+ header: config.headers ?? {
34
+ token: Taro.getStorageSync('session')
35
+ },
36
+ success: (rsp: any) => {
37
+ const { data } = rsp
38
+ console.log('===data', data)
39
+ try {
40
+ const response = JSON.parse(data)
41
+ console.log('===response', response)
42
+ resolve(transformFields(response.result))
43
+ } catch (e) {
44
+ reject({
45
+ message: '文件上传异常'
46
+ })
47
+ }
48
+ },
49
+ })
50
+ })
51
+ }
52
+ return {
53
+ upload
54
+ }
55
+ }
@@ -1,31 +1,31 @@
1
- /**
2
- * 通用表单校验器
3
- */
4
- import { isMobilePhone, isIdentityCard } from 'validator'
5
-
6
- export function useValidator() {
7
- // 身份证号码校验
8
- function certNoValidator(value: unknown) {
9
- if (!value) {
10
- return '请输入身份证号'
11
- } else if (!isIdentityCard(value, 'zh-CN')) {
12
- return '请输入正确的身份证号码'
13
- }
14
- return false
15
- }
16
-
17
- // 电话号码校验
18
- function phoneValidator(value: unknown) {
19
- if (!value) {
20
- return '请输入手机号码'
21
- } else if (!isMobilePhone(value, 'zh-CN')) {
22
- return '请输入正确的手机号'
23
- }
24
- return false
25
- }
26
-
27
- return {
28
- certNoValidator,
29
- phoneValidator,
30
- }
31
- }
1
+ /**
2
+ * 通用表单校验器
3
+ */
4
+ import { isMobilePhone, isIdentityCard } from 'validator'
5
+
6
+ export function useValidator() {
7
+ // 身份证号码校验
8
+ function certNoValidator(value: unknown) {
9
+ if (!value) {
10
+ return '请输入身份证号'
11
+ } else if (!isIdentityCard(value, 'zh-CN')) {
12
+ return '请输入正确的身份证号码'
13
+ }
14
+ return false
15
+ }
16
+
17
+ // 电话号码校验
18
+ function phoneValidator(value: unknown) {
19
+ if (!value) {
20
+ return '请输入手机号码'
21
+ } else if (!isMobilePhone(value, 'zh-CN')) {
22
+ return '请输入正确的手机号'
23
+ }
24
+ return false
25
+ }
26
+
27
+ return {
28
+ certNoValidator,
29
+ phoneValidator,
30
+ }
31
+ }
@@ -1,136 +1,136 @@
1
- import {
2
- HttpInstance,
3
- HttpClientConfig,
4
- HttpMethod,
5
- HttpRequestConfig,
6
- RequestData,
7
- ResponseData,
8
- ResponseRaw,
9
- Paging,
10
- HttpTranslate,
11
- } from './types'
12
- /**
13
- * Useage:
14
- * const $http = createHttp({
15
- *
16
- * })
17
- * $http.get('/url').then(data => {
18
- *
19
- * })
20
- */
21
-
22
- /**
23
- * 统一请求过程
24
- * @param config
25
- * @returns
26
- */
27
- const request: HttpInstance['request'] = <T>(config: HttpRequestConfig) => {
28
- const c = {
29
- ...clientConfig,
30
- ...config,
31
- }
32
- return new Promise<T>((resolve, reject) => {
33
- const data =
34
- config.data && clientConfig.translates && clientConfig.translates[c.url]
35
- ? (clientConfig.translates[c.url] as HttpTranslate)(c.data || {})
36
- : c.data
37
- console.log(`[][][][][]HTTP.${c.method}, ${c.baseUrl}${c.url}`, data)
38
-
39
- clientConfig.vendor &&
40
- clientConfig.vendor
41
- .request({
42
- url: `${c.baseUrl}${c.url}`,
43
- data,
44
- headers: c.headers,
45
- method: c.method,
46
- })
47
- .then((raw: ResponseRaw) => {
48
- // 按顺序执行拦截器
49
- for (const interc of c.interceptors || []) {
50
- const r = interc(raw)
51
- if (r) {
52
- // 某拦截器命中时
53
- // 按拦截结果 决定是否继续执行
54
- reject('===INTERCEPTED===' + raw.status)
55
- return false
56
- }
57
- }
58
- if (raw.data !== void 0) {
59
- // 当用户配置含有 transforms 时, 使用用户提供的 transform
60
- // 先 endpoints transform
61
- // 再组装分页数据
62
- const response =
63
- clientConfig.transforms && clientConfig.transforms[c.url]
64
- ? ((clientConfig.transforms[c.url] as HttpTranslate)(raw.data) as T)
65
- : (raw.data as T)
66
- // 前端要求分页
67
- // 在 endpoints transform 之前格式化分页数据
68
- // 并拼装回原 raw 数据
69
- const paging =
70
- config.data && config.data.page
71
- ? (clientConfig.paging as Paging).transform(raw.data)
72
- : void 0
73
- resolve(
74
- paging
75
- ? ({
76
- ...paging,
77
- data: response,
78
- } as T)
79
- : response
80
- )
81
- } else {
82
- resolve(raw as any)
83
- }
84
- })
85
- .catch((e: any) => {
86
- console.log('request.catch===', e)
87
- })
88
- })
89
- }
90
-
91
- const get: HttpInstance['get'] = <T = ResponseData>(url: string, data?: RequestData) => {
92
- return request<T>({
93
- url,
94
- data,
95
- method: HttpMethod.get,
96
- })
97
- }
98
-
99
- const post: HttpInstance['post'] = <T = ResponseData>(url: string, data: RequestData) => {
100
- return request<T>({
101
- url,
102
- data,
103
- method: HttpMethod.post,
104
- })
105
- }
106
-
107
- /**
108
- * 场景配置
109
- * 本地后台团队统一返回值外层
110
- */
111
- const defaultClientConfig: HttpClientConfig = {
112
- baseUrl: '/',
113
- interceptors: [(raw) => raw.status == 401],
114
- }
115
-
116
- let clientConfig = {
117
- ...defaultClientConfig,
118
- }
119
-
120
- /**
121
- * 写入配置并返回 HTTP instance
122
- * @param config
123
- * @returns
124
- */
125
- export function createHttp(config: HttpClientConfig): HttpInstance {
126
- clientConfig = {
127
- ...defaultClientConfig,
128
- ...config,
129
- }
130
-
131
- return {
132
- request,
133
- get,
134
- post,
135
- }
136
- }
1
+ import {
2
+ HttpInstance,
3
+ HttpClientConfig,
4
+ HttpMethod,
5
+ HttpRequestConfig,
6
+ RequestData,
7
+ ResponseData,
8
+ ResponseRaw,
9
+ Paging,
10
+ HttpTranslate,
11
+ } from './types'
12
+ /**
13
+ * Useage:
14
+ * const $http = createHttp({
15
+ *
16
+ * })
17
+ * $http.get('/url').then(data => {
18
+ *
19
+ * })
20
+ */
21
+
22
+ /**
23
+ * 统一请求过程
24
+ * @param config
25
+ * @returns
26
+ */
27
+ const request: HttpInstance['request'] = <T>(config: HttpRequestConfig) => {
28
+ const c = {
29
+ ...clientConfig,
30
+ ...config,
31
+ }
32
+ return new Promise<T>((resolve, reject) => {
33
+ const data =
34
+ config.data && clientConfig.translates && clientConfig.translates[c.url]
35
+ ? (clientConfig.translates[c.url] as HttpTranslate)(c.data || {})
36
+ : c.data
37
+ console.log(`[][][][][]HTTP.${c.method}, ${c.baseUrl}${c.url}`, data)
38
+
39
+ clientConfig.vendor &&
40
+ clientConfig.vendor
41
+ .request({
42
+ url: `${c.baseUrl}${c.url}`,
43
+ data,
44
+ headers: c.headers,
45
+ method: c.method,
46
+ })
47
+ .then((raw: ResponseRaw) => {
48
+ // 按顺序执行拦截器
49
+ for (const interc of c.interceptors || []) {
50
+ const r = interc(raw)
51
+ if (r) {
52
+ // 某拦截器命中时
53
+ // 按拦截结果 决定是否继续执行
54
+ reject('===INTERCEPTED===' + raw.status)
55
+ return false
56
+ }
57
+ }
58
+ if (raw.data !== void 0) {
59
+ // 当用户配置含有 transforms 时, 使用用户提供的 transform
60
+ // 先 endpoints transform
61
+ // 再组装分页数据
62
+ const response =
63
+ clientConfig.transforms && clientConfig.transforms[c.url]
64
+ ? ((clientConfig.transforms[c.url] as HttpTranslate)(raw.data) as T)
65
+ : (raw.data as T)
66
+ // 前端要求分页
67
+ // 在 endpoints transform 之前格式化分页数据
68
+ // 并拼装回原 raw 数据
69
+ const paging =
70
+ config.data && config.data.page
71
+ ? (clientConfig.paging as Paging).transform(raw.data)
72
+ : void 0
73
+ resolve(
74
+ paging
75
+ ? ({
76
+ ...paging,
77
+ data: response,
78
+ } as T)
79
+ : response
80
+ )
81
+ } else {
82
+ resolve(raw as any)
83
+ }
84
+ })
85
+ .catch((e: any) => {
86
+ console.log('request.catch===', e)
87
+ })
88
+ })
89
+ }
90
+
91
+ const get: HttpInstance['get'] = <T = ResponseData>(url: string, data?: RequestData) => {
92
+ return request<T>({
93
+ url,
94
+ data,
95
+ method: HttpMethod.get,
96
+ })
97
+ }
98
+
99
+ const post: HttpInstance['post'] = <T = ResponseData>(url: string, data: RequestData) => {
100
+ return request<T>({
101
+ url,
102
+ data,
103
+ method: HttpMethod.post,
104
+ })
105
+ }
106
+
107
+ /**
108
+ * 场景配置
109
+ * 本地后台团队统一返回值外层
110
+ */
111
+ const defaultClientConfig: HttpClientConfig = {
112
+ baseUrl: '/',
113
+ interceptors: [(raw) => raw.status == 401],
114
+ }
115
+
116
+ let clientConfig = {
117
+ ...defaultClientConfig,
118
+ }
119
+
120
+ /**
121
+ * 写入配置并返回 HTTP instance
122
+ * @param config
123
+ * @returns
124
+ */
125
+ export function createHttp(config: HttpClientConfig): HttpInstance {
126
+ clientConfig = {
127
+ ...defaultClientConfig,
128
+ ...config,
129
+ }
130
+
131
+ return {
132
+ request,
133
+ get,
134
+ post,
135
+ }
136
+ }
@@ -1,2 +1,2 @@
1
- export * from './Http'
1
+ export * from './Http'
2
2
  export type * from './types'