ai-form-designer
Version:
vue3+adv的设计器,可视化开发页面表单
79 lines (78 loc) • 2.04 kB
JavaScript
import { defineComponent as g, ref as h, watch as n, computed as v, h as t, nextTick as x } from "vue";
import { Upload as U, Button as V, message as s } from "ant-design-vue";
const B = g({
props: {
modelValue: {
type: Array,
default: () => []
}
},
emits: ["update:modelValue", "change"],
setup(d, { emit: a, attrs: i }) {
const l = h([]);
n(l, (e) => {
a("update:modelValue", e), a("change", e);
}), n(
() => d.modelValue,
(e) => {
if (e != null && e.length > 0 && l.value != null) {
if (l.value === e) return;
l.value.length = 0, l.value.push(...e);
}
},
{ deep: !0, immediate: !0 }
);
function p(e) {
x(() => {
l.value = e;
});
}
const f = (e) => {
var u, r;
if (e.file.status !== "uploading") {
if (e.file.status === "done") {
const o = (r = (u = e.file.response) == null ? void 0 : u.data) == null ? void 0 : r.url;
if (!e.file.url && !o) {
e.file.status = "error", s.error("上传失败");
return;
}
e.file.url = o;
}
e.file.status === "error" && s.error("upload error");
}
}, c = (e) => {
}, m = v(() => ({
...i,
"onUpdate:file-list": p,
"file-list": l.value,
"onBefore-upload": c,
onChange: f
}));
return () => t("div", null, {
default: () => [
t(U, m.value, {
default: () => [
t(
V,
{
class: "flex items-center"
},
{
default: () => [
t("span", {
class: "icon--epic icon--epic--cloud-upload-outlined text-lg",
style: { "margin-right": "2px" }
}),
t("span", null, { default: () => "上传文件" })
]
}
)
]
})
]
});
}
});
export {
B as default
};