@ithinkdt/ui 4.0.0-601 → 4.0.0-800

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.
package/dist/page.js CHANGED
@@ -1,18 +1,17 @@
1
- import { n as useI18n } from "./use-i18n-Dx7V4KrY.js";
2
- import "./use-style-D9hLG26i.js";
3
- import "./directives-8VsgmCuO.js";
4
- import { a as DtUserRender, h as DataForm, i as DtUserDept, r as DtDeptRender, s as NRadios, x as NCheckboxes } from "./components-CDuTve1u.js";
5
- import { computed, createVNode, defineComponent, h, isVNode, mergeProps, ref, shallowRef, unref } from "vue";
1
+ import { n as useI18n } from "./use-i18n-D-AJ8KbA.js";
2
+ import { a as DtUserRender, h as DataForm, i as DtUserDept, r as DtDeptRender, s as NRadios, x as NCheckboxes } from "./components-DYFd5z-C.js";
3
+ import { computed, createVNode, defineComponent, h, isVNode, mergeProps, nextTick, ref, shallowRef, unref } from "vue";
6
4
  import { until } from "@vueuse/core";
7
5
  import { NButton, NCheckbox, NColorPicker, NDatePicker, NDrawer, NDrawerContent, NFlex, NInput, NInputNumber, NModal, NScrollbar, NSelect, NText, NUpload, useMessage } from "ithinkdt-ui";
6
+ import { nanoid } from "nanoid";
8
7
  import { format } from "date-fns";
9
8
  import { useFormItem } from "ithinkdt-ui/es/_mixins";
10
9
  import { isNullish } from "@ithinkdt/common";
11
10
  import { useDict, useDictMap } from "@ithinkdt/common/dict";
