jianghu-ui 1.0.1

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 (112) hide show
  1. package/README.md +376 -0
  2. package/dist/jianghu-ui.css +2318 -0
  3. package/dist/jianghu-ui.js +2 -0
  4. package/dist/jianghu-ui.js.LICENSE.txt +1 -0
  5. package/package.json +56 -0
  6. package/src/Design.stories.mdx +195 -0
  7. package/src/Introduction.stories.mdx +148 -0
  8. package/src/components/JhAddressSelect/JhAddressSelect.md +250 -0
  9. package/src/components/JhAddressSelect/JhAddressSelect.stories.js +282 -0
  10. package/src/components/JhAddressSelect/JhAddressSelect.vue +261 -0
  11. package/src/components/JhCard/JhCard.md +246 -0
  12. package/src/components/JhCard/JhCard.stories.js +688 -0
  13. package/src/components/JhCard/JhCard.vue +604 -0
  14. package/src/components/JhCheckCard/JhCheckCard.md +245 -0
  15. package/src/components/JhCheckCard/JhCheckCard.stories.js +750 -0
  16. package/src/components/JhCheckCard/JhCheckCard.vue +476 -0
  17. package/src/components/JhConfirmDialog/JhConfirmDialog.md +70 -0
  18. package/src/components/JhConfirmDialog/JhConfirmDialog.stories.js +550 -0
  19. package/src/components/JhConfirmDialog/JhConfirmDialog.vue +181 -0
  20. package/src/components/JhDateRangePicker/JhDateRangePicker.md +56 -0
  21. package/src/components/JhDateRangePicker/JhDateRangePicker.stories.js +320 -0
  22. package/src/components/JhDateRangePicker/JhDateRangePicker.vue +307 -0
  23. package/src/components/JhDescriptions/JhDescriptions.md +724 -0
  24. package/src/components/JhDescriptions/JhDescriptions.stories.js +858 -0
  25. package/src/components/JhDescriptions/JhDescriptions.vue +933 -0
  26. package/src/components/JhDraggable/JhDraggable.md +66 -0
  27. package/src/components/JhDraggable/JhDraggable.stories.js +161 -0
  28. package/src/components/JhDraggable/JhDraggable.vue +254 -0
  29. package/src/components/JhDrawer/JhDrawer.md +68 -0
  30. package/src/components/JhDrawer/JhDrawer.stories.js +478 -0
  31. package/src/components/JhDrawer/JhDrawer.vue +281 -0
  32. package/src/components/JhDrawerForm/JhDrawerForm.md +69 -0
  33. package/src/components/JhDrawerForm/JhDrawerForm.stories.js +492 -0
  34. package/src/components/JhDrawerForm/JhDrawerForm.vue +297 -0
  35. package/src/components/JhEditableTable/JhEditableTable.md +507 -0
  36. package/src/components/JhEditableTable/JhEditableTable.stories.js +615 -0
  37. package/src/components/JhEditableTable/JhEditableTable.vue +685 -0
  38. package/src/components/JhFileInput/JhFileInput.md +56 -0
  39. package/src/components/JhFileInput/JhFileInput.stories.js +103 -0
  40. package/src/components/JhFileInput/JhFileInput.vue +253 -0
  41. package/src/components/JhForm/JhForm.md +676 -0
  42. package/src/components/JhForm/JhForm.stories.js +1375 -0
  43. package/src/components/JhForm/JhForm.vue +657 -0
  44. package/src/components/JhFormField/JhFormField.stories.js +217 -0
  45. package/src/components/JhFormField/JhFormField.vue +439 -0
  46. package/src/components/JhFormFields/JhFormFields.md +647 -0
  47. package/src/components/JhFormFields/JhFormFields.stories.js +922 -0
  48. package/src/components/JhFormFields/JhFormFields.vue +998 -0
  49. package/src/components/JhFormList/JhFormList.md +303 -0
  50. package/src/components/JhFormList/JhFormList.stories.js +661 -0
  51. package/src/components/JhFormList/JhFormList.vue +1127 -0
  52. package/src/components/JhJsonEditor/JhJsonEditor.md +54 -0
  53. package/src/components/JhJsonEditor/JhJsonEditor.stories.js +157 -0
  54. package/src/components/JhJsonEditor/JhJsonEditor.vue +178 -0
  55. package/src/components/JhLayout/JhLayout.md +580 -0
  56. package/src/components/JhLayout/JhLayout.stories.js +414 -0
  57. package/src/components/JhLayout/JhLayout.vue +387 -0
  58. package/src/components/JhList/JhList.md +441 -0
  59. package/src/components/JhList/JhList.stories.js +524 -0
  60. package/src/components/JhList/JhList.vue +571 -0
  61. package/src/components/JhMarkdownEditor/JhMarkdownEditor.md +56 -0
  62. package/src/components/JhMarkdownEditor/JhMarkdownEditor.stories.js +191 -0
  63. package/src/components/JhMarkdownEditor/JhMarkdownEditor.vue +188 -0
  64. package/src/components/JhMask/JhMask.md +62 -0
  65. package/src/components/JhMask/JhMask.stories.js +270 -0
  66. package/src/components/JhMask/JhMask.vue +123 -0
  67. package/src/components/JhMenu/JhMenu.md +85 -0
  68. package/src/components/JhMenu/JhMenu.stories.js +384 -0
  69. package/src/components/JhMenu/JhMenu.vue +545 -0
  70. package/src/components/JhModal/JhModal.md +68 -0
  71. package/src/components/JhModal/JhModal.stories.js +562 -0
  72. package/src/components/JhModal/JhModal.vue +235 -0
  73. package/src/components/JhModalForm/JhModalForm.md +69 -0
  74. package/src/components/JhModalForm/JhModalForm.stories.js +592 -0
  75. package/src/components/JhModalForm/JhModalForm.vue +298 -0
  76. package/src/components/JhPageContainer/JhPageContainer.md +409 -0
  77. package/src/components/JhPageContainer/JhPageContainer.stories.js +209 -0
  78. package/src/components/JhPageContainer/JhPageContainer.vue +72 -0
  79. package/src/components/JhQueryFilter/JhQueryFilter.md +77 -0
  80. package/src/components/JhQueryFilter/JhQueryFilter.stories.js +684 -0
  81. package/src/components/JhQueryFilter/JhQueryFilter.vue +429 -0
  82. package/src/components/JhScene/JhScene.md +64 -0
  83. package/src/components/JhScene/JhScene.stories.js +317 -0
  84. package/src/components/JhScene/JhScene.vue +376 -0
  85. package/src/components/JhStatisticCard/JhStatisticCard.md +363 -0
  86. package/src/components/JhStatisticCard/JhStatisticCard.stories.js +847 -0
  87. package/src/components/JhStatisticCard/JhStatisticCard.vue +459 -0
  88. package/src/components/JhStepsForm/JhStepsForm.md +666 -0
  89. package/src/components/JhStepsForm/JhStepsForm.stories.js +1224 -0
  90. package/src/components/JhStepsForm/JhStepsForm.vue +749 -0
  91. package/src/components/JhTable/JhTable.md +730 -0
  92. package/src/components/JhTable/JhTable.stories.js +1444 -0
  93. package/src/components/JhTable/JhTable.vue +2298 -0
  94. package/src/components/JhTableAttachment/JhTableAttachment.md +70 -0
  95. package/src/components/JhTableAttachment/JhTableAttachment.stories.js +198 -0
  96. package/src/components/JhTableAttachment/JhTableAttachment.vue +264 -0
  97. package/src/components/JhToast/JhToast.md +67 -0
  98. package/src/components/JhToast/JhToast.stories.js +386 -0
  99. package/src/components/JhToast/JhToast.vue +239 -0
  100. package/src/components/JhTreeSelect/JhTreeSelect.md +82 -0
  101. package/src/components/JhTreeSelect/JhTreeSelect.stories.js +391 -0
  102. package/src/components/JhTreeSelect/JhTreeSelect.vue +727 -0
  103. package/src/components/JhWaterMark/JhWaterMark.md +190 -0
  104. package/src/components/JhWaterMark/JhWaterMark.stories.js +675 -0
  105. package/src/components/JhWaterMark/JhWaterMark.vue +351 -0
  106. package/src/components/README.md +52 -0
  107. package/src/index.js +135 -0
  108. package/src/style/globalCSSJHV4.css +348 -0
  109. package/src/style/globalCSSVuetifyV4.css +637 -0
  110. package/src/style/storybook.css +4 -0
  111. package/src/tailwind.css +3 -0
  112. package/src/utils/vuetify.js +31 -0
