@lx-frontend/wrap-element-ui 1.0.25 → 2.0.0

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 (73) hide show
  1. package/README.md +25 -40
  2. package/dist/index.css +1 -0
  3. package/dist/index.mjs +2097 -0
  4. package/dist/index.mjs.map +1 -0
  5. package/dist/types/components/EditableTable/features/bizColorSelect.vue.d.ts +31 -0
  6. package/dist/types/components/EditableTable/features/bizTableHeaderPopover/BizCheckboxFilter.vue.d.ts +23 -0
  7. package/dist/types/components/EditableTable/features/bizTableHeaderPopover/BizColorRadioFilter.vue.d.ts +23 -0
  8. package/dist/types/components/EditableTable/features/bizTableHeaderPopover/BizDoubleDatePickerFilter.vue.d.ts +23 -0
  9. package/dist/types/components/EditableTable/features/bizTableHeaderPopover/BizInputFilter.vue.d.ts +23 -0
  10. package/dist/types/components/EditableTable/features/bizTableHeaderPopover/BizMonthDayPicker.helper.d.ts +48 -0
  11. package/dist/types/components/EditableTable/features/bizTableHeaderPopover/BizMonthDayPicker.vue.d.ts +23 -0
  12. package/dist/types/components/EditableTable/features/bizTableHeaderPopover/BizRadioFilter.vue.d.ts +23 -0
  13. package/dist/types/components/EditableTable/features/bizTableHeaderPopover/BizSortFilter.vue.d.ts +25 -0
  14. package/dist/types/components/EditableTable/features/bizTableHeaderPopover/index.vue.d.ts +77 -0
  15. package/dist/types/components/EditableTable/features/bizTableOperatePopover.vue.d.ts +36 -0
  16. package/dist/types/components/EditableTable/features/bizViewSettingDialog.vue.d.ts +35 -0
  17. package/{src/components/EditableTable/bizHooks/index.ts → dist/types/components/EditableTable/hooks/index.d.ts} +5 -3
  18. package/dist/types/components/EditableTable/hooks/useCellHover.d.ts +19 -0
  19. package/dist/types/components/EditableTable/hooks/useColumnHeaderOperation.d.ts +37 -0
  20. package/dist/types/components/EditableTable/hooks/useDefaultOperation.d.ts +22 -0
  21. package/dist/types/components/EditableTable/hooks/useDragSort.d.ts +15 -0
  22. package/dist/types/components/EditableTable/hooks/usePagination.d.ts +12 -0
  23. package/dist/types/components/EditableTable/hooks/useRowBgColor.d.ts +18 -0
  24. package/dist/types/components/EditableTable/hooks/useRowEdit.d.ts +14 -0
  25. package/dist/types/components/EditableTable/hooks/useTableRender.d.ts +41 -0
  26. package/dist/types/components/EditableTable/hooks/useViewSetting.d.ts +26 -0
  27. package/dist/types/components/EditableTable/index.vue.d.ts +4502 -0
  28. package/dist/types/components/EditableTable/types.d.ts +419 -0
  29. package/dist/types/components/helper.d.ts +8 -0
  30. package/dist/types/index.d.ts +7 -0
  31. package/dist/types/stories/EditableTable.fake.d.ts +33 -0
  32. package/dist/types/stories/EditableTable.hook.d.ts +12 -0
  33. package/dist/types/stories/EditableTable.stories.d.ts +18 -0
  34. package/dist/types/stories/Test.stories.d.ts +6 -0
  35. package/package.json +66 -73
  36. package/src/components/AddMembers/index.vue +0 -149
  37. package/src/components/AuditSteps/index.vue +0 -140
  38. package/src/components/DemoComponent/index.vue +0 -21
  39. package/src/components/EditableTable/README.md +0 -147
  40. package/src/components/EditableTable/bizHooks/useCellHover.ts +0 -72
  41. package/src/components/EditableTable/bizHooks/useColumnHeaderOperation.ts +0 -339
  42. package/src/components/EditableTable/bizHooks/useDefaultOperation.ts +0 -96
  43. package/src/components/EditableTable/bizHooks/useDragSort.ts +0 -291
  44. package/src/components/EditableTable/bizHooks/usePagination.ts +0 -31
  45. package/src/components/EditableTable/bizHooks/useRowBgColor.ts +0 -44
  46. package/src/components/EditableTable/bizHooks/useViewSetting.ts +0 -206
  47. package/src/components/EditableTable/features/bizColorSelect.vue +0 -63
  48. package/src/components/EditableTable/features/bizEditCell.vue +0 -44
  49. package/src/components/EditableTable/features/bizTableHeaderPopover/BizCheckboxFilter.vue +0 -40
  50. package/src/components/EditableTable/features/bizTableHeaderPopover/BizColorRadioFilter.vue +0 -56
  51. package/src/components/EditableTable/features/bizTableHeaderPopover/BizDoubleDatePickerFilter.vue +0 -94
  52. package/src/components/EditableTable/features/bizTableHeaderPopover/BizInputFilter.vue +0 -26
  53. package/src/components/EditableTable/features/bizTableHeaderPopover/BizMonthDayPicker.helper.ts +0 -131
  54. package/src/components/EditableTable/features/bizTableHeaderPopover/BizMonthDayPicker.vue +0 -115
  55. package/src/components/EditableTable/features/bizTableHeaderPopover/BizRadioFilter.vue +0 -39
  56. package/src/components/EditableTable/features/bizTableHeaderPopover/BizSortFilter.vue +0 -50
  57. package/src/components/EditableTable/features/bizTableHeaderPopover/index.vue +0 -160
  58. package/src/components/EditableTable/features/bizTableOperatePopover.vue +0 -67
  59. package/src/components/EditableTable/features/bizViewSettingDialog.vue +0 -137
  60. package/src/components/EditableTable/index.less +0 -820
  61. package/src/components/EditableTable/index.vue +0 -681
  62. package/src/components/EditableTable/pin-top.png +0 -0
  63. package/src/components/EditableTable/types/index.ts +0 -212
  64. package/src/components/Ellipsis/MultilineEllipsis.vue +0 -141
  65. package/src/components/Ellipsis/index.vue +0 -119
  66. package/src/components/LxTable/index.vue +0 -296
  67. package/src/components/PopoverForm/index.vue +0 -66
  68. package/src/components/SearchForm/index.vue +0 -262
  69. package/src/components/SearchForm/types/index.ts +0 -81
  70. package/src/components/SearchSelect/index.vue +0 -153
  71. package/src/components/helper.ts +0 -37
  72. package/src/components/index.ts +0 -24
  73. package/src/components/singleMessage/index.ts +0 -44
