@ithinkdt/ui 4.0.0-51 → 4.0.0-52
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/{components-BC8oa62b.js → components-CTdt73l6.js} +523 -499
- package/dist/components.js +1 -1
- package/dist/page.js +139 -139
- package/esm/components.d.ts +3 -1
- package/esm/page.d.ts +2 -2
- package/package.json +1 -1
package/dist/components.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./use-i18n-Dx7V4KrY.js";
|
|
2
2
|
import "./directives-DUuJW647.js";
|
|
3
3
|
import "./use-style-DcT-1dj4.js";
|
|
4
|
-
import { a as NRadios, c as DataSelection, d as useLocaleEdit, f as DataFilter, g as NCheckboxes, h as DataActions, i as renderUsers, l as DataPagination, m as DataCustom, n as DtUserDept, o as DataTable, p as DataForm, r as DtUserRender, s as useDataTableDrag, t as DtDeptRender, u as DataLocaleInput } from "./components-
|
|
4
|
+
import { a as NRadios, c as DataSelection, d as useLocaleEdit, f as DataFilter, g as NCheckboxes, h as DataActions, i as renderUsers, l as DataPagination, m as DataCustom, n as DtUserDept, o as DataTable, p as DataForm, r as DtUserRender, s as useDataTableDrag, t as DtDeptRender, u as DataLocaleInput } from "./components-CTdt73l6.js";
|
|
5
5
|
export { DataActions, DataCustom, DataFilter, DataForm, DataLocaleInput, DataPagination, DataSelection, DataTable, DtDeptRender, DtUserDept, DtUserRender, NCheckboxes, NRadios, renderUsers, useDataTableDrag, useLocaleEdit };
|
package/dist/page.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { n as useI18n } from "./use-i18n-Dx7V4KrY.js";
|
|
2
2
|
import "./directives-DUuJW647.js";
|
|
3
3
|
import "./use-style-DcT-1dj4.js";
|
|
4
|
-
import { a as NRadios, g as NCheckboxes, n as DtUserDept, p as DataForm, r as DtUserRender, t as DtDeptRender } from "./components-
|
|
4
|
+
import { a as NRadios, g as NCheckboxes, n as DtUserDept, p as DataForm, r as DtUserRender, t as DtDeptRender } from "./components-CTdt73l6.js";
|
|
5
5
|
import { computed, createVNode, defineComponent, h, isVNode, mergeProps, ref, shallowRef, unref } from "vue";
|
|
6
6
|
import { until } from "@vueuse/core";
|
|
7
7
|
import { NButton, NCheckbox, NColorPicker, NDatePicker, NDrawer, NDrawerContent, NFlex, NInput, NInputNumber, NModal, NScrollbar, NSelect, NText, NUpload, useMessage } from "ithinkdt-ui";
|
|
8
8
|
import { format } from "date-fns";
|
|
9
9
|
import { useFormItem } from "ithinkdt-ui/es/_mixins";
|
|
10
10
|
import { useDict, useDictMap } from "@ithinkdt/common/dict";
|
|
11
|
-
function _isSlot(
|
|
12
|
-
return typeof
|
|
11
|
+
function _isSlot(n) {
|
|
12
|
+
return typeof n == "function" || Object.prototype.toString.call(n) === "[object Object]" && !isVNode(n);
|
|
13
13
|
}
|
|
14
|
-
var mapProps = (
|
|
14
|
+
var mapProps = (n) => Object.fromEntries(Object.entries(n || {}).map(([n, c]) => [n, unref(c)])), SimpleUpload = /* @__PURE__ */ defineComponent({
|
|
15
15
|
name: "SimpleUpload",
|
|
16
16
|
props: {
|
|
17
17
|
type: {
|
|
@@ -52,43 +52,43 @@ var mapProps = (r) => Object.fromEntries(Object.entries(r || {}).map(([r, c]) =>
|
|
|
52
52
|
setup(c, { slots: l, expose: u }) {
|
|
53
53
|
let { t: d } = useI18n();
|
|
54
54
|
SimpleUpload.t = d;
|
|
55
|
-
let f = useFormItem(c), p = useMessage(), g = computed(() => c.customRequest || (({ file:
|
|
56
|
-
c.uploadFile(
|
|
57
|
-
|
|
58
|
-
}).catch((
|
|
59
|
-
p.error(
|
|
55
|
+
let f = useFormItem(c), p = useMessage(), g = computed(() => c.customRequest || (({ file: n, onProgress: l, onFinish: u, onError: d }) => {
|
|
56
|
+
c.uploadFile(n.file, (n) => l({ percent: n })).then((c) => {
|
|
57
|
+
n.file.fileId = c, u();
|
|
58
|
+
}).catch((n) => {
|
|
59
|
+
p.error(n.message), d(n);
|
|
60
60
|
});
|
|
61
61
|
})), _ = ref();
|
|
62
62
|
u({ submit() {
|
|
63
|
-
return until(_).toBeTruthy().then((
|
|
63
|
+
return until(_).toBeTruthy().then((n) => n.submit());
|
|
64
64
|
} });
|
|
65
|
-
let v = (
|
|
66
|
-
c.onUpdateFileList?.(
|
|
65
|
+
let v = (n) => {
|
|
66
|
+
c.onUpdateFileList?.(n), nextTick(() => f.nTriggerFormChange());
|
|
67
67
|
};
|
|
68
68
|
return () => {
|
|
69
|
-
let { type:
|
|
69
|
+
let { type: n, onUpdateFileList: u,...p } = c;
|
|
70
70
|
return createVNode(NUpload, mergeProps(p, {
|
|
71
71
|
ref: _,
|
|
72
72
|
customRequest: g.value,
|
|
73
|
-
listType:
|
|
74
|
-
accept: p.accept ??
|
|
73
|
+
listType: n === "image" ? "image-card" : "text",
|
|
74
|
+
accept: p.accept ?? n === "image" ? "image/*" : void 0,
|
|
75
75
|
"onUpdate:fileList": v
|
|
76
76
|
}), {
|
|
77
77
|
default: () => {
|
|
78
|
-
let
|
|
78
|
+
let n;
|
|
79
79
|
return createVNode(NButton, {
|
|
80
80
|
disabled: f.mergedDisabledRef.value,
|
|
81
81
|
size: f.mergedSizeRef.value
|
|
82
|
-
}, _isSlot(
|
|
82
|
+
}, _isSlot(n = d("common.page.form.selectFileText")) ? n : { default: () => [n] });
|
|
83
83
|
},
|
|
84
84
|
...l
|
|
85
85
|
});
|
|
86
86
|
};
|
|
87
87
|
}
|
|
88
88
|
});
|
|
89
|
-
function createPageFormHelper({ getUserGroups:
|
|
89
|
+
function createPageFormHelper({ getUserGroups: n, getUsersByGroup: d, getDeptsByCode: p, getUsersByDept: m, getUsersByUsername: g, uploadFile: v, getFileInfos: y }) {
|
|
90
90
|
return {
|
|
91
|
-
input: () => ({ slots:
|
|
91
|
+
input: () => ({ slots: n, props: c }, { modelValue: l, "onUpdate:modelValue": u, required: d, readonly: f,...p }) => f ? createVNode(NText, {
|
|
92
92
|
depth: 2,
|
|
93
93
|
style: "line-height: 1.25"
|
|
94
94
|
}, { default: () => [l ?? ""] }) : (c = mapProps(c), h(NInput, {
|
|
@@ -97,8 +97,8 @@ function createPageFormHelper({ getUserGroups: r, getUsersByGroup: d, getUsersBy
|
|
|
97
97
|
...p,
|
|
98
98
|
value: l,
|
|
99
99
|
"onUpdate:value": u
|
|
100
|
-
},
|
|
101
|
-
number: () => ({ slots:
|
|
100
|
+
}, n)),
|
|
101
|
+
number: () => ({ slots: n, props: c }, { modelValue: l, "onUpdate:modelValue": u, required: d, readonly: f,...p }) => f ? createVNode(NText, {
|
|
102
102
|
depth: 2,
|
|
103
103
|
style: "line-height: 1.25"
|
|
104
104
|
}, { default: () => [l ?? ""] }) : (c = mapProps(c), h(NInputNumber, {
|
|
@@ -107,26 +107,26 @@ function createPageFormHelper({ getUserGroups: r, getUsersByGroup: d, getUsersBy
|
|
|
107
107
|
...p,
|
|
108
108
|
value: l,
|
|
109
109
|
"onUpdate:value": u
|
|
110
|
-
},
|
|
110
|
+
}, n)),
|
|
111
111
|
select: () => {
|
|
112
|
-
let
|
|
112
|
+
let n, c;
|
|
113
113
|
return ({ slots: l, props: u }, { modelValue: d, "onUpdate:modelValue": f, required: p, readonly: m,...g }) => {
|
|
114
114
|
let { dictType: v, options: y,...b } = mapProps(u);
|
|
115
|
-
if (y ? c = y :
|
|
116
|
-
let
|
|
115
|
+
if (y ? c = y : n !== v && (n = v, !c && n && (c = useDict(n))), m) if (b.multiple) {
|
|
116
|
+
let n;
|
|
117
117
|
return createVNode(NText, {
|
|
118
118
|
depth: 2,
|
|
119
119
|
style: "line-height: 1.25"
|
|
120
|
-
}, _isSlot(
|
|
121
|
-
let u =
|
|
122
|
-
return createVNode("span", { key:
|
|
123
|
-
})) ?
|
|
120
|
+
}, _isSlot(n = (d?.map((n) => c?.find((c) => c[b.valueField || "value"] === n)) ?? []).map((n, c, l) => {
|
|
121
|
+
let u = n ? b.renderLabel ? b.renderLabel(n) ?? "" : n[b.labelField || "label"] ?? "" : d[c] ?? "";
|
|
122
|
+
return createVNode("span", { key: n[b.valueField || "value"] }, [u, c < l.length - 1 ? ", " : ""]);
|
|
123
|
+
})) ? n : { default: () => [n] });
|
|
124
124
|
} else {
|
|
125
|
-
let
|
|
125
|
+
let n = c?.find((n) => n[b.valueField || "value"] === d);
|
|
126
126
|
return createVNode(NText, {
|
|
127
127
|
depth: 2,
|
|
128
128
|
style: "line-height: 1.25"
|
|
129
|
-
}, { default: () => [
|
|
129
|
+
}, { default: () => [n ? b.renderLabel ? b.renderLabel(n) ?? "" : n[b.labelField || "label"] ?? "" : d ?? ""] });
|
|
130
130
|
}
|
|
131
131
|
return h(NSelect, {
|
|
132
132
|
clearable: !0,
|
|
@@ -139,10 +139,10 @@ function createPageFormHelper({ getUserGroups: r, getUsersByGroup: d, getUsersBy
|
|
|
139
139
|
}, l);
|
|
140
140
|
};
|
|
141
141
|
},
|
|
142
|
-
checkbox: () => ({ slots:
|
|
142
|
+
checkbox: () => ({ slots: n, props: c }, { modelValue: l, "onUpdate:modelValue": u, required: d, readonly: f,...p }) => {
|
|
143
143
|
if (c = mapProps(c), f) {
|
|
144
144
|
let u;
|
|
145
|
-
return u = l === (c.checkedValue ?? !0) ?
|
|
145
|
+
return u = l === (c.checkedValue ?? !0) ? n?.checked ? n.checked() : createVNode(NCheckbox, { checked: !0 }, null) : n?.unchecked ? n.unchecked() : createVNode(NCheckbox, { disabled: !0 }, null), createVNode(NText, {
|
|
146
146
|
depth: 2,
|
|
147
147
|
style: "line-height: 1.25"
|
|
148
148
|
}, _isSlot(u) ? u : { default: () => [u] });
|
|
@@ -152,21 +152,21 @@ function createPageFormHelper({ getUserGroups: r, getUsersByGroup: d, getUsersBy
|
|
|
152
152
|
...p,
|
|
153
153
|
checked: l,
|
|
154
154
|
"onUpdate:checked": u
|
|
155
|
-
},
|
|
155
|
+
}, n);
|
|
156
156
|
},
|
|
157
157
|
checkboxes: () => {
|
|
158
|
-
let
|
|
158
|
+
let n, c;
|
|
159
159
|
return ({ props: u }, { modelValue: d, required: f, readonly: p,...m }) => {
|
|
160
160
|
let { dictType: g, options: v,...y } = mapProps(u);
|
|
161
|
-
if (v ? c = v :
|
|
162
|
-
let
|
|
161
|
+
if (v ? c = v : n !== g && (n = g, !c && n && (c = useDict(n))), p) {
|
|
162
|
+
let n;
|
|
163
163
|
return createVNode(NText, {
|
|
164
164
|
depth: 2,
|
|
165
165
|
style: "line-height: 2.4"
|
|
166
|
-
}, _isSlot(
|
|
167
|
-
let u =
|
|
168
|
-
return createVNode("span", { key:
|
|
169
|
-
})) ?
|
|
166
|
+
}, _isSlot(n = (d?.map((n) => c?.find((c) => c[y.valueField || "value"] === n)) ?? []).map((n, c, l) => {
|
|
167
|
+
let u = n ? n[y.labelField ?? "label"] ?? "" : d[c] ?? "";
|
|
168
|
+
return createVNode("span", { key: n[y.valueField ?? "value"] }, [u, c < l.length - 1 ? ", " : ""]);
|
|
169
|
+
})) ? n : { default: () => [n] });
|
|
170
170
|
}
|
|
171
171
|
return h(NCheckboxes, {
|
|
172
172
|
...y,
|
|
@@ -177,15 +177,15 @@ function createPageFormHelper({ getUserGroups: r, getUsersByGroup: d, getUsersBy
|
|
|
177
177
|
};
|
|
178
178
|
},
|
|
179
179
|
radios: () => {
|
|
180
|
-
let
|
|
180
|
+
let n, l;
|
|
181
181
|
return ({ props: u }, { modelValue: d, required: f, readonly: p,...m }) => {
|
|
182
182
|
let { dictType: g, options: v,...y } = mapProps(u);
|
|
183
|
-
if (v ? l = v :
|
|
184
|
-
let
|
|
183
|
+
if (v ? l = v : n !== g && (n = g, !l && n && (l = useDict(n))), p) {
|
|
184
|
+
let n = l?.find((n) => n[y.valueField ?? "value"] === d);
|
|
185
185
|
return createVNode(NText, {
|
|
186
186
|
depth: 2,
|
|
187
187
|
style: "line-height: 1.25"
|
|
188
|
-
}, { default: () => [
|
|
188
|
+
}, { default: () => [n ? n[y.labelField ?? "label"] ?? "" : d ?? ""] });
|
|
189
189
|
}
|
|
190
190
|
return h(NRadios, {
|
|
191
191
|
...y,
|
|
@@ -195,7 +195,7 @@ function createPageFormHelper({ getUserGroups: r, getUsersByGroup: d, getUsersBy
|
|
|
195
195
|
});
|
|
196
196
|
};
|
|
197
197
|
},
|
|
198
|
-
datepicker: () => ({ slots:
|
|
198
|
+
datepicker: () => ({ slots: n, props: c }, { modelValue: l, "onUpdate:modelValue": u, required: d, readonly: f,...p }) => {
|
|
199
199
|
let { type: m = "date", format: g = m.startsWith("datetime") ? "yyyy-MM-dd HH:mm:ss" : "yyyy-MM-dd",...v } = mapProps(c);
|
|
200
200
|
return f ? m.endsWith("range") ? createVNode(NText, {
|
|
201
201
|
depth: 2,
|
|
@@ -211,118 +211,118 @@ function createPageFormHelper({ getUserGroups: r, getUsersByGroup: d, getUsersBy
|
|
|
211
211
|
format: g,
|
|
212
212
|
value: l,
|
|
213
213
|
"onUpdate:value": u
|
|
214
|
-
},
|
|
214
|
+
}, n);
|
|
215
215
|
},
|
|
216
|
-
file: () => ({ slots:
|
|
216
|
+
file: () => ({ slots: n, props: c }, { modelValue: l, "onUpdate:modelValue": u, required: d, readonly: f,...p }) => {
|
|
217
217
|
if (c = mapProps(c), f) {
|
|
218
|
-
let
|
|
218
|
+
let n;
|
|
219
219
|
return console.warn("[file] 原则上此组建不应该显示在详情中"), fileList.value.length === 0 ? void 0 : createVNode(NFlex, {
|
|
220
220
|
gap: "8",
|
|
221
221
|
vertical: !0
|
|
222
|
-
}, _isSlot(
|
|
223
|
-
key:
|
|
224
|
-
href:
|
|
222
|
+
}, _isSlot(n = l.map((n) => createVNode("a", {
|
|
223
|
+
key: n.id,
|
|
224
|
+
href: n.url,
|
|
225
225
|
target: "_blank",
|
|
226
226
|
rel: "noreferrer",
|
|
227
227
|
style: "max-width: 100px; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; display: inline-block"
|
|
228
|
-
}, [
|
|
228
|
+
}, [n.name]))) ? n : { default: () => [n] });
|
|
229
229
|
}
|
|
230
230
|
return h(SimpleUpload, {
|
|
231
231
|
...c,
|
|
232
232
|
...p,
|
|
233
233
|
defaultUpload: !1,
|
|
234
|
-
uploadFile:
|
|
234
|
+
uploadFile: v,
|
|
235
235
|
fileList: l,
|
|
236
236
|
onUpdateFileList: u
|
|
237
|
-
},
|
|
237
|
+
}, n);
|
|
238
238
|
},
|
|
239
239
|
upload: () => {
|
|
240
|
-
let
|
|
240
|
+
let n = null, c = /* @__PURE__ */ new Map(), l = /* @__PURE__ */ new Map(), u = shallowRef([]), d = 0, f = (n) => {
|
|
241
241
|
let c = ++d;
|
|
242
|
-
u.value =
|
|
243
|
-
let f =
|
|
244
|
-
Promise.resolve(f.length > 0 ?
|
|
242
|
+
u.value = n.map((n) => l.get(n)).filter(Boolean);
|
|
243
|
+
let f = n.filter((n) => !l.has(n));
|
|
244
|
+
Promise.resolve(f.length > 0 ? y(f) : []).then((f) => {
|
|
245
245
|
if (c === d) {
|
|
246
|
-
u.value =
|
|
247
|
-
for (let
|
|
246
|
+
u.value = n.map((n) => l.get(n) || f.find((c) => c.id === n)), l.clear();
|
|
247
|
+
for (let n of u.value) l.set(n.id, n);
|
|
248
248
|
}
|
|
249
249
|
});
|
|
250
250
|
}, p;
|
|
251
251
|
return {
|
|
252
|
-
renderer: ({ slots: d, props: m }, { modelValue:
|
|
252
|
+
renderer: ({ slots: d, props: m }, { modelValue: g, "onUpdate:modelValue": y, required: b, readonly: S,...C }) => {
|
|
253
253
|
let w = mapProps(m);
|
|
254
|
-
if (p = w.ref ??= shallowRef(),
|
|
255
|
-
let
|
|
254
|
+
if (p = w.ref ??= shallowRef(), n !== g && (n = g, f(g?.split(",") ?? [])), S) {
|
|
255
|
+
let n;
|
|
256
256
|
return u.value.length === 0 ? void 0 : createVNode(NFlex, {
|
|
257
257
|
gap: "8",
|
|
258
258
|
vertical: !0,
|
|
259
259
|
style: "padding: 6px 0"
|
|
260
|
-
}, _isSlot(
|
|
261
|
-
key:
|
|
262
|
-
href:
|
|
260
|
+
}, _isSlot(n = u.value.map((n) => createVNode("a", {
|
|
261
|
+
key: n.id,
|
|
262
|
+
href: n.url,
|
|
263
263
|
target: "_blank",
|
|
264
264
|
rel: "noreferrer",
|
|
265
|
-
title:
|
|
266
|
-
download:
|
|
265
|
+
title: n.name,
|
|
266
|
+
download: n.name,
|
|
267
267
|
style: "max-width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; display: inline-block"
|
|
268
|
-
}, [
|
|
268
|
+
}, [n.name]))) ? n : { default: () => [n] });
|
|
269
269
|
}
|
|
270
270
|
return h(SimpleUpload, {
|
|
271
271
|
...w,
|
|
272
272
|
...C,
|
|
273
|
-
uploadFile:
|
|
273
|
+
uploadFile: v,
|
|
274
274
|
fileList: u.value,
|
|
275
|
-
onUpdateFileList: (
|
|
275
|
+
onUpdateFileList: (n = []) => {
|
|
276
276
|
l.clear();
|
|
277
|
-
for (let u of
|
|
278
|
-
u.value =
|
|
277
|
+
for (let u of n) u.file?.fileId && c.set(u.id, u.file.fileId), u.file?.fileId ? l.set(u.file.fileId, u) : l.set(u.id, u);
|
|
278
|
+
u.value = n, y(u.value.map((n) => c.get(n.id) || n.id).join(",") || null);
|
|
279
279
|
}
|
|
280
280
|
}, d);
|
|
281
281
|
},
|
|
282
282
|
beforeSubmit: async () => {
|
|
283
|
-
if (await p?.value?.submit(), await until(u).toMatch((
|
|
283
|
+
if (await p?.value?.submit(), await until(u).toMatch((n) => n.every((n) => !["pending", "uploading"].includes(n.status))), u.value.some((n) => n.status === "error")) return SimpleUpload.t("common.page.form.validate.fileErrorMessage");
|
|
284
284
|
}
|
|
285
285
|
};
|
|
286
286
|
},
|
|
287
287
|
user: () => {
|
|
288
|
-
let c;
|
|
289
|
-
return ({ slots:
|
|
290
|
-
let
|
|
291
|
-
return c || (c = shallowRef([]),
|
|
292
|
-
c.value =
|
|
293
|
-
}),
|
|
294
|
-
|
|
295
|
-
}),
|
|
296
|
-
|
|
297
|
-
})),
|
|
298
|
-
value:
|
|
299
|
-
multiple:
|
|
300
|
-
getUsersByUsername:
|
|
288
|
+
let c, l, v;
|
|
289
|
+
return ({ slots: y, props: b }, { modelValue: S, "onUpdate:modelValue": C, required: w, readonly: T,...E }) => {
|
|
290
|
+
let D = mapProps(b);
|
|
291
|
+
return c || (c = shallowRef([]), l = shallowRef([]), v = shallowRef([]), g().then((n) => {
|
|
292
|
+
c.value = n;
|
|
293
|
+
}), n().then((n) => {
|
|
294
|
+
l.value = n;
|
|
295
|
+
}), p().then((n) => {
|
|
296
|
+
v.value = n;
|
|
297
|
+
})), T ? createVNode(DtUserRender, {
|
|
298
|
+
value: S,
|
|
299
|
+
multiple: D.multiple,
|
|
300
|
+
getUsersByUsername: g
|
|
301
301
|
}, null) : h(DtUserDept, {
|
|
302
302
|
type: "user",
|
|
303
303
|
users: c.value,
|
|
304
|
-
depts:
|
|
305
|
-
groups:
|
|
306
|
-
getUsersByDept:
|
|
304
|
+
depts: v.value,
|
|
305
|
+
groups: l.value,
|
|
306
|
+
getUsersByDept: m,
|
|
307
307
|
getUsersByGroup: d,
|
|
308
|
-
...
|
|
309
|
-
...
|
|
310
|
-
modelValue:
|
|
311
|
-
"onUpdate:modelValue":
|
|
312
|
-
},
|
|
308
|
+
...D,
|
|
309
|
+
...E,
|
|
310
|
+
modelValue: S,
|
|
311
|
+
"onUpdate:modelValue": C
|
|
312
|
+
}, y);
|
|
313
313
|
};
|
|
314
314
|
}
|
|
315
315
|
};
|
|
316
316
|
}
|
|
317
|
-
function createPageTableHelper({ getDeptsByCode:
|
|
318
|
-
let d = (
|
|
319
|
-
if (c != null) return format(c, d.formatter ??
|
|
320
|
-
}, m = (
|
|
317
|
+
function createPageTableHelper({ getDeptsByCode: n, getUsersByUsername: c, getFileInfos: l, previewFileUrl: u }) {
|
|
318
|
+
let d = (n) => () => (c, l, u, d) => {
|
|
319
|
+
if (c != null) return format(c, d.formatter ?? n);
|
|
320
|
+
}, m = (n = {}) => createVNode("svg", mergeProps({
|
|
321
321
|
xmlns: "http://www.w3.org/2000/svg",
|
|
322
322
|
width: "1em",
|
|
323
323
|
height: "1em",
|
|
324
324
|
viewBox: "0 0 32 32"
|
|
325
|
-
},
|
|
325
|
+
}, n), [createVNode("circle", {
|
|
326
326
|
cx: "16",
|
|
327
327
|
cy: "16",
|
|
328
328
|
r: "8",
|
|
@@ -332,87 +332,87 @@ function createPageTableHelper({ getDeptsByCode: r, getUsersByUsername: c, getFi
|
|
|
332
332
|
date: d("yyyy-MM-dd"),
|
|
333
333
|
datetime: d("yyyy-MM-dd HH:mm:ss"),
|
|
334
334
|
dict: () => {
|
|
335
|
-
let
|
|
335
|
+
let n, c, l;
|
|
336
336
|
return (u, d, f, p) => {
|
|
337
337
|
if (u == null) return;
|
|
338
338
|
let { dictType: g, options: _, multiple: v, statusMap: y } = mapProps(p);
|
|
339
|
-
if (_ ? c !== _ && (c = _, l = new Map(_.map((
|
|
339
|
+
if (_ ? c !== _ && (c = _, l = new Map(_.map((n) => [n[p.valueField || "value"], n]))) : n !== g && (n = g, !l && n && (l = useDictMap(n))), !v) {
|
|
340
340
|
if (u = u.toString(), y && u in y) {
|
|
341
|
-
let
|
|
341
|
+
let n = y[u] ?? "default";
|
|
342
342
|
return [
|
|
343
343
|
"primary",
|
|
344
344
|
"success",
|
|
345
345
|
"warning",
|
|
346
346
|
"danger"
|
|
347
|
-
].includes(
|
|
347
|
+
].includes(n) && (n = `var(--color-${n})`), createVNode("span", { style: "position: relative; padding-left: 1.25em" }, [createVNode(m, { style: `color: ${n}; position: absolute;left: 0; top: 1.5px` }, null), createVNode("span", null, [l.get(u?.toString())?.[p.labelField || "label"] ?? ""])]);
|
|
348
348
|
}
|
|
349
349
|
return l.get(u)?.[p.labelField || "label"] ?? "";
|
|
350
350
|
}
|
|
351
|
-
return u?.map((
|
|
351
|
+
return u?.map((n) => l.get(n.toString())?.[p.labelField || "label"]) ?? "";
|
|
352
352
|
};
|
|
353
353
|
},
|
|
354
|
-
number: () => (
|
|
355
|
-
if (
|
|
356
|
-
switch (u.percent && (
|
|
354
|
+
number: () => (n, c, l, u) => {
|
|
355
|
+
if (n != null) {
|
|
356
|
+
switch (u.percent && (n = Number(n) * 100), "number") {
|
|
357
357
|
case typeof u.fixed:
|
|
358
|
-
|
|
358
|
+
n = n.toFixed(u.fixed);
|
|
359
359
|
break;
|
|
360
360
|
case typeof u.round:
|
|
361
|
-
|
|
361
|
+
n = n.toFixed(u.round).replace(/0+$/, "");
|
|
362
362
|
break;
|
|
363
363
|
case typeof u.precision:
|
|
364
|
-
|
|
364
|
+
n = n.toPrecision(u.precision);
|
|
365
365
|
break;
|
|
366
366
|
}
|
|
367
|
-
return u?.separator ? Number(
|
|
367
|
+
return u?.separator ? Number(n).toLocaleString() : n;
|
|
368
368
|
}
|
|
369
369
|
},
|
|
370
|
-
email: () => (
|
|
371
|
-
url: () => (
|
|
372
|
-
color: () => (
|
|
373
|
-
value:
|
|
370
|
+
email: () => (n) => createVNode("a", { href: `mailto:${n}` }, [n]),
|
|
371
|
+
url: () => (n) => createVNode("a", { href: n }, [n]),
|
|
372
|
+
color: () => (n) => createVNode(NColorPicker, {
|
|
373
|
+
value: n,
|
|
374
374
|
disabled: !0,
|
|
375
375
|
size: "small"
|
|
376
376
|
}, null),
|
|
377
|
-
image: () => (
|
|
377
|
+
image: () => (n, c, l, d) => {
|
|
378
378
|
let f;
|
|
379
|
-
return
|
|
379
|
+
return n ? createVNode(NFlex, {
|
|
380
380
|
gap: "8",
|
|
381
381
|
wrap: !0
|
|
382
|
-
}, _isSlot(f = (Array.isArray(
|
|
383
|
-
key:
|
|
384
|
-
src:
|
|
382
|
+
}, _isSlot(f = (Array.isArray(n) ? n : d?.multiple ? n.split(",") : [n]).map((n) => u(n)).map((n) => createVNode("img", {
|
|
383
|
+
key: n,
|
|
384
|
+
src: n,
|
|
385
385
|
style: "max-height: 32px; max-width: 100px; object-fit: contain"
|
|
386
386
|
}, null))) ? f : { default: () => [f] }) : void 0;
|
|
387
387
|
},
|
|
388
388
|
file: () => {
|
|
389
|
-
let
|
|
389
|
+
let n = nanoid();
|
|
390
390
|
return (c, u, d, f) => {
|
|
391
391
|
let p;
|
|
392
|
-
return c ? (u.__file_urls ??= {}, u.__file_urls[
|
|
393
|
-
u.__file_urls[
|
|
392
|
+
return c ? (u.__file_urls ??= {}, u.__file_urls[n] || l(Array.isArray(c) ? c : f?.multiple ? c.split(",") : [c]).then((c) => {
|
|
393
|
+
u.__file_urls[n] = c;
|
|
394
394
|
}), createVNode(NFlex, {
|
|
395
395
|
gap: "8",
|
|
396
396
|
wrap: !0
|
|
397
|
-
}, _isSlot(p = (u.__file_urls[
|
|
398
|
-
key:
|
|
399
|
-
href:
|
|
397
|
+
}, _isSlot(p = (u.__file_urls[n] || []).map((n) => createVNode("a", {
|
|
398
|
+
key: n.id,
|
|
399
|
+
href: n.url,
|
|
400
400
|
target: "_blank",
|
|
401
401
|
rel: "noreferrer",
|
|
402
402
|
style: "max-width: 100px; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; display: inline-block"
|
|
403
|
-
}, [
|
|
403
|
+
}, [n.name]))) ? p : { default: () => [p] })) : void 0;
|
|
404
404
|
};
|
|
405
405
|
},
|
|
406
406
|
dept: () => (c, l, u, d) => {
|
|
407
407
|
if (c) return createVNode(DtDeptRender, {
|
|
408
408
|
value: c,
|
|
409
409
|
multiple: d?.multiple,
|
|
410
|
-
getDeptsByCode:
|
|
410
|
+
getDeptsByCode: n
|
|
411
411
|
}, null);
|
|
412
412
|
},
|
|
413
|
-
user: () => (
|
|
414
|
-
if (
|
|
415
|
-
value:
|
|
413
|
+
user: () => (n, l, u, d) => {
|
|
414
|
+
if (n) return createVNode(DtUserRender, {
|
|
415
|
+
value: n,
|
|
416
416
|
multiple: d?.multiple,
|
|
417
417
|
getUsersByUsername: c
|
|
418
418
|
}, null);
|
|
@@ -420,16 +420,16 @@ function createPageTableHelper({ getDeptsByCode: r, getUsersByUsername: c, getFi
|
|
|
420
420
|
};
|
|
421
421
|
}
|
|
422
422
|
function createFormHelper() {
|
|
423
|
-
return () => ({ items:
|
|
423
|
+
return () => ({ items: n, model: c, handleSubmit: l, reset: u, validation: f, readonly: p, inModal: m, showFeedback: g, showColon: _, labelWidth: v, labelAlign: y, labelPlacement: b, showRequireMark: x, requireMarkPlacement: C }) => createVNode(DataForm, {
|
|
424
424
|
readonly: p,
|
|
425
425
|
model: c,
|
|
426
|
-
items:
|
|
426
|
+
items: n,
|
|
427
427
|
validation: f,
|
|
428
428
|
showColon: unref(_) ?? !0,
|
|
429
429
|
labelWidth: unref(v),
|
|
430
430
|
labelAlign: unref(y),
|
|
431
431
|
labelPlacement: unref(b),
|
|
432
|
-
showRequireMark: unref(x)
|
|
432
|
+
showRequireMark: unref(x),
|
|
433
433
|
requireMarkPlacement: unref(C),
|
|
434
434
|
showFeedback: unref(g) ?? !0,
|
|
435
435
|
showAction: !1,
|
|
@@ -439,7 +439,7 @@ function createFormHelper() {
|
|
|
439
439
|
}, null);
|
|
440
440
|
}
|
|
441
441
|
function createModalHelper() {
|
|
442
|
-
let
|
|
442
|
+
let n = (n) => typeof n == "number" ? `${n}px` : n, c = {
|
|
443
443
|
maxHeight: "calc(100vh - 130px)",
|
|
444
444
|
display: "flex",
|
|
445
445
|
flexDirection: "column"
|
|
@@ -462,8 +462,8 @@ function createModalHelper() {
|
|
|
462
462
|
}, _isSlot(N) ? N : { default: () => [N] })] });
|
|
463
463
|
if (u === "dialog") {
|
|
464
464
|
let { style: u } = mergeProps({ style: {
|
|
465
|
-
width:
|
|
466
|
-
height:
|
|
465
|
+
width: n(T ?? 520),
|
|
466
|
+
height: n(E)
|
|
467
467
|
} }, { style: D });
|
|
468
468
|
return createVNode(NModal, mergeProps({
|
|
469
469
|
show: d,
|
package/esm/components.d.ts
CHANGED
|
@@ -373,6 +373,7 @@ export interface UserGroupOption {
|
|
|
373
373
|
name: string
|
|
374
374
|
}
|
|
375
375
|
export interface DeptOption {
|
|
376
|
+
id?: string | undefined
|
|
376
377
|
code: string
|
|
377
378
|
name: string
|
|
378
379
|
children?: DeptOption[]
|
|
@@ -388,7 +389,8 @@ interface UserDeptProps<Multiple extends boolean> {
|
|
|
388
389
|
'filterable'?: boolean | undefined
|
|
389
390
|
'disabled'?: boolean | undefined
|
|
390
391
|
'size'?: TransferProps['size'] | undefined
|
|
391
|
-
'
|
|
392
|
+
'valueField'?: 'id' | 'username' | 'code' | undefined
|
|
393
|
+
'users'?: { id?: string | undefined, username: string, nickname: string }[] | undefined
|
|
392
394
|
'groups'?: UserGroupOption[] | undefined
|
|
393
395
|
'depts'?: DeptOption[] | undefined
|
|
394
396
|
'getUsersByGroup'?: ((code: string) => Promise<{ username: string, nickname: string }[]>) | undefined
|
package/esm/page.d.ts
CHANGED
|
@@ -98,9 +98,9 @@ declare module '@ithinkdt/page' {
|
|
|
98
98
|
}
|
|
99
99
|
|
|
100
100
|
user: {
|
|
101
|
-
|
|
101
|
+
userProps?: ShallowMaybeRef<Omit<UserDeptProps<boolean>, 'modelValue' | 'onUpdate:modelValue' | 'disabled'
|
|
102
102
|
| 'users' | 'groups' | 'depts' | 'getUsersByGroup' | 'getUsersByDept'>> & PublicProps
|
|
103
|
-
|
|
103
|
+
userSlots?: {}
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
106
|
|