flame-plus 0.1.33 → 0.1.35

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 (80) hide show
  1. package/.browserslistrc +3 -0
  2. package/.env +0 -0
  3. package/.eslintrc.js +20 -0
  4. package/README.md +1 -7
  5. package/package.json +48 -23
  6. package/{src/packages → packages}/components/base/flmButton/flmButton.vue +1 -1
  7. package/{src/packages → packages}/components/base/flmCascader/flmCascader.vue +1 -1
  8. package/{src/packages → packages}/components/base/flmCheckbox/flmCheckbox.vue +1 -1
  9. package/{src/packages → packages}/components/base/flmCheckbox/flmCheckboxGroup.vue +1 -1
  10. package/{src/packages → packages}/components/base/flmColorPicker/flmColorPicker.vue +1 -1
  11. package/{src/packages → packages}/components/base/flmDatePicker/flmDatePicker.vue +1 -1
  12. package/{src/packages → packages}/components/base/flmDialog/flmDialog.vue +1 -1
  13. package/{src/packages → packages}/components/base/flmInput/flmInput.vue +1 -1
  14. package/{src/packages → packages}/components/base/flmInputNumber/flmInputNumber.vue +1 -1
  15. package/{src/packages → packages}/components/base/flmPagination/flmPagination.vue +1 -1
  16. package/{src/packages → packages}/components/base/flmRadio/flmRadio.vue +1 -1
  17. package/{src/packages → packages}/components/base/flmRate/flmRate.vue +1 -1
  18. package/{src/packages → packages}/components/base/flmRead/flmRead.vue +2 -2
  19. package/{src/packages → packages}/components/base/flmSelect/flmSelect.vue +1 -1
  20. package/{src/packages → packages}/components/base/flmSlider/flmSlider.vue +1 -1
  21. package/{src/packages → packages}/components/base/flmSwitch/flmSwitch.vue +1 -1
  22. package/{src/packages → packages}/components/base/flmTimePicker/flmTimePicker.vue +1 -1
  23. package/{src/packages → packages}/components/base/flmTimeSelect/flmTimeSelect.vue +1 -1
  24. package/{src/packages → packages}/components/base/flmTransfer/flmTransfer.vue +1 -1
  25. package/{src/packages → packages}/components/complex/flmForm/flmForm.vue +1 -2
  26. package/{src/packages → packages}/components/complex/flmSearch/flmSearch.vue +1 -1
  27. package/{src/packages → packages}/components/complex/flmTable/flmTable.vue +1 -1
  28. package/{src/packages → packages}/components/complex/flmToolbar/flmToolbar.vue +2 -2
  29. package/{src/packages → packages}/components/index.ts +1 -2
  30. package/{src/packages → packages}/components/page/flmReportPage/flmReportPage.vue +122 -79
  31. package/packages/index.ts +8 -0
  32. package/packages/model/flmComponentConfig/base/flmButton.ts +53 -0
  33. package/packages/model/flmComponentConfig/base/flmCascader.ts +77 -0
  34. package/packages/model/flmComponentConfig/base/flmCheckbox.ts +51 -0
  35. package/packages/model/flmComponentConfig/base/flmColorPicker.ts +30 -0
  36. package/packages/model/flmComponentConfig/base/flmDatePicker.ts +73 -0
  37. package/packages/model/flmComponentConfig/base/flmDialog.ts +49 -0
  38. package/packages/model/flmComponentConfig/base/flmInput.ts +57 -0
  39. package/packages/model/flmComponentConfig/base/flmInputNumber.ts +37 -0
  40. package/packages/model/flmComponentConfig/base/flmPagination.ts +37 -0
  41. package/packages/model/flmComponentConfig/base/flmRadio.ts +42 -0
  42. package/packages/model/flmComponentConfig/base/flmRate.ts +49 -0
  43. package/packages/model/flmComponentConfig/base/flmRead.ts +6 -0
  44. package/packages/model/flmComponentConfig/base/flmSelect.ts +104 -0
  45. package/packages/model/flmComponentConfig/base/flmSlider.ts +51 -0
  46. package/packages/model/flmComponentConfig/base/flmSwitch.ts +37 -0
  47. package/packages/model/flmComponentConfig/base/flmTimePicker.ts +61 -0
  48. package/packages/model/flmComponentConfig/base/flmTimeSelect.ts +44 -0
  49. package/packages/model/flmComponentConfig/base/flmTransfer.ts +51 -0
  50. package/packages/model/flmComponentConfig/complex/flmForm.ts +147 -0
  51. package/packages/model/flmComponentConfig/complex/flmSearch.ts +5 -0
  52. package/packages/model/flmComponentConfig/complex/flmTable.ts +132 -0
  53. package/packages/model/flmComponentConfig/complex/flmToolbar.ts +13 -0
  54. package/packages/model/flmComponentConfig/index.ts +31 -0
  55. package/packages/model/flmComponentConfig/page/flmReportPage.ts +31 -0
  56. package/packages/model/flmComponentConfig/public.ts +293 -0
  57. package/tsconfig.json +73 -20
  58. package/typings/lodash.d.ts +4 -0
  59. package/webpack.config.js +15 -0
  60. package/.vscode/extensions.json +0 -3
  61. package/flameDist/flame-plus.es.js +0 -5128
  62. package/flameDist/flame-plus.es.js.map +0 -1
  63. package/flameDist/flame-plus.umd.js +0 -16
  64. package/flameDist/flame-plus.umd.js.map +0 -1
  65. package/flameDist/style.css +0 -1
  66. package/flameDist/vite.svg +0 -1
  67. package/index.html +0 -13
  68. package/pnpm-lock.yaml +0 -2107
  69. package/public/vite.svg +0 -1
  70. package/src/App.vue +0 -10
  71. package/src/assets/vue.svg +0 -1
  72. package/src/components/HelloWorld.vue +0 -33
  73. package/src/main.ts +0 -19
  74. package/src/packages/components/page/flmExportPage/flmExportPage.vue +0 -219
  75. package/src/packages/index.ts +0 -96
  76. package/src/shims-vue.d.ts +0 -9
  77. package/vite.config.js +0 -37
  78. /package/{src/packages → packages}/utils/filterConfig.ts +0 -0
  79. /package/{src/packages → packages}/utils/index.ts +0 -0
  80. /package/{src/packages → packages}/utils/isValidKey.ts +0 -0
