@uxda/appkit 4.3.8 → 4.3.11

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 (131) hide show
  1. package/.eslintrc.mjs +7 -7
  2. package/COMPONENT_USAGE.md +1523 -1523
  3. package/PROJECT_DOCS.md +142 -142
  4. package/README.md +187 -187
  5. package/babel.config.js +12 -12
  6. package/dist/appkit.css +3 -48
  7. package/dist/index.js +84 -152
  8. package/package.json +82 -79
  9. package/project.config.json +15 -15
  10. package/project.tt.json +13 -13
  11. package/rollup.config.mjs +78 -78
  12. package/src/Appkit.ts +72 -72
  13. package/src/balance/api/endpoints.ts +133 -133
  14. package/src/balance/api/index.ts +118 -118
  15. package/src/balance/components/AccountView.vue +770 -770
  16. package/src/balance/components/BalanceCard.vue +210 -210
  17. package/src/balance/components/BalanceReminder.vue +84 -84
  18. package/src/balance/components/ConsumptionFilter.vue +218 -218
  19. package/src/balance/components/ConsumptionRules.vue +68 -68
  20. package/src/balance/components/DateFilter.vue +259 -259
  21. package/src/balance/components/DateRange.vue +111 -111
  22. package/src/balance/components/ListFilter.vue +62 -62
  23. package/src/balance/components/ListFilterPicker.vue +191 -191
  24. package/src/balance/components/PromoterCard.vue +307 -307
  25. package/src/balance/components/SecondBalance.vue +77 -77
  26. package/src/balance/components/Tip.vue +45 -45
  27. package/src/balance/components/index.ts +8 -8
  28. package/src/balance/types.ts +99 -99
  29. package/src/components/bt-cropper/index.vue +730 -730
  30. package/src/components/bt-cropper/utils/calcCropper.js +42 -42
  31. package/src/components/bt-cropper/utils/calcImagePosition.js +23 -23
  32. package/src/components/bt-cropper/utils/calcImageSize.js +37 -37
  33. package/src/components/bt-cropper/utils/calcPointDistance.js +12 -12
  34. package/src/components/bt-cropper/utils/calcRightAndBottom.js +7 -7
  35. package/src/components/bt-cropper/utils/ratio.js +3 -3
  36. package/src/components/bt-cropper/utils/tools.js +25 -25
  37. package/src/components/dd-area/index.vue +225 -225
  38. package/src/components/dd-icon/doc.md +21 -21
  39. package/src/components/dd-icon/index.vue +23 -23
  40. package/src/components/dd-notice-bar/index.vue +78 -78
  41. package/src/components/dd-search/doc.md +34 -34
  42. package/src/components/dd-search/index.vue +168 -168
  43. package/src/components/dd-selector/index.vue +124 -124
  44. package/src/components/dd-skeleton/doc.md +19 -19
  45. package/src/components/dd-skeleton/index.vue +36 -36
  46. package/src/global.ts +6 -6
  47. package/src/index.ts +101 -101
  48. package/src/main.scss +1 -1
  49. package/src/notice/api/endpoints.ts +54 -54
  50. package/src/notice/api/index.ts +121 -121
  51. package/src/notice/components/NoticeBanner.vue +247 -247
  52. package/src/notice/components/NoticeEntry.vue +99 -99
  53. package/src/notice/components/NoticeList.vue +311 -311
  54. package/src/notice/components/NoticeList2.vue +240 -400
  55. package/src/notice/components/NoticePopup.vue +163 -163
  56. package/src/notice/components/index.ts +6 -6
  57. package/src/notice/components/useCommonList.ts +86 -86
  58. package/src/notice/components/useNotice.ts +35 -35
  59. package/src/notice/index.ts +1 -1
  60. package/src/notice/types.ts +25 -25
  61. package/src/payment/api/config.ts +7 -7
  62. package/src/payment/api/endpoints.ts +96 -96
  63. package/src/payment/api/index.ts +107 -107
  64. package/src/payment/components/AmountPicker.vue +90 -90
  65. package/src/payment/components/RechargeResult.vue +69 -69
  66. package/src/payment/components/RechargeView.vue +195 -191
  67. package/src/payment/components/RightsPicker.vue +105 -105
  68. package/src/payment/components/TradeView.vue +365 -363
  69. package/src/payment/components/UserAgreement.vue +234 -234
  70. package/src/payment/components/index.ts +22 -22
  71. package/src/payment/index.ts +5 -5
  72. package/src/payment/services/index.ts +16 -16
  73. package/src/payment/services/invoke-recharge.ts +25 -25
  74. package/src/payment/services/request-payment.ts +130 -130
  75. package/src/payment/types.ts +33 -33
  76. package/src/register/components/SelfRegistration.vue +233 -233
  77. package/src/register/components/index.ts +2 -2
  78. package/src/scenarios/components/SharePoster.vue +364 -364
  79. package/src/scenarios/components/index.ts +2 -2
  80. package/src/scenarios/components/poster-paste.vue +93 -93
  81. package/src/scenarios/components/share-poster.md +273 -273
  82. package/src/shared/components/AppDrawer.vue +53 -53
  83. package/src/shared/components/AppVerify.vue +128 -128
  84. package/src/shared/components/DeviceVersion.vue +78 -78
  85. package/src/shared/components/EmptyView.vue +33 -33
  86. package/src/shared/components/OcrBusinessLicense.vue +137 -137
  87. package/src/shared/components/OcrIcon.vue +229 -229
  88. package/src/shared/components/PageHeader.vue +84 -84
  89. package/src/shared/components/index.ts +8 -8
  90. package/src/shared/composables/index.ts +9 -9
  91. package/src/shared/composables/useAmount.ts +46 -46
  92. package/src/shared/composables/useCountdown.ts +46 -46
  93. package/src/shared/composables/useCrypto.ts +76 -76
  94. package/src/shared/composables/useDeviceEnv.ts +26 -26
  95. package/src/shared/composables/useDragBox.ts +97 -97
  96. package/src/shared/composables/useEncode.ts +43 -43
  97. package/src/shared/composables/useLogger.ts +144 -144
  98. package/src/shared/composables/useSafeArea.ts +46 -46
  99. package/src/shared/composables/useTabbar.ts +24 -24
  100. package/src/shared/composables/useUpload.ts +61 -61
  101. package/src/shared/composables/useValidator.ts +32 -32
  102. package/src/shared/composables/useWxAuth.ts +48 -48
  103. package/src/shared/http/Http.ts +148 -148
  104. package/src/shared/http/index.ts +1 -1
  105. package/src/shared/http/types.ts +163 -163
  106. package/src/shared/index.ts +9 -9
  107. package/src/shared/tracking/directives/index.ts +40 -40
  108. package/src/shared/tracking/examples/page-tracking-template.vue +27 -27
  109. package/src/shared/weixin/index.ts +9 -9
  110. package/src/shared/weixin/jssdk.ts +103 -103
  111. package/src/shared/weixin/payment.ts +38 -38
  112. package/src/styles/vars.scss +3 -3
  113. package/src/user/api/endpoints.ts +17 -17
  114. package/src/user/api/index.ts +123 -123
  115. package/src/user/components/LoginSetting.vue +114 -114
  116. package/src/user/components/UserAuth.vue +218 -218
  117. package/src/user/components/UserBinding.vue +277 -277
  118. package/src/user/components/UserBindingSuccess.vue +80 -80
  119. package/src/user/components/UserEntry.vue +139 -139
  120. package/src/user/components/UserFeedback.vue +427 -427
  121. package/src/user/components/UserFeedbackEntry.vue +175 -175
  122. package/src/user/components/UserHeadCrop.vue +65 -65
  123. package/src/user/components/UserInfo.vue +709 -709
  124. package/src/user/components/UserResourceEmpty.vue +75 -75
  125. package/src/user/components/index.ts +23 -23
  126. package/src/user/index.ts +1 -1
  127. package/src/utils/utils.ts +33 -33
  128. package/tsconfig.json +30 -30
  129. package/types/global.d.ts +22 -22
  130. package/types/vue.d.ts +10 -10
  131. package/dist/assets/asset-DcH8Kg-2 +0 -1
