@uxda/appkit 4.3.6 → 4.3.8

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 (135) 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 +15 -63
  7. package/dist/assets/asset-DcH8Kg-2 +1 -0
  8. package/dist/index.js +259 -806
  9. package/package.json +79 -79
  10. package/project.config.json +15 -15
  11. package/project.tt.json +13 -13
  12. package/rollup.config.mjs +78 -78
  13. package/src/Appkit.ts +72 -72
  14. package/src/balance/api/endpoints.ts +133 -133
  15. package/src/balance/api/index.ts +118 -118
  16. package/src/balance/components/AccountView.vue +770 -770
  17. package/src/balance/components/BalanceCard.vue +210 -210
  18. package/src/balance/components/BalanceReminder.vue +84 -84
  19. package/src/balance/components/ConsumptionFilter.vue +218 -218
  20. package/src/balance/components/ConsumptionRules.vue +68 -68
  21. package/src/balance/components/DateFilter.vue +259 -259
  22. package/src/balance/components/DateRange.vue +111 -111
  23. package/src/balance/components/ListFilter.vue +62 -62
  24. package/src/balance/components/ListFilterPicker.vue +191 -191
  25. package/src/balance/components/PromoterCard.vue +307 -308
  26. package/src/balance/components/SecondBalance.vue +77 -77
  27. package/src/balance/components/Tip.vue +45 -45
  28. package/src/balance/components/index.ts +8 -8
  29. package/src/balance/types.ts +99 -99
  30. package/src/components/bt-cropper/index.vue +730 -730
  31. package/src/components/bt-cropper/utils/calcCropper.js +42 -42
  32. package/src/components/bt-cropper/utils/calcImagePosition.js +23 -23
  33. package/src/components/bt-cropper/utils/calcImageSize.js +37 -37
  34. package/src/components/bt-cropper/utils/calcPointDistance.js +12 -12
  35. package/src/components/bt-cropper/utils/calcRightAndBottom.js +7 -7
  36. package/src/components/bt-cropper/utils/ratio.js +3 -3
  37. package/src/components/bt-cropper/utils/tools.js +25 -25
  38. package/src/components/dd-area/index.vue +225 -225
  39. package/src/components/dd-icon/doc.md +21 -21
  40. package/src/components/dd-icon/index.vue +23 -23
  41. package/src/components/dd-notice-bar/index.vue +78 -78
  42. package/src/components/dd-search/doc.md +34 -34
  43. package/src/components/dd-search/index.vue +168 -168
  44. package/src/components/dd-selector/index.vue +124 -124
  45. package/src/components/dd-skeleton/doc.md +19 -19
  46. package/src/components/dd-skeleton/index.vue +36 -36
  47. package/src/global.ts +6 -6
  48. package/src/index.ts +101 -101
  49. package/src/main.scss +1 -1
  50. package/src/notice/api/endpoints.ts +54 -54
  51. package/src/notice/api/index.ts +121 -121
  52. package/src/notice/components/NoticeBanner.vue +247 -247
  53. package/src/notice/components/NoticeEntry.vue +99 -99
  54. package/src/notice/components/NoticeList.vue +311 -311
  55. package/src/notice/components/NoticeList2.vue +400 -399
  56. package/src/notice/components/NoticePopup.vue +163 -163
  57. package/src/notice/components/index.ts +6 -6
  58. package/src/notice/components/useCommonList.ts +86 -87
  59. package/src/notice/components/useNotice.ts +35 -35
  60. package/src/notice/index.ts +1 -1
  61. package/src/notice/types.ts +25 -25
  62. package/src/payment/api/config.ts +7 -7
  63. package/src/payment/api/endpoints.ts +96 -98
  64. package/src/payment/api/index.ts +107 -108
  65. package/src/payment/components/AmountPicker.vue +90 -90
  66. package/src/payment/components/RechargeResult.vue +69 -68
  67. package/src/payment/components/RechargeView.vue +191 -191
  68. package/src/payment/components/RightsPicker.vue +105 -105
  69. package/src/payment/components/TradeView.vue +363 -571
  70. package/src/payment/components/UserAgreement.vue +234 -234
  71. package/src/payment/components/index.ts +22 -22
  72. package/src/payment/index.ts +5 -5
  73. package/src/payment/services/index.ts +16 -16
  74. package/src/payment/services/invoke-recharge.ts +25 -25
  75. package/src/payment/services/request-payment.ts +130 -132
  76. package/src/payment/types.ts +33 -34
  77. package/src/register/components/SelfRegistration.vue +233 -233
  78. package/src/register/components/index.ts +2 -2
  79. package/src/scenarios/components/SharePoster.vue +364 -364
  80. package/src/scenarios/components/index.ts +2 -2
  81. package/src/scenarios/components/poster-paste.vue +93 -93
  82. package/src/scenarios/components/share-poster.md +273 -273
  83. package/src/shared/components/AppDrawer.vue +53 -53
  84. package/src/shared/components/AppVerify.vue +128 -137
  85. package/src/shared/components/DeviceVersion.vue +78 -78
  86. package/src/shared/components/EmptyView.vue +33 -33
  87. package/src/shared/components/OcrBusinessLicense.vue +137 -120
  88. package/src/shared/components/OcrIcon.vue +229 -267
  89. package/src/shared/components/PageHeader.vue +84 -84
  90. package/src/shared/components/index.ts +8 -10
  91. package/src/shared/composables/index.ts +9 -10
  92. package/src/shared/composables/useAmount.ts +46 -46
  93. package/src/shared/composables/useCountdown.ts +46 -46
  94. package/src/shared/composables/useCrypto.ts +76 -76
  95. package/src/shared/composables/useDeviceEnv.ts +26 -26
  96. package/src/shared/composables/useDragBox.ts +97 -97
  97. package/src/shared/composables/useEncode.ts +43 -43
  98. package/src/shared/composables/useLogger.ts +144 -144
  99. package/src/shared/composables/useSafeArea.ts +46 -46
  100. package/src/shared/composables/useTabbar.ts +24 -24
  101. package/src/shared/composables/useUpload.ts +61 -106
  102. package/src/shared/composables/useValidator.ts +32 -32
  103. package/src/shared/composables/useWxAuth.ts +48 -48
  104. package/src/shared/http/Http.ts +148 -149
  105. package/src/shared/http/index.ts +1 -1
  106. package/src/shared/http/types.ts +163 -163
  107. package/src/shared/index.ts +9 -9
  108. package/src/shared/tracking/directives/index.ts +40 -40
  109. package/src/shared/tracking/examples/page-tracking-template.vue +27 -27
  110. package/src/shared/tracking/tracking-sdk.ts +1 -0
  111. package/src/shared/weixin/index.ts +9 -9
  112. package/src/shared/weixin/jssdk.ts +103 -104
  113. package/src/shared/weixin/payment.ts +38 -38
  114. package/src/styles/vars.scss +3 -3
  115. package/src/user/api/endpoints.ts +17 -17
  116. package/src/user/api/index.ts +123 -123
  117. package/src/user/components/LoginSetting.vue +114 -114
  118. package/src/user/components/UserAuth.vue +218 -218
  119. package/src/user/components/UserBinding.vue +277 -277
  120. package/src/user/components/UserBindingSuccess.vue +80 -80
  121. package/src/user/components/UserEntry.vue +139 -139
  122. package/src/user/components/UserFeedback.vue +427 -428
  123. package/src/user/components/UserFeedbackEntry.vue +175 -175
  124. package/src/user/components/UserHeadCrop.vue +65 -65
  125. package/src/user/components/UserInfo.vue +709 -711
  126. package/src/user/components/UserResourceEmpty.vue +75 -75
  127. package/src/user/components/index.ts +23 -23
  128. package/src/user/index.ts +1 -1
  129. package/src/utils/utils.ts +33 -33
  130. package/tsconfig.json +30 -30
  131. package/types/global.d.ts +22 -24
  132. package/types/vue.d.ts +10 -10
  133. package/src/shared/components/OcrBank.vue +0 -202
  134. package/src/shared/components/OcrInvoice.vue +0 -218
  135. package/src/shared/composables/useCompress.ts +0 -64
