import { ref as d, watch as $, onMounted as q, resolveComponent as b, openBlock as s, createElementBlock as u, withModifiers as x, toDisplayString as f, createCommentVNode as c, createVNode as o, withCtx as g, createTextVNode as P, createElementVNode as p } from "vue"; import { r as j, v as z, B as D } from "./index2.js"; import { a as E, d as I, b as V } from "./upload.js"; import { M as H } from "./index7.js"; import { _ as G } from "./index6.js"; const K = { class: "s-file-upload-common" }, X = { key: 0, class: "head" }, J = { key: 0, class: "head" }, Q = { key: 1 }, W = { class: "preview-content" }, Y = ["src"], Z = { __name: "SFileUpload", props: { /** * 文件列表 * @list */ list: { type: Array, default: () => [] }, /** * 标题 * @label */ label: { type: String, default: "" }, /** * 只读 * @readonly */ readonly: { type: Boolean, default: !1 }, /** * 是否显示删除 * @delete */ showRemoveIcon: { type: Boolean, default: !1 }, /** * 是否显示新增 * @isAdd */ isAdd: { type: Boolean, default: !0 }, /** * 文件类型 * @accept */ accept: { type: String, default: "" }, // 展示类型 picture | picture-card 注:规范内不设定text上传类型 listType: { type: String, default: "picture" }, maxFileCount: { type: Number, default: 3 }, sizeLimit: { type: Number, default: 50 }, businessTableName: { type: String, default: "sapit-ui-plus-components-upload" }, businessKey: { type: String, default: void 0 }, showUploadList: { type: Boolean, default: !0 } }, setup(l) { const m = l, n = d([]), r = d(!1), y = d(""), w = d(""), a = d(0); $(() => m.list, (e) => { e && e.length && (n.value = e); }, { immediate: !0 }); const L = (e) => { const t = e.size / 1024 / 1024 < m.sizeLimit; return t || z.warn({ key: "only-you", message: "提醒", description: `文件不能大于${m.sizeLimit}MB!` }), t; }, k = (e) => { n.value = e.fileList; }, U = ({ onSuccess: e, onError: t, file: i }) => { E(i, m.businessTableName, i.uid).then((v) => { e(); }).catch(() => { n.value.splice(n.value.length - 1, 1), t(); }); }, T = (e) => { const t = document.createElement("a"); t.href = I(e.uid), t.download = "test", t.click(); }, R = (e) => { a.value = n.value.findIndex((t) => t.uid === e.uid), r.value = !0, w.value = e.name || "预览", y.value = e.url || e.thumbUrl; }, B = () => { r.value = !1; }, C = (e) => { var t; a.value = a.value + e < 0 ? 0 : a.value + e > n.value.length - 1 ? n.value.length - 1 : a.value + e, (t = n.value[a.value]) != null && t.thumbUrl ? (w.value = n.value[a.value].name || "预览", y.value = n.value[a.value].thumbUrl) : F(n.value[a.value]); }, F = (e) => { if (e.type.includes("office")) { const t = window.open("", ""); t.location = V(e.uid + "/" + e.name); } else if (e.type.includes("text")) N(e.url); else if (e.type.includes("pdf") || e.type.includes("png") || e.type.includes("gif") || e.type.includes("jpeg") || e.type.includes("bmp") || e.type.includes("ico") || e.type.includes("webp")) { const t = window.open("", ""); t.location = e.url; } else this.$notification.warning({ message: "不支持此文件类型" }); }, N = (e) => { const t = new XMLHttpRequest(); t.open("GET", e, !0), t.responseType = "blob", t.setRequestHeader("Content-Type", "application/json"), t.onload = function() { const i = new Blob([t.response], { type: "application/json;charset=utf-8" }), v = window.URL.createObjectURL(i), h = window.open("", ""); h.location = v; }, t.send(); }; return q(() => { }), (e, t) => { const i = b("PlusOutlined"), v = D, h = G, O = b("LeftOutlined"), S = b("RightOutlined"), A = H; return s(), u("div", K, [ l.isAdd && l.listType === "picture-card" && n.value.length <= l.maxFileCount ? (s(), u("div", X, [ l.label ? (s(), u("div", { key: 0, class: "label", onClick: t[0] || (t[0] = x(() => { }, ["stop"])) }, f(l.label), 1)) : c("", !0) ])) : c("", !0), o(h, { accept: l.accept, "list-type": l.listType, "file-list": n.value, disabled: l.readonly, maxCount: l.maxFileCount, multiple: l.maxFileCount > 1, "before-upload": L, "custom-request": U, onChange: k, onPreview: R, onDownload: T, showUploadList: l.showUploadList }, { default: g(() => [ l.isAdd && l.listType === "picture" && n.value.length <= l.maxFileCount ? (s(), u("div", J, [ l.label ? (s(), u("div", { key: 0, class: "label", onClick: t[1] || (t[1] = x(() => { }, ["stop"])) }, f(l.label), 1)) : c("", !0), o(v, null, { default: g(() => [ o(i), P(" " + f(e.$l("点击上传", "components.upload")), 1) ]), _: 1 }) ])) : c("", !0), l.isAdd && l.listType === "picture-card" && n.value.length <= l.maxFileCount ? (s(), u("span", Q, [ o(i), p("div", null, f(e.$l("点击上传", "components.upload")), 1) ])) : c("", !0) ]), _: 1 }, 8, ["accept", "list-type", "file-list", "disabled", "maxCount", "multiple", "showUploadList"]), o(A, { open: r.value, title: w.value, footer: null, onCancel: B, width: "800px" }, { default: g(() => [ p("div", W, [ p("div", { class: "prev", onClick: t[2] || (t[2] = (M) => C(-1)) }, [ o(O) ]), p("img", { alt: "example", class: "view", src: y.value }, null, 8, Y), p("div", { class: "next", onClick: t[3] || (t[3] = (M) => C(1)) }, [ o(S) ]) ]) ]), _: 1 }, 8, ["open", "title"]) ]); }; } }, ae = /* @__PURE__ */ j(Z, [["__scopeId", "data-v-9a944142"]]); export { ae as default };