vue2-components-plus 1.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.
@@ -0,0 +1,2181 @@
1
+ import F, { getCurrentInstance as X, nextTick as Y } from "vue";
2
+ function U(e) {
3
+ const t = { maxLength: 50, pattern: null, min: null, max: null, int: !1 }, r = e.value;
4
+ return typeof r == "number" ? { ...t, maxLength: r } : r && typeof r == "object" ? {
5
+ maxLength: r.maxLength || t.maxLength,
6
+ pattern: r.pattern || null,
7
+ min: typeof r.min == "number" ? r.min : null,
8
+ max: typeof r.max == "number" ? r.max : null,
9
+ int: !!r.int
10
+ } : t;
11
+ }
12
+ function T(e, t, r = !0) {
13
+ let n = "", i = !1, s = !1;
14
+ return String(e || "").split("").forEach((a, l) => {
15
+ if (a === "-") {
16
+ r && l === 0 && !i && (n += a, i = !0);
17
+ return;
18
+ }
19
+ if (a === ".") {
20
+ l !== 0 && !s && n[n.length - 1] !== "-" && (n += a, s = !0);
21
+ return;
22
+ }
23
+ /^\d$/.test(a) && ((i ? n.slice(1) : n) === "0" && a !== "0" && !s && (n = i ? "-" : ""), n += a);
24
+ }), n.slice(0, t);
25
+ }
26
+ function J(e, t, r) {
27
+ let n = "", i = !1;
28
+ const s = r.min !== null && r.min < 0;
29
+ return String(e || "").split("").forEach((a, l) => {
30
+ if (a === "-") {
31
+ s && l === 0 && !i && (n += a, i = !0);
32
+ return;
33
+ }
34
+ /^\d$/.test(a) && ((i ? n.slice(1) : n) === "0" && a !== "0" && (n = i ? "-" : ""), n += a);
35
+ }), n.slice(0, t);
36
+ }
37
+ function G(e, t) {
38
+ if (t.int) {
39
+ const s = J(e, t.maxLength || 50, t);
40
+ if (s === "" || s === "-")
41
+ return s;
42
+ const a = parseInt(s, 10);
43
+ return Number.isNaN(a) ? "" : t.min !== null && a < t.min ? String(Math.ceil(t.min)) : t.max !== null && a > t.max ? String(Math.floor(t.max)) : s;
44
+ }
45
+ const r = t.min !== null && t.min < 0, n = T(e, t.maxLength || 50, r);
46
+ if (n === "" || n === "-" || n === ".")
47
+ return n;
48
+ const i = parseFloat(n);
49
+ return Number.isNaN(i) ? "" : t.min !== null && i < t.min ? String(t.min) : t.max !== null && i > t.max ? String(t.max) : n;
50
+ }
51
+ function Z(e, t, r) {
52
+ let n = "";
53
+ return String(e || "").split("").forEach((i) => {
54
+ if (n.length >= t)
55
+ return;
56
+ const s = n + i;
57
+ r.test(s) && (n = s);
58
+ }), n;
59
+ }
60
+ function L(e) {
61
+ return e ? e.tagName === "INPUT" || e.tagName === "TEXTAREA" ? e : e.querySelector("input, textarea") : null;
62
+ }
63
+ function $(e, t) {
64
+ if (!e)
65
+ return;
66
+ const r = U(t);
67
+ let n = e.value || "";
68
+ t.modifiers.range ? n = G(n, r) : t.modifiers.number ? n = T(n, r.maxLength) : t.modifiers.regex && r.pattern ? n = Z(n, r.maxLength, r.pattern) : n = String(n).slice(0, r.maxLength), n !== e.value && (e.value = n, e.dispatchEvent(new Event("input", { bubbles: !0 })));
69
+ }
70
+ function Q(e, t) {
71
+ const r = L(e);
72
+ if (!r)
73
+ return;
74
+ let n = !1;
75
+ const i = () => {
76
+ n = !0;
77
+ }, s = () => {
78
+ n = !1, $(r, t);
79
+ }, a = () => {
80
+ n || $(r, t);
81
+ };
82
+ r.addEventListener("compositionstart", i), r.addEventListener("compositionend", s), r.addEventListener("input", a), $(r, t), e.__nsLengthHandlers = {
83
+ inputEl: r,
84
+ handleCompositionStart: i,
85
+ handleCompositionEnd: s,
86
+ handleInput: a
87
+ };
88
+ }
89
+ function ee(e) {
90
+ const t = e.__nsLengthHandlers;
91
+ t && (t.inputEl.removeEventListener("compositionstart", t.handleCompositionStart), t.inputEl.removeEventListener("compositionend", t.handleCompositionEnd), t.inputEl.removeEventListener("input", t.handleInput), delete e.__nsLengthHandlers);
92
+ }
93
+ function O(e) {
94
+ e.directive("sline", {
95
+ inserted(t) {
96
+ t.style.whiteSpace = "nowrap", t.style.overflow = "hidden", t.style.textOverflow = "ellipsis", t.style.display = "inline-block", t.style.maxWidth = "100%";
97
+ }
98
+ }), e.directive("permission", {
99
+ inserted(t, r) {
100
+ let n = [];
101
+ try {
102
+ n = JSON.parse(sessionStorage.getItem("btnsPermission") || localStorage.getItem("btnsPermission") || "[]");
103
+ } catch {
104
+ n = [];
105
+ }
106
+ Array.isArray(n) || (n = []);
107
+ const i = r.modifiers.class ? "class" : "id", s = !!r.modifiers.display;
108
+ (i === "class" ? n.some((l) => t.classList.contains(l)) : n.includes(t.getAttribute("id"))) || (s ? t.style.display = "none" : (t.style.visibility = "hidden", t.style.pointerEvents = "none"));
109
+ }
110
+ }), e.directive("length", {
111
+ inserted(t, r) {
112
+ Q(t, r);
113
+ },
114
+ componentUpdated(t, r) {
115
+ const n = L(t);
116
+ $(n, r);
117
+ },
118
+ unbind(t) {
119
+ ee(t);
120
+ }
121
+ }), e.directive("event-unuse", {
122
+ inserted(t) {
123
+ t.style.pointerEvents = "none";
124
+ }
125
+ }), e.directive("event-use", {
126
+ inserted(t) {
127
+ t.style.pointerEvents = "auto";
128
+ }
129
+ });
130
+ }
131
+ let b = class {
132
+ };
133
+ b.VARS = {};
134
+ function V() {
135
+ if (typeof document > "u" || Object.keys(b.VARS).length > 0)
136
+ return b.VARS;
137
+ const e = {};
138
+ return Array.from(document.styleSheets || []).forEach((t) => {
139
+ let r = [];
140
+ try {
141
+ r = Array.from(t.cssRules || []);
142
+ } catch {
143
+ r = [];
144
+ }
145
+ r.forEach((n) => {
146
+ n.selectorText === ":root" && Array.from(n.style || []).filter((i) => i.indexOf("--matrix-") === 0).forEach((i) => {
147
+ e[i] = n.style.getPropertyValue(i).trim();
148
+ });
149
+ });
150
+ }), b.VARS = e, e;
151
+ }
152
+ function te(e) {
153
+ return typeof e != "string" ? e : e.indexOf("-") > -1 ? e.toLowerCase() : e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
154
+ }
155
+ function re(e) {
156
+ return e ? typeof e == "string" ? te(e) : e : "span";
157
+ }
158
+ function ne(e, t) {
159
+ if (!e || t === "default")
160
+ return e;
161
+ const r = e.data || (e.data = {});
162
+ return r.slot = t, e;
163
+ }
164
+ function ie(e, t) {
165
+ return e ? (Array.isArray(e) ? e : [e]).map((n) => ne(n, t)).filter(Boolean) : [];
166
+ }
167
+ function g(e, t) {
168
+ const r = String(typeof e == "string" ? e : e && e.name ? e.name : "").replace(/-/g, "").toLowerCase();
169
+ return t.some((n) => r === n.toLowerCase());
170
+ }
171
+ const se = {
172
+ name: "NsFormFieldRenderer",
173
+ inheritAttrs: !1,
174
+ props: {
175
+ field: {
176
+ type: Object,
177
+ required: !0
178
+ },
179
+ value: {
180
+ default: void 0
181
+ }
182
+ },
183
+ mounted() {
184
+ this.emitRef();
185
+ },
186
+ updated() {
187
+ this.emitRef();
188
+ },
189
+ methods: {
190
+ emitRef() {
191
+ this.$emit("ref", this.$refs.control || null);
192
+ },
193
+ getComponent() {
194
+ return re(this.field.component);
195
+ },
196
+ isUpload() {
197
+ return g(this.field.component, ["elupload"]);
198
+ },
199
+ rendersOptionsByChildren() {
200
+ return g(this.field.component, ["elselect", "elradiogroup", "elcheckboxgroup"]);
201
+ },
202
+ isFullWidthComponent() {
203
+ return g(this.field.component, [
204
+ "elinput",
205
+ "elselect",
206
+ "elcascader",
207
+ "eldatepicker",
208
+ "eltimepicker",
209
+ "elinputnumber",
210
+ "elautocomplete"
211
+ ]);
212
+ },
213
+ buildProps() {
214
+ const e = this.field.params || {}, t = {};
215
+ return Object.keys(e).forEach((r) => {
216
+ r.indexOf("v-") !== 0 && (r === "rules" || r === "style" || r === "options" && this.rendersOptionsByChildren() || (t[r] = e[r]));
217
+ }), this.isUpload() || (t.value = this.value), t;
218
+ },
219
+ buildStyle() {
220
+ const e = this.field.params || {}, t = {
221
+ ...this.field.style || {},
222
+ ...e.style || {}
223
+ };
224
+ return this.isFullWidthComponent() && t.width === void 0 && (t.width = "100%"), t;
225
+ },
226
+ buildDirectives() {
227
+ const e = this.field.params || {};
228
+ return Object.keys(e).filter((t) => t.indexOf("v-") === 0).map((t) => {
229
+ const [, r] = t.split("v-"), [n, ...i] = r.split("."), s = {};
230
+ return i.forEach((a) => {
231
+ s[a] = !0;
232
+ }), {
233
+ name: n,
234
+ value: e[t],
235
+ modifiers: s
236
+ };
237
+ });
238
+ },
239
+ buildEvents() {
240
+ const e = this.field.events || {}, t = {};
241
+ if (Object.keys(e).forEach((r) => {
242
+ t[r] = (...n) => {
243
+ e[r](...n);
244
+ };
245
+ }), !this.isUpload()) {
246
+ const r = t.input;
247
+ t.input = (n, ...i) => {
248
+ this.$emit("input", n), r && r(n, ...i);
249
+ };
250
+ }
251
+ return t;
252
+ },
253
+ buildScopedSlots() {
254
+ const e = this.field.slots || {}, t = {};
255
+ return Object.keys(e).forEach((r) => {
256
+ typeof e[r] == "function" && (t[r] = (n) => e[r](n));
257
+ }), t;
258
+ },
259
+ renderOptionNodes(e) {
260
+ const r = (this.field.params || {}).options || [], n = this.getComponent();
261
+ return !Array.isArray(r) || r.length === 0 ? [] : g(n, ["elselect"]) ? r.map(
262
+ (i, s) => e("el-option", {
263
+ key: i.value !== void 0 ? i.value : s,
264
+ props: {
265
+ label: i.label,
266
+ value: i.value,
267
+ disabled: i.disabled
268
+ }
269
+ })
270
+ ) : g(n, ["elradiogroup"]) ? r.map(
271
+ (i, s) => e(
272
+ "el-radio",
273
+ {
274
+ key: i.value !== void 0 ? i.value : s,
275
+ props: {
276
+ label: i.value,
277
+ disabled: i.disabled
278
+ }
279
+ },
280
+ [i.label]
281
+ )
282
+ ) : g(n, ["elcheckboxgroup"]) ? r.map(
283
+ (i, s) => e(
284
+ "el-checkbox",
285
+ {
286
+ key: i.value !== void 0 ? i.value : s,
287
+ props: {
288
+ label: i.value,
289
+ disabled: i.disabled
290
+ }
291
+ },
292
+ [i.label]
293
+ )
294
+ ) : [];
295
+ }
296
+ },
297
+ render(e) {
298
+ const t = this.getComponent(), r = [], n = this.field.slots || {};
299
+ return Object.keys(n).forEach((i) => {
300
+ typeof n[i] == "function" && r.push(...ie(n[i]({ field: this.field, value: this.value }), i));
301
+ }), e(
302
+ t,
303
+ {
304
+ ref: "control",
305
+ props: this.buildProps(),
306
+ style: this.buildStyle(),
307
+ on: this.buildEvents(),
308
+ directives: this.buildDirectives(),
309
+ scopedSlots: this.buildScopedSlots()
310
+ },
311
+ [...this.renderOptionNodes(e), ...r]
312
+ );
313
+ }
314
+ };
315
+ function K(e) {
316
+ return Array.isArray(e) || e === 0 || e === "0" ? !0 : !(e === "" || e === null || typeof e > "u" || e === "null" || e === "undefined" || String(e).trim() === "" || String(e).trim() === "undefined");
317
+ }
318
+ function y(e, t, r, n, i, s, a, l) {
319
+ var o = typeof e == "function" ? e.options : e;
320
+ t && (o.render = t, o.staticRenderFns = r, o._compiled = !0), n && (o.functional = !0), s && (o._scopeId = "data-v-" + s);
321
+ var c;
322
+ if (a ? (c = function(d) {
323
+ d = d || // cached call
324
+ this.$vnode && this.$vnode.ssrContext || // stateful
325
+ this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext, !d && typeof __VUE_SSR_CONTEXT__ < "u" && (d = __VUE_SSR_CONTEXT__), i && i.call(this, d), d && d._registeredComponents && d._registeredComponents.add(a);
326
+ }, o._ssrRegister = c) : i && (c = l ? function() {
327
+ i.call(
328
+ this,
329
+ (o.functional ? this.parent : this).$root.$options.shadowRoot
330
+ );
331
+ } : i), c)
332
+ if (o.functional) {
333
+ o._injectStyles = c;
334
+ var u = o.render;
335
+ o.render = function(x, p) {
336
+ return c.call(p), u(x, p);
337
+ };
338
+ } else {
339
+ var h = o.beforeCreate;
340
+ o.beforeCreate = h ? [].concat(h, c) : [c];
341
+ }
342
+ return {
343
+ exports: e,
344
+ options: o
345
+ };
346
+ }
347
+ function f(e) {
348
+ if (e === null || typeof e != "object")
349
+ return e;
350
+ if (Array.isArray(e))
351
+ return e.map((r) => f(r));
352
+ const t = {};
353
+ return Object.keys(e).forEach((r) => {
354
+ t[r] = f(e[r]);
355
+ }), t;
356
+ }
357
+ function v(e) {
358
+ return String(typeof e == "string" ? e : e && e.name ? e.name : "").replace(/-/g, "").toLowerCase();
359
+ }
360
+ const ae = {
361
+ name: "NsForm",
362
+ components: {
363
+ FormFieldRenderer: se
364
+ },
365
+ props: {
366
+ model: {
367
+ type: String,
368
+ default: ""
369
+ },
370
+ readOnly: {
371
+ type: Boolean,
372
+ default: !1
373
+ },
374
+ labelWidth: {
375
+ type: String,
376
+ default: "80px"
377
+ },
378
+ superLabelWidth: {
379
+ type: String,
380
+ default: "30px"
381
+ },
382
+ labelColor: {
383
+ type: String,
384
+ default: "#0A7BFF"
385
+ },
386
+ gapH: {
387
+ type: String,
388
+ default: "10px"
389
+ },
390
+ gapV: {
391
+ type: String,
392
+ default: "10px"
393
+ },
394
+ height: {
395
+ type: String,
396
+ default: "32px"
397
+ },
398
+ rows: {
399
+ type: Array,
400
+ default: () => []
401
+ },
402
+ backgroundColor: {
403
+ type: String,
404
+ default: ""
405
+ },
406
+ valueEmptyTag: {
407
+ type: String,
408
+ default: "--"
409
+ },
410
+ formPropKey: {
411
+ type: String,
412
+ default: "rows"
413
+ },
414
+ hasPoint: {
415
+ type: Boolean,
416
+ default: !1
417
+ }
418
+ },
419
+ data() {
420
+ return {
421
+ componentRefs: {}
422
+ };
423
+ },
424
+ computed: {
425
+ formClassList() {
426
+ return {
427
+ "is-vertical": this.model.indexOf("vertical") > -1,
428
+ "is-table": this.model.indexOf("table") > -1,
429
+ "is-readonly": this.readOnly
430
+ };
431
+ },
432
+ wrapperStyle() {
433
+ return {
434
+ "--ns-form-label-width": this.normalizeSize(this.labelWidth),
435
+ "--ns-form-super-label-width": this.normalizeSize(this.superLabelWidth),
436
+ "--ns-form-label-color": this.labelColor,
437
+ "--ns-form-row-gap": this.gapV,
438
+ "--ns-form-col-gap": this.gapH,
439
+ "--ns-form-item-height": this.normalizeSize(this.height),
440
+ "--ns-form-background-color": this.backgroundColor || "#ffffff"
441
+ };
442
+ },
443
+ rowStyle() {
444
+ return {
445
+ marginBottom: this.model.indexOf("table") > -1 ? "0" : this.gapV
446
+ };
447
+ },
448
+ labelStyle() {
449
+ return {
450
+ width: this.normalizeSize(this.labelWidth),
451
+ color: this.labelColor
452
+ };
453
+ },
454
+ groupLabelStyle() {
455
+ return {
456
+ width: this.normalizeSize(this.superLabelWidth),
457
+ color: this.labelColor
458
+ };
459
+ },
460
+ valueStyle() {
461
+ return {
462
+ minHeight: this.normalizeSize(this.height)
463
+ };
464
+ }
465
+ },
466
+ watch: {
467
+ rows: {
468
+ handler(e) {
469
+ this.initializeDefaultValues(e);
470
+ },
471
+ deep: !0,
472
+ immediate: !0
473
+ }
474
+ },
475
+ methods: {
476
+ walkFields(e) {
477
+ (this.rows || []).forEach((t, r) => {
478
+ (t || []).forEach((n, i) => {
479
+ e(n, r, i, null, null), (n.children || []).forEach((s, a) => {
480
+ e(s, r, i, a, n);
481
+ });
482
+ });
483
+ });
484
+ },
485
+ initializeDefaultValues(e) {
486
+ (e || []).forEach((t) => {
487
+ (t || []).forEach((r) => {
488
+ r && r.key && r.defaultValue === void 0 && this.$set(r, "defaultValue", f(r.value)), (r.children || []).forEach((n) => {
489
+ n && n.key && n.defaultValue === void 0 && this.$set(n, "defaultValue", f(n.value));
490
+ });
491
+ });
492
+ });
493
+ },
494
+ normalizeSize(e) {
495
+ return e == null || e === "" ? "" : /^\d+$/.test(String(e)) ? `${e}px` : String(e);
496
+ },
497
+ hasChildren(e) {
498
+ return Array.isArray(e.children) && e.children.length > 0;
499
+ },
500
+ getItemStyle(e, t) {
501
+ if (e.span === 0)
502
+ return { display: "none" };
503
+ if (typeof e.span == "string" && e.span.indexOf("%") > -1)
504
+ return {
505
+ flex: `0 0 ${e.span}`,
506
+ maxWidth: e.span
507
+ };
508
+ if (e.span !== void 0 && e.span !== null && e.span !== "") {
509
+ const i = Number(e.span);
510
+ if (!Number.isNaN(i)) {
511
+ const s = i > 24 ? `${i}px` : `${i / 24 * 100}%`;
512
+ return {
513
+ flex: `0 0 ${s}`,
514
+ maxWidth: s
515
+ };
516
+ }
517
+ }
518
+ const n = `calc(${100 / ((t || []).filter((i) => i && i.span !== 0).length || 1)}% - ${this.gapH})`;
519
+ return {
520
+ flex: `0 0 ${n}`,
521
+ maxWidth: n
522
+ };
523
+ },
524
+ getFieldRules(e) {
525
+ return this.readOnly ? [] : e.params && e.params.rules || [];
526
+ },
527
+ isRequiredField(e) {
528
+ return !e || this.readOnly ? !1 : typeof e.required == "boolean" ? e.required : this.getFieldRules(e).some((t) => t && t.required);
529
+ },
530
+ getFieldRequired(e) {
531
+ return !e || this.readOnly ? !1 : e && typeof e.required == "boolean" ? e.required : void 0;
532
+ },
533
+ updateFieldValue(e, t) {
534
+ this.$set(e, "value", t);
535
+ },
536
+ setComponentRef(e, t) {
537
+ !e || !e.key || (this.$set(e, "ref", t), this.$set(this.componentRefs, e.key, t));
538
+ },
539
+ showReadOnlyText(e) {
540
+ return this.readOnly && !(e && e.readOnlyUseComponent);
541
+ },
542
+ normalizeDisplayValue(e, t) {
543
+ return K(e) ? Array.isArray(e) ? e.join(",") : e : t && t.valueEmptyTag || this.valueEmptyTag;
544
+ },
545
+ getReadOnlyDisplayValue(e) {
546
+ var t, r, n;
547
+ return e ? typeof ((t = e.params) == null ? void 0 : t.formatter) == "function" ? e.params.formatter(e.value, e) || this.valueEmptyTag : K(e.value) ? this.isUploadComponent(e) ? (e.value || []).map((i) => i.fileName || i.name || i.filePath).filter(Boolean).join(",") || e.valueEmptyTag || this.valueEmptyTag : this.isSwitchComponent(e) ? e.value ? ((r = e.params) == null ? void 0 : r.activeText) || "是" : ((n = e.params) == null ? void 0 : n.inactiveText) || "否" : this.isSelectLikeComponent(e) ? this.getOptionDisplayText(e) : this.isCascaderComponent(e) ? this.getCascaderDisplayValue(e) : Array.isArray(e.value) ? e.value.join(",") : e.value : e.valueEmptyTag || this.valueEmptyTag : this.valueEmptyTag;
548
+ },
549
+ getOptionDisplayText(e) {
550
+ var s;
551
+ const t = ((s = e.params) == null ? void 0 : s.options) || [], r = e.value;
552
+ return (Array.isArray(r) ? r : typeof r == "string" && r.indexOf(",") > -1 ? r.split(",").filter(Boolean) : [r]).map((a) => {
553
+ const l = t.find((o) => o.value === a);
554
+ return l ? l.label : a;
555
+ }).filter((a) => a != null && a !== "").join(",") || e.valueEmptyTag || this.valueEmptyTag;
556
+ },
557
+ getCascaderDisplayValue(e) {
558
+ var a, l, o, c;
559
+ const t = e.params || {}, r = t.options || [], n = {
560
+ value: ((a = t.props) == null ? void 0 : a.value) || "value",
561
+ label: ((l = t.props) == null ? void 0 : l.label) || "label",
562
+ children: ((o = t.props) == null ? void 0 : o.children) || "children",
563
+ multiple: !!((c = t.props) != null && c.multiple),
564
+ separator: t.separator || " / "
565
+ }, i = (u) => Array.isArray(u) ? u : typeof u == "string" && u.indexOf(",") > -1 ? u.split(",").filter(Boolean) : [u], s = (u) => {
566
+ const h = [];
567
+ let d = r;
568
+ return i(u).forEach((x) => {
569
+ const p = (d || []).find((q) => q[n.value] === x);
570
+ p && (h.push(p[n.label]), d = p[n.children]);
571
+ }), h.join(n.separator);
572
+ };
573
+ return n.multiple && Array.isArray(e.value) && Array.isArray(e.value[0]) ? e.value.map((u) => s(u)).join(",") : s(e.value);
574
+ },
575
+ isSelectLikeComponent(e) {
576
+ return ["elselect", "elradiogroup", "elcheckboxgroup"].includes(v(e.component));
577
+ },
578
+ isSwitchComponent(e) {
579
+ return v(e.component) === "elswitch";
580
+ },
581
+ isCascaderComponent(e) {
582
+ return v(e.component) === "elcascader";
583
+ },
584
+ isUploadComponent(e) {
585
+ return v(e.component) === "elupload";
586
+ },
587
+ getFormNodeByKey(e) {
588
+ for (let t = 0; t < this.rows.length; t += 1) {
589
+ const r = this.rows[t];
590
+ for (let n = 0; n < r.length; n += 1) {
591
+ const i = r[n];
592
+ if (i.key === e)
593
+ return i;
594
+ for (let s = 0; s < (i.children || []).length; s += 1) {
595
+ const a = i.children[s];
596
+ if (a.key === e)
597
+ return a;
598
+ }
599
+ }
600
+ }
601
+ return null;
602
+ },
603
+ getFormNodeRefByKey(e) {
604
+ return this.componentRefs[e] || null;
605
+ },
606
+ getFormKvData() {
607
+ const e = {};
608
+ return this.walkFields((t) => {
609
+ !t || !t.key || (e[t.key] = Array.isArray(t.value) && Array.isArray(t.delValue) ? t.value.concat(t.delValue) : t.value);
610
+ }), e;
611
+ },
612
+ resetForm(e = !1) {
613
+ this.walkFields((t) => {
614
+ var i, s;
615
+ if (!t || !t.key)
616
+ return;
617
+ const r = f(t.value), n = t.defaultValue !== void 0 ? f(t.defaultValue) : Array.isArray(t.value) ? [] : typeof t.value == "boolean" ? !1 : typeof t.value == "number" ? 0 : "";
618
+ this.$set(t, "value", n), t.delValue !== void 0 && this.$set(t, "delValue", []), t.params && Array.isArray(t.params.fileList) && t.params.fileList.splice(0, t.params.fileList.length), e && JSON.stringify(r) !== JSON.stringify(n) && (typeof ((i = t.events) == null ? void 0 : i.change) == "function" && this.$nextTick(() => t.events.change(n)), typeof ((s = t.events) == null ? void 0 : s.input) == "function" && this.$nextTick(() => t.events.input(n)));
619
+ });
620
+ },
621
+ setFormData(e) {
622
+ !e || typeof e != "object" || this.walkFields((t) => {
623
+ if (!t || !t.key || !Object.prototype.hasOwnProperty.call(e, t.key))
624
+ return;
625
+ let r = f(e[t.key]);
626
+ if (this.isCascaderComponent(t) && typeof r == "string" && r.indexOf(",") > -1 && (r = r.split(",").filter(Boolean)), this.$set(t, "value", r), this.isUploadComponent(t)) {
627
+ const n = Array.isArray(r) ? f(r) : [];
628
+ t.params && this.$set(t.params, "fileList", n);
629
+ }
630
+ });
631
+ },
632
+ initDefaultValues() {
633
+ this.initializeDefaultValues(this.rows);
634
+ }
635
+ }
636
+ };
637
+ var le = function() {
638
+ var t = this, r = t._self._c;
639
+ return t.rows && t.rows.length ? r("div", { staticClass: "ns-dynamic-form", class: t.formClassList, style: t.wrapperStyle }, t._l(t.rows, function(n, i) {
640
+ return r("div", { key: `row-${i}`, staticClass: "ns-dynamic-form__row", style: t.rowStyle }, t._l(n, function(s, a) {
641
+ return r("div", { key: s.key || `${i}-${a}`, staticClass: "ns-dynamic-form__item", class: { "has-children": t.hasChildren(s) }, style: t.getItemStyle(s, n) }, [t.hasChildren(s) ? [!s.hideLabel && s.label ? r("div", { staticClass: "ns-dynamic-form__group-label", style: t.groupLabelStyle }, [t._v(" " + t._s(s.label) + " ")]) : t._e(), r("div", { staticClass: "ns-dynamic-form__children" }, t._l(s.children, function(l, o) {
642
+ return r("div", { key: l.key || `${i}-${a}-${o}`, staticClass: "ns-dynamic-form__child" }, [!l.hideLabel && l.label ? r("div", { staticClass: "ns-dynamic-form__label", class: { "has-point": t.hasPoint || t.isRequiredField(l) }, style: t.labelStyle }, [t._v(" " + t._s(l.label) + " ")]) : t._e(), r("div", { staticClass: "ns-dynamic-form__value", style: t.valueStyle }, [t.showReadOnlyText(l) ? [r("span", { directives: [{ name: "sline", rawName: "v-sline" }] }, [t._v(t._s(t.getReadOnlyDisplayValue(l)))])] : l.component ? [r("el-form-item", { staticClass: "ns-dynamic-form__form-item", attrs: { "label-width": "0px", prop: `${t.formPropKey}.${i}.${a}.children.${o}.value`, rules: t.getFieldRules(l), required: t.getFieldRequired(l) } }, [r("form-field-renderer", { attrs: { field: l, value: l.value }, on: { input: function(c) {
643
+ return t.updateFieldValue(l, c);
644
+ }, ref: function(c) {
645
+ return t.setComponentRef(l, c);
646
+ } } })], 1)] : [r("span", { directives: [{ name: "sline", rawName: "v-sline" }] }, [t._v(t._s(t.normalizeDisplayValue(l.value, l)))])]], 2)]);
647
+ }), 0)] : [!s.hideLabel && s.label ? r("div", { staticClass: "ns-dynamic-form__label", class: { "has-point": t.hasPoint || t.isRequiredField(s) }, style: t.labelStyle }, [t._v(" " + t._s(s.label) + " ")]) : t._e(), r("div", { staticClass: "ns-dynamic-form__value", style: t.valueStyle }, [t.showReadOnlyText(s) ? [r("span", { directives: [{ name: "sline", rawName: "v-sline" }] }, [t._v(t._s(t.getReadOnlyDisplayValue(s)))])] : s.component ? [r("el-form-item", { staticClass: "ns-dynamic-form__form-item", attrs: { "label-width": "0px", prop: `${t.formPropKey}.${i}.${a}.value`, rules: t.getFieldRules(s), required: t.getFieldRequired(s) } }, [r("form-field-renderer", { attrs: { field: s, value: s.value }, on: { input: function(l) {
648
+ return t.updateFieldValue(s, l);
649
+ }, ref: function(l) {
650
+ return t.setComponentRef(s, l);
651
+ } } })], 1)] : [r("span", { directives: [{ name: "sline", rawName: "v-sline" }] }, [t._v(t._s(t.normalizeDisplayValue(s.value, s)))])]], 2)]], 2);
652
+ }), 0);
653
+ }), 0) : t._e();
654
+ }, oe = [], ue = /* @__PURE__ */ y(
655
+ ae,
656
+ le,
657
+ oe,
658
+ !1,
659
+ null,
660
+ "4efb4504",
661
+ null,
662
+ null
663
+ );
664
+ const _ = ue.exports;
665
+ class S {
666
+ }
667
+ S.VARS = {};
668
+ function ce() {
669
+ if (typeof document > "u" || Object.keys(S.VARS).length > 0)
670
+ return S.VARS;
671
+ const e = {};
672
+ return Array.from(document.styleSheets || []).forEach((t) => {
673
+ let r = [];
674
+ try {
675
+ r = Array.from(t.cssRules || []);
676
+ } catch {
677
+ r = [];
678
+ }
679
+ r.forEach((n) => {
680
+ n.selectorText === ":root" && Array.from(n.style || []).filter((i) => i.indexOf("--matrix-") === 0).forEach((i) => {
681
+ e[i] = n.style.getPropertyValue(i).trim();
682
+ });
683
+ });
684
+ }), S.VARS = e, e;
685
+ }
686
+ const de = {
687
+ name: "NsFormTitle",
688
+ props: {
689
+ title: {
690
+ type: String,
691
+ default: ""
692
+ }
693
+ },
694
+ mounted() {
695
+ ce();
696
+ }
697
+ };
698
+ var he = function() {
699
+ var t = this, r = t._self._c;
700
+ return r("div", { staticClass: "ns-form-title" }, [r("div", { staticClass: "ns-form-title__header" }, [t._t("title", function() {
701
+ return [r("span", { staticClass: "ns-form-title__icon" }), r("span", { staticClass: "ns-form-title__text" }, [t._v(t._s(t.title))])];
702
+ })], 2), r("div", { staticClass: "ns-form-title__content" }, [t._t("default")], 2)]);
703
+ }, fe = [], pe = /* @__PURE__ */ y(
704
+ de,
705
+ he,
706
+ fe,
707
+ !1,
708
+ null,
709
+ "4e159c2c",
710
+ null,
711
+ null
712
+ );
713
+ const k = pe.exports;
714
+ function ge(e) {
715
+ var t;
716
+ return ((t = e == null ? void 0 : e.proxy) == null ? void 0 : t.$ImageBaseUrl) || "";
717
+ }
718
+ function me(e, t, r = "rows") {
719
+ for (let n = 0; n < e.length; n += 1) {
720
+ const i = e[n];
721
+ for (let s = 0; s < i.length; s += 1) {
722
+ const a = i[s];
723
+ if (a.key === t)
724
+ return `${r}.${n}.${s}.value`;
725
+ if (Array.isArray(a.children)) {
726
+ for (let l = 0; l < a.children.length; l += 1)
727
+ if (a.children[l].key === t)
728
+ return `${r}.${n}.${s}.children.${l}.value`;
729
+ }
730
+ }
731
+ }
732
+ return null;
733
+ }
734
+ function ye(e) {
735
+ const t = X();
736
+ function r(a, l) {
737
+ const o = ge(t), c = Array.isArray(l) ? l : [];
738
+ return c.forEach((u) => {
739
+ u.filePath && !u.url && (u.url = `${o}${u.filePath}`), u.name || (u.name = u.fileName || u.name || u.filePath || "未命名文件");
740
+ }), a && a.params && (a.params.fileList = c), a && (a.value = c.slice()), c;
741
+ }
742
+ function n(a, l, o, c = e.rows) {
743
+ const u = m(c, o);
744
+ if (!u)
745
+ return l;
746
+ const h = (l || []).map((d) => ({
747
+ ...d,
748
+ fileName: d.response ? d.response.data.fileName : d.fileName,
749
+ filePath: d.response ? d.response.data.filePath : d.filePath,
750
+ fileSize: d.response ? d.response.data.fileSize : d.fileSize
751
+ }));
752
+ return Array.isArray(u.delValue) || (u.delValue = []), !a.response && a.status === "success" && u.delValue.push({ ...a, isDelete: 1 }), u.value = h, u.params && (u.params.fileList = l || []), l;
753
+ }
754
+ function i(a, l, o, c, u = e.rows) {
755
+ const h = m(u, c);
756
+ return h && (Array.isArray(h.value) || (h.value = []), l && l.status === "success" && a && a.data && h.value.push({ ...a.data }), h.params && (h.params.fileList = o || [])), o;
757
+ }
758
+ function s(a, l, o, c = "rows") {
759
+ const u = m(a, l);
760
+ u && !Array.isArray(u.value) && (u.value = []);
761
+ const h = me(a, l, c);
762
+ Y(() => {
763
+ const d = o && (o.value || o);
764
+ h && d && typeof d.validateField == "function" && d.validateField(h);
765
+ });
766
+ }
767
+ return {
768
+ handleFormatFileList: r,
769
+ handleRemoveFile: n,
770
+ handleFileSuccessFile: i,
771
+ handleCheckFileRequire: s
772
+ };
773
+ }
774
+ function I(e) {
775
+ e.install = function(r) {
776
+ r.component(e.name, e);
777
+ };
778
+ }
779
+ I(_);
780
+ I(k);
781
+ const be = _.install;
782
+ _.install = function(t) {
783
+ O(t), be(t);
784
+ };
785
+ function B(e) {
786
+ const t = {};
787
+ return (e || []).forEach((r) => {
788
+ (r || []).forEach((n) => {
789
+ n && n.key && (t[n.key] = Array.isArray(n.value) && Array.isArray(n.delValue) ? n.value.concat(n.delValue) : n.value), (n.children || []).forEach((i) => {
790
+ i && i.key && (t[i.key] = Array.isArray(i.value) && Array.isArray(i.delValue) ? i.value.concat(i.delValue) : i.value);
791
+ });
792
+ });
793
+ }), t;
794
+ }
795
+ function m(e, t) {
796
+ for (let r = 0; r < (e || []).length; r += 1) {
797
+ const n = e[r] || [];
798
+ for (let i = 0; i < n.length; i += 1) {
799
+ const s = n[i];
800
+ if (s && s.key === t)
801
+ return s;
802
+ const a = s && s.children || [];
803
+ for (let l = 0; l < a.length; l += 1)
804
+ if (a[l] && a[l].key === t)
805
+ return a[l];
806
+ }
807
+ }
808
+ return null;
809
+ }
810
+ function M(e, t) {
811
+ const r = m(e, t);
812
+ return r && r.ref || null;
813
+ }
814
+ typeof globalThis < "u" && (globalThis.getAllFormKvData = B, globalThis.getAllFormNodeByKey = m, globalThis.getAllFormNodeRefByKey = M);
815
+ const j = {
816
+ name: "NsSlotRenderer",
817
+ functional: !0,
818
+ props: {
819
+ renderer: {
820
+ type: Function,
821
+ default: null
822
+ },
823
+ scope: {
824
+ type: Object,
825
+ default: () => ({})
826
+ }
827
+ },
828
+ render(e, t) {
829
+ const r = t.props.renderer;
830
+ return r ? r(t.props.scope || {}) : null;
831
+ }
832
+ };
833
+ function Se(e) {
834
+ return typeof e != "string" ? e : e.indexOf("-") > -1 ? e.toLowerCase() : e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
835
+ }
836
+ const _e = {
837
+ name: "NsSearch",
838
+ components: {
839
+ SlotRenderer: j
840
+ },
841
+ inheritAttrs: !1,
842
+ props: {
843
+ items: {
844
+ type: Array,
845
+ default: () => []
846
+ },
847
+ externalParams: {
848
+ type: Object,
849
+ default: () => ({})
850
+ },
851
+ defaultSpan: {
852
+ type: Number,
853
+ default: 6
854
+ },
855
+ showCollapse: {
856
+ type: Boolean,
857
+ default: !0
858
+ },
859
+ collapseLimit: {
860
+ type: Number,
861
+ default: 3
862
+ },
863
+ slotRenderers: {
864
+ type: Object,
865
+ default: () => ({})
866
+ }
867
+ },
868
+ data() {
869
+ return {
870
+ formData: {},
871
+ isCollapsed: !0
872
+ };
873
+ },
874
+ computed: {
875
+ visibleItems() {
876
+ return !this.showCollapse || !this.isCollapsed ? this.items : this.items.slice(0, this.collapseLimit);
877
+ }
878
+ },
879
+ watch: {
880
+ items: {
881
+ handler() {
882
+ this.initFormData();
883
+ },
884
+ deep: !0,
885
+ immediate: !0
886
+ },
887
+ externalParams: {
888
+ handler() {
889
+ this.formData = {
890
+ ...this.formData,
891
+ ...this.externalParams
892
+ };
893
+ },
894
+ deep: !0,
895
+ immediate: !0
896
+ }
897
+ },
898
+ methods: {
899
+ normalizeComponent(e) {
900
+ return typeof e == "string" ? Se(e) : e;
901
+ },
902
+ initFormData() {
903
+ const e = {};
904
+ (this.items || []).forEach((t) => {
905
+ e[t.prop] = t.defaultValue !== void 0 ? t.defaultValue : void 0;
906
+ }), this.formData = {
907
+ ...e,
908
+ ...this.externalParams
909
+ };
910
+ },
911
+ isSlotItem(e) {
912
+ return e && (e.type === "slot" || e.slot === !0 || typeof e.slot == "string");
913
+ },
914
+ getSlotRenderer(e) {
915
+ const t = typeof e.slot == "string" ? e.slot : e.slotName || e.prop;
916
+ return this.slotRenderers[t] || null;
917
+ },
918
+ isSelectComponent(e) {
919
+ return String(this.normalizeComponent(e.component || "") || "") === "el-select";
920
+ },
921
+ handleSearch() {
922
+ this.$emit("search", { ...this.formData, _resetPage: !0 });
923
+ },
924
+ handleReset() {
925
+ const e = {};
926
+ (this.items || []).forEach((t) => {
927
+ e[t.prop] = t.defaultValue !== void 0 ? t.defaultValue : void 0;
928
+ }), this.formData = {
929
+ ...e,
930
+ ...this.externalParams
931
+ }, this.$emit("search", { ...this.formData, _resetPage: !0 }), this.$emit("reset");
932
+ },
933
+ toggleCollapse() {
934
+ this.isCollapsed = !this.isCollapsed;
935
+ },
936
+ getFormData() {
937
+ return { ...this.formData };
938
+ },
939
+ setFormData(e) {
940
+ this.formData = {
941
+ ...this.formData,
942
+ ...e || {}
943
+ };
944
+ },
945
+ resetForm() {
946
+ this.handleReset();
947
+ },
948
+ validate() {
949
+ return this.$refs.formRef && this.$refs.formRef.validate ? this.$refs.formRef.validate() : Promise.resolve(!0);
950
+ },
951
+ clearValidate(e) {
952
+ this.$refs.formRef && this.$refs.formRef.clearValidate && this.$refs.formRef.clearValidate(e);
953
+ }
954
+ }
955
+ };
956
+ var ve = function() {
957
+ var t = this, r = t._self._c;
958
+ return r("div", { staticClass: "page-search" }, [r("el-form", t._b({ ref: "formRef", staticClass: "page-search__form", attrs: { inline: !0, model: t.formData } }, "el-form", t.$attrs, !1), [r("el-row", { attrs: { gutter: 16 } }, [t._l(t.visibleItems, function(n, i) {
959
+ return r("el-col", { key: n.prop || i, attrs: { span: n.span || t.defaultSpan } }, [r("el-form-item", t._b({ attrs: { label: n.label, prop: n.prop } }, "el-form-item", n.formItemAttrs || {}, !1), [t.isSlotItem(n) ? r("slot-renderer", { attrs: { renderer: t.getSlotRenderer(n), scope: { formData: t.formData, item: n } } }) : r(t.normalizeComponent(n.component || "el-input"), t._g(t._b({ tag: "component", model: { value: t.formData[n.prop], callback: function(s) {
960
+ t.$set(t.formData, n.prop, s);
961
+ }, expression: "formData[item.prop]" } }, "component", n.attrs || {}, !1), n.events || {}), [t.isSelectComponent(n) ? t._l(n.children || [], function(s, a) {
962
+ return r("el-option", { key: s.value !== void 0 ? s.value : a, attrs: { label: s.label, value: s.value, disabled: s.disabled } });
963
+ }) : t._e()], 2)], 1)], 1);
964
+ }), r("el-col", { staticClass: "page-search__actions", attrs: { span: t.defaultSpan } }, [r("el-form-item", { attrs: { "label-width": "0" } }, [r("el-button", { attrs: { type: "primary" }, on: { click: t.handleSearch } }, [t._v("查询")]), r("el-button", { on: { click: t.handleReset } }, [t._v("重置")]), t.showCollapse && t.items.length > t.collapseLimit ? r("el-button", { attrs: { type: "text" }, on: { click: t.toggleCollapse } }, [t._v(" " + t._s(t.isCollapsed ? "展开" : "收起") + " ")]) : t._e()], 1)], 1)], 2)], 1)], 1);
965
+ }, $e = [], Ce = /* @__PURE__ */ y(
966
+ _e,
967
+ ve,
968
+ $e,
969
+ !1,
970
+ null,
971
+ "9eea70d9",
972
+ null,
973
+ null
974
+ );
975
+ const R = Ce.exports, Re = [
976
+ "children",
977
+ "slot",
978
+ "headerSlot",
979
+ "buttons",
980
+ "enum",
981
+ "type",
982
+ "imageWidth",
983
+ "imageHeight",
984
+ "linkText"
985
+ ], H = {
986
+ name: "NsTableColumn",
987
+ props: {
988
+ column: {
989
+ type: Object,
990
+ required: !0
991
+ },
992
+ slotRenderers: {
993
+ type: Object,
994
+ default: () => ({})
995
+ }
996
+ },
997
+ methods: {
998
+ getColumnProps(e) {
999
+ const t = { ...e };
1000
+ return Re.forEach((r) => delete t[r]), t;
1001
+ },
1002
+ getRenderer(e) {
1003
+ return e ? this.slotRenderers[e] : null;
1004
+ },
1005
+ getCellValue(e, t) {
1006
+ return t.prop ? e[t.prop] : void 0;
1007
+ },
1008
+ isVisible(e, t) {
1009
+ return typeof e.show == "function" ? e.show(t) !== !1 : e.show === void 0 ? !0 : !!e.show;
1010
+ },
1011
+ isDisabled(e, t) {
1012
+ return typeof e.disabled == "function" ? !!e.disabled(t) : !!e.disabled;
1013
+ },
1014
+ renderActionButtons(e, t, r) {
1015
+ return (Array.isArray(r.buttons) ? r.buttons : []).filter((i) => this.isVisible(i, t.row)).map((i, s) => {
1016
+ const a = this.getRenderer(i.slot);
1017
+ return a ? a({ ...t, row: t.row, column: r, button: i }) : e(
1018
+ "el-button",
1019
+ {
1020
+ key: i.label || s,
1021
+ props: {
1022
+ size: i.size || "mini",
1023
+ type: i.link ? "text" : i.type || "text",
1024
+ icon: typeof i.icon == "string" ? i.icon : void 0,
1025
+ disabled: this.isDisabled(i, t.row)
1026
+ },
1027
+ on: {
1028
+ click: () => {
1029
+ typeof i.handler == "function" && i.handler(t.row, t.$index), this.$emit("button-click", t.row, r, i);
1030
+ }
1031
+ }
1032
+ },
1033
+ [i.label]
1034
+ );
1035
+ });
1036
+ },
1037
+ renderTag(e, t, r) {
1038
+ const n = this.getCellValue(t.row, r), i = typeof r.tagType == "function" ? r.tagType(t.row, n) : r.tagType, s = typeof r.formatter == "function" ? r.formatter(t.row, r, n) : this.resolveEnumText(r, n);
1039
+ return e("el-tag", { props: { type: i || "info", size: r.tagSize || "small" } }, [s]);
1040
+ },
1041
+ renderImage(e, t, r) {
1042
+ const n = this.getCellValue(t.row, r);
1043
+ return n ? e("img", {
1044
+ style: {
1045
+ width: r.imageWidth || "40px",
1046
+ height: r.imageHeight || "40px",
1047
+ objectFit: "cover",
1048
+ borderRadius: "4px"
1049
+ },
1050
+ attrs: {
1051
+ src: n,
1052
+ alt: r.label || "image"
1053
+ }
1054
+ }) : "-";
1055
+ },
1056
+ renderLink(e, t, r) {
1057
+ const n = this.getRenderer(r.slot);
1058
+ if (n)
1059
+ return n(t);
1060
+ const i = this.getCellValue(t.row, r);
1061
+ return e(
1062
+ "el-button",
1063
+ {
1064
+ props: {
1065
+ type: "text"
1066
+ },
1067
+ on: {
1068
+ click: () => this.$emit("link-click", t.row, r)
1069
+ }
1070
+ },
1071
+ [r.linkText || i || "-"]
1072
+ );
1073
+ },
1074
+ resolveEnumText(e, t) {
1075
+ const r = e.enum || e.options || [];
1076
+ if (!Array.isArray(r))
1077
+ return t;
1078
+ const n = r.find((i) => i.value === t);
1079
+ return n ? n.label : t;
1080
+ },
1081
+ renderDefaultCell(e, t, r) {
1082
+ const n = this.getRenderer(r.slot);
1083
+ if (n)
1084
+ return n(t);
1085
+ if (r.type === "action")
1086
+ return e("div", { class: "ns-table-column__actions" }, this.renderActionButtons(e, t, r));
1087
+ if (r.type === "tag")
1088
+ return this.renderTag(e, t, r);
1089
+ if (r.type === "image")
1090
+ return this.renderImage(e, t, r);
1091
+ if (r.type === "link")
1092
+ return this.renderLink(e, t, r);
1093
+ const i = this.getCellValue(t.row, r);
1094
+ return typeof r.formatter == "function" ? r.formatter(t.row, r, i) : r.enum ? this.resolveEnumText(r, i) : i == null || i === "" ? "-" : i;
1095
+ },
1096
+ renderColumn(e, t) {
1097
+ const r = Array.isArray(t.children) ? t.children.map(
1098
+ (i, s) => e(H, {
1099
+ key: i.prop || i.label || s,
1100
+ props: {
1101
+ column: i,
1102
+ slotRenderers: this.slotRenderers
1103
+ },
1104
+ on: {
1105
+ "link-click": (...a) => this.$emit("link-click", ...a),
1106
+ "button-click": (...a) => this.$emit("button-click", ...a)
1107
+ }
1108
+ })
1109
+ ) : [], n = this.getRenderer(t.headerSlot);
1110
+ return e(
1111
+ "el-table-column",
1112
+ {
1113
+ props: this.getColumnProps(t),
1114
+ scopedSlots: r.length ? n ? { header: n } : void 0 : {
1115
+ default: (i) => this.renderDefaultCell(e, i, t),
1116
+ ...n ? { header: n } : {}
1117
+ }
1118
+ },
1119
+ r
1120
+ );
1121
+ }
1122
+ },
1123
+ render(e) {
1124
+ return this.renderColumn(e, this.column);
1125
+ }
1126
+ }, we = H, xe = {
1127
+ total: 0,
1128
+ currentPage: 1,
1129
+ pageSize: 10
1130
+ }, De = {
1131
+ totalKey: "total",
1132
+ currentPageKey: "currentPage",
1133
+ pageSizeKey: "pageSize"
1134
+ };
1135
+ function E(e = {}) {
1136
+ return {
1137
+ ...xe,
1138
+ ...e
1139
+ };
1140
+ }
1141
+ function Pe(e, t = {}) {
1142
+ const r = {
1143
+ ...De,
1144
+ ...t
1145
+ };
1146
+ return {
1147
+ [r.totalKey]: e.total,
1148
+ [r.currentPageKey]: e.currentPage,
1149
+ [r.pageSizeKey]: e.pageSize
1150
+ };
1151
+ }
1152
+ function ze(e) {
1153
+ return e.total = 0, e.currentPage = 1, e.pageSize = 10, e;
1154
+ }
1155
+ const Ae = ["add", "selection-change", "sort-change", "row-click", "size-change", "current-change", "link-click"], ke = {
1156
+ name: "NsTable",
1157
+ components: {
1158
+ SlotRenderer: j,
1159
+ TableColumn: we
1160
+ },
1161
+ inheritAttrs: !1,
1162
+ props: {
1163
+ tableData: {
1164
+ type: Array,
1165
+ default: () => []
1166
+ },
1167
+ columns: {
1168
+ type: Array,
1169
+ default: () => []
1170
+ },
1171
+ actionButtons: {
1172
+ type: Array,
1173
+ default: () => []
1174
+ },
1175
+ showAddButton: {
1176
+ type: Boolean,
1177
+ default: !0
1178
+ },
1179
+ addButtonText: {
1180
+ type: String,
1181
+ default: "新增"
1182
+ },
1183
+ showHeaderToolbar: {
1184
+ type: Boolean,
1185
+ default: !0
1186
+ },
1187
+ showSelection: {
1188
+ type: Boolean,
1189
+ default: !1
1190
+ },
1191
+ showIndex: {
1192
+ type: Boolean,
1193
+ default: !1
1194
+ },
1195
+ border: {
1196
+ type: Boolean,
1197
+ default: !0
1198
+ },
1199
+ stripe: {
1200
+ type: Boolean,
1201
+ default: !1
1202
+ },
1203
+ height: {
1204
+ type: [String, Number],
1205
+ default: void 0
1206
+ },
1207
+ maxHeight: {
1208
+ type: [String, Number],
1209
+ default: void 0
1210
+ },
1211
+ rowKey: {
1212
+ type: [String, Function],
1213
+ default: void 0
1214
+ },
1215
+ defaultExpandAll: {
1216
+ type: Boolean,
1217
+ default: !1
1218
+ },
1219
+ highlightCurrentRow: {
1220
+ type: Boolean,
1221
+ default: !1
1222
+ },
1223
+ loading: {
1224
+ type: Boolean,
1225
+ default: !1
1226
+ },
1227
+ showPagination: {
1228
+ type: Boolean,
1229
+ default: !0
1230
+ },
1231
+ total: {
1232
+ type: Number,
1233
+ default: 0
1234
+ },
1235
+ currentPage: {
1236
+ type: Number,
1237
+ default: null
1238
+ },
1239
+ pageSize: {
1240
+ type: Number,
1241
+ default: null
1242
+ },
1243
+ pageSizes: {
1244
+ type: Array,
1245
+ default: () => [10, 20, 50, 100]
1246
+ },
1247
+ paginationLayout: {
1248
+ type: String,
1249
+ default: "total, sizes, prev, pager, next, jumper"
1250
+ },
1251
+ pageNumberKey: {
1252
+ type: String,
1253
+ default: "currentPage"
1254
+ },
1255
+ pageSizeKey: {
1256
+ type: String,
1257
+ default: "pageSize"
1258
+ },
1259
+ pageTotalKey: {
1260
+ type: String,
1261
+ default: "total"
1262
+ },
1263
+ slotRenderers: {
1264
+ type: Object,
1265
+ default: () => ({})
1266
+ }
1267
+ },
1268
+ data() {
1269
+ return {
1270
+ internalPagination: E()
1271
+ };
1272
+ },
1273
+ computed: {
1274
+ currentPageModel() {
1275
+ return this.currentPage === null ? this.internalPagination.currentPage : this.currentPage;
1276
+ },
1277
+ pageSizeModel() {
1278
+ return this.pageSize === null ? this.internalPagination.pageSize : this.pageSize;
1279
+ },
1280
+ mergedAttrs() {
1281
+ return this.$attrs || {};
1282
+ },
1283
+ mergedListeners() {
1284
+ const e = { ...this.$listeners || {} };
1285
+ return Ae.forEach((t) => delete e[t]), e;
1286
+ }
1287
+ },
1288
+ watch: {
1289
+ currentPage: {
1290
+ handler(e) {
1291
+ e !== null && (this.internalPagination.currentPage = e);
1292
+ },
1293
+ immediate: !0
1294
+ },
1295
+ pageSize: {
1296
+ handler(e) {
1297
+ e !== null && (this.internalPagination.pageSize = e);
1298
+ },
1299
+ immediate: !0
1300
+ }
1301
+ },
1302
+ methods: {
1303
+ handleAdd() {
1304
+ this.$emit("add");
1305
+ },
1306
+ handleSelectionChange(e) {
1307
+ this.$emit("selection-change", e);
1308
+ },
1309
+ handleSortChange(e) {
1310
+ this.$emit("sort-change", e);
1311
+ },
1312
+ handleRowClick(e, t, r) {
1313
+ this.$emit("row-click", e, t, r);
1314
+ },
1315
+ handleSizeChange(e) {
1316
+ this.internalPagination.pageSize = e, this.$emit("update:pageSize", e), this.$emit("size-change", e);
1317
+ },
1318
+ handleCurrentChange(e) {
1319
+ this.internalPagination.currentPage = e, this.$emit("update:currentPage", e), this.$emit("current-change", e);
1320
+ },
1321
+ handleLinkClick(e, t) {
1322
+ this.$emit("link-click", e, t);
1323
+ },
1324
+ getIndex(e) {
1325
+ if (!this.showPagination)
1326
+ return e + 1;
1327
+ const t = Number(this.currentPageModel || 1), r = Number(this.pageSizeModel || 10);
1328
+ return (t - 1) * r + e + 1;
1329
+ },
1330
+ getSelectionRows() {
1331
+ return this.$refs.tableRef && this.$refs.tableRef.selection ? this.$refs.tableRef.selection : [];
1332
+ },
1333
+ getSelectionKeys() {
1334
+ const e = this.getSelectionRows();
1335
+ return this.rowKey ? e.map((t) => typeof this.rowKey == "function" ? this.rowKey(t) : t[this.rowKey]) : e;
1336
+ },
1337
+ setSelectionRows(e) {
1338
+ this.$refs.tableRef && (this.$refs.tableRef.clearSelection(), (e || []).forEach((t) => {
1339
+ this.$refs.tableRef.toggleRowSelection(t, !0);
1340
+ }));
1341
+ },
1342
+ setSelectionKeys(e) {
1343
+ !this.$refs.tableRef || !this.rowKey || (this.$refs.tableRef.clearSelection(), (e || []).forEach((t) => {
1344
+ const r = (this.tableData || []).find((n) => (typeof this.rowKey == "function" ? this.rowKey(n) : n[this.rowKey]) === t);
1345
+ r && this.$refs.tableRef.toggleRowSelection(r, !0);
1346
+ }));
1347
+ },
1348
+ isRowSelected(e) {
1349
+ return this.getSelectionRows().includes(e);
1350
+ },
1351
+ isKeySelected(e) {
1352
+ return this.getSelectionKeys().includes(e);
1353
+ },
1354
+ clearSelection() {
1355
+ this.$refs.tableRef && this.$refs.tableRef.clearSelection();
1356
+ },
1357
+ toggleRowSelection(e, t) {
1358
+ this.$refs.tableRef && this.$refs.tableRef.toggleRowSelection(e, t);
1359
+ },
1360
+ toggleAllSelection() {
1361
+ this.$refs.tableRef && this.$refs.tableRef.toggleAllSelection();
1362
+ },
1363
+ selectAll() {
1364
+ this.toggleAllSelection();
1365
+ },
1366
+ clearAllSelection() {
1367
+ this.clearSelection();
1368
+ },
1369
+ clearSort() {
1370
+ this.$refs.tableRef && this.$refs.tableRef.clearSort && this.$refs.tableRef.clearSort();
1371
+ },
1372
+ clearFilter(e) {
1373
+ this.$refs.tableRef && this.$refs.tableRef.clearFilter && this.$refs.tableRef.clearFilter(e);
1374
+ },
1375
+ doLayout() {
1376
+ this.$refs.tableRef && this.$refs.tableRef.doLayout && this.$refs.tableRef.doLayout();
1377
+ },
1378
+ sort(e, t) {
1379
+ this.$refs.tableRef && this.$refs.tableRef.sort && this.$refs.tableRef.sort(e, t);
1380
+ },
1381
+ resetPage() {
1382
+ this.internalPagination.currentPage = 1, this.$emit("update:currentPage", 1);
1383
+ },
1384
+ setPage(e) {
1385
+ this.internalPagination.currentPage = e, this.$emit("update:currentPage", e);
1386
+ },
1387
+ setPageSize(e) {
1388
+ this.internalPagination.pageSize = e, this.$emit("update:pageSize", e);
1389
+ },
1390
+ getPagination() {
1391
+ return {
1392
+ [this.pageTotalKey]: this.total,
1393
+ [this.pageNumberKey]: this.currentPageModel,
1394
+ [this.pageSizeKey]: this.pageSizeModel
1395
+ };
1396
+ },
1397
+ setPagination(e) {
1398
+ e.currentPage !== void 0 && this.setPage(e.currentPage), e.pageSize !== void 0 && this.setPageSize(e.pageSize);
1399
+ }
1400
+ }
1401
+ };
1402
+ var Ee = function() {
1403
+ var t = this, r = t._self._c;
1404
+ return r("div", { staticClass: "page-table" }, [t.showHeaderToolbar ? r("div", { staticClass: "page-table__header" }, [r("slot-renderer", { attrs: { renderer: t.slotRenderers["header-left"], scope: { tableData: t.tableData } } }), r("div", { staticClass: "page-table__actions" }, [r("slot-renderer", { attrs: { renderer: t.slotRenderers["header-actions"], scope: { tableData: t.tableData } } }), t.showAddButton && !t.slotRenderers["header-actions"] ? r("el-button", { attrs: { type: "primary", size: "small" }, on: { click: t.handleAdd } }, [t._v(" " + t._s(t.addButtonText) + " ")]) : t._e()], 1)], 1) : t._e(), r("el-table", t._g(t._b({ directives: [{ name: "loading", rawName: "v-loading", value: t.loading, expression: "loading" }], ref: "tableRef", attrs: { data: t.tableData, border: t.border, stripe: t.stripe, height: t.height, "max-height": t.maxHeight, "row-key": t.rowKey, "default-expand-all": t.defaultExpandAll, "highlight-current-row": t.highlightCurrentRow }, on: { "selection-change": t.handleSelectionChange, "sort-change": t.handleSortChange, "row-click": t.handleRowClick } }, "el-table", t.mergedAttrs, !1), t.mergedListeners), [t.showSelection ? r("el-table-column", { attrs: { type: "selection", width: "55", "reserve-selection": !!t.rowKey } }) : t._e(), t.showIndex ? r("el-table-column", { attrs: { type: "index", label: "序号", width: "60", index: t.getIndex } }) : t._e(), t._l(t.columns, function(n, i) {
1405
+ return r("table-column", { key: n.prop || n.label || i, attrs: { column: n, "slot-renderers": t.slotRenderers }, on: { "link-click": t.handleLinkClick } });
1406
+ }), r("template", { slot: "empty" }, [t.slotRenderers.empty ? r("slot-renderer", { attrs: { renderer: t.slotRenderers.empty, scope: { tableData: t.tableData } } }) : r("div", { staticClass: "page-table__empty" }, [t._v("暂无数据")])], 1)], 2), t.showPagination ? r("div", { staticClass: "page-table__pagination" }, [r("el-pagination", { attrs: { background: "", "current-page": t.currentPageModel, "page-size": t.pageSizeModel, "page-sizes": t.pageSizes, total: t.total, layout: t.paginationLayout }, on: { "size-change": t.handleSizeChange, "current-change": t.handleCurrentChange } })], 1) : t._e()], 1);
1407
+ }, Ne = [], Ke = /* @__PURE__ */ y(
1408
+ ke,
1409
+ Ee,
1410
+ Ne,
1411
+ !1,
1412
+ null,
1413
+ "e9b089a2",
1414
+ null,
1415
+ null
1416
+ );
1417
+ const w = Ke.exports;
1418
+ const Fe = {
1419
+ name: "NsTableContainer",
1420
+ components: {
1421
+ PageSearch: R,
1422
+ PageTable: w
1423
+ },
1424
+ props: {
1425
+ showSearch: {
1426
+ type: Boolean,
1427
+ default: !0
1428
+ },
1429
+ externalSearchParams: {
1430
+ type: Object,
1431
+ default: () => ({})
1432
+ },
1433
+ searchItems: {
1434
+ type: Array,
1435
+ default: () => []
1436
+ },
1437
+ tableData: {
1438
+ type: Array,
1439
+ default: () => []
1440
+ },
1441
+ columns: {
1442
+ type: Array,
1443
+ default: () => []
1444
+ },
1445
+ actionButtons: {
1446
+ type: Array,
1447
+ default: () => []
1448
+ },
1449
+ total: {
1450
+ type: Number,
1451
+ default: 0
1452
+ },
1453
+ currentPage: {
1454
+ type: Number,
1455
+ default: null
1456
+ },
1457
+ pageSize: {
1458
+ type: Number,
1459
+ default: null
1460
+ },
1461
+ pageNumberKey: {
1462
+ type: String,
1463
+ default: "currentPage"
1464
+ },
1465
+ pageSizeKey: {
1466
+ type: String,
1467
+ default: "pageSize"
1468
+ },
1469
+ pageTotalKey: {
1470
+ type: String,
1471
+ default: "total"
1472
+ },
1473
+ searchProps: {
1474
+ type: Object,
1475
+ default: () => ({})
1476
+ },
1477
+ tableProps: {
1478
+ type: Object,
1479
+ default: () => ({})
1480
+ },
1481
+ loadData: {
1482
+ type: Function,
1483
+ default: null
1484
+ }
1485
+ },
1486
+ data() {
1487
+ return {
1488
+ internalPagination: E(),
1489
+ pendingSelectionKeys: /* @__PURE__ */ new Set(),
1490
+ selectionRowMap: {},
1491
+ isSyncingSelection: !1
1492
+ };
1493
+ },
1494
+ computed: {
1495
+ currentPageModel() {
1496
+ return this.currentPage === null ? this.internalPagination.currentPage : this.currentPage;
1497
+ },
1498
+ pageSizeModel() {
1499
+ return this.pageSize === null ? this.internalPagination.pageSize : this.pageSize;
1500
+ },
1501
+ currentRowKey() {
1502
+ return this.tableProps && this.tableProps.rowKey;
1503
+ }
1504
+ },
1505
+ watch: {
1506
+ currentPage: {
1507
+ handler(e) {
1508
+ e !== null && (this.internalPagination.currentPage = e);
1509
+ },
1510
+ immediate: !0
1511
+ },
1512
+ pageSize: {
1513
+ handler(e) {
1514
+ e !== null && (this.internalPagination.pageSize = e);
1515
+ },
1516
+ immediate: !0
1517
+ },
1518
+ tableData: {
1519
+ handler() {
1520
+ this.$nextTick(() => {
1521
+ this.syncSelectionToCurrentPage();
1522
+ });
1523
+ },
1524
+ deep: !0,
1525
+ immediate: !0
1526
+ }
1527
+ },
1528
+ methods: {
1529
+ getRowKey(e) {
1530
+ return this.currentRowKey ? typeof this.currentRowKey == "function" ? this.currentRowKey(e) : e[this.currentRowKey] : e;
1531
+ },
1532
+ resetSelectionState() {
1533
+ this.pendingSelectionKeys = /* @__PURE__ */ new Set(), this.selectionRowMap = {}, this.$refs.tableRef && this.$refs.tableRef.clearSelection && this.$refs.tableRef.clearSelection();
1534
+ },
1535
+ syncSelectionToCurrentPage() {
1536
+ !this.currentRowKey || !this.$refs.tableRef || (this.isSyncingSelection = !0, this.$refs.tableRef.clearSelection(), (this.tableData || []).forEach((e) => {
1537
+ const t = this.getRowKey(e);
1538
+ this.pendingSelectionKeys.has(t) && (this.$set(this.selectionRowMap, t, e), this.$refs.tableRef.toggleRowSelection(e, !0));
1539
+ }), this.$nextTick(() => {
1540
+ this.isSyncingSelection = !1;
1541
+ }));
1542
+ },
1543
+ handleSearch(e) {
1544
+ if (this.resetSelectionState(), e && e._resetPage) {
1545
+ const { _resetPage: t, ...r } = e;
1546
+ this.internalPagination.currentPage = 1, this.$emit("update:currentPage", 1), this.$emit("search", r);
1547
+ return;
1548
+ }
1549
+ this.$emit("search", e);
1550
+ },
1551
+ handleReset() {
1552
+ this.resetSelectionState(), this.$emit("reset");
1553
+ },
1554
+ handleAdd() {
1555
+ this.$emit("add");
1556
+ },
1557
+ handleSizeChange(e) {
1558
+ this.internalPagination.pageSize = e, this.$emit("update:pageSize", e), this.$emit("size-change", e), this.$emit("page-change", {
1559
+ currentPage: this.currentPageModel,
1560
+ pageSize: e
1561
+ }), this.loadData && this.loadData();
1562
+ },
1563
+ handleCurrentChange(e) {
1564
+ this.internalPagination.currentPage = e, this.$emit("update:currentPage", e), this.$emit("current-change", e), this.$emit("page-change", {
1565
+ currentPage: e,
1566
+ pageSize: this.pageSizeModel
1567
+ }), this.loadData && this.loadData();
1568
+ },
1569
+ handleSelectionChange(e) {
1570
+ if (this.isSyncingSelection)
1571
+ return;
1572
+ if (!this.currentRowKey) {
1573
+ this.$emit("selection-change", e);
1574
+ return;
1575
+ }
1576
+ (this.tableData || []).map((r) => this.getRowKey(r)).forEach((r) => {
1577
+ this.pendingSelectionKeys.delete(r), this.$delete(this.selectionRowMap, r);
1578
+ }), (e || []).forEach((r) => {
1579
+ const n = this.getRowKey(r);
1580
+ this.pendingSelectionKeys.add(n), this.$set(this.selectionRowMap, n, r);
1581
+ }), this.$emit("selection-change", Object.values(this.selectionRowMap));
1582
+ },
1583
+ handleSortChange(e) {
1584
+ this.$emit("sort-change", e);
1585
+ },
1586
+ handleRowClick(e, t, r) {
1587
+ this.$emit("row-click", e, t, r);
1588
+ },
1589
+ handleLinkClick(e, t) {
1590
+ this.$emit("link-click", e, t);
1591
+ },
1592
+ initSearchAndLoad() {
1593
+ this.$nextTick(() => {
1594
+ if (this.showSearch && this.$refs.searchRef) {
1595
+ this.$emit("search", this.$refs.searchRef.getFormData());
1596
+ return;
1597
+ }
1598
+ this.loadData && this.loadData();
1599
+ });
1600
+ },
1601
+ getSearchFormData() {
1602
+ return this.$refs.searchRef ? this.$refs.searchRef.getFormData() : {};
1603
+ },
1604
+ setSearchFormData(e) {
1605
+ this.$refs.searchRef && this.$refs.searchRef.setFormData(e);
1606
+ },
1607
+ resetSearchForm() {
1608
+ this.$refs.searchRef && this.$refs.searchRef.resetForm();
1609
+ },
1610
+ validateSearchForm() {
1611
+ return this.$refs.searchRef ? this.$refs.searchRef.validate() : Promise.resolve(!0);
1612
+ },
1613
+ getPagination() {
1614
+ return {
1615
+ [this.pageTotalKey]: this.total,
1616
+ [this.pageNumberKey]: this.currentPageModel,
1617
+ [this.pageSizeKey]: this.pageSizeModel
1618
+ };
1619
+ },
1620
+ getSelectionRows() {
1621
+ var e, t;
1622
+ return this.currentRowKey ? Object.values(this.selectionRowMap) : ((t = (e = this.$refs.tableRef) == null ? void 0 : e.getSelectionRows) == null ? void 0 : t.call(e)) || [];
1623
+ },
1624
+ getSelectionKeys() {
1625
+ var e, t;
1626
+ return this.currentRowKey ? Array.from(this.pendingSelectionKeys) : ((t = (e = this.$refs.tableRef) == null ? void 0 : e.getSelectionKeys) == null ? void 0 : t.call(e)) || [];
1627
+ },
1628
+ setSelectionRows(e) {
1629
+ if (!this.currentRowKey) {
1630
+ this.$refs.tableRef && this.$refs.tableRef.setSelectionRows(e);
1631
+ return;
1632
+ }
1633
+ this.pendingSelectionKeys = /* @__PURE__ */ new Set(), this.selectionRowMap = {}, (e || []).forEach((t) => {
1634
+ const r = this.getRowKey(t);
1635
+ this.pendingSelectionKeys.add(r), this.$set(this.selectionRowMap, r, t);
1636
+ }), this.syncSelectionToCurrentPage();
1637
+ },
1638
+ setSelectionKeys(e) {
1639
+ if (!this.currentRowKey) {
1640
+ this.$refs.tableRef && this.$refs.tableRef.setSelectionKeys(e);
1641
+ return;
1642
+ }
1643
+ this.pendingSelectionKeys = new Set(e || []), (this.tableData || []).forEach((t) => {
1644
+ const r = this.getRowKey(t);
1645
+ this.pendingSelectionKeys.has(r) && this.$set(this.selectionRowMap, r, t);
1646
+ }), this.syncSelectionToCurrentPage();
1647
+ },
1648
+ clearAllSelection() {
1649
+ this.resetSelectionState();
1650
+ },
1651
+ selectAll() {
1652
+ if (this.$refs.tableRef) {
1653
+ if (!this.currentRowKey) {
1654
+ this.$refs.tableRef.selectAll();
1655
+ return;
1656
+ }
1657
+ (this.tableData || []).forEach((e) => {
1658
+ const t = this.getRowKey(e);
1659
+ this.pendingSelectionKeys.add(t), this.$set(this.selectionRowMap, t, e);
1660
+ }), this.$refs.tableRef.setSelectionRows(this.tableData);
1661
+ }
1662
+ },
1663
+ isRowSelected(e) {
1664
+ var t, r;
1665
+ return this.currentRowKey ? this.pendingSelectionKeys.has(this.getRowKey(e)) : (r = (t = this.$refs.tableRef) == null ? void 0 : t.isRowSelected) == null ? void 0 : r.call(t, e);
1666
+ },
1667
+ isKeySelected(e) {
1668
+ var t, r;
1669
+ return this.currentRowKey ? this.pendingSelectionKeys.has(e) : (r = (t = this.$refs.tableRef) == null ? void 0 : t.isKeySelected) == null ? void 0 : r.call(t, e);
1670
+ }
1671
+ }
1672
+ };
1673
+ var Te = function() {
1674
+ var t = this, r = t._self._c;
1675
+ return r("div", { staticClass: "page-container" }, [t.showSearch ? r("page-search", t._b({ ref: "searchRef", attrs: { items: t.searchItems, "external-params": t.externalSearchParams, "slot-renderers": t.$scopedSlots }, on: { search: t.handleSearch, reset: t.handleReset } }, "page-search", t.searchProps, !1)) : t._e(), r("page-table", t._b({ ref: "tableRef", attrs: { "table-data": t.tableData, columns: t.columns, "action-buttons": t.actionButtons, total: t.total, "current-page": t.currentPageModel, "page-size": t.pageSizeModel, "page-number-key": t.pageNumberKey, "page-size-key": t.pageSizeKey, "page-total-key": t.pageTotalKey, "slot-renderers": t.$scopedSlots }, on: { add: t.handleAdd, "selection-change": t.handleSelectionChange, "sort-change": t.handleSortChange, "row-click": t.handleRowClick, "size-change": t.handleSizeChange, "current-change": t.handleCurrentChange, "link-click": t.handleLinkClick } }, "page-table", t.tableProps, !1))], 1);
1676
+ }, Le = [], Oe = /* @__PURE__ */ y(
1677
+ Fe,
1678
+ Te,
1679
+ Le,
1680
+ !1,
1681
+ null,
1682
+ "400797f6",
1683
+ null,
1684
+ null
1685
+ );
1686
+ const N = Oe.exports;
1687
+ [N, R, w].forEach((e) => {
1688
+ e.install = function(r) {
1689
+ r.component(e.name, e);
1690
+ };
1691
+ });
1692
+ const Ve = {
1693
+ name: "NsDialogComponent",
1694
+ props: {
1695
+ className: {
1696
+ type: String,
1697
+ default: ""
1698
+ },
1699
+ title: {
1700
+ type: String,
1701
+ default: ""
1702
+ },
1703
+ width: {
1704
+ type: [Number, String],
1705
+ default: 500
1706
+ },
1707
+ height: {
1708
+ type: [Number, String],
1709
+ default: ""
1710
+ },
1711
+ modal: {
1712
+ type: Boolean,
1713
+ default: !0
1714
+ },
1715
+ dialogPadding: {
1716
+ type: [Number, String, Array],
1717
+ default: -1
1718
+ },
1719
+ modalColor: {
1720
+ type: String,
1721
+ default: "rgba(0, 0, 0, 0.45)"
1722
+ },
1723
+ closeOnClickModal: {
1724
+ type: Boolean,
1725
+ default: !0
1726
+ },
1727
+ dom: {
1728
+ type: [Object, Function],
1729
+ default: null
1730
+ },
1731
+ option: {
1732
+ type: Object,
1733
+ default: () => ({})
1734
+ },
1735
+ events: {
1736
+ type: Object,
1737
+ default: () => ({})
1738
+ },
1739
+ domCompleted: {
1740
+ type: Function,
1741
+ default: null
1742
+ },
1743
+ headerDom: {
1744
+ type: [Object, Function],
1745
+ default: null
1746
+ },
1747
+ headerOption: {
1748
+ type: Object,
1749
+ default: () => ({})
1750
+ },
1751
+ headerEvents: {
1752
+ type: Object,
1753
+ default: () => ({})
1754
+ },
1755
+ showFooter: {
1756
+ type: Boolean,
1757
+ default: !0
1758
+ },
1759
+ footerDom: {
1760
+ type: [Object, Function],
1761
+ default: null
1762
+ },
1763
+ footerOption: {
1764
+ type: Object,
1765
+ default: () => ({})
1766
+ },
1767
+ footerTitle: {
1768
+ type: Object,
1769
+ default: () => ({
1770
+ close: "取消",
1771
+ confirm: "确定"
1772
+ })
1773
+ },
1774
+ footerEvents: {
1775
+ type: Object,
1776
+ default: () => ({})
1777
+ },
1778
+ immediately: {
1779
+ type: Boolean,
1780
+ default: !1
1781
+ },
1782
+ close: {
1783
+ type: Function,
1784
+ default: null
1785
+ },
1786
+ closed: {
1787
+ type: Function,
1788
+ default: null
1789
+ },
1790
+ draggable: {
1791
+ type: Boolean,
1792
+ default: !1
1793
+ },
1794
+ confirm: {
1795
+ type: Function,
1796
+ default: null
1797
+ },
1798
+ x: {
1799
+ type: [Number, String],
1800
+ default: null
1801
+ },
1802
+ y: {
1803
+ type: [Number, String],
1804
+ default: null
1805
+ },
1806
+ maxSize: {
1807
+ type: Function,
1808
+ default: null
1809
+ },
1810
+ dialogInstance: {
1811
+ type: Object,
1812
+ default: null
1813
+ },
1814
+ containerId: {
1815
+ type: String,
1816
+ default: ""
1817
+ }
1818
+ },
1819
+ data() {
1820
+ return {
1821
+ visible: !1,
1822
+ currentTitle: this.title,
1823
+ currentOption: { ...this.option },
1824
+ currentWidth: this.width,
1825
+ currentHeight: this.height,
1826
+ currentX: this.x,
1827
+ currentY: this.y,
1828
+ footerLoading: !1,
1829
+ isMaximized: !1,
1830
+ originalSize: {
1831
+ width: this.width,
1832
+ height: this.height,
1833
+ x: this.x,
1834
+ y: this.y
1835
+ },
1836
+ dragContext: null,
1837
+ domCompletedCalled: !1
1838
+ };
1839
+ },
1840
+ computed: {
1841
+ normalizedWidth() {
1842
+ return this.normalizeSize(this.currentWidth || this.width || 500);
1843
+ },
1844
+ bodyStyle() {
1845
+ return {
1846
+ padding: this.resolvePadding(),
1847
+ minHeight: this.currentHeight ? this.normalizeSize(this.currentHeight) : "auto",
1848
+ maxHeight: this.currentHeight ? this.normalizeSize(this.currentHeight) : "none",
1849
+ overflow: "auto"
1850
+ };
1851
+ },
1852
+ dialogCustomClass() {
1853
+ return ["ns-dialog-plus", this.className, this.hasAbsolutePosition ? "ns-dialog-plus--absolute" : ""].filter(Boolean).join(" ");
1854
+ },
1855
+ modalClassName() {
1856
+ return `ns-dialog-plus-modal ns-dialog-plus-modal--${this.containerId}`;
1857
+ },
1858
+ resolvedDom() {
1859
+ return this.resolveComponent(this.dom);
1860
+ },
1861
+ resolvedHeaderDom() {
1862
+ return this.resolveComponent(this.headerDom);
1863
+ },
1864
+ resolvedFooterDom() {
1865
+ return this.resolveComponent(this.footerDom);
1866
+ },
1867
+ footerButtonText() {
1868
+ var e, t;
1869
+ return {
1870
+ close: ((e = this.footerTitle) == null ? void 0 : e.close) || "取消",
1871
+ confirm: ((t = this.footerTitle) == null ? void 0 : t.confirm) || "确定"
1872
+ };
1873
+ },
1874
+ showMaximizeButton() {
1875
+ return typeof this.maxSize == "function";
1876
+ },
1877
+ hasAbsolutePosition() {
1878
+ return this.currentX !== null || this.currentY !== null;
1879
+ }
1880
+ },
1881
+ watch: {
1882
+ option: {
1883
+ handler(e) {
1884
+ this.currentOption = { ...e };
1885
+ },
1886
+ deep: !0
1887
+ },
1888
+ title(e) {
1889
+ this.currentTitle = e;
1890
+ },
1891
+ width(e) {
1892
+ this.isMaximized || (this.currentWidth = e);
1893
+ },
1894
+ height(e) {
1895
+ this.isMaximized || (this.currentHeight = e);
1896
+ },
1897
+ x(e) {
1898
+ this.isMaximized || (this.currentX = e);
1899
+ },
1900
+ y(e) {
1901
+ this.isMaximized || (this.currentY = e);
1902
+ },
1903
+ visible() {
1904
+ this.$nextTick(() => {
1905
+ this.applyDialogLayout(), this.syncDialogInstance(), this.triggerDomCompleted();
1906
+ });
1907
+ }
1908
+ },
1909
+ mounted() {
1910
+ V(), this.visible = !0, this.updateModalStyle(), this.syncDialogInstance(), this.$nextTick(() => {
1911
+ this.applyDialogLayout(), this.triggerDomCompleted();
1912
+ }), document.addEventListener("keydown", this.handleKeydown);
1913
+ },
1914
+ updated() {
1915
+ this.syncDialogInstance(), this.triggerDomCompleted(), this.$nextTick(() => {
1916
+ this.applyDialogLayout();
1917
+ });
1918
+ },
1919
+ beforeDestroy() {
1920
+ document.removeEventListener("keydown", this.handleKeydown), this.removeDragListeners(), this.removeModalStyle();
1921
+ },
1922
+ methods: {
1923
+ normalizeSize(e) {
1924
+ return e == null || e === "" ? "" : /^\d+$/.test(String(e)) ? `${e}px` : String(e);
1925
+ },
1926
+ resolvePadding() {
1927
+ return Array.isArray(this.dialogPadding) ? this.dialogPadding.map((e) => this.normalizeSize(e)).join(" ") : this.dialogPadding === -1 || this.dialogPadding === "-1" ? "16px 20px" : this.normalizeSize(this.dialogPadding);
1928
+ },
1929
+ resolveComponent(e) {
1930
+ return e ? e.default ? e.default : typeof e.then == "function" ? () => e : e : null;
1931
+ },
1932
+ mergeEvents(e = {}) {
1933
+ return {
1934
+ ...e,
1935
+ close: () => this.closeDialog()
1936
+ };
1937
+ },
1938
+ resolveDialogElement() {
1939
+ return this.$el && this.$el.querySelector ? this.$el.querySelector(".el-dialog") : null;
1940
+ },
1941
+ resolveWrapperElement() {
1942
+ return this.$el && this.$el.querySelector ? this.$el.querySelector(".el-dialog__wrapper") : null;
1943
+ },
1944
+ applyDialogLayout() {
1945
+ const e = this.resolveDialogElement();
1946
+ e && (this.currentHeight ? (e.style.height = this.normalizeSize(this.currentHeight), e.style.display = "flex", e.style.flexDirection = "column") : e.style.height = "", this.hasAbsolutePosition ? (e.style.position = "fixed", e.style.margin = "0", this.currentX !== null && (e.style.left = this.normalizeSize(this.currentX)), this.currentY !== null && (e.style.top = this.normalizeSize(this.currentY))) : (e.style.position = "", e.style.left = "", e.style.top = ""));
1947
+ },
1948
+ updateModalStyle() {
1949
+ if (!this.containerId)
1950
+ return;
1951
+ let e = document.getElementById(`style-${this.containerId}`);
1952
+ e || (e = document.createElement("style"), e.id = `style-${this.containerId}`, document.head.appendChild(e)), e.textContent = `.${this.modalClassName.replace(/ /g, ".")} { background-color: ${this.modalColor} !important; }`;
1953
+ },
1954
+ removeModalStyle() {
1955
+ if (!this.containerId)
1956
+ return;
1957
+ const e = document.getElementById(`style-${this.containerId}`);
1958
+ e && e.parentNode && e.parentNode.removeChild(e);
1959
+ },
1960
+ syncDialogInstance() {
1961
+ this.dialogInstance && (this.dialogInstance.domRef = this.$refs.contentRef || null, this.dialogInstance.updateOption = (e = {}) => {
1962
+ Object.prototype.hasOwnProperty.call(e, "title") && (this.currentTitle = e.title), Object.prototype.hasOwnProperty.call(e, "width") && (this.currentWidth = e.width), Object.prototype.hasOwnProperty.call(e, "height") && (this.currentHeight = e.height), Object.prototype.hasOwnProperty.call(e, "x") && (this.currentX = e.x), Object.prototype.hasOwnProperty.call(e, "y") && (this.currentY = e.y);
1963
+ const t = { ...e };
1964
+ delete t.title, delete t.width, delete t.height, delete t.x, delete t.y, this.currentOption = {
1965
+ ...this.currentOption,
1966
+ ...t
1967
+ };
1968
+ }, this.dialogInstance.callMethod = (e, ...t) => {
1969
+ const r = this.$refs.contentRef;
1970
+ if (r && typeof r[e] == "function")
1971
+ return r[e](...t);
1972
+ }, this.dialogInstance.close = () => this.closeDialog());
1973
+ },
1974
+ triggerDomCompleted() {
1975
+ this.domCompletedCalled || this.$refs.contentRef && (this.domCompletedCalled = !0, typeof this.domCompleted == "function" && this.domCompleted(this.$refs.contentRef));
1976
+ },
1977
+ toggleMaximize() {
1978
+ if (this.showMaximizeButton) {
1979
+ if (this.isMaximized)
1980
+ this.currentWidth = this.originalSize.width, this.currentHeight = this.originalSize.height, this.currentX = this.originalSize.x, this.currentY = this.originalSize.y, this.isMaximized = !1;
1981
+ else {
1982
+ this.originalSize = {
1983
+ width: this.currentWidth,
1984
+ height: this.currentHeight,
1985
+ x: this.currentX,
1986
+ y: this.currentY
1987
+ };
1988
+ const e = this.maxSize ? this.maxSize() || {} : {};
1989
+ this.currentWidth = e.width || "100vw", this.currentHeight = e.height || "100vh", this.currentX = e.x !== void 0 ? e.x : 0, this.currentY = e.y !== void 0 ? e.y : 0, this.isMaximized = !0;
1990
+ }
1991
+ this.$nextTick(() => this.applyDialogLayout());
1992
+ }
1993
+ },
1994
+ closeDialog() {
1995
+ this.visible = !1;
1996
+ },
1997
+ dealClose() {
1998
+ typeof this.close == "function" && this.close();
1999
+ },
2000
+ dealClosed() {
2001
+ typeof this.closed == "function" && this.closed();
2002
+ },
2003
+ dealConfirm() {
2004
+ if (this.footerLoading = !0, !this.confirm) {
2005
+ this.footerLoading = !1;
2006
+ return;
2007
+ }
2008
+ if (this.immediately) {
2009
+ this.footerLoading = !1, this.visible = !1, this.confirm(null, this.$refs.contentRef);
2010
+ return;
2011
+ }
2012
+ this.confirm(
2013
+ () => {
2014
+ this.footerLoading = !1, this.visible = !1, this.$message && this.$message.success && this.$message.success("操作成功");
2015
+ },
2016
+ this.$refs.contentRef,
2017
+ {
2018
+ value: this.footerLoading,
2019
+ set value(e) {
2020
+ this.footerLoading = e;
2021
+ }
2022
+ }
2023
+ );
2024
+ },
2025
+ handleKeydown(e) {
2026
+ !this.visible || !this.showFooter || e.key === "Enter" && !this.footerDom && (e.preventDefault(), this.dealConfirm());
2027
+ },
2028
+ handleDragStart(e) {
2029
+ if (!this.draggable || this.showMaximizeButton || e.button !== 0)
2030
+ return;
2031
+ const t = this.resolveDialogElement();
2032
+ if (!t)
2033
+ return;
2034
+ const r = t.getBoundingClientRect();
2035
+ this.currentX = r.left, this.currentY = r.top, this.dragContext = {
2036
+ startX: e.clientX,
2037
+ startY: e.clientY,
2038
+ originX: r.left,
2039
+ originY: r.top
2040
+ }, document.addEventListener("mousemove", this.handleDragMove), document.addEventListener("mouseup", this.handleDragEnd);
2041
+ },
2042
+ handleDragMove(e) {
2043
+ if (!this.dragContext)
2044
+ return;
2045
+ const t = e.clientX - this.dragContext.startX, r = e.clientY - this.dragContext.startY;
2046
+ this.currentX = this.dragContext.originX + t, this.currentY = this.dragContext.originY + r, this.applyDialogLayout();
2047
+ },
2048
+ handleDragEnd() {
2049
+ this.removeDragListeners();
2050
+ },
2051
+ removeDragListeners() {
2052
+ document.removeEventListener("mousemove", this.handleDragMove), document.removeEventListener("mouseup", this.handleDragEnd), this.dragContext = null;
2053
+ }
2054
+ }
2055
+ };
2056
+ var Ie = function() {
2057
+ var t = this, r = t._self._c;
2058
+ return r("el-dialog", { attrs: { visible: t.visible, width: t.normalizedWidth, modal: t.modal, "modal-class": t.modalClassName, "show-close": !1, "append-to-body": !1, "close-on-click-modal": t.closeOnClickModal, "custom-class": t.dialogCustomClass }, on: { "update:visible": function(n) {
2059
+ t.visible = n;
2060
+ }, close: t.dealClose, closed: t.dealClosed } }, [r("div", { staticClass: "ns-dialog-plus__header", attrs: { slot: "title" }, on: { mousedown: t.handleDragStart }, slot: "title" }, [r("div", { staticClass: "ns-dialog-plus__title" }, [t.resolvedHeaderDom ? r(t.resolvedHeaderDom, t._g(t._b({ tag: "component" }, "component", t.headerOption, !1), t.mergeEvents(t.headerEvents))) : [t._v(t._s(t.currentTitle))]], 2), r("div", { staticClass: "ns-dialog-plus__actions" }, [t.showMaximizeButton ? r("el-button", { staticClass: "ns-dialog-plus__action-btn", attrs: { type: "text" }, on: { click: function(n) {
2061
+ return n.stopPropagation(), t.toggleMaximize.apply(null, arguments);
2062
+ } } }, [t._v(" " + t._s(t.isMaximized ? "还原" : "最大化") + " ")]) : t._e(), r("el-button", { staticClass: "ns-dialog-plus__action-btn", attrs: { type: "text" }, on: { click: function(n) {
2063
+ return n.stopPropagation(), t.closeDialog.apply(null, arguments);
2064
+ } } }, [t._v("关闭")])], 1)]), r("div", { staticClass: "ns-dialog-plus__body", style: t.bodyStyle }, [r(t.resolvedDom, t._g(t._b({ ref: "contentRef", tag: "component" }, "component", t.currentOption, !1), t.mergeEvents(t.events)))], 1), t.showFooter ? r("div", { staticClass: "ns-dialog-plus__footer", attrs: { slot: "footer" }, slot: "footer" }, [t.resolvedFooterDom ? r(t.resolvedFooterDom, t._g(t._b({ tag: "component" }, "component", t.footerOption, !1), t.mergeEvents(t.footerEvents))) : [r("el-button", { on: { click: t.closeDialog } }, [t._v(t._s(t.footerButtonText.close))]), r("el-button", { attrs: { type: "primary", loading: t.footerLoading }, on: { click: t.dealConfirm } }, [t._v(t._s(t.footerButtonText.confirm))])]], 2) : t._e()]);
2065
+ }, Be = [], Me = /* @__PURE__ */ y(
2066
+ Ve,
2067
+ Ie,
2068
+ Be,
2069
+ !1,
2070
+ null,
2071
+ "4f4f8603",
2072
+ null,
2073
+ null
2074
+ );
2075
+ const je = Me.exports, C = typeof window < "u" ? window.__dialogInstances = window.__dialogInstances || [] : [];
2076
+ let D = F, He = 0;
2077
+ function W(e) {
2078
+ if (e) {
2079
+ if (e.extend) {
2080
+ D = e;
2081
+ return;
2082
+ }
2083
+ e.constructor && e.constructor.extend && (D = e.constructor);
2084
+ }
2085
+ }
2086
+ function We(e) {
2087
+ return typeof document > "u" ? null : document.querySelector(e) || document.body;
2088
+ }
2089
+ function qe(e) {
2090
+ const t = C.findIndex((r) => r.id === e.id);
2091
+ t > -1 && C.splice(t, 1);
2092
+ }
2093
+ function P() {
2094
+ C.slice().forEach((e) => {
2095
+ e && typeof e.close == "function" && e.close();
2096
+ });
2097
+ }
2098
+ function z(e, t = !0, r = "#app") {
2099
+ if (!e || !e.dom)
2100
+ return !1;
2101
+ const n = We(r);
2102
+ if (!n)
2103
+ return !1;
2104
+ const i = e.id || `ns-dialog-${Date.now()}-${He++}`, s = document.createElement("div");
2105
+ s.id = i, n.appendChild(s);
2106
+ const a = {
2107
+ id: i,
2108
+ class: e.class || "",
2109
+ element: s,
2110
+ vm: null,
2111
+ domRef: null,
2112
+ updateOption: () => {
2113
+ },
2114
+ callMethod: () => {
2115
+ },
2116
+ close: () => {
2117
+ }
2118
+ }, l = (D || F).extend(je), o = {
2119
+ ...e,
2120
+ className: e.class || "",
2121
+ modal: t,
2122
+ containerId: i,
2123
+ dialogInstance: a,
2124
+ close: () => {
2125
+ typeof e.close == "function" && e.close();
2126
+ },
2127
+ closed: () => {
2128
+ try {
2129
+ typeof e.closed == "function" && e.closed();
2130
+ } finally {
2131
+ a.vm && a.vm.$destroy(), s.parentNode && s.parentNode.removeChild(s), qe(a);
2132
+ }
2133
+ }
2134
+ }, c = new l({ propsData: o });
2135
+ return a.vm = c, a.close = () => {
2136
+ c && typeof c.closeDialog == "function" && c.closeDialog();
2137
+ }, C.push(a), c.$mount(s), a;
2138
+ }
2139
+ const Xe = [_, k, N, R, w];
2140
+ function A(e) {
2141
+ A.installed || (A.installed = !0, O(e), Xe.forEach((t) => {
2142
+ t && t.name && e.component(t.name, t);
2143
+ }), W(e), V(), e && e.prototype && (e.prototype.$NsDialog = z, e.prototype.$closeAllNsDialog = P), typeof window < "u" && (window.NsDialog = z, window.closeAllNsDialog = P));
2144
+ }
2145
+ const Je = {
2146
+ install: A,
2147
+ NsForm: _,
2148
+ NsFormTitle: k,
2149
+ NsTableContainer: N,
2150
+ NsSearch: R,
2151
+ NsTable: w,
2152
+ NsDialog: z,
2153
+ closeAllNsDialog: P,
2154
+ setExternalApp: W,
2155
+ useFileUpload: ye,
2156
+ getAllFormNodeByKey: m,
2157
+ getAllFormKvData: B,
2158
+ getAllFormNodeRefByKey: M,
2159
+ createPagination: E,
2160
+ createPaginationWithCustomKeys: Pe,
2161
+ resetPagination: ze
2162
+ };
2163
+ export {
2164
+ z as NsDialog,
2165
+ _ as NsForm,
2166
+ k as NsFormTitle,
2167
+ R as NsSearch,
2168
+ w as NsTable,
2169
+ N as NsTableContainer,
2170
+ P as closeAllNsDialog,
2171
+ E as createPagination,
2172
+ Pe as createPaginationWithCustomKeys,
2173
+ Je as default,
2174
+ B as getAllFormKvData,
2175
+ m as getAllFormNodeByKey,
2176
+ M as getAllFormNodeRefByKey,
2177
+ A as install,
2178
+ ze as resetPagination,
2179
+ W as setExternalApp,
2180
+ ye as useFileUpload
2181
+ };