@uxda/appkit 4.0.0 → 4.0.2

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 (108) 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 +855 -36
  5. package/dist/assets/asset-DcH8Kg-2 +1 -0
  6. package/dist/index.js +3355 -610
  7. package/package.json +80 -78
  8. package/project.config.json +15 -15
  9. package/project.tt.json +13 -13
  10. package/rollup.config.mjs +56 -54
  11. package/src/Appkit.ts +65 -65
  12. package/src/balance/api/endpoints.ts +126 -126
  13. package/src/balance/api/index.ts +82 -82
  14. package/src/balance/components/AccountView.vue +748 -748
  15. package/src/balance/components/BalanceCard.vue +209 -209
  16. package/src/balance/components/BalanceReminder.vue +85 -85
  17. package/src/balance/components/ConsumptionFilter.vue +218 -218
  18. package/src/balance/components/ConsumptionRules.vue +68 -68
  19. package/src/balance/components/DateFilter.vue +226 -236
  20. package/src/balance/components/SecondBalance.vue +71 -71
  21. package/src/balance/components/Tip.vue +45 -45
  22. package/src/balance/components/index.ts +9 -9
  23. package/src/balance/types.ts +90 -90
  24. package/src/components/bt-cropper/index.vue +774 -0
  25. package/src/components/bt-cropper/utils/calcCropper.js +42 -0
  26. package/src/components/bt-cropper/utils/calcImagePosition.js +23 -0
  27. package/src/components/bt-cropper/utils/calcImageSize.js +37 -0
  28. package/src/components/bt-cropper/utils/calcPointDistance.js +12 -0
  29. package/src/components/bt-cropper/utils/calcRightAndBottom.js +7 -0
  30. package/src/components/bt-cropper/utils/ratio.js +3 -0
  31. package/src/components/bt-cropper/utils/tools.js +25 -0
  32. package/src/components/dd-area/index.vue +225 -225
  33. package/src/components/dd-icon/doc.md +21 -21
  34. package/src/components/dd-icon/index.vue +23 -23
  35. package/src/components/dd-notice-bar/index.vue +78 -78
  36. package/src/components/dd-search/doc.md +34 -34
  37. package/src/components/dd-search/index.vue +168 -168
  38. package/src/components/dd-selector/index.vue +124 -124
  39. package/src/components/dd-skeleton/doc.md +19 -0
  40. package/src/components/dd-skeleton/index.vue +36 -0
  41. package/src/components/ocr-id/index.vue +114 -114
  42. package/src/components/ocr-id/types.d.ts +12 -12
  43. package/src/global.ts +6 -6
  44. package/src/index.ts +89 -88
  45. package/src/main.scss +1 -1
  46. package/src/notice/api/endpoints.ts +17 -17
  47. package/src/notice/api/index.ts +82 -82
  48. package/src/notice/components/NoticeBanner.vue +243 -243
  49. package/src/notice/components/NoticeEntry.vue +99 -99
  50. package/src/notice/components/NoticeList.vue +315 -278
  51. package/src/notice/components/NoticePopup.vue +161 -163
  52. package/src/notice/components/index.ts +5 -6
  53. package/src/notice/components/useCommonList.ts +86 -86
  54. package/src/notice/components/useNotice.ts +35 -35
  55. package/src/notice/index.ts +1 -1
  56. package/src/notice/types.ts +25 -25
  57. package/src/payment/api/config.ts +7 -7
  58. package/src/payment/api/endpoints.ts +103 -103
  59. package/src/payment/api/index.ts +71 -71
  60. package/src/payment/components/AmountPicker.vue +93 -93
  61. package/src/payment/components/RechargeResult.vue +69 -69
  62. package/src/payment/components/RechargeView.vue +154 -154
  63. package/src/payment/components/RightsPicker.vue +105 -105
  64. package/src/payment/components/TradeView.vue +298 -298
  65. package/src/payment/components/UserAgreement.vue +234 -142
  66. package/src/payment/components/index.ts +22 -22
  67. package/src/payment/index.ts +5 -5
  68. package/src/payment/services/index.ts +16 -16
  69. package/src/payment/services/invoke-recharge.ts +25 -25
  70. package/src/payment/services/request-payment.ts +58 -58
  71. package/src/payment/types.ts +28 -28
  72. package/src/register/components/SelfRegistration.vue +254 -228
  73. package/src/register/components/index.ts +2 -2
  74. package/src/shared/components/AppDrawer.vue +58 -58
  75. package/src/shared/components/DeviceVersion.vue +68 -67
  76. package/src/shared/components/EmptyView.vue +33 -33
  77. package/src/shared/components/PageHeader.vue +79 -79
  78. package/src/shared/components/index.ts +5 -5
  79. package/src/shared/composables/index.ts +5 -2
  80. package/src/shared/composables/useCountdown.ts +46 -0
  81. package/src/shared/composables/useDragBox.ts +97 -0
  82. package/src/shared/composables/useEncode.ts +43 -0
  83. package/src/shared/composables/useSafeArea.ts +46 -46
  84. package/src/shared/composables/useTabbar.ts +24 -24
  85. package/src/shared/composables/useValidator.ts +31 -0
  86. package/src/shared/http/Http.ts +136 -135
  87. package/src/shared/http/index.ts +1 -1
  88. package/src/shared/http/types.ts +157 -157
  89. package/src/shared/index.ts +3 -3
  90. package/src/shared/weixin/payment.ts +38 -38
  91. package/src/styles/fonts.scss +2 -2
  92. package/src/styles/vars.scss +3 -3
  93. package/src/user/api/endpoints.ts +17 -0
  94. package/src/user/api/index.ts +87 -0
  95. package/src/{notice → user}/components/LoginSetting.vue +114 -112
  96. package/src/user/components/UserBinding.vue +307 -0
  97. package/src/user/components/UserBindingSuccess.vue +80 -0
  98. package/src/user/components/UserEntry.vue +142 -0
  99. package/src/user/components/UserFeedback.vue +440 -0
  100. package/src/user/components/UserFeedbackEntry.vue +192 -0
  101. package/src/user/components/UserHeadCrop.vue +65 -0
  102. package/src/user/components/UserInfo.vue +632 -0
  103. package/src/user/components/UserResourceEmpty.vue +75 -0
  104. package/src/user/components/index.ts +21 -0
  105. package/src/user/index.ts +1 -0
  106. package/tsconfig.json +30 -30
  107. package/types/global.d.ts +21 -21
  108. package/types/vue.d.ts +10 -10