@@ -10,7 +10,7 @@
10
10
  <slot :name="`search-${searchSlot}`" :prop="prop" :formModel="formModel"></slot>
11
11
  </template>
12
12
  </flmSearch>
13
- <flmToolbar class="page-toolbar" :config="reportPageConfig.toolbar" @toolbarClick="toolbarClick" />
13
+ <flmToolbar v-if="isDialog==false" class="page-toolbar" :config="reportPageConfig.toolbar" @toolbarClick="toolbarClick" />
14
14
  <flmTable
15
15
  class="page-table"
16
16
  :config="reportPageConfig.table"
@@ -31,7 +31,9 @@
31
31
  />
32
32
  </template>
33
33
  <flmDialog :config="reportPageConfig.readDialog" @close="pageDefaultEvent.closeReadDialog">
34
- <flmForm class="form-read" :config="reportPageConfig.readForm" @cancel="pageDefaultEvent.closeReadDialog">
34
+ <flmForm
35
+ class="form-read"
36
+ :config="reportPageConfig.readForm" @cancel="pageDefaultEvent.closeReadDialog">
35
37
  <template v-for="readFormSlot in readFormSlots" #[readFormSlot]="{ prop, formModel }">
36
38
  <slot :name="`read-${readFormSlot}`" :prop="prop" :formModel="formModel"></slot>
37
39
  </template>
@@ -39,7 +41,7 @@
39
41
  </flmDialog>
40
42
  <flmDialog :config="reportPageConfig.addDialog" @close="pageDefaultEvent.closeAddDialog">
41
43
  <flmForm
42
- class="form-add"
44
+ class="form-add"
43
45
  :config="reportPageConfig.addForm"
44
46
  @submit="pageDefaultEvent.pageAdd"
45
47
  @cancel="pageDefaultEvent.closeAddDialog"
@@ -51,7 +53,7 @@
51
53
  </flmDialog>
52
54
  <flmDialog :config="reportPageConfig.editDialog" @close="pageDefaultEvent.closeEditDialog">
53
55
  <flmForm
54
- class="form-edit"
56
+ class="form-edit"
55
57
  :config="reportPageConfig.editForm"
56
58
  @submit="pageDefaultEvent.pageEdit"