@@ -1,308 +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
- confirmColor: '#017fff',
156
- confirmText: '知道了',
157
- })
158
- }
159
-
160
- const arrowImg = computed(() => {
161
- if (props.显示下级分销商) {
162
- return 'https://cdn.ddjf.com/static/images/appkit/arrow.png'
163
- } else {
164
- return 'https://cdn.ddjf.com/static/images/appkit/arrow-blue.png'
165
- }
166
- })
167
- </script>
168
-
169
- <style lang="scss">
170
- .promoter-card {
171
- position: relative;
172
- padding: 20px;
173
- background: #fff;
174
- box-sizing: border-box;
175
- margin: 0 auto;
176
- border-radius: 15px;
177
-
178
- &.inAccount {
179
- background: linear-gradient(90deg, #DAEFFF 0%, #DEE7FF 52.22%, #C8CAFF 108.62%);
180
-
181
- &::after,
182
- &::before {
183
- content: '';
184
- position: absolute;
185
- width: 15px;
186
- height: 15px;
187
- border-radius: 50%;
188
- background: #F4F6FA;
189
- top: 50%;
190
- transform: translateY(-50%);
191
- }
192
-
193
- &::before {
194
- left: -7.5px;
195
- }
196
-
197
- &::after {
198
- right: -7.5px;
199
- }
200
-
201
- .ns-button-group .ns-button {
202
- background: rgba(1, 127, 255, 0.1);
203
- font-weight: normal;
204
- color: #353535;
205
-
206
- &.active {
207
- background: #017FFF;
208
- color: #fff;
209
- }
210
- }
211
- }
212
-
213
- .icon {
214
- font-size: 10px;
215
- color: rgba(53, 53, 53, 0.3);
216
- }
217
-
218
- &-hd {
219
- display: flex;
220
- align-items: center;
221
- color: #353535;
222
- margin-bottom: 15px;
223
-
224
- &-num {
225
- font-size: 22px;
226
- font-weight: bold;
227
- }
228
-
229
- &-info {
230
- font-size: 13px;
231
- margin-left: 8px;
232
- }
233
- }
234
-
235
- &-ft {
236
- display: flex;
237
- align-items: center;
238
-
239
- &-item {
240
- flex: 1;
241
- }
242
-
243
- &-info {
244
- font-size: 12px;
245
- color: #434242;
246
- margin-bottom: 5px;
247
- display: flex;
248
- align-items: center;
249
- }
250
-
251
- &-num {
252
- display: flex;
253
- align-items: center;
254
- font-size: 20px;
255
- color: #353535;
256
- }
257
-
258
- &-line {
259
- width: 1px;
260
- height: 19px;
261
- background: rgba(53, 53, 53, 0.2);
262
- margin-right: 30px;
263
- }
264
- }
265
-
266
- .ns-button-group .ns-button {
267
- background: #F8F8F8;
268
- font-weight: normal;
269
-
270
- &.active {
271
- color: #017FFF;
272
- background: #EEF5FF;
273
- }
274
- }
275
-
276
- &-tab {
277
- position: relative;
278
- display: flex;
279
- justify-content: space-between;
280
- align-items: center;
281
- margin-bottom: 12px;
282
-
283
- &-item {
284
- display: inline-flex;
285
- align-items: center;
286
- justify-content: center;
287
- height: 29px;
288
- width: 46px;
289
- font-size: 13px;
290
- color: #808080;
291
- border-radius: 23px;
292
- background: #F8F8F8;
293
- margin-right: 12px;
294
-
295
- &.focus {
296
- background: #EEF5FF;
297
- color: #017FFF;
298
- }
299
- }
300
- }
301
-
302
- .arrow-img {
303
- width: 16px;
304
- height: 12px;
305
- margin-left: 5px;
306
- }
307
- }
308
- </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>