@ithinkdt/ui 4.0.0-50 → 4.0.0-51
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 +125 -119
- package/esm/components.d.ts +6 -0
- package/package.json +1 -1
package/dist/page.js
CHANGED
|
@@ -8,10 +8,10 @@ import { NButton, NCheckbox, NColorPicker, NDatePicker, NDrawer, NDrawerContent,
|
|
|
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(r) {
|
|
12
|
+
return typeof r == "function" || Object.prototype.toString.call(r) === "[object Object]" && !isVNode(r);
|
|
13
13
|
}
|
|
14
|
-
var mapProps = (
|
|
14
|
+
var mapProps = (r) => Object.fromEntries(Object.entries(r || {}).map(([r, c]) => [r, unref(c)])), SimpleUpload = /* @__PURE__ */ defineComponent({
|
|
15
15
|
name: "SimpleUpload",
|
|
16
16
|
props: {
|
|
17
17
|
type: {
|
|
@@ -52,43 +52,43 @@ var mapProps = (n) => Object.fromEntries(Object.entries(n || {}).map(([n, 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: r, onProgress: l, onFinish: u, onError: d }) => {
|
|
56
|
+
c.uploadFile(r.file, (r) => l({ percent: r })).then((c) => {
|
|
57
|
+
r.file.fileId = c, u();
|
|
58
|
+
}).catch((r) => {
|
|
59
|
+
p.error(r.message), d(r);
|
|
60
60
|
});
|
|
61
61
|
})), _ = ref();
|
|
62
62
|
u({ submit() {
|
|
63
|
-
return until(_).toBeTruthy().then((
|
|
63
|
+
return until(_).toBeTruthy().then((r) => r.submit());
|
|
64
64
|
} });
|
|
65
|
-
let v = (
|
|
66
|
-
c.onUpdateFileList?.(
|
|
65
|
+
let v = (r) => {
|
|
66
|
+
c.onUpdateFileList?.(r), nextTick(() => f.nTriggerFormChange());
|
|
67
67
|
};
|
|
68
68
|
return () => {
|
|
69
|
-
let { type:
|
|
69
|
+
let { type: r, 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: r === "image" ? "image-card" : "text",
|
|
74
|
+
accept: p.accept ?? r === "image" ? "image/*" : void 0,
|
|
75
75
|
"onUpdate:fileList": v
|
|
76
76
|
}), {
|
|
77
77
|
default: () => {
|
|
78
|
-
let
|
|
78
|
+
let r;
|
|
79
79
|
return createVNode(NButton, {
|
|
80
80
|
disabled: f.mergedDisabledRef.value,
|
|
81
81
|
size: f.mergedSizeRef.value
|
|
82
|
-
}, _isSlot(
|
|
82
|
+
}, _isSlot(r = d("common.page.form.selectFileText")) ? r : { default: () => [r] });
|
|
83
83
|
},
|
|
84
84
|
...l
|
|
85
85
|
});
|
|
86
86
|
};
|
|
87
87
|
}
|
|
88
88
|
});
|
|
89
|
-
function createPageFormHelper({ getUserGroups:
|
|
89
|
+
function createPageFormHelper({ getUserGroups: r, getUsersByGroup: d, getUsersByDept: p, getUsersByUsername: m, uploadFile: g, getFileInfos: v }) {
|
|
90
90
|
return {
|
|
91
|
-
input: () => ({ slots:
|
|
91
|
+
input: () => ({ slots: r, 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: n, getUsersByGroup: d, getUsersBy
|
|
|
97
97
|
...p,
|
|
98
98
|
value: l,
|
|
99
99
|
"onUpdate:value": u
|
|
100
|
-
},
|
|
101
|
-
number: () => ({ slots:
|
|
100
|
+
}, r)),
|
|
101
|
+
number: () => ({ slots: r, 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: n, getUsersByGroup: d, getUsersBy
|
|
|
107
107
|
...p,
|
|
108
108
|
value: l,
|
|
109
109
|
"onUpdate:value": u
|
|
110
|
-
},
|
|
110
|
+
}, r)),
|
|
111
111
|
select: () => {
|
|
112
|
-
let
|
|
112
|
+
let r, 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 : r !== v && (r = v, !c && r && (c = useDict(r))), m) if (b.multiple) {
|
|
116
|
+
let r;
|
|
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(r = (d?.map((r) => c?.find((c) => c[b.valueField || "value"] === r)) ?? []).map((r, c, l) => {
|
|
121
|
+
let u = r ? b.renderLabel ? b.renderLabel(r) ?? "" : r[b.labelField || "label"] ?? "" : d[c] ?? "";
|
|
122
|
+
return createVNode("span", { key: r[b.valueField || "value"] }, [u, c < l.length - 1 ? ", " : ""]);
|
|
123
|
+
})) ? r : { default: () => [r] });
|
|
124
124
|
} else {
|
|
125
|
-
let
|
|
125
|
+
let r = c?.find((r) => r[b.valueField || "value"] === d);
|
|
126
126
|
return createVNode(NText, {
|
|
127
127
|
depth: 2,
|
|
128
128
|
style: "line-height: 1.25"
|
|
129
|
-
}, { default: () => [
|
|
129
|
+
}, { default: () => [r ? b.renderLabel ? b.renderLabel(r) ?? "" : r[b.labelField || "label"] ?? "" : d ?? ""] });
|
|
130
130
|
}
|
|
131
131
|
return h(NSelect, {
|
|
132
132
|
clearable: !0,
|
|
@@ -139,10 +139,10 @@ function createPageFormHelper({ getUserGroups: n, getUsersByGroup: d, getUsersBy
|
|
|
139
139
|
}, l);
|
|
140
140
|
};
|
|
141
141
|
},
|
|
142
|
-
checkbox: () => ({ slots:
|
|
142
|
+
checkbox: () => ({ slots: r, 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) ? r?.checked ? r.checked() : createVNode(NCheckbox, { checked: !0 }, null) : r?.unchecked ? r.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: n, getUsersByGroup: d, getUsersBy
|
|
|
152
152
|
...p,
|
|
153
153
|
checked: l,
|
|
154
154
|
"onUpdate:checked": u
|
|
155
|
-
},
|
|
155
|
+
}, r);
|
|
156
156
|
},
|
|
157
157
|
checkboxes: () => {
|
|
158
|
-
let
|
|
158
|
+
let r, 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 : r !== g && (r = g, !c && r && (c = useDict(r))), p) {
|
|
162
|
+
let r;
|
|
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(r = (d?.map((r) => c?.find((c) => c[y.valueField || "value"] === r)) ?? []).map((r, c, l) => {
|
|
167
|
+
let u = r ? r[y.labelField ?? "label"] ?? "" : d[c] ?? "";
|
|
168
|
+
return createVNode("span", { key: r[y.valueField ?? "value"] }, [u, c < l.length - 1 ? ", " : ""]);
|
|
169
|
+
})) ? r : { default: () => [r] });
|
|
170
170
|
}
|
|
171
171
|
return h(NCheckboxes, {
|
|
172
172
|
...y,
|
|
@@ -177,15 +177,15 @@ function createPageFormHelper({ getUserGroups: n, getUsersByGroup: d, getUsersBy
|
|
|
177
177
|
};
|
|
178
178
|
},
|
|
179
179
|
radios: () => {
|
|
180
|
-
let
|
|
180
|
+
let r, 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 : r !== g && (r = g, !l && r && (l = useDict(r))), p) {
|
|
184
|
+
let r = l?.find((r) => r[y.valueField ?? "value"] === d);
|
|
185
185
|
return createVNode(NText, {
|
|
186
186
|
depth: 2,
|
|
187
187
|
style: "line-height: 1.25"
|
|
188
|
-
}, { default: () => [
|
|
188
|
+
}, { default: () => [r ? r[y.labelField ?? "label"] ?? "" : d ?? ""] });
|
|
189
189
|
}
|
|
190
190
|
return h(NRadios, {
|
|
191
191
|
...y,
|
|
@@ -195,7 +195,7 @@ function createPageFormHelper({ getUserGroups: n, getUsersByGroup: d, getUsersBy
|
|
|
195
195
|
});
|
|
196
196
|
};
|
|
197
197
|
},
|
|
198
|
-
datepicker: () => ({ slots:
|
|
198
|
+
datepicker: () => ({ slots: r, 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,21 +211,21 @@ function createPageFormHelper({ getUserGroups: n, getUsersByGroup: d, getUsersBy
|
|
|
211
211
|
format: g,
|
|
212
212
|
value: l,
|
|
213
213
|
"onUpdate:value": u
|
|
214
|
-
},
|
|
214
|
+
}, r);
|
|
215
215
|
},
|
|
216
|
-
file: () => ({ slots:
|
|
216
|
+
file: () => ({ slots: r, props: c }, { modelValue: l, "onUpdate:modelValue": u, required: d, readonly: f,...p }) => {
|
|
217
217
|
if (c = mapProps(c), f) {
|
|
218
|
-
let
|
|
218
|
+
let r;
|
|
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(r = l.map((r) => createVNode("a", {
|
|
223
|
+
key: r.id,
|
|
224
|
+
href: r.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
|
+
}, [r.name]))) ? r : { default: () => [r] });
|
|
229
229
|
}
|
|
230
230
|
return h(SimpleUpload, {
|
|
231
231
|
...c,
|
|
@@ -234,53 +234,53 @@ function createPageFormHelper({ getUserGroups: n, getUsersByGroup: d, getUsersBy
|
|
|
234
234
|
uploadFile: g,
|
|
235
235
|
fileList: l,
|
|
236
236
|
onUpdateFileList: u
|
|
237
|
-
},
|
|
237
|
+
}, r);
|
|
238
238
|
},
|
|
239
239
|
upload: () => {
|
|
240
|
-
let
|
|
240
|
+
let r = null, c = /* @__PURE__ */ new Map(), l = /* @__PURE__ */ new Map(), u = shallowRef([]), d = 0, f = (r) => {
|
|
241
241
|
let c = ++d;
|
|
242
|
-
u.value =
|
|
243
|
-
let f =
|
|
242
|
+
u.value = r.map((r) => l.get(r)).filter(Boolean);
|
|
243
|
+
let f = r.filter((r) => !l.has(r));
|
|
244
244
|
Promise.resolve(f.length > 0 ? v(f) : []).then((f) => {
|
|
245
245
|
if (c === d) {
|
|
246
|
-
u.value =
|
|
247
|
-
for (let
|
|
246
|
+
u.value = r.map((r) => l.get(r) || f.find((c) => c.id === r)), l.clear();
|
|
247
|
+
for (let r of u.value) l.set(r.id, r);
|
|
248
248
|
}
|
|
249
249
|
});
|
|
250
250
|
}, p;
|
|
251
251
|
return {
|
|
252
252
|
renderer: ({ slots: d, props: m }, { modelValue: v, "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(), r !== v && (r = v, f(v?.split(",") ?? [])), S) {
|
|
255
|
+
let r;
|
|
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(r = u.value.map((r) => createVNode("a", {
|
|
261
|
+
key: r.id,
|
|
262
|
+
href: r.url,
|
|
263
263
|
target: "_blank",
|
|
264
264
|
rel: "noreferrer",
|
|
265
|
-
title:
|
|
266
|
-
download:
|
|
265
|
+
title: r.name,
|
|
266
|
+
download: r.name,
|
|
267
267
|
style: "max-width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; display: inline-block"
|
|
268
|
-
}, [
|
|
268
|
+
}, [r.name]))) ? r : { default: () => [r] });
|
|
269
269
|
}
|
|
270
270
|
return h(SimpleUpload, {
|
|
271
271
|
...w,
|
|
272
272
|
...C,
|
|
273
273
|
uploadFile: g,
|
|
274
274
|
fileList: u.value,
|
|
275
|
-
onUpdateFileList: (
|
|
275
|
+
onUpdateFileList: (r = []) => {
|
|
276
276
|
l.clear();
|
|
277
|
-
for (let u of
|
|
278
|
-
u.value =
|
|
277
|
+
for (let u of r) 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 = r, y(u.value.map((r) => c.get(r.id) || r.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((r) => r.every((r) => !["pending", "uploading"].includes(r.status))), u.value.some((r) => r.status === "error")) return SimpleUpload.t("common.page.form.validate.fileErrorMessage");
|
|
284
284
|
}
|
|
285
285
|
};
|
|
286
286
|
},
|
|
@@ -288,12 +288,12 @@ function createPageFormHelper({ getUserGroups: n, getUsersByGroup: d, getUsersBy
|
|
|
288
288
|
let c;
|
|
289
289
|
return ({ slots: l, props: g }, { modelValue: v, "onUpdate:modelValue": y, required: b, readonly: S,...C }) => {
|
|
290
290
|
let w = mapProps(g);
|
|
291
|
-
return c || (c = shallowRef([]), m().then((
|
|
292
|
-
c.value =
|
|
293
|
-
}),
|
|
294
|
-
(void 0).value =
|
|
295
|
-
}), getDeptsByCode().then((
|
|
296
|
-
(void 0).value =
|
|
291
|
+
return c || (c = shallowRef([]), m().then((r) => {
|
|
292
|
+
c.value = r;
|
|
293
|
+
}), r().then((r) => {
|
|
294
|
+
(void 0).value = r;
|
|
295
|
+
}), getDeptsByCode().then((r) => {
|
|
296
|
+
(void 0).value = r;
|
|
297
297
|
})), S ? createVNode(DtUserRender, {
|
|
298
298
|
value: v,
|
|
299
299
|
multiple: w.multiple,
|
|
@@ -314,15 +314,15 @@ function createPageFormHelper({ getUserGroups: n, getUsersByGroup: d, getUsersBy
|
|
|
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: r, getUsersByUsername: c, getFileInfos: l, previewFileUrl: u }) {
|
|
318
|
+
let d = (r) => () => (c, l, u, d) => {
|
|
319
|
+
if (c != null) return format(c, d.formatter ?? r);
|
|
320
|
+
}, m = (r = {}) => 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
|
+
}, r), [createVNode("circle", {
|
|
326
326
|
cx: "16",
|
|
327
327
|
cy: "16",
|
|
328
328
|
r: "8",
|
|
@@ -332,87 +332,87 @@ function createPageTableHelper({ getDeptsByCode: n, 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 r, 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((r) => [r[p.valueField || "value"], r]))) : r !== g && (r = g, !l && r && (l = useDictMap(r))), !v) {
|
|
340
340
|
if (u = u.toString(), y && u in y) {
|
|
341
|
-
let
|
|
341
|
+
let r = y[u] ?? "default";
|
|
342
342
|
return [
|
|
343
343
|
"primary",
|
|
344
344
|
"success",
|
|
345
345
|
"warning",
|
|
346
346
|
"danger"
|
|
347
|
-
].includes(
|
|
347
|
+
].includes(r) && (r = `var(--color-${r})`), createVNode("span", { style: "position: relative; padding-left: 1.25em" }, [createVNode(m, { style: `color: ${r}; 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((r) => l.get(r.toString())?.[p.labelField || "label"]) ?? "";
|
|
352
352
|
};
|
|
353
353
|
},
|
|
354
|
-
number: () => (
|
|
355
|
-
if (
|
|
356
|
-
switch (u.percent && (
|
|
354
|
+
number: () => (r, c, l, u) => {
|
|
355
|
+
if (r != null) {
|
|
356
|
+
switch (u.percent && (r = Number(r) * 100), "number") {
|
|
357
357
|
case typeof u.fixed:
|
|
358
|
-
|
|
358
|
+
r = r.toFixed(u.fixed);
|
|
359
359
|
break;
|
|
360
360
|
case typeof u.round:
|
|
361
|
-
|
|
361
|
+
r = r.toFixed(u.round).replace(/0+$/, "");
|
|
362
362
|
break;
|
|
363
363
|
case typeof u.precision:
|
|
364
|
-
|
|
364
|
+
r = r.toPrecision(u.precision);
|
|
365
365
|
break;
|
|
366
366
|
}
|
|
367
|
-
return u?.separator ? Number(
|
|
367
|
+
return u?.separator ? Number(r).toLocaleString() : r;
|
|
368
368
|
}
|
|
369
369
|
},
|
|
370
|
-
email: () => (
|
|
371
|
-
url: () => (
|
|
372
|
-
color: () => (
|
|
373
|
-
value:
|
|
370
|
+
email: () => (r) => createVNode("a", { href: `mailto:${r}` }, [r]),
|
|
371
|
+
url: () => (r) => createVNode("a", { href: r }, [r]),
|
|
372
|
+
color: () => (r) => createVNode(NColorPicker, {
|
|
373
|
+
value: r,
|
|
374
374
|
disabled: !0,
|
|
375
375
|
size: "small"
|
|
376
376
|
}, null),
|
|
377
|
-
image: () => (
|
|
377
|
+
image: () => (r, c, l, d) => {
|
|
378
378
|
let f;
|
|
379
|
-
return
|
|
379
|
+
return r ? createVNode(NFlex, {
|
|
380
380
|
gap: "8",
|
|
381
381
|
wrap: !0
|
|
382
|
-
}, _isSlot(f = (Array.isArray(
|
|
383
|
-
key:
|
|
384
|
-
src:
|
|
382
|
+
}, _isSlot(f = (Array.isArray(r) ? r : d?.multiple ? r.split(",") : [r]).map((r) => u(r)).map((r) => createVNode("img", {
|
|
383
|
+
key: r,
|
|
384
|
+
src: r,
|
|
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 r = 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[r] || l(Array.isArray(c) ? c : f?.multiple ? c.split(",") : [c]).then((c) => {
|
|
393
|
+
u.__file_urls[r] = 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[r] || []).map((r) => createVNode("a", {
|
|
398
|
+
key: r.id,
|
|
399
|
+
href: r.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
|
+
}, [r.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: r
|
|
411
411
|
}, null);
|
|
412
412
|
},
|
|
413
|
-
user: () => (
|
|
414
|
-
if (
|
|
415
|
-
value:
|
|
413
|
+
user: () => (r, l, u, d) => {
|
|
414
|
+
if (r) return createVNode(DtUserRender, {
|
|
415
|
+
value: r,
|
|
416
416
|
multiple: d?.multiple,
|
|
417
417
|
getUsersByUsername: c
|
|
418
418
|
}, null);
|
|
@@ -420,12 +420,18 @@ function createPageTableHelper({ getDeptsByCode: n, getUsersByUsername: c, getFi
|
|
|
420
420
|
};
|
|
421
421
|
}
|
|
422
422
|
function createFormHelper() {
|
|
423
|
-
return () => ({ items:
|
|
423
|
+
return () => ({ items: r, 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: r,
|
|
427
427
|
validation: f,
|
|
428
|
-
showColon: unref(
|
|
428
|
+
showColon: unref(_) ?? !0,
|
|
429
|
+
labelWidth: unref(v),
|
|
430
|
+
labelAlign: unref(y),
|
|
431
|
+
labelPlacement: unref(b),
|
|
432
|
+
showRequireMark: unref(x) ?? !0,
|
|
433
|
+
requireMarkPlacement: unref(C),
|
|
434
|
+
showFeedback: unref(g) ?? !0,
|
|
429
435
|
showAction: !1,
|
|
430
436
|
onSubmit: l,
|
|
431
437
|
onRest: u,
|
|
@@ -433,7 +439,7 @@ function createFormHelper() {
|
|
|
433
439
|
}, null);
|
|
434
440
|
}
|
|
435
441
|
function createModalHelper() {
|
|
436
|
-
let
|
|
442
|
+
let r = (r) => typeof r == "number" ? `${r}px` : r, c = {
|
|
437
443
|
maxHeight: "calc(100vh - 130px)",
|
|
438
444
|
display: "flex",
|
|
439
445
|
flexDirection: "column"
|
|
@@ -456,8 +462,8 @@ function createModalHelper() {
|
|
|
456
462
|
}, _isSlot(N) ? N : { default: () => [N] })] });
|
|
457
463
|
if (u === "dialog") {
|
|
458
464
|
let { style: u } = mergeProps({ style: {
|
|
459
|
-
width:
|
|
460
|
-
height:
|
|
465
|
+
width: r(T ?? 520),
|
|
466
|
+
height: r(E)
|
|
461
467
|
} }, { style: D });
|
|
462
468
|
return createVNode(NModal, mergeProps({
|
|
463
469
|
show: d,
|
package/esm/components.d.ts
CHANGED
|
@@ -16,6 +16,12 @@ declare module '@ithinkdt/page' {
|
|
|
16
16
|
|
|
17
17
|
interface FormRenderExtraOptions {
|
|
18
18
|
showColon?: MaybeRef<boolean | undefined>
|
|
19
|
+
labelWidth?: MaybeRef<string | number | undefined>
|
|
20
|
+
labelAlign?: MaybeRef<'left' | 'right' | 'center' | undefined>
|
|
21
|
+
labelPlacement?: MaybeRef<'left' | 'top' | undefined>
|
|
22
|
+
showRequireMark?: MaybeRef<boolean | undefined>
|
|
23
|
+
requireMarkPlacement?: MaybeRef<'left' | 'right' | 'right-hanging' | undefined>
|
|
24
|
+
showFeedback?: MaybeRef<boolean | undefined>
|
|
19
25
|
}
|
|
20
26
|
|
|
21
27
|
type FormItemOptionKeys = 'size' | 'showLabel' | 'labelWidth' | 'labelStyle' | 'labelAlign' | 'labelPlacement' | 'labelProps'
|