@@ -0,0 +1,192 @@
1
+ <template>
2
+ <div
3
+ :style="dragStyle"
4
+ @touchstart="onDragStart"
5
+ @touchmove="onDragMoveHandler"
6
+ @touchend="onDragEndHandler"
7
+ class="user-feedback-entry"
8
+ @click="onJump"
9
+ v-if="!hasStorage"
10
+ >
11
+ <img
12
+ class="user-feedback-entry-icon"
13
+ mode="aspectFit"
14
+ src="https://cdn.ddjf.com/static/images/customer-center/feedback.png"
15
+ />
16
+ <div>反馈</div>
17
+ </div>
18
+ <div
19
+ :style="dragStyle1"
20
+ @touchstart="onDragStart1"
21
+ @touchmove="onDragMoveHandler1"
22
+ @touchend="onDragEndHandler1"
23
+ class="user-feedback-entry hasStorage"
24
+ v-else
25
+ >
26
+ <img
27
+ class="user-feedback-entry-icon"
28
+ @click="onJump"
29
+ mode="aspectFit"
30
+ src="https://cdn.ddjf.com/static/images/customer-center/feedback-icon.png"
31
+ />
32
+ <div class="user-feedback-entry-close" @click="onClose">
33
+ <img
34
+ class="user-feedback-entry-close-img"
35
+ src="https://cdn.ddjf.com/static/images/customer-center/close-filled.png"
36
+ />
37
+ </div>
38
+ </div>
39
+ </template>
40
+
41
+ <script lang="ts" setup>
42
+ import { computed, onMounted } from 'vue'
43
+ import { useDragBox } from '../../shared/composables/useDragBox'
44
+ import { useSafeArea } from '../../shared/composables'
45
+ import Taro from '@tarojs/taro'
46
+
47
+ const props = withDefaults(
48
+ defineProps<{
49
+ hasStorage?: boolean
50
+ withTabbar?: boolean
51
+ withNavbar?: boolean
52
+ }>(),
53
+ {
54
+ hasStorage: false,
55
+ withTabbar: false,
56
+ withNavbar: false,
57
+ }
58
+ )
59
+
60
+ // 点击关闭
61
+ function onClose() {
62
+ emits('close')
63
+ }
64
+
65
+ // 点击跳转
66
+ function onJump() {
67
+ emits('jump')
68
+ }
69
+
70
+ const safeArea = useSafeArea()
71
+ /** 浮动按钮拖拽功能 */
72
+ const { dragData, initDragData, onDragStart, onDragMove, onDragEnd } = useDragBox()
73
+ const dragStyle = computed(() => {
74
+ return `left:${dragData.left}px; top:${dragData.top}px; width:${dragData.width}px; height:${dragData.height}px;`
75
+ })
76
+ function onDragMoveHandler(e: TouchEvent) {
77
+ emits('drag', true)
78
+ onDragMove(e)
79
+ }
80
+ function onDragEndHandler() {
81
+ emits('drag', false)
82
+ onDragEnd()
83
+ }
84
+
85
+ const {
86
+ dragData: dragData1,
87
+ initDragData: initDragData1,
88
+ onDragStart: onDragStart1,
89
+ onDragMove: onDragMove1,
90
+ onDragEnd: onDragEnd1,
91
+ } = useDragBox()
92
+ const dragStyle1 = computed(() => {
93
+ return `left:${dragData1.left}px; top:${dragData1.top}px; width:${dragData1.width}px; height:${dragData1.height}px;`
94
+ })
95
+ function onDragMoveHandler1(e: TouchEvent) {
96
+ emits('drag', true)
97
+ onDragMove1(e)
98
+ }
99
+ function onDragEndHandler1() {
100
+ emits('drag', false)
101
+ onDragEnd1()
102
+ }
103
+
104
+ onMounted(async () => {
105
+ const systemInfo = Taro.getSystemInfoSync()
106
+ const safeHeight = (systemInfo.safeArea || {}).height || systemInfo.screenHeight
107
+ const height = safeHeight > 620 ? 620 : safeHeight - 80
108
+
109
+ const navbarHeight = safeArea.nav + safeArea.status
110
+ // 初始化拖拽元素
111
+ initDragData({
112
+ width: 40,
113
+ height: 40,
114
+ left: 324,
115
+ top: props.withNavbar ? height - navbarHeight : height,
116
+ limitVertical: [
117
+ !props.withNavbar ? navbarHeight : 0,
118
+ props.withTabbar ? safeArea.menuRect.bottom : 0,
119
+ ],
120
+ })
121
+ initDragData1({
122
+ width: 92,
123
+ height: 43,
124
+ left: 272,
125
+ top: props.withNavbar ? height - navbarHeight : height,
126
+ limitVertical: [
127
+ !props.withNavbar ? navbarHeight : 0,
128
+ props.withTabbar ? safeArea.menuRect.bottom : 0,
129
+ ],
130
+ })
131
+ })
132
+
133
+ // 父组件事件
134
+ const emits = defineEmits(['close', 'jump', 'drag'])
135
+ </script>
136
+
137
+ <style lang="scss">
138
+ .user-feedback-entry {
139
+ position: fixed;
140
+ z-index: 10;
141
+ right: 12px;
142
+ bottom: calc(120px + env(safe-area-inset-bottom, 0px));
143
+ display: flex;
144
+ flex-direction: column;
145
+ align-items: center;
146
+ justify-content: center;
147
+ background: #fff;
148
+ box-shadow: 0px 2px 5px 0px #006ee51a;
149
+ width: 40px;
150
+ height: 40px;
151
+ border-radius: 50%;
152
+ color: rgba(0, 0, 0, 0.5);
153
+ font-size: 10px;
154
+ &-icon {
155
+ width: 13px;
156
+ height: 13px;
157
+ margin-bottom: 1px;
158
+ }
159
+ &:active {
160
+ background: rgba(255, 255, 255, 0.7);
161
+ }
162
+
163
+ &.hasStorage {
164
+ width: 92px;
165
+ height: 43px;
166
+ background: transparent;
167
+ box-shadow: none;
168
+ .user-feedback-entry-icon {
169
+ width: 100%;
170
+ height: 100%;
171
+ }
172
+ &:active {
173
+ background: transparent;
174
+ }
175
+
176
+ .user-feedback-entry-close {
177
+ position: absolute;
178
+ top: -6px;
179
+ right: -6px;
180
+ width: 20px;
181
+ height: 20px;
182
+ display: flex;
183
+ justify-content: center;
184
+ align-items: center;
185
+ &-img {
186
+ width: 10px;
187
+ height: 10px;
188
+ }
189
+ }
190
+ }
191
+ }
192
+ </style>
@@ -0,0 +1,65 @@
1
+ <template>
2
+ <div class="user-head-crop">
3
+ <bt-cropper ref="cropperRef" :imageSrc="params.src" :ratio="1">
4
+ <div class="user-head-crop-btns">
5
+ <div class="cbtn" @click="onCancel">取消</div>
6
+ <div class="cbtn comfirmBtn" @click="onConfirm">确定</div>
7
+ </div>
8
+ </bt-cropper>
9
+ </div>
10
+ </template>
11
+
12
+ <script lang="ts" setup>
13
+ import Taro, { useRouter } from '@tarojs/taro'
14
+ import { ref } from 'vue'
15
+ import btCropper from '../../components/bt-cropper/index.vue'
16
+
17
+ const { params } = useRouter()
18
+ const cropperRef = ref()
19
+
20
+ // 取消
21
+ function onCancel() {
22
+ Taro.navigateBack({
23
+ delta: 1,
24
+ })
25
+ }
26
+
27
+ // 确认裁剪
28
+ async function onConfirm() {
29
+ const [err, res] = await cropperRef.value.crop()
30
+ if (err) {
31
+ Taro.showModal({
32
+ title: '温馨提示',
33
+ content: err.message,
34
+ confirmColor: '#017fff',
35
+ })
36
+ } else {
37
+ Taro.eventCenter.trigger('USER-HEAD-CROP-OK', res.tempFilePath)
38
+ onCancel()
39
+ }
40
+ }
41
+ </script>
42
+
43
+ <style lang="scss">
44
+ .user-head-crop {
45
+ height: 100vh;
46
+ &-btns {
47
+ position: absolute;
48
+ bottom: 0;
49
+ left: 0;
50
+ width: 100%;
51
+ height: 50px;
52
+ padding: 0 20px;
53
+ box-sizing: border-box;
54
+ line-height: 50px;
55
+ display: flex;
56
+ justify-content: space-between;
57
+ }
58
+ .cbtn {
59
+ color: #fff;
60
+ }
61
+ .comfirmBtn {
62
+ color: var(--app-primary-color, #017fff);
63
+ }
64
+ }
65
+ </style>