@@ -1,296 +0,0 @@
1
-
2
- <!--
3
- @row-click="handleRowClick" 当某一行被点击时会触发该事件
4
- @cell-click="handleCellClick" 当某个单元格被点击时会触发该事件
5
- @sort-change="sortChange" 排序触发事件
6
- sortable 配置排序
7
- default-sort: prop默认字段 order排序方式
8
- slot='key_header' scopeHeader 支持表头可自定义
9
- highlightCurrentRow 单行选中状态
10
- -->
11
- <template>
12
- <div class="table-content">
13
- <FElTable
14
- ref="lxTableRef"
15
- v-loading="loading"
16
- v-bind="$attrs"
17
- :data="tableData"
18
- :empty-text="(customConfig || {}).emptyText || ''"
19
- :highlight-current-row="highlightCurrentRow"
20
- :row-class-name="tableRowClassName"
21
- :default-sort="(customConfig || {}).sortValue || defaultSort"
22
- @selection-change="handleSelectionChange"
23
- @row-click="handleRowClick"
24
- @cell-click="handleCellClick"
25
- @sort-change="sortChange"
26
- >
27
- <ElTableColumn
28
- v-if="customConfig.selection && customConfig.selection.isOpenSelection"
29
- type="selection"
30
- :width="customConfig.selection.width"
31
- />
32
- <ElTableColumn
33
- v-for="(item, index) in cloumns"
34
- :key="`${item}_${index}`"
35
- :label="item"
36
- :prop="keys[index]"
37
- :sortable="getFieldFromConfig(keys[index], 'sortable')"
38
- :width="getFieldFromConfig(keys[index], 'width')"
39
- :min-width="getFieldFromConfig(keys[index], 'minWidth')"
40
- :fixed="getFieldFromConfig(keys[index], 'fixed')"
41
- >
42
- <template
43
- slot="header"
44
- slot-scope="scope"
45
- >
46
- <slot
47
- v-if="getFieldFromConfig(keys[index], 'scopeHeader')"
48
- template
49
- :name="`${keys[index]}_header`"
50
- :keys="keys[index]"
51
- :row="scope.row"
52
- :lable="scope.column"
53
- :column="scope.$index"
54
- />
55
- <span v-else>
56
- {{ item }}
57
- </span>
58
- </template>
59
- <template slot-scope="scope">
60
- <!-- 支持keys字段为'car.id'或者'id' -->
61
- <div v-if="keys[index].indexOf('.') != -1">
62
- <!-- 一个td需要展示多个字段名 -->
63
- <div v-if="Array.isArray(keys[index])">
64
- <div
65
- v-for="(array, i) in keys[index]"
66
- :key="i"
67
- >
68
- {{ scope.row[array] }}
69
- </div>
70
- </div>
71
- <!-- 字段formatters存在,数据过滤-->
72
- <span
73
- v-else-if="getFieldFromConfig(keys[index], 'formatters')"
74
- >
75
- {{ formatterMethods(scope.row[keys[index].split('.')[0]][keys[index].split('.')[1]], (customConfig[keys[index]].formatters)) }}
76
- </span>
77
- <!-- 复杂情况需要自定义---当前keys存在于customConfig.template数据定义中,传入slot的name作为唯一标识符 -->
78
- <slot
79
- v-else-if="getFieldFromConfig(keys[index], 'template')"
80
- template
81
- :name="keys[index]"
82
- :keys="keys[index]"
83
- :row="scope.row"
84
- :lable="scope.column"
85
- :column="scope.$index"
86
- />
87
- <div v-else>
88
- <!-- 传入不需要截取的列 -->
89
- <span v-if="getFieldFromConfig(keys[index], 'templateCutOut')">
90
- {{ scope.row[keys[index].split('.')[0]][keys[index].split('.')[1]] | formateValue }}
91
- </span>
92
- <Ellipsis
93
- v-else
94
- :popover-name="popoverName"
95
- :line-count="getFieldFromConfig(keys[index], 'lineCount')"
96
- :content="[`${scope.row[keys[index].split('.')[0]][keys[index].split('.')[1]]}`] | formateValue"
97
- >
98
- <div slot="popover">
99
- <div>{{ scope.row[keys[index].split('.')[0]][keys[index].split('.')[1]] | formateValue }}</div>
100
- </div>
101
- </Ellipsis>
102
- </div>
103
- </div>
104
- <div v-else>
105
- <!-- 一个td需要展示多个字段名 -->
106
- <div v-if="Array.isArray(keys[index])">
107
- <div
108
- v-for="(array, i) in keys[index]"
109
- :key="i"
110
- >
111
- {{ scope.row[array] }}
112
- </div>
113
- </div>
114
- <!-- 字段formatters存在,数据过滤-->
115
- <span
116
- v-else-if="getFieldFromConfig(keys[index], 'formatters')"
117
- >
118
- {{ formatterMethods(scope.row[keys[index]], (customConfig[keys[index]].formatters)) }}
119
- </span>
120
- <!-- 复杂情况需要自定义---当前keys存在于customConfig.template数据定义中,传入slot的name作为唯一标识符 -->
121
- <slot
122
- v-else-if="getFieldFromConfig(keys[index], 'template')"
123
- template
124
- :name="keys[index]"
125
- :keys="keys[index]"
126
- :row="scope.row"
127
- :lable="scope.column"
128
- :column="scope.$index"
129
- />
130
- <div v-else>
131
- <!-- 传入不需要截取的列 -->
132
- <span v-if="getFieldFromConfig(keys[index], 'templateCutOut')">
133
- {{ scope.row[keys[index]] | formateValue }}
134
- </span>
135
- <Ellipsis
136
- v-else
137
- :popover-name="popoverName"
138
- :line-count="getFieldFromConfig(keys[index], 'lineCount')"
139
- :content="[`${scope.row[keys[index]]}`] | formateValue"
140
- >
141
- <div slot="popover">
142
- <div>{{ scope.row[keys[index]] | formateValue }}</div>
143
- </div>
144
- </Ellipsis>
145
- </div>
146
- </div>
147
- </template>
148
- </ElTableColumn>
149
- </FElTable>
150
- <ElPagination
151
- :background="background"
152
- v-if="currentPage"
153
- :current-page="currentPage"
154
- :page-size="pageSize"
155
- :total="totals"
156
- layout="total, prev, pager, next, jumper, slot"
157
- @current-change="handleCurrentChange"
158
- />
159
- </div>
160
- </template>
161
- <script>
162
- import Ellipsis from '../Ellipsis';
163
- import { Table } from 'element-ui'
164
- const FElTable = {
165
- extends: Table,
166
- methods: {
167
- doLayout (...args) {
168
- Table.methods.doLayout.call(this, ...args)
169
- this.fixLayout() // Looks like we can do it once?
170
- },
171
- fixLayout () {
172
- // Safari header/content misalign fix (possible other browsers?)
173
- this.columns.forEach(c => {
174
- // element-ui/packages/table/src/layout-observer.js:49
175
- const width = c.realWidth || c.width
176
- const th = this.$el.querySelector(`table.el-table__header th.${c.id}`)
177
- if (th) {
178
- if (th.offsetWidth !== width) {
179
- th.style = `min-width: ${width}px; max-width: ${width}px;`
180
- }
181
- let td
182
- for (td of this.$el.querySelectorAll(`table.el-table__body td.${c.id}`)) {
183
- if (td.offsetWidth === width) break
184
- td.style = `min-width: ${width}px; max-width: ${width}px;`
185
- }
186
- }
187
- })
188
- }
189
- }
190
- }
191
-
192
- export default {
193
- name: 'LxTable',
194
- components: {
195
- Ellipsis,
196
- FElTable
197
- },
198
- filters: {
199
- formateValue (val) {
200
- if (Array.isArray(val) && (val[0] === 'null' || val[0] === '')) {
201
- val = '';
202
- }
203
- return (val || val === 0) ? val : '--';
204
- },
205
- },
206
- props: {
207
- tableData: {
208
- type : Array,
209
- default: () => [],
210
- },
211
- cloumns: {
212
- type : Array,
213
- default: () => [],
214
- },
215
- customConfig: Object,
216
- keys: {
217
- type : Array,
218
- default: () => [],
219
- },
220
- defaultSort: {
221
- prop: '',
222
- order: null,
223
- },
224
- stripe: {
225
- type: Boolean,
226
- default: true,
227
- },
228
- loading: {
229
- type: Boolean,
230
- default: false,
231
- },
232
- background: {
233
- type: Boolean,
234
- default: true,
235
- },
236
- totals: Number,
237
- pageSize: Number,
238
- currentPage: Number,
239
- popoverName: String,
240
- parentFn: {
241
- type : String,
242
- default: '',
243
- },
244
- highlightCurrentRow: {
245
- type: Boolean,
246
- default: true,
247
- },
248
- tableRowClassName: {},
249
- },
250
- data() {
251
- return {
252
- scope: 'scope',
253
- };
254
- },
255
- methods: {
256
- handleCurrentChange(val) {
257
- this.$emit('handleCurrentChange', val);
258
- },
259
- handleSelectionChange(val) {
260
- this.$emit('handleSelectionChange', val);
261
- },
262
- handleRowClick(row, column, cell, event) {
263
- this.$emit('handleRowClick', row, column, cell, event);
264
- },
265
- handleCellClick(row, column, cell, event){
266
- this.$emit('handleCellClick', row, column, cell, event);
267
- },
268
- sortChange(column, prop, order) {
269
- this.$emit('sortChange', column, prop, order);
270
- },
271
- formatterMethods(key, keyData) {
272
- // 返回数据,可类型转换; 可添加单位;
273
- let value = '--';
274
- if (key || key === 0) {
275
- const keyValue = keyData[key] || key;
276
- const unit = keyData.unit || '';
277
- value = `${keyValue}${unit}`;
278
- }
279
- return value;
280
- },
281
- formateValue (val) {
282
- return val || val === 0 ? val : '--';
283
- },
284
- getFieldFromConfig(index, name) {
285
- return this.customConfig && this.customConfig[index] && this.customConfig[index][name];
286
- },
287
- }
288
- }
289
- </script>
290
- <style type="scss">
291
- .table-content .el-pagination {
292
- text-align: right;
293
- padding: 14px 0;
294
- }
295
- </style>
296
-
@@ -1,66 +0,0 @@
1
- <template>
2
- <el-popover :placement="placement" :disabled="isDisabled" :width="width || 300" v-model="show" trigger="click" :visible-arrow="true">
3
- <div class="el-popover__header">
4
- {{title}}
5
- <slot name="title"></slot>
6
- <el-button type="text" icon="el-icon-close" @click="handleClose"></el-button>
7
- </div>
8
- <slot name="form"></slot>
9
-
10
- <div v-if="withSubmitBtn" class="el-popover__footer">
11
- <slot name="footer"></slot>
12
- <el-button type="primary" class="wp100" @click="handleSubmit">{{ okText }}</el-button>
13
- </div>
14
- <span slot='reference'>
15
- <slot name='reference'></slot>
16
- </span>
17
- </el-popover>
18
- </template>
19
- <script>
20
- export default {
21
- name: 'PopoverForm',
22
- props: {
23
- title: String,
24
- width: Number,
25
- placement: {
26
- type: String,
27
- default: 'left',
28
- },
29
- withSubmitBtn: {
30
- type: Boolean,
31
- default: true,
32
- },
33
- isDisabled: {
34
- type: Boolean,
35
- default: false,
36
- },
37
- okText: {
38
- type: String,
39
- default: '确认',
40
- },
41
- },
42
- data() {
43
- return {
44
- show: false,
45
- };
46
- },
47
- methods: {
48
- handleClose() {
49
- this.show = false;
50
- },
51
- handleSubmit() {
52
- this.$emit('on-sure');
53
- },
54
- },
55
- watch: {
56
- show(val) {
57
- this.$emit('on-change', val);
58
- },
59
- },
60
- };
61
- </script>
62
- <style type="scss" scoped>
63
- .wp100{
64
- width: 100%;
65
- }
66
- </style>
@@ -1,262 +0,0 @@
1
- <template>
2
- <el-form
3
- class="search-form"
4
- :inline="isInline"
5
- :label-width="width"
6
- :label-position="labelPosition"
7
- >
8
- <el-form-item
9
- v-for="({
10
- isEmpty = true, key, type, prop, label, labelWidth, placeholder, candidate, filterable=false, withoutAll=false, collapseTags=false,
11
- clearable=false, multiple=false, multipleLimit=0, changeCb, inputLimitCallback, slotName, dateType='date', rangeSeparator,
12
- doubleIsInline = true, maxlength = 255, pickerOptions, limit, required = false
13
- }) in config"
14
- :required="required"
15
- :key="label"
16
- :label="showLabel ? label : ''"
17
- :label-width="labelWidth || width"
18
- style="margin-right: 10px"
19
- >
20
- <el-input
21
- v-if="type === 'input'"
22
- :placeholder="placeholder ? placeholder : showLabel ? '请输入' : label"
23
- :value="formData[prop]"
24
- :maxlength="maxlength"
25
- @input="val => handleInput(val, prop, inputLimitCallback)"
26
- />
27
- <div
28
- v-if="type === 'doubleInput'"
29
- :class="doubleIsInline ? 'form-double-inline': ''"
30
- >
31
- <el-input
32
- @input="val => handleInput(val, prop[0], inputLimitCallback)"
33
- :value="formData[prop[0]]"
34
- :placeholder="(placeholder || [])[0] || '请输入'"
35
- />
36
- <el-input
37
- :placeholder="(placeholder || [])[1] || '请输入'"
38
- :value="formData[prop[1]]"
39
- @input="val => handleInput(val, prop[1], inputLimitCallback)"
40
- />
41
- </div>
42
- <el-select
43
- v-if="type === 'select'"
44
- :value="formData[prop]"
45
- :placeholder="placeholder ? placeholder : showLabel ? '请输入' : label"
46
- :clearable="clearable"
47
- @input="val => handleInput(val, prop)"
48
- @change="(...args) => changeCb && changeCb(...args)"
49
- :filterable="filterable"
50
- :multiple="multiple"
51
- :multiple-limit="multipleLimit"
52
- :collapse-tags="collapseTags"
53
- >
54
- <el-option
55
- v-if="!withoutAll"
56
- value=""
57
- :label="showLabel ? '全部' : label"
58
- />
59
- <el-option
60
- v-for="({name, value, code, id}) in candidate"
61
- :key="value || code || id"
62
- :value="value || code || id"
63
- :label="name"
64
- />
65
- </el-select>
66
- <el-date-picker
67
- v-if="type === 'datePicker'"
68
- @input="val => handleInput(val, prop)"
69
- @change="(...args) => changeCb && changeCb(...args)"
70
- :value="formData[prop]"
71
- format="yyyy-MM-dd"
72
- value-format="yyyy-MM-dd"
73
- :type="dateType"
74
- :range-separator="rangeSeparator || '到'"
75
- :placeholder="dateType == 'date' ? placeholder || '选择日期' : '选择日期范围'"
76
- start-placeholder="开始日期"
77
- end-placeholder="结束日期"
78
- :picker-options="pickerOptions"
79
- />
80
- <div
81
- v-if="type === 'doubleDatePicker'"
82
- :class="doubleIsInline ? 'form-double-inline': ''"
83
- >
84
- <el-date-picker
85
- @input="val => handleInput(val, prop[0], '', key)"
86
- @change="(...args) => changeCb && changeCb(...args)"
87
- :value="formData[prop[0]]"
88
- value-format="yyyy-MM-dd"
89
- format="yyyy-MM-dd"
90
- type="date"
91
- :editable="false"
92
- :placeholder="(placeholder || [])[0] || '开始日期'"
93
- :picker-options="pickerOptions?.start || genStartDateDisabledOptions(formData[prop[1]], limit)"
94
- />
95
- <el-date-picker
96
- @input="val => handleInput(val, prop[1], '', key)"
97
- @change="(...args) => changeCb && changeCb(...args)"
98
- :value="formData[prop[1]]"
99
- value-format="yyyy-MM-dd"
100
- format="yyyy-MM-dd"
101
- type="date"
102
- :editable="false"
103
- :placeholder="(placeholder || [])[1] || '结束日期'"
104
- :picker-options="pickerOptions?.end || genEndDateDisabledOptions(formData[prop[0]], limit)"
105
- />
106
- <el-checkbox
107
- :value="checkedIds[key]"
108
- v-if="isEmpty"
109
- @change="(value) => handelIsEmpty(prop, value, key)"
110
- class="is-empty"
111
- >
112
- 空白
113
- </el-checkbox>
114
- </div>
115
- <slot
116
- v-if="type === 'slot'"
117
- :name="slotName"
118
- />
119
- </el-form-item>
120
- <span v-if="isShowSearchBtn">
121
- <el-button
122
- class="search"
123
- @click="handleSearch"
124
- type="primary"
125
- >{{ searchText }}</el-button>
126
- <el-button
127
- v-if="showClear"
128
- @click="handleClearParams"
129
- >{{ clearText }}</el-button>
130
- </span>
131
- </el-form>
132
- </template>
133
-
134
- <script>
135
- import { genStartDateDisabledOptions, genEndDateDisabledOptions } from '../helper';
136
-
137
- export default {
138
- name: 'SearchForm',
139
- props: {
140
- labelPosition: {
141
- default: 'right',
142
- type: String
143
- },
144
- isShowSearchBtn: {
145
- default: true,
146
- type: Boolean
147
- },
148
- isInline: {
149
- default: false,
150
- type: Boolean
151
- },
152
- config: {
153
- required: true,
154
- type: Array
155
- },
156
- width: {
157
- default: '100px',
158
- type: String
159
- },
160
- formData: {
161
- required: true
162
- },
163
- showClear: {
164
- default: true,
165
- type: Boolean
166
- },
167
- showLabel: {
168
- default: true,
169
- type: Boolean
170
- },
171
- ownerClear: {
172
- type: Function
173
- },
174
- resetCheckedIds: {
175
- type: Boolean
176
- },
177
- searchText: {
178
- default: '搜索',
179
- type: String
180
- },
181
- clearText: {
182
- default: '清除',
183
- type: String
184
- }
185
- },
186
- data () {
187
- return {
188
- visible: true,
189
- initialData: {},
190
- checkedIds: {}
191
- }
192
- },
193
- watch: {
194
- resetCheckedIds () {
195
- this.config.filter(c => c.type === 'doubleDatePicker').map(t => t.key).forEach(k => {
196
- this.$set(this.checkedIds, k, false)
197
- })
198
- }
199
- },
200
- mounted () {
201
- this.initialData = Object.freeze({ ...this.formData })
202
- },
203
- methods: {
204
- genStartDateDisabledOptions,
205
- genEndDateDisabledOptions,
206
- handleInput (val, prop, inputLimitCallback, key) {
207
- if (inputLimitCallback && !inputLimitCallback(val)) return false
208
- if (val) {
209
- this.$set(this.checkedIds, key, false)
210
- }
211
- this.$emit('update:formData', { ...this.formData, [prop]: val })
212
- this.$emit('isPickerEmpty', this.checkedIds)
213
- },
214
-
215
- handleSearch () {
216
- this.$emit('search', this.formData)
217
- },
218
-
219
- handelIsEmpty (prop, value, key) {
220
- if (value) {
221
- // eslint-disable-next-line
222
- this.formData[prop[0]] = '';
223
- // eslint-disable-next-line
224
- this.formData[prop[1]] = '';
225
- }
226
- this.$set(this.checkedIds, key, value)
227
- this.$emit('isPickerEmpty', this.checkedIds)
228
- },
229
-
230
- handleClearParams () { // 父组件可以通过调用 `this.$refs[xx].handleClearParams()` 来清空表单数据
231
- if (this.ownerClear && typeof this.ownerClear === 'function') {
232
- this.ownerClear()
233
- return
234
- }
235
- Object.keys(this.checkedIds).forEach((k) => {
236
- this.checkedIds[k] = false
237
- })
238
- this.$emit('update:formData', { ...this.formData, ...this.initialData })
239
- this.$emit('clear')
240
- },
241
-
242
- handleFormClose () {
243
- this.visible = false;
244
- },
245
- }
246
- }
247
- </script>
248
- <style scoped lang="less">
249
- .form-double-inline {
250
- display: flex;
251
- & .el-input {
252
- &:not(:first-child) {
253
- margin-left: 4px;
254
- }
255
- }
256
- & .el-date-editor{
257
- &:not(:first-child){
258
- margin-left: 4px;
259
- }
260
- }
261
- }
262
- </style>
@@ -1,81 +0,0 @@
1
- import { DatePicker } from "element-ui/types/element-ui"
2
-
3
- type BaseOption = {
4
- label: string
5
- prop: string
6
- labelWidth?: string
7
- clearable?: boolean
8
- placeholder?: string
9
- key?: string
10
- changeCb?: (value: any) => any
11
- }
12
-
13
- type SlotOption = Omit<BaseOption, 'prop'> & {
14
- prop?: string
15
- type: 'slot'
16
- slotName: string
17
- }
18
-
19
- type InputOption = BaseOption & {
20
- type: 'input'
21
- inputLimitCallback?: (value: string) => boolean
22
- maxlength?: number
23
- }
24
-
25
- type SelectOption = BaseOption & {
26
- type: 'select'
27
- multiple?: boolean
28
- filterable?: boolean
29
- multipleLimit?: number
30
- collapseTags?: boolean
31
- withoutAll?: boolean
32
- candidate: {
33
- name: string
34
- value?: string | number
35
- id?: string | number
36
- code?: string | number
37
- }[]
38
- }
39
-
40
- type DatePickerOption = BaseOption & {
41
- type: 'datePicker'
42
- dateType?: string
43
- rangeSeparator?: string
44
- datePickerOptions?: DatePicker['pickerOptions']
45
- }
46
-
47
- type BaseDoubleOption = Omit<BaseOption, 'prop'> & {
48
- doubleIsInline?: boolean
49
- prop: [string, string]
50
- }
51
-
52
- type DoubleInputOption = BaseDoubleOption & {
53
- type: 'doubleInput'
54
- inputLimitCallback?: (value: string) => boolean
55
- }
56
-
57
- type DoubleDatePickerOptionBase = BaseDoubleOption & {
58
- type: 'doubleDatePicker'
59
- isEmpty?: boolean
60
- placeholder?: [string, string]
61
- }
62
-
63
- type DoubleDatePickerOption = DoubleDatePickerOptionBase & {
64
- pickerOptions?: {
65
- start?: DatePicker['pickerOptions']
66
- end?: DatePicker['pickerOptions']
67
- }
68
- }
69
-
70
- type DoubleDatePickerOptionLimit = DoubleDatePickerOptionBase & {
71
- limit?: number
72
- }
73
-
74
- export type SearchFormConfigOption =
75
- | InputOption
76
- | SelectOption
77
- | DatePickerOption
78
- | DoubleInputOption
79
- | DoubleDatePickerOption
80
- | DoubleDatePickerOptionLimit
81
- | SlotOption