br-dionysus 1.8.4 → 1.8.6

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 (63) hide show
  1. package/README.md +861 -88
  2. package/attributes.json +1 -1
  3. package/cypress/e2e/2-advanced-examples/actions.cy.js +3 -3
  4. package/cypress/e2e/2-advanced-examples/assertions.cy.js +2 -2
  5. package/cypress/e2e/2-advanced-examples/cypress_api.cy.js +5 -6
  6. package/cypress/e2e/2-advanced-examples/files.cy.js +1 -1
  7. package/cypress/e2e/2-advanced-examples/misc.cy.js +1 -1
  8. package/cypress/e2e/2-advanced-examples/navigation.cy.js +1 -1
  9. package/cypress/e2e/2-advanced-examples/network_requests.cy.js +22 -22
  10. package/cypress/e2e/2-advanced-examples/spies_stubs_clocks.cy.js +7 -7
  11. package/cypress/e2e/2-advanced-examples/storage.cy.js +8 -8
  12. package/cypress/e2e/2-advanced-examples/utilities.cy.js +15 -15
  13. package/dist/br-dionysus.es.js +4708 -4519
  14. package/dist/br-dionysus.umd.js +8 -8
  15. package/dist/index.css +1 -1
  16. package/dist/packages/Hook/useFormInline/useFormInline.d.ts +25 -0
  17. package/dist/packages/Hook/usePackageConfig/usePackageConfig.d.ts +1 -1
  18. package/dist/packages/MDialog/src/MDialog.vue.d.ts +1 -1
  19. package/dist/packages/MInline/src/MInline.vue.d.ts +7 -0
  20. package/dist/packages/MInputNumber/src/MInputNumber.vue.d.ts +2 -2
  21. package/dist/packages/MSelectTable/src/MSelectTable.vue.d.ts +2 -2
  22. package/dist/packages/MSelectTableV1/src/MSelectTableV1.vue.d.ts +3 -3
  23. package/dist/packages/MSelectV2/src/MSelectV2.vue.d.ts +1 -1
  24. package/dist/packages/MTableColumnSet/src/MTableColumnSet.vue.d.ts +1 -1
  25. package/dist/packages/MTableSuper/index.d.ts +4 -0
  26. package/dist/packages/MTableSuper/src/MTableSuper.vue.d.ts +11 -0
  27. package/dist/packages/MTableSuper/src/token.d.ts +23 -0
  28. package/dist/packages/MTableV2/src/MTableV2.vue.d.ts +7 -0
  29. package/dist/packages/Tool/slotsToData/slotsToData.d.ts +19 -0
  30. package/dist/packages/index.d.ts +1 -0
  31. package/package.json +1 -1
  32. package/packages/Hook/useFormInline/README.md +45 -0
  33. package/packages/Hook/useFormInline/demo.vue +141 -0
  34. package/packages/Hook/useFormInline/useFormInline.ts +60 -0
  35. package/packages/Hook/usePackageConfig/usePackageConfig.ts +1 -1
  36. package/packages/Hook/useTableConfig/demo.vue +1 -1
  37. package/packages/Hook/useTableConfig/useTableConfig.ts +10 -10
  38. package/packages/MDialog/src/MDialog.vue +12 -1
  39. package/packages/MInline/docs/README.md +7 -6
  40. package/packages/MInline/docs/demo.vue +16 -13
  41. package/packages/MInline/src/MInline.vue +127 -3
  42. package/packages/MInputNumber/docs/demo.vue +42 -2
  43. package/packages/MInputNumber/src/MInputNumber.vue +7 -7
  44. package/packages/MSelectTable/src/MSelectTable.vue +1 -1
  45. package/packages/MTable/src/MTable.vue +0 -32
  46. package/packages/MTableColumn/src/MTableColumn.vue +0 -41
  47. package/packages/MTableSuper/docs/README.md +48 -0
  48. package/packages/MTableSuper/docs/demo.vue +246 -0
  49. package/packages/MTableSuper/index.ts +10 -0
  50. package/packages/MTableSuper/src/MTableSuper.vue +140 -0
  51. package/packages/MTableSuper/src/token.ts +24 -0
  52. package/packages/MTableV2/docs/README.md +1 -0
  53. package/packages/MTableV2/docs/demo.vue +9 -7
  54. package/packages/MTableV2/src/MTableV2.vue +49 -5
  55. package/packages/SkinConfig/src/useSkin.ts +2 -2
  56. package/packages/Tool/slotsToData/README.md +26 -0
  57. package/packages/Tool/slotsToData/slotsToData.ts +38 -0
  58. package/packages/index.ts +3 -0
  59. package/packages/list.json +6 -0
  60. package/packages/typings/global.d.ts +2 -2
  61. package/src/router.ts +5 -0
  62. package/tags.json +1 -1
  63. package/web-types.json +1 -1
