@wp1001/ui 2.9.13

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 (177) hide show
  1. package/.env +6 -0
  2. package/@vant-D4fmGxs6.js +3891 -0
  3. package/index.js +8419 -0
  4. package/package.json +59 -0
  5. package/packages/assets/devtools-detector.js +2 -0
  6. package/packages/components/xarray/index.js +64 -0
  7. package/packages/components/xarray/xarray.vue +57 -0
  8. package/packages/components/xautorows/index.js +35 -0
  9. package/packages/components/xautorows/xautorows.vue +29 -0
  10. package/packages/components/xbutton/mobile.js +3 -0
  11. package/packages/components/xbutton/mobile.vue +9 -0
  12. package/packages/components/xbutton/pc.js +3 -0
  13. package/packages/components/xbutton/pc.vue +9 -0
  14. package/packages/components/xbuttons/mobile.js +51 -0
  15. package/packages/components/xbuttons/mobile.vue +12 -0
  16. package/packages/components/xbuttons/pc.js +51 -0
  17. package/packages/components/xbuttons/pc.vue +16 -0
  18. package/packages/components/xchart/constants.js +58 -0
  19. package/packages/components/xchart/index.js +263 -0
  20. package/packages/components/xchart/utils.js +121 -0
  21. package/packages/components/xchart/xchart.vue +173 -0
  22. package/packages/components/xcheckboxs/mobile.js +58 -0
  23. package/packages/components/xcheckboxs/mobile.vue +38 -0
  24. package/packages/components/xcheckboxs/pc.js +49 -0
  25. package/packages/components/xcheckboxs/pc.vue +42 -0
  26. package/packages/components/xcol/mobile.js +10 -0
  27. package/packages/components/xcol/mobile.vue +9 -0
  28. package/packages/components/xcol/pc.js +10 -0
  29. package/packages/components/xcol/pc.vue +9 -0
  30. package/packages/components/xdatepicker/mobile.js +71 -0
  31. package/packages/components/xdatepicker/mobile.vue +44 -0
  32. package/packages/components/xdatepicker/pc.js +9 -0
  33. package/packages/components/xdatepicker/pc.vue +12 -0
  34. package/packages/components/xdialog/mobile.js +60 -0
  35. package/packages/components/xdialog/mobile.vue +43 -0
  36. package/packages/components/xdialog/pc.js +64 -0
  37. package/packages/components/xdialog/pc.vue +51 -0
  38. package/packages/components/xdict/index.js +47 -0
  39. package/packages/components/xdict/xdict.vue +9 -0
  40. package/packages/components/xdistrictselect/mobile.js +79 -0
  41. package/packages/components/xdistrictselect/mobile.vue +28 -0
  42. package/packages/components/xdistrictselect/pc.js +127 -0
  43. package/packages/components/xdistrictselect/pc.vue +32 -0
  44. package/packages/components/xform/mobile.js +29 -0
  45. package/packages/components/xform/mobile.vue +43 -0
  46. package/packages/components/xform/pc.js +42 -0
  47. package/packages/components/xform/pc.vue +76 -0
  48. package/packages/components/xform/utils.js +95 -0
  49. package/packages/components/xformitem/mobile.js +56 -0
  50. package/packages/components/xformitem/mobile.vue +3 -0
  51. package/packages/components/xformitem/pc.js +72 -0
  52. package/packages/components/xformitem/pc.vue +10 -0
  53. package/packages/components/xformitem/utils.jsx +181 -0
  54. package/packages/components/xicon/mobile.js +35 -0
  55. package/packages/components/xicon/mobile.vue +9 -0
  56. package/packages/components/xicon/pc.js +35 -0
  57. package/packages/components/xicon/pc.vue +11 -0
  58. package/packages/components/xinfo/index.js +100 -0
  59. package/packages/components/xinfo/xinfo.vue +140 -0
  60. package/packages/components/xlooper/index.js +7 -0
  61. package/packages/components/xlooper/xlooper.vue +20 -0
  62. package/packages/components/xpagination/mobile.js +21 -0
  63. package/packages/components/xpagination/mobile.vue +31 -0
  64. package/packages/components/xpagination/pc.js +21 -0
  65. package/packages/components/xpagination/pc.vue +16 -0
  66. package/packages/components/xpicker/index.js +38 -0
  67. package/packages/components/xpicker/xpicker.vue +29 -0
  68. package/packages/components/xradios/mobile.js +40 -0
  69. package/packages/components/xradios/mobile.vue +22 -0
  70. package/packages/components/xradios/pc.js +53 -0
  71. package/packages/components/xradios/pc.vue +43 -0
  72. package/packages/components/xrow/mobile.js +9 -0
  73. package/packages/components/xrow/mobile.vue +23 -0
  74. package/packages/components/xrow/pc.js +9 -0
  75. package/packages/components/xrow/pc.vue +22 -0
  76. package/packages/components/xscan/mobile.js +24 -0
  77. package/packages/components/xscan/mobile.vue +21 -0
  78. package/packages/components/xscan/pc.js +20 -0
  79. package/packages/components/xscan/pc.vue +18 -0
  80. package/packages/components/xsearcher/index.js +198 -0
  81. package/packages/components/xsearcher/xsearcher.vue +170 -0
  82. package/packages/components/xselect/mobile.js +86 -0
  83. package/packages/components/xselect/mobile.vue +24 -0
  84. package/packages/components/xselect/pc.js +114 -0
  85. package/packages/components/xselect/pc.vue +55 -0
  86. package/packages/components/xselect/util.js +66 -0
  87. package/packages/components/xselectv2/index.js +91 -0
  88. package/packages/components/xselectv2/xselectv2.vue +46 -0
  89. package/packages/components/xtable/mobile.js +108 -0
  90. package/packages/components/xtable/mobile.vue +246 -0
  91. package/packages/components/xtable/pc.js +143 -0
  92. package/packages/components/xtable/pc.vue +421 -0
  93. package/packages/components/xtable/searcher.js +477 -0
  94. package/packages/components/xtable/searcher.jsx +330 -0
  95. package/packages/components/xtable/searcher.vue +133 -0
  96. package/packages/components/xtable/settings.js +80 -0
  97. package/packages/components/xtable/settings.vue +77 -0
  98. package/packages/components/xtable/utils.js +692 -0
  99. package/packages/components/xtabletools/mobile.js +25 -0
  100. package/packages/components/xtabletools/mobile.vue +126 -0
  101. package/packages/components/xtabletools/pc.js +18 -0
  102. package/packages/components/xtabletools/pc.vue +135 -0
  103. package/packages/components/xtablev2/index.js +53 -0
  104. package/packages/components/xtablev2/utils.jsx +214 -0
  105. package/packages/components/xtablev2/xtablev2.vue +147 -0
  106. package/packages/components/xtags/mobile.js +17 -0
  107. package/packages/components/xtags/mobile.vue +21 -0
  108. package/packages/components/xtags/pc.js +17 -0
  109. package/packages/components/xtags/pc.vue +22 -0
  110. package/packages/components/xtinymce/index.js +71 -0
  111. package/packages/components/xtinymce/xtinymce.vue +9 -0
  112. package/packages/components/xuploader/xfileuploader.js +48 -0
  113. package/packages/components/xuploader/xfileuploader.vue +54 -0
  114. package/packages/components/xuploader/ximageuploader.js +53 -0
  115. package/packages/components/xuploader/ximageuploader.vue +52 -0
  116. package/packages/comps.js +108 -0
  117. package/packages/controllers/BaseController.js +125 -0
  118. package/packages/controllers/CrudController.js +907 -0
  119. package/packages/controllers/TempCrudController.js +32 -0
  120. package/packages/controllers/index.js +15 -0
  121. package/packages/directives/el-table-infinite-scroll.js +55 -0
  122. package/packages/directives/index.js +5 -0
  123. package/packages/index.js +81 -0
  124. package/packages/index.scss +4 -0
  125. package/packages/layout/breadcrumb/breadcrumb.vue +31 -0
  126. package/packages/layout/breadcrumb/index.js +41 -0
  127. package/packages/layout/header/header.vue +281 -0
  128. package/packages/layout/header/inner.js +11 -0
  129. package/packages/layout/header/inner.vue +3 -0
  130. package/packages/layout/mobile-menu.vue +83 -0
  131. package/packages/layout/mobile-tabs.vue +54 -0
  132. package/packages/layout/pc.vue +85 -0
  133. package/packages/layout/screenlock/index.js +129 -0
  134. package/packages/layout/screenlock/screenlock.vue +85 -0
  135. package/packages/layout/sidebar/item.js +16 -0
  136. package/packages/layout/sidebar/item.vue +16 -0
  137. package/packages/layout/sidebar/menu.js +72 -0
  138. package/packages/layout/sidebar/menu.vue +106 -0
  139. package/packages/layout/sidebar/sidebar.vue +147 -0
  140. package/packages/layout/tagsview/ScrollPane.js +65 -0
  141. package/packages/layout/tagsview/ScrollPane.vue +24 -0
  142. package/packages/layout/tagsview/index.js +169 -0
  143. package/packages/layout/tagsview/index.vue +124 -0
  144. package/packages/plop/actions/make-fill-admin-partials-action.js +95 -0
  145. package/packages/plop/generators/make-admin-page.js +39 -0
  146. package/packages/plop/generators/make-database-admin-pages.js +84 -0
  147. package/packages/plop/generators/make-page-generator.js +52 -0
  148. package/packages/plop/generators/make-simple-page.js +20 -0
  149. package/packages/plop/plopfile.js +24 -0
  150. package/packages/plop/templates/admin_page/controller.js +3 -0
  151. package/packages/plop/templates/admin_page/model.js +24 -0
  152. package/packages/plop/templates/admin_page/{{snakeCase pagename}}-scoped.scss +3 -0
  153. package/packages/plop/templates/admin_page/{{snakeCase pagename}}.vue +11 -0
  154. package/packages/plop/templates/simple_page/controller.js +3 -0
  155. package/packages/plop/templates/simple_page/model.js +6 -0
  156. package/packages/plop/templates/simple_page/{{snakeCase pagename}}-scoped.scss +3 -0
  157. package/packages/plop/templates/simple_page/{{snakeCase pagename}}.vue +7 -0
  158. package/packages/plop/utils/index.js +168 -0
  159. package/packages/plop/utils/plop-utils.js +86 -0
  160. package/packages/styles/common.scss +137 -0
  161. package/packages/styles/element-ui.scss +142 -0
  162. package/packages/styles/vant.scss +133 -0
  163. package/packages/styles/variables.scss +23 -0
  164. package/packages/utils/crypt.js +24 -0
  165. package/packages/utils/decorators.js +67 -0
  166. package/packages/utils/disallowDevtools.js +53 -0
  167. package/packages/utils/effects.js +173 -0
  168. package/packages/utils/funcs.js +78 -0
  169. package/packages/utils/index.js +95 -0
  170. package/packages/utils/message.js +110 -0
  171. package/packages/utils/middlewares.js +86 -0
  172. package/packages/utils/model.js +71 -0
  173. package/packages/utils/modelUtils.js +203 -0
  174. package/packages/utils/request.js +57 -0
  175. package/packages/utils/site.js +33 -0
  176. package/packages/vite-plugins.js +141 -0
  177. package/publish.sh +12 -0
