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.
@@ -2,439 +2,34 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var vue = require('vue');
6
- var lodashUnified = require('lodash-unified');
7
- var search = require('./search2.js');
8
- var pluginVue_exportHelper = require('../../../../_virtual/plugin-vue_export-helper.js');
9
- var index = require('../../../hooks/use-locale/index.js');
10
- var useGlobalConfig = require('../../config-provider/src/hooks/use-global-config.js');
11
- var error = require('../../../utils/error.js');
5
+ var runtime = require('../../../utils/vue/props/runtime.js');
6
+ var index = require('../../../hooks/use-size/index.js');
7
+ var shared = require('@vue/shared');
12
8
 
13
- const COMPONENT_NAME = "MSearch";
14
- const __default__ = vue.defineComponent({
15
- name: COMPONENT_NAME
16
- });
17
- const _sfc_main = vue.defineComponent({
18
- ...__default__,
19
- props: search.searchProps,
20
- emits: search.searchEmits,
21
- setup(__props, { expose: __expose, emit: __emit }) {
22
- const props = __props;
23
- const emit = __emit;
24
- const slots = vue.useSlots();
25
- const { t } = index.useLocale();
26
- const INPUT_TYPES = ["input", "textarea", "number", "password"];
27
- const SELECT_TYPES = ["select", "checkbox", "radio", "switch"];
28
- const DATE_TYPES = [
29
- "year",
30
- "month",
31
- "date",
32
- "datetime",
33
- "week",
34
- "datetimerange",
35
- "daterange",
36
- "monthrange",
37
- "yearrange",
38
- "time",
39
- "timerange"
40
- ];
41
- const searchOption = vue.ref({
42
- searchBtnText: t("m.search.searchBtnText"),
43
- resetBtnText: t("m.search.resetBtnText"),
44
- searchBtnIcon: "Search",
45
- resetBtnIcon: "Delete",
46
- labelWidth: "80px",
47
- colIndex: 3,
48
- col: false,
49
- column: []
50
- });
51
- const formRef = vue.ref();
52
- const globalConfig = useGlobalConfig.useGlobalConfig();
53
- const searchCol = vue.ref(true);
54
- const proxys = new Proxy(props.model, {
55
- get(target, property) {
56
- return lodashUnified.get(target, property);
57
- },
58
- set(target, property, value) {
59
- lodashUnified.set(target, property, value);
60
- return true;
61
- }
62
- });
63
- const initValue = () => {
64
- var _a;
65
- if (searchOption.value && searchOption.value.column) {
66
- for (let i = 0; i < ((_a = searchOption.value.column) == null ? void 0 : _a.length); i++) {
67
- const column = searchOption.value.column[i];
68
- if (column.prop && proxys[column.prop] === void 0) {
69
- if (column.value) {
70
- proxys[column.prop] = column.value;
71
- } else {
72
- const ARR_TYPES = [
73
- "checkbox",
74
- "datetimerange",
75
- "daterange",
76
- "monthrange",
77
- "yearrange",
78
- "timerange"
79
- ];
80
- if (column.type === "select" && column.multiple || ARR_TYPES.includes(column.type || "")) {
81
- proxys[column.prop] = [];
82
- } else {
83
- proxys[column.prop] = "";
84
- }
85
- }
86
- }
87
- }
88
- }
89
- };
90
- const getValueFormatByType = (type) => {
91
- let format = "";
92
- switch (type) {
93
- case "yearrange":
94
- case "year":
95
- format = "YYYY";
96
- break;
97
- case "monthrange":
98
- case "month":
99
- format = "YYYY-MM";
100
- break;
101
- case "daterange":
102
- case "week":
103
- case "date":
104
- format = "YYYY-MM-DD";
105
- break;
106
- case "datetimerange":
107
- case "datetime":
108
- format = "YYYY-MM-DD HH:mm:ss";
109
- break;
110
- case "time":
111
- format = "HH:mm:ss";
112
- break;
113
- }
114
- return format;
115
- };
116
- const search = (page = 1) => {
117
- var _a;
118
- if (searchOption.value.column && searchOption.value.column.length) {
119
- (_a = formRef.value) == null ? void 0 : _a.validate((valid) => {
120
- if (valid) {
121
- if (proxys.page) {
122
- proxys.page = page;
123
- }
124
- emit("search", proxys);
125
- }
126
- });
127
- } else {
128
- if (proxys.page) {
129
- proxys.page = page;
130
- }
131
- emit("search", proxys);
132
- }
133
- };
134
- const reset = () => {
135
- var _a;
136
- if (proxys.page) {
137
- proxys.page = 1;
138
- }
139
- if (proxys.limit) {
140
- proxys.limit = 10;
141
- }
142
- (_a = formRef.value) == null ? void 0 : _a.resetFields();
143
- emit("reset");
144
- };
145
- const toggleCol = () => {
146
- searchCol.value = !searchCol.value;
147
- };
148
- const getAllRemoteDics = () => {
149
- var _a, _b, _c, _d;
150
- const hasDicUrl = (_b = (_a = searchOption.value) == null ? void 0 : _a.column) == null ? void 0 : _b.some((column) => column.dicUrl);
151
- if (hasDicUrl && !((_c = globalConfig.value) == null ? void 0 : _c.httpGet)) {
152
- error.debugWarn("MSearch", "global config httpGet is null");
153
- return;
154
- }
155
- const updateRemoteDic = (column) => {
156
- return new Promise((resolve) => {
157
- let isSuccess = false;
158
- globalConfig.value.httpGet(column.dicUrl, column.dicQuery, column.dicHeaders).then((e) => {
159
- const { list, label, value } = column.dicFormatter(e);
160
- if (list && Array.isArray(list)) {
161
- column["dicData"] = list.map((item) => {
162
- const lastLabel = label.replace(/\{(\w+)\}/g, (match, key) => {
163
- return item[key] || match;
164
- });
165
- return {
166
- label: lastLabel,
167
- value: item[value]
168
- };
169
- });
170
- isSuccess = true;
171
- }
172
- }).finally(() => {
173
- if (!isSuccess) {
174
- column["dicData"] = [];
175
- }
176
- resolve(null);
177
- });
178
- });
179
- };
180
- for (let i = 0; i < (((_d = searchOption.value) == null ? void 0 : _d.column) || []).length; i++) {
181
- const column = searchOption.value.column[i];
182
- if (column.dicUrl) {
183
- if (!column.dicFormatter) {
184
- error.debugWarn("MSearch", "dicUrl and dicFormatter must be used together");
185
- continue;
186
- }
187
- updateRemoteDic(column);
188
- }
189
- }
190
- };
191
- vue.watch(
192
- () => props.option,
193
- (newVal) => {
194
- if (newVal) {
195
- searchOption.value = Object.assign({}, searchOption.value, newVal);
196
- if (newVal.column) {
197
- searchOption.value.column = lodashUnified.cloneDeep(
198
- newVal.column.filter(
199
- (column) => !(props.permission[column.prop || ""] === false)
200
- ).sort((a, b) => (b.order || 0) - (a.order || 0))
201
- );
202
- }
203
- getAllRemoteDics();
204
- initValue();
205
- }
206
- },
207
- {
208
- immediate: true,
209
- deep: true
210
- }
211
- );
212
- __expose({
213
- search,
214
- reset
215
- });
216
- return (_ctx, _cache) => {
217
- const _component_el_input = vue.resolveComponent("el-input");
218
- const _component_el_option = vue.resolveComponent("el-option");
219
- const _component_el_select = vue.resolveComponent("el-select");
220
- const _component_el_date_picker = vue.resolveComponent("el-date-picker");
221
- const _component_el_time_picker = vue.resolveComponent("el-time-picker");
222
- const _component_el_form_item = vue.resolveComponent("el-form-item");
223
- const _component_el_col = vue.resolveComponent("el-col");
224
- const _component_el_button = vue.resolveComponent("el-button");
225
- const _component_ArrowDown = vue.resolveComponent("ArrowDown");
226
- const _component_ArrowUp = vue.resolveComponent("ArrowUp");
227
- const _component_el_icon = vue.resolveComponent("el-icon");
228
- const _component_el_link = vue.resolveComponent("el-link");
229
- const _component_el_row = vue.resolveComponent("el-row");
230
- const _component_el_form = vue.resolveComponent("el-form");
231
- return searchOption.value.column && searchOption.value.column.length ? (vue.openBlock(), vue.createElementBlock("div", {
232
- key: 0,
233
- class: "m-search"
234
- }, [
235
- vue.createVNode(_component_el_form, {
236
- ref_key: "formRef",
237
- ref: formRef,
238
- inline: true,
239
- model: vue.unref(proxys),
240
- size: _ctx.size || vue.unref(globalConfig).size,
241
- disabled: _ctx.loading,
242
- "label-width": searchOption.value.labelWidth,
243
- onSubmit: vue.withModifiers(() => {
244
- }, ["prevent"])
245
- }, {
246
- default: vue.withCtx(() => [
247
- vue.createVNode(_component_el_row, { gutter: 0 }, {
248
- default: vue.withCtx(() => [
249
- (vue.openBlock(true), vue.createElementBlock(
250
- vue.Fragment,
251
- null,
252
- vue.renderList(searchOption.value.column, (column, columnIndex) => {
253
- return vue.openBlock(), vue.createElementBlock(
254
- vue.Fragment,
255
- { key: columnIndex },
256
- [
257
- !searchOption.value.col || !searchCol.value || columnIndex < (searchOption.value.colIndex || 3) ? (vue.openBlock(), vue.createBlock(_component_el_col, {
258
- key: 0,
259
- span: column.span || 6
260
- }, {
261
- default: vue.withCtx(() => [
262
- vue.createVNode(_component_el_form_item, {
263
- style: { "width": "100%" },
264
- "label-width": column.labelWidth || searchOption.value.labelWidth,
265
- label: column.label + ":",
266
- prop: column.prop,
267
- rules: column.rules
268
- }, {
269
- default: vue.withCtx(() => [
270
- vue.createCommentVNode("\u63D2\u69FD"),
271
- vue.unref(slots)[column.prop || ""] ? vue.renderSlot(_ctx.$slots, column.prop, vue.mergeProps({
272
- key: 0,
273
- ref_for: true
274
- }, { size: _ctx.size || vue.unref(globalConfig).size, loading: _ctx.loading })) : !column.type || INPUT_TYPES.includes(column.type) ? (vue.openBlock(), vue.createElementBlock(
275
- vue.Fragment,
276
- { key: 1 },
277
- [
278
- vue.createCommentVNode(""),
279
- vue.createCommentVNode("\u8F93\u5165\u6846"),
280
- vue.createVNode(_component_el_input, {
281
- modelValue: vue.unref(proxys)[column.prop || ""],
282
- "onUpdate:modelValue": ($event) => vue.unref(proxys)[column.prop || ""] = $event,
283
- modelModifiers: { trim: true },
284
- placeholder: column.placeholder,
285
- style: { "width": "100%" },
286
- type: "text",
287
- onKeyup: vue.withKeys(($event) => search(1), ["enter"])
288
- }, null, 8, ["modelValue", "onUpdate:modelValue", "placeholder", "onKeyup"])
289
- ],
290
- 64
291
- )) : SELECT_TYPES.includes(column.type) ? (vue.openBlock(), vue.createElementBlock(
292
- vue.Fragment,
293
- { key: 2 },
294
- [
295
- vue.createCommentVNode(""),
296
- vue.createCommentVNode("\u5355\u9009/\u591A\u9009"),
297
- vue.createVNode(_component_el_select, {
298
- modelValue: vue.unref(proxys)[column.prop || ""],
299
- "onUpdate:modelValue": ($event) => vue.unref(proxys)[column.prop || ""] = $event,
300
- style: { "width": "100%" },
301
- placeholder: column.placeholder,
302
- multiple: column.multiple || column.type === "checkbox",
303
- clearable: column.clearable
304
- }, {
305
- default: vue.withCtx(() => [
306
- (vue.openBlock(true), vue.createElementBlock(
307
- vue.Fragment,
308
- null,
309
- vue.renderList(column.dicData || [], (dicItem, dicIndex) => {
310
- return vue.openBlock(), vue.createBlock(_component_el_option, {
311
- key: dicIndex,
312
- label: dicItem.label,
313
- value: dicItem.value
314
- }, null, 8, ["label", "value"]);
315
- }),
316
- 128
317
- ))
318
- ]),
319
- _: 2
320
- }, 1032, ["modelValue", "onUpdate:modelValue", "placeholder", "multiple", "clearable"])
321
- ],
322
- 64
323
- )) : DATE_TYPES.includes(column.type) ? (vue.openBlock(), vue.createElementBlock(
324
- vue.Fragment,
325
- { key: 3 },
326
- [
327
- vue.createCommentVNode(""),
328
- vue.createCommentVNode("\u65F6\u95F4\u9009\u62E9"),
329
- column.type !== "time" && column.type !== "timerange" ? (vue.openBlock(), vue.createBlock(_component_el_date_picker, {
330
- key: 0,
331
- modelValue: vue.unref(proxys)[column.prop || ""],
332
- "onUpdate:modelValue": ($event) => vue.unref(proxys)[column.prop || ""] = $event,
333
- type: column.type,
334
- clearable: column.clearable,
335
- "start-placeholder": column.startPlaceholder,
336
- "end-placeholder": column.endPlaceholder,
337
- format: column.format,
338
- "value-format": column.valueFormat || getValueFormatByType(column.type)
339
- }, null, 8, ["modelValue", "onUpdate:modelValue", "type", "clearable", "start-placeholder", "end-placeholder", "format", "value-format"])) : (vue.openBlock(), vue.createBlock(_component_el_time_picker, {
340
- key: 1,
341
- modelValue: vue.unref(proxys)[column.prop || ""],
342
- "onUpdate:modelValue": ($event) => vue.unref(proxys)[column.prop || ""] = $event,
343
- "is-range": column.type === "timerange",
344
- clearable: column.clearable,
345
- "start-placeholder": column.startPlaceholder,
346
- "end-placeholder": column.endPlaceholder,
347
- "value-format": column.valueFormat || getValueFormatByType(column.type)
348
- }, null, 8, ["modelValue", "onUpdate:modelValue", "is-range", "clearable", "start-placeholder", "end-placeholder", "value-format"]))
349
- ],
350
- 64
351
- )) : vue.createCommentVNode("v-if", true)
352
- ]),
353
- _: 2
354
- }, 1032, ["label-width", "label", "prop", "rules"])
355
- ]),
356
- _: 2
357
- }, 1032, ["span"])) : vue.createCommentVNode("v-if", true)
358
- ],
359
- 64
360
- );
361
- }),
362
- 128
363
- )),
364
- vue.createVNode(_component_el_col, { span: 6 }, {
365
- default: vue.withCtx(() => [
366
- vue.createVNode(_component_el_form_item, {
367
- class: "m-search-btns",
368
- style: { "width": "100%" }
369
- }, {
370
- default: vue.withCtx(() => [
371
- vue.createVNode(_component_el_button, {
372
- type: "primary",
373
- icon: searchOption.value.searchBtnIcon,
374
- loading: _ctx.loading,
375
- onClick: ($event) => search(1)
376
- }, {
377
- default: vue.withCtx(() => [
378
- vue.createTextVNode(
379
- vue.toDisplayString(searchOption.value.searchBtnText),
380
- 1
381
- )
382
- ]),
383
- _: 1
384
- }, 8, ["icon", "loading", "onClick"]),
385
- vue.createVNode(_component_el_button, {
386
- type: "default",
387
- icon: searchOption.value.resetBtnIcon,
388
- loading: _ctx.loading,
389
- onClick: reset
390
- }, {
391
- default: vue.withCtx(() => [
392
- vue.createTextVNode(
393
- vue.toDisplayString(searchOption.value.resetBtnText),
394
- 1
395
- )
396
- ]),
397
- _: 1
398
- }, 8, ["icon", "loading"]),
399
- searchOption.value.col ? (vue.openBlock(), vue.createBlock(_component_el_link, {
400
- key: 0,
401
- style: { "width": "54px", "margin-left": "12px" },
402
- underline: "never",
403
- disabled: _ctx.loading,
404
- type: "default",
405
- onClick: toggleCol
406
- }, {
407
- default: vue.withCtx(() => [
408
- vue.createVNode(_component_el_icon, { style: { "margin-right": "6px" } }, {
409
- default: vue.withCtx(() => [
410
- searchCol.value ? (vue.openBlock(), vue.createBlock(_component_ArrowDown, { key: 0 })) : (vue.openBlock(), vue.createBlock(_component_ArrowUp, { key: 1 }))
411
- ]),
412
- _: 1
413
- }),
414
- vue.createTextVNode(
415
- " " + vue.toDisplayString(searchCol.value ? vue.unref(t)("m.search.expandBtn") : vue.unref(t)("m.search.colBtn")),
416
- 1
417
- )
418
- ]),
419
- _: 1
420
- }, 8, ["disabled"])) : vue.createCommentVNode("v-if", true)
421
- ]),
422
- _: 1
423
- })
424
- ]),
425
- _: 1
426
- })
427
- ]),
428
- _: 3
429
- })
430
- ]),
431
- _: 3
432
- }, 8, ["model", "size", "disabled", "label-width", "onSubmit"])
433
- ])) : vue.createCommentVNode("v-if", true);
434
- };
9
+ const searchProps = runtime.buildProps({
10
+ size: index.useSizeProp,
11
+ loading: {
12
+ type: Boolean,
13
+ default: false
14
+ },
15
+ permission: {
16
+ type: Object,
17
+ default: {}
18
+ },
19
+ model: {
20
+ type: Object,
21
+ required: true
22
+ },
23
+ option: {
24
+ type: runtime.definePropType(Object),
25
+ required: false
435
26
  }
436
27
  });
437
- var Search = /* @__PURE__ */ pluginVue_exportHelper["default"](_sfc_main, [["__file", "search.vue"]]);
28
+ const searchEmits = {
29
+ search: (model) => shared.isObject(model),
30
+ reset: () => true
31
+ };
438
32
 
439
- exports["default"] = Search;
33
+ exports.searchEmits = searchEmits;
34
+ exports.searchProps = searchProps;
440
35
  //# sourceMappingURL=search.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","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","useSlots","useLocale","ref","useGlobalConfig","get","set","debugWarn","watch","cloneDeep"],"mappings":"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"}
1
+ {"version":3,"file":"search.js","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":["buildProps","useSizeProp","definePropType","isObject"],"mappings":";;;;;;;;AAgGO,MAAM,cAAcA,kBAAW,CAAA;AAAA,EAIpC,IAAM,EAAAC,iBAAA;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,EAAMC,uBAA8B,MAAM,CAAA;AAAA,IAC1C,QAAU,EAAA,KAAA;AAAA,GACZ;AACF,CAAU,EAAA;AAGH,MAAM,WAAc,GAAA;AAAA,EAMzB,MAAQ,EAAA,CAAC,KAAe,KAAAC,eAAA,CAAS,KAAK,CAAA;AAAA,EAKtC,OAAO,MAAM,IAAA;AACf;;;;;"}