@@ -60,7 +60,7 @@ const useTableConfig = (name: string = '', tableTitle: TableTitle[] = [], tableD
60
60
  /** 表格列头 */
61
61
  const _tableTitle: Ref<TableTitle[]> = ref<TableTitle[]>([])
62
62
  const tableConfig: Ref<TableConfig> = ref<TableConfig>(packageConfig.get('tableConfig' + name))
63
- const pageConfig = packageConfig.get('tablePage' + name)
63
+ const pageConfig = packageConfig.get('tablePage' + name) as TableConfig
64
64
  const page = ref<Page>(new Page(pageConfig))
65
65
  const _tableData = tableData || ref<any[]>([])
66
66
  /** 列筛选 */
@@ -69,13 +69,13 @@ const useTableConfig = (name: string = '', tableTitle: TableTitle[] = [], tableD
69
69
  /** 过滤条件 */
70
70
  const filtersValue = ref<FilterValue>({})
71
71
 
72
- tableTitle.filter(item => !tableConfig.value[item.prop]).forEach((item, index) => {
73
- tableConfig.value[item.prop] = {
72
+ tableTitle.filter(item => !tableConfig.value[item.prop as string]).forEach((item, index) => {
73
+ tableConfig.value[item.prop as string] = {
74
74
  minWidth: item.minWidth !== undefined ? item.minWidth : '',
75
75
  show: true,
76
76
  sort: index,
77
77
  // showName: item.label,
78
- label: item.label,
78
+ label: item.label as string,
79
79
  headerAlign: item.headerAlign || 'left',
80
80
  align: item.align || 'left',
81
81
  fixed: item.fixed !== undefined ? item.fixed : false
@@ -90,12 +90,12 @@ const useTableConfig = (name: string = '', tableTitle: TableTitle[] = [], tableD
90
90
  }[] | undefined
91
91
  }
92
92
  const propToFiltersMap: PropToFiltersMap = _tableTitle.value.reduce((map: PropToFiltersMap, item) => {
93
- map[item.prop] = item.filters
93
+ map[item.prop as string] = item.filters
94
94
  return map
95
95
  }, {})
96
96
 
97
97
  _tableTitle.value = tableTitle.map(item => {
98
- const tableConfigItem = tableConfig.value[item.prop]
98
+ const tableConfigItem = tableConfig.value[item.prop as string]
99
99
  return {
100
100
  ...item,
101
101
  // label: tableConfigItem?.showName || tableConfigItem?.label || item.label,
@@ -103,7 +103,7 @@ const useTableConfig = (name: string = '', tableTitle: TableTitle[] = [], tableD
103
103
  minWidth: tableConfigItem?.minWidth || item.minWidth,
104
104
  headerAlign: tableConfigItem?.headerAlign || item.headerAlign || 'left',
105
105
  filterMethod,
106
- filters: item.filters || propToFiltersMap[item.prop] || [],
106
+ filters: item.filters || propToFiltersMap[item.prop as string] || [],
107
107
  align: tableConfigItem?.align || item.align,
108
108
  fixed: tableConfigItem?.fixed || item.fixed
109
109
  }
@@ -137,7 +137,7 @@ const useTableConfig = (name: string = '', tableTitle: TableTitle[] = [], tableD
137
137
  /** 初始化列筛选 */
138
138
  const initColumnFilter = (tableData: any[]): void => {
139
139
  _tableTitle.value = _tableTitle.value.map(item => {
140
- const data = tableData.map(node => node[item.prop]).map(node => JSON.stringify(node))
140
+ const data = tableData.map(node => node[item.prop as string]).map(node => JSON.stringify(node))
141
141
  // 去重
142
142
  const filters = [...new Set(data)].filter(node => node !== undefined).map(node => ({
143
143
  text: JSON.parse(node),
@@ -158,8 +158,8 @@ const useTableConfig = (name: string = '', tableTitle: TableTitle[] = [], tableD
158
158
  )
159
159
 
160
160
  const tableTitleFilter = computed(() => _tableTitle.value
161
- .filter(item => tableConfig.value[item.prop].show)
162
- .sort((a, b) => (tableConfig.value[a.prop]?.sort || 0) - (tableConfig.value[b.prop]?.sort || 0)))
161
+ .filter(item => tableConfig.value[item.prop as string].show)
162
+ .sort((a, b) => (tableConfig.value[a.prop as string]?.sort || 0) - (tableConfig.value[b.prop as string]?.sort || 0)))
163
163
 
164
164
  return {
165
165
  tableTitle: tableTitleFilter,
@@ -26,7 +26,9 @@
26
26
  :style="bodyStyle"
27
27
  v-if="name === 'default'"
28
28
  >
29
- <slot name="default"></slot>
29
+ <div class="br-u-body-entity">
30
+ <slot name="default"></slot>
31
+ </div>
30
32
  </div>
31
33
  </template>
32
34
  </ElDialog>
@@ -254,4 +256,13 @@ defineExpose({
254
256
  transform: rotate(-45deg);
255
257
  }
256
258
  }
259
+
260
+ .br-u-body {
261
+ display: flex;
262
+
263
+ .br-u-body-entity {
264
+ flex: 1;
265
+ width: 100%;
266
+ }
267
+ }
257
268
  </style>
@@ -13,14 +13,15 @@ import demo from './demo.vue'
13
13
 
14
14
  ### 2) Attributes
15
15
 
16
- | 参数 | 说明 | 类型 | 可选值 | 默认值 |
17
- |----------|:-----:|:------:|:-------------------------:|:-------:|
18
- | minWidth | 列最小宽度 | number | - | 200 |
19
- | maxWidth | 列最大宽度 | number | - | 300 |
20
- | size | 组件尺寸 | enum | large \| default \| small | default |
16
+ | 参数 | 说明 | 类型 | 可选值 | 默认值 |
17
+ |-----------|:-----:|:------:|:-------------------------:|:-------:|
18
+ | minWidth | 列最小宽度 | number | - | 200 |
19
+ | maxWidth | 列最大宽度 | number | - | 300 |
20
+ | size | 组件尺寸 | enum | large \| default \| small | default |
21
+ | configKey | 配置key | string | - | - |
21
22
 
22
23
  ### 2) Events
23
24
 
24
- | 方法名 | 说明 | 参数 |
25
+ | 事件名 | 说明 | 参数 |
25
26
  |--------|:----------------------:|:---------------:|
26
27
  | switch | 当切换展开与折叠模式时触发,返回当前展开状态 | unfold(boolean) |
@@ -70,38 +70,38 @@
70
70
  </el-input>
71
71
  </el-form-item>
72
72
  <el-form-item
73
- label="编码"
74
- prop="code"
73
+ label="类型"
74
+ prop="type"
75
75
  data-item
76
76
  >
77
77
  <el-input
78
- v-model="formInline.code"
78
+ v-model="formInline.type"
79
79
  clearable
80
- placeholder="请输入编码"
80
+ placeholder="请输入类型"
81
81
  >
82
82
  </el-input>
83
83
  </el-form-item>
84
84
  <el-form-item
85
- label="角色名"
86
- prop="name"
85
+ label="地区"
86
+ prop="region"
87
87
  data-item
88
88
  >
89
89
  <el-input
90
- v-model="formInline.name"
90
+ v-model="formInline.region"
91
91
  clearable
92
- placeholder="请输入角色名"
92
+ placeholder="请输入地区"
93
93
  >
94
94
  </el-input>
95
95
  </el-form-item>
96
96
  <el-form-item
97
- label="时间"
98
- prop="time"
97
+ label="等级"
98
+ prop="level"
99
99
  data-item
100
100
  >
101
101
  <el-input
102
- v-model="formInline.time"
102
+ v-model="formInline.level"
103
103
  clearable
104
- placeholder="请输入时间"
104
+ placeholder="请输入等级"
105
105
  >
106
106
  </el-input>
107
107
  </el-form-item>
@@ -127,7 +127,10 @@ import { reactive } from 'vue'
127
127
  const formInline = reactive({
128
128
  name: '',
129
129
  code: '',
130
- time: ''
130
+ time: '',
131
+ type: '',
132
+ region: '',
133
+ level: ''
131
134
  })
132
135
  </script>
133
136
 
@@ -47,9 +47,11 @@
47
47
  </template>
48
48
 
49
49
  <script setup lang="ts">
50
- import { ref, onMounted, useSlots, watch, computed } from 'vue'
50
+ import { ref, onMounted, useSlots, watch, computed, nextTick } from 'vue'
51
51
  import { Size } from 'packages/typings/enum'
52
52
  import createHash from '../../Tool/createHash/createHash'
53
+ import slotsToData, { SlotsToDataReturn, SlotsToDataReturnItem } from 'packages/Tool/slotsToData/slotsToData'
54
+ import { FormInlineConfigType } from 'packages/Hook/useFormInline/useFormInline'
53
55
 
54
56
  const props = withDefaults(defineProps<{
55
57
  /**
@@ -61,11 +63,14 @@ const props = withDefaults(defineProps<{
61
63
  * */
62
64
  maxWidth?: number,
63
65
  /** 组件尺寸 */
64
- size?: Size
66
+ size?: Size,
67
+ /** 配置key */
68
+ configKey?: string
65
69
  }>(), {
66
70
  minWidth: 290,
67
71
  maxWidth: 400,
68
- size: Size.DEFAULT
72
+ size: Size.DEFAULT,
73
+ configKey: ''
69
74
  })
70
75
 
71
76
  const height = computed(() => {
@@ -159,6 +164,125 @@ onMounted(() => {
159
164
  subtree: true // 后代
160
165
  })
161
166
  })
167
+
168
+ const slotDefaultData = slotsToData(slots)
169
+ const formItemList = slotDefaultData[0].children
170
+ console.log('slotDefaultData', slotDefaultData)
171
+ console.log('formItemList', formItemList)
172
+ /**
173
+ * 重新排列元素顺序
174
+ * */
175
+ // const resetOrder = () => {
176
+ //
177
+ // }
178
+
179
+ type ConfigType = FormInlineConfigType<{
180
+ name: string;
181
+ code: string;
182
+ time: string;
183
+ type: string;
184
+ region: string;
185
+ level: string;
186
+ }>
187
+ const config: ConfigType = {
188
+ name: {
189
+ show: true,
190
+ sort: 2,
191
+ defaultValue: ''
192
+ },
193
+ code: {
194
+ show: true,
195
+ sort: 1,
196
+ defaultValue: ''
197
+ },
198
+ time: {
199
+ show: true,
200
+ sort: 3,
201
+ defaultValue: ''
202
+ },
203
+ type: {
204
+ show: true,
205
+ sort: 4,
206
+ defaultValue: ''
207
+ },
208
+ region: {
209
+ show: true,
210
+ sort: 5,
211
+ defaultValue: ''
212
+ },
213
+ level: {
214
+ show: true,
215
+ sort: 6,
216
+ defaultValue: ''
217
+ }
218
+ }
219
+ console.log('config', config)
220
+
221
+ const itemDomIndexToPropMap: Record<number, string> = {}
222
+ console.log('itemDomIndexToPropMap', itemDomIndexToPropMap)
223
+
224
+ interface Html_Data extends HTMLElement {
225
+ data_sort?: number,
226
+ data_key?: string
227
+ }
228
+
229
+ /**
230
+ * 排序dom列表
231
+ * @return Html_Data[]
232
+ * */
233
+ const domListSort = (domList: Html_Data[], configData: ConfigType): Html_Data[] => {
234
+ const slotChildrenList = slotDefaultData[0].children || []
235
+ domList.forEach((e, idx) => {
236
+ itemDomIndexToPropMap[idx] = (slotChildrenList[idx] as SlotsToDataReturnItem).props?.prop
237
+ })
238
+ domList.forEach((item, idx) => {
239
+ item.data_sort = configData[itemDomIndexToPropMap[idx] as keyof typeof configData].sort
240
+ item.data_key = itemDomIndexToPropMap[idx]
241
+ })
242
+ return domList.sort((a, b) => (a?.data_sort || 0) - (b?.data_sort || 0))
243
+ }
244
+
245
+ /**
246
+ * 设置元素的拖拽事件
247
+ * */
248
+ const setDomDraggableEvent = (formItem: SlotsToDataReturn = []) => {
249
+ const drop = (index: number) => {
250
+ console.log('index', index)
251
+ }
252
+ const dragstart = (keyName: string = '') => {
253
+ console.log('keyName', keyName)
254
+ }
255
+
256
+ const domNodeList: NodeList = document.querySelectorAll(`.${boxClassName} [data-box] [data-item]`)
257
+ const domList: HTMLElement[] = []
258
+ domNodeList.forEach(dom => domList.push(dom as HTMLElement))
259
+ for (let i = 0; i < formItem.length; i++) {
260
+ const item = formItem[i]
261
+
262
+ const dom = domList[i]
263
+ if (!dom) continue
264
+
265
+ dom.draggable = true
266
+ dom.ondrop = () => drop(i)
267
+ dom.ondragstart = () => dragstart(item.props?.prop as string)
268
+ }
269
+ const formDom: HTMLDivElement | null = document.querySelector(`.${boxClassName} [data-box]`)
270
+ if (!formDom) return
271
+ formDom.innerHTML = ''
272
+ // console.log(domList)
273
+ const newDomList = domListSort(domList, config)
274
+ console.log(newDomList)
275
+ newDomList.forEach(dom => {
276
+ const clone = dom.cloneNode(true)
277
+ formDom.appendChild(clone)
278
+ })
279
+ }
280
+
281
+ nextTick(() => {
282
+ setDomDraggableEvent(formItemList)
283
+ // const formDom: HTMLDivElement | null = document.querySelector(`.${boxClassName} [data-box]`)
284
+ // console.log('formDom', formDom)
285
+ })
162
286
  </script>
163
287
 
164
288
  <style scoped lang="scss">
@@ -1,13 +1,53 @@
1
1
  <template>
2
2
  <div class="g-demo-m-input-number-box">
3
- <m-input-number v-model="test"></m-input-number>
3
+ <m-input-number
4
+ v-model="test"
5
+ @input="numberInput"
6
+ @change="numberChange"
7
+ ></m-input-number>
8
+ <h5>对比组</h5>
9
+ <el-input-number
10
+ v-model="test2"
11
+ @input="numberInput2"
12
+ @change="numberChange2"
13
+ ></el-input-number>
4
14
  </div>
5
15
  </template>
6
16
 
7
17
  <script setup lang="ts">
8
- import { ref } from 'vue'
18
+ import { ref, watch } from 'vue'
9
19
 
10
20
  const test = ref<number>(0)
21
+ const numberInput = (val: number) => {
22
+ console.log('m1', val)
23
+ console.log('m2', test.value)
24
+ }
25
+ const numberChange = (val: number) => {
26
+ console.log('m3', val)
27
+ console.log('m4', test.value)
28
+ }
29
+ watch(
30
+ () => test.value,
31
+ () => {
32
+ console.log('m5', test.value)
33
+ }
34
+ )
35
+
36
+ const test2 = ref<number>(0)
37
+ const numberInput2 = (val: number) => {
38
+ console.log('e1', val)
39
+ console.log('e2', test2.value)
40
+ }
41
+ const numberChange2 = (val: number) => {
42
+ console.log('e3', val)
43
+ console.log('e4', test2.value)
44
+ }
45
+ watch(
46
+ () => test2.value,
47
+ () => {
48
+ console.log('e5', test2.value)
49
+ }
50
+ )
11
51
  </script>
12
52
 
13
53
  <style scoped>
@@ -141,13 +141,13 @@ const syncSize = () => {
141
141
  }
142
142
 
143
143
  const input = () => {
144
- setTimeout(() => {
145
- if (data.vValue === undefined) {
146
- emit('update:modelValue', null)
147
- return false
148
- }
149
- emit('update:modelValue', data.vValue)
150
- })
144
+ // setTimeout(() => {
145
+ // })
146
+ if (data.vValue === undefined) {
147
+ emit('update:modelValue', null)
148
+ return false
149
+ }
150
+ emit('update:modelValue', data.vValue)
151
151
  }
152
152
 
153
153
  const onChange = (value?: number) => {
@@ -68,7 +68,7 @@
68
68
  >
69
69
  <template #default="scope">
70
70
  <!-- {{scope}} -->
71
- {{ tabDataMap[scope.$index][item.prop] || '-' }}
71
+ {{ tabDataMap[scope.$index][item.prop as string] || '-' }}
72
72
  </template>
73
73
  </el-table-column>
74
74
  <template #empty>
@@ -14,19 +14,6 @@
14
14
  @cellClick="cellClick"
15
15
  @expandChange="expandChange"
16
16
  >
17
- <!-- 默认插槽 -->
18
- <!--<slot></slot>-->
19
-
20
- <!-- 循环处理具名插槽 -->
21
- <!--<template-->
22
- <!-- v-for="(slotData, name) in slots"-->
23
- <!-- #[name]-->
24
- <!--&gt;-->
25
- <!-- <slot-->
26
- <!-- :name="name"-->
27
- <!-- v-bind="slotData"-->
28
- <!-- ></slot>-->
29
- <!--</template>-->
30
17
  <slot name="default"></slot>
31
18
  <slot name="append"></slot>
32
19
  <template
@@ -286,11 +273,6 @@ defineExpose({
286
273
  <style lang="scss">
287
274
  .br-m-table-box {
288
275
  &[data-is-expand='true'] {
289
- //.el-table__expand-column, colgroup > col:nth-of-type(1) {
290
- // display: none;
291
- // //pointer-events: none;
292
- //}
293
-
294
276
  .el-table__expand-column {
295
277
  border: 0;
296
278
  }
@@ -298,20 +280,6 @@ defineExpose({
298
280
  .el-table__expand-column .cell {
299
281
  display: none;
300
282
  }
301
-
302
- //.el-table__expand-column {
303
- // border-right: 0;
304
- //
305
- // * {
306
- // opacity: 0;
307
- // }
308
- //}
309
- //
310
- //.el-table__expand-column + .el-table__cell {
311
- // //background-color: #2a598a;
312
- // transform: translateX(-48px);
313
- // padding-right: 48px;
314
- //}
315
283
  }
316
284
  }
317
285
  </style>
@@ -256,41 +256,6 @@ const getExpandActive = (index: number): boolean => {
256
256
 
257
257
  const filterText = ref<string>('')
258
258
 
259
- // const checkboxOptions = computed(() => {
260
-
261
- // let arr = props.filters.map(item => ({
262
- // ...item,
263
- // value: checkType(item.value).isArray() || checkType(item.value).isObject() ? JSON.stringify(item.value) : item.value
264
- // })).filter(item => String(item.value).includes(filterText.value))
265
-
266
- // if (tableKeyData && Object.keys(props.filtersValue).length) {
267
- // const processedFilters = props.filters.map(item => ({
268
- // ...item,
269
- // value: checkType(item.value).isArray() || checkType(item.value).isObject() ? JSON.stringify(item.value) : item.value
270
- // }))
271
- // console.log(props.filters)
272
- // console.log(arr)
273
-
274
- // // 收集 tableKeyData.tableData 中所有可能的 value 值
275
- // const tableDataValues = new Set(
276
- // tableKeyData.tableData.value.flatMap(data =>
277
- // Object.values(data).map(val => String(val))
278
- // )
279
- // )
280
- // // 筛选 processedFilters 中的值,只保留那些在 tableDataValues 中存在的项
281
- // arr = processedFilters.filter(filterItem =>
282
- // tableDataValues.has(String(filterItem.value))
283
- // )
284
- // // arr = tableKeyData.tableData.value.filter(data => {
285
- // // // 检查 data.value 是否存在于 processedFilters 的 value 中
286
- // // return processedFilters.some(filterItem =>
287
- // // Object.values(data).some(val => String(val) === String(filterItem.value))
288
- // // )
289
- // // })
290
- // }
291
- // return arr
292
- // })
293
-
294
259
  const getCheckboxOptions = (options: { text: string | number, value: string | number }[]) => {
295
260
  return options
296
261
  .map(item => ({
@@ -393,7 +358,6 @@ const boxStyle = ref<BoxStyle>({
393
358
  position: relative;
394
359
  width: 14px;
395
360
  height: 14px;
396
- // background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAMdJREFUOE/tkyESwjAQRfMj0Xgkp2AmaQweHCeAS1AuASfAgce0yQynQOLRyHyazpRpoW2YAcnKbP7L7t8sxJeBoM+yLK04Ukp678vzWBhj0iegEK5jgnq+eGTzO4C1dkhyDGAvhBhFKrmSXAC4aK1vjV6dcxPv/QnAoA1C8i6lnCqlzlX+zaw8z2cADh2AeZIkx3qu1W3n3JLktnERWCmldq/gznFZa8NUyvFWjrdV9QcIEfWgz8BgaicgLFj467H9+Gjr+iAPDfV1EeVT6aEAAAAASUVORK5CYII=");
397
361
  background-size: 100% 100%;
398
362
  transform: translateY(2px);
399
363
  cursor: pointer;
@@ -428,8 +392,6 @@ const boxStyle = ref<BoxStyle>({
428
392
 
429
393
  <style lang="scss">
430
394
  .m-filter-box {
431
- //$zIndex: 2050;
432
-
433
395
  &[data-is-open="true"] {
434
396
  opacity: 1;
435
397
  pointer-events: auto;
@@ -459,8 +421,6 @@ const boxStyle = ref<BoxStyle>({
459
421
  position: fixed;
460
422
  top: 0;
461
423
  left: 0;
462
- //z-index: $zIndex;
463
- //width: 134px;
464
424
  max-width: 50%;
465
425
  background: var(--el-bg-color-overlay);
466
426
  border: 1px solid var(--el-border-color-light);
@@ -509,7 +469,6 @@ const boxStyle = ref<BoxStyle>({
509
469
  }
510
470
 
511
471
  .filter-i {
512
- // color: var(--el-color-primary);
513
472
  background-color: var(--el-color-primary);
514
473
  }
515
474
  </style>
@@ -0,0 +1,48 @@
1
+ <script setup>
2
+ import demo from './demo.vue'
3
+ </script>
4
+
5
+ 整合表格组件
6
+ =================
7
+
8
+ ### 1) 基础用法
9
+
10
+ <Preview comp-name="MTableSuper" demo-name="demo">
11
+ <demo />
12
+ </Preview>
13
+
14
+ ### 2) Attributes
15
+
16
+ | 参数 | 说明 | 类型 | 可选值 | 默认值 |
17
+ |----------------|-----------------------------|------------------|-----|-----------------------------------------------------|
18
+ | data | 表格的数据 | Array | - | [ ] |
19
+ | sole | 行的唯一值 | String , number | - | key |
20
+ | filtersValue | 表格内容筛选(当为null时,不显示筛选图标) | Function \| null | - | null |
21
+ | expandProp | 展开图标列(如使用这个属性则必须存在rowKey属性) | string | - | '' |
22
+ | tableConfigKey | 表格配置key | string | - | '' |
23
+ | 其余参数 | 参考el官网的table | any | - | https://element-plus.org/zh-CN/component/table.html |
24
+
25
+ ## 要求
26
+
27
+ ```
28
+ sole 必须传递在表格数据内为唯一的值 如id key 等不会发生重复的关键字
29
+ ```
30
+
31
+ ### 3) Events
32
+
33
+ | 方法名 | 说明 | 回调参数 |
34
+ |---------------------|--------------------------------------|-----------------------------------------------------|
35
+ | pasteData | 表格粘贴方法 | 共有2个参数,依次为粘贴动作的数据PasteAction ,表格原始数据tableData |
36
+ | update:tableConfig | 表格配置更新 | \[tableConfig: TableConfig] |
37
+ | privateExpandChange | expandProp模式下 当用户对某一行展开或者关闭的时候会触发该事件 | [row: any, expandedRows: any[]] |
38
+ | 其余方法 | 参考el官网的table | https://element-plus.org/zh-CN/component/table.html |
39
+
40
+ ### 4) PasteAction
41
+
42
+ | 参数 | 说明 | 类型 |
43
+ |------------|----------------------------------------|--------|
44
+ | editRow | 返回粘贴的对应行的原始数据 | Object |
45
+ | editColumn | 返回粘贴时鼠标所在列的 表格prop值 | String |
46
+ | arr | 返回粘贴时候处理之后的 数组信息 | Array |
47
+ | rowIndex | 根据sole的值 去data内查找 当前操作的 粘贴行在data内的序号 | number |
48
+