@fecp/mobile
Version:
105 lines (104 loc) • 4.27 kB
JavaScript
;
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
const vue = require("vue");
const formRule = require("../../../utils/formRule.js");
const _sfc_main = {
__name: "FormItem",
props: {
fieldType: {
type: String,
default: "text"
},
disabled: {
type: Boolean,
default: false
},
readonly: {
type: Boolean,
default: false
},
placeholder: String
},
emits: ["update:modelValue"],
setup(__props, { emit: __emit }) {
const props = __props;
const formItem = vue.computed(() => {
switch (props.fieldType) {
case "text":
return vue.defineAsyncComponent(() => Promise.resolve().then(() => require("../field/index.js")));
case "picker":
return vue.defineAsyncComponent(() => Promise.resolve().then(() => require("../fieldPicker/index.js")));
case "cascader":
return vue.defineAsyncComponent(() => Promise.resolve().then(() => require("../fieldCascaderPicker/index.js")));
case "calendar":
return vue.defineAsyncComponent(() => Promise.resolve().then(() => require("../fieldCalendarPicker/index.js")));
case "date":
return vue.defineAsyncComponent(() => Promise.resolve().then(() => require("../fieldDatePicker/index.js")));
case "dateTime":
return vue.defineAsyncComponent(() => Promise.resolve().then(() => require("../fieldDateTimePicker/index.js")));
case "time":
return vue.defineAsyncComponent(() => Promise.resolve().then(() => require("../fieldTimePicker/index.js")));
case "radio":
return vue.defineAsyncComponent(() => Promise.resolve().then(() => require("../fieldRadio/index.js")));
case "checkbox":
return vue.defineAsyncComponent(() => Promise.resolve().then(() => require("../fieldCheckbox/index.js")));
case "upload":
return vue.defineAsyncComponent(() => Promise.resolve().then(() => require("../fieldUploader/index.js")));
case "area":
return vue.defineAsyncComponent(() => Promise.resolve().then(() => require("../fieldArea/index.js")));
}
});
const formData = vue.inject("formData");
const formDisabled = vue.inject("formDisabled");
const formReadonly = vue.inject("formReadonly");
const dicListMap = vue.inject("dicListMap");
const formItemDisabled = vue.computed(() => {
if (formDisabled == null ? void 0 : formDisabled.value) {
return formDisabled.value;
}
return props.disabled;
});
const formItemReadonly = vue.computed(() => {
if (formReadonly == null ? void 0 : formReadonly.value) {
return formReadonly.value;
}
return props.readonly;
});
const attrs = vue.useAttrs();
const emit = __emit;
const compValue = vue.computed({
get: () => {
var _a;
if (formData) {
return (_a = formData.value) == null ? void 0 : _a[attrs.name];
}
return props.modelValue;
},
set: (val) => {
if (formData) {
formData.value[attrs.name] = val;
} else {
emit("update:modelValue", val);
}
}
});
const rules = vue.computed(() => {
return formRule.parseRule(props.fieldType, attrs);
});
return (_ctx, _cache) => {
var _a;
return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(vue.unref(formItem)), vue.mergeProps(_ctx.$attrs, {
modelValue: vue.unref(compValue),
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => vue.isRef(compValue) ? compValue.value = $event : null),
fieldType: __props.fieldType,
rules: vue.unref(rules),
required: vue.unref(formItemReadonly) ? false : "auto",
disabled: vue.unref(formItemDisabled),
readonly: vue.unref(formItemReadonly),
placeholder: vue.unref(formItemReadonly) ? "" : __props.placeholder,
dicList: (_a = vue.unref(dicListMap)) == null ? void 0 : _a[vue.unref(attrs).dicKey]
}), null, 16, ["modelValue", "fieldType", "rules", "required", "disabled", "readonly", "placeholder", "dicList"]);
};
}
};
exports.default = _sfc_main;