m-eleplus-crud 0.0.9 → 0.0.11

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.
@@ -11987,6 +11987,12 @@ const _sfc_main$e = defineComponent({
11987
11987
  }
11988
11988
  }
11989
11989
  };
11990
+ const wrapSelectData = (arr) => {
11991
+ if (!arr) {
11992
+ return [];
11993
+ }
11994
+ return [{ label: "\u5168\u90E8", value: "" }, ...arr];
11995
+ };
11990
11996
  watch(
11991
11997
  () => props.option,
11992
11998
  (newVal) => {
@@ -12105,7 +12111,7 @@ const _sfc_main$e = defineComponent({
12105
12111
  (openBlock(true), createElementBlock(
12106
12112
  Fragment,
12107
12113
  null,
12108
- renderList(column.dicData || [], (dicItem, dicIndex) => {
12114
+ renderList(wrapSelectData(column.dicData), (dicItem, dicIndex) => {
12109
12115
  return openBlock(), createBlock(_component_el_option, {
12110
12116
  key: dicIndex,
12111
12117
  label: dicItem.label,
@@ -18431,13 +18437,14 @@ const _sfc_main = defineComponent({
18431
18437
  key: 0,
18432
18438
  width: tableOption.value.menuWidth,
18433
18439
  label: tableOption.value.menuTitle || unref(t)("m.table.menuTitle"),
18434
- align: "center"
18440
+ align: "center",
18441
+ fixed: tableOption.value.menuFixed
18435
18442
  }, {
18436
18443
  default: withCtx((scope) => [
18437
18444
  unref(slots).menu ? renderSlot(_ctx.$slots, "menu", normalizeProps(mergeProps({ key: 0 }, scope))) : createCommentVNode("v-if", true)
18438
18445
  ]),
18439
18446
  _: 3
18440
- }, 8, ["width", "label"])) : createCommentVNode("v-if", true)
18447
+ }, 8, ["width", "label", "fixed"])) : createCommentVNode("v-if", true)
18441
18448
  ]),
18442
18449
  _: 3
18443
18450
  }, 8, ["size", "data", "height", "max-height", "border", "stripe", "row-key"])), [
package/es/index.mjs CHANGED
@@ -7,7 +7,7 @@ export { provideGlobalConfig, useGlobalComponentSettings, useGlobalConfig } from
7
7
  export { MConfigProvider } from './packages/components/config-provider/index.mjs';
8
8
  export { tableEmits, tableProps } from './packages/components/table/src/table2.mjs';
9
9
  export { MTable } from './packages/components/table/index.mjs';
10
- export { searchEmits, searchProps } from './packages/components/search/src/search2.mjs';
10
+ export { searchEmits, searchProps } from './packages/components/search/src/search.mjs';
11
11
  export { MSearch } from './packages/components/search/index.mjs';
12
12
  export { pictureEmits, pictureProps } from './packages/components/picture/src/picture.mjs';
13
13
  export { MPicture } from './packages/components/picture/index.mjs';
@@ -12,7 +12,7 @@ export { configProviderProps } from './config-provider/src/config-provider-props
12
12
  export { configProviderContextKey } from './config-provider/src/constants.mjs';
13
13
  export { provideGlobalConfig, useGlobalComponentSettings, useGlobalConfig } from './config-provider/src/hooks/use-global-config.mjs';
14
14
  export { tableEmits, tableProps } from './table/src/table2.mjs';
15
- export { searchEmits, searchProps } from './search/src/search2.mjs';
15
+ export { searchEmits, searchProps } from './search/src/search.mjs';
16
16
  export { pictureEmits, pictureProps } from './picture/src/picture.mjs';
17
17
  export { dialogEmits, dialogProps } from './dialog/src/dialog.mjs';
18
18
  export { qrcodeEmits, qrcodeProps } from './qrcode/src/qrcode.mjs';
@@ -1,5 +1,5 @@
1
- import Search from './src/search.mjs';
2
- export { searchEmits, searchProps } from './src/search2.mjs';
1
+ import Search from './src/search2.mjs';
2
+ export { searchEmits, searchProps } from './src/search.mjs';
3
3
  import { withInstall } from '../../utils/vue/install.mjs';
4
4
 
5
5
  const MSearch = withInstall(Search);
@@ -1,436 +1,30 @@
1
- import { defineComponent, useSlots, ref, watch, resolveComponent, openBlock, createElementBlock, createVNode, unref, withModifiers, withCtx, Fragment, renderList, createBlock, createCommentVNode, renderSlot, mergeProps, withKeys, createTextVNode, toDisplayString } from 'vue';
2
- import { get, set, cloneDeep } from 'lodash-unified';
3
- import { searchProps, searchEmits } from './search2.mjs';
4
- import _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';
5
- import { useLocale } from '../../../hooks/use-locale/index.mjs';
6
- import { useGlobalConfig } from '../../config-provider/src/hooks/use-global-config.mjs';
7
- import { debugWarn } from '../../../utils/error.mjs';
1
+ import { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';
2
+ import { useSizeProp } from '../../../hooks/use-size/index.mjs';
3
+ import { isObject } from '@vue/shared';
8
4
 
9
- const COMPONENT_NAME = "MSearch";
10
- const __default__ = defineComponent({
11
- name: COMPONENT_NAME
12
- });
13
- const _sfc_main = defineComponent({
14
- ...__default__,
15
- props: searchProps,
16
- emits: searchEmits,
17
- setup(__props, { expose: __expose, emit: __emit }) {
18
- const props = __props;
19
- const emit = __emit;
20
- const slots = useSlots();
21
- const { t } = useLocale();
22
- const INPUT_TYPES = ["input", "textarea", "number", "password"];
23
- const SELECT_TYPES = ["select", "checkbox", "radio", "switch"];
24
- const DATE_TYPES = [
25
- "year",
26
- "month",
27
- "date",
28
- "datetime",
29
- "week",
30
- "datetimerange",
31
- "daterange",
32
- "monthrange",
33
- "yearrange",
34
- "time",
35
- "timerange"
36
- ];
37
- const searchOption = ref({
38
- searchBtnText: t("m.search.searchBtnText"),
39
- resetBtnText: t("m.search.resetBtnText"),
40
- searchBtnIcon: "Search",
41
- resetBtnIcon: "Delete",
42
- labelWidth: "80px",
43
- colIndex: 3,
44
- col: false,
45
- column: []
46
- });
47
- const formRef = ref();
48
- const globalConfig = useGlobalConfig();
49
- const searchCol = ref(true);
50
- const proxys = new Proxy(props.model, {
51
- get(target, property) {
52
- return get(target, property);
53
- },
54
- set(target, property, value) {
55
- set(target, property, value);
56
- return true;
57
- }
58
- });
59
- const initValue = () => {
60
- var _a;
61
- if (searchOption.value && searchOption.value.column) {
62
- for (let i = 0; i < ((_a = searchOption.value.column) == null ? void 0 : _a.length); i++) {
63
- const column = searchOption.value.column[i];
64
- if (column.prop && proxys[column.prop] === void 0) {
65
- if (column.value) {
66
- proxys[column.prop] = column.value;
67
- } else {
68
- const ARR_TYPES = [
69
- "checkbox",
70
- "datetimerange",
71
- "daterange",
72
- "monthrange",
73
- "yearrange",
74
- "timerange"
75
- ];
76
- if (column.type === "select" && column.multiple || ARR_TYPES.includes(column.type || "")) {
77
- proxys[column.prop] = [];
78
- } else {
79
- proxys[column.prop] = "";
80
- }
81
- }
82
- }
83
- }
84
- }
85
- };
86
- const getValueFormatByType = (type) => {
87
- let format = "";
88
- switch (type) {
89
- case "yearrange":
90
- case "year":
91
- format = "YYYY";
92
- break;
93
- case "monthrange":
94
- case "month":
95
- format = "YYYY-MM";
96
- break;
97
- case "daterange":
98
- case "week":
99
- case "date":
100
- format = "YYYY-MM-DD";
101
- break;
102
- case "datetimerange":
103
- case "datetime":
104
- format = "YYYY-MM-DD HH:mm:ss";
105
- break;
106
- case "time":
107
- format = "HH:mm:ss";
108
- break;
109
- }
110
- return format;
111
- };
112
- const search = (page = 1) => {
113
- var _a;
114
- if (searchOption.value.column && searchOption.value.column.length) {
115
- (_a = formRef.value) == null ? void 0 : _a.validate((valid) => {
116
- if (valid) {
117
- if (proxys.page) {
118
- proxys.page = page;
119
- }
120
- emit("search", proxys);
121
- }
122
- });
123
- } else {
124
- if (proxys.page) {
125
- proxys.page = page;
126
- }
127
- emit("search", proxys);
128
- }
129
- };
130
- const reset = () => {
131
- var _a;
132
- if (proxys.page) {
133
- proxys.page = 1;
134
- }
135
- if (proxys.limit) {
136
- proxys.limit = 10;
137
- }
138
- (_a = formRef.value) == null ? void 0 : _a.resetFields();
139
- emit("reset");
140
- };
141
- const toggleCol = () => {
142
- searchCol.value = !searchCol.value;
143
- };
144
- const getAllRemoteDics = () => {
145
- var _a, _b, _c, _d;
146
- const hasDicUrl = (_b = (_a = searchOption.value) == null ? void 0 : _a.column) == null ? void 0 : _b.some((column) => column.dicUrl);
147
- if (hasDicUrl && !((_c = globalConfig.value) == null ? void 0 : _c.httpGet)) {
148
- debugWarn("MSearch", "global config httpGet is null");
149
- return;
150
- }
151
- const updateRemoteDic = (column) => {
152
- return new Promise((resolve) => {
153
- let isSuccess = false;
154
- globalConfig.value.httpGet(column.dicUrl, column.dicQuery, column.dicHeaders).then((e) => {
155
- const { list, label, value } = column.dicFormatter(e);
156
- if (list && Array.isArray(list)) {
157
- column["dicData"] = list.map((item) => {
158
- const lastLabel = label.replace(/\{(\w+)\}/g, (match, key) => {
159
- return item[key] || match;
160
- });
161
- return {
162
- label: lastLabel,
163
- value: item[value]
164
- };
165
- });
166
- isSuccess = true;
167
- }
168
- }).finally(() => {
169
- if (!isSuccess) {
170
- column["dicData"] = [];
171
- }
172
- resolve(null);
173
- });
174
- });
175
- };
176
- for (let i = 0; i < (((_d = searchOption.value) == null ? void 0 : _d.column) || []).length; i++) {
177
- const column = searchOption.value.column[i];
178
- if (column.dicUrl) {
179
- if (!column.dicFormatter) {
180
- debugWarn("MSearch", "dicUrl and dicFormatter must be used together");
181
- continue;
182
- }
183
- updateRemoteDic(column);
184
- }
185
- }
186
- };
187
- watch(
188
- () => props.option,
189
- (newVal) => {
190
- if (newVal) {
191
- searchOption.value = Object.assign({}, searchOption.value, newVal);
192
- if (newVal.column) {
193
- searchOption.value.column = cloneDeep(
194
- newVal.column.filter(
195
- (column) => !(props.permission[column.prop || ""] === false)
196
- ).sort((a, b) => (b.order || 0) - (a.order || 0))
197
- );
198
- }
199
- getAllRemoteDics();
200
- initValue();
201
- }
202
- },
203
- {
204
- immediate: true,
205
- deep: true
206
- }
207
- );
208
- __expose({
209
- search,
210
- reset
211
- });
212
- return (_ctx, _cache) => {
213
- const _component_el_input = resolveComponent("el-input");
214
- const _component_el_option = resolveComponent("el-option");
215
- const _component_el_select = resolveComponent("el-select");
216
- const _component_el_date_picker = resolveComponent("el-date-picker");
217
- const _component_el_time_picker = resolveComponent("el-time-picker");
218
- const _component_el_form_item = resolveComponent("el-form-item");
219
- const _component_el_col = resolveComponent("el-col");
220
- const _component_el_button = resolveComponent("el-button");
221
- const _component_ArrowDown = resolveComponent("ArrowDown");
222
- const _component_ArrowUp = resolveComponent("ArrowUp");
223
- const _component_el_icon = resolveComponent("el-icon");
224
- const _component_el_link = resolveComponent("el-link");
225
- const _component_el_row = resolveComponent("el-row");
226
- const _component_el_form = resolveComponent("el-form");
227
- return searchOption.value.column && searchOption.value.column.length ? (openBlock(), createElementBlock("div", {
228
- key: 0,
229
- class: "m-search"
230
- }, [
231
- createVNode(_component_el_form, {
232
- ref_key: "formRef",
233
- ref: formRef,
234
- inline: true,
235
- model: unref(proxys),
236
- size: _ctx.size || unref(globalConfig).size,
237
- disabled: _ctx.loading,
238
- "label-width": searchOption.value.labelWidth,
239
- onSubmit: withModifiers(() => {
240
- }, ["prevent"])
241
- }, {
242
- default: withCtx(() => [
243
- createVNode(_component_el_row, { gutter: 0 }, {
244
- default: withCtx(() => [
245
- (openBlock(true), createElementBlock(
246
- Fragment,
247
- null,
248
- renderList(searchOption.value.column, (column, columnIndex) => {
249
- return openBlock(), createElementBlock(
250
- Fragment,
251
- { key: columnIndex },
252
- [
253
- !searchOption.value.col || !searchCol.value || columnIndex < (searchOption.value.colIndex || 3) ? (openBlock(), createBlock(_component_el_col, {
254
- key: 0,
255
- span: column.span || 6
256
- }, {
257
- default: withCtx(() => [
258
- createVNode(_component_el_form_item, {
259
- style: { "width": "100%" },
260
- "label-width": column.labelWidth || searchOption.value.labelWidth,
261
- label: column.label + ":",
262
- prop: column.prop,
263
- rules: column.rules
264
- }, {
265
- default: withCtx(() => [
266
- createCommentVNode("\u63D2\u69FD"),
267
- unref(slots)[column.prop || ""] ? renderSlot(_ctx.$slots, column.prop, mergeProps({
268
- key: 0,
269
- ref_for: true
270
- }, { size: _ctx.size || unref(globalConfig).size, loading: _ctx.loading })) : !column.type || INPUT_TYPES.includes(column.type) ? (openBlock(), createElementBlock(
271
- Fragment,
272
- { key: 1 },
273
- [
274
- createCommentVNode(""),
275
- createCommentVNode("\u8F93\u5165\u6846"),
276
- createVNode(_component_el_input, {
277
- modelValue: unref(proxys)[column.prop || ""],
278
- "onUpdate:modelValue": ($event) => unref(proxys)[column.prop || ""] = $event,
279
- modelModifiers: { trim: true },
280
- placeholder: column.placeholder,
281
- style: { "width": "100%" },
282
- type: "text",
283
- onKeyup: withKeys(($event) => search(1), ["enter"])
284
- }, null, 8, ["modelValue", "onUpdate:modelValue", "placeholder", "onKeyup"])
285
- ],
286
- 64
287
- )) : SELECT_TYPES.includes(column.type) ? (openBlock(), createElementBlock(
288
- Fragment,
289
- { key: 2 },
290
- [
291
- createCommentVNode(""),
292
- createCommentVNode("\u5355\u9009/\u591A\u9009"),
293
- createVNode(_component_el_select, {
294
- modelValue: unref(proxys)[column.prop || ""],
295
- "onUpdate:modelValue": ($event) => unref(proxys)[column.prop || ""] = $event,
296
- style: { "width": "100%" },
297
- placeholder: column.placeholder,
298
- multiple: column.multiple || column.type === "checkbox",
299
- clearable: column.clearable
300
- }, {
301
- default: withCtx(() => [
302
- (openBlock(true), createElementBlock(
303
- Fragment,
304
- null,
305
- renderList(column.dicData || [], (dicItem, dicIndex) => {
306
- return openBlock(), createBlock(_component_el_option, {
307
- key: dicIndex,
308
- label: dicItem.label,
309
- value: dicItem.value
310
- }, null, 8, ["label", "value"]);
311
- }),
312
- 128
313
- ))
314
- ]),
315
- _: 2
316
- }, 1032, ["modelValue", "onUpdate:modelValue", "placeholder", "multiple", "clearable"])
317
- ],
318
- 64
319
- )) : DATE_TYPES.includes(column.type) ? (openBlock(), createElementBlock(
320
- Fragment,
321
- { key: 3 },
322
- [
323
- createCommentVNode(""),
324
- createCommentVNode("\u65F6\u95F4\u9009\u62E9"),
325
- column.type !== "time" && column.type !== "timerange" ? (openBlock(), createBlock(_component_el_date_picker, {
326
- key: 0,
327
- modelValue: unref(proxys)[column.prop || ""],
328
- "onUpdate:modelValue": ($event) => unref(proxys)[column.prop || ""] = $event,
329
- type: column.type,
330
- clearable: column.clearable,
331
- "start-placeholder": column.startPlaceholder,
332
- "end-placeholder": column.endPlaceholder,
333
- format: column.format,
334
- "value-format": column.valueFormat || getValueFormatByType(column.type)
335
- }, null, 8, ["modelValue", "onUpdate:modelValue", "type", "clearable", "start-placeholder", "end-placeholder", "format", "value-format"])) : (openBlock(), createBlock(_component_el_time_picker, {
336
- key: 1,
337
- modelValue: unref(proxys)[column.prop || ""],
338
- "onUpdate:modelValue": ($event) => unref(proxys)[column.prop || ""] = $event,
339
- "is-range": column.type === "timerange",
340
- clearable: column.clearable,
341
- "start-placeholder": column.startPlaceholder,
342
- "end-placeholder": column.endPlaceholder,
343
- "value-format": column.valueFormat || getValueFormatByType(column.type)
344
- }, null, 8, ["modelValue", "onUpdate:modelValue", "is-range", "clearable", "start-placeholder", "end-placeholder", "value-format"]))
345
- ],
346
- 64
347
- )) : createCommentVNode("v-if", true)
348
- ]),
349
- _: 2
350
- }, 1032, ["label-width", "label", "prop", "rules"])
351
- ]),
352
- _: 2
353
- }, 1032, ["span"])) : createCommentVNode("v-if", true)
354
- ],
355
- 64
356
- );
357
- }),
358
- 128
359
- )),
360
- createVNode(_component_el_col, { span: 6 }, {
361
- default: withCtx(() => [
362
- createVNode(_component_el_form_item, {
363
- class: "m-search-btns",
364
- style: { "width": "100%" }
365
- }, {
366
- default: withCtx(() => [
367
- createVNode(_component_el_button, {
368
- type: "primary",
369
- icon: searchOption.value.searchBtnIcon,
370
- loading: _ctx.loading,
371
- onClick: ($event) => search(1)
372
- }, {
373
- default: withCtx(() => [
374
- createTextVNode(
375
- toDisplayString(searchOption.value.searchBtnText),
376
- 1
377
- )
378
- ]),
379
- _: 1
380
- }, 8, ["icon", "loading", "onClick"]),
381
- createVNode(_component_el_button, {
382
- type: "default",
383
- icon: searchOption.value.resetBtnIcon,
384
- loading: _ctx.loading,
385
- onClick: reset
386
- }, {
387
- default: withCtx(() => [
388
- createTextVNode(
389
- toDisplayString(searchOption.value.resetBtnText),
390
- 1
391
- )
392
- ]),
393
- _: 1
394
- }, 8, ["icon", "loading"]),
395
- searchOption.value.col ? (openBlock(), createBlock(_component_el_link, {
396
- key: 0,
397
- style: { "width": "54px", "margin-left": "12px" },
398
- underline: "never",
399
- disabled: _ctx.loading,
400
- type: "default",
401
- onClick: toggleCol
402
- }, {
403
- default: withCtx(() => [
404
- createVNode(_component_el_icon, { style: { "margin-right": "6px" } }, {
405
- default: withCtx(() => [
406
- searchCol.value ? (openBlock(), createBlock(_component_ArrowDown, { key: 0 })) : (openBlock(), createBlock(_component_ArrowUp, { key: 1 }))
407
- ]),
408
- _: 1
409
- }),
410
- createTextVNode(
411
- " " + toDisplayString(searchCol.value ? unref(t)("m.search.expandBtn") : unref(t)("m.search.colBtn")),
412
- 1
413
- )
414
- ]),
415
- _: 1
416
- }, 8, ["disabled"])) : createCommentVNode("v-if", true)
417
- ]),
418
- _: 1
419
- })
420
- ]),
421
- _: 1
422
- })
423
- ]),
424
- _: 3
425
- })
426
- ]),
427
- _: 3
428
- }, 8, ["model", "size", "disabled", "label-width", "onSubmit"])
429
- ])) : createCommentVNode("v-if", true);
430
- };
5
+ const searchProps = buildProps({
6
+ size: useSizeProp,
7
+ loading: {
8
+ type: Boolean,
9
+ default: false
10
+ },
11
+ permission: {
12
+ type: Object,
13
+ default: {}
14
+ },
15
+ model: {
16
+ type: Object,
17
+ required: true
18
+ },
19
+ option: {
20
+ type: definePropType(Object),
21
+ required: false
431
22
  }
432
23
  });
433
- var Search = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "search.vue"]]);
24
+ const searchEmits = {
25
+ search: (model) => isObject(model),
26
+ reset: () => true
27
+ };
434
28
 
435
- export { Search as default };
29
+ export { searchEmits, searchProps };
436
30
  //# sourceMappingURL=search.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.mjs","sources":["../../../../../../../packages/components/search/src/search.vue"],"sourcesContent":["<script lang=\"ts\" setup>\r\nimport { ref, useSlots, watch } from 'vue'\r\nimport { cloneDeep, get, set } from 'lodash-unified'\r\nimport { useLocale } from '@m-eleplus-crud/hooks'\r\nimport { useGlobalConfig } from '@m-eleplus-crud/components'\r\nimport { debugWarn } from '@m-eleplus-crud/utils'\r\nimport { searchEmits, searchProps } from './search'\r\nimport type { ISearchColumn, ISearchOption } from './search'\r\n\r\nimport type { FormInstance } from 'element-plus'\r\n\r\nconst COMPONENT_NAME = 'MSearch'\r\ndefineOptions({\r\n name: COMPONENT_NAME,\r\n})\r\n\r\nconst props = defineProps(searchProps)\r\nconst emit = defineEmits(searchEmits)\r\n\r\n// 插槽信息\r\nconst slots = useSlots() as any\r\n\r\n// 国际化\r\nconst { t } = useLocale()\r\n\r\n// 输入框类型\r\nconst INPUT_TYPES = ['input', 'textarea', 'number', 'password']\r\n\r\n// 下拉选择类型\r\nconst SELECT_TYPES = ['select', 'checkbox', 'radio', 'switch']\r\n\r\n// 时间选择类型\r\nconst DATE_TYPES = [\r\n 'year',\r\n 'month',\r\n 'date',\r\n 'datetime',\r\n 'week',\r\n 'datetimerange',\r\n 'daterange',\r\n 'monthrange',\r\n 'yearrange',\r\n 'time',\r\n 'timerange',\r\n]\r\n\r\nconst searchOption = ref<ISearchOption>({\r\n searchBtnText: t('m.search.searchBtnText'),\r\n resetBtnText: t('m.search.resetBtnText'),\r\n // 搜索按钮默认Search图标\r\n searchBtnIcon: 'Search',\r\n // 重置按钮默认Delete图标\r\n resetBtnIcon: 'Delete',\r\n // 默认label宽度80px\r\n labelWidth: '80px',\r\n // 默认展示3个\r\n colIndex: 3,\r\n // 默认不折叠\r\n col: false,\r\n // 搜索列配置\r\n column: [],\r\n})\r\n\r\n// 表单ref\r\nconst formRef = ref<FormInstance>()\r\n\r\n// 全局配置\r\nconst globalConfig = useGlobalConfig()\r\n\r\n// 搜索选项折叠\r\nconst searchCol = ref(true)\r\n\r\n// 代理model\r\nconst proxys: any = new Proxy(props.model as any, {\r\n get(target, property) {\r\n return get(target, property)\r\n },\r\n set(target, property, value) {\r\n set(target, property, value)\r\n return true\r\n },\r\n})\r\n\r\n/**\r\n * 初始化搜索表单的值\r\n */\r\nconst initValue = () => {\r\n // 初始化搜索表单的值\r\n if (searchOption.value && searchOption.value.column) {\r\n for (let i = 0; i < searchOption.value.column?.length; i++) {\r\n const column = searchOption.value.column[i]\r\n if (column.prop && proxys[column.prop] === undefined) {\r\n if (column.value) {\r\n proxys[column.prop] = column.value\r\n } else {\r\n const ARR_TYPES = [\r\n 'checkbox',\r\n 'datetimerange',\r\n 'daterange',\r\n 'monthrange',\r\n 'yearrange',\r\n 'timerange',\r\n ]\r\n if (\r\n (column.type === 'select' && column.multiple) ||\r\n ARR_TYPES.includes(column.type || '')\r\n ) {\r\n proxys[column.prop] = []\r\n } else {\r\n proxys[column.prop] = ''\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * 根据类型获取默认时间格式\r\n * @param type 类型\r\n */\r\nconst getValueFormatByType = (type: string) => {\r\n let format = ''\r\n switch (type) {\r\n case 'yearrange':\r\n case 'year':\r\n format = 'YYYY'\r\n break\r\n case 'monthrange':\r\n case 'month':\r\n format = 'YYYY-MM'\r\n break\r\n case 'daterange':\r\n case 'week':\r\n case 'date':\r\n format = 'YYYY-MM-DD'\r\n break\r\n case 'datetimerange':\r\n case 'datetime':\r\n format = 'YYYY-MM-DD HH:mm:ss'\r\n break\r\n case 'time':\r\n format = 'HH:mm:ss'\r\n break\r\n }\r\n return format\r\n}\r\n\r\n/**\r\n * 查询搜索触发\r\n * @param page 第一页\r\n */\r\nconst search = (page = 1) => {\r\n if (searchOption.value.column && searchOption.value.column.length) {\r\n formRef.value?.validate((valid) => {\r\n if (valid) {\r\n // 搜索从第一页开始搜索,也支持传入页码\r\n if (proxys.page) {\r\n proxys.page = page\r\n }\r\n // emit搜索事件 如果非第一页,自动重置第一页\r\n emit('search', proxys)\r\n }\r\n })\r\n } else {\r\n // 搜索从第一页开始搜索,也支持传入页码\r\n if (proxys.page) {\r\n proxys.page = page\r\n }\r\n // emit搜索事件 如果非第一页,自动重置第一页\r\n emit('search', proxys)\r\n }\r\n}\r\n\r\n/**\r\n * 重置搜索\r\n */\r\nconst reset = () => {\r\n // 重置分页参数\r\n if (proxys.page) {\r\n proxys.page = 1\r\n }\r\n if (proxys.limit) {\r\n proxys.limit = 10\r\n }\r\n // 清空搜索表单的字段\r\n formRef.value?.resetFields()\r\n // emit重置事件\r\n emit('reset')\r\n}\r\n\r\n/**\r\n * 展开/折叠搜索\r\n */\r\nconst toggleCol = () => {\r\n searchCol.value = !searchCol.value\r\n}\r\n\r\n/**\r\n * 处理需要远程获取字典的配置\r\n */\r\nconst getAllRemoteDics = () => {\r\n const hasDicUrl = searchOption.value?.column?.some((column) => column.dicUrl)\r\n if (hasDicUrl && !globalConfig.value?.httpGet) {\r\n debugWarn('MSearch', 'global config httpGet is null')\r\n return\r\n }\r\n /**\r\n * 调用接口设置到dicData\r\n * @param column 列配置\r\n */\r\n const updateRemoteDic = (column: ISearchColumn) => {\r\n return new Promise((resolve) => {\r\n let isSuccess = false\r\n // @ts-ignore\r\n globalConfig.value\r\n .httpGet(column.dicUrl, column.dicQuery, column.dicHeaders)\r\n .then((e: any) => {\r\n // @ts-ignore\r\n const { list, label, value } = column.dicFormatter(e)\r\n if (list && Array.isArray(list)) {\r\n column['dicData'] = list.map((item) => {\r\n const lastLabel = label.replace(/\\{(\\w+)\\}/g, (match, key) => {\r\n return item[key] || match\r\n })\r\n return {\r\n label: lastLabel,\r\n value: item[value],\r\n }\r\n })\r\n isSuccess = true\r\n }\r\n })\r\n .finally(() => {\r\n if (!isSuccess) {\r\n column['dicData'] = []\r\n }\r\n resolve(null)\r\n })\r\n })\r\n }\r\n for (let i = 0; i < (searchOption.value?.column || []).length; i++) {\r\n // @ts-ignore\r\n const column = searchOption.value.column[i]\r\n if (column.dicUrl) {\r\n if (!column.dicFormatter) {\r\n debugWarn('MSearch', 'dicUrl and dicFormatter must be used together')\r\n continue\r\n }\r\n updateRemoteDic(column)\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * @description 监听搜索列的变化\r\n */\r\nwatch(\r\n () => props.option as ISearchOption,\r\n (newVal: ISearchOption) => {\r\n if (newVal) {\r\n searchOption.value = Object.assign({}, searchOption.value, newVal)\r\n if (newVal.column) {\r\n searchOption.value.column = cloneDeep(\r\n newVal.column\r\n .filter(\r\n (column) => !(props.permission[column.prop || ''] === false)\r\n )\r\n .sort((a, b) => (b.order || 0) - (a.order || 0))\r\n )\r\n }\r\n // 处理远程字典的配置\r\n getAllRemoteDics()\r\n // 初始化搜索表单的值\r\n initValue()\r\n }\r\n },\r\n {\r\n immediate: true,\r\n deep: true,\r\n }\r\n)\r\n\r\ndefineExpose({\r\n /**\r\n * @description 搜索方法\r\n */\r\n search,\r\n /**\r\n * @description 重置方法\r\n */\r\n reset,\r\n})\r\n</script>\r\n\r\n<template>\r\n <div\r\n v-if=\"searchOption.column && searchOption.column.length\"\r\n class=\"m-search\"\r\n >\r\n <el-form\r\n ref=\"formRef\"\r\n :inline=\"true\"\r\n :model=\"proxys\"\r\n :size=\"size || globalConfig.size\"\r\n :disabled=\"loading\"\r\n :label-width=\"searchOption.labelWidth\"\r\n @submit.prevent\r\n >\r\n <el-row :gutter=\"0\">\r\n <template\r\n v-for=\"(column, columnIndex) in searchOption.column\"\r\n :key=\"columnIndex\"\r\n >\r\n <el-col\r\n v-if=\"\r\n !searchOption.col ||\r\n !searchCol ||\r\n columnIndex < (searchOption.colIndex || 3)\r\n \"\r\n :span=\"column.span || 6\"\r\n >\r\n <el-form-item\r\n style=\"width: 100%\"\r\n :label-width=\"column.labelWidth || searchOption.labelWidth\"\r\n :label=\"column.label + ':'\"\r\n :prop=\"column.prop\"\r\n :rules=\"column.rules\"\r\n >\r\n <!--插槽-->\r\n <slot\r\n v-if=\"slots[column.prop || '']\"\r\n :name=\"column.prop\"\r\n v-bind=\"{ size: size || globalConfig.size, loading: loading }\"\r\n />\r\n <!---->\r\n <!--输入框-->\r\n <template\r\n v-else-if=\"!column.type || INPUT_TYPES.includes(column.type)\"\r\n >\r\n <el-input\r\n v-model.trim=\"proxys[column.prop || '']\"\r\n :placeholder=\"column.placeholder\"\r\n style=\"width: 100%\"\r\n type=\"text\"\r\n @keyup.enter=\"search(1)\"\r\n />\r\n </template>\r\n <!---->\r\n <!--单选/多选-->\r\n <template\r\n v-else-if=\"SELECT_TYPES.includes(column.type as string)\"\r\n >\r\n <el-select\r\n v-model=\"proxys[column.prop || '']\"\r\n style=\"width: 100%\"\r\n :placeholder=\"column.placeholder\"\r\n :multiple=\"column.multiple || column.type === 'checkbox'\"\r\n :clearable=\"column.clearable\"\r\n >\r\n <el-option\r\n v-for=\"(dicItem, dicIndex) in column.dicData || []\"\r\n :key=\"dicIndex\"\r\n :label=\"dicItem.label\"\r\n :value=\"dicItem.value\"\r\n />\r\n </el-select>\r\n </template>\r\n <!---->\r\n <!--时间选择-->\r\n <template v-else-if=\"DATE_TYPES.includes(column.type as string)\">\r\n <el-date-picker\r\n v-if=\"column.type !== 'time' && column.type !== 'timerange'\"\r\n v-model=\"proxys[column.prop || '']\"\r\n :type=\"column.type\"\r\n :clearable=\"column.clearable\"\r\n :start-placeholder=\"column.startPlaceholder\"\r\n :end-placeholder=\"column.endPlaceholder\"\r\n :format=\"column.format\"\r\n :value-format=\"\r\n column.valueFormat || getValueFormatByType(column.type)\r\n \"\r\n />\r\n <el-time-picker\r\n v-else\r\n v-model=\"proxys[column.prop || '']\"\r\n :is-range=\"column.type === 'timerange'\"\r\n :clearable=\"column.clearable\"\r\n :start-placeholder=\"column.startPlaceholder\"\r\n :end-placeholder=\"column.endPlaceholder\"\r\n :value-format=\"\r\n column.valueFormat || getValueFormatByType(column.type)\r\n \"\r\n />\r\n </template>\r\n </el-form-item>\r\n </el-col>\r\n </template>\r\n <el-col :span=\"6\">\r\n <el-form-item class=\"m-search-btns\" style=\"width: 100%\">\r\n <el-button\r\n type=\"primary\"\r\n :icon=\"searchOption.searchBtnIcon\"\r\n :loading=\"loading\"\r\n @click=\"search(1)\"\r\n >\r\n {{ searchOption.searchBtnText }}\r\n </el-button>\r\n <el-button\r\n type=\"default\"\r\n :icon=\"searchOption.resetBtnIcon\"\r\n :loading=\"loading\"\r\n @click=\"reset\"\r\n >\r\n {{ searchOption.resetBtnText }}\r\n </el-button>\r\n <el-link\r\n v-if=\"searchOption.col\"\r\n style=\"width: 54px; margin-left: 12px\"\r\n underline=\"never\"\r\n :disabled=\"loading\"\r\n type=\"default\"\r\n @click=\"toggleCol\"\r\n >\r\n <el-icon style=\"margin-right: 6px\">\r\n <ArrowDown v-if=\"searchCol\" />\r\n <ArrowUp v-else />\r\n </el-icon>\r\n {{ searchCol ? t('m.search.expandBtn') : t('m.search.colBtn') }}\r\n </el-link>\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n </el-form>\r\n </div>\r\n</template>\r\n"],"names":["DO_defineComponent"],"mappings":"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"}
1
+ {"version":3,"file":"search.mjs","sources":["../../../../../../../packages/components/search/src/search.ts"],"sourcesContent":["import { ICommonColumn } from '@m-eleplus-crud/components/common'\r\nimport { useSizeProp } from '@m-eleplus-crud/hooks'\r\nimport { buildProps, definePropType, isObject } from '@m-eleplus-crud/utils'\r\n\r\nimport { ColumnType } from '../../common'\r\nimport type { ExtractPropTypes } from 'vue'\r\nimport type { FormItemRule } from 'element-plus'\r\n\r\n/**\r\n * @description 公开的search column配置\r\n */\r\nexport interface ISearchCommonColumn {\r\n /**\r\n * @description label宽度\r\n */\r\n labelWidth?: string\r\n /**\r\n * @description 搜索排序\r\n */\r\n order?: number\r\n /**\r\n * @description 搜索校验规则\r\n */\r\n rules?: FormItemRule[]\r\n /**\r\n * @description 栅栏宽度\r\n */\r\n span?: number\r\n /**\r\n * @description 最大长度\r\n */\r\n maxlength?: number\r\n /**\r\n * @description 搜索默认值\r\n */\r\n value?: any\r\n /**\r\n * @description 输入框占位文本\r\n */\r\n placeholder?: string\r\n}\r\n\r\n/**\r\n * @description 搜索列配置\r\n */\r\nexport interface ISearchColumn extends ICommonColumn, ISearchCommonColumn {\r\n /**\r\n * @description 类型\r\n */\r\n type?: ColumnType\r\n}\r\n\r\n/**\r\n * @description 公开的search配置\r\n */\r\nexport interface ISearchCommonOption {\r\n /**\r\n * @description 搜索按钮文本\r\n */\r\n searchBtnText?: string\r\n /**\r\n * @description 重置按钮文本\r\n */\r\n resetBtnText?: string\r\n /**\r\n * @description 搜索按钮icon\r\n */\r\n searchBtnIcon?: string\r\n /**\r\n * @description 重置按钮icon\r\n */\r\n resetBtnIcon?: string\r\n /**\r\n * @description label宽度\r\n */\r\n labelWidth?: string\r\n /**\r\n * @description 收缩展示个数\r\n */\r\n colIndex?: number\r\n /**\r\n * @description 是否开启收缩\r\n */\r\n col?: boolean\r\n}\r\n\r\n/**\r\n * @description 搜索信息配置\r\n */\r\nexport interface ISearchOption extends ISearchCommonOption {\r\n /**\r\n * @description 搜索列配置\r\n */\r\n column: ISearchColumn[]\r\n}\r\n\r\nexport const searchProps = buildProps({\r\n /**\r\n * @description 尺寸大小\r\n */\r\n size: useSizeProp,\r\n /**\r\n * @description 查询加载状态\r\n */\r\n loading: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n /**\r\n * @description 搜索权限配置\r\n */\r\n permission: {\r\n type: Object,\r\n default: {},\r\n },\r\n /**\r\n * @description 搜索表单数据\r\n */\r\n model: {\r\n type: Object,\r\n required: true,\r\n },\r\n /**\r\n * @description 搜索配置\r\n */\r\n option: {\r\n type: definePropType<ISearchOption>(Object),\r\n required: false,\r\n },\r\n} as const)\r\nexport type SearchProps = ExtractPropTypes<typeof searchProps>\r\n\r\nexport const searchEmits = {\r\n /**\r\n * 搜索\r\n * @param model 搜索表单数据\r\n * @returns\r\n */\r\n search: (model: any) => isObject(model),\r\n /**\r\n * 重置\r\n * @returns\r\n */\r\n reset: () => true,\r\n}\r\nexport type SearchEmits = typeof searchEmits\r\n"],"names":[],"mappings":";;;;AAgGO,MAAM,cAAc,UAAW,CAAA;AAAA,EAIpC,IAAM,EAAA,WAAA;AAAA,EAIN,OAAS,EAAA;AAAA,IACP,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,GACX;AAAA,EAIA,UAAY,EAAA;AAAA,IACV,IAAM,EAAA,MAAA;AAAA,IACN,SAAS,EAAC;AAAA,GACZ;AAAA,EAIA,KAAO,EAAA;AAAA,IACL,IAAM,EAAA,MAAA;AAAA,IACN,QAAU,EAAA,IAAA;AAAA,GACZ;AAAA,EAIA,MAAQ,EAAA;AAAA,IACN,IAAA,EAAM,eAA8B,MAAM,CAAA;AAAA,IAC1C,QAAU,EAAA,KAAA;AAAA,GACZ;AACF,CAAU,EAAA;AAGH,MAAM,WAAc,GAAA;AAAA,EAMzB,MAAQ,EAAA,CAAC,KAAe,KAAA,QAAA,CAAS,KAAK,CAAA;AAAA,EAKtC,OAAO,MAAM,IAAA;AACf;;;;"}