vxe-table-pro
Version:
Vue table plugins based on vxe-table
108 lines (107 loc) • 2.59 kB
JavaScript
import { defineComponent as y, ref as h, computed as g, watch as b, resolveComponent as p, createBlock as d, openBlock as i, mergeProps as C, withCtx as V, createElementBlock as O, Fragment as _, renderList as q } from "vue";
const k = {
enabled: [
{ label: "启用", value: 1 },
{ label: "停用", value: 2 }
]
}, B = /* @__PURE__ */ y({
__name: "index",
props: {
options: {
type: Array,
default: () => null
},
queryOptions: {
type: Function,
default: null
},
placeholder: {
type: String,
default: "请选择"
},
optionKey: {
type: String,
default: ""
},
form: {
type: Object,
default: () => ({})
},
valueChange: {
type: Function,
default: () => {
}
},
multiple: {
type: Boolean,
default: !1
},
modelValue: {
type: String,
default: ""
}
},
emits: ["update:modelValue"],
setup(u, { emit: s }) {
const e = u, n = h([]), c = s, r = g({
get: () => e.modelValue,
set: (l) => c("update:modelValue", l)
});
b(
() => [e.options, e.queryOptions],
() => {
var l;
if (e.queryOptions) {
(l = e.queryOptions) == null || l.call(e, e.form).then((t) => {
n.value = t;
});
return;
}
if (e.options) {
n.value = e.options;
return;
}
e.optionKey && (n.value = k[e.optionKey] || []);
},
{
immediate: !0
}
);
const m = (l) => {
var t;
l && ((t = e.queryOptions) == null || t.call(e, e.form).then((o) => {
n.value = o;
}));
}, f = (l) => {
const t = n.value.find((o) => o.value === l);
e.valueChange && e.valueChange(t, e.form);
};
return (l, t) => {
const o = p("el-option"), v = p("el-select");
return i(), d(v, C({
modelValue: r.value,
"onUpdate:modelValue": t[0] || (t[0] = (a) => r.value = a),
style: { width: "100%" },
placeholder: u.placeholder
}, e, {
filterable: "",
clearable: "",
onVisibleChange: m,
onChange: f,
multiple: u.multiple
}), {
default: V(() => [
(i(!0), O(_, null, q(n.value, (a) => (i(), d(o, {
key: a.value,
value: a.value,
label: a.label
}, null, 8, ["value", "label"]))), 128))
]),
_: 1
}, 16, ["modelValue", "placeholder", "multiple"]);
};
}
});
export {
B as default
};