@uxda/appkit 4.3.28 → 4.3.30

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 (141) hide show
  1. package/.cursor/skills/appkit-build-update-component-rules/SKILL.md +54 -49
  2. package/.cursor/skills/appkit-sync-component-rules/SKILL.md +60 -0
  3. package/.eslintrc.mjs +7 -7
  4. package/Appkit/347/273/204/344/273/266/344/275/277/347/224/250/350/247/204/345/210/231.md +2002 -1786
  5. package/PROJECT_DOCS.md +142 -142
  6. package/README.md +194 -194
  7. package/babel.config.js +12 -12
  8. package/dist/appkit.css +112 -3
  9. package/dist/index.js +155 -28
  10. package/package.json +82 -82
  11. package/project.config.json +15 -15
  12. package/project.tt.json +13 -13
  13. package/rollup.config.mjs +81 -81
  14. package/src/Appkit.ts +72 -72
  15. package/src/balance/api/endpoints.ts +133 -133
  16. package/src/balance/api/index.ts +118 -118
  17. package/src/balance/components/AccountView.vue +770 -770
  18. package/src/balance/components/BalanceCard.vue +210 -210
  19. package/src/balance/components/BalanceReminder.vue +84 -84
  20. package/src/balance/components/ConsumptionFilter.vue +218 -218
  21. package/src/balance/components/ConsumptionRules.vue +68 -68
  22. package/src/balance/components/DateFilter.vue +259 -259
  23. package/src/balance/components/DateRange.vue +111 -111
  24. package/src/balance/components/ListFilter.vue +62 -62
  25. package/src/balance/components/ListFilterPicker.vue +191 -191
  26. package/src/balance/components/PromoterCard.vue +308 -308
  27. package/src/balance/components/SecondBalance.vue +77 -77
  28. package/src/balance/components/Tip.vue +45 -45
  29. package/src/balance/components/index.ts +8 -8
  30. package/src/balance/types.ts +99 -99
  31. package/src/components/bt-cropper/index.vue +730 -730
  32. package/src/components/bt-cropper/utils/calcCropper.js +42 -42
  33. package/src/components/bt-cropper/utils/calcImagePosition.js +23 -23
  34. package/src/components/bt-cropper/utils/calcImageSize.js +37 -37
  35. package/src/components/bt-cropper/utils/calcPointDistance.js +12 -12
  36. package/src/components/bt-cropper/utils/calcRightAndBottom.js +7 -7
  37. package/src/components/bt-cropper/utils/ratio.js +3 -3
  38. package/src/components/bt-cropper/utils/tools.js +25 -25
  39. package/src/components/dd-area/index.vue +225 -225
  40. package/src/components/dd-icon/doc.md +21 -21
  41. package/src/components/dd-icon/index.vue +23 -23
  42. package/src/components/dd-notice-bar/index.vue +78 -78
  43. package/src/components/dd-search/doc.md +34 -34
  44. package/src/components/dd-search/index.vue +168 -168
  45. package/src/components/dd-selector/index.vue +124 -124
  46. package/src/components/dd-skeleton/doc.md +19 -19
  47. package/src/components/dd-skeleton/index.vue +36 -36
  48. package/src/global.ts +6 -6
  49. package/src/index.ts +101 -101
  50. package/src/main.scss +1 -1
  51. package/src/notice/api/endpoints.ts +54 -54
  52. package/src/notice/api/index.ts +121 -121
  53. package/src/notice/components/NoticeBanner.vue +247 -247
  54. package/src/notice/components/NoticeEntry.vue +99 -99
  55. package/src/notice/components/NoticeList.vue +311 -311
  56. package/src/notice/components/NoticeList2.vue +401 -401
  57. package/src/notice/components/NoticePopup.vue +163 -163
  58. package/src/notice/components/index.ts +6 -6
  59. package/src/notice/components/useCommonList.ts +87 -87
  60. package/src/notice/components/useNotice.ts +35 -35
  61. package/src/notice/index.ts +1 -1
  62. package/src/notice/types.ts +25 -25
  63. package/src/payment/api/config.ts +7 -7
  64. package/src/payment/api/endpoints.ts +112 -112
  65. package/src/payment/api/index.ts +108 -108
  66. package/src/payment/components/AmountPicker.vue +77 -68
  67. package/src/payment/components/RechargeResult.vue +68 -68
  68. package/src/payment/components/RechargeView.vue +414 -227
  69. package/src/payment/components/RightsPicker.vue +105 -105
  70. package/src/payment/components/TradeView.vue +616 -616
  71. package/src/payment/components/UserAgreement.vue +234 -234
  72. package/src/payment/components/index.ts +22 -22
  73. package/src/payment/components/recharge-amount.spec.ts +51 -0
  74. package/src/payment/components/recharge-amount.ts +63 -0
  75. package/src/payment/index.ts +5 -5
  76. package/src/payment/services/index.ts +16 -16
  77. package/src/payment/services/invoke-recharge.ts +25 -25
  78. package/src/payment/services/request-payment.ts +136 -136
  79. package/src/payment/types.ts +34 -34
  80. package/src/register/components/SelfRegistration.vue +233 -233
  81. package/src/register/components/index.ts +2 -2
  82. package/src/scenarios/components/SharePoster.vue +364 -364
  83. package/src/scenarios/components/index.ts +2 -2
  84. package/src/scenarios/components/poster-paste.vue +93 -93
  85. package/src/scenarios/components/share-poster.md +273 -273
  86. package/src/shared/components/AppDrawer.vue +53 -53
  87. package/src/shared/components/AppVerify.vue +137 -137
  88. package/src/shared/components/DeviceVersion.vue +78 -78
  89. package/src/shared/components/EmptyView.vue +33 -33
  90. package/src/shared/components/OcrBank.vue +202 -202
  91. package/src/shared/components/OcrBusinessLicense.vue +120 -120
  92. package/src/shared/components/OcrIcon.vue +267 -267
  93. package/src/shared/components/OcrInvoice.vue +323 -323
  94. package/src/shared/components/OfficeDocx.vue +33 -33
  95. package/src/shared/components/OfficePdf.vue +35 -35
  96. package/src/shared/components/PageHeader.vue +84 -84
  97. package/src/shared/components/index.ts +12 -12
  98. package/src/shared/composables/index.ts +10 -10
  99. package/src/shared/composables/useAmount.ts +46 -46
  100. package/src/shared/composables/useCompress.ts +64 -64
  101. package/src/shared/composables/useCountdown.ts +46 -46
  102. package/src/shared/composables/useCrypto.ts +76 -76
  103. package/src/shared/composables/useDeviceEnv.ts +61 -61
  104. package/src/shared/composables/useDragBox.ts +97 -97
  105. package/src/shared/composables/useEncode.ts +43 -43
  106. package/src/shared/composables/useLogger.ts +149 -149
  107. package/src/shared/composables/useSafeArea.ts +46 -46
  108. package/src/shared/composables/useTabbar.ts +24 -24
  109. package/src/shared/composables/useUpload.ts +106 -106
  110. package/src/shared/composables/useValidator.ts +32 -32
  111. package/src/shared/composables/useWxAuth.ts +49 -49
  112. package/src/shared/http/Http.ts +149 -149
  113. package/src/shared/http/index.ts +1 -1
  114. package/src/shared/http/types.ts +163 -163
  115. package/src/shared/index.ts +9 -9
  116. package/src/shared/tracking/directives/index.ts +40 -40
  117. package/src/shared/tracking/examples/page-tracking-template.vue +27 -27
  118. package/src/shared/weixin/index.ts +9 -9
  119. package/src/shared/weixin/jssdk.ts +104 -104
  120. package/src/shared/weixin/payment.ts +38 -38
  121. package/src/styles/vars.scss +3 -3
  122. package/src/user/api/endpoints.ts +17 -17
  123. package/src/user/api/index.ts +123 -123
  124. package/src/user/components/LoginSetting.vue +114 -114
  125. package/src/user/components/UserAuth.vue +218 -218
  126. package/src/user/components/UserBinding.vue +277 -277
  127. package/src/user/components/UserBindingSuccess.vue +80 -80
  128. package/src/user/components/UserEntry.vue +139 -139
  129. package/src/user/components/UserFeedback.vue +428 -428
  130. package/src/user/components/UserFeedbackEntry.vue +175 -175
  131. package/src/user/components/UserHeadCrop.vue +65 -65
  132. package/src/user/components/UserInfo.vue +711 -711
  133. package/src/user/components/UserResourceEmpty.vue +75 -75
  134. package/src/user/components/index.ts +23 -23
  135. package/src/user/index.ts +1 -1
  136. package/src/utils/utils.ts +33 -33
  137. package/tsconfig.json +30 -30
  138. package/types/global.d.ts +23 -23
  139. package/types/vue.d.ts +10 -10
  140. package/dist/assets/asset-3B_CoPto +0 -1
  141. package/dist/assets/asset-DcH8Kg-2 +0 -1
@@ -1,247 +1,247 @@
1
- <template>
2
- <div class="notice-banner" :class="{ fixed: fixed }" :style="topStype" v-if="bannerMessages.length"
3
- @touchstart="onTouchStart" @touchend="onTouchEnd">
4
- <DdNoticeBar :class="{ show: key === activeKey }" v-for="(item, key) in bannerMessages" :key="key"
5
- :showClose="item.noticeType === 0" v-track-click="'通知栏-关闭'" @close="onClose(item, key)">
6
- <img class="notice-banner-icon" src="https://cdn.ddjf.com/static/images/customer-center/notice-icon.png" alt="" />
7
- <div class="notice-banner-text">
8
- {{ item.context }}
9
- </div>
10
- <div class="notice-banner-btn" v-track-click="'通知栏-详情'" @click="onDetail(item)">详情</div>
11
- </DdNoticeBar>
12
- </div>
13
-
14
- <!-- 系统公告强制弹框 -->
15
- <NoticePopup v-if="popMessages.length" :device="device" :message="popMessages[0]" @close="onPopupClose"
16
- @view="onView(popMessages[0])" />
17
- </template>
18
-
19
- <script lang="ts" setup>
20
- import { computed, onMounted, ref, watch } from 'vue'
21
- import { useHttp } from '../api'
22
- import { useAppKitOptions } from '../../Appkit'
23
- import DdNoticeBar from '../../components/dd-notice-bar/index.vue'
24
- import NoticePopup from './NoticePopup.vue'
25
- import Taro, { showToast } from '@tarojs/taro'
26
- import { useNotice } from './useNotice'
27
- import debounce from 'lodash-es/debounce'
28
- import { useSafeArea } from '../../shared/composables'
29
-
30
- const props = withDefaults(
31
- defineProps<{
32
- app: string
33
- bannerStyle?: any
34
- fixed?: boolean
35
- device?: string
36
- }>(),
37
- {
38
- app: '',
39
- bannerStyle: '',
40
- fixed: false,
41
- device: 'MINI',
42
- }
43
- )
44
-
45
- const { toReadFun, noticeClick } = useNotice()
46
- const bannerMessages = ref<any[]>([]) // 横幅消息
47
- const popMessages = ref<any[]>([]) // 弹窗消息
48
- const activeKey = ref(0)
49
- const safeArea = useSafeArea()
50
-
51
- const topStype = computed(() => {
52
- if (!props.fixed) {
53
- return props.bannerStyle
54
- } else {
55
- return `top: ${safeArea.nav + safeArea.status}px; ${props.bannerStyle}}`
56
- }
57
- })
58
-
59
- onMounted(() => {
60
- queryNoticeMsg()
61
- })
62
-
63
- watch(
64
- () => popMessages.value,
65
- () => {
66
- emits('popup', !!popMessages.value.length)
67
- }
68
- )
69
- watch(
70
- () => bannerMessages.value,
71
- () => {
72
- emits('hasBanner', !!bannerMessages.value.length)
73
- }
74
- )
75
-
76
- // 查询当前用户当前应用系统消息
77
- async function queryNoticeMsg() {
78
- const appkitOptions = useAppKitOptions()
79
-
80
- const $http = useHttp()
81
- $http
82
- .post('/cas/msg/queryNoticeMsg', {
83
- device: props.device || 'MINI',
84
- deviceType: 2,
85
- msgType: 3,
86
- appCode: props.app || appkitOptions.app(),
87
- tenantId: appkitOptions.tenant(),
88
- })
89
- .then((result) => {
90
- if (!Array.isArray(result)) return
91
-
92
- bannerMessages.value = result.filter((item: any) => item.noticeType !== undefined)
93
- popMessages.value = result.filter((item: any) => item.isPop)
94
-
95
- startMessageCarousel()
96
- })
97
- }
98
-
99
- let interval: any = null
100
- // 启动消息轮播
101
- function startMessageCarousel() {
102
- stopMessageCarousel()
103
- if (bannerMessages.value.length > 1) {
104
- interval = setInterval(() => {
105
- startMessageCalc()
106
- if (bannerMessages.value.length <= 1) {
107
- stopMessageCarousel()
108
- }
109
- }, 3000)
110
- } else {
111
- activeKey.value = 0
112
- }
113
- }
114
- function startMessageCalc() {
115
- if (activeKey.value < bannerMessages.value.length - 1) {
116
- activeKey.value++
117
- } else {
118
- activeKey.value = 0
119
- }
120
- }
121
- // 停止消息轮播
122
- function stopMessageCarousel() {
123
- clearInterval(interval)
124
- }
125
-
126
- // 关闭横幅
127
- const onClose = debounce((item: any, index: number) => {
128
- stopMessageCarousel()
129
-
130
- const $http = useHttp()
131
- $http
132
- .post('/cas/msg/setMsgStatus', {
133
- device: props.device || 'MINI',
134
- noticeStatus: 1,
135
- receiveId: item.id,
136
- })
137
- .then(() => {
138
- showToast({
139
- title: '消息已关闭',
140
- icon: 'none',
141
- })
142
- bannerMessages.value.splice(index, 1)
143
-
144
- startMessageCarousel()
145
-
146
- // if (item.isRead === 0) {
147
- // toReadFun([item.id])
148
- // }
149
- })
150
- .catch(() => {
151
- startMessageCarousel()
152
- })
153
- }, 350)
154
-
155
- // 跳转详情
156
- async function onDetail(item) {
157
- await noticeClick(item)
158
-
159
- emits('detail', item)
160
- }
161
-
162
- // 查看附件(webview跳转)
163
- function onView(item) {
164
- emits('view', item.link)
165
- }
166
-
167
- // 处理手势移入/移出
168
- function onTouchStart() {
169
- stopMessageCarousel()
170
- }
171
- const onTouchEnd = debounce(() => {
172
- startMessageCarousel()
173
- }, 100)
174
-
175
- // 父组件事件
176
- const emits = defineEmits(['detail', 'close', 'view', 'popup', 'hasBanner'])
177
-
178
- function onPopupClose() {
179
- setTimeout(() => {
180
- popMessages.value.splice(0, 1)
181
- }, 100);
182
- }
183
- </script>
184
-
185
- <style lang="scss">
186
- .notice-banner {
187
- background: #e6f2ff;
188
- height: 30px;
189
- margin-bottom: 8px;
190
-
191
- &.fixed {
192
- position: fixed;
193
- z-index: 10;
194
- width: 100%;
195
- }
196
-
197
- .dd-notice-bar {
198
- position: relative;
199
- background: #e6f2ff;
200
- font-size: 10px;
201
- color: #000000e5;
202
- padding: 0 8px;
203
- height: 0;
204
- min-height: auto;
205
- transition: all 0.2s;
206
- opacity: 0;
207
-
208
- &.show {
209
- height: 30px;
210
- opacity: 1;
211
- }
212
- }
213
-
214
- &-icon {
215
- width: 22px;
216
- height: 22px;
217
- margin-right: 8px;
218
- }
219
-
220
- .dd-notice-bar__close-img {
221
- display: none;
222
- }
223
-
224
- .dd-notice-bar__close {
225
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20' fill='none'%3E %3Cpath d='M3.3335 3.33331L16.6668 16.6666' stroke='%23353535' stroke-width='1.66667' stroke-linecap='round' stroke-linejoin='round'/%3E %3Cpath d='M3.3335 16.6666L16.6668 3.33331' stroke='%23353535' stroke-width='1.66667' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
226
- background-position: center;
227
- background-repeat: no-repeat;
228
- background-size: 12px 12px;
229
- opacity: 0.6;
230
- }
231
-
232
- &-text {
233
- flex: 1;
234
- overflow: hidden;
235
- text-overflow: ellipsis;
236
- display: -webkit-box;
237
- -webkit-line-clamp: 1;
238
- -webkit-box-orient: vertical;
239
- text-align: left;
240
- }
241
-
242
- &-btn {
243
- color: var(--app-primary-color, #017fff);
244
- padding-left: 6px;
245
- }
246
- }
247
- </style>
1
+ <template>
2
+ <div class="notice-banner" :class="{ fixed: fixed }" :style="topStype" v-if="bannerMessages.length"
3
+ @touchstart="onTouchStart" @touchend="onTouchEnd">
4
+ <DdNoticeBar :class="{ show: key === activeKey }" v-for="(item, key) in bannerMessages" :key="key"
5
+ :showClose="item.noticeType === 0" v-track-click="'通知栏-关闭'" @close="onClose(item, key)">
6
+ <img class="notice-banner-icon" src="https://cdn.ddjf.com/static/images/customer-center/notice-icon.png" alt="" />
7
+ <div class="notice-banner-text">
8
+ {{ item.context }}
9
+ </div>
10
+ <div class="notice-banner-btn" v-track-click="'通知栏-详情'" @click="onDetail(item)">详情</div>
11
+ </DdNoticeBar>
12
+ </div>
13
+
14
+ <!-- 系统公告强制弹框 -->
15
+ <NoticePopup v-if="popMessages.length" :device="device" :message="popMessages[0]" @close="onPopupClose"
16
+ @view="onView(popMessages[0])" />
17
+ </template>
18
+
19
+ <script lang="ts" setup>
20
+ import { computed, onMounted, ref, watch } from 'vue'
21
+ import { useHttp } from '../api'
22
+ import { useAppKitOptions } from '../../Appkit'
23
+ import DdNoticeBar from '../../components/dd-notice-bar/index.vue'
24
+ import NoticePopup from './NoticePopup.vue'
25
+ import Taro, { showToast } from '@tarojs/taro'
26
+ import { useNotice } from './useNotice'
27
+ import debounce from 'lodash-es/debounce'
28
+ import { useSafeArea } from '../../shared/composables'
29
+
30
+ const props = withDefaults(
31
+ defineProps<{
32
+ app: string
33
+ bannerStyle?: any
34
+ fixed?: boolean
35
+ device?: string
36
+ }>(),
37
+ {
38
+ app: '',
39
+ bannerStyle: '',
40
+ fixed: false,
41
+ device: 'MINI',
42
+ }
43
+ )
44
+
45
+ const { toReadFun, noticeClick } = useNotice()
46
+ const bannerMessages = ref<any[]>([]) // 横幅消息
47
+ const popMessages = ref<any[]>([]) // 弹窗消息
48
+ const activeKey = ref(0)
49
+ const safeArea = useSafeArea()
50
+
51
+ const topStype = computed(() => {
52
+ if (!props.fixed) {
53
+ return props.bannerStyle
54
+ } else {
55
+ return `top: ${safeArea.nav + safeArea.status}px; ${props.bannerStyle}}`
56
+ }
57
+ })
58
+
59
+ onMounted(() => {
60
+ queryNoticeMsg()
61
+ })
62
+
63
+ watch(
64
+ () => popMessages.value,
65
+ () => {
66
+ emits('popup', !!popMessages.value.length)
67
+ }
68
+ )
69
+ watch(
70
+ () => bannerMessages.value,
71
+ () => {
72
+ emits('hasBanner', !!bannerMessages.value.length)
73
+ }
74
+ )
75
+
76
+ // 查询当前用户当前应用系统消息
77
+ async function queryNoticeMsg() {
78
+ const appkitOptions = useAppKitOptions()
79
+
80
+ const $http = useHttp()
81
+ $http
82
+ .post('/cas/msg/queryNoticeMsg', {
83
+ device: props.device || 'MINI',
84
+ deviceType: 2,
85
+ msgType: 3,
86
+ appCode: props.app || appkitOptions.app(),
87
+ tenantId: appkitOptions.tenant(),
88
+ })
89
+ .then((result) => {
90
+ if (!Array.isArray(result)) return
91
+
92
+ bannerMessages.value = result.filter((item: any) => item.noticeType !== undefined)
93
+ popMessages.value = result.filter((item: any) => item.isPop)
94
+
95
+ startMessageCarousel()
96
+ })
97
+ }
98
+
99
+ let interval: any = null
100
+ // 启动消息轮播
101
+ function startMessageCarousel() {
102
+ stopMessageCarousel()
103
+ if (bannerMessages.value.length > 1) {
104
+ interval = setInterval(() => {
105
+ startMessageCalc()
106
+ if (bannerMessages.value.length <= 1) {
107
+ stopMessageCarousel()
108
+ }
109
+ }, 3000)
110
+ } else {
111
+ activeKey.value = 0
112
+ }
113
+ }
114
+ function startMessageCalc() {
115
+ if (activeKey.value < bannerMessages.value.length - 1) {
116
+ activeKey.value++
117
+ } else {
118
+ activeKey.value = 0
119
+ }
120
+ }
121
+ // 停止消息轮播
122
+ function stopMessageCarousel() {
123
+ clearInterval(interval)
124
+ }
125
+
126
+ // 关闭横幅
127
+ const onClose = debounce((item: any, index: number) => {
128
+ stopMessageCarousel()
129
+
130
+ const $http = useHttp()
131
+ $http
132
+ .post('/cas/msg/setMsgStatus', {
133
+ device: props.device || 'MINI',
134
+ noticeStatus: 1,
135
+ receiveId: item.id,
136
+ })
137
+ .then(() => {
138
+ showToast({
139
+ title: '消息已关闭',
140
+ icon: 'none',
141
+ })
142
+ bannerMessages.value.splice(index, 1)
143
+
144
+ startMessageCarousel()
145
+
146
+ // if (item.isRead === 0) {
147
+ // toReadFun([item.id])
148
+ // }
149
+ })
150
+ .catch(() => {
151
+ startMessageCarousel()
152
+ })
153
+ }, 350)
154
+
155
+ // 跳转详情
156
+ async function onDetail(item) {
157
+ await noticeClick(item)
158
+
159
+ emits('detail', item)
160
+ }
161
+
162
+ // 查看附件(webview跳转)
163
+ function onView(item) {
164
+ emits('view', item.link)
165
+ }
166
+
167
+ // 处理手势移入/移出
168
+ function onTouchStart() {
169
+ stopMessageCarousel()
170
+ }
171
+ const onTouchEnd = debounce(() => {
172
+ startMessageCarousel()
173
+ }, 100)
174
+
175
+ // 父组件事件
176
+ const emits = defineEmits(['detail', 'close', 'view', 'popup', 'hasBanner'])
177
+
178
+ function onPopupClose() {
179
+ setTimeout(() => {
180
+ popMessages.value.splice(0, 1)
181
+ }, 100);
182
+ }
183
+ </script>
184
+
185
+ <style lang="scss">
186
+ .notice-banner {
187
+ background: #e6f2ff;
188
+ height: 30px;
189
+ margin-bottom: 8px;
190
+
191
+ &.fixed {
192
+ position: fixed;
193
+ z-index: 10;
194
+ width: 100%;
195
+ }
196
+
197
+ .dd-notice-bar {
198
+ position: relative;
199
+ background: #e6f2ff;
200
+ font-size: 10px;
201
+ color: #000000e5;
202
+ padding: 0 8px;
203
+ height: 0;
204
+ min-height: auto;
205
+ transition: all 0.2s;
206
+ opacity: 0;
207
+
208
+ &.show {
209
+ height: 30px;
210
+ opacity: 1;
211
+ }
212
+ }
213
+
214
+ &-icon {
215
+ width: 22px;
216
+ height: 22px;
217
+ margin-right: 8px;
218
+ }
219
+
220
+ .dd-notice-bar__close-img {
221
+ display: none;
222
+ }
223
+
224
+ .dd-notice-bar__close {
225
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20' fill='none'%3E %3Cpath d='M3.3335 3.33331L16.6668 16.6666' stroke='%23353535' stroke-width='1.66667' stroke-linecap='round' stroke-linejoin='round'/%3E %3Cpath d='M3.3335 16.6666L16.6668 3.33331' stroke='%23353535' stroke-width='1.66667' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
226
+ background-position: center;
227
+ background-repeat: no-repeat;
228
+ background-size: 12px 12px;
229
+ opacity: 0.6;
230
+ }
231
+
232
+ &-text {
233
+ flex: 1;
234
+ overflow: hidden;
235
+ text-overflow: ellipsis;
236
+ display: -webkit-box;
237
+ -webkit-line-clamp: 1;
238
+ -webkit-box-orient: vertical;
239
+ text-align: left;
240
+ }
241
+
242
+ &-btn {
243
+ color: var(--app-primary-color, #017fff);
244
+ padding-left: 6px;
245
+ }
246
+ }
247
+ </style>