@fmdevui/fm-dev
Version:
Page level components developed based on Element Plus.
100 lines (97 loc) • 2.82 kB
JavaScript
import { defineComponent, useModel, resolveComponent, createBlock, openBlock, withCtx, createCommentVNode, createElementBlock, Fragment, renderList, mergeModels } from 'vue';
var _sfc_main = /* @__PURE__ */ defineComponent({
...{
name: "Fmselect"
},
__name: "index",
props: /* @__PURE__ */ mergeModels({
//数据
optionData: {
type: Array,
default: []
},
/**
* 值的属性值
*/
bvalue: {
type: String,
default: "id"
},
/**
* 值的属性标签
*/
blabel: {
type: String,
default: "name"
},
elabel: {
type: String,
default: "\u8BF7\u9009\u62E9"
},
isshowelabel: {
type: Boolean,
default: true
},
placeholder: {
type: String,
default: "\u8BF7\u9009\u62E9"
}
}, {
"id": {
type: Number,
default: 0
},
"idModifiers": {},
"name": {
type: String,
default: ""
},
"nameModifiers": {}
}),
emits: /* @__PURE__ */ mergeModels(["change"], ["update:id", "update:name"]),
setup(__props, { emit: __emit }) {
const modeValueId = useModel(__props, "id");
const modeValueName = useModel(__props, "name");
const props = __props;
const emit = __emit;
const handleSelectChange = (value) => {
const fitem = props.optionData.find((item) => item[props.bvalue] == value);
modeValueName.value = fitem == null ? "" : fitem[props.blabel];
emit("change", fitem);
};
return (_ctx, _cache) => {
const _component_el_option = resolveComponent("el-option");
const _component_el_select = resolveComponent("el-select");
return openBlock(), createBlock(_component_el_select, {
modelValue: modeValueId.value,
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => modeValueId.value = $event),
placeholder: __props.placeholder,
onChange: handleSelectChange
}, {
default: withCtx(() => [
__props.isshowelabel ? (openBlock(), createBlock(_component_el_option, {
key: 0,
value: 0,
label: __props.elabel
}, null, 8, ["label"])) : createCommentVNode("v-if", true),
(openBlock(true), createElementBlock(
Fragment,
null,
renderList(__props.optionData, (item, index) => {
return openBlock(), createBlock(_component_el_option, {
key: index,
value: item[__props.bvalue],
label: item[__props.blabel]
}, null, 8, ["value", "label"]);
}),
128
/* KEYED_FRAGMENT */
))
]),
_: 1
/* STABLE */
}, 8, ["modelValue", "placeholder"]);
};
}
});
export { _sfc_main as default };