@@ -0,0 +1,637 @@
1
+
2
+ /* 全局 >>>>>> */
3
+ body {
4
+ --cPrimaryColor: <$ ctx.app.config.primaryColor $>;
5
+ --shadow-sm: 0px 1px 2px rgba(25, 39, 52, .05), 0px 0px 4px rgba(25, 39, 52, .1);
6
+ --gray-900: #1F272E;
7
+ --gray-800: #333C44;
8
+ }
9
+
10
+ body {
11
+ font-size: 13px;
12
+ background: #F2F2F2 !important;
13
+ }
14
+
15
+ .v-application .text-h7 {
16
+ font-size: 1.125rem;
17
+ }
18
+
19
+ .flex-none {
20
+ flex: none;
21
+ }
22
+
23
+ .theme--light.v-application {
24
+ background: #fff !important;
25
+ }
26
+ .theme--light.v-application .login-form-card {
27
+ border: 1px solid #eee;
28
+ }
29
+ .v-application .align-center.text-start {
30
+ text-align: center !important;
31
+ }
32
+
33
+ body .v-application .title {
34
+ font-size: 1rem !important;
35
+ }
36
+ body .v-application .v-navigation-drawer .title {
37
+ color: var(--cPrimaryColor);
38
+ position: relative;
39
+ }
40
+ body .v-application .v-navigation-drawer .title::before {
41
+ content: '';
42
+ height: 14px;
43
+ width: 3px;
44
+ background: var(--cPrimaryColor);
45
+ position: absolute;
46
+ top: calc(50% - 7px);
47
+ left: 0;
48
+ }
49
+
50
+
51
+ body .d-flex .v-main__wrap {
52
+ display: flex;
53
+ flex-direction: column;
54
+ }
55
+
56
+ .mdi-close::before {
57
+ font-size: 1rem;
58
+ }
59
+
60
+ /* 全局 >>>>>> */
61
+
62
+
63
+ /* 配色 >>>>>> */
64
+ .v-application .theme--dark.secondary {
65
+ background-color: #22262e !important;
66
+ border-color: #22262e !important;
67
+ }
68
+
69
+
70
+ /* <<<<< 配色 */
71
+
72
+
73
+ /* list >>>>>> */
74
+ .v-list--dense .v-list-item .v-list-item__subtitle,
75
+ .v-list--dense .v-list-item .v-list-item__title,
76
+ .v-list-item--dense .v-list-item__subtitle,
77
+ .v-list-item--dense .v-list-item__title {
78
+ font-size: .8125rem !important;
79
+ font-weight: normal;
80
+ }
81
+
82
+ .v-list-item__title {
83
+ font-size: 13px !important;
84
+ }
85
+
86
+ /* <<<<< list */
87
+
88
+
89
+ /* 表单 >>>>>> */
90
+ .v-input--is-readonly .v-input__slot {
91
+ background: #eeeeee!important;
92
+ }
93
+ .v-label,
94
+ input,
95
+ .v-input {
96
+ font-size: 0.875rem !important;
97
+ }
98
+
99
+ body .v-text-field .v-label {
100
+ color: rgba(0, 0, 0, .3);
101
+ }
102
+
103
+ body .theme--light.v-input,
104
+ body .theme--light.v-input input,
105
+ body .theme--light.v-input textarea,
106
+ body .v-select.v-input--dense .v-select__selection--comma {
107
+ font-size: 14px !important;
108
+ font-weight: 500 !important;
109
+ color: #5E6278;
110
+ }
111
+
112
+ body .v-text-field--filled {
113
+ border-radius: 4px !important;
114
+ }
115
+
116
+ body .v-text-field>.v-input__control>.v-input__slot:before {
117
+ border: none;
118
+ }
119
+
120
+ body .v-text-field>.v-input__control>.v-input__slot:after {
121
+ border: none;
122
+ }
123
+
124
+ body .theme--light.v-input--is-disabled,
125
+ .theme--light.v-input--is-disabled input,
126
+ .theme--light.v-input--is-disabled textarea {
127
+ color: rgba(0, 0, 0, .28) !important;
128
+ }
129
+
130
+ body .theme--light.v-text-field--filled:not(.v-input--is-focused):not(.v-input--has-state)>.v-input__control>.v-input__slot:hover {
131
+ background: #EEF7ED !important;
132
+ }
133
+
134
+ body span.jh-input-label {
135
+ color: #3F4254;
136
+ line-height: 32px;
137
+ font-weight: 500;
138
+ }
139
+
140
+ body .v-text-field--filled.v-input--dense>.v-input__control>.v-input__slot,
141
+ body .v-text-field--full-width.v-input--dense>.v-input__control>.v-input__slot {
142
+ min-height: 40px;
143
+ }
144
+
145
+ body .v-text-field--filled:not(.v-text-field--single-line) input {
146
+ margin-top: 4px;
147
+ }
148
+
149
+ body .v-text-field--filled.v-input--dense.v-text-field--single-line .v-label,
150
+ body .v-text-field--full-width.v-input--dense.v-text-field--single-line .v-label {
151
+ top: 9px;
152
+ }
153
+
154
+ body .v-text-field--filled.v-input--dense .v-label--active,
155
+ body .v-text-field--full-width.v-input--dense .v-label--active {
156
+ transform: translateY(-16px) scale(.75);
157
+ background: #ffffff;
158
+ padding: 1px 5px;
159
+ border-radius: 30px;
160
+ }
161
+
162
+ body .v-data-table__checkbox .v-input--selection-controls__input .v-icon.mdi-checkbox-blank-outline::before {
163
+ content: "" !important;
164
+ background: #d6dde1;
165
+ width: 18px;
166
+ height: 18px;
167
+ border-radius: 2px;
168
+ }
169
+
170
+ .v-text-field.v-input--is-focused.v-input--dense:not(.v-text-field--outlined) .v-text-field__prefix {
171
+ color: inherit;
172
+ }
173
+
174
+ .v-text-field.v-input--dense:not(.v-text-field--outlined) .v-text-field__prefix {
175
+ color: #a5a9ab;
176
+ }
177
+
178
+ .v-text-field--filled.v-input--dense.v-text-field--outlined.v-text-field--filled>.v-input__control>.v-input__slot,
179
+ .v-text-field--filled.v-input--dense.v-text-field--outlined>.v-input__control>.v-input__slot,
180
+ .v-text-field--filled.v-input--dense.v-text-field--single-line>.v-input__control>.v-input__slot,
181
+ .v-text-field--full-width.v-input--dense.v-text-field--outlined.v-text-field--filled>.v-input__control>.v-input__slot,
182
+ .v-text-field--full-width.v-input--dense.v-text-field--outlined>.v-input__control>.v-input__slot,
183
+ .v-text-field--full-width.v-input--dense.v-text-field--single-line>.v-input__control>.v-input__slot,
184
+ .v-text-field--outlined.v-input--dense.v-text-field--outlined.v-text-field--filled>.v-input__control>.v-input__slot,
185
+ .v-text-field--outlined.v-input--dense.v-text-field--outlined>.v-input__control>.v-input__slot,
186
+ .v-text-field--outlined.v-input--dense.v-text-field--single-line>.v-input__control>.v-input__slot {
187
+ min-height: 32px;
188
+ }
189
+
190
+ .v-input .v-label {
191
+ line-height: 14px;
192
+ font-size: .8125rem !important;
193
+ }
194
+
195
+ .v-text-field--enclosed.v-input--dense:not(.v-text-field--solo).v-text-field--single-line .v-input__append-inner,
196
+ .v-text-field--enclosed.v-input--dense:not(.v-text-field--solo).v-text-field--single-line .v-input__append-outer,
197
+ .v-text-field--enclosed.v-input--dense:not(.v-text-field--solo).v-text-field--single-line .v-input__prepend-inner,
198
+ .v-text-field--enclosed.v-input--dense:not(.v-text-field--solo).v-text-field--single-line .v-input__prepend-outer,
199
+ .v-text-field--full-width.v-input--dense:not(.v-text-field--solo).v-text-field--single-line .v-input__append-inner,
200
+ .v-text-field--full-width.v-input--dense:not(.v-text-field--solo).v-text-field--single-line .v-input__append-outer,
201
+ .v-text-field--full-width.v-input--dense:not(.v-text-field--solo).v-text-field--single-line .v-input__prepend-inner,
202
+ .v-text-field--full-width.v-input--dense:not(.v-text-field--solo).v-text-field--single-line .v-input__prepend-outer {
203
+ margin-top: 5px;
204
+ }
205
+
206
+ body .theme--light.v-input,
207
+ body .theme--light.v-input input,
208
+ body .theme--light.v-input textarea,
209
+ body .v-select.v-input--dense .v-select__selection--comma {
210
+ font-size: .8125rem !important;
211
+ font-weight: normal !important;
212
+ color: var(--gray-900);
213
+ }
214
+
215
+ body .theme--light.v-text-field--filled>.v-input__control>.v-input__slot {
216
+ background: #Ffff;
217
+ border: 1px solid #DFDFDF;
218
+ }
219
+
220
+ body .theme--light.v-text-field--filled.v-input--is-focused>.v-input__control>.v-input__slot {
221
+ background: #Ffff;
222
+ border: 1px solid var(--cPrimaryColor) ;
223
+ }
224
+
225
+ body .theme--light.v-text-field--filled.v-input--is-disabled>.v-input__control>.v-input__slot {
226
+ background: #F2F2F2;
227
+ border: 1px solid #F2F2F2;
228
+ }
229
+
230
+ .v-select__selection--comma {
231
+ margin: 7px 4px;
232
+ }
233
+
234
+ /* <<<<< 表单 */
235
+
236
+
237
+ /* table >>>>>> */
238
+ .theme--light.v-data-table.v-data-table--fixed-header thead th {
239
+ background: #F6F6F6 !important;
240
+ }
241
+
242
+ .v-data-table__progress {
243
+ height: 10px !important;
244
+ }
245
+
246
+ .v-data-table__empty-wrapper td {
247
+ max-width: 80vw;
248
+ text-align: left;
249
+ }
250
+ .v-data-table.v-data-table--mobile>.v-data-table__wrapper>table>tbody>tr>td:first-child,
251
+ .v-data-table.v-data-table--mobile>.v-data-table__wrapper>table>tfoot>tr>td:first-child,
252
+ .v-data-table.v-data-table--mobile>.v-data-table__wrapper>table>thead>tr>th:first-child {
253
+ padding-left: 5px!important;
254
+ }
255
+
256
+ .theme--light.v-data-table>.v-data-table__wrapper>table>tbody>tr:hover:not(.v-data-table__expanded__content):not(.v-data-table__empty-wrapper) {
257
+ background: #fbfbfb !important;
258
+ }
259
+
260
+ /* 固定表头最后一个字段 */
261
+ table>tbody>tr>td.fixed:nth-last-child(1),
262
+ table>thead>tr>th.fixed:nth-last-child(1) {
263
+ position: sticky !important;
264
+ position: -webkit-sticky !important;
265
+ right: 0;
266
+ z-index: 10;
267
+ background: white;
268
+ border: none;
269
+ box-shadow: none;
270
+ }
271
+
272
+ table>thead>tr>th.fixed:nth-last-child(1) {
273
+ top: 0;
274
+ }
275
+
276
+ th {
277
+ white-space: nowrap;
278
+ }
279
+
280
+ /* table 框线 */
281
+ td:not(.v-picker td),
282
+ th:not(.v-picker th) {
283
+ border-bottom: thin solid rgba(0, 0, 0, .06) !important;
284
+ border-right: thin solid rgba(0, 0, 0, .06) !important;
285
+ }
286
+
287
+ table>tbody>tr>td:nth-last-child(1),
288
+ table>thead>tr>th:nth-last-child(1) {
289
+ border-right: none !important;
290
+ }
291
+
292
+ .theme--light.v-data-table .v-data-footer {
293
+ border-top: 0;
294
+ }
295
+
296
+ .theme--light.v-data-table.v-data-table--fixed-header thead th {
297
+ border-bottom: thin solid rgba(0, 0, 0, .06) !important;
298
+ box-shadow: none;
299
+ }
300
+
301
+ .v-data-table>.v-data-table__wrapper>table>tbody>tr>td,
302
+ .v-data-table>.v-data-table__wrapper>table>tfoot>tr>td,
303
+ .v-data-table>.v-data-table__wrapper>table>thead>tr>th {
304
+ padding: 0 8px !important;
305
+ }
306
+
307
+ .v-data-table>.v-data-table__wrapper>table>tbody>tr>td:first-child,
308
+ .v-data-table>.v-data-table__wrapper>table>tfoot>tr>td:first-child,
309
+ .v-data-table>.v-data-table__wrapper>table>thead>tr>th:first-child {
310
+ padding-left: 16px !important;
311
+ }
312
+ .v-data-table>.v-data-table__wrapper>table>tbody>tr>td.noWarp,
313
+ .v-data-table>.v-data-table__wrapper>table>tfoot>tr>td.noWarp {
314
+ white-space: nowrap !important;
315
+ }
316
+
317
+ .v-data-table>.v-data-table__wrapper>table>tbody>tr>td .v-icon.v-icon {
318
+ transform: translateY(-1px);
319
+ }
320
+
321
+ .theme--light.v-data-table>.v-data-table__wrapper>table>thead>tr>th {
322
+ color: rgba(181, 181, 195);
323
+ font-weight: 600;
324
+ font-size: 13px;
325
+ }
326
+
327
+ .v-data-table--fixed-header>.v-data-table__wrapper>table>thead>tr>th.fixed {
328
+ z-index: 12 !important;
329
+ }
330
+
331
+ .v-data-table--fixed-header>.v-data-table__wrapper>table>thead>tr>th {
332
+ z-index: 11 !important;
333
+ }
334
+
335
+ .v-data-table.show-select table>tbody>tr>td:nth-child(1),
336
+ .v-data-table.show-select table>thead>tr>th:nth-child(1) {
337
+ position: sticky !important;
338
+ position: -webkit-sticky !important;
339
+ left: 0;
340
+ z-index: 10;
341
+ background: white;
342
+ }
343
+
344
+ /* 固定表头部第一个字段 */
345
+ .v-data-table.show-select table>tbody>tr>td.fixed:nth-child(2),
346
+ .v-data-table.show-select table>thead>tr>th.fixed:nth-child(2) {
347
+ position: sticky !important;
348
+ position: -webkit-sticky !important;
349
+ left: 64px;
350
+ z-index: 10 !important;
351
+ border-right: 1px solid #EEEEEE;
352
+ }
353
+
354
+ body .theme--light.v-data-table.v-data-table--fixed-header thead th, body .theme--light.v-data-table>.v-data-table__wrapper>table>thead>tr>th {
355
+ background-color: #ebecf0 !important;
356
+ }
357
+
358
+
359
+ .v-data-table>.v-data-table__wrapper>table>tbody>tr>td,
360
+ .v-data-table>.v-data-table__wrapper>table>tfoot>tr>td,
361
+ .v-data-table>.v-data-table__wrapper>table>thead>tr>td {
362
+ min-height: 40px;
363
+ height: 40px;
364
+ color: #333C44;
365
+ font-size: .8125rem;
366
+ }
367
+
368
+ .theme--light.v-data-table>.v-data-table__wrapper>table>thead>tr>th {
369
+ color: #505A62 !important;
370
+ font-weight: normal;
371
+ }
372
+
373
+ /* 分组 */
374
+ .theme--light.v-data-table .v-row-group__header,
375
+ .theme--light.v-data-table .v-row-group__summary {
376
+ background: #F2F2F2;
377
+ }
378
+
379
+ .theme--light.v-data-table .v-data-footer {
380
+ justify-content: end;
381
+ }
382
+
383
+ .v-application--is-ltr .v-data-footer__select {
384
+ margin-left: 30px;
385
+ }
386
+
387
+ .v-data-table td.fixed, .v-data-table th.fixed {
388
+ position: unset;
389
+ }
390
+
391
+ /* table 斑马纹 */
392
+ .v-data-table.zebraLine tr:nth-child(even),
393
+ .v-data-table.zebraLine tr:nth-child(even) td.fixed,
394
+ .v-data-table.zebraLine.fixed-first-column tr:nth-child(even) td:nth-child(1) {
395
+ background-color: #F6F6F6;
396
+ }
397
+
398
+ /* table行hover背景色 */
399
+ .theme--light.v-data-table>.v-data-table__wrapper>table>tbody>tr:hover:not(.v-data-table__expanded__content):not(.v-data-table__empty-wrapper),
400
+ .theme--light.v-data-table>.v-data-table__wrapper>table>tbody>tr:hover td.fixed,
401
+ .theme--light.v-data-table.fixed-first-column>.v-data-table__wrapper>table>tbody>tr:hover td:nth-child(1) {
402
+ background: #fff !important;
403
+ }
404
+ .theme--light.v-data-table>.v-data-table__wrapper>table>tbody>tr:nth-child(even):hover:not(.v-data-table__expanded__content):not(.v-data-table__empty-wrapper),
405
+ .theme--light.v-data-table>.v-data-table__wrapper>table>tbody>tr:nth-child(even):hover td.fixed,
406
+ .theme--light.v-data-table.fixed-first-column>.v-data-table__wrapper>table>tbody>tr:nth-child(even):hover td:nth-child(1) {
407
+ background: #F6F6F6 !important;
408
+ }
409
+
410
+ /* table行选中背景色 */
411
+ .theme--light.v-data-table tbody tr.v-data-table__selected{
412
+ background: #fff !important;
413
+ }
414
+ .theme--light.v-data-table tbody tr.v-data-table__selected:nth-child(even){
415
+ background: #F6F6F6 !important;
416
+ }
417
+
418
+ /* table 定高 */
419
+ .jh-fixed-table-height {
420
+ display: flex;
421
+ flex-direction: column;
422
+ }
423
+
424
+ .v-data-table__wrapper,
425
+ .fixed-table-wrapper-height .v-data-table__wrapper {
426
+ flex: auto;
427
+ border: 1px solid #E6E6E6;
428
+ border-bottom: none;
429
+ }
430
+
431
+ /* table 页脚 */
432
+ .v-data-footer {
433
+ border-top: 1px solid rgba(0, 0, 0, .06) !important;
434
+ margin-right: 0 !important;
435
+ }
436
+
437
+ /* table 分页紧凑 */
438
+ .v-application--is-ltr .v-data-footer__pagination {
439
+ margin: 0 12px 0 4px;
440
+ }
441
+
442
+ .v-application--is-ltr .v-data-footer__select .v-select {
443
+ margin: 8px 0 8px 14px;
444
+ }
445
+
446
+ .v-application--is-ltr .v-data-footer__select {
447
+ margin-right: 8px;
448
+ margin-left: 20px;
449
+ }
450
+
451
+
452
+
453
+ /* table 固定第一列 */
454
+ .fixed-first-column table>tbody>tr>td:nth-child(1),
455
+ .fixed-first-column table>thead>tr>th:nth-child(1) {
456
+ position: sticky !important;
457
+ position: -webkit-sticky !important;
458
+ left: 0;
459
+ z-index: 12 !important;
460
+ background: white;
461
+ border-right: none;
462
+ }
463
+
464
+ /* table 高度撑满*/
465
+ .table-height-full {
466
+ height: 100%;
467
+ }
468
+
469
+ /* <<<<< table */
470
+
471
+
472
+ /* card >>>>>> */
473
+ body .v-sheet.v-card:not(.v-sheet--outlined) {
474
+ box-shadow: 0 1px 20px 0 rgb(0 0 0 / 2%);
475
+ }
476
+
477
+ /* <<<<< card */
478
+
479
+
480
+
481
+ /* 弹窗 >>>>>> */
482
+ .v-dialog--fullscreen .v-sheet .container {
483
+ height: 100vh;
484
+ margin: 15vh 0 0 0;
485
+ background: #ffffff;
486
+ padding: 50px 0 0 0;
487
+ position: relative;
488
+ }
489
+
490
+ .v-dialog--fullscreen .v-sheet {
491
+ height: 100vh;
492
+ top: 0;
493
+ position: fixed;
494
+ }
495
+
496
+ .v-dialog--fullscreen {
497
+ background: rgba(0, 0, 0, 0.5);
498
+ top: auto !important;
499
+ bottom: 0;
500
+ }
501
+
502
+ .v-dialog--fullscreen .v-data-table {
503
+ overflow-y: auto;
504
+ }
505
+
506
+ /* <<<<< 弹窗 */
507
+
508
+
509
+ /* toolbar >>>>>> */
510
+ .v-toolbar__title {
511
+ overflow: visible;
512
+ }
513
+
514
+ .theme--light.v-app-bar.v-toolbar.v-sheet {
515
+ background: #ffffff !important;
516
+ box-shadow: 0 1px 20px 0 rgb(0 0 0 / 2%) !important;
517
+ }
518
+
519
+ body .v-toolbar__content {
520
+ padding: 0 !important;
521
+ }
522
+
523
+ /* <<<<< toolbar */
524
+
525
+
526
+ /* tab >>>>>> */
527
+ body .v-tab {
528
+ font-size: 14px !important;
529
+ }
530
+
531
+ .theme--light.v-tabs>.v-tabs-bar .v-tab--disabled,
532
+ .theme--light.v-tabs>.v-tabs-bar .v-tab:not(.v-tab--active),
533
+ .theme--light.v-tabs>.v-tabs-bar .v-tab:not(.v-tab--active)>.v-btn,
534
+ .theme--light.v-tabs>.v-tabs-bar .v-tab:not(.v-tab--active)>.v-icon {
535
+ color: var(--gray-900);
536
+ }
537
+
538
+ /* <<<<< tab */
539
+
540
+
541
+ /* 面包屑 >>>>>> */
542
+ body .v-breadcrumbs li {
543
+ font-size: 12px !important;
544
+ }
545
+
546
+ body .v-breadcrumbs li:nth-child(2n) {
547
+ padding: 0 6px;
548
+ }
549
+
550
+ /* <<<<< 面包屑 */
551
+
552
+
553
+ /* 菜单 >>>>>> */
554
+ .v-menu__content {
555
+ background: white;
556
+ box-shadow: 0 3px 14px 2px rgb(0 0 0 / 8%);
557
+ z-index: 300 !important;
558
+ }
559
+
560
+ .v-menu__content .v-list-item {
561
+ margin-bottom: 3px;
562
+ height: 32px;
563
+ min-height: auto;
564
+ }
565
+
566
+ .v-menu__content .v-list-item--link:before {
567
+ border-radius: 6px;
568
+ }
569
+
570
+ .v-menu__content .v-select-list {
571
+ padding: 10px;
572
+ }
573
+
574
+ .v-menu__content .v-icon.mdi-close {
575
+ font-size: 18px;
576
+ }
577
+
578
+ /* <<<<< 菜单 */
579
+
580
+
581
+ /* 抽屉 >>>>>> */
582
+ body .v-navigation-drawer--temporary {
583
+ z-index: 101 !important;
584
+ }
585
+
586
+ .v-navigation-drawer {
587
+ overflow: revert;
588
+ }
589
+
590
+ /* <<<<< 抽屉 */
591
+
592
+
593
+ /* 树形视图 >>>>>> */
594
+ .v-treeview--dense .v-treeview-node__root {
595
+ min-height: 34px;
596
+ margin-bottom: 3px;
597
+ }
598
+
599
+ .theme--light.v-treeview .v-treeview-node__root:before,
600
+ .theme--light.v-treeview .v-treeview-node__root:hover:before {
601
+ border-radius: 6px;
602
+ }
603
+
604
+ .v-treeview-node__label {
605
+ overflow: inherit;
606
+ }
607
+
608
+
609
+ /* <<<<< 树形视图 */
610
+
611
+ /* 表单内col >>>>>> */
612
+ .v-form .col-12 {
613
+ padding-bottom: 0;
614
+ }
615
+ /* 最后一个row加padding-bottom */
616
+ .v-form>.row:last-child {
617
+ padding-bottom: 20px;
618
+ }
619
+ /* <<<<< 表单内col */
620
+
621
+ /* v-btn-toggle */
622
+ .theme--light.v-btn--active:before, .theme--light.v-btn--active:hover:before {
623
+ border-color: var(--cPrimaryColor);
624
+ opacity: 0;
625
+ }
626
+ .theme--light.v-btn-toggle:not(.v-btn-toggle--group) .v-btn.v-btn--active {
627
+ border-color: var(--cPrimaryColor)!important;
628
+ color: var(--cPrimaryColor)!important;
629
+ }
630
+ .v-application--is-ltr .v-btn-toggle>.v-btn.v-btn:not(:first-child), .v-application--is-rtl .v-btn-toggle>.v-btn.v-btn:not(:last-child) {
631
+ border-left-width: thin;
632
+ }
633
+
634
+
635
+ .v-main .v-main {
636
+ padding: 0!important;
637
+ }
@@ -0,0 +1,4 @@
1
+ .preview-page .v-application--wrap {
2
+ min-height: auto!important;
3
+ padding-bottom: 30px;
4
+ }
@@ -0,0 +1,3 @@
1
+ @tailwind base;
2
+ @tailwind components;
3
+ @tailwind utilities;
@@ -0,0 +1,31 @@
1
+ // Vuetify 实例创建工具
2
+ // 由于使用 CDN 方式引入,Vuetify 会挂载到 window.Vuetify 上
3
+
4
+ export function createVuetifyInstance(options = {}) {
5
+ if (typeof window !== 'undefined' && window.Vuetify) {
6
+ return new window.Vuetify({
7
+ theme: {
8
+ themes: {
9
+ light: {
10
+ primary: '#1976D2',
11
+ secondary: '#424242',
12
+ accent: '#82B1FF',
13
+ error: '#FF5252',
14
+ info: '#2196F3',
15
+ success: '#4CAF50',
16
+ warning: '#FB8C00',
17
+ },
18
+ },
19
+ },
20
+ icons: {
21
+ iconfont: 'mdi',
22
+ },
23
+ ...options,
24
+ });
25
+ }
26
+
27
+ console.warn('Vuetify is not available. Make sure to include Vuetify CDN in your HTML.');
28
+ return null;
29
+ }
30
+
31
+ export default createVuetifyInstance;