57
59
  @cancel="pageDefaultEvent.closeEditDialog"
@@ -65,8 +67,8 @@
65
67
  </template>
66
68
 
67
69
  <script lang="ts" setup>
68
- import { PropType, ref, Ref, computed, onMounted } from 'vue'
69
- // import store from '@/store'
70
+ import { ref, Ref, computed, onMounted, toRaw } from 'vue'
71
+ import { useRoute } from "vue-router";
70
72
  import { ElMessage, ElMessageBox } from 'element-plus'
71
73
  import {
72
74
  flmForm,
@@ -81,19 +83,19 @@ import {
81
83
  FormConfig,
82
84
  TableColumnConfig,
83
85
  ReportPageSetting,
84
- } from 'flame-types'
86
+ } from '../../../model/flmComponentConfig'
85
87
  import { isValidKey } from '../../../utils'
86
-
88
+ import request from '@/plugins/request'
89
+ import { is } from '@babel/types'
87
90
  const props = defineProps({
88
91
  // 表名
89
92
  tableName: {
90
93
  type: String,
91
94
  required: true
92
95
  },
93
- // 请求方式
94
- request: {
95
- type: Object as PropType<any>,
96
- required: true
96
+ isDialog:{
97
+ type:Boolean,
98
+ default:false,
97
99
  }
98
100
  })
99
101
 
@@ -150,23 +152,32 @@ const tableHeight = () => {
150
152
 
151
153
  // 查询页面配置
152
154
  const queryPageSetting = () => {
153
- props.request.flameprops.request({
155
+ const route = useRoute();
156
+ let menu_id = route.query.menu_id;
157
+ request.flameRequest({
154
158
  tableName: 'flametableinfo',
155
159
  flameMethod: 'webgetpagesetting',
156
- data: { table_name: props.tableName, menu_id: null }
160
+ data: { table_name: props.tableName, menu_id: menu_id }
157
161
  })
158
162
  .then(({ items }: any) => {
159
163
  const reportPageSetting: ReportPageSetting = items
160
164
  reportPageSetting.table['height'] = tableHeight()
161
165
  reportPageSetting.table['max-height'] = tableHeight()
162
- reportPageSetting.tableAction.buttons.length && reportPageSetting.table.columns?.push({
166
+ if(props.isDialog==false) {
167
+ reportPageSetting.tableAction.buttons.length && reportPageSetting.table.columns?.push({
163
168
  prop: 'tableAction',
164
169
  label: '操作',
165
170
  isSlot: true,
171
+ align: 'center',
172
+ 'header-align':'center',
166
173
  fixed: 'right',
167
- 'min-width': '200px'
174
+ 'min-width': '200px',
175
+ 'width': '200px'
168
176
  })
177
+ }
178
+
169
179
  reportPageConfig.value = reportPageSetting
180
+ isLoaded.value =true;
170
181
  queryPageData()
171
182
  })
172
183
  }
@@ -177,7 +188,7 @@ const queryPageData = () => {
177
188
  ['current-page']: page_no = 1,
178
189
  ['page-size']: page_size = 20,
179
190
  }: ReportPageSetting['pagination'] = reportPageConfig.value.pagination
180
- props.request.flameApi.pageSearch({
191
+ request.flameApi.pageSearch({
181
192
  tableName: safeTableName.value,
182
193
  data: {
183
194
  page_no,
@@ -190,7 +201,6 @@ const queryPageData = () => {
190
201
  .then(({ items, total }: any) => {
191
202
  reportPageConfig.value.table.data = items
192
203
  reportPageConfig.value.pagination['total'] = total
193
- isLoaded.value = true
194
204
  })
195
205
  }
196
206
 
@@ -210,16 +220,15 @@ const searchSubmit = (event: object) => {
210
220
  const toolbarClick = (event: string) => {
211
221
  isValidKey(event, pageDefaultEvent)
212
222
  ? pageDefaultEvent[event]()
213
- : emit('customEvent', event)
223
+ : emit('customEvent', {event,data:{}})
214
224
  }
215
225
 
216
226
  // 表格操作栏点击
217
227
  const tableActionClick = (event: string, scope: any) => {
218
228
  isValidKey(event, pageDefaultEvent)
219
229
  ? pageDefaultEvent[event](scope)
220
- : emit('customEvent', { event, scope })
230
+ : emit('customEvent', { event,data: toRaw(scope.row) })
221
231
  }
222
-
223
232
  // 表格操作
224
233
  const tableEvent: Record<string, (event?: any) => void> = {
225
234
  // 表格勾选项变化
@@ -247,9 +256,9 @@ const paginationEvent: Record<string, (event?: any) => void> = {
247
256
  const pageDefaultEvent: Record<string, (event?: any) => void> = {
248
257
  // 打开详情弹窗
249
258
  openReadDialog:(scope: any) => {
250
- props.request.flameApi.singleSearch({
259
+ request.flameApi.singleSearch({
251
260
  tableName: safeTableName.value,
252
- data: { key: scope.row.flame_id }
261
+ data: { key: scope.row.flame_id ,ref_level:1}
253
262
  })
254
263
  .then(({ items }: any) => {
255
264
  reportPageConfig.value.readForm['model'] = items
@@ -262,7 +271,7 @@ const pageDefaultEvent: Record<string, (event?: any) => void> = {
262
271
  },
263
272
  // 查看详情
264
273
  pageRead:(scope: any) => {
265
- props.request.flameApi.singleSearch({
274
+ request.flameApi.singleSearch({
266
275
  tableName: safeTableName.value,
267
276
  data: { key: scope.row.flame_id }
268
277
  })
@@ -281,7 +290,7 @@ const pageDefaultEvent: Record<string, (event?: any) => void> = {
281
290
  },
282
291
  // 页面新增
283
292
  pageAdd:(formModel: FormConfig['model']) => {
284
- props.request.flameApi.singleAdd({
293
+ request.flameApi.singleAdd({
285
294
  tableName: safeTableName.value,
286
295
  data: { data: formModel }
287
296
  })
@@ -291,6 +300,63 @@ const pageDefaultEvent: Record<string, (event?: any) => void> = {
291
300
  pageDefaultEvent.closeAddDialog()
292
301
  })
293
302
  },
303
+ // 页面导入
304
+ pageImport:() => {
305
+ const inputFile: any = document.createElement('input')
306
+ inputFile.type = 'file'
307
+ inputFile.style.display = 'none'
308
+ document.body.appendChild(inputFile)
309
+ inputFile.click()
310
+ inputFile.addEventListener('change', () => {
311
+ const file = inputFile.files[0]
312
+ var fileType = file.name.substring(file.name.lastIndexOf('.') + 1)
313
+ if (!['xls', 'xlsx', 'et'].includes(fileType)) {
314
+ ElMessage.warning('请上传 xls、xlsx、et 格式的文件!')
315
+ document.body.removeChild(inputFile)
316
+ return false
317
+ }
318
+ const formData = new FormData()
319
+ formData.append("file", file)
320
+ request.flameAxios({
321
+ headers: { 'Content-Type': 'multipart/form-data' },
322
+ method: 'post',
323
+ url: `/resource-service/upload_file?source=mongo&token=${request.token}`,
324
+ data: formData
325
+ })
326
+ .then(({ key: code }: any) => {
327
+ request.flameRequest({
328
+ tableName: safeTableName.value,
329
+ flameMethod: 'importfile',
330
+ data: { code }
331
+ })
332
+ .then((res: any) => {
333
+ if(res.result){
334
+ ElMessage.success('导入成功!')
335
+ pageRefresh()
336
+ }
337
+ else{
338
+ ElMessage.error(res.message)
339
+ }
340
+ })
341
+ })
342
+ .finally(() => document.body.removeChild(inputFile))
343
+ })
344
+ },
345
+ // 页面导出
346
+ pageExport:() => {
347
+ request.flameApi.exportFile({
348
+ tableName: safeTableName.value,
349
+ data: {
350
+ conditions: searchParams.value,
351
+ ref_level: 1,
352
+ order_by: "flame_id DESC"
353
+ }
354
+ })
355
+ .then(({ items }: any) => {
356
+ window.open(items.download_url)
357
+ ElMessage.success('导出成功')
358
+ })
359
+ },
294
360
  // 页面删除
295
361
  pageDelete:(scope: any) => {
296
362
  ElMessageBox.confirm(
@@ -303,7 +369,7 @@ const pageDefaultEvent: Record<string, (event?: any) => void> = {
303
369
  }
304
370
  )
305
371
  .then(() => {
306
- props.request.flameApi.singleDelete({
372
+ request.flameApi.singleDelete({
307
373
  tableName: safeTableName.value,
308
374
  data: { key: scope.row.flame_id }
309
375
  })
@@ -318,7 +384,7 @@ const pageDefaultEvent: Record<string, (event?: any) => void> = {
318
384
  },
319
385
  // 打开编辑弹窗
320
386
  openEditDialog:(scope: any) => {
321
- props.request.flameApi.singleSearch({
387
+ request.flameApi.singleSearch({
322
388
  tableName: safeTableName.value,
323
389
  data: { key: scope.row.flame_id }
324
390
  })
@@ -337,7 +403,7 @@ const pageDefaultEvent: Record<string, (event?: any) => void> = {
337
403
  },
338
404
  // 页面编辑
339
405
  pageEdit:(formModel: FormConfig['model']) => {
340
- props.request.flameApi.singleUpdate({
406
+ request.flameApi.singleUpdate({
341
407
  tableName: safeTableName.value,
342
408
  data: {
343
409
  key: formModel?.flame_id,
@@ -351,57 +417,7 @@ const pageDefaultEvent: Record<string, (event?: any) => void> = {
351
417
  })
352
418
  },
353
419
  // 页面导入
354
- // pageImport:() => {
355
- // const inputFile: any = document.createElement('input')
356
- // inputFile.type = 'file'
357
- // inputFile.style.display = 'none'
358
- // document.body.appendChild(inputFile)
359
- // inputFile.click()
360
- // inputFile.addEventListener('change', () => {
361
- // const file = inputFile.files[0]
362
- // var fileType = file.name.substring(file.name.lastIndexOf('.') + 1)
363
- // if (!['xls', 'xlsx', 'et'].includes(fileType)) {
364
- // ElMessage.warning('请上传 xls、xlsx、et 格式的文件!')
365
- // document.body.removeChild(inputFile)
366
- // return false
367
- // }
368
- // const formData = new FormData()
369
- // formData.append("file", file)
370
- // props.request.flameAxios({
371
- // headers: { 'Content-Type': 'multipart/form-data' },
372
- // method: 'post',
373
- // url: `/resource-service/upload_file?source=mongo&token=${store.state.token}`,
374
- // data: formData
375
- // })
376
- // .then(({ key: code }: any) => {
377
- // props.request.flameprops.request({
378
- // tableName: safeTableName.value,
379
- // flameMethod: 'importfile',
380
- // data: { code }
381
- // })
382
- // .then((res: any) => {
383
- // ElMessage.success('上传成功!')
384
- // pageRefresh()
385
- // })
386
- // })
387
- // .finally(() => document.body.removeChild(inputFile))
388
- // })
389
- // },
390
420
  // 页面导出
391
- pageExport:() => {
392
- props.request.flameApi.exportFile({
393
- tableName: safeTableName.value,
394
- data: {
395
- conditions: searchParams.value,
396
- ref_level: 1,
397
- order_by: 'flame_id DESC'
398
- }
399
- })
400
- .then(({ items }: any) => {
401
- window.open(items.download_url)
402
- ElMessage.success('导出成功')
403
- })
404
- },
405
421
  // 页面批量删除
406
422
  pageBatchDelete:() => {
407
423
  if (tableSelection.value.length) {
@@ -416,7 +432,7 @@ const pageDefaultEvent: Record<string, (event?: any) => void> = {
416
432
  )
417
433
  .then(() => {
418
434
  // 此处需要请求删除接口,并完成回显
419
- props.request.flameApi.batchDelete({
435
+ request.flameApi.batchDelete({
420
436
  tableName: safeTableName.value,
421
437
  data: {
422
438
  conditions: {
@@ -471,6 +487,7 @@ const editFormSlots = computed((): Array<string> => getFormSlots(reportPageConfi
471
487
  </script>
472
488
 
473
489
  <style lang="scss" scoped>
490
+
474
491
  .report-page {
475
492
  display: grid;
476
493
  grid-template-columns: repeat(24, 1fr);
@@ -493,4 +510,30 @@ const editFormSlots = computed((): Array<string> => getFormSlots(reportPageConfi
493
510
  justify-self: end;
494
511
  }
495
512
  }
513
+ </style>
514
+ <style lang="scss">
515
+
516
+ .el-dialog__header {
517
+ border-bottom:1px solid #C4C4C4;
518
+ margin-right:0px;
519
+ font-weight:bold;
520
+ }
521
+ .el-dialog__body .form-buttons {
522
+ position: absolute;
523
+ bottom:-15px;
524
+ left:0px;
525
+ // margin-bottom: 50px;
526
+ // border-top:1px solid #C4C4C4;
527
+ width:calc(100% - 10px);
528
+ padding:10px 0 0px 10px;
529
+ .el-form-item__content{
530
+ justify-content: flex-end;
531
+ margin-right: 20px;
532
+ // margin-bottom: 10px;
533
+ }
534
+ }
535
+ .el-dialog__footer{
536
+ border-top:1px solid #C4C4C4;
537
+ background-color: red($color: #000000);
538
+ }
496
539
  </style>
@@ -0,0 +1,8 @@
1
+ // 组件
2
+ export * as flmPlus from './components'
3
+
4
+ // 类型
5
+ export * as flmComponentConfig from './model/flmComponentConfig'
6
+
7
+ // 方法
8
+ export * as flmUtils from './utils'
@@ -0,0 +1,53 @@
1
+ import { ElementSize } from '../../../model/flmComponentConfig'
2
+
3
+ /** @button 按钮 */
4
+
5
+ // 按钮类型
6
+ export enum ButtonType {
7
+ 'primary' = 'primary',
8
+ 'success' = 'success',
9
+ 'warning' = 'warning',
10
+ 'danger' = 'danger',
11
+ 'info' = 'info',
12
+ 'text' = 'text',
13
+ }
14
+
15
+ // 按钮原生type
16
+ export enum ButtonNativeType {
17
+ 'button' = 'button',
18
+ 'submit' = 'submit',
19
+ 'reset' = 'reset',
20
+ }
21
+
22
+ // 按钮设置(https://element-plus.gitee.io/zh-CN/component/button.html)
23
+ export interface ButtonConfig {
24
+ // 默认属性
25
+ 'size'?: ElementSize
26
+ 'type'?: ButtonType
27
+ 'plain'?: boolean
28
+ 'text'?: boolean
29
+ 'bg'?: boolean
30
+ 'link'?: boolean
31
+ 'round'?: boolean
32
+ 'circle'?: boolean
33
+ 'loading'?: boolean
34
+ 'loading-icon'?: string
35
+ 'disabled'?: boolean
36
+ 'icon'?: string
37
+ 'autofocus'?: boolean
38
+ 'native-type'?: ButtonNativeType
39
+ 'auto-insert-space'?: boolean
40
+ // 自定义属性
41
+ 'buttonText'?: string // 按钮文字
42
+ }
43
+ // 按钮默认设置
44
+ export const buttonDefaultConfig: ButtonConfig = {
45
+ 'plain': false,
46
+ 'round': false,
47
+ 'circle': false,
48
+ 'loading': false,
49
+ 'loading-icon': 'Loading',
50
+ 'disabled': false,
51
+ 'autofocus': false,
52
+ 'native-type': ButtonNativeType['button'],
53
+ }
@@ -0,0 +1,77 @@
1
+ import { ElementSize } from '../../../model/flmComponentConfig'
2
+
3
+ /** @cascader 级联选择器 */
4
+
5
+ // 标签类型
6
+ export enum CascaderTagType {
7
+ 'success' = 'success',
8
+ 'info' = 'info',
9
+ 'warning' = 'warning',
10
+ 'danger' = 'danger',
11
+ }
12
+
13
+ // 次级菜单的展开方式
14
+ export enum CascaderPropsExpandTrigger {
15
+ 'click' = 'click',
16
+ 'hover' = 'hover',
17
+ }
18
+
19
+ // 级联选择器props
20
+ export interface CascaderProps {
21
+ 'expandTrigger'?: CascaderPropsExpandTrigger
22
+ 'multiple'?: boolean
23
+ 'checkStrictly'?: boolean
24
+ 'emitPath'?: boolean
25
+ 'lazy'?: boolean
26
+ 'lazyLoad'?: Function
27
+ 'value'?: string
28
+ 'label'?: string
29
+ 'children'?: string
30
+ 'disabled'?: string
31
+ 'leaf'?: string
32
+ }
33
+
34
+ // 级联选择器设置(https://element-plus.gitee.io/zh-CN/component/cascader.html)
35
+ export interface CascaderConfig {
36
+ // 默认属性
37
+ 'model-value'?: any
38
+ 'options'?: Array<any>
39
+ 'props'?: CascaderProps
40
+ 'size'?: ElementSize
41
+ 'placeholder'?: string
42
+ 'disabled'?: boolean
43
+ 'clearable'?: boolean
44
+ 'show-all-levels'?: boolean
45
+ 'collapse-tags'?: boolean
46
+ 'collapse-tags-tooltip'?: boolean
47
+ 'separator'?: string
48
+ 'filterable'?: boolean
49
+ 'filter-method'?: Function
50
+ 'debounce'?: number
51
+ 'before-filter'?: Function
52
+ 'popper-class'?: string
53
+ 'teleported'?: boolean
54
+ 'tag-type'?: CascaderTagType
55
+ }
56
+ // 级联选择器默认事件
57
+ export interface CascaderDefaultEvent {
58
+ 'onChange': (value: CascaderConfig['model-value']) => void,
59
+ 'onExpandChange': (event: any) => void,
60
+ 'onBlur': (event: any) => void,
61
+ 'onFocus': (event: any) => void,
62
+ 'onVisibleChange': (event: boolean) => void,
63
+ 'onRemoveTag': (event: any) => void
64
+ }
65
+ // 级联选择器默认设置
66
+ export const cascaderDefaultConfig: CascaderConfig = {
67
+ 'placeholder': '请选择',
68
+ 'disabled': false,
69
+ 'clearable': false,
70
+ 'show-all-levels': true,
71
+ 'collapse-tags': false,
72
+ 'collapse-tags-tooltip': false,
73
+ 'separator': '/',
74
+ 'debounce': 300,
75
+ 'teleported': true,
76
+ 'tag-type': CascaderTagType['info'],
77
+ }
@@ -0,0 +1,51 @@
1
+ import { ElementSize } from '../../../model/flmComponentConfig'
2
+
3
+ /** @checkboxGroup 多选框 */
4
+ // 多选框设置(https://element-plus.org/zh-CN/component/checkbox.html)
5
+ export interface CheckboxConfig {
6
+ // 默认属性
7
+ 'model-value'?: string | number | boolean
8
+ 'label'?: string | number | boolean | object
9
+ 'true-label'?: string | number
10
+ 'false-label'?: string | number
11
+ 'disabled'?: boolean
12
+ 'border'?: boolean
13
+ 'size'?: ElementSize
14
+ 'name'?: string
15
+ 'checked'?: boolean
16
+ 'indeterminate'?: boolean
17
+ }
18
+ //多选框默认事件
19
+ export interface CheckboxDefaultEvent {
20
+ 'onChange': (value: CheckboxConfig['model-value']) => void
21
+ }
22
+ // 多选框默认设置
23
+ export const checkboxDefaultConfig: CheckboxConfig = {
24
+ 'disabled': false,
25
+ 'border': false,
26
+ 'checked': false,
27
+ 'indeterminate': false,
28
+ }
29
+
30
+ // 多选框组设置
31
+ export interface CheckboxGroupConfig {
32
+ // 默认属性
33
+ 'model-value'?: Array<CheckboxConfig['model-value']>
34
+ 'size'?: ElementSize
35
+ 'disabled'?: boolean
36
+ 'min'?: number
37
+ 'max'?: number
38
+ 'text-color'?: string
39
+ 'fill'?: string
40
+ // 自定义属性
41
+ 'hasCheckAll'?: boolean // 有全选按钮
42
+ 'checkAllConfig'?: CheckboxConfig // 权限值
43
+ 'items'?: Array<CheckboxConfig> // 选项组
44
+ }
45
+ // 多选框组默认设置
46
+ export const checkboxGroupDefaultConfig: CheckboxGroupConfig = {
47
+ 'model-value': [],
48
+ 'disabled': false,
49
+ 'text-color': '#FFFFFF',
50
+ 'fill': '#409EFF',
51
+ }
@@ -0,0 +1,30 @@
1
+ import { ElementSize } from '../../../model/flmComponentConfig'
2
+
3
+ /** @colorPicker 颜色选择器 */
4
+ // 颜色格式
5
+ export enum ColorFormat {
6
+ 'hsl' = 'hsl',
7
+ 'hsv' = 'hsv',
8
+ 'hex' = 'hex',
9
+ 'rgb' = 'rgb',
10
+ }
11
+ // 颜色选择器设置(https://element-plus.gitee.io/zh-CN/component/color-picker.html)
12
+ export interface ColorPickerConfig {
13
+ // 默认属性
14
+ 'model-value'?: string
15
+ 'disabled'?: boolean
16
+ 'size'?: ElementSize
17
+ 'show-alpha'?: boolean
18
+ 'color-format'?: ColorFormat
19
+ 'popper-class'?: string
20
+ 'predefine'?: Array<string>
21
+ }
22
+ // 颜色选择器默认事件
23
+ export interface ColorPickerDefaultEvent {
24
+ onChange: (value: ColorPickerConfig['model-value']) => void
25
+ }
26
+ // 颜色选择器默认设置
27
+ export const colorPickerDefaultConfig: ColorPickerConfig = {
28
+ 'disabled': false,
29
+ 'show-alpha': false,
30
+ }
@@ -0,0 +1,73 @@
1
+ import { ElementSize, ElementIcons } from '../../../model/flmComponentConfig'
2
+
3
+ /** @datePicker 日期选择器 */
4
+
5
+ // 显示类型
6
+ export enum DateType {
7
+ 'year' = 'year',
8
+ 'month' = 'month',
9
+ 'date' = 'date',
10
+ 'dates' = 'dates',
11
+ 'datetime' = 'datetime',
12
+ 'week' = 'week',
13
+ 'datetimerange' = 'datetimerange',
14
+ 'daterange' = 'daterange',
15
+ 'monthrange' = 'monthrange',
16
+ }
17
+
18
+ // 日期选择器设置(https://element-plus.gitee.io/zh-CN/component/date-picker.html)
19
+ export interface DatePickerConfig {
20
+ // 默认属性
21
+ 'model-value'?: Date | Array<Date>
22
+ 'readonly'?: boolean
23
+ 'disabled'?: boolean
24
+ 'size'?: ElementSize
25
+ 'editable'?: boolean
26
+ 'clearable'?: boolean
27
+ 'placeholder'?: string
28
+ 'start-placeholder'?: string
29
+ 'end-placeholder'?: string
30
+ 'type'?: DateType
31
+ 'format'?: string
32
+ 'popper-class'?: string
33
+ 'range-separator'?: string
34
+ 'default-value'?: Date
35
+ 'default-time'?: Array<Date>
36
+ 'value-format'?: string
37
+ 'id'?: string | Array<string>
38
+ 'name'?: string
39
+ 'unlink-panels'?: boolean
40
+ 'prefix-icon'?: string
41
+ 'clear-icon'?: ElementIcons
42
+ 'validate-event'?: boolean
43
+ 'disabled-date'?: Function
44
+ 'shortcuts'?: Array<{ text: string, value: Date | Function }>
45
+ 'cell-class-name'?: Function
46
+ 'teleported'?: boolean
47
+ }
48
+ // 日期选择器默认事件
49
+ export interface DatePickerDefaultEvent {
50
+ 'onUpdate:modelValue': (value: DatePickerConfig['model-value']) => void, // v-model 不用改不了值
51
+ // onChange: (value: DatePickerConfig['model-value']) => {},
52
+ 'onBlur': (event: any) => void,
53
+ 'onFocus': (event: any) => void,
54
+ 'onCalendarChange': (event: Array<Date>) => void,
55
+ 'onPanelChange': (date: any, mode: any, view: any) => void,
56
+ 'onVisibleChange': (event: boolean) => void,
57
+ }
58
+ // 日期选择器默认设置
59
+ export const datePickerDefaultConfig: DatePickerConfig = {
60
+ 'readonly': false,
61
+ 'disabled': false,
62
+ 'size': ElementSize['default'],
63
+ 'editable': true,
64
+ 'clearable': true,
65
+ 'type': DateType['date'],
66
+ 'format': 'YYYY-MM-DD',
67
+ 'range-separator': '-',
68
+ 'unlink-panels': false,
69
+ 'prefix-icon': 'Date',
70
+ 'clear-icon': ElementIcons['CircleClose'],
71
+ 'validate-event': true,
72
+ 'teleported': true,
73
+ }