@@ -0,0 +1,421 @@
1
+ <script>
2
+ export { default } from './pc.js'
3
+ </script>
4
+
5
+ <template>
6
+ <div class="x-table pc-x-table" :class="{ fullscreen: isFullscreen, 'hide-header': hideHeader }">
7
+ <searcher
8
+ ref="searcher"
9
+ :uid="_uid"
10
+ :columns="searcherColumns"
11
+ :config="searcherConfig"
12
+ @search="handleSearch"
13
+ @save="saveSettings"
14
+ />
15
+
16
+ <el-collapse
17
+ v-model="activeNames"
18
+ :class="(_useCollapse ? 'use' : 'no') + '-collapse'"
19
+ @change="handleCollapseChange"
20
+ >
21
+ <el-collapse-item :name="activeNames[0]">
22
+ <template #title>
23
+ <div class="collapse-header">
24
+ <slot v-if="$slots['collapse-title']" name="collapse-title" />
25
+ <span v-else-if="activeNames.length" class="collapse-title">{{ title }}</span>
26
+ <span v-else class="collapse-title">
27
+ {{ title }},当前第
28
+ <span>{{ _query.page }}</span>
29
+ 页,展示
30
+ <span>{{ _data.length }}</span>
31
+ 条数据,
32
+
33
+ <span>{{ _total || _data.length }}</span> 条数据
34
+ </span>
35
+ </div>
36
+ </template>
37
+ <slot name="tools-top" />
38
+ <pc-x-table-tools
39
+ v-if="hideTools !== '' && hideTools !== true"
40
+ v-bind="_attrs"
41
+ :domids
42
+ @add="_onAdd"
43
+ @keywords-search="_onKeywordsSearch"
44
+ @search="_onSearch"
45
+ @export="_onExport"
46
+ @search-export="_onSearchExport"
47
+ @import="_onImport"
48
+ @multi-delete="_onMultiDelete"
49
+ >
50
+ <template v-if="$slots['tools-prefix']" #tools-prefix>
51
+ <slot name="tools-prefix" />
52
+ </template>
53
+ <template v-if="$slots['tools-suffix']" #tools-suffix>
54
+ <slot name="tools-suffix" />
55
+ </template>
56
+ <template #tools-end>
57
+ <pc-x-icon
58
+ v-if="!hideChart"
59
+ name="PieChart"
60
+ class="chart"
61
+ @click="handleShowPieDialog"
62
+ />
63
+ <span class="minus" @click="handleMinus">
64
+ <pc-x-icon name="FullScreen" />
65
+ <span>-</span>
66
+ </span>
67
+ <pc-x-icon
68
+ name="FullScreen"
69
+ class="full"
70
+ @click="handleToggleFullscreen"
71
+ />
72
+ <settings
73
+ v-if="!hideSettings"
74
+ v-model="settings"
75
+ ref="settings"
76
+ v-bind="{ ..._attrs.settings, ...$attrs }"
77
+ :width="_attrs['cols-popover-width'] || 500"
78
+ @sort="$emit('sort', $event)"
79
+ @reset="handleResetSettings"
80
+ @sort-change="handleSortChange"
81
+ @init="initSettings"
82
+ @save="saveSettings"
83
+ />
84
+ </template>
85
+ </pc-x-table-tools>
86
+ <slot name="tools-bottom" />
87
+
88
+ <el-table
89
+ ref="tableRef"
90
+ element-loading-text="加载中..."
91
+ v-bind="elTableAttrs"
92
+ v-loading="_loading"
93
+ v-el-table-infinite-scroll="_onLoad"
94
+ :infinite-scroll-disabled="_finished"
95
+ @header-dragend="handleHeaderDragend"
96
+ @selection-change="handleSelectionChange"
97
+ @sort-change="handleSortChange"
98
+ >
99
+ <el-table-column
100
+ v-for="(column, index) in _visibleColumns"
101
+ v-bind="column"
102
+ :key="index"
103
+ :min-width="column.minWidth"
104
+ :align="column.align || _attrs.tableAlign || 'center'"
105
+ :resizable="column.resizable || true"
106
+ :show-overflow-tooltip="calcOverflowTooltip(column)"
107
+ >
108
+ <template #default="scope" v-if="!['selection','index'].includes(column.type)">
109
+ <input
110
+ v-if="column.type === 'radio'"
111
+ type="radio"
112
+ :value="scope.$index"
113
+ :checked="scope.$index === checked"
114
+ @change="handleCheckedChange"
115
+ >
116
+ <el-space v-else-if="column.slot === '$image'" wrap>
117
+ <div class="image-item" v-for="(image, index) in calcImages(scope, column)" :key="index">
118
+ <el-image
119
+ v-if="image.type === 'image'"
120
+ :src="image.url"
121
+ :preview-src-list="scope._image_urls"
122
+ :initial-index="scope._image_urls.indexOf(image.url)"
123
+ lazy preview-teleported
124
+ />
125
+ <video
126
+ v-else-if="image.type === 'video'"
127
+ :src="image.url" controls
128
+ />
129
+ <a
130
+ v-else
131
+ :href="image.url" target="_blank"
132
+ >
133
+ <pc-x-icon :name="image.icon" class="file-icon" />
134
+ </a>
135
+ </div>
136
+ </el-space>
137
+ <el-tag
138
+ v-else-if="column.slot === '$tag'"
139
+ :type="calcTagType(scope, column)"
140
+ >
141
+ {{ calcTagValue(scope, column) }}
142
+ </el-tag>
143
+ <a
144
+ v-else-if="column.slot === '$link' && /https?\:/.test(column.to(scope.row))"
145
+ :href="column.to(scope.row)" target="_blank" @click.native="column.onDownload?.(scope.row, scope.$index, $event)"
146
+ >
147
+ {{ calcLink(scope.row, column) }}
148
+ </a>
149
+ <router-link
150
+ v-else-if="column.slot === '$link'"
151
+ :to="column.to(scope.row)"
152
+ >
153
+ {{ calcLink(scope.row, column) }}
154
+ </router-link>
155
+ <a :href="`tel:${scope.row[column.prop]}`" v-else-if="column.slot === '$phone'">
156
+ {{ scope.row[column.prop] }}
157
+ </a>
158
+ <img
159
+ v-else-if="column.slot === '$qrcode'"
160
+ :title="scope.row[column.prop]"
161
+ :data-qrcodeid="`qrcode-${index}-${scope.$index}`"
162
+ :style="{ width: '128px', height: '128px', ...(column.tableAttrs?.style || column.style) }"
163
+ />
164
+ <el-icon
165
+ v-else-if="column.slot === '$icon'"
166
+ class="cell-icon"
167
+ >
168
+ <component :is="scope.row[column.prop]" />
169
+ </el-icon>
170
+ <div
171
+ v-else-if="column.slot === '$html'"
172
+ v-html="scope.row[column.prop]"
173
+ />
174
+ <slot
175
+ v-else-if="column.slot"
176
+ :name="column.slot"
177
+ :scope
178
+ :column
179
+ :value="scope.row[column.prop]"
180
+ />
181
+ <slot
182
+ v-else-if="slotAll"
183
+ name="all"
184
+ :scope
185
+ :column
186
+ :value="scope.row[column.prop]"
187
+ />
188
+ <template v-else>
189
+ <component
190
+ v-if="column.comp === 'ElSwitch' || table.isRowEdit && scope.row.isEditing && (column.visible !== false || column.canEdit)"
191
+ :is="column.comp || 'ElInput'"
192
+ v-bind="{...column, ...column.formAttrs, onChange: undefined}"
193
+ v-model="scope.row[column.prop]"
194
+ @change="column.onChange?.($event, scope)"
195
+ :disabled="!scope.row.editable || !scope.row.isEditing"
196
+ />
197
+ <span v-else>
198
+ {{ calcValue(scope.row, column) }}
199
+ </span>
200
+ </template>
201
+ </template>
202
+ <template #header="{ column, $index }">
203
+ <span v-if="!$slots.header">{{ column.label }}</span>
204
+ <slot v-else name="header" v-bind="{ column, $index }" />
205
+ </template>
206
+ </el-table-column>
207
+ <el-table-column
208
+ v-if="!hideOperates"
209
+ label="操作"
210
+ :min-width="operatesWidth"
211
+ :align="_attrs.operatesAlign || _attrs.tableAlign || 'center'"
212
+ :fixed="_attrs.operatesFixed ?? 'right'"
213
+ >
214
+ <template #default="scope">
215
+ <slot
216
+ name="operates-prefix"
217
+ :scope
218
+ />
219
+ <el-dropdown v-if="operatesDropdown" class="operates-dropdown">
220
+ <el-button
221
+ v-bind="{ type: 'primary', ..._attrs['operates-btn'] }"
222
+ icon="arrow-down"
223
+ v-domid="domids['operates']"
224
+ class="x-table-operates"
225
+ >
226
+ {{ _attrs['operates-btn-text'] ?? '操作' }}
227
+ </el-button>
228
+ <template #dropdown>
229
+ <el-dropdown-menu class="operates-dropdown-menu">
230
+ <el-dropdown-item v-if="canEdit(scope.row)">
231
+ <el-button
232
+ v-bind="{ type: 'warning', ..._attrs['edit-btn'] }"
233
+ v-domid="domids['edit']"
234
+ icon="edit"
235
+ class="x-table-edit"
236
+ @click="_emit('edit', scope)"
237
+ >
238
+ {{ _attrs['edit-btn-text'] ?? '编辑' }}
239
+ </el-button>
240
+ </el-dropdown-item>
241
+ <el-dropdown-item v-if="canSave(scope.row)">
242
+ <el-button
243
+ v-bind="{ type: 'success', ..._attrs['row-edit-btn'] }"
244
+ v-loading="scope.row._loading"
245
+ :disabled="scope.row._loading"
246
+ v-domid="domids['row-edit']"
247
+ icon="collection"
248
+ class="x-table-row-edit"
249
+ @click="_emit('row-edit', scope)"
250
+ >
251
+ {{ _attrs['row-edit-btn-text'] ?? '保存' }}
252
+ </el-button>
253
+ </el-dropdown-item>
254
+ <el-dropdown-item v-if="canCancelEdit(scope.row)">
255
+ <el-button
256
+ v-bind="{ type: 'warning', ..._attrs['cancel-edit-btn'] }"
257
+ v-domid="domids['cancel-edit']"
258
+ icon="refresh-left"
259
+ class="x-table-cancel-edit"
260
+ @click="_emit('cancel-edit', scope)"
261
+ >
262
+ {{ _attrs['cancel-edit-btn-text'] ?? '取消编辑' }}
263
+ </el-button>
264
+ </el-dropdown-item>
265
+ <el-dropdown-item v-if="canDelete(scope.row)">
266
+ <el-button
267
+ v-bind="{ type: 'danger', ..._attrs['delete-btn'] }"
268
+ v-domid="domids['delete']"
269
+ icon="DeleteFilled"
270
+ class="x-table-delete"
271
+ @click="_emit('delete', scope)"
272
+ >
273
+ {{ _attrs['delete-btn-text'] ?? '删除' }}
274
+ </el-button>
275
+ </el-dropdown-item>
276
+ </el-dropdown-menu>
277
+ </template>
278
+ </el-dropdown>
279
+ <el-button
280
+ v-if="!operatesDropdown && canEdit(scope.row)"
281
+ v-bind="{ type: 'warning', ..._attrs['edit-btn'] }"
282
+ v-domid="domids['edit']"
283
+ icon="edit"
284
+ class="x-table-edit"
285
+ @click="_emit('edit', scope)"
286
+ >
287
+ {{ _attrs['edit-btn-text'] ?? '编辑' }}
288
+ </el-button>
289
+ <el-button
290
+ v-if="!operatesDropdown && canSave(scope.row)"
291
+ v-bind="{ type: 'success', ..._attrs['row-edit-btn'] }"
292
+ v-loading="scope.row._loading"
293
+ :disabled="scope.row._loading"
294
+ v-domid="domids['row-edit']"
295
+ icon="collection"
296
+ class="x-table-row-edit"
297
+ @click="_emit('row-edit', scope)"
298
+ >
299
+ {{ _attrs['row-edit-btn-text'] ?? '保存' }}
300
+ </el-button>
301
+ <el-button
302
+ v-if="!operatesDropdown && canCancelEdit(scope.row)"
303
+ v-bind="{ type: 'warning', ..._attrs['cancel-edit-btn'] }"
304
+ v-domid="domids['cancel-edit']"
305
+ icon="refresh-left"
306
+ class="x-table-cancel-edit"
307
+ @click="_emit('cancel-edit', scope)"
308
+ >
309
+ {{ _attrs['cancel-edit-btn-text'] ?? '取消编辑' }}
310
+ </el-button>
311
+ <el-button
312
+ v-if="!operatesDropdown && canDelete(scope.row)"
313
+ v-bind="{ type: 'danger', ..._attrs['delete-btn'] }"
314
+ v-domid="domids['delete']"
315
+ icon="DeleteFilled"
316
+ class="x-table-delete"
317
+ @click="_emit('delete', scope)"
318
+ >
319
+ {{ _attrs['delete-btn-text'] ?? '删除' }}
320
+ </el-button>
321
+ <el-button
322
+ v-for="(action, index) in _actions" :key="index"
323
+ v-bind="action"
324
+ @click="action.handler(scope)"
325
+ >
326
+ {{ action.name }}
327
+ </el-button>
328
+ <slot
329
+ name="operates-suffix"
330
+ :scope
331
+ />
332
+ </template>
333
+ </el-table-column>
334
+ </el-table>
335
+
336
+ <x-pagination
337
+ v-if="!!_query && !!_total && !hidePagination"
338
+ :query="_query"
339
+ :total="_total"
340
+ @search="onPaging"
341
+ />
342
+ </el-collapse-item>
343
+ </el-collapse>
344
+ </div>
345
+
346
+ <x-dialog
347
+ v-if="!hideChart"
348
+ v-model="dialog.visible"
349
+ width="96%" class="x-chart-dialog"
350
+ @fullscreenchange="handleChartDialogFullscreen"
351
+ >
352
+ <template #header>
353
+ <span class="el-dialog__title">
354
+ 图表
355
+ <span v-show="_chartOption.maxLimit" class="max-limit">
356
+ (系统设置最多统计 {{ _chartOption.maxLimit }} 条数据)
357
+ </span>
358
+ </span>
359
+ </template>
360
+ <x-chart
361
+ ref="chartRef"
362
+ :height="_chartHeight"
363
+ :option="_chartOption"
364
+ :datasource="{ columns: _columns, search }"
365
+ />
366
+ </x-dialog>
367
+ </template>
368
+
369
+ <style lang="scss">
370
+ .pc-x-table {
371
+ &.fullscreen {
372
+ background-color: white;
373
+ z-index: 2000;
374
+ }
375
+ &.hide-header .el-table__header {
376
+ display: none;
377
+ }
378
+ .collapse-header {
379
+ border-left: 5px solid var(--el-color-primary);
380
+ padding-left: 10px;
381
+ height: 30px;
382
+ line-height: 30px;
383
+ }
384
+ .collapse-title span {
385
+ color: var(--el-color-danger);
386
+ }
387
+ .cell-icon {
388
+ font-size: 17px;
389
+ }
390
+ .file-icon {
391
+ font-size: 50px;
392
+ color: #606666;
393
+ }
394
+ }
395
+ .minus {
396
+ position: relative;
397
+ cursor: pointer;
398
+ &:hover {
399
+ color: var(--el-color-primary);
400
+ }
401
+ span {
402
+ position: absolute;
403
+ left: 50%;
404
+ top: 45%;
405
+ transform: translate(-50%, -50%);
406
+ font-size: 20px;
407
+ font-weight: 200;
408
+ }
409
+ }
410
+ .max-limit {
411
+ color: #a0aaaa;
412
+ font-size: 15px;
413
+ margin-left: 5px;
414
+ }
415
+ .x-chart-dialog {
416
+ .el-dialog__body {
417
+ padding: 0 !important;
418
+ overflow: visible !important;
419
+ }
420
+ }
421
+ </style>