UNPKG

fast-vue3-ui

Version:

<h1 align="center"> fast-ui </h1>

113 lines (112 loc) 3.94 kB
import { defineComponent as g, toRefs as k, ref as O, computed as V, onMounted as N, resolveComponent as m, openBlock as n, createElementBlock as r, createVNode as F, mergeProps as w, unref as a, withCtx as E, createTextVNode as i, toDisplayString as f, Fragment as y, createElementVNode as _, createCommentVNode as p } from "vue"; import "./style/index.css"; import { UploadFilled as x } from "@element-plus/icons-vue"; import { uploadProps as M, uploadEmits as U } from "./types.mjs"; import { ElMessage as o } from "element-plus"; const $ = { class: "upload-file uploadFile-container" }, L = { key: 0, class: "el-upload__tip" }, j = { style: { color: "#f56c6c" } }, I = { style: { color: "#f56c6c" } }, P = g({ name: "fast-upload-file" }), K = /* @__PURE__ */ g({ ...P, props: M, emits: U, setup(h, { emit: C }) { const u = h; let { modelValue: D, title: T, limit: z } = k(u); const s = O([]), A = V(() => u.isShowTip && (u.fileType || u.fileSize)); N(() => { u.modelValue.length > 0 && (s.value = D.value); }); function S(e) { let l = e.name; if (u.fileType.length) { let t = ""; if (l.lastIndexOf(".") > -1 && (t = l.slice(l.lastIndexOf(".") + 1)), !u.fileType.some((d) => e.type.indexOf(d) > -1 ? !0 : !!(t && t.indexOf(d) > -1))) return o({ type: "error", message: `\u6587\u4EF6\u683C\u5F0F\u4E0D\u6B63\u786E, \u8BF7\u4E0A\u4F20${u.fileType.join("/")}\u683C\u5F0F\u6587\u4EF6!` }), !1; } return u.fileSize && !(e.size / 1024 / 1024 < u.fileSize) ? (o({ type: "error", message: `\u4E0A\u4F20\u6587\u4EF6\u5927\u5C0F\u4E0D\u80FD\u8D85\u8FC7 ${u.fileSize} MB!` }), !1) : !0; } function v() { o({ type: "error", message: `\u4E0A\u4F20\u6587\u4EF6\u6570\u91CF\u4E0D\u80FD\u8D85\u8FC7 ${u.limit} \u4E2A!` }); } function B(e) { o({ type: "error", message: "\u4E0A\u4F20\u5931\u8D25" }); } function b(e, l) { if (console.log("\u4E0A\u4F20\u6210\u529F\u56DE\u8C03", e), e.code != 200) { u.limit <= 1 && (s.value = []), (e.msg === "" || e.msg === void 0) && (e.msg = "\u4E0A\u4F20\u5931\u8D25\uFF01"), o({ type: "error", message: e.msg }); return; } o({ type: "success", message: "\u4E0A\u4F20\u6210\u529F" }), s.value.push({ name: e.data.filename, url: e.data.url }), C("success"); } return (e, l) => { const t = m("el-button"), c = m("el-upload"); return n(), r("div", $, [ F(c, w(e.$attrs, { "before-upload": S, "file-list": s.value, limit: a(z), "on-error": B, "on-exceed": v, "on-success": b, "show-file-list": !0, class: "upload-file-uploader", ref: "upload" }), { default: E(() => [ F(t, { size: e.buttonSize, class: "filter-item", icon: a(x), type: e.buttonType }, { default: E(() => [ i(f(a(T) || "\u9009\u53D6\u6587\u4EF6"), 1) ]), _: 1 }, 8, ["size", "icon", "type"]), a(A) ? (n(), r("div", L, [ i(" \u8BF7\u4E0A\u4F20 "), e.fileSize ? (n(), r(y, { key: 0 }, [ i(" \u5927\u5C0F\u4E0D\u8D85\u8FC7 "), _("b", j, f(e.fileSize) + "MB", 1) ], 64)) : p("", !0), e.fileType ? (n(), r(y, { key: 1 }, [ i(" \u683C\u5F0F\u4E3A "), _("b", I, f(e.fileType.join("/")), 1) ], 64)) : p("", !0), i(" \u7684\u6587\u4EF6 ") ])) : p("", !0) ]), _: 1 }, 16, ["file-list", "limit"]) ]); }; } }); export { K as default };