@uxda/appkit 4.2.82 → 4.2.84

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