12
- function _isSlot(r) {
13
- return typeof r == "function" || Object.prototype.toString.call(r) === "[object Object]" && !isVNode(r);
11
+ function _isSlot(e) {
12
+ return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !isVNode(e);
14
13
  }
15
- var mapProps = (r) => Object.fromEntries(Object.entries(r || {}).map(([r, a]) => [r, unref(a)])), SimpleUpload = /* @__PURE__ */ defineComponent({
14
+ var mapProps = (e) => Object.fromEntries(Object.entries(e || {}).map(([e, t]) => [e, unref(t)])), SimpleUpload = /* @__PURE__ */ defineComponent({
16
15
  name: "SimpleUpload",
17
16
  props: {
18
17
  type: {
@@ -50,496 +49,528 @@ var mapProps = (r) => Object.fromEntries(Object.entries(r || {}).map(([r, a]) =>
50
49
  onUpdateFileList: { type: [Array, Function] },
51
50
  uploadFile: { type: Function }
52
51
  },
53
- setup(a, { slots: o, expose: s }) {
54
- let { t: c } = useI18n();
55
- SimpleUpload.t = c;
56
- let l = useFormItem(a), u = useMessage(), f = computed(() => a.customRequest || (({ file: r, onProgress: o, onFinish: s, onError: c }) => {
57
- a.uploadFile(r.file, (r) => o({ percent: r })).then((a) => {
58
- r.file.fileId = a, s();
59
- }).catch((r) => {
60
- u.error(r.message), c(r);
52
+ setup(t, { slots: n, expose: r }) {
53
+ let { t: i } = useI18n();
54
+ SimpleUpload.t = i;
55
+ let a = useFormItem(t), o = useMessage(), c = computed(() => t.customRequest || (({ file: e, onProgress: n, onFinish: r, onError: i }) => {
56
+ t.uploadFile(e.file, (e) => n({ percent: e })).then((t) => {
57
+ e.file.fileId = t, r();
58
+ }).catch((e) => {
59
+ o.error(e.message), i(e);
61
60
  });
62
- })), p = ref();
63
- s({ submit() {
64
- return until(p).toBeTruthy().then((r) => r.submit());
61
+ })), l = ref();
62
+ r({ submit() {
63
+ return until(l).toBeTruthy().then((e) => e.submit());
65
64
  } });
66
- let m = (r) => {
67
- a.onUpdateFileList?.(r), nextTick(() => l.nTriggerFormChange());
65
+ let u = (e) => {
66
+ if (e) for (let n of e) n.size > t.maxSize * 1024 && (n.status = "error");
67
+ t.onUpdateFileList?.(e), nextTick(() => a.nTriggerFormChange());
68
68
  };
69
69
  return () => {
70
- let { type: r, onUpdateFileList: s,...u } = a;
71
- return createVNode(NUpload, mergeProps(u, {
72
- ref: p,
73
- customRequest: f.value,
74
- listType: r === "image" ? "image-card" : "text",
75
- accept: u.accept ?? r === "image" ? "image/*" : void 0,
76
- "onUpdate:fileList": m
70
+ let { type: e, onUpdateFileList: r, ...o } = t;
71
+ return createVNode(NUpload, mergeProps(o, {
72
+ ref: l,
73
+ customRequest: c.value,
74
+ listType: e === "image" ? "image-card" : "text",
75
+ accept: o.accept ?? e === "image" ? "image/*" : void 0,
76
+ "onUpdate:fileList": u
77
77
  }), {
78
- default: r === "image" ? void 0 : () => {
79
- let r;
78
+ default: e === "image" ? void 0 : () => {
79
+ let e;
80
80
  return createVNode(NButton, {
81
- disabled: l.mergedDisabledRef.value,
82
- size: l.mergedSizeRef.value
83
- }, _isSlot(r = c("common.page.form.selectFileText")) ? r : { default: () => [r] });
81
+ disabled: a.mergedDisabledRef.value,
82
+ size: a.mergedSizeRef.value
83
+ }, _isSlot(e = i("common.page.form.selectFileText")) ? e : { default: () => [e] });
84
84
  },
85
- ...o
85
+ ...n
86
86
  });
87
87
  };
88
88
  }
89
89
  });
90
- function createPageFormHelper({ getUserGroups: r, getUsersByGroup: o, getDeptsByCode: c, getUsersByDept: d, getUsersByUsername: f, uploadFile: m, getFileInfos: g }) {
91
- let _ = (r) => r, x = (r) => isNullish(r) ? r : String(r), C = (r) => isNullish(r) ? r : Number(r);
90
+ function createPageFormHelper({ getUserGroups: e, getUsersByGroup: n, getDeptsByCode: i, getUsersByDept: s, getUsersByUsername: c, uploadFile: u, getFileInfos: d }) {
91
+ let f = (e) => e, p = (e) => isNullish(e) ? e : String(e), v = (e) => isNullish(e) ? e : Number(e);
92
92
  return {
93
- input: () => ({ slots: r, props: a }, { modelValue: o, "onUpdate:modelValue": s, required: c, readonly: l,...u }) => l ? createVNode(NText, {
93
+ input: () => ({ slots: e, props: t }, { modelValue: n, "onUpdate:modelValue": r, required: i, readonly: a, ...o }) => a ? createVNode(NText, {
94
94
  depth: 2,
95
95
  style: "line-height: 1.25"
96
- }, { default: () => [o ?? ""] }) : (a = mapProps(a), h(NInput, {
96
+ }, { default: () => [n ?? ""] }) : (t = mapProps(t), h(NInput, {
97
97
  clearable: !0,
98
- ...a,
99
- ...u,
100
- value: o,
101
- "onUpdate:value": s
102
- }, r)),
98
+ ...t,
99
+ ...o,
100
+ value: n,
101
+ "onUpdate:value": r
102
+ }, e)),
103
103
  number: () => {
104
- let r, a;
105
- return ({ slots: o, props: s }, { modelValue: c, "onUpdate:modelValue": l, required: u, readonly: d,...f }) => {
106
- if (d) return createVNode(NText, {
104
+ let e, t;
105
+ return ({ slots: n, props: r }, { modelValue: i, "onUpdate:modelValue": a, required: o, readonly: s, ...c }) => {
106
+ if (s) return createVNode(NText, {
107
107
  depth: 2,
108
108
  style: "line-height: 1.25"
109
- }, { default: () => [c ?? ""] });
110
- let { valueType: m = "number",...g } = mapProps(s), _ = m === "string" ? C(c) : c;
111
- return r = l, m === "string" && !a && (a = (a, ...o) => {
112
- r(x(a), ...o);
109
+ }, { default: () => [i ?? ""] });
110
+ let { valueType: u = "number", ...d } = mapProps(r), f = u === "string" ? v(i) : i;
111
+ return e = a, u === "string" && !t && (t = (t, ...n) => {
112
+ e(p(t), ...n);
113
113
  }), h(NInputNumber, {
114
114
  clearable: !0,
115
- ...g,
116
- ...f,
117
- value: _,
118
- "onUpdate:value": m === "string" ? a : r
119
- }, o);
115
+ ...d,
116
+ ...c,
117
+ value: f,
118
+ "onUpdate:value": u === "string" ? t : e
119
+ }, n);
120
120
  };
121
121
  },
122
122
  select: () => {
123
- let r, a, o, s, c;
124
- return ({ slots: l, props: u }, { modelValue: d, "onUpdate:modelValue": f, required: m, readonly: g,...v }) => {
125
- let { dictType: b, options: S, valueType: w = "string",...T } = mapProps(u), E = w === "number" ? x : _;
126
- S ? a = S : r !== b && (r = b, !a && r && (a = useDict(r)));
127
- let D = T.multiple ? d?.map(E) : E(d);
128
- if (g) if (T.multiple) {
129
- let r;
123
+ let e, t, n, r, i;
124
+ return ({ slots: a, props: o }, { modelValue: s, "onUpdate:modelValue": c, required: u, readonly: d, ...m }) => {
125
+ let { dictType: _, options: y, valueType: b = "string", ...x } = mapProps(o), S = b === "number" ? p : f;
126
+ y ? t = y : e !== _ && (e = _, !t && e && (t = useDict(e)));
127
+ let C = x.multiple ? s?.map(S) : S(s);
128
+ if (d) if (x.multiple) {
129
+ let e;
130
130
  return createVNode(NText, {
131
131
  depth: 2,
132
132
  style: "line-height: 1.25"
133
- }, _isSlot(r = (D?.map((r) => a?.find((a) => a[T.valueField || "value"] === r)) ?? []).map((r, a, o) => {
134
- let s = r ? T.renderLabel ? T.renderLabel(r) ?? "" : r[T.labelField || "label"] ?? "" : D[a] ?? "";
135
- return createVNode("span", { key: r ? r[T.valueField || "value"] : D[a] ?? "" }, [s, a < o.length - 1 ? ", " : ""]);
136
- })) ? r : { default: () => [r] });
133
+ }, _isSlot(e = (C?.map((e) => t?.find((t) => t[x.valueField || "value"] === e)) ?? []).map((e, t, n) => {
134
+ let r = e ? x.renderLabel ? x.renderLabel(e) ?? "" : e[x.labelField || "label"] ?? "" : C[t] ?? "";
135
+ return createVNode("span", { key: e ? e[x.valueField || "value"] : C[t] ?? "" }, [r, t < n.length - 1 ? ", " : ""]);
136
+ })) ? e : { default: () => [e] });
137
137
  } else {
138
- let r = a?.find((r) => r[T.valueField || "value"] === D);
138
+ let e = t?.find((e) => e[x.valueField || "value"] === C);
139
139
  return createVNode(NText, {
140
140
  depth: 2,
141
141
  style: "line-height: 1.25"
142
- }, { default: () => [r ? T.renderLabel ? T.renderLabel(r) ?? "" : r[T.labelField || "label"] ?? "" : D ?? ""] });
142
+ }, { default: () => [e ? x.renderLabel ? x.renderLabel(e) ?? "" : e[x.labelField || "label"] ?? "" : C ?? ""] });
143
143
  }
144
- return s = T.multiple, o = f, w === "number" && !c && (c = (r, ...a) => {
145
- o(s ? r?.map(C) : C(r), ...a);
144
+ return r = x.multiple, n = c, b === "number" && !i && (i = (e, ...t) => {
145
+ n(r ? e?.map(v) : v(e), ...t);
146
146
  }), h(NSelect, {
147
147
  clearable: !0,
148
- loading: a?.loading,
149
- ...T,
150
- options: unref(a),
151
- ...v,
152
- value: D,
153
- "onUpdate:value": w === "number" ? c : o
154
- }, l);
148
+ loading: t?.loading,
149
+ ...x,
150
+ options: unref(t),
151
+ ...m,
152
+ value: C,
153
+ "onUpdate:value": b === "number" ? i : n
154
+ }, a);
155
155
  };
156
156
  },
157
- checkbox: () => ({ slots: r, props: a }, { modelValue: o, "onUpdate:modelValue": s, required: c, readonly: l,...u }) => {
158
- if (a = mapProps(a), l) {
159
- let s;
160
- return s = o === (a.checkedValue ?? !0) ? r?.checked ? r.checked() : createVNode(NCheckbox, { checked: !0 }, null) : r?.unchecked ? r.unchecked() : createVNode(NCheckbox, { disabled: !0 }, null), createVNode(NText, {
157
+ checkbox: () => ({ slots: e, props: t }, { modelValue: n, "onUpdate:modelValue": r, required: i, readonly: a, ...o }) => {
158
+ if (t = mapProps(t), a) {
159
+ let r;
160
+ return r = n === (t.checkedValue ?? !0) ? e?.checked ? e.checked() : createVNode(NCheckbox, { checked: !0 }, null) : e?.unchecked ? e.unchecked() : createVNode(NCheckbox, { disabled: !0 }, null), createVNode(NText, {
161
161
  depth: 2,
162
162
  style: "line-height: 1.25"
163
- }, _isSlot(s) ? s : { default: () => [s] });
163
+ }, _isSlot(r) ? r : { default: () => [r] });
164
164
  }
165
165
  return h(NCheckbox, {
166
- ...a,
167
- ...u,
168
- checked: o,
169
- "onUpdate:checked": s
170
- }, r);
166
+ ...t,
167
+ ...o,
168
+ checked: n,
169
+ "onUpdate:checked": r
170
+ }, e);
171
171
  },
172
172
  checkboxes: () => {
173
- let r, a, o, s;
174
- return ({ props: c }, { modelValue: l, "onUpdate:modelValue": d, required: f, readonly: m,...g }) => {
175
- let { dictType: v, options: y, valueType: b = "string",...S } = mapProps(c), w = b === "number" ? x : _;
176
- y ? a = y : r !== v && (r = v, !a && r && (a = useDict(r)));
177
- let T = l?.map(w) ?? [];
178
- if (m) {
179
- let r;
173
+ let e, t, n, r;
174
+ return ({ props: i }, { modelValue: a, "onUpdate:modelValue": s, required: c, readonly: u, ...d }) => {
175
+ let { dictType: m, options: g, valueType: _ = "string", ...y } = mapProps(i), b = _ === "number" ? p : f;
176
+ g ? t = g : e !== m && (e = m, !t && e && (t = useDict(e)));
177
+ let x = a?.map(b) ?? [];
178
+ if (u) {
179
+ let e;
180
180
  return createVNode(NText, {
181
181
  depth: 2,
182
182
  style: "line-height: 2.4"
183
- }, _isSlot(r = (T?.map((r) => a?.find((a) => a[S.valueField || "value"] === r)) ?? []).map((r, a, o) => {
184
- let s = r ? r[S.labelField ?? "label"] ?? "" : T[a] ?? "";
185
- return createVNode("span", { key: r ? r[S.valueField ?? "value"] : T[a] ?? "" }, [s, a < o.length - 1 ? ", " : ""]);
186
- })) ? r : { default: () => [r] });
183
+ }, _isSlot(e = (x?.map((e) => t?.find((t) => t[y.valueField || "value"] === e)) ?? []).map((e, t, n) => {
184
+ let r = e ? e[y.labelField ?? "label"] ?? "" : x[t] ?? "";
185
+ return createVNode("span", { key: e ? e[y.valueField ?? "value"] : x[t] ?? "" }, [r, t < n.length - 1 ? ", " : ""]);
186
+ })) ? e : { default: () => [e] });
187
187
  }
188
- return o = d, b === "number" && !s && (s = (r, ...a) => {
189
- o(multiple0 ? r?.map(C) : C(r), ...a);
188
+ return n = s, _ === "number" && !r && (r = (e, ...t) => {
189
+ n(e?.map(v), ...t);
190
190
  }), h(NCheckboxes, {
191
- ...S,
192
- ...g,
193
- options: a,
194
- modelValue: T,
195
- "onUpdate:modelValue": b === "number" ? s : o
191
+ ...y,
192
+ ...d,
193
+ options: t,
194
+ modelValue: x,
195
+ "onUpdate:modelValue": _ === "number" ? r : n
196
196
  });
197
197
  };
198
198
  },
199
199
  radios: () => {
200
- let r, a, o, s;
201
- return ({ props: c }, { modelValue: u, "onUpdate:modelValue": d, required: f, readonly: m,...g }) => {
202
- let { dictType: v, options: y, valueType: b = "string",...S } = mapProps(c), w = b === "number" ? x : _;
203
- y ? a = y : r !== v && (r = v, !a && r && (a = useDict(r)));
204
- let T = w(u);
205
- if (m) {
206
- let r = a?.find((r) => r[S.valueField ?? "value"] === T);
200
+ let e, t, n, r;
201
+ return ({ props: i }, { modelValue: o, "onUpdate:modelValue": s, required: c, readonly: u, ...d }) => {
202
+ let { dictType: m, options: g, valueType: _ = "string", ...y } = mapProps(i), b = _ === "number" ? p : f;
203
+ g ? t = g : e !== m && (e = m, !t && e && (t = useDict(e)));
204
+ let x = b(o);
205
+ if (u) {
206
+ let e = t?.find((e) => e[y.valueField ?? "value"] === x);
207
207
  return createVNode(NText, {
208
208
  depth: 2,
209
209
  style: "line-height: 1.25"
210
- }, { default: () => [r ? r[S.labelField ?? "label"] ?? "" : T ?? ""] });
210
+ }, { default: () => [e ? e[y.labelField ?? "label"] ?? "" : x ?? ""] });
211
211
  }
212
- return o = d, b === "number" && !s && (s = (r, ...a) => {
213
- o(C(r), ...a);
212
+ return n = s, _ === "number" && !r && (r = (e, ...t) => {
213
+ n(v(e), ...t);
214
214
  }), h(NRadios, {
215
- ...S,
216
- ...g,
217
- options: a,
218
- modelValue: T,
219
- "onUpdate:modelValue": b === "number" ? s : o
215
+ ...y,
216
+ ...d,
217
+ options: t,
218
+ modelValue: x,
219
+ "onUpdate:modelValue": _ === "number" ? r : n
220
220
  });
221
221
  };
222
222
  },
223
- datepicker: () => ({ slots: r, props: a }, { modelValue: o, "onUpdate:modelValue": s, required: c, readonly: l,...u }) => {
224
- let { type: d = "date", format: f = d.startsWith("datetime") ? "yyyy-MM-dd HH:mm:ss" : "yyyy-MM-dd",...m } = mapProps(a);
225
- return l ? d.endsWith("range") ? createVNode(NText, {
223
+ datepicker: () => ({ slots: e, props: t }, { modelValue: n, "onUpdate:modelValue": r, required: i, readonly: a, ...o }) => {
224
+ let { type: s = "date", format: c = s.startsWith("datetime") ? "yyyy-MM-dd HH:mm:ss" : "yyyy-MM-dd", ...u } = mapProps(t);
225
+ return a ? s.endsWith("range") ? createVNode(NText, {
226
226
  depth: 2,
227
227
  style: "line-height: 1.25"
228
- }, { default: () => [o ? `${o[0] ? format(o[0], f) : ""} ~ ${o[1] ? format(o[1], f) : ""}` : ""] }) : createVNode(NText, {
228
+ }, { default: () => [n ? `${n[0] ? format(n[0], c) : ""} ~ ${n[1] ? format(n[1], c) : ""}` : ""] }) : createVNode(NText, {
229
229
  depth: 2,
230
230
  style: "line-height: 1.25"
231
- }, { default: () => [o ? format(o, f) : ""] }) : h(NDatePicker, {
231
+ }, { default: () => [n ? format(n, c) : ""] }) : h(NDatePicker, {
232
232
  actions: null,
233
233
  updateValueOnClose: !0,
234
234
  clearable: !0,
235
- ...m,
236
235
  ...u,
237
- type: d,
238
- format: f,
239
- value: o,
240
- "onUpdate:value": s
241
- }, r);
236
+ ...o,
237
+ type: s,
238
+ format: c,
239
+ value: n,
240
+ "onUpdate:value": r
241
+ }, e);
242
242
  },
243
- file: () => ({ slots: r, props: a }, { modelValue: o, "onUpdate:modelValue": s, required: c, readonly: l,...u }) => {
244
- if (a = mapProps(a), l) {
245
- let r;
246
- return console.warn("[file] 原则上此组建不应该显示在详情中"), fileList.value.length === 0 ? void 0 : createVNode(NFlex, {
243
+ file: () => ({ slots: e, props: t }, { modelValue: n, "onUpdate:modelValue": r, required: i, readonly: a, ...o }) => {
244
+ if (t = mapProps(t), a) {
245
+ let e;
246
+ return console.warn("[file] 原则上此组建不应该显示在详情中"), n?.length ? createVNode(NFlex, {
247
247
  gap: "8",
248
248
  vertical: !0
249
- }, _isSlot(r = o.map((r) => createVNode("a", {
250
- key: r.id,
251
- href: r.url,
249
+ }, _isSlot(e = n.map((e) => createVNode("a", {
250
+ key: e.id,
251
+ href: e.url,
252
252
  target: "_blank",
253
253
  rel: "noreferrer",
254
254
  style: "max-width: 100px; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; display: inline-block"
255
- }, [r.name]))) ? r : { default: () => [r] });
255
+ }, [e.name]))) ? e : { default: () => [e] }) : void 0;
256
256
  }
257
257
  return h(SimpleUpload, {
258
- ...a,
259
- ...u,
258
+ ...t,
259
+ ...o,
260
260
  defaultUpload: !1,
261
- uploadFile: m,
262
- fileList: o,
263
- onUpdateFileList: s
264
- }, r);
261
+ uploadFile: u,
262
+ fileList: n,
263
+ onUpdateFileList: r
264
+ }, e);
265
265
  },
266
266
  upload: () => {
267
- let r = null, a = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), s = shallowRef([]), c = 0, l = (r) => {
268
- let a = ++c;
269
- s.value = r.map((r) => o.get(r)).filter(Boolean);
270
- let l = r.filter((r) => !o.has(r));
271
- Promise.resolve(l.length > 0 ? g(l) : []).then((l) => {
272
- if (a === c) {
273
- s.value = r.map((r) => o.get(r) || l.find((a) => a.id === r)), o.clear();
274
- for (let r of s.value) o.set(r.id, r);
267
+ let e = null, t = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Map(), r = shallowRef([]), i = 0, a = (e) => {
268
+ let t = ++i;
269
+ r.value = e.map((e) => n.get(e)).filter(Boolean);
270
+ let a = e.filter((e) => !n.has(e));
271
+ Promise.resolve(a.length > 0 ? d(a) : []).then((a) => {
272
+ if (t === i) {
273
+ r.value = e.map((e) => n.get(e) || a.find((t) => t.id === e)), n.clear();
274
+ for (let e of r.value) n.set(e.id, e);
275
275
  }
276
276
  });
277
- }, u;
277
+ }, o, s;
278
278
  return {
279
- renderer: ({ slots: c, props: d }, { modelValue: f, "onUpdate:modelValue": g, required: _, readonly: y,...b }) => {
280
- let x = mapProps(d);
281
- if (u = x.ref ??= shallowRef(), r !== f && (r = f, l(f?.split(",") ?? [])), y) {
282
- let r;
283
- return s.value.length === 0 ? void 0 : createVNode(NFlex, {
279
+ renderer: ({ slots: i, props: c }, { modelValue: d, "onUpdate:modelValue": f, required: p, readonly: g, ..._ }) => {
280
+ let v = mapProps(c);
281
+ if (s = v.maxSize, o = v.ref ??= shallowRef(), e !== d && (e = d, a(d?.split(",") ?? [])), g) {
282
+ let e;
283
+ return r.value.length === 0 ? void 0 : createVNode(NFlex, {
284
284
  gap: "8",
285
285
  vertical: !0,
286
286
  style: "padding: 6px 0"
287
- }, _isSlot(r = s.value.map((r) => createVNode("a", {
288
- key: r.id,
289
- href: r.url,
287
+ }, _isSlot(e = r.value.map((e) => createVNode("a", {
288
+ key: e.id,
289
+ href: e.url,
290
290
  target: "_blank",
291
291
  rel: "noreferrer",
292
- title: r.name,
293
- download: r.name,
292
+ title: e.name,
293
+ download: e.name,
294
294
  style: "max-width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; display: inline-block"
295
- }, [r.name]))) ? r : { default: () => [r] });
295
+ }, [e.name]))) ? e : { default: () => [e] });
296
296
  }
297
297
  return h(SimpleUpload, {
298
- ...x,
299
- ...b,
300
- uploadFile: m,
301
- fileList: s.value,
302
- onUpdateFileList: (r = []) => {
303
- o.clear();
304
- for (let s of r) s.file?.fileId && a.set(s.id, s.file.fileId), s.file?.fileId ? o.set(s.file.fileId, s) : o.set(s.id, s);
305
- s.value = r, g(s.value.map((r) => a.get(r.id) || r.id).join(",") || null);
298
+ ...v,
299
+ ..._,
300
+ uploadFile: u,
301
+ fileList: r.value,
302
+ onUpdateFileList: (e = []) => {
303
+ n.clear();
304
+ for (let r of e) r.file?.fileId && t.set(r.id, r.file.fileId), r.file?.fileId ? n.set(r.file.fileId, r) : n.set(r.id, r);
305
+ r.value = e, f(r.value.map((e) => t.get(e.id) || e.id).join(",") || null);
306
306
  }
307
- }, c);
307
+ }, i);
308
308
  },
309
309
  beforeSubmit: async () => {
310
- if (await u?.value?.submit(), await until(s).toMatch((r) => r.every((r) => !["pending", "uploading"].includes(r.status))), s.value.some((r) => r.status === "error")) return SimpleUpload.t("common.page.form.validate.fileErrorMessage");
310
+ if (await o?.value?.submit(), await until(r).toMatch((e) => e.every((e) => !["pending", "uploading"].includes(e.status))), r.value.some((e) => e.size > s * 1024)) return SimpleUpload.t("common.page.form.validate.fileSizeExceeded", { maxSize: s });
311
+ if (r.value.some((e) => e.status === "error")) return SimpleUpload.t("common.page.form.validate.fileErrorMessage");
311
312
  }
312
313
  };
313
314
  },
314
315
  user: () => {
315
- let l, u, m;
316
- return ({ slots: g, props: _ }, { modelValue: y, "onUpdate:modelValue": b, required: x, readonly: S,...C }) => {
317
- let w = mapProps(_);
318
- return l || (l = shallowRef([]), u = shallowRef([]), m = shallowRef([]), f().then((r) => {
319
- l.value = r;
320
- }), r().then((r) => {
321
- u.value = r;
322
- }), c().then((r) => {
323
- m.value = r;
324
- })), S ? createVNode(DtUserRender, {
325
- value: y,
326
- multiple: w.multiple,
327
- getUsersByUsername: f
316
+ let a, o, u;
317
+ return ({ slots: d, props: f }, { modelValue: p, "onUpdate:modelValue": g, required: _, readonly: v, ...y }) => {
318
+ let b = mapProps(f);
319
+ return a || (a = shallowRef([]), o = shallowRef([]), u = shallowRef([]), c().then((e) => {
320
+ a.value = e;
321
+ }), e().then((e) => {
322
+ o.value = e;
323
+ }), i().then((e) => {
324
+ u.value = e;
325
+ })), v ? createVNode(DtUserRender, {
326
+ value: p,
327
+ multiple: b.multiple,
328
+ getUsersByUsername: c,
329
+ renderInfo: b.renderInfo
328
330
  }, null) : h(DtUserDept, {
329
331
  type: "user",
330
- users: l.value,
331
- depts: m.value,
332
- groups: u.value,
333
- getUsersByDept: d,
334
- getUsersByGroup: o,
335
- ...w,
336
- ...C,
337
- modelValue: y,
338
- "onUpdate:modelValue": b
339
- }, g);
332
+ users: a.value,
333
+ depts: u.value,
334
+ groups: o.value,
335
+ getUsersByDept: s,
336
+ getUsersByGroup: n,
337
+ ...b,
338
+ ...y,
339
+ renderUserInfo: b.renderInfo,
340
+ modelValue: p,
341
+ "onUpdate:modelValue": g
342
+ }, d);
340
343
  };
341
344
  }
342
345
  };
343
346
  }
344
- function createDescriptionHelper({ getDeptsByCode: r, getUsersByUsername: o, getFileInfos: s, previewFileUrl: l }) {
345
- let u = (r) => () => (a, o, { params: s = {} }) => {
346
- if (a != null) return format(a, s.formatter ?? r);
347
- }, d = (r = {}) => createVNode("svg", mergeProps({
347
+ function createDescriptionHelper({ getDeptsByCode: e, getUsersByUsername: n, getFileInfos: r, previewFileUrl: a }) {
348
+ let o = (e) => (t, n, { params: r = {} }) => {
349
+ if (t != null) return format(t, r.formatter ?? e);
350
+ }, s = (e = {}) => createVNode("svg", mergeProps({
348
351
  xmlns: "http://www.w3.org/2000/svg",
349
352
  width: "1em",
350
353
  height: "1em",
351
354
  viewBox: "0 0 32 32"
352
- }, r), [createVNode("circle", {
355
+ }, e), [createVNode("circle", {
353
356
  cx: "16",
354
357
  cy: "16",
355
358
  r: "8",
356
359
  fill: "currentColor"
357
360
  }, null)]);
358
361
  return {
359
- date: u("yyyy-MM-dd"),
360
- datetime: u("yyyy-MM-dd HH:mm:ss"),
362
+ date: () => ({
363
+ renderer: o("yyyy-MM-dd"),
364
+ default: { table: {
365
+ width: 140,
366
+ align: "center",
367
+ sortable: !0
368
+ } }
369
+ }),
370
+ datetime: () => ({
371
+ renderer: o("yyyy-MM-dd HH:mm:ss"),
372
+ default: { table: {
373
+ width: 174,
374
+ align: "center",
375
+ sortable: !0
376
+ } }
377
+ }),
361
378
  dict: () => {
362
- let r, a, o;
363
- return (s, c, { params: l = {} }) => {
364
- if (s == null) return;
365
- let { dictType: u, options: f, multiple: p, statusMap: m } = mapProps(l);
366
- if (f ? a !== f && (a = f, o = new Map(f.map((r) => [r[l.valueField || "value"], r]))) : r !== u && (r = u, !o && r && (o = useDictMap(r))), !p) {
367
- if (s = s.toString(), m && s in m) {
368
- let r = m[s] ?? "default";
379
+ let e, t, n;
380
+ return (r, i, { params: a = {} }) => {
381
+ if (r == null) return;
382
+ let { dictType: o, options: c, multiple: l, statusMap: u } = mapProps(a);
383
+ if (c ? t !== c && (t = c, n = new Map(c.map((e) => [e[a.valueField || "value"], e]))) : e !== o && (e = o, !n && e && (n = useDictMap(e))), !l) {
384
+ if (r = r.toString(), u && r in u) {
385
+ let e = u[r] ?? "default";
369
386
  return [
370
387
  "primary",
371
388
  "success",
372
389
  "warning",
373
390
  "danger"
374
- ].includes(r) && (r = `var(--color-${r})`), createVNode("span", { style: "position: relative; padding-left: 1.25em" }, [createVNode(d, { style: `color: ${r}; position: absolute;left: 0; top: 1.5px` }, null), createVNode("span", null, [o.get(s)?.[l.labelField || "label"] ?? s ?? ""])]);
391
+ ].includes(e) && (e = `var(--color-${e})`), createVNode("span", { style: "position: relative; padding-left: 1.25em" }, [createVNode(s, { style: `color: ${e}; position: absolute;left: 0; top: 1.5px` }, null), createVNode("span", null, [n.get(r)?.[a.labelField || "label"] ?? r ?? ""])]);
375
392
  }
376
- return o.get(s)?.[l.labelField || "label"] ?? s ?? "";
393
+ return n.get(r)?.[a.labelField || "label"] ?? r ?? "";
377
394
  }
378
- return s?.map((r) => o.get(r?.toString())?.[l.labelField || "label"] ?? r?.toString() ?? "") ?? "";
395
+ return r?.map((e) => n.get(e?.toString())?.[a.labelField || "label"] ?? e?.toString() ?? "") ?? "";
379
396
  };
380
397
  },
381
- number: () => (r, a, { params: o = {} }) => {
382
- if (r != null) {
383
- switch (o.percent && (r = Number(r) * 100), "number") {
384
- case typeof o.fixed:
385
- r = r.toFixed(o.fixed);
386
- break;
387
- case typeof o.round:
388
- r = r.toFixed(o.round).replace(/0+$/, "");
389
- break;
390
- case typeof o.precision:
391
- r = r.toPrecision(o.precision);
392
- break;
398
+ number: () => ({
399
+ renderer: (e, t, { params: n = {} }) => {
400
+ if (e != null) {
401
+ switch (n.percent && (e = Number(e) * 100), "number") {
402
+ case typeof n.fixed:
403
+ e = e.toFixed(n.fixed);
404
+ break;
405
+ case typeof n.round:
406
+ e = e.toFixed(n.round).replace(/0+$/, "");
407
+ break;
408
+ case typeof n.precision:
409
+ e = e.toPrecision(n.precision);
410
+ break;
411
+ }
412
+ return n?.separator ? Number(e).toLocaleString() : e;
393
413
  }
394
- return o?.separator ? Number(r).toLocaleString() : r;
395
- }
396
- },
397
- email: () => (r) => createVNode("a", { href: `mailto:${r}` }, [r]),
398
- url: () => (r) => createVNode("a", { href: r }, [r]),
399
- color: () => (r) => createVNode(NColorPicker, {
400
- value: r,
414
+ },
415
+ default: { table: {
416
+ width: 100,
417
+ align: "right",
418
+ sortable: !0
419
+ } }
420
+ }),
421
+ email: () => (e) => createVNode("a", { href: `mailto:${e}` }, [e]),
422
+ url: () => (e) => createVNode("a", { href: e }, [e]),
423
+ color: () => (e) => createVNode(NColorPicker, {
424
+ value: e,
401
425
  disabled: !0,
402
426
  size: "small"
403
427
  }, null),
404
- image: () => (r, a, { params: o = {} }) => {
405
- let s;
406
- return r ? createVNode(NFlex, {
428
+ image: () => (e, t, { params: n = {} }) => {
429
+ let r;
430
+ return e ? createVNode(NFlex, {
407
431
  gap: "8",
408
432
  wrap: !0
409
- }, _isSlot(s = (Array.isArray(r) ? r : o?.multiple ? r.split(",") : [r]).map((r) => l(r)).map((r) => createVNode("img", {
410
- key: r,
411
- src: r,
433
+ }, _isSlot(r = (Array.isArray(e) ? e : n?.multiple ? e.split(",") : [e]).map((e) => a(e)).map((e) => createVNode("img", {
434
+ key: e,
435
+ src: e,
412
436
  style: "max-height: 32px; max-width: 100px; object-fit: contain"
413
- }, null))) ? s : { default: () => [s] }) : void 0;
437
+ }, null))) ? r : { default: () => [r] }) : void 0;
414
438
  },
415
439
  file: () => {
416
- let r = nanoid();
417
- return (a, o, { params: c = {} }) => {
418
- let l;
419
- return a ? (o.__file_urls ??= {}, o.__file_urls[r] || s(Array.isArray(a) ? a : c?.multiple ? a.split(",") : [a]).then((a) => {
420
- o.__file_urls[r] = a;
440
+ let e = nanoid();
441
+ return (t, n, { params: i = {} }) => {
442
+ let a;
443
+ return t ? (n.__file_urls ??= {}, n.__file_urls[e] || r(Array.isArray(t) ? t : i?.multiple ? t.split(",") : [t]).then((t) => {
444
+ n.__file_urls[e] = t;
421
445
  }), createVNode(NFlex, {
422
446
  gap: "8",
423
447
  wrap: !0
424
- }, _isSlot(l = (o.__file_urls[r] || []).map((r) => createVNode("a", {
425
- key: r.id,
426
- href: r.url,
448
+ }, _isSlot(a = (n.__file_urls[e] || []).map((e) => createVNode("a", {
449
+ key: e.id,
450
+ href: e.url,
427
451
  target: "_blank",
428
452
  rel: "noreferrer",
429
453
  style: "max-width: 100px; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; display: inline-block"
430
- }, [r.name]))) ? l : { default: () => [l] })) : void 0;
454
+ }, [e.name]))) ? a : { default: () => [a] })) : void 0;
431
455
  };
432
456
  },
433
- dept: () => (a, o, { params: s = {} }) => {
434
- if (a) return createVNode(DtDeptRender, {
435
- value: a,
436
- multiple: s?.multiple,
437
- getDeptsByCode: r
457
+ dept: () => (t, n, { params: r = {} }) => {
458
+ if (t) return createVNode(DtDeptRender, {
459
+ value: t,
460
+ multiple: r?.multiple,
461
+ getDeptsByCode: e
438
462
  }, null);
439
463
  },
440
- user: () => (r, s, { params: c = {} }) => {
441
- if (r) return createVNode(DtUserRender, {
442
- value: r,
443
- multiple: c?.multiple,
444
- getUsersByUsername: o
445
- }, null);
446
- }
464
+ user: () => ({
465
+ renderer: (e, r, { params: i = {} }) => {
466
+ if (e) return createVNode(DtUserRender, {
467
+ value: e,
468
+ multiple: i?.multiple,
469
+ getUsersByUsername: n
470
+ }, null);
471
+ },
472
+ default: { table: {
473
+ width: 150,
474
+ ellipsis: !1,
475
+ align: "center"
476
+ } }
477
+ })
447
478
  };
448
479
  }
449
480
  function createFormHelper() {
450
- return () => ({ items: r, model: a, handleSubmit: s, reset: c, validation: l, readonly: u, inModal: d, showFeedback: f, showColon: p, labelWidth: m, labelAlign: g, labelPlacement: _, showRequireMark: v, requireMarkPlacement: b }) => createVNode(DataForm, {
451
- readonly: u,
452
- model: a,
453
- items: r,
454
- validation: l,
455
- showColon: unref(p) ?? !0,
456
- labelWidth: unref(m),
457
- labelAlign: unref(g),
458
- labelPlacement: unref(_),
459
- showRequireMark: unref(v),
460
- requireMarkPlacement: unref(b),
461
- showFeedback: unref(f) ?? !0,
481
+ return () => ({ items: e, model: t, handleSubmit: r, reset: i, validation: a, readonly: o, inModal: s, showFeedback: c, showColon: l, labelWidth: u, labelAlign: d, labelPlacement: f, showRequireMark: p, requireMarkPlacement: m }) => createVNode(DataForm, {
482
+ readonly: o,
483
+ model: t,
484
+ items: e,
485
+ validation: a,
486
+ showColon: unref(l) ?? !0,
487
+ labelWidth: unref(u),
488
+ labelAlign: unref(d),
489
+ labelPlacement: unref(f),
490
+ showRequireMark: unref(p),
491
+ requireMarkPlacement: unref(m),
492
+ showFeedback: unref(c) ?? !0,
462
493
  showAction: !1,
463
- onSubmit: s,
464
- onRest: c,
465
- style: d ? "padding-right: 2rem; padding-top: 1rem" : void 0
494
+ onSubmit: r,
495
+ onReset: i,
496
+ style: s ? "padding-right: 2rem; padding-top: 1rem" : void 0
466
497
  }, null);
467
498
  }
468
499
  function createModalHelper() {
469
- let r = (r) => typeof r == "number" ? `${r}px` : r, a = {
500
+ let e = (e) => typeof e == "number" ? `${e}px` : e, t = {
470
501
  maxHeight: "calc(100vh - 130px)",
471
502
  display: "flex",
472
503
  flexDirection: "column"
473
- }, o = { content: !0 };
474
- return () => ({ type: s = "dialog", visible: c, title: l, content: u, footer: d, placement: f, resizable: p, draggable: m, closeOnEsc: _, closable: v, showMask: y, maskClosable: b, width: S, height: C, style: w, onClose: O, onCancel: k, onConfirm: A, onAfterClose: j, onAfterOpen: M, confirmText: N, confirmDisabled: P, confirmLoading: F, cancelText: I, cancelDisabled: L, cancelLoading: R, nativeScrollbar: z,...B }) => {
475
- let V = d ? () => d : d === null ? null : () => createVNode(NFlex, {
504
+ }, n = { content: !0 };
505
+ return () => ({ type: r = "dialog", visible: i, title: a, content: o, footer: s, placement: c, resizable: l, draggable: u, closeOnEsc: f, closable: p, showMask: m, maskClosable: g, width: _, height: y, style: b, onClose: x, onCancel: w, onConfirm: T, onAfterClose: E, onAfterOpen: D, confirmText: O, confirmDisabled: k, confirmLoading: A, cancelText: j, cancelDisabled: M, cancelLoading: N, nativeScrollbar: P, ...F }) => {
506
+ let I = s ? () => s : s === null ? null : () => createVNode(NFlex, {
476
507
  justify: "end",
477
508
  gap: "16"
478
- }, { default: () => [I === null ? void 0 : createVNode(NButton, {
479
- onClick: k,
480
- disabled: L,
481
- loading: R,
509
+ }, { default: () => [j === null ? void 0 : createVNode(NButton, {
510
+ onClick: w,
511
+ disabled: M,
512
+ loading: N,
482
513
  style: "min-width: 60px"
483
- }, _isSlot(I) ? I : { default: () => [I] }), N === null ? void 0 : createVNode(NButton, {
514
+ }, _isSlot(j) ? j : { default: () => [j] }), O === null ? void 0 : createVNode(NButton, {
484
515
  type: "primary",
485
- onClick: A,
486
- disabled: P,
487
- loading: F,
516
+ onClick: T,
517
+ disabled: k,
518
+ loading: A,
488
519
  style: "min-width: 60px"
489
- }, _isSlot(N) ? N : { default: () => [N] })] });
490
- if (s === "dialog") {
491
- let { style: s } = mergeProps({ style: {
492
- width: r(S ?? 520),
493
- height: r(C)
494
- } }, { style: w });
520
+ }, _isSlot(O) ? O : { default: () => [O] })] });
521
+ if (r === "dialog") {
522
+ let { style: r } = mergeProps({ style: {
523
+ width: e(_ ?? 520),
524
+ height: e(y)
525
+ } }, { style: b });
495
526
  return createVNode(NModal, mergeProps({
496
- show: c,
527
+ show: i,
497
528
  preset: "card",
498
- title: () => l,
499
- maskClosable: b ?? !1,
500
- closeOnEsc: _,
501
- closable: v,
502
- onClose: O,
503
- segmented: o,
529
+ title: () => a,
530
+ maskClosable: g ?? !1,
531
+ closeOnEsc: f,
532
+ closable: p,
533
+ onClose: x,
534
+ segmented: n,
504
535
  size: "small",
505
- onAfterEnter: M,
506
- onAfterLeave: j,
507
- onUpdateShow: O,
508
- draggable: m ?? !0,
509
- style: s,
510
- contentStyle: a
511
- }, B), {
536
+ onAfterEnter: D,
537
+ onAfterLeave: E,
538
+ onUpdateShow: x,
539
+ draggable: u ?? !0,
540
+ style: r,
541
+ contentStyle: t
542
+ }, F), {
512
543
  default: () => createVNode(NScrollbar, {
513
544
  abstract: !0,
514
545
  style: "display: flex; flex-direction: column"
515
- }, _isSlot(u) ? u : { default: () => [u] }),
516
- action: V
546
+ }, _isSlot(o) ? o : { default: () => [o] }),
547
+ action: I
517
548
  });
518
549
  }
519
- let { bodyContentClass: H, bodyContentStyle: U,...W } = B;
550
+ let { bodyContentClass: L, bodyContentStyle: R, ...z } = F;
520
551
  return createVNode(NDrawer, mergeProps({
521
- show: c,
552
+ show: i,
522
553
  trapFocus: !1,
523
- closeOnEsc: _,
524
- showMask: y,
525
- maskClosable: b,
526
- resizable: p,
527
- placement: f,
528
- width: S ?? 440,
529
- height: C,
530
- onUpdateShow: O,
531
- onAfterEnter: M,
532
- onAfterLeave: j,
533
- style: w
534
- }, W), { default: () => [createVNode(NDrawerContent, {
535
- closable: v,
536
- nativeScrollbar: z ?? !1,
537
- bodyContentClass: H,
538
- bodyContentStyle: U
554
+ closeOnEsc: f,
555
+ showMask: m,
556
+ maskClosable: g,
557
+ resizable: l,
558
+ placement: c,
559
+ width: _ ?? 440,
560
+ height: y,
561
+ onUpdateShow: x,
562
+ onAfterEnter: D,
563
+ onAfterLeave: E,
564
+ style: b
565
+ }, z), { default: () => [createVNode(NDrawerContent, {
566
+ closable: p,
567
+ nativeScrollbar: P ?? !1,
568
+ bodyContentClass: L,
569
+ bodyContentStyle: R
539
570
  }, {
540
- default: () => u,
541
- header: () => l,
542
- footer: V
571
+ default: () => o,
572
+ header: () => a,
573
+ footer: I
543
574
  })] });
544
575
  };
545
576
  }