@uxda/appkit 4.0.3 → 4.0.14

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 (116) hide show
  1. package/.eslintrc.mjs +7 -7
  2. package/README.md +187 -187
  3. package/babel.config.js +12 -12
  4. package/package.json +75 -80
  5. package/project.config.json +15 -15
  6. package/project.tt.json +13 -13
  7. package/rollup.config.mjs +56 -56
  8. package/src/Appkit.ts +65 -65
  9. package/src/balance/api/endpoints.ts +126 -126
  10. package/src/balance/api/index.ts +82 -82
  11. package/src/balance/components/AccountView.vue +748 -748
  12. package/src/balance/components/BalanceCard.vue +205 -209
  13. package/src/balance/components/BalanceReminder.vue +85 -85
  14. package/src/balance/components/ConsumptionFilter.vue +218 -218
  15. package/src/balance/components/ConsumptionRules.vue +68 -68
  16. package/src/balance/components/DateFilter.vue +227 -226
  17. package/src/balance/components/DateRange.vue +78 -0
  18. package/src/balance/components/ListFilter.vue +64 -0
  19. package/src/balance/components/ListFilterPicker.vue +187 -0
  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 +13 -9
  23. package/src/balance/types.ts +91 -90
  24. package/src/components/bt-cropper/index.vue +774 -774
  25. package/src/components/bt-cropper/utils/calcCropper.js +42 -42
  26. package/src/components/bt-cropper/utils/calcImagePosition.js +23 -23
  27. package/src/components/bt-cropper/utils/calcImageSize.js +37 -37
  28. package/src/components/bt-cropper/utils/calcPointDistance.js +12 -12
  29. package/src/components/bt-cropper/utils/calcRightAndBottom.js +7 -7
  30. package/src/components/bt-cropper/utils/ratio.js +3 -3
  31. package/src/components/bt-cropper/utils/tools.js +25 -25
  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 -19
  40. package/src/components/dd-skeleton/index.vue +36 -36
  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 -89
  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 -315
  51. package/src/notice/components/NoticePopup.vue +161 -161
  52. package/src/notice/components/index.ts +5 -5
  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 -234
  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 -254
  73. package/src/register/components/index.ts +2 -2
  74. package/src/shared/components/AppDrawer.vue +58 -58
  75. package/src/shared/components/AppVerify.vue +98 -0
  76. package/src/shared/components/DeviceVersion.vue +68 -68
  77. package/src/shared/components/EmptyView.vue +33 -33
  78. package/src/shared/components/OcrIcon.vue +119 -0
  79. package/src/shared/components/PageHeader.vue +79 -79
  80. package/src/shared/components/index.ts +7 -5
  81. package/src/shared/composables/index.ts +7 -5
  82. package/src/shared/composables/useCountdown.ts +46 -46
  83. package/src/shared/composables/useCrypto.ts +76 -0
  84. package/src/shared/composables/useDragBox.ts +97 -97
  85. package/src/shared/composables/useEncode.ts +43 -43
  86. package/src/shared/composables/useSafeArea.ts +46 -46
  87. package/src/shared/composables/useTabbar.ts +24 -24
  88. package/src/shared/composables/useUpload.ts +55 -0
  89. package/src/shared/composables/useValidator.ts +31 -31
  90. package/src/shared/http/Http.ts +136 -136
  91. package/src/shared/http/index.ts +1 -1
  92. package/src/shared/http/types.ts +157 -157
  93. package/src/shared/index.ts +3 -3
  94. package/src/shared/weixin/payment.ts +38 -38
  95. package/src/styles/fonts.scss +2 -2
  96. package/src/styles/vars.scss +3 -3
  97. package/src/user/api/endpoints.ts +17 -17
  98. package/src/user/api/index.ts +87 -87
  99. package/src/user/components/LoginSetting.vue +114 -114
  100. package/src/user/components/UserBinding.vue +307 -307
  101. package/src/user/components/UserBindingSuccess.vue +80 -80
  102. package/src/user/components/UserEntry.vue +137 -142
  103. package/src/user/components/UserFeedback.vue +440 -440
  104. package/src/user/components/UserFeedbackEntry.vue +192 -192
  105. package/src/user/components/UserHeadCrop.vue +65 -65
  106. package/src/user/components/UserInfo.vue +632 -632
  107. package/src/user/components/UserResourceEmpty.vue +75 -75
  108. package/src/user/components/index.ts +21 -21
  109. package/src/user/index.ts +1 -1
  110. package/tsconfig.json +30 -30
  111. package/types/global.d.ts +21 -21
  112. package/types/vue.d.ts +10 -10
  113. package/dist/appkit.css +0 -2331
  114. package/dist/assets/asset-3B_CoPto +0 -1
  115. package/dist/assets/asset-DcH8Kg-2 +0 -1
  116. package/dist/index.js +0 -7176
@@ -0,0 +1,187 @@
1
+ <template>
2
+ <div class="list-filter-picker">
3
+ <div class="list-filter-picker-title">
4
+ <h3>选择筛选项</h3>
5
+ </div>
6
+ <div class="consumption-filter-content">
7
+ <template v-for="(item, index) in filterSections" :key="index">
8
+ <div class="title">{{ item.label }}</div>
9
+ <div class="info">
10
+ <div
11
+ v-for="(it, i) in item.data"
12
+ @click="() => onFilterSectionClick(item.name, it.value)"
13
+ :class="getItemClass(item.name, it.value)"
14
+ class="info-item"
15
+ :key="i">
16
+ {{ typeof it === 'string' ? it : it.label }}
17
+ </div>
18
+ </div>
19
+ </template>
20
+ </div>
21
+ <div class="consumption-filter-btn spa-between">
22
+ <div class="btn" @click="reset">重置</div>
23
+ <div class="btn confirm" @click="onOkClick">确定</div>
24
+ </div>
25
+ <div class="consumption-filter-bottom"></div>
26
+ </div>
27
+ </template>
28
+
29
+ <script lang="ts" setup>
30
+ import { reactive, ref } from 'vue'
31
+ import { endpoints, useHttp } from '../api'
32
+ import { UniData, UniDataItem } from '@uxda/nutshell/taro'
33
+
34
+ const $http = useHttp()
35
+
36
+ type ListFilterPickerModel = Record<string, string[]>
37
+
38
+ interface ListFilterPickerProps {
39
+ modelValue: ListFilterPickerModel
40
+ }
41
+
42
+ const props =
43
+ defineProps<ListFilterPickerProps>()
44
+
45
+ const emit = defineEmits(['complete'])
46
+
47
+ const result = ref<ListFilterPickerModel>(props.modelValue)
48
+
49
+ type FilterSecion = {
50
+ label: string,
51
+ name: string,
52
+ data: UniDataItem[]
53
+ }
54
+
55
+ /**
56
+ * 筛选项目里面所有按钮
57
+ */
58
+ const filterSections = ref<FilterSecion[]>([
59
+ {
60
+ label: '明细类型',
61
+ name: 'type',
62
+ data: [
63
+ {
64
+ label: '全部',
65
+ value: ''
66
+ },
67
+ {
68
+ label: '提现',
69
+ value: 'withdrawal'
70
+ },
71
+ {
72
+ label: '收益',
73
+ value: 'income'
74
+ },
75
+ {
76
+ label: '兑换',
77
+ value: 'exchange'
78
+ }
79
+ ]
80
+ },
81
+ ])
82
+
83
+ const getItemClass = (name: string, value: string) => result.value[name]?.includes(value) ? ['current'] : ['']
84
+
85
+ const onFilterSectionClick = (index: string, value: string) => {
86
+ result.value[index] = [value]
87
+ }
88
+
89
+ const reset = () => {
90
+ result.value = {}
91
+ }
92
+
93
+ const onOkClick = () => {
94
+ emit('complete', result)
95
+ }
96
+ </script>
97
+ <style lang="scss">
98
+ .list-filter-picker {
99
+ display: flex;
100
+ flex-direction: column;
101
+ width: 100%;
102
+ &-title {
103
+ position: relative;
104
+ height: 44px;
105
+ line-height: 44px;
106
+ font-size: 17px;
107
+ color: #353535;
108
+ background: #f5f5f5;
109
+ text-align: center;
110
+ }
111
+ &-content {
112
+ flex: 1;
113
+ margin: 15px;
114
+ overflow-y: scroll;
115
+ color: #353535;
116
+ font-size: 13px;
117
+ .title {
118
+ opacity: 0.6;
119
+ line-height: 18px;
120
+ }
121
+ .info {
122
+ display: grid;
123
+ grid-template-columns: 1fr 1fr 1fr;
124
+ grid-gap: 10px;
125
+ margin: 10px 0;
126
+ &-item {
127
+ height: 30px;
128
+ line-height: 30px;
129
+ border: 1px solid #ccc;
130
+ border-radius: 6px;
131
+ text-align: center;
132
+ }
133
+ .current {
134
+ border-radius: 5px;
135
+ border: 1px solid #EFD082;
136
+ background: linear-gradient(180deg, #FFF7E3 0%, #FEFDE6 100%);
137
+ }
138
+ }
139
+ }
140
+ &-btn {
141
+ margin: 0 15px;
142
+ display: flex;
143
+ justify-content: space-between;
144
+ align-items: center;
145
+ .btn {
146
+ flex: 1;
147
+ height: 40px;
148
+ line-height: 40px;
149
+ text-align: center;
150
+ border: 1px solid #ccc;
151
+ box-sizing: border-box;
152
+ color: #666;
153
+ font-size: 16px;
154
+ border-radius: 6px;
155
+ }
156
+ .confirm {
157
+ margin-left: 11px;
158
+ color: #000;
159
+ border: none;
160
+ background: linear-gradient(
161
+ 90deg,
162
+ #ffebc1 0%,
163
+ #ffd7a7 52.29%,
164
+ #ffb875 100%
165
+ );
166
+ }
167
+ }
168
+ &-bottom {
169
+ height: 32px;
170
+ background: #fff;
171
+ }
172
+ .icon {
173
+ display: block;
174
+ width: 20px;
175
+ height: 20px;
176
+ background-size: 40px;
177
+ background-repeat: no-repeat;
178
+ background-position: center center;
179
+ &.icon-x {
180
+ position: absolute;
181
+ right: 10px;
182
+ top: 11px;
183
+ background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDIiIGhlaWdodD0iNDIiIHZpZXdCb3g9IjAgMCA0MiA0MiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggb3BhY2l0eT0iMC4wMSIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MSA0MUgxVjFINDFWNDFaIiBmaWxsPSIjRDhEOEQ4IiBzdHJva2U9ImJsYWNrIiBzdHJva2Utb3BhY2l0eT0iMC4wMSIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIzLjM1NjEgMjAuOTk5OUwzMy45NjM3IDMxLjYwNzJDMzQuNjE0NiAzMi4yNTgxIDM0LjYxNDYgMzMuMzEzNCAzMy45NjM3IDMzLjk2NDJDMzMuMzQyNSAzNC41ODU1IDMyLjM1MjcgMzQuNjEzOCAzMS42OTc5IDM0LjA0ODlMMjAuOTk5NCAyMy4zNTY2TDEwLjM5MzUgMzMuOTY0MkM5Ljc0MjY1IDM0LjYxNTEgOC42ODczOCAzNC42MTUxIDguMDM2NSAzMy45NjQyQzcuNDE1MTkgMzMuMzQyOSA3LjM4Njk3IDMyLjM1MzIgNy45NTE3OSAzMS42OTg0TDE4LjY0MjggMjAuOTk5OUw4LjAzNjUgMTAuMzk0QzcuMzg1NjMgOS43NDMxNCA3LjM4NTYzIDguNjg3ODcgOC4wMzY1IDguMDM2OTlDOC42NTc3OSA3LjQxNTY4IDkuNjQ3NTQgNy4zODc0NiAxMC4zMDIzIDcuOTUyMjdMMjAuOTk5NCAxOC42NDMzTDMxLjYwNjcgOC4wMzY5OUMzMi4yNTc2IDcuMzg2MTIgMzMuMzEyOSA3LjM4NjEyIDMzLjk2MzcgOC4wMzY5OUMzNC41ODUgOC42NTgyOCAzNC42MTMzIDkuNjQ4MDMgMzQuMDQ4NSAxMC4zMDI4TDIzLjM1NjEgMjAuOTk5OVoiIGZpbGw9IiMxNzFBMUQiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS1vcGFjaXR5PSIwLjAxIi8+Cjwvc3ZnPgo=")
184
+ }
185
+ }
186
+ }
187
+ </style>
@@ -1,71 +1,71 @@
1
- <template>
2
- <div class="second-balance">
3
- <page-header title="权益余额" />
4
- <div class="positions" v-if="data.length">
5
- <div class="position" v-for="(item, index) in data" :key="index">
6
- <div class="icon"></div>
7
- <label class="title">{{ item.title }}</label>
8
- <label class="number amount">{{ item.count }}{{ item.unit }}</label>
9
- </div>
10
- </div>
11
- <empty-view v-else />
12
- </div>
13
- </template>
14
-
15
- <script lang="ts" setup>
16
- import { Privilege } from "../types";
17
- import EmptyView from "../../shared/components/EmptyView.vue";
18
-
19
- // 权益余额
20
- // 由账户页 AccountView 使用 AppDrawer 弹出
21
- type SecondBalanceProps = {
22
- data: Privilege[];
23
- };
24
-
25
- withDefaults(defineProps<SecondBalanceProps>(), {
26
- data: () => [],
27
- });
28
- </script>
29
-
30
- <style lang="scss">
31
- .second-balance {
32
- width: 100vw;
33
- .positions {
34
- padding: 15px;
35
- .position {
36
- border-radius: 5px;
37
- background: #f7f8fa;
38
- height: 54px;
39
- display: flex;
40
- align-items: center;
41
- justify-content: space-around;
42
- margin-bottom: 10px;
43
- padding: 0 10px;
44
- gap: 10px;
45
- .icon {
46
- width: 30px;
47
- height: 30px;
48
- background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAgMCA2MCA2MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE3LjIyODUgMzcuMjY0M0wxMy43OTk5IDQyLjc1QzEzLjYyODUgNDMuMDkyOSAxMy43OTk5IDQzLjUyMTQgMTQuMjI4NSA0My41MjE0TDE4Ljg1NzEgNDMuNzc4NkMxOS4wMjg1IDQzLjc3ODYgMTkuMTE0MiA0My44NjQzIDE5LjE5OTkgNDMuOTVMMjIuMDI4NSA0Ny43MjE0QzIyLjI4NTcgNDcuOTc4NiAyMi43MTQyIDQ3Ljk3ODYgMjIuODg1NyA0Ny43MjE0TDI2LjE0MjggNDIuMzIxNEMyNi4zMTQyIDQyLjA2NDMgMjYuMjI4NSA0MS44MDcxIDI1Ljk3MTQgNDEuNjM1N0wxNy45MTQyIDM3LjA5MjlDMTcuNjU3MSAzNy4wMDcxIDE3LjM5OTkgMzcuMDkyOSAxNy4yMjg1IDM3LjI2NDNaTTQyLjc3MTQgMzcuMTc4Nkw0Ni4xOTk5IDQyLjY2NDNDNDYuMzcxNCA0My4wMDcxIDQ2LjE5OTkgNDMuNDM1NyA0NS43NzE0IDQzLjQzNTdMNDEuMTQyOCA0My42OTI5QzQwLjk3MTQgNDMuNjkyOSA0MC44ODU3IDQzLjc3ODYgNDAuNzk5OSA0My44NjQzTDM3Ljk3MTQgNDcuNjM1N0MzNy43MTQyIDQ3Ljg5MjkgMzcuMjg1NyA0Ny44OTI5IDM3LjExNDIgNDcuNjM1N0wzMy44NTcxIDQyLjIzNTdDMzMuNjg1NyA0MS45Nzg2IDMzLjc3MTQgNDEuNzIxNCAzNC4wMjg1IDQxLjU1TDQyLjA4NTcgMzcuMDA3MUM0Mi4zNDI4IDM2LjgzNTcgNDIuNTk5OSAzNi45MjE0IDQyLjc3MTQgMzcuMTc4NlpNNDIuMDg1NyAxOC40OTI5TDMxLjE5OTkgMTIuMzIxNEMzMC40Mjg1IDExLjg5MjkgMjkuMzk5OSAxMS44OTI5IDI4LjYyODUgMTIuMzIxNEwxNy44Mjg1IDE4LjQwNzFDMTcuMDU3MSAxOC44MzU3IDE2LjU0MjggMTkuNjkyOSAxNi41NDI4IDIwLjU1VjMyLjgwNzFDMTYuNTQyOCAzMy42NjQzIDE3LjA1NzEgMzQuNTIxNCAxNy44Mjg1IDM0Ljk1TDI4LjcxNDIgNDEuMTIxNEMyOS40ODU3IDQxLjU1IDMwLjUxNDIgNDEuNTUgMzEuMjg1NyA0MS4xMjE0TDQyLjA4NTcgMzUuMTIxNEM0Mi44NTcxIDM0LjY5MjkgNDMuMzcxNCAzMy44MzU3IDQzLjM3MTQgMzIuOTc4NlYyMC43MjE0QzQzLjM3MTQgMTkuNzc4NiA0Mi44NTcxIDE4LjkyMTQgNDIuMDg1NyAxOC40OTI5Wk0zNi45NDI4IDIzLjcyMTRMMzAuNTk5OSAzMi44OTI5QzMwLjQyODUgMzMuMTUgMzAuMDg1NyAzMy4zMjE0IDI5Ljc0MjggMzMuMzIxNEMyOS4zOTk5IDMzLjMyMTQgMjkuMDU3MSAzMy4xNSAyOC44ODU3IDMyLjg5MjlMMjIuNzk5OSAyMy43MjE0QzIyLjQ1NzEgMjMuMjkyOSAyMi42Mjg1IDIyLjYwNzEgMjMuMDU3MSAyMi4zNUMyMy40ODU3IDIyLjA5MjkgMjQuMTcxNCAyMi4xNzg2IDI0LjQyODUgMjIuNjA3MUwyOS42NTcxIDMwLjQ5MjlMMzUuMTQyOCAyMi41MjE0QzM1LjQ4NTcgMjIuMDkyOSAzNi4wODU3IDIxLjkyMTQgMzYuNTE0MiAyMi4yNjQzQzM3LjE5OTkgMjIuNjkyOSAzNy4yODU3IDIzLjI5MjkgMzYuOTQyOCAyMy43MjE0WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg=="),
49
- linear-gradient(100deg, #f4e2ce -67.2%, #debb9b 98.15%);
50
- background-repeat: no-repeat;
51
- border-radius: 15px;
52
- background-size: 30px;
53
- flex-basis: 30px;
54
- flex-grow: 0;
55
- }
56
- .title {
57
- flex-grow: 1;
58
- color: #353535;
59
- font-size: 14px;
60
- font-weight: 500;
61
- }
62
- .amount {
63
- flex-grow: 0;
64
- color: #9e7b5a;
65
- font-size: 14px;
66
- font-weight: 700;
67
- }
68
- }
69
- }
70
- }
71
- </style>
1
+ <template>
2
+ <div class="second-balance">
3
+ <page-header title="权益余额" />
4
+ <div class="positions" v-if="data.length">
5
+ <div class="position" v-for="(item, index) in data" :key="index">
6
+ <div class="icon"></div>
7
+ <label class="title">{{ item.title }}</label>
8
+ <label class="number amount">{{ item.count }}{{ item.unit }}</label>
9
+ </div>
10
+ </div>
11
+ <empty-view v-else />
12
+ </div>
13
+ </template>
14
+
15
+ <script lang="ts" setup>
16
+ import { Privilege } from "../types";
17
+ import EmptyView from "../../shared/components/EmptyView.vue";
18
+
19
+ // 权益余额
20
+ // 由账户页 AccountView 使用 AppDrawer 弹出
21
+ type SecondBalanceProps = {
22
+ data: Privilege[];
23
+ };
24
+
25
+ withDefaults(defineProps<SecondBalanceProps>(), {
26
+ data: () => [],
27
+ });
28
+ </script>
29
+
30
+ <style lang="scss">
31
+ .second-balance {
32
+ width: 100vw;
33
+ .positions {
34
+ padding: 15px;
35
+ .position {
36
+ border-radius: 5px;
37
+ background: #f7f8fa;
38
+ height: 54px;
39
+ display: flex;
40
+ align-items: center;
41
+ justify-content: space-around;
42
+ margin-bottom: 10px;
43
+ padding: 0 10px;
44
+ gap: 10px;
45
+ .icon {
46
+ width: 30px;
47
+ height: 30px;
48
+ background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAgMCA2MCA2MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE3LjIyODUgMzcuMjY0M0wxMy43OTk5IDQyLjc1QzEzLjYyODUgNDMuMDkyOSAxMy43OTk5IDQzLjUyMTQgMTQuMjI4NSA0My41MjE0TDE4Ljg1NzEgNDMuNzc4NkMxOS4wMjg1IDQzLjc3ODYgMTkuMTE0MiA0My44NjQzIDE5LjE5OTkgNDMuOTVMMjIuMDI4NSA0Ny43MjE0QzIyLjI4NTcgNDcuOTc4NiAyMi43MTQyIDQ3Ljk3ODYgMjIuODg1NyA0Ny43MjE0TDI2LjE0MjggNDIuMzIxNEMyNi4zMTQyIDQyLjA2NDMgMjYuMjI4NSA0MS44MDcxIDI1Ljk3MTQgNDEuNjM1N0wxNy45MTQyIDM3LjA5MjlDMTcuNjU3MSAzNy4wMDcxIDE3LjM5OTkgMzcuMDkyOSAxNy4yMjg1IDM3LjI2NDNaTTQyLjc3MTQgMzcuMTc4Nkw0Ni4xOTk5IDQyLjY2NDNDNDYuMzcxNCA0My4wMDcxIDQ2LjE5OTkgNDMuNDM1NyA0NS43NzE0IDQzLjQzNTdMNDEuMTQyOCA0My42OTI5QzQwLjk3MTQgNDMuNjkyOSA0MC44ODU3IDQzLjc3ODYgNDAuNzk5OSA0My44NjQzTDM3Ljk3MTQgNDcuNjM1N0MzNy43MTQyIDQ3Ljg5MjkgMzcuMjg1NyA0Ny44OTI5IDM3LjExNDIgNDcuNjM1N0wzMy44NTcxIDQyLjIzNTdDMzMuNjg1NyA0MS45Nzg2IDMzLjc3MTQgNDEuNzIxNCAzNC4wMjg1IDQxLjU1TDQyLjA4NTcgMzcuMDA3MUM0Mi4zNDI4IDM2LjgzNTcgNDIuNTk5OSAzNi45MjE0IDQyLjc3MTQgMzcuMTc4NlpNNDIuMDg1NyAxOC40OTI5TDMxLjE5OTkgMTIuMzIxNEMzMC40Mjg1IDExLjg5MjkgMjkuMzk5OSAxMS44OTI5IDI4LjYyODUgMTIuMzIxNEwxNy44Mjg1IDE4LjQwNzFDMTcuMDU3MSAxOC44MzU3IDE2LjU0MjggMTkuNjkyOSAxNi41NDI4IDIwLjU1VjMyLjgwNzFDMTYuNTQyOCAzMy42NjQzIDE3LjA1NzEgMzQuNTIxNCAxNy44Mjg1IDM0Ljk1TDI4LjcxNDIgNDEuMTIxNEMyOS40ODU3IDQxLjU1IDMwLjUxNDIgNDEuNTUgMzEuMjg1NyA0MS4xMjE0TDQyLjA4NTcgMzUuMTIxNEM0Mi44NTcxIDM0LjY5MjkgNDMuMzcxNCAzMy44MzU3IDQzLjM3MTQgMzIuOTc4NlYyMC43MjE0QzQzLjM3MTQgMTkuNzc4NiA0Mi44NTcxIDE4LjkyMTQgNDIuMDg1NyAxOC40OTI5Wk0zNi45NDI4IDIzLjcyMTRMMzAuNTk5OSAzMi44OTI5QzMwLjQyODUgMzMuMTUgMzAuMDg1NyAzMy4zMjE0IDI5Ljc0MjggMzMuMzIxNEMyOS4zOTk5IDMzLjMyMTQgMjkuMDU3MSAzMy4xNSAyOC44ODU3IDMyLjg5MjlMMjIuNzk5OSAyMy43MjE0QzIyLjQ1NzEgMjMuMjkyOSAyMi42Mjg1IDIyLjYwNzEgMjMuMDU3MSAyMi4zNUMyMy40ODU3IDIyLjA5MjkgMjQuMTcxNCAyMi4xNzg2IDI0LjQyODUgMjIuNjA3MUwyOS42NTcxIDMwLjQ5MjlMMzUuMTQyOCAyMi41MjE0QzM1LjQ4NTcgMjIuMDkyOSAzNi4wODU3IDIxLjkyMTQgMzYuNTE0MiAyMi4yNjQzQzM3LjE5OTkgMjIuNjkyOSAzNy4yODU3IDIzLjI5MjkgMzYuOTQyOCAyMy43MjE0WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg=="),
49
+ linear-gradient(100deg, #f4e2ce -67.2%, #debb9b 98.15%);
50
+ background-repeat: no-repeat;
51
+ border-radius: 15px;
52
+ background-size: 30px;
53
+ flex-basis: 30px;
54
+ flex-grow: 0;
55
+ }
56
+ .title {
57
+ flex-grow: 1;
58
+ color: #353535;
59
+ font-size: 14px;
60
+ font-weight: 500;
61
+ }
62
+ .amount {
63
+ flex-grow: 0;
64
+ color: #9e7b5a;
65
+ font-size: 14px;
66
+ font-weight: 700;
67
+ }
68
+ }
69
+ }
70
+ }
71
+ </style>
@@ -1,46 +1,46 @@
1
- <template>
2
- <div class="tip" v-if="show">
3
- <img class="tip-icon" src="https://cdn.ddjf.com/static/images/bpms-workBench/gold-tip.png" />
4
- <div class="tip-content">2024年5月31日起,人民币与云豆兑换比例调整为1人民币=1云豆,云豆余额根据兑换比例调整</div>
5
- </div>
6
- </template>
7
-
8
- <script lang="ts" setup>
9
- import { ref, onMounted } from 'vue'
10
- import dayjs from "dayjs"
11
-
12
- const show = ref<boolean>(false)
13
- onMounted(() => {
14
- // 当日期大于 2024-07-01 则不显示
15
- const d1 = dayjs(new Date())
16
- const d2 = dayjs('2024-07-01 00:00:00');
17
- if(d1.isBefore(d2)){
18
- show.value = true
19
- }
20
- });
21
- </script>
22
- <style lang="scss">
23
- .tip{
24
- margin: 0 15px;
25
- display: flex;
26
- padding: 8px 10px;
27
- justify-content: start;
28
- background: #fff;
29
- box-shadow: 0px 5px 18.9px 2px #0000000D;
30
- border-radius: 5px;
31
- margin-top: 10px;
32
-
33
- .tip-icon{
34
- display: block;
35
- font-size: 0;
36
- width: 18px;
37
- height: 18px;
38
- }
39
- .tip-content{
40
- margin-left: 6px;
41
- color: #5D4431;
42
- line-height: 18px;
43
- font-size: 12px;
44
- }
45
- }
1
+ <template>
2
+ <div class="tip" v-if="show">
3
+ <img class="tip-icon" src="https://cdn.ddjf.com/static/images/bpms-workBench/gold-tip.png" />
4
+ <div class="tip-content">2024年5月31日起,人民币与云豆兑换比例调整为1人民币=1云豆,云豆余额根据兑换比例调整</div>
5
+ </div>
6
+ </template>
7
+
8
+ <script lang="ts" setup>
9
+ import { ref, onMounted } from 'vue'
10
+ import dayjs from "dayjs"
11
+
12
+ const show = ref<boolean>(false)
13
+ onMounted(() => {
14
+ // 当日期大于 2024-07-01 则不显示
15
+ const d1 = dayjs(new Date())
16
+ const d2 = dayjs('2024-07-01 00:00:00');
17
+ if(d1.isBefore(d2)){
18
+ show.value = true
19
+ }
20
+ });
21
+ </script>
22
+ <style lang="scss">
23
+ .tip{
24
+ margin: 0 15px;
25
+ display: flex;
26
+ padding: 8px 10px;
27
+ justify-content: start;
28
+ background: #fff;
29
+ box-shadow: 0px 5px 18.9px 2px #0000000D;
30
+ border-radius: 5px;
31
+ margin-top: 10px;
32
+
33
+ .tip-icon{
34
+ display: block;
35
+ font-size: 0;
36
+ width: 18px;
37
+ height: 18px;
38
+ }
39
+ .tip-content{
40
+ margin-left: 6px;
41
+ color: #5D4431;
42
+ line-height: 18px;
43
+ font-size: 12px;
44
+ }
45
+ }
46
46
  </style>
@@ -1,9 +1,13 @@
1
- import BalanceCard from './BalanceCard.vue'
2
- import AccountView from './AccountView.vue'
3
- import BalanceReminder from './BalanceReminder.vue'
4
-
5
- export {
6
- BalanceCard,
7
- AccountView,
8
- BalanceReminder,
9
- }
1
+ import BalanceCard from './BalanceCard.vue'
2
+ import AccountView from './AccountView.vue'
3
+ import BalanceReminder from './BalanceReminder.vue'
4
+ import DateRange from './DateRange.vue'
5
+ import ListFilter from './ListFilter.vue'
6
+
7
+ export {
8
+ BalanceCard,
9
+ AccountView,
10
+ BalanceReminder,
11
+ DateRange,
12
+ ListFilter
13
+ }
@@ -1,90 +1,91 @@
1
- export const consumptionTypes = [
2
- '全部',
3
- '充值',
4
- '缴费',
5
- '返额',
6
- '增加',
7
- '扣减',
8
- '消耗',
9
- '退回',
10
- '赠送',
11
- '换购',
12
- ] as const
13
-
14
- export type ConsumptionType = (typeof consumptionTypes)[number]
15
-
16
- export const consumptionPositions = ['全部', '云豆', '权益'] as const
17
-
18
- export type ConsumptionPosition = (typeof consumptionPositions)[number]
19
-
20
- export const consumptionDirections = ['全部', '收入', '支出'] as const
21
-
22
- export type ConsumptionDirection = (typeof consumptionDirections)[number]
23
-
24
- /**
25
- * 账户流水
26
- */
27
- export type 账户流水 = {
28
- /**
29
- * 数量
30
- */
31
- amount: number
32
- /**
33
- * 交易名称
34
- */
35
- title: string
36
- /**
37
- * 交易说明
38
- */
39
- description: string
40
- /**
41
- * 交易时间
42
- **/
43
- time: number
44
- /**
45
- * 交易类型类型
46
- */
47
- 交易类型: ConsumptionType
48
- 权益类目: string
49
- /**
50
- * 账户类型
51
- */
52
- 账户类型: ConsumptionPosition
53
- /**
54
- * 收入/支出
55
- */
56
- 收入还是支出: ConsumptionDirection
57
- }
58
-
59
- /**
60
- * 账户流水筛选项
61
- */
62
- export type 账户流水筛选项 = Pick<
63
- 账户流水,
64
- '交易类型' | '账户类型' | '收入还是支出' | '权益类目'
65
- > & {
66
- dateFrom: string
67
- dateTo: string
68
- page: number
69
- pageSize: 20
70
- }
71
-
72
- export type ConsumptionGroup = {
73
- date: string
74
- consumptions: 账户流水[]
75
- }
76
-
77
- export type Privilege = {
78
- title: string
79
- count: number
80
- }
81
-
82
- export type Balance = {
83
- total: number
84
- privileges: any
85
- }
86
-
87
- export type 权益类目 = {
88
- name: string
89
- code: string
90
- }
1
+ export const consumptionTypes = [
2
+ '全部',
3
+ '充值',
4
+ '缴费',
5
+ '返额',
6
+ '增加',
7
+ '扣减',
8
+ '消耗',
9
+ '退回',
10
+ '赠送',
11
+ '换购',
12
+ ] as const
13
+
14
+ export type ConsumptionType = (typeof consumptionTypes)[number]
15
+
16
+ export const consumptionPositions = ['全部', '云豆', '权益'] as const
17
+
18
+ export type ConsumptionPosition = (typeof consumptionPositions)[number]
19
+
20
+ export const consumptionDirections = ['全部', '收入', '支出'] as const
21
+
22
+ export type ConsumptionDirection = (typeof consumptionDirections)[number]
23
+
24
+ /**
25
+ * 账户流水
26
+ */
27
+ export type 账户流水 = {
28
+ /**
29
+ * 数量
30
+ */
31
+ amount: number
32
+ /**
33
+ * 交易名称
34
+ */
35
+ title: string
36
+ /**
37
+ * 交易说明
38
+ */
39
+ description: string
40
+ /**
41
+ * 交易时间
42
+ **/
43
+ time: number
44
+ /**
45
+ * 交易类型类型
46
+ */
47
+ 交易类型: ConsumptionType
48
+ 权益类目: string
49
+ /**
50
+ * 账户类型
51
+ */
52
+ 账户类型: ConsumptionPosition
53
+ /**
54
+ * 收入/支出
55
+ */
56
+ 收入还是支出: ConsumptionDirection
57
+ }
58
+
59
+ /**
60
+ * 账户流水筛选项
61
+ */
62
+ export type 账户流水筛选项 = Pick<
63
+ 账户流水,
64
+ '交易类型' | '账户类型' | '收入还是支出' | '权益类目'
65
+ > & {
66
+ dateFrom: string
67
+ dateTo: string
68
+ page: number
69
+ pageSize: 20
70
+ }
71
+
72
+ export type ConsumptionGroup = {
73
+ date: string
74
+ consumptions: 账户流水[]
75
+ }
76
+
77
+ export type Privilege = {
78
+ title: string
79
+ count: number
80
+ }
81
+
82
+ export type Balance = {
83
+ total: number
84
+ privileges: any
85
+ commonAccount?: number
86
+ }
87
+
88
+ export type 权益类目 = {
89
+ name: string
90
+ code: string
91
+ }