@tmagic/form 1.7.5 → 1.7.7
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/tmagic-form.js +85 -38
- package/dist/tmagic-form.umd.cjs +85 -37
- package/package.json +4 -4
- package/src/containers/Container.vue +2 -6
- package/src/fields/Timerange.vue +80 -36
- package/src/utils/form.ts +15 -0
- package/types/index.d.ts +2 -1
package/dist/tmagic-form.js
CHANGED
|
@@ -235,6 +235,18 @@ const sortChange = (data, { prop, order }) => {
|
|
|
235
235
|
data.sort((a, b) => b[prop] - a[prop]);
|
|
236
236
|
}
|
|
237
237
|
};
|
|
238
|
+
const createObjectProp = (prop, key, name) => {
|
|
239
|
+
if (prop === "") {
|
|
240
|
+
return key;
|
|
241
|
+
}
|
|
242
|
+
const itemPath = `${prop}`.split(".");
|
|
243
|
+
if (name) {
|
|
244
|
+
if (`${itemPath[itemPath.length - 1]}` === `${name}`) {
|
|
245
|
+
return `${[...itemPath.slice(0, -1), key].join(".")}`;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
return `${[...itemPath, key].join(".")}`;
|
|
249
|
+
};
|
|
238
250
|
|
|
239
251
|
const _hoisted_1$e = {
|
|
240
252
|
key: 0,
|
|
@@ -473,11 +485,7 @@ const _sfc_main$A = /* @__PURE__ */ defineComponent({
|
|
|
473
485
|
value = filterHandler(filter, v);
|
|
474
486
|
if (typeof onChange === "function") {
|
|
475
487
|
const setModel = (key2, value2) => {
|
|
476
|
-
|
|
477
|
-
newChangeRecords.push({ propPath: itemProp.value.replace(`${props.config.name}`, key2), value: value2 });
|
|
478
|
-
} else {
|
|
479
|
-
newChangeRecords.push({ propPath: itemProp.value, value: value2 });
|
|
480
|
-
}
|
|
488
|
+
newChangeRecords.push({ propPath: createObjectProp(itemProp.value, key2, props.config.name), value: value2 });
|
|
481
489
|
};
|
|
482
490
|
const setFormValue = (key2, value2) => {
|
|
483
491
|
newChangeRecords.push({ propPath: key2, value: value2 });
|
|
@@ -4552,44 +4560,81 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
|
4552
4560
|
useAddField(props.prop);
|
|
4553
4561
|
const { names } = props.config;
|
|
4554
4562
|
const value = ref([]);
|
|
4555
|
-
|
|
4556
|
-
|
|
4557
|
-
|
|
4558
|
-
|
|
4559
|
-
|
|
4560
|
-
|
|
4563
|
+
const getFullDatetime = (item) => item ? `${dayjs().format("YYYY/MM/DD")} ${item}` : "";
|
|
4564
|
+
const getFormat = () => `YYYY/MM/DD ${props.config.valueFormat || "HH:mm:ss"}`;
|
|
4565
|
+
const timeFormatter = (time, format) => datetimeFormatter(getFullDatetime(time), "", format).substring(11);
|
|
4566
|
+
if (props.model !== void 0) {
|
|
4567
|
+
if (names?.length) {
|
|
4568
|
+
const unWatch = watch(
|
|
4569
|
+
[() => props.model[names[0]], () => props.model[names[1]]],
|
|
4570
|
+
([start, end], [preStart, preEnd]) => {
|
|
4571
|
+
if (!value.value) {
|
|
4572
|
+
value.value = [];
|
|
4573
|
+
}
|
|
4574
|
+
const format = getFormat();
|
|
4575
|
+
if (!start || !end) value.value = [];
|
|
4576
|
+
if (start !== preStart) value.value[0] = timeFormatter(start, format);
|
|
4577
|
+
if (end !== preEnd) value.value[1] = timeFormatter(end, format);
|
|
4578
|
+
},
|
|
4579
|
+
{
|
|
4580
|
+
immediate: true
|
|
4561
4581
|
}
|
|
4562
|
-
|
|
4563
|
-
|
|
4564
|
-
|
|
4565
|
-
}
|
|
4566
|
-
|
|
4567
|
-
|
|
4568
|
-
|
|
4569
|
-
|
|
4582
|
+
);
|
|
4583
|
+
onUnmounted(() => {
|
|
4584
|
+
unWatch();
|
|
4585
|
+
});
|
|
4586
|
+
} else if (props.name) {
|
|
4587
|
+
const unWatch = watch(
|
|
4588
|
+
() => props.model[props.name],
|
|
4589
|
+
(v = []) => {
|
|
4590
|
+
if (Array.isArray(v)) {
|
|
4591
|
+
value.value = v.map((item) => item ? timeFormatter(item, getFormat()) : void 0);
|
|
4592
|
+
} else {
|
|
4593
|
+
value.value = [];
|
|
4594
|
+
}
|
|
4595
|
+
},
|
|
4596
|
+
{
|
|
4597
|
+
immediate: true
|
|
4598
|
+
}
|
|
4599
|
+
);
|
|
4600
|
+
onUnmounted(() => {
|
|
4601
|
+
unWatch();
|
|
4602
|
+
});
|
|
4603
|
+
}
|
|
4570
4604
|
}
|
|
4571
|
-
const setValue = (v) => {
|
|
4572
|
-
names?.forEach((item, index) => {
|
|
4573
|
-
if (!props.model) {
|
|
4574
|
-
return;
|
|
4575
|
-
}
|
|
4576
|
-
if (Array.isArray(v)) {
|
|
4577
|
-
props.model[item] = v[index];
|
|
4578
|
-
} else {
|
|
4579
|
-
props.model[item] = void 0;
|
|
4580
|
-
}
|
|
4581
|
-
});
|
|
4582
|
-
};
|
|
4583
4605
|
const changeHandler = (v) => {
|
|
4584
4606
|
const value2 = v || [];
|
|
4585
|
-
if (
|
|
4586
|
-
|
|
4607
|
+
if (props.name) {
|
|
4608
|
+
emit("change", value2);
|
|
4609
|
+
} else {
|
|
4610
|
+
if (props.config.names?.length) {
|
|
4611
|
+
const newChangeRecords = [];
|
|
4612
|
+
props.config.names.forEach((item, index) => {
|
|
4613
|
+
if (!props.model) {
|
|
4614
|
+
return;
|
|
4615
|
+
}
|
|
4616
|
+
if (Array.isArray(v)) {
|
|
4617
|
+
newChangeRecords.push({
|
|
4618
|
+
propPath: props.prop ? `${props.prop}.${item}` : item,
|
|
4619
|
+
value: v[index]
|
|
4620
|
+
});
|
|
4621
|
+
} else {
|
|
4622
|
+
newChangeRecords.push({
|
|
4623
|
+
propPath: props.prop ? `${props.prop}.${item}` : item,
|
|
4624
|
+
value: void 0
|
|
4625
|
+
});
|
|
4626
|
+
}
|
|
4627
|
+
});
|
|
4628
|
+
emit("change", props.model, {
|
|
4629
|
+
changeRecords: newChangeRecords
|
|
4630
|
+
});
|
|
4631
|
+
}
|
|
4587
4632
|
}
|
|
4588
|
-
emit("change", value2);
|
|
4589
4633
|
};
|
|
4590
4634
|
return (_ctx, _cache) => {
|
|
4591
4635
|
return openBlock(), createBlock(unref(TMagicTimePicker), {
|
|
4592
|
-
|
|
4636
|
+
modelValue: value.value,
|
|
4637
|
+
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => value.value = $event),
|
|
4593
4638
|
"is-range": "",
|
|
4594
4639
|
"range-separator": "-",
|
|
4595
4640
|
"start-placeholder": "开始时间",
|
|
@@ -4598,8 +4643,10 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
|
4598
4643
|
"unlink-panels": true,
|
|
4599
4644
|
disabled: __props.disabled,
|
|
4600
4645
|
"default-time": __props.config.defaultTime,
|
|
4601
|
-
"
|
|
4602
|
-
|
|
4646
|
+
format: __props.config.format || "HH:mm:ss",
|
|
4647
|
+
"value-format": __props.config.valueFormat || "HH:mm:ss",
|
|
4648
|
+
onChange: changeHandler
|
|
4649
|
+
}, null, 8, ["modelValue", "size", "disabled", "default-time", "format", "value-format"]);
|
|
4603
4650
|
};
|
|
4604
4651
|
}
|
|
4605
4652
|
});
|
|
@@ -5890,4 +5937,4 @@ const index = {
|
|
|
5890
5937
|
}
|
|
5891
5938
|
};
|
|
5892
5939
|
|
|
5893
|
-
export { _sfc_main$q as MCascader, _sfc_main$p as MCheckbox, _sfc_main$o as MCheckboxGroup, _sfc_main$n as MColorPicker, _sfc_main$A as MContainer, _sfc_main$m as MDate, _sfc_main$k as MDateTime, _sfc_main$l as MDaterange, _sfc_main$j as MDisplay, _sfc_main$i as MDynamicField, _sfc_main$z as MFieldset, _sfc_main$y as MFlexLayout, _sfc_main$g as MForm, _sfc_main as MFormBox, _sfc_main$f as MFormDialog, _sfc_main$1 as MFormDrawer, _sfc_main$w as MGroupList, _sfc_main$h as MHidden, _sfc_main$e as MLink, _sfc_main$d as MNumber, _sfc_main$c as MNumberRange, _sfc_main$v as MPanel, _sfc_main$b as MRadioGroup, _sfc_main$t as MRow, _sfc_main$a as MSelect, _sfc_main$9 as MSwitch, _sfc_main$2 as MTable, _sfc_main$r as MTabs, _sfc_main$8 as MText, _sfc_main$7 as MTextarea, _sfc_main$6 as MTime, _sfc_main$5 as MTimerange, createForm, createValues, datetimeFormatter, index as default, display, filterFunction, getDataByPage, getRules, initValue, sortArray, sortChange, useAddField };
|
|
5940
|
+
export { _sfc_main$q as MCascader, _sfc_main$p as MCheckbox, _sfc_main$o as MCheckboxGroup, _sfc_main$n as MColorPicker, _sfc_main$A as MContainer, _sfc_main$m as MDate, _sfc_main$k as MDateTime, _sfc_main$l as MDaterange, _sfc_main$j as MDisplay, _sfc_main$i as MDynamicField, _sfc_main$z as MFieldset, _sfc_main$y as MFlexLayout, _sfc_main$g as MForm, _sfc_main as MFormBox, _sfc_main$f as MFormDialog, _sfc_main$1 as MFormDrawer, _sfc_main$w as MGroupList, _sfc_main$h as MHidden, _sfc_main$e as MLink, _sfc_main$d as MNumber, _sfc_main$c as MNumberRange, _sfc_main$v as MPanel, _sfc_main$b as MRadioGroup, _sfc_main$t as MRow, _sfc_main$a as MSelect, _sfc_main$9 as MSwitch, _sfc_main$2 as MTable, _sfc_main$r as MTabs, _sfc_main$8 as MText, _sfc_main$7 as MTextarea, _sfc_main$6 as MTime, _sfc_main$5 as MTimerange, createForm, createObjectProp, createValues, datetimeFormatter, index as default, display, filterFunction, getDataByPage, getRules, initValue, sortArray, sortChange, useAddField };
|
package/dist/tmagic-form.umd.cjs
CHANGED
|
@@ -3165,6 +3165,18 @@
|
|
|
3165
3165
|
data.sort((a, b) => b[prop] - a[prop]);
|
|
3166
3166
|
}
|
|
3167
3167
|
};
|
|
3168
|
+
const createObjectProp = (prop, key, name) => {
|
|
3169
|
+
if (prop === "") {
|
|
3170
|
+
return key;
|
|
3171
|
+
}
|
|
3172
|
+
const itemPath = `${prop}`.split(".");
|
|
3173
|
+
if (name) {
|
|
3174
|
+
if (`${itemPath[itemPath.length - 1]}` === `${name}`) {
|
|
3175
|
+
return `${[...itemPath.slice(0, -1), key].join(".")}`;
|
|
3176
|
+
}
|
|
3177
|
+
}
|
|
3178
|
+
return `${[...itemPath, key].join(".")}`;
|
|
3179
|
+
};
|
|
3168
3180
|
|
|
3169
3181
|
const _hoisted_1$e = {
|
|
3170
3182
|
key: 0,
|
|
@@ -3403,11 +3415,7 @@
|
|
|
3403
3415
|
value = filterHandler(filter, v);
|
|
3404
3416
|
if (typeof onChange === "function") {
|
|
3405
3417
|
const setModel = (key2, value2) => {
|
|
3406
|
-
|
|
3407
|
-
newChangeRecords.push({ propPath: itemProp.value.replace(`${props.config.name}`, key2), value: value2 });
|
|
3408
|
-
} else {
|
|
3409
|
-
newChangeRecords.push({ propPath: itemProp.value, value: value2 });
|
|
3410
|
-
}
|
|
3418
|
+
newChangeRecords.push({ propPath: createObjectProp(itemProp.value, key2, props.config.name), value: value2 });
|
|
3411
3419
|
};
|
|
3412
3420
|
const setFormValue = (key2, value2) => {
|
|
3413
3421
|
newChangeRecords.push({ propPath: key2, value: value2 });
|
|
@@ -7482,44 +7490,81 @@
|
|
|
7482
7490
|
useAddField(props.prop);
|
|
7483
7491
|
const { names } = props.config;
|
|
7484
7492
|
const value = vue.ref([]);
|
|
7485
|
-
|
|
7486
|
-
|
|
7487
|
-
|
|
7488
|
-
|
|
7489
|
-
|
|
7490
|
-
|
|
7493
|
+
const getFullDatetime = (item) => item ? `${dayjs().format("YYYY/MM/DD")} ${item}` : "";
|
|
7494
|
+
const getFormat = () => `YYYY/MM/DD ${props.config.valueFormat || "HH:mm:ss"}`;
|
|
7495
|
+
const timeFormatter = (time, format) => datetimeFormatter(getFullDatetime(time), "", format).substring(11);
|
|
7496
|
+
if (props.model !== void 0) {
|
|
7497
|
+
if (names?.length) {
|
|
7498
|
+
const unWatch = vue.watch(
|
|
7499
|
+
[() => props.model[names[0]], () => props.model[names[1]]],
|
|
7500
|
+
([start, end], [preStart, preEnd]) => {
|
|
7501
|
+
if (!value.value) {
|
|
7502
|
+
value.value = [];
|
|
7503
|
+
}
|
|
7504
|
+
const format = getFormat();
|
|
7505
|
+
if (!start || !end) value.value = [];
|
|
7506
|
+
if (start !== preStart) value.value[0] = timeFormatter(start, format);
|
|
7507
|
+
if (end !== preEnd) value.value[1] = timeFormatter(end, format);
|
|
7508
|
+
},
|
|
7509
|
+
{
|
|
7510
|
+
immediate: true
|
|
7491
7511
|
}
|
|
7492
|
-
|
|
7493
|
-
|
|
7494
|
-
|
|
7495
|
-
}
|
|
7496
|
-
|
|
7497
|
-
|
|
7498
|
-
|
|
7499
|
-
|
|
7512
|
+
);
|
|
7513
|
+
vue.onUnmounted(() => {
|
|
7514
|
+
unWatch();
|
|
7515
|
+
});
|
|
7516
|
+
} else if (props.name) {
|
|
7517
|
+
const unWatch = vue.watch(
|
|
7518
|
+
() => props.model[props.name],
|
|
7519
|
+
(v = []) => {
|
|
7520
|
+
if (Array.isArray(v)) {
|
|
7521
|
+
value.value = v.map((item) => item ? timeFormatter(item, getFormat()) : void 0);
|
|
7522
|
+
} else {
|
|
7523
|
+
value.value = [];
|
|
7524
|
+
}
|
|
7525
|
+
},
|
|
7526
|
+
{
|
|
7527
|
+
immediate: true
|
|
7528
|
+
}
|
|
7529
|
+
);
|
|
7530
|
+
vue.onUnmounted(() => {
|
|
7531
|
+
unWatch();
|
|
7532
|
+
});
|
|
7533
|
+
}
|
|
7500
7534
|
}
|
|
7501
|
-
const setValue = (v) => {
|
|
7502
|
-
names?.forEach((item, index) => {
|
|
7503
|
-
if (!props.model) {
|
|
7504
|
-
return;
|
|
7505
|
-
}
|
|
7506
|
-
if (Array.isArray(v)) {
|
|
7507
|
-
props.model[item] = v[index];
|
|
7508
|
-
} else {
|
|
7509
|
-
props.model[item] = void 0;
|
|
7510
|
-
}
|
|
7511
|
-
});
|
|
7512
|
-
};
|
|
7513
7535
|
const changeHandler = (v) => {
|
|
7514
7536
|
const value2 = v || [];
|
|
7515
|
-
if (
|
|
7516
|
-
|
|
7537
|
+
if (props.name) {
|
|
7538
|
+
emit("change", value2);
|
|
7539
|
+
} else {
|
|
7540
|
+
if (props.config.names?.length) {
|
|
7541
|
+
const newChangeRecords = [];
|
|
7542
|
+
props.config.names.forEach((item, index) => {
|
|
7543
|
+
if (!props.model) {
|
|
7544
|
+
return;
|
|
7545
|
+
}
|
|
7546
|
+
if (Array.isArray(v)) {
|
|
7547
|
+
newChangeRecords.push({
|
|
7548
|
+
propPath: props.prop ? `${props.prop}.${item}` : item,
|
|
7549
|
+
value: v[index]
|
|
7550
|
+
});
|
|
7551
|
+
} else {
|
|
7552
|
+
newChangeRecords.push({
|
|
7553
|
+
propPath: props.prop ? `${props.prop}.${item}` : item,
|
|
7554
|
+
value: void 0
|
|
7555
|
+
});
|
|
7556
|
+
}
|
|
7557
|
+
});
|
|
7558
|
+
emit("change", props.model, {
|
|
7559
|
+
changeRecords: newChangeRecords
|
|
7560
|
+
});
|
|
7561
|
+
}
|
|
7517
7562
|
}
|
|
7518
|
-
emit("change", value2);
|
|
7519
7563
|
};
|
|
7520
7564
|
return (_ctx, _cache) => {
|
|
7521
7565
|
return vue.openBlock(), vue.createBlock(vue.unref(design.TMagicTimePicker), {
|
|
7522
|
-
|
|
7566
|
+
modelValue: value.value,
|
|
7567
|
+
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => value.value = $event),
|
|
7523
7568
|
"is-range": "",
|
|
7524
7569
|
"range-separator": "-",
|
|
7525
7570
|
"start-placeholder": "开始时间",
|
|
@@ -7528,8 +7573,10 @@
|
|
|
7528
7573
|
"unlink-panels": true,
|
|
7529
7574
|
disabled: __props.disabled,
|
|
7530
7575
|
"default-time": __props.config.defaultTime,
|
|
7531
|
-
"
|
|
7532
|
-
|
|
7576
|
+
format: __props.config.format || "HH:mm:ss",
|
|
7577
|
+
"value-format": __props.config.valueFormat || "HH:mm:ss",
|
|
7578
|
+
onChange: changeHandler
|
|
7579
|
+
}, null, 8, ["modelValue", "size", "disabled", "default-time", "format", "value-format"]);
|
|
7533
7580
|
};
|
|
7534
7581
|
}
|
|
7535
7582
|
});
|
|
@@ -8853,6 +8900,7 @@
|
|
|
8853
8900
|
exports.MTime = _sfc_main$6;
|
|
8854
8901
|
exports.MTimerange = _sfc_main$5;
|
|
8855
8902
|
exports.createForm = createForm;
|
|
8903
|
+
exports.createObjectProp = createObjectProp;
|
|
8856
8904
|
exports.createValues = createValues;
|
|
8857
8905
|
exports.datetimeFormatter = datetimeFormatter;
|
|
8858
8906
|
exports.default = index;
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.7.
|
|
2
|
+
"version": "1.7.7",
|
|
3
3
|
"name": "@tmagic/form",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": [
|
|
@@ -51,9 +51,9 @@
|
|
|
51
51
|
"peerDependencies": {
|
|
52
52
|
"vue": "^3.5.24",
|
|
53
53
|
"typescript": "^5.9.3",
|
|
54
|
-
"@tmagic/
|
|
55
|
-
"@tmagic/
|
|
56
|
-
"@tmagic/
|
|
54
|
+
"@tmagic/utils": "1.7.7",
|
|
55
|
+
"@tmagic/design": "1.7.7",
|
|
56
|
+
"@tmagic/form-schema": "1.7.7"
|
|
57
57
|
},
|
|
58
58
|
"peerDependenciesMeta": {
|
|
59
59
|
"typescript": {
|
|
@@ -180,7 +180,7 @@ import type {
|
|
|
180
180
|
FormValue,
|
|
181
181
|
ToolTipConfigType,
|
|
182
182
|
} from '../schema';
|
|
183
|
-
import { display as displayFunction, filterFunction, getRules } from '../utils/form';
|
|
183
|
+
import { createObjectProp, display as displayFunction, filterFunction, getRules } from '../utils/form';
|
|
184
184
|
|
|
185
185
|
import FormLabel from './FormLabel.vue';
|
|
186
186
|
|
|
@@ -416,11 +416,7 @@ const onChangeHandler = async function (v: any, eventData: ContainerChangeEventD
|
|
|
416
416
|
|
|
417
417
|
if (typeof onChange === 'function') {
|
|
418
418
|
const setModel = (key: string, value: any) => {
|
|
419
|
-
|
|
420
|
-
newChangeRecords.push({ propPath: itemProp.value.replace(`${props.config.name}`, key), value });
|
|
421
|
-
} else {
|
|
422
|
-
newChangeRecords.push({ propPath: itemProp.value, value });
|
|
423
|
-
}
|
|
419
|
+
newChangeRecords.push({ propPath: createObjectProp(itemProp.value, key, props.config.name), value });
|
|
424
420
|
};
|
|
425
421
|
|
|
426
422
|
const setFormValue = (key: string, value: any) => {
|
package/src/fields/Timerange.vue
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<TMagicTimePicker
|
|
3
|
-
|
|
3
|
+
v-model="value"
|
|
4
4
|
is-range
|
|
5
5
|
range-separator="-"
|
|
6
6
|
start-placeholder="开始时间"
|
|
@@ -9,16 +9,20 @@
|
|
|
9
9
|
:unlink-panels="true"
|
|
10
10
|
:disabled="disabled"
|
|
11
11
|
:default-time="config.defaultTime"
|
|
12
|
-
|
|
12
|
+
:format="config.format || 'HH:mm:ss'"
|
|
13
|
+
:value-format="config.valueFormat || 'HH:mm:ss'"
|
|
14
|
+
@change="changeHandler"
|
|
13
15
|
></TMagicTimePicker>
|
|
14
16
|
</template>
|
|
15
17
|
|
|
16
18
|
<script lang="ts" setup>
|
|
17
|
-
import { ref, watch } from 'vue';
|
|
19
|
+
import { onUnmounted, ref, watch } from 'vue';
|
|
20
|
+
import dayjs from 'dayjs';
|
|
18
21
|
|
|
19
22
|
import { TMagicTimePicker } from '@tmagic/design';
|
|
20
23
|
|
|
21
|
-
import type { DaterangeConfig, FieldProps } from '../schema';
|
|
24
|
+
import type { ChangeRecord, DaterangeConfig, FieldProps } from '../schema';
|
|
25
|
+
import { datetimeFormatter } from '../utils/form';
|
|
22
26
|
import { useAddField } from '../utils/useAddField';
|
|
23
27
|
|
|
24
28
|
defineOptions({
|
|
@@ -32,43 +36,83 @@ const emit = defineEmits(['change']);
|
|
|
32
36
|
useAddField(props.prop);
|
|
33
37
|
|
|
34
38
|
const { names } = props.config;
|
|
35
|
-
const value = ref<(Date | undefined)[] | null>([]);
|
|
39
|
+
const value = ref<(Date | string | undefined)[] | null>([]);
|
|
36
40
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
if (!value.value) {
|
|
42
|
-
value.value = [];
|
|
43
|
-
}
|
|
44
|
-
if (!start || !end) value.value = [];
|
|
45
|
-
if (start !== preStart) value.value[0] = start;
|
|
46
|
-
if (end !== preEnd) value.value[1] = end;
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
immediate: true,
|
|
50
|
-
},
|
|
51
|
-
);
|
|
52
|
-
}
|
|
41
|
+
const getFullDatetime = (item: string) => (item ? `${dayjs().format('YYYY/MM/DD')} ${item}` : '');
|
|
42
|
+
const getFormat = () => `YYYY/MM/DD ${props.config.valueFormat || 'HH:mm:ss'}`;
|
|
43
|
+
const timeFormatter = (time: string, format: string) =>
|
|
44
|
+
(datetimeFormatter(getFullDatetime(time), '', format) as string).substring(11);
|
|
53
45
|
|
|
54
|
-
|
|
55
|
-
names?.
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
46
|
+
if (props.model !== undefined) {
|
|
47
|
+
if (names?.length) {
|
|
48
|
+
const unWatch = watch(
|
|
49
|
+
[() => props.model[names[0]], () => props.model[names[1]]],
|
|
50
|
+
([start, end], [preStart, preEnd]) => {
|
|
51
|
+
if (!value.value) {
|
|
52
|
+
value.value = [];
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const format = getFormat();
|
|
56
|
+
if (!start || !end) value.value = [];
|
|
57
|
+
if (start !== preStart) value.value[0] = timeFormatter(start, format);
|
|
58
|
+
if (end !== preEnd) value.value[1] = timeFormatter(end, format);
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
immediate: true,
|
|
62
|
+
},
|
|
63
|
+
);
|
|
64
|
+
onUnmounted(() => {
|
|
65
|
+
unWatch();
|
|
66
|
+
});
|
|
67
|
+
} else if (props.name) {
|
|
68
|
+
const unWatch = watch(
|
|
69
|
+
() => props.model[props.name],
|
|
70
|
+
(v = []) => {
|
|
71
|
+
if (Array.isArray(v)) {
|
|
72
|
+
value.value = v.map((item: string) => (item ? timeFormatter(item, getFormat()) : undefined));
|
|
73
|
+
} else {
|
|
74
|
+
value.value = [];
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
immediate: true,
|
|
79
|
+
},
|
|
80
|
+
);
|
|
81
|
+
onUnmounted(() => {
|
|
82
|
+
unWatch();
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
66
86
|
|
|
67
87
|
const changeHandler = (v: Date[]) => {
|
|
68
88
|
const value = v || [];
|
|
69
|
-
|
|
70
|
-
|
|
89
|
+
|
|
90
|
+
if (props.name) {
|
|
91
|
+
emit('change', value);
|
|
92
|
+
} else {
|
|
93
|
+
if (props.config.names?.length) {
|
|
94
|
+
const newChangeRecords: ChangeRecord[] = [];
|
|
95
|
+
props.config.names.forEach((item, index) => {
|
|
96
|
+
if (!props.model) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
if (Array.isArray(v)) {
|
|
100
|
+
newChangeRecords.push({
|
|
101
|
+
propPath: props.prop ? `${props.prop}.${item}` : item,
|
|
102
|
+
value: v[index],
|
|
103
|
+
});
|
|
104
|
+
} else {
|
|
105
|
+
newChangeRecords.push({
|
|
106
|
+
propPath: props.prop ? `${props.prop}.${item}` : item,
|
|
107
|
+
value: undefined,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
emit('change', props.model, {
|
|
113
|
+
changeRecords: newChangeRecords,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
71
116
|
}
|
|
72
|
-
emit('change', value);
|
|
73
117
|
};
|
|
74
118
|
</script>
|
package/src/utils/form.ts
CHANGED
|
@@ -366,3 +366,18 @@ export const sortChange = (data: any[], { prop, order }: SortProp) => {
|
|
|
366
366
|
data.sort((a: any, b: any) => b[prop] - a[prop]);
|
|
367
367
|
}
|
|
368
368
|
};
|
|
369
|
+
|
|
370
|
+
export const createObjectProp = (prop: string, key: string, name?: string | number) => {
|
|
371
|
+
if (prop === '') {
|
|
372
|
+
return key;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
const itemPath = `${prop}`.split('.');
|
|
376
|
+
|
|
377
|
+
if (name) {
|
|
378
|
+
if (`${itemPath[itemPath.length - 1]}` === `${name}`) {
|
|
379
|
+
return `${[...itemPath.slice(0, -1), key].join('.')}`;
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
return `${[...itemPath, key].join('.')}`;
|
|
383
|
+
};
|
package/types/index.d.ts
CHANGED
|
@@ -31,6 +31,7 @@ declare const datetimeFormatter: (v: string | Date, defaultValue?: string, forma
|
|
|
31
31
|
declare const getDataByPage: (data: any[] | undefined, pagecontext: number, pagesize: number) => any[];
|
|
32
32
|
declare const sortArray: (data: any[], newIndex: number, oldIndex: number, sortKey?: string) => any[];
|
|
33
33
|
declare const sortChange: (data: any[], { prop, order }: SortProp) => void;
|
|
34
|
+
declare const createObjectProp: (prop: string, key: string, name?: string | number) => string;
|
|
34
35
|
|
|
35
36
|
declare const useAddField: (prop?: string) => void;
|
|
36
37
|
|
|
@@ -1330,5 +1331,5 @@ declare const _default: {
|
|
|
1330
1331
|
install(app: App, opt?: FormInstallOptions): void;
|
|
1331
1332
|
};
|
|
1332
1333
|
|
|
1333
|
-
export { _default$2 as MCascader, _default$c as MCheckbox, _default$7 as MCheckboxGroup, _default$8 as MColorPicker, _default$s as MContainer, _default$f as MDate, _default$e as MDateTime, _default$a as MDaterange, _default$5 as MDisplay, _default$1 as MDynamicField, _default$r as MFieldset, _default$q as MFlexLayout, _default$w as MForm, _default$t as MFormBox, _default$v as MFormDialog, _default$u as MFormDrawer, _default$l as MGroupList, _default$g as MHidden, _default$4 as MLink, _default$j as MNumber, _default$i as MNumberRange, _default$p as MPanel, _default$6 as MRadioGroup, _default$o as MRow, _default$3 as MSelect, _default$b as MSwitch, _default$m as MTable, _default$n as MTabs, _default$k as MText, _default$h as MTextarea, _default$d as MTime, _default$9 as MTimerange, createForm, createValues, datetimeFormatter, _default as default, display, filterFunction, getDataByPage, getRules, initValue, sortArray, sortChange, useAddField };
|
|
1334
|
+
export { _default$2 as MCascader, _default$c as MCheckbox, _default$7 as MCheckboxGroup, _default$8 as MColorPicker, _default$s as MContainer, _default$f as MDate, _default$e as MDateTime, _default$a as MDaterange, _default$5 as MDisplay, _default$1 as MDynamicField, _default$r as MFieldset, _default$q as MFlexLayout, _default$w as MForm, _default$t as MFormBox, _default$v as MFormDialog, _default$u as MFormDrawer, _default$l as MGroupList, _default$g as MHidden, _default$4 as MLink, _default$j as MNumber, _default$i as MNumberRange, _default$p as MPanel, _default$6 as MRadioGroup, _default$o as MRow, _default$3 as MSelect, _default$b as MSwitch, _default$m as MTable, _default$n as MTabs, _default$k as MText, _default$h as MTextarea, _default$d as MTime, _default$9 as MTimerange, createForm, createObjectProp, createValues, datetimeFormatter, _default as default, display, filterFunction, getDataByPage, getRules, initValue, sortArray, sortChange, useAddField };
|
|
1334
1335
|
export type { ChangeRecord, ContainerChangeEventData, FormInstallOptions, ValidateError };
|