@@ -1,307 +1,307 @@
1
- <template>
2
- <div class="promoter-card" :class="{ inAccount }"
3
- v-if="applyRecord.distributorFlag === 'Y' || applyRecord.accessCheckStatus === 'Y'">
4
- <div class="promoter-card-tab" v-if="useCase === 'company' && isAdmin">
5
- <div>
6
- <ns-button-group size="sm" :items="options" v-model="tab" round fill="transparent" foreground="#808080"
7
- @change="onTabChange" />
8
- </div>
9
- <slot name="tab-btn"></slot>
10
- </div>
11
- <div class="promoter-card-hd" v-track-click @click="emits('blance', tab)"
12
- v-if="applyRecord.distributorFlag === 'Y' || applyRecord.accessCheckStatus === 'Y'">
13
- <div class="promoter-card-hd-num number">{{ formatAmount(promoter.allowWithdrawalBalance || 0) }}</div>
14
- <div class="promoter-card-hd-info">可提现余额(元)</div>
15
- <img class="arrow-img" style="margin-left: 8px;" :src="arrowImg" alt="">
16
- </div>
17
- <div class="promoter-card-ft">
18
- <div class="promoter-card-ft-item" v-if="applyRecord.accessCheckStatus === 'Y'">
19
- <template v-if="显示下级分销商">
20
- <div class="promoter-card-ft-info">下级分销商数量</div>
21
- <div class="promoter-card-ft-num number">
22
- {{ formatAmount(promoter.subDistributorNum || 0) }}
23
- </div>
24
- </template>
25
- <template v-else>
26
- <div class="promoter-card-ft-info">产品销售收益(元)
27
- <IconFont class="icon" name="ask" v-track-click="'产品销售收益-说明'" @click="onHelpClick('profits')" />
28
- </div>
29
- <div class="promoter-card-ft-num number" v-track-click @click="emits('profits', tab)">
30
- {{ formatAmount(promoter.totalIncome || 0) }}
31
- <img class="arrow-img" :src="arrowImg" alt="">
32
- </div>
33
- </template>
34
- </div>
35
- <div class="promoter-card-ft-line"
36
- v-if="applyRecord.accessCheckStatus === 'Y' && applyRecord.distributorFlag === 'Y'">
37
- </div>
38
- <div class="promoter-card-ft-item" v-if="applyRecord.distributorFlag === 'Y'">
39
- <div class="promoter-card-ft-info">分销返佣收益(元)
40
- <IconFont class="icon" name="ask" v-track-click="'分销返佣收益-说明'" @click="onHelpClick('rebate')" />
41
- </div>
42
- <div class="promoter-card-ft-num number" v-track-click @click="emits('rebate', tab)">
43
- {{ formatAmount(promoter.totalRebateIncome || 0) }}
44
- <img class="arrow-img" :src="arrowImg" alt="">
45
- </div>
46
- </div>
47
- </div>
48
- </div>
49
- </template>
50
-
51
- <script setup lang="ts">
52
- import { computed, ref, watch } from 'vue'
53
- import { endpoints, useHttp } from '../api'
54
- import { Promoter } from '../types'
55
- import { useDidShow, showModal } from '@tarojs/taro'
56
- import { useAmount } from '../../shared/composables/useAmount'
57
- import { IconFont } from '@nutui/icons-vue-taro'
58
- import { NsButtonGroup } from "@uxda/nutshell/taro";
59
-
60
- type PromoterCardProps = {
61
- useCase: string
62
- applyRecord: any
63
- isAdmin?: boolean
64
- 显示下级分销商?: boolean
65
- }
66
- const props = withDefaults(defineProps<PromoterCardProps>(), {
67
- useCase: '',
68
- applyRecord: {},
69
- isAdmin: false,
70
- 显示下级分销商: false
71
- })
72
-
73
- const inAccount = computed(() => {
74
- return !props.显示下级分销商
75
- })
76
-
77
- const { formatAmount } = useAmount()
78
- const tab = ref('person')
79
-
80
- const promoter = ref<Promoter>({
81
- balance: 0,
82
- allowWithdrawalBalance: 0,
83
- totalIncome: 0,
84
- totalRebateIncome: 0,
85
- subDistributorNum: 0,
86
- })
87
-
88
- const options = [
89
- { label: '个人', value: 'person' },
90
- { label: '企业', value: 'company' },
91
- ]
92
-
93
-
94
- function onTabChange(type: string) {
95
- // tab.value = type
96
- loadPromoter()
97
-
98
- emits('tab', tab.value)
99
- }
100
-
101
- async function loadPromoter() {
102
- const $http = useHttp()
103
- $http
104
- .get<Promoter>(endpoints.获取推广方账户信息, {
105
- useCase: tab.value,
106
- companyFlag: tab.value === 'person' ? '2' : '1',
107
- })
108
- .then((data) => {
109
- promoter.value.balance = data?.balance || 0
110
- promoter.value.allowWithdrawalBalance = data?.allowWithdrawalBalance || 0
111
- promoter.value.totalIncome = data?.totalIncome || 0
112
- promoter.value.totalRebateIncome = data?.totalRebateIncome || 0
113
- promoter.value.subDistributorNum = data?.subDistributorNum || 0
114
- })
115
- }
116
-
117
- const emits = defineEmits([
118
- /**
119
- * 跳可提现余额
120
- */
121
- 'blance',
122
- /**
123
- * 跳收益页面
124
- */
125
- 'profits',
126
- /**
127
- * 跳返佣统计页面
128
- */
129
- 'rebate',
130
- /**
131
- * tab切换
132
- */
133
- 'tab',
134
- ])
135
-
136
- useDidShow(() => {
137
- Object.keys(props.applyRecord)?.length && loadPromoter()
138
- })
139
- watch(() => props.applyRecord, () => {
140
- Object.keys(props.applyRecord)?.length && loadPromoter()
141
- }, { immediate: true })
142
-
143
- defineExpose({
144
- reload: loadPromoter,
145
- })
146
-
147
- const toastMap = {
148
- profits: '推广北斗星报告获取,每笔报告销售收益= 客户查询价 - 我的成本价',
149
- rebate: '推荐朋友使用北斗星、企明星获取,返佣收益= 返佣基数 * 返佣比例',
150
- }
151
- function onHelpClick(type: string) {
152
- showModal({
153
- content: toastMap[type],
154
- showCancel: false,
155
- confirmText: '知道了',
156
- })
157
- }
158
-
159
- const arrowImg = computed(() => {
160
- if (props.显示下级分销商) {
161
- return 'https://cdn.ddjf.com/static/images/appkit/arrow.png'
162
- } else {
163
- return 'https://cdn.ddjf.com/static/images/appkit/arrow-blue.png'
164
- }
165
- })
166
- </script>
167
-
168
- <style lang="scss">
169
- .promoter-card {
170
- position: relative;
171
- padding: 20px;
172
- background: #fff;
173
- box-sizing: border-box;
174
- margin: 0 auto;
175
- border-radius: 15px;
176
-
177
- &.inAccount {
178
- background: linear-gradient(90deg, #DAEFFF 0%, #DEE7FF 52.22%, #C8CAFF 108.62%);
179
-
180
- &::after,
181
- &::before {
182
- content: '';
183
- position: absolute;
184
- width: 15px;
185
- height: 15px;
186
- border-radius: 50%;
187
- background: #F4F6FA;
188
- top: 50%;
189
- transform: translateY(-50%);
190
- }
191
-
192
- &::before {
193
- left: -7.5px;
194
- }
195
-
196
- &::after {
197
- right: -7.5px;
198
- }
199
-
200
- .ns-button-group .ns-button {
201
- background: rgba(1, 127, 255, 0.1);
202
- font-weight: normal;
203
- color: #353535;
204
-
205
- &.active {
206
- background: #017FFF;
207
- color: #fff;
208
- }
209
- }
210
- }
211
-
212
- .icon {
213
- font-size: 10px;
214
- color: rgba(53, 53, 53, 0.3);
215
- }
216
-
217
- &-hd {
218
- display: flex;
219
- align-items: center;
220
- color: #353535;
221
- margin-bottom: 15px;
222
-
223
- &-num {
224
- font-size: 22px;
225
- font-weight: bold;
226
- }
227
-
228
- &-info {
229
- font-size: 13px;
230
- margin-left: 8px;
231
- }
232
- }
233
-
234
- &-ft {
235
- display: flex;
236
- align-items: center;
237
-
238
- &-item {
239
- flex: 1;
240
- }
241
-
242
- &-info {
243
- font-size: 12px;
244
- color: #434242;
245
- margin-bottom: 5px;
246
- display: flex;
247
- align-items: center;
248
- }
249
-
250
- &-num {
251
- display: flex;
252
- align-items: center;
253
- font-size: 20px;
254
- color: #353535;
255
- }
256
-
257
- &-line {
258
- width: 1px;
259
- height: 19px;
260
- background: rgba(53, 53, 53, 0.2);
261
- margin-right: 30px;
262
- }
263
- }
264
-
265
- .ns-button-group .ns-button {
266
- background: #F8F8F8;
267
- font-weight: normal;
268
-
269
- &.active {
270
- color: #017FFF;
271
- background: #EEF5FF;
272
- }
273
- }
274
-
275
- &-tab {
276
- position: relative;
277
- display: flex;
278
- justify-content: space-between;
279
- align-items: center;
280
- margin-bottom: 12px;
281
-
282
- &-item {
283
- display: inline-flex;
284
- align-items: center;
285
- justify-content: center;
286
- height: 29px;
287
- width: 46px;
288
- font-size: 13px;
289
- color: #808080;
290
- border-radius: 23px;
291
- background: #F8F8F8;
292
- margin-right: 12px;
293
-
294
- &.focus {
295
- background: #EEF5FF;
296
- color: #017FFF;
297
- }
298
- }
299
- }
300
-
301
- .arrow-img {
302
- width: 16px;
303
- height: 12px;
304
- margin-left: 5px;
305
- }
306
- }
307
- </style>
1
+ <template>
2
+ <div class="promoter-card" :class="{ inAccount }"
3
+ v-if="applyRecord.distributorFlag === 'Y' || applyRecord.accessCheckStatus === 'Y'">
4
+ <div class="promoter-card-tab" v-if="useCase === 'company' && isAdmin">
5
+ <div>
6
+ <ns-button-group size="sm" :items="options" v-model="tab" round fill="transparent" foreground="#808080"
7
+ @change="onTabChange" />
8
+ </div>
9
+ <slot name="tab-btn"></slot>
10
+ </div>
11
+ <div class="promoter-card-hd" v-track-click @click="emits('blance', tab)"
12
+ v-if="applyRecord.distributorFlag === 'Y' || applyRecord.accessCheckStatus === 'Y'">
13
+ <div class="promoter-card-hd-num number">{{ formatAmount(promoter.allowWithdrawalBalance || 0) }}</div>
14
+ <div class="promoter-card-hd-info">可提现余额(元)</div>
15
+ <img class="arrow-img" style="margin-left: 8px;" :src="arrowImg" alt="">
16
+ </div>
17
+ <div class="promoter-card-ft">
18
+ <div class="promoter-card-ft-item" v-if="applyRecord.accessCheckStatus === 'Y'">
19
+ <template v-if="显示下级分销商">
20
+ <div class="promoter-card-ft-info">下级分销商数量</div>
21
+ <div class="promoter-card-ft-num number">
22
+ {{ formatAmount(promoter.subDistributorNum || 0) }}
23
+ </div>
24
+ </template>
25
+ <template v-else>
26
+ <div class="promoter-card-ft-info">产品销售收益(元)
27
+ <IconFont class="icon" name="ask" v-track-click="'产品销售收益-说明'" @click="onHelpClick('profits')" />
28
+ </div>
29
+ <div class="promoter-card-ft-num number" v-track-click @click="emits('profits', tab)">
30
+ {{ formatAmount(promoter.totalIncome || 0) }}
31
+ <img class="arrow-img" :src="arrowImg" alt="">
32
+ </div>
33
+ </template>
34
+ </div>
35
+ <div class="promoter-card-ft-line"
36
+ v-if="applyRecord.accessCheckStatus === 'Y' && applyRecord.distributorFlag === 'Y'">
37
+ </div>
38
+ <div class="promoter-card-ft-item" v-if="applyRecord.distributorFlag === 'Y'">
39
+ <div class="promoter-card-ft-info">分销返佣收益(元)
40
+ <IconFont class="icon" name="ask" v-track-click="'分销返佣收益-说明'" @click="onHelpClick('rebate')" />
41
+ </div>
42
+ <div class="promoter-card-ft-num number" v-track-click @click="emits('rebate', tab)">
43
+ {{ formatAmount(promoter.totalRebateIncome || 0) }}
44
+ <img class="arrow-img" :src="arrowImg" alt="">
45
+ </div>
46
+ </div>
47
+ </div>
48
+ </div>
49
+ </template>
50
+
51
+ <script setup lang="ts">
52
+ import { computed, ref, watch } from 'vue'
53
+ import { endpoints, useHttp } from '../api'
54
+ import { Promoter } from '../types'
55
+ import { useDidShow, showModal } from '@tarojs/taro'
56
+ import { useAmount } from '../../shared/composables/useAmount'
57
+ import { IconFont } from '@nutui/icons-vue-taro'
58
+ import { NsButtonGroup } from "@uxda/nutshell/taro";
59
+
60
+ type PromoterCardProps = {
61
+ useCase: string
62
+ applyRecord: any
63
+ isAdmin?: boolean
64
+ 显示下级分销商?: boolean
65
+ }
66
+ const props = withDefaults(defineProps<PromoterCardProps>(), {
67
+ useCase: '',
68
+ applyRecord: {},
69
+ isAdmin: false,
70
+ 显示下级分销商: false
71
+ })
72
+
73
+ const inAccount = computed(() => {
74
+ return !props.显示下级分销商
75
+ })
76
+
77
+ const { formatAmount } = useAmount()
78
+ const tab = ref('person')
79
+
80
+ const promoter = ref<Promoter>({
81
+ balance: 0,
82
+ allowWithdrawalBalance: 0,
83
+ totalIncome: 0,
84
+ totalRebateIncome: 0,
85
+ subDistributorNum: 0,
86
+ })
87
+
88
+ const options = [
89
+ { label: '个人', value: 'person' },
90
+ { label: '企业', value: 'company' },
91
+ ]
92
+
93
+
94
+ function onTabChange(type: string) {
95
+ // tab.value = type
96
+ loadPromoter()
97
+
98
+ emits('tab', tab.value)
99
+ }
100
+
101
+ async function loadPromoter() {
102
+ const $http = useHttp()
103
+ $http
104
+ .get<Promoter>(endpoints.获取推广方账户信息, {
105
+ useCase: tab.value,
106
+ companyFlag: tab.value === 'person' ? '2' : '1',
107
+ })
108
+ .then((data) => {
109
+ promoter.value.balance = data?.balance || 0
110
+ promoter.value.allowWithdrawalBalance = data?.allowWithdrawalBalance || 0
111
+ promoter.value.totalIncome = data?.totalIncome || 0
112
+ promoter.value.totalRebateIncome = data?.totalRebateIncome || 0
113
+ promoter.value.subDistributorNum = data?.subDistributorNum || 0
114
+ })
115
+ }
116
+
117
+ const emits = defineEmits([
118
+ /**
119
+ * 跳可提现余额
120
+ */
121
+ 'blance',
122
+ /**
123
+ * 跳收益页面
124
+ */
125
+ 'profits',
126
+ /**
127
+ * 跳返佣统计页面
128
+ */
129
+ 'rebate',
130
+ /**
131
+ * tab切换
132
+ */
133
+ 'tab',
134
+ ])
135
+
136
+ useDidShow(() => {
137
+ Object.keys(props.applyRecord)?.length && loadPromoter()
138
+ })
139
+ watch(() => props.applyRecord, () => {
140
+ Object.keys(props.applyRecord)?.length && loadPromoter()
141
+ }, { immediate: true })
142
+
143
+ defineExpose({
144
+ reload: loadPromoter,
145
+ })
146
+
147
+ const toastMap = {
148
+ profits: '推广北斗星报告获取,每笔报告销售收益= 客户查询价 - 我的成本价',
149
+ rebate: '推荐朋友使用北斗星、企明星获取,返佣收益= 返佣基数 * 返佣比例',
150
+ }
151
+ function onHelpClick(type: string) {
152
+ showModal({
153
+ content: toastMap[type],
154
+ showCancel: false,
155
+ confirmText: '知道了',
156
+ })
157
+ }
158
+
159
+ const arrowImg = computed(() => {
160
+ if (props.显示下级分销商) {
161
+ return 'https://cdn.ddjf.com/static/images/appkit/arrow.png'
162
+ } else {
163
+ return 'https://cdn.ddjf.com/static/images/appkit/arrow-blue.png'
164
+ }
165
+ })
166
+ </script>
167
+
168
+ <style lang="scss">
169
+ .promoter-card {
170
+ position: relative;
171
+ padding: 20px;
172
+ background: #fff;
173
+ box-sizing: border-box;
174
+ margin: 0 auto;
175
+ border-radius: 15px;
176
+
177
+ &.inAccount {
178
+ background: linear-gradient(90deg, #DAEFFF 0%, #DEE7FF 52.22%, #C8CAFF 108.62%);
179
+
180
+ &::after,
181
+ &::before {
182
+ content: '';
183
+ position: absolute;
184
+ width: 15px;
185
+ height: 15px;
186
+ border-radius: 50%;
187
+ background: #F4F6FA;
188
+ top: 50%;
189
+ transform: translateY(-50%);
190
+ }
191
+
192
+ &::before {
193
+ left: -7.5px;
194
+ }
195
+
196
+ &::after {
197
+ right: -7.5px;
198
+ }
199
+
200
+ .ns-button-group .ns-button {
201
+ background: rgba(1, 127, 255, 0.1);
202
+ font-weight: normal;
203
+ color: #353535;
204
+
205
+ &.active {
206
+ background: #017FFF;
207
+ color: #fff;
208
+ }
209
+ }
210
+ }
211
+
212
+ .icon {
213
+ font-size: 10px;
214
+ color: rgba(53, 53, 53, 0.3);
215
+ }
216
+
217
+ &-hd {
218
+ display: flex;
219
+ align-items: center;
220
+ color: #353535;
221
+ margin-bottom: 15px;
222
+
223
+ &-num {
224
+ font-size: 22px;
225
+ font-weight: bold;
226
+ }
227
+
228
+ &-info {
229
+ font-size: 13px;
230
+ margin-left: 8px;
231
+ }
232
+ }
233
+
234
+ &-ft {
235
+ display: flex;
236
+ align-items: center;
237
+
238
+ &-item {
239
+ flex: 1;
240
+ }
241
+
242
+ &-info {
243
+ font-size: 12px;
244
+ color: #434242;
245
+ margin-bottom: 5px;
246
+ display: flex;
247
+ align-items: center;
248
+ }
249
+
250
+ &-num {
251
+ display: flex;
252
+ align-items: center;
253
+ font-size: 20px;
254
+ color: #353535;
255
+ }
256
+
257
+ &-line {
258
+ width: 1px;
259
+ height: 19px;
260
+ background: rgba(53, 53, 53, 0.2);
261
+ margin-right: 30px;
262
+ }
263
+ }
264
+
265
+ .ns-button-group .ns-button {
266
+ background: #F8F8F8;
267
+ font-weight: normal;
268
+
269
+ &.active {
270
+ color: #017FFF;
271
+ background: #EEF5FF;
272
+ }
273
+ }
274
+
275
+ &-tab {
276
+ position: relative;
277
+ display: flex;
278
+ justify-content: space-between;
279
+ align-items: center;
280
+ margin-bottom: 12px;
281
+
282
+ &-item {
283
+ display: inline-flex;
284
+ align-items: center;
285
+ justify-content: center;
286
+ height: 29px;
287
+ width: 46px;
288
+ font-size: 13px;
289
+ color: #808080;
290
+ border-radius: 23px;
291
+ background: #F8F8F8;
292
+ margin-right: 12px;
293
+
294
+ &.focus {
295
+ background: #EEF5FF;
296
+ color: #017FFF;
297
+ }
298
+ }
299
+ }
300
+
301
+ .arrow-img {
302
+ width: 16px;
303
+ height: 12px;
304
+ margin-left: 5px;
305
+ }
306
+ }
307
+ </style>