@uxda/appkit 4.3.30 → 4.3.33

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 -54
  2. package/.cursor/skills/appkit-sync-component-rules/SKILL.md +60 -60
  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 -2002
  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 +3 -3
  9. package/dist/assets/asset-3B_CoPto +1 -0
  10. package/dist/assets/asset-DcH8Kg-2 +1 -0
  11. package/dist/index.js +320 -83
  12. package/package.json +82 -82
  13. package/project.config.json +15 -15
  14. package/project.tt.json +13 -13
  15. package/rollup.config.mjs +81 -81
  16. package/src/Appkit.ts +72 -72
  17. package/src/balance/api/endpoints.ts +134 -133
  18. package/src/balance/api/index.ts +118 -118
  19. package/src/balance/components/AccountView.vue +834 -770
  20. package/src/balance/components/BalanceCard.vue +210 -210
  21. package/src/balance/components/BalanceReminder.vue +84 -84
  22. package/src/balance/components/ConsumptionFilter.vue +218 -218
  23. package/src/balance/components/ConsumptionRules.vue +68 -68
  24. package/src/balance/components/DateFilter.vue +259 -259
  25. package/src/balance/components/DateRange.vue +111 -111
  26. package/src/balance/components/ListFilter.vue +62 -62
  27. package/src/balance/components/ListFilterPicker.vue +191 -191
  28. package/src/balance/components/PromoterCard.vue +308 -308
  29. package/src/balance/components/SecondBalance.vue +77 -77
  30. package/src/balance/components/Tip.vue +45 -45
  31. package/src/balance/components/index.ts +8 -8
  32. package/src/balance/types.ts +99 -99
  33. package/src/components/bt-cropper/index.vue +730 -730
  34. package/src/components/bt-cropper/utils/calcCropper.js +42 -42
  35. package/src/components/bt-cropper/utils/calcImagePosition.js +23 -23
  36. package/src/components/bt-cropper/utils/calcImageSize.js +37 -37
  37. package/src/components/bt-cropper/utils/calcPointDistance.js +12 -12
  38. package/src/components/bt-cropper/utils/calcRightAndBottom.js +7 -7
  39. package/src/components/bt-cropper/utils/ratio.js +3 -3
  40. package/src/components/bt-cropper/utils/tools.js +25 -25
  41. package/src/components/dd-area/index.vue +225 -225
  42. package/src/components/dd-icon/doc.md +21 -21
  43. package/src/components/dd-icon/index.vue +23 -23
  44. package/src/components/dd-notice-bar/index.vue +78 -78
  45. package/src/components/dd-search/doc.md +34 -34
  46. package/src/components/dd-search/index.vue +168 -168
  47. package/src/components/dd-selector/index.vue +124 -124
  48. package/src/components/dd-skeleton/doc.md +19 -19
  49. package/src/components/dd-skeleton/index.vue +36 -36
  50. package/src/global.ts +6 -6
  51. package/src/index.ts +101 -101
  52. package/src/main.scss +1 -1
  53. package/src/notice/api/endpoints.ts +54 -54
  54. package/src/notice/api/index.ts +121 -121
  55. package/src/notice/components/NoticeBanner.vue +247 -247
  56. package/src/notice/components/NoticeEntry.vue +99 -99
  57. package/src/notice/components/NoticeList.vue +311 -311
  58. package/src/notice/components/NoticeList2.vue +401 -401
  59. package/src/notice/components/NoticePopup.vue +163 -163
  60. package/src/notice/components/index.ts +6 -6
  61. package/src/notice/components/useCommonList.ts +87 -87
  62. package/src/notice/components/useNotice.ts +35 -35
  63. package/src/notice/index.ts +1 -1
  64. package/src/notice/types.ts +25 -25
  65. package/src/payment/api/config.ts +7 -7
  66. package/src/payment/api/endpoints.ts +112 -112
  67. package/src/payment/api/index.ts +108 -108
  68. package/src/payment/components/AmountPicker.vue +56 -56
  69. package/src/payment/components/RechargeResult.vue +68 -68
  70. package/src/payment/components/RechargeView.vue +389 -389
  71. package/src/payment/components/RightsPicker.vue +105 -105
  72. package/src/payment/components/TradeView.vue +627 -616
  73. package/src/payment/components/UserAgreement.vue +234 -234
  74. package/src/payment/components/index.ts +22 -22
  75. package/src/payment/components/recharge-amount.spec.ts +3 -0
  76. package/src/payment/components/recharge-amount.ts +5 -1
  77. package/src/payment/index.ts +5 -5
  78. package/src/payment/services/index.ts +16 -16
  79. package/src/payment/services/invoke-recharge.ts +25 -25
  80. package/src/payment/services/request-payment.ts +136 -136
  81. package/src/payment/types.ts +34 -34
  82. package/src/register/components/SelfRegistration.vue +233 -233
  83. package/src/register/components/index.ts +2 -2
  84. package/src/scenarios/components/SharePoster.vue +364 -364
  85. package/src/scenarios/components/index.ts +2 -2
  86. package/src/scenarios/components/poster-paste.vue +93 -93
  87. package/src/scenarios/components/share-poster.md +273 -273
  88. package/src/shared/components/AppDrawer.vue +53 -53
  89. package/src/shared/components/AppVerify.vue +137 -137
  90. package/src/shared/components/DeviceVersion.vue +78 -78
  91. package/src/shared/components/EmptyView.vue +33 -33
  92. package/src/shared/components/OcrBank.vue +202 -202
  93. package/src/shared/components/OcrBusinessLicense.vue +120 -120
  94. package/src/shared/components/OcrIcon.vue +267 -267
  95. package/src/shared/components/OcrInvoice.vue +323 -323
  96. package/src/shared/components/OfficeDocx.vue +33 -33
  97. package/src/shared/components/OfficePdf.vue +35 -35
  98. package/src/shared/components/PageHeader.vue +84 -84
  99. package/src/shared/components/index.ts +12 -12
  100. package/src/shared/composables/index.ts +10 -10
  101. package/src/shared/composables/useAmount.ts +46 -46
  102. package/src/shared/composables/useCompress.ts +64 -64
  103. package/src/shared/composables/useCountdown.ts +46 -46
  104. package/src/shared/composables/useCrypto.ts +76 -76
  105. package/src/shared/composables/useDeviceEnv.ts +61 -61
  106. package/src/shared/composables/useDragBox.ts +97 -97
  107. package/src/shared/composables/useEncode.ts +43 -43
  108. package/src/shared/composables/useLogger.ts +149 -149
  109. package/src/shared/composables/useSafeArea.ts +46 -46
  110. package/src/shared/composables/useTabbar.ts +24 -24
  111. package/src/shared/composables/useUpload.ts +106 -106
  112. package/src/shared/composables/useValidator.ts +32 -32
  113. package/src/shared/composables/useWxAuth.ts +49 -49
  114. package/src/shared/http/Http.ts +149 -149
  115. package/src/shared/http/index.ts +1 -1
  116. package/src/shared/http/types.ts +163 -163
  117. package/src/shared/index.ts +9 -9
  118. package/src/shared/tracking/directives/index.ts +40 -40
  119. package/src/shared/tracking/examples/page-tracking-template.vue +27 -27
  120. package/src/shared/weixin/index.ts +9 -9
  121. package/src/shared/weixin/jssdk.ts +104 -104
  122. package/src/shared/weixin/payment.ts +38 -38
  123. package/src/styles/vars.scss +3 -3
  124. package/src/user/api/endpoints.ts +17 -17
  125. package/src/user/api/index.ts +123 -123
  126. package/src/user/components/LoginSetting.vue +114 -114
  127. package/src/user/components/UserAuth.vue +218 -218
  128. package/src/user/components/UserBinding.vue +277 -277
  129. package/src/user/components/UserBindingSuccess.vue +80 -80
  130. package/src/user/components/UserEntry.vue +139 -139
  131. package/src/user/components/UserFeedback.vue +428 -428
  132. package/src/user/components/UserFeedbackEntry.vue +175 -175
  133. package/src/user/components/UserHeadCrop.vue +65 -65
  134. package/src/user/components/UserInfo.vue +711 -711
  135. package/src/user/components/UserResourceEmpty.vue +75 -75
  136. package/src/user/components/index.ts +23 -23
  137. package/src/user/index.ts +1 -1
  138. package/src/utils/utils.ts +33 -33
  139. package/tsconfig.json +30 -30
  140. package/types/global.d.ts +23 -23
  141. package/types/vue.d.ts +10 -10
@@ -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>