@qynpm/ui 1.0.4 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +228 -59
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +19 -15
- package/dist/lib/dialog/index.vue.cjs +1 -1
- package/dist/lib/dialog/index.vue.mjs +24 -25
- package/dist/lib/dialog/index.vue3.cjs +1 -0
- package/dist/lib/dialog/index.vue3.mjs +5 -0
- package/dist/lib/index.cjs +1 -1
- package/dist/lib/index.mjs +43 -30
- package/dist/lib/qy-action-bar/index.vue.cjs +1 -1
- package/dist/lib/qy-action-bar/index.vue.mjs +4 -53
- package/dist/lib/qy-action-bar/index.vue2.cjs +1 -0
- package/dist/lib/qy-action-bar/index.vue2.mjs +55 -0
- package/dist/lib/qy-form-section/index.vue.cjs +1 -1
- package/dist/lib/qy-form-section/index.vue.mjs +4 -86
- package/dist/lib/qy-form-section/index.vue2.cjs +1 -0
- package/dist/lib/qy-form-section/index.vue2.mjs +87 -0
- package/dist/lib/qy-input/index.vue.mjs +2 -1
- package/dist/lib/qy-input/index.vue2.cjs +1 -0
- package/dist/lib/qy-input/index.vue2.mjs +4 -0
- package/dist/lib/qy-money-input/index.vue.cjs +1 -0
- package/dist/lib/qy-money-input/index.vue.mjs +171 -0
- package/dist/lib/qy-money-input/index.vue2.cjs +1 -0
- package/dist/lib/qy-money-input/index.vue2.mjs +4 -0
- package/dist/lib/qy-radio-group/index.vue.cjs +1 -0
- package/dist/lib/qy-radio-group/index.vue.mjs +90 -0
- package/dist/lib/qy-radio-group/index.vue2.cjs +1 -0
- package/dist/lib/qy-radio-group/index.vue2.mjs +4 -0
- package/dist/lib/qy-record-quote-search/index.vue.cjs +1 -1
- package/dist/lib/qy-record-quote-search/index.vue.mjs +4 -203
- package/dist/lib/qy-record-quote-search/index.vue2.cjs +1 -0
- package/dist/lib/qy-record-quote-search/index.vue2.mjs +204 -0
- package/dist/lib/qy-remote-select/index.vue.cjs +1 -0
- package/dist/lib/qy-remote-select/index.vue.mjs +214 -0
- package/dist/lib/qy-remote-select/index.vue2.cjs +1 -0
- package/dist/lib/qy-remote-select/index.vue2.mjs +4 -0
- package/dist/lib/qy-search-input/index.vue.cjs +1 -1
- package/dist/lib/qy-search-input/index.vue.mjs +4 -274
- package/dist/lib/qy-search-input/index.vue2.cjs +1 -0
- package/dist/lib/qy-search-input/index.vue2.mjs +276 -0
- package/dist/lib/qy-select/index.vue.cjs +1 -1
- package/dist/lib/qy-select/index.vue.mjs +80 -55
- package/dist/lib/qy-select/index.vue2.cjs +1 -0
- package/dist/lib/qy-select/index.vue2.mjs +4 -0
- package/dist/lib/qy-voucher-upload/index.vue.cjs +1 -0
- package/dist/lib/qy-voucher-upload/index.vue.mjs +123 -0
- package/dist/lib/remark-image/index.vue.cjs +1 -1
- package/dist/lib/remark-image/index.vue.mjs +4 -195
- package/dist/lib/remark-image/index.vue2.cjs +1 -0
- package/dist/lib/remark-image/index.vue2.mjs +197 -0
- package/dist/lib/upload/index.vue.cjs +1 -1
- package/dist/lib/upload/index.vue.mjs +317 -217
- package/dist/lib/utils/auth.cjs +1 -1
- package/dist/lib/utils/auth.mjs +1 -1
- package/dist/node_modules/.pnpm/{js-cookie@3.0.1 → js-cookie@3.0.5}/node_modules/js-cookie/dist/js.cookie.cjs +1 -1
- package/dist/node_modules/.pnpm/{js-cookie@3.0.1 → js-cookie@3.0.5}/node_modules/js-cookie/dist/js.cookie.mjs +6 -6
- package/dist/qy-dialog/index.cjs +1 -1
- package/dist/qy-dialog/index.mjs +3 -2
- package/dist/qy-input/index.cjs +1 -1
- package/dist/qy-money-input/index.cjs +1 -0
- package/dist/qy-money-input/index.mjs +6 -0
- package/dist/qy-radio-group/index.cjs +1 -0
- package/dist/qy-radio-group/index.mjs +6 -0
- package/dist/qy-remark-image/index.cjs +1 -1
- package/dist/qy-remark-image/index.mjs +1 -1
- package/dist/qy-remote-select/index.cjs +1 -0
- package/dist/qy-remote-select/index.mjs +6 -0
- package/dist/qy-select/index.cjs +1 -1
- package/dist/qy-voucher-upload/index.cjs +1 -0
- package/dist/qy-voucher-upload/index.mjs +6 -0
- package/index.d.ts +20 -11
- package/package.json +25 -1
- package/qy-money-input/index.d.ts +12 -0
- package/qy-money-input/index.js +15 -0
- package/qy-radio-group/index.d.ts +12 -0
- package/qy-radio-group/index.js +15 -0
- package/qy-remote-select/index.d.ts +12 -0
- package/qy-remote-select/index.js +15 -0
- package/qy-voucher-upload/index.d.ts +12 -0
- package/qy-voucher-upload/index.js +15 -0
- /package/dist/_virtual/{plugin-vue_export-helper.cjs → _plugin-vue_export-helper.cjs} +0 -0
- /package/dist/_virtual/{plugin-vue_export-helper.mjs → _plugin-vue_export-helper.mjs} +0 -0
|
@@ -1,198 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { ElMessage as w, ElInput as G, ElPopover as H, ElButton as J, ElUpload as X } from "element-plus";
|
|
3
|
-
import Y from "../../node_modules/.pnpm/js-cookie@3.0.1/node_modules/js-cookie/dist/js.cookie.mjs";
|
|
4
|
-
import { parseRemarkText as T, parseRemarkWithImage as q, formatRemarkText as Z } from "./utils.mjs";
|
|
1
|
+
import a from "./index.vue2.mjs";
|
|
5
2
|
/* empty css */
|
|
6
|
-
import
|
|
7
|
-
const
|
|
8
|
-
key: 0,
|
|
9
|
-
class: "icon-[line-md--loading-twotone-loop]",
|
|
10
|
-
role: "img",
|
|
11
|
-
"aria-hidden": "true"
|
|
12
|
-
}, le = {
|
|
13
|
-
key: 1,
|
|
14
|
-
class: "icon-[ion--cloud-upload-outline]",
|
|
15
|
-
role: "img",
|
|
16
|
-
"aria-hidden": "true"
|
|
17
|
-
}, oe = {
|
|
18
|
-
key: 2,
|
|
19
|
-
class: "icon-[ph--images-thin]",
|
|
20
|
-
role: "img",
|
|
21
|
-
"aria-hidden": "true"
|
|
22
|
-
}, ue = { class: "qy-remark-image__popover" }, ie = ["src"], se = { class: "qy-remark-image__popover-footer" }, ne = N({
|
|
23
|
-
__name: "index",
|
|
24
|
-
props: {
|
|
25
|
-
defaultValue: { default: "" },
|
|
26
|
-
defaultImage: { default: "" },
|
|
27
|
-
rows: { default: 6 },
|
|
28
|
-
width: { default: "" },
|
|
29
|
-
autosize: { type: [Boolean, Object], default: !1 },
|
|
30
|
-
disabled: { type: Boolean, default: !1 },
|
|
31
|
-
placeholder: { default: "粘贴图片上传" },
|
|
32
|
-
type: { default: "textarea" },
|
|
33
|
-
api: { default: "/permission-api/common/uploads" },
|
|
34
|
-
tokenKey: { default: "Admin-Token" }
|
|
35
|
-
},
|
|
36
|
-
emits: ["change"],
|
|
37
|
-
setup(z, { expose: V, emit: C }) {
|
|
38
|
-
const r = z, D = C, U = j(), y = f(null), o = f(""), l = f(""), d = f(!1), P = B(
|
|
39
|
-
() => r.type === "text" ? "text" : "textarea"
|
|
40
|
-
), R = B(() => {
|
|
41
|
-
if (r.width)
|
|
42
|
-
return {
|
|
43
|
-
width: typeof r.width == "number" ? `${r.width}px` : r.width
|
|
44
|
-
};
|
|
45
|
-
});
|
|
46
|
-
I(
|
|
47
|
-
() => r.defaultValue,
|
|
48
|
-
(e) => {
|
|
49
|
-
const a = T(e || "");
|
|
50
|
-
o.value = a.text, l.value = a.imageUrl || r.defaultImage || "";
|
|
51
|
-
},
|
|
52
|
-
{ immediate: !0 }
|
|
53
|
-
), I(
|
|
54
|
-
() => r.defaultImage,
|
|
55
|
-
(e) => {
|
|
56
|
-
e !== void 0 && !T(r.defaultValue || "").imageUrl && (l.value = e || "");
|
|
57
|
-
},
|
|
58
|
-
{ immediate: !0 }
|
|
59
|
-
), K(() => {
|
|
60
|
-
M(S);
|
|
61
|
-
}), O(() => {
|
|
62
|
-
const e = b();
|
|
63
|
-
e && e.removeEventListener("paste", _);
|
|
64
|
-
});
|
|
65
|
-
function b() {
|
|
66
|
-
var e, a;
|
|
67
|
-
return ((e = y.value) == null ? void 0 : e.textarea) || ((a = y.value) == null ? void 0 : a.input) || null;
|
|
68
|
-
}
|
|
69
|
-
function S() {
|
|
70
|
-
const e = b();
|
|
71
|
-
e && (e.removeEventListener("paste", _), e.addEventListener("paste", _));
|
|
72
|
-
}
|
|
73
|
-
function L(e) {
|
|
74
|
-
o.value = Z(e || "");
|
|
75
|
-
}
|
|
76
|
-
function x() {
|
|
77
|
-
l.value = "", k();
|
|
78
|
-
}
|
|
79
|
-
async function _(e) {
|
|
80
|
-
var s;
|
|
81
|
-
const i = Array.from(((s = e.clipboardData) == null ? void 0 : s.files) || []).find((m) => m.type.startsWith("image/"));
|
|
82
|
-
i && (e.preventDefault(), await F({
|
|
83
|
-
file: i,
|
|
84
|
-
onError: () => {
|
|
85
|
-
},
|
|
86
|
-
onProgress: () => {
|
|
87
|
-
},
|
|
88
|
-
onSuccess: () => {
|
|
89
|
-
}
|
|
90
|
-
}));
|
|
91
|
-
}
|
|
92
|
-
async function F(e) {
|
|
93
|
-
var a, i, s, m;
|
|
94
|
-
if (e.file.size > 51200 * 1e3)
|
|
95
|
-
return w.error("图片过大"), !1;
|
|
96
|
-
d.value = !0;
|
|
97
|
-
try {
|
|
98
|
-
const c = new FormData();
|
|
99
|
-
c.append("files", e.file);
|
|
100
|
-
const A = Y.get(r.tokenKey), t = await (await fetch(r.api, {
|
|
101
|
-
method: "POST",
|
|
102
|
-
body: c,
|
|
103
|
-
credentials: "include",
|
|
104
|
-
headers: A ? { Authorization: `Bearer ${A}` } : void 0
|
|
105
|
-
})).json(), E = (t == null ? void 0 : t.urls) ?? ((a = t == null ? void 0 : t.data) == null ? void 0 : a.urls) ?? ((i = t == null ? void 0 : t.data) == null ? void 0 : i.url) ?? (t == null ? void 0 : t.url) ?? "";
|
|
106
|
-
return l.value = Array.isArray(E) ? E[0] : E, k(), w.success("上传图片成功"), (s = e.onSuccess) == null || s.call(e, t), !0;
|
|
107
|
-
} catch (c) {
|
|
108
|
-
return (m = e.onError) == null || m.call(e, c), w.error("上传失败"), !1;
|
|
109
|
-
} finally {
|
|
110
|
-
d.value = !1;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
function k() {
|
|
114
|
-
D(
|
|
115
|
-
"change",
|
|
116
|
-
q(o.value || "", l.value || ""),
|
|
117
|
-
l.value || ""
|
|
118
|
-
);
|
|
119
|
-
}
|
|
120
|
-
return V({
|
|
121
|
-
deleteImage: x,
|
|
122
|
-
getValue: () => ({
|
|
123
|
-
text: o.value || "",
|
|
124
|
-
imageUrl: l.value || "",
|
|
125
|
-
value: q(o.value || "", l.value || "")
|
|
126
|
-
})
|
|
127
|
-
}), (e, a) => (v(), p("div", {
|
|
128
|
-
class: "qy-remark-image",
|
|
129
|
-
style: W(R.value)
|
|
130
|
-
}, [
|
|
131
|
-
u("div", ae, [
|
|
132
|
-
g(n(G), $({
|
|
133
|
-
ref_key: "inputRef",
|
|
134
|
-
ref: y,
|
|
135
|
-
"model-value": o.value,
|
|
136
|
-
type: P.value,
|
|
137
|
-
rows: e.rows,
|
|
138
|
-
autosize: e.autosize,
|
|
139
|
-
disabled: e.disabled,
|
|
140
|
-
placeholder: e.placeholder
|
|
141
|
-
}, n(U), {
|
|
142
|
-
"onUpdate:modelValue": L,
|
|
143
|
-
onBlur: k
|
|
144
|
-
}), null, 16, ["model-value", "type", "rows", "autosize", "disabled", "placeholder"]),
|
|
145
|
-
g(n(H), {
|
|
146
|
-
placement: "top-start",
|
|
147
|
-
width: 400,
|
|
148
|
-
trigger: "hover",
|
|
149
|
-
disabled: !l.value
|
|
150
|
-
}, {
|
|
151
|
-
reference: h(() => [
|
|
152
|
-
u("div", te, [
|
|
153
|
-
g(n(X), {
|
|
154
|
-
disabled: d.value || e.disabled,
|
|
155
|
-
class: "qy-remark-image__upload",
|
|
156
|
-
"show-file-list": !1,
|
|
157
|
-
"http-request": F
|
|
158
|
-
}, {
|
|
159
|
-
default: h(() => [
|
|
160
|
-
d.value ? (v(), p("span", re)) : l.value ? (v(), p("span", oe)) : (v(), p("span", le))
|
|
161
|
-
]),
|
|
162
|
-
_: 1
|
|
163
|
-
}, 8, ["disabled"])
|
|
164
|
-
])
|
|
165
|
-
]),
|
|
166
|
-
default: h(() => [
|
|
167
|
-
u("div", ue, [
|
|
168
|
-
u("img", {
|
|
169
|
-
src: l.value,
|
|
170
|
-
class: "qy-remark-image__preview-img"
|
|
171
|
-
}, null, 8, ie),
|
|
172
|
-
u("div", se, [
|
|
173
|
-
a[1] || (a[1] = u("span", { class: "qy-remark-image__popover-tip" }, "再次点击按钮可更换图片", -1)),
|
|
174
|
-
g(n(J), {
|
|
175
|
-
link: "",
|
|
176
|
-
size: "small",
|
|
177
|
-
type: "danger",
|
|
178
|
-
disabled: e.disabled,
|
|
179
|
-
onClick: x
|
|
180
|
-
}, {
|
|
181
|
-
default: h(() => a[0] || (a[0] = [
|
|
182
|
-
Q(" 删除图片 ", -1)
|
|
183
|
-
])),
|
|
184
|
-
_: 1,
|
|
185
|
-
__: [0]
|
|
186
|
-
}, 8, ["disabled"])
|
|
187
|
-
])
|
|
188
|
-
])
|
|
189
|
-
]),
|
|
190
|
-
_: 1
|
|
191
|
-
}, 8, ["disabled"])
|
|
192
|
-
])
|
|
193
|
-
], 4));
|
|
194
|
-
}
|
|
195
|
-
}), he = /* @__PURE__ */ ee(ne, [["__scopeId", "data-v-3b943ab8"]]);
|
|
3
|
+
import o from "../../_virtual/_plugin-vue_export-helper.mjs";
|
|
4
|
+
const e = /* @__PURE__ */ o(a, [["__scopeId", "data-v-dd0a0a37"]]);
|
|
196
5
|
export {
|
|
197
|
-
|
|
6
|
+
e as default
|
|
198
7
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),n=require("element-plus"),z=require("../../node_modules/.pnpm/js-cookie@3.0.5/node_modules/js-cookie/dist/js.cookie.cjs"),u=require("./utils.cjs"),C={class:"qy-remark-image__field"},P={class:"qy-remark-image__upload-anchor"},R={key:0,class:"icon-[line-md--loading-twotone-loop]",role:"img","aria-hidden":"true"},S={key:1,class:"icon-[ion--cloud-upload-outline]",role:"img","aria-hidden":"true"},U={key:2,class:"icon-[ph--images-thin]",role:"img","aria-hidden":"true"},A={class:"qy-remark-image__popover"},M=["src"],j={class:"qy-remark-image__popover-footer"},D=e.defineComponent({__name:"index",props:{defaultValue:{default:""},defaultImage:{default:""},rows:{default:6},width:{default:""},autosize:{type:[Boolean,Object],default:!1},disabled:{type:Boolean,default:!1},placeholder:{default:"粘贴图片上传"},type:{default:"textarea"},api:{default:"/permission-api/common/uploads"},tokenKey:{default:"Admin-Token"}},emits:["change"],setup(E,{expose:b,emit:x}){const l=E,V=x,q=e.useAttrs(),p=e.ref(null),s=e.ref(""),o=e.ref(""),c=e.ref(!1),B=e.computed(()=>l.type==="text"?"text":"textarea"),T=e.computed(()=>{if(l.width)return{width:typeof l.width=="number"?`${l.width}px`:l.width}});e.watch(()=>l.defaultValue,a=>{const t=u.parseRemarkText(a||"");s.value=t.text,o.value=t.imageUrl||l.defaultImage||""},{immediate:!0}),e.watch(()=>l.defaultImage,a=>{a!==void 0&&!u.parseRemarkText(l.defaultValue||"").imageUrl&&(o.value=a||"")},{immediate:!0}),e.onMounted(()=>{e.nextTick(N)}),e.onUnmounted(()=>{const a=y();a&&a.removeEventListener("paste",v)});function y(){var a,t;return((a=p.value)==null?void 0:a.textarea)||((t=p.value)==null?void 0:t.input)||null}function N(){const a=y();a&&(a.removeEventListener("paste",v),a.addEventListener("paste",v))}function I(a){s.value=u.formatRemarkText(a||"")}function k(){o.value="",g()}async function v(a){var d;const i=Array.from(((d=a.clipboardData)==null?void 0:d.files)||[]).find(m=>m.type.startsWith("image/"));i&&(a.preventDefault(),await _({file:i,onError:()=>{},onProgress:()=>{},onSuccess:()=>{}}))}async function _(a){var t,i,d,m;if(a.file.size>51200*1e3)return n.ElMessage.error("图片过大"),!1;c.value=!0;try{const f=new FormData;f.append("files",a.file);const w=z.default.get(l.tokenKey),r=await(await fetch(l.api,{method:"POST",body:f,credentials:"include",headers:w?{Authorization:`Bearer ${w}`}:void 0})).json(),h=(r==null?void 0:r.urls)??((t=r==null?void 0:r.data)==null?void 0:t.urls)??((i=r==null?void 0:r.data)==null?void 0:i.url)??(r==null?void 0:r.url)??"";return o.value=Array.isArray(h)?h[0]:h,g(),n.ElMessage.success("上传图片成功"),(d=a.onSuccess)==null||d.call(a,r),!0}catch(f){return(m=a.onError)==null||m.call(a,f),n.ElMessage.error("上传失败"),!1}finally{c.value=!1}}function g(){V("change",u.parseRemarkWithImage(s.value||"",o.value||""),o.value||"")}return b({deleteImage:k,getValue:()=>({text:s.value||"",imageUrl:o.value||"",value:u.parseRemarkWithImage(s.value||"",o.value||"")})}),(a,t)=>(e.openBlock(),e.createElementBlock("div",{class:"qy-remark-image",style:e.normalizeStyle(T.value)},[e.createElementVNode("div",C,[e.createVNode(e.unref(n.ElInput),e.mergeProps({ref_key:"inputRef",ref:p,"model-value":s.value,type:B.value,rows:a.rows,autosize:a.autosize,disabled:a.disabled,placeholder:a.placeholder},e.unref(q),{"onUpdate:modelValue":I,onBlur:g}),null,16,["model-value","type","rows","autosize","disabled","placeholder"]),e.createVNode(e.unref(n.ElPopover),{placement:"top-start",width:400,trigger:"hover",disabled:!o.value},{reference:e.withCtx(()=>[e.createElementVNode("div",P,[e.createVNode(e.unref(n.ElUpload),{disabled:c.value||a.disabled,class:"qy-remark-image__upload","show-file-list":!1,"http-request":_},{default:e.withCtx(()=>[c.value?(e.openBlock(),e.createElementBlock("span",R)):o.value?(e.openBlock(),e.createElementBlock("span",U)):(e.openBlock(),e.createElementBlock("span",S))]),_:1},8,["disabled"])])]),default:e.withCtx(()=>[e.createElementVNode("div",A,[e.createElementVNode("img",{src:o.value,class:"qy-remark-image__preview-img"},null,8,M),e.createElementVNode("div",j,[t[1]||(t[1]=e.createElementVNode("span",{class:"qy-remark-image__popover-tip"},"再次点击按钮可更换图片",-1)),e.createVNode(e.unref(n.ElButton),{link:"",size:"small",type:"danger",disabled:a.disabled,onClick:k},{default:e.withCtx(()=>t[0]||(t[0]=[e.createTextVNode(" 删除图片 ",-1)])),_:1,__:[0]},8,["disabled"])])])]),_:1},8,["disabled"])])],4))}});exports.default=D;
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { defineComponent as j, useAttrs as F, ref as f, computed as z, watch as I, onMounted as K, nextTick as M, onUnmounted as O, createElementBlock as p, openBlock as v, normalizeStyle as W, createElementVNode as i, createVNode as g, unref as d, mergeProps as $, withCtx as h, createTextVNode as G } from "vue";
|
|
2
|
+
import { ElMessage as b, ElInput as H, ElPopover as J, ElButton as Q, ElUpload as X } from "element-plus";
|
|
3
|
+
import Y from "../../node_modules/.pnpm/js-cookie@3.0.5/node_modules/js-cookie/dist/js.cookie.mjs";
|
|
4
|
+
import { parseRemarkText as V, parseRemarkWithImage as B, formatRemarkText as Z } from "./utils.mjs";
|
|
5
|
+
const ee = { class: "qy-remark-image__field" }, ae = { class: "qy-remark-image__upload-anchor" }, te = {
|
|
6
|
+
key: 0,
|
|
7
|
+
class: "icon-[line-md--loading-twotone-loop]",
|
|
8
|
+
role: "img",
|
|
9
|
+
"aria-hidden": "true"
|
|
10
|
+
}, re = {
|
|
11
|
+
key: 1,
|
|
12
|
+
class: "icon-[ion--cloud-upload-outline]",
|
|
13
|
+
role: "img",
|
|
14
|
+
"aria-hidden": "true"
|
|
15
|
+
}, le = {
|
|
16
|
+
key: 2,
|
|
17
|
+
class: "icon-[ph--images-thin]",
|
|
18
|
+
role: "img",
|
|
19
|
+
"aria-hidden": "true"
|
|
20
|
+
}, oe = { class: "qy-remark-image__popover" }, ie = ["src"], se = { class: "qy-remark-image__popover-footer" }, fe = /* @__PURE__ */ j({
|
|
21
|
+
__name: "index",
|
|
22
|
+
props: {
|
|
23
|
+
defaultValue: { default: "" },
|
|
24
|
+
defaultImage: { default: "" },
|
|
25
|
+
rows: { default: 6 },
|
|
26
|
+
width: { default: "" },
|
|
27
|
+
autosize: { type: [Boolean, Object], default: !1 },
|
|
28
|
+
disabled: { type: Boolean, default: !1 },
|
|
29
|
+
placeholder: { default: "粘贴图片上传" },
|
|
30
|
+
type: { default: "textarea" },
|
|
31
|
+
api: { default: "/permission-api/common/uploads" },
|
|
32
|
+
tokenKey: { default: "Admin-Token" }
|
|
33
|
+
},
|
|
34
|
+
emits: ["change"],
|
|
35
|
+
setup(U, { expose: A, emit: P }) {
|
|
36
|
+
const r = U, C = P, R = F(), y = f(null), o = f(""), l = f(""), u = f(!1), S = z(
|
|
37
|
+
() => r.type === "text" ? "text" : "textarea"
|
|
38
|
+
), D = z(() => {
|
|
39
|
+
if (r.width)
|
|
40
|
+
return {
|
|
41
|
+
width: typeof r.width == "number" ? `${r.width}px` : r.width
|
|
42
|
+
};
|
|
43
|
+
});
|
|
44
|
+
I(
|
|
45
|
+
() => r.defaultValue,
|
|
46
|
+
(e) => {
|
|
47
|
+
const a = V(e || "");
|
|
48
|
+
o.value = a.text, l.value = a.imageUrl || r.defaultImage || "";
|
|
49
|
+
},
|
|
50
|
+
{ immediate: !0 }
|
|
51
|
+
), I(
|
|
52
|
+
() => r.defaultImage,
|
|
53
|
+
(e) => {
|
|
54
|
+
e !== void 0 && !V(r.defaultValue || "").imageUrl && (l.value = e || "");
|
|
55
|
+
},
|
|
56
|
+
{ immediate: !0 }
|
|
57
|
+
), K(() => {
|
|
58
|
+
M(L);
|
|
59
|
+
}), O(() => {
|
|
60
|
+
const e = x();
|
|
61
|
+
e && e.removeEventListener("paste", _);
|
|
62
|
+
});
|
|
63
|
+
function x() {
|
|
64
|
+
var e, a;
|
|
65
|
+
return ((e = y.value) == null ? void 0 : e.textarea) || ((a = y.value) == null ? void 0 : a.input) || null;
|
|
66
|
+
}
|
|
67
|
+
function L() {
|
|
68
|
+
const e = x();
|
|
69
|
+
e && (e.removeEventListener("paste", _), e.addEventListener("paste", _));
|
|
70
|
+
}
|
|
71
|
+
function N(e) {
|
|
72
|
+
o.value = Z(e || "");
|
|
73
|
+
}
|
|
74
|
+
function E() {
|
|
75
|
+
l.value = "", k();
|
|
76
|
+
}
|
|
77
|
+
async function _(e) {
|
|
78
|
+
var n;
|
|
79
|
+
const s = Array.from(((n = e.clipboardData) == null ? void 0 : n.files) || []).find((m) => m.type.startsWith("image/"));
|
|
80
|
+
s && (e.preventDefault(), await T({
|
|
81
|
+
file: s,
|
|
82
|
+
onError: () => {
|
|
83
|
+
},
|
|
84
|
+
onProgress: () => {
|
|
85
|
+
},
|
|
86
|
+
onSuccess: () => {
|
|
87
|
+
}
|
|
88
|
+
}));
|
|
89
|
+
}
|
|
90
|
+
async function T(e) {
|
|
91
|
+
var a, s, n, m;
|
|
92
|
+
if (e.file.size > 51200 * 1e3)
|
|
93
|
+
return b.error("图片过大"), !1;
|
|
94
|
+
u.value = !0;
|
|
95
|
+
try {
|
|
96
|
+
const c = new FormData();
|
|
97
|
+
c.append("files", e.file);
|
|
98
|
+
const q = Y.get(r.tokenKey), t = await (await fetch(r.api, {
|
|
99
|
+
method: "POST",
|
|
100
|
+
body: c,
|
|
101
|
+
credentials: "include",
|
|
102
|
+
headers: q ? { Authorization: `Bearer ${q}` } : void 0
|
|
103
|
+
})).json(), w = (t == null ? void 0 : t.urls) ?? ((a = t == null ? void 0 : t.data) == null ? void 0 : a.urls) ?? ((s = t == null ? void 0 : t.data) == null ? void 0 : s.url) ?? (t == null ? void 0 : t.url) ?? "";
|
|
104
|
+
return l.value = Array.isArray(w) ? w[0] : w, k(), b.success("上传图片成功"), (n = e.onSuccess) == null || n.call(e, t), !0;
|
|
105
|
+
} catch (c) {
|
|
106
|
+
return (m = e.onError) == null || m.call(e, c), b.error("上传失败"), !1;
|
|
107
|
+
} finally {
|
|
108
|
+
u.value = !1;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
function k() {
|
|
112
|
+
C(
|
|
113
|
+
"change",
|
|
114
|
+
B(o.value || "", l.value || ""),
|
|
115
|
+
l.value || ""
|
|
116
|
+
);
|
|
117
|
+
}
|
|
118
|
+
return A({
|
|
119
|
+
deleteImage: E,
|
|
120
|
+
// 给表单保存或外部调试读取当前拆分值。
|
|
121
|
+
getValue: () => ({
|
|
122
|
+
text: o.value || "",
|
|
123
|
+
imageUrl: l.value || "",
|
|
124
|
+
value: B(o.value || "", l.value || "")
|
|
125
|
+
})
|
|
126
|
+
}), (e, a) => (v(), p("div", {
|
|
127
|
+
class: "qy-remark-image",
|
|
128
|
+
style: W(D.value)
|
|
129
|
+
}, [
|
|
130
|
+
i("div", ee, [
|
|
131
|
+
g(d(H), $({
|
|
132
|
+
ref_key: "inputRef",
|
|
133
|
+
ref: y,
|
|
134
|
+
"model-value": o.value,
|
|
135
|
+
type: S.value,
|
|
136
|
+
rows: e.rows,
|
|
137
|
+
autosize: e.autosize,
|
|
138
|
+
disabled: e.disabled,
|
|
139
|
+
placeholder: e.placeholder
|
|
140
|
+
}, d(R), {
|
|
141
|
+
"onUpdate:modelValue": N,
|
|
142
|
+
onBlur: k
|
|
143
|
+
}), null, 16, ["model-value", "type", "rows", "autosize", "disabled", "placeholder"]),
|
|
144
|
+
g(d(J), {
|
|
145
|
+
placement: "top-start",
|
|
146
|
+
width: 400,
|
|
147
|
+
trigger: "hover",
|
|
148
|
+
disabled: !l.value
|
|
149
|
+
}, {
|
|
150
|
+
reference: h(() => [
|
|
151
|
+
i("div", ae, [
|
|
152
|
+
g(d(X), {
|
|
153
|
+
disabled: u.value || e.disabled,
|
|
154
|
+
class: "qy-remark-image__upload",
|
|
155
|
+
"show-file-list": !1,
|
|
156
|
+
"http-request": T
|
|
157
|
+
}, {
|
|
158
|
+
default: h(() => [
|
|
159
|
+
u.value ? (v(), p("span", te)) : l.value ? (v(), p("span", le)) : (v(), p("span", re))
|
|
160
|
+
]),
|
|
161
|
+
_: 1
|
|
162
|
+
}, 8, ["disabled"])
|
|
163
|
+
])
|
|
164
|
+
]),
|
|
165
|
+
default: h(() => [
|
|
166
|
+
i("div", oe, [
|
|
167
|
+
i("img", {
|
|
168
|
+
src: l.value,
|
|
169
|
+
class: "qy-remark-image__preview-img"
|
|
170
|
+
}, null, 8, ie),
|
|
171
|
+
i("div", se, [
|
|
172
|
+
a[1] || (a[1] = i("span", { class: "qy-remark-image__popover-tip" }, "再次点击按钮可更换图片", -1)),
|
|
173
|
+
g(d(Q), {
|
|
174
|
+
link: "",
|
|
175
|
+
size: "small",
|
|
176
|
+
type: "danger",
|
|
177
|
+
disabled: e.disabled,
|
|
178
|
+
onClick: E
|
|
179
|
+
}, {
|
|
180
|
+
default: h(() => a[0] || (a[0] = [
|
|
181
|
+
G(" 删除图片 ", -1)
|
|
182
|
+
])),
|
|
183
|
+
_: 1,
|
|
184
|
+
__: [0]
|
|
185
|
+
}, 8, ["disabled"])
|
|
186
|
+
])
|
|
187
|
+
])
|
|
188
|
+
]),
|
|
189
|
+
_: 1
|
|
190
|
+
}, 8, ["disabled"])
|
|
191
|
+
])
|
|
192
|
+
], 4));
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
export {
|
|
196
|
+
fe as default
|
|
197
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const w=require("element-plus/es"),e=require("vue"),O=require("@element-plus/icons-vue"),v=require("element-plus"),oe=require("../utils/auth.cjs");;/* empty css */;/* empty css */const ie=require("../../_virtual/plugin-vue_export-helper.cjs"),se={class:"qy-upload__hint"},ne=["src"],re={key:1,class:"qy-upload__tip"},ue={class:"error"},de={class:"error"},ce=Object.assign({name:"QyUpload"},{__name:"index",props:{defaultValue:{type:Object,default:()=>({files:"",text:""})},multiple:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},fileType:{type:Array,default:()=>[]},fileSize:{type:Number,default:10},limit:{type:Number,default:9},isShowTip:{type:Boolean,default:!1},api:{type:String,default:"/permission-api/common/uploads"},name:{type:String,default:"file"},tokenKey:{type:String,default:"Admin-Token"},supportVideo:{type:Boolean,default:!1},size:{type:String,default:"default"},disableDrag:{type:Boolean,default:!1},callBack:{type:Function,default:null},extraData:{type:Object,default:()=>({})}},emits:["change","success","error","remove"],setup(p,{expose:A,emit:I}){const s=p,g=I,h=e.ref(null),u=e.ref([]),M=e.ref(null),x=[],C=e.ref(!1),S=e.ref([]),E=e.ref(0),V=e.ref(!1),L=e.ref(""),T=e.ref(""),k=new Set,B=e.ref(!1),f=e.ref(""),D=e.ref(!1);e.onMounted(()=>{const l=s.defaultValue;if(!l)return;f.value=l.text??"";const t=l.files??"",o=Array.isArray(t)?t.filter(Boolean):String(t).split(",").filter(Boolean);o.length&&(u.value=o.map((a,i)=>({name:a.split("/").pop()||`file-${i}`,url:a,status:"success",uid:Date.now()+i})))});const P=e.computed(()=>({large:"160px",default:"140px",small:"80px"})[s.size]??s.size),H=e.computed(()=>s.disabled),W=e.computed(()=>{var l;return s.isShowTip&&(s.fileSize||((l=m.value)==null?void 0:l.length))}),m=e.computed(()=>{var l;return(l=s.fileType)!=null&&l.length?s.fileType.map(t=>t.toLowerCase()):s.supportVideo?["mp4","mov","avi"]:["jpg","jpeg","png","gif","webp"]}),N=e.computed(()=>{const l=s.supportVideo?1:s.limit;return u.value.length>=l}),X=e.computed(()=>m.value.map(l=>`.${l}`).join(",")),K=e.computed(()=>({"qy-upload--reached-limit":N.value,"qy-upload--disabled":s.disabled,"qy-upload--video":s.supportVideo}));e.watch(f,()=>b());function Q(){var l;(l=M.value)==null||l.focus()}function b(l){const a={files:(l??u.value).filter(i=>i.status==="success"&&i.url).map(i=>i.url),text:f.value};g("change",a),s.callBack&&s.callBack(a)}function J(l,t){b(t)}function G(l){var a;if(!(l.size/1024/1024<s.fileSize))return v.ElMessage.warning(`文件大小不能超过${s.fileSize}M`),!1;const o=((a=l.name.split(".").pop())==null?void 0:a.toLowerCase())||"";return m.value.includes(o)?!0:(v.ElMessage.warning(`格式不支持,仅允许: ${m.value.join("/")}`),!1)}function z(l,t,o,a){var $,F;const i=s.api.startsWith("http")?s.api:window.location.origin+s.api.replace(/^([^/])/,"/$1"),d=new FormData;d.append(s.name,l),s.extraData&&Object.entries(s.extraData).forEach(([r,ae])=>d.append(r,ae));const n=new XMLHttpRequest;x.push(n);const y=(($=h.value)==null?void 0:$.$el.querySelector(".el-upload--picture-card"))||((F=h.value)==null?void 0:F.$el),q=v.ElLoading.service({target:y,text:"上传中",background:"rgba(255,255,255,0.7)"}),c=()=>{const r=x.indexOf(n);r!==-1&&x.splice(r,1),q.close()};n.open("POST",i);const _=oe.getToken(s.tokenKey);_&&n.setRequestHeader("Authorization",`Bearer ${_}`),n.upload.onprogress=r=>{r.total>0&&(t==null||t({percent:r.loaded/r.total*100}))},n.onload=()=>{if(c(),n.status<200||n.status>=300){const r=`上传失败 (HTTP ${n.status})`;v.ElMessage.error(r),g("error",{msg:r,status:n.status}),a==null||a(new Error(r));return}try{const r=JSON.parse(n.responseText);r.code===200&&r.urls?(v.ElMessage.success("上传成功"),o==null||o({...r,url:r.urls})):(v.ElMessage.error(r.msg||"上传失败"),g("error",r),a==null||a(r))}catch{v.ElMessage.error("上传失败,响应格式错误"),g("error",new Error("Response parse error")),a==null||a(new Error("Response parse error"))}},n.onerror=()=>{c(),v.ElMessage.error("上传失败,网络异常"),g("error",new Error("Network error")),a==null||a(new Error("Network error"))},n.send(d)}function R(l){return s.disabled?!1:G(l)}function Y(l){z(l.file,l.onProgress,t=>{l.onSuccess(t),b(),g("success",t)},t=>l.onError(t))}function Z(l){var a;if(!l.url)return;const t=((a=l.url.split(".").pop())==null?void 0:a.toLowerCase())||"";if(["mp4","mov","avi","webm"].includes(t)){L.value=l.url,T.value=l.name||"视频预览",V.value=!0;return}const o=u.value.filter(i=>{var d;return i.status==="success"&&i.url&&!["mp4","mov","avi","webm"].includes((d=i.url.split(".").pop())==null?void 0:d.toLowerCase())});S.value=o.map(i=>i.url),E.value=o.findIndex(i=>i.uid===l.uid)||0,C.value=!0}function ee(){C.value=!1,S.value=[]}function j(l){for(let t=0;t<l.length;t++){const o=l[t];if(!R(o))continue;const a=Date.now()+t,i=URL.createObjectURL(o);k.add(i),u.value.push({uid:a,name:o.name||`file-${a}`,status:"uploading",percentage:0,url:i}),z(o,d=>{const n=u.value.find(y=>y.uid===a);n&&(n.percentage=d.percent)},d=>{const n=u.value.find(y=>y.uid===a);n&&(n.status="success",n.url=d.url,b(),g("success",d))},()=>le(a))}}function U(l){var a;if(s.disabled)return;const t=(a=l.clipboardData)==null?void 0:a.items;if(!t)return;const o=[];for(let i=0;i<t.length;i++){const d=t[i];if(d.kind==="file"&&d.type.startsWith("image/")){const n=d.getAsFile();n&&o.push(n)}}o.length&&(l.preventDefault(),j(o))}function te(l){var o;if(B.value=!1,s.disabled||N.value)return;const t=Array.from(((o=l.dataTransfer)==null?void 0:o.files)||[]).filter(a=>{var i;return m.value.includes((i=a.name.split(".").pop())==null?void 0:i.toLowerCase())});t.length&&j(t)}function le(l){var o;const t=u.value.findIndex(a=>a.uid===l);t!==-1&&((o=u.value[t].url)!=null&&o.startsWith("blob:")&&(URL.revokeObjectURL(u.value[t].url),k.delete(u.value[t].url)),u.value.splice(t,1))}return e.onBeforeUnmount(()=>{x.forEach(l=>l.abort()),x.length=0,k.forEach(l=>URL.revokeObjectURL(l)),k.clear()}),A({openFileDialog:()=>{var l,t;s.disabled||N.value||(t=(l=h.value)==null?void 0:l.$el.querySelector('input[type="file"]'))==null||t.click()},getPathList:()=>u.value.filter(l=>l.status==="success").map(l=>l.url),clearFiles:()=>{u.value=[],f.value="",b()},getValue:()=>({files:u.value.filter(l=>l.status==="success"&&l.url).map(l=>l.url),text:f.value})}),(l,t)=>{var q;const o=w.ElIcon,a=w.ElInput,i=w.ElPopover,d=w.ElUpload,n=w.ElImageViewer,y=w.ElDialog;return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["qy-upload",K.value]),style:e.normalizeStyle({"--qy-upload-size":P.value})},[e.createVNode(d,{ref_key:"uploadRef",ref:h,"file-list":u.value,"onUpdate:fileList":t[6]||(t[6]=c=>u.value=c),action:"#",multiple:p.supportVideo?!1:p.multiple,limit:p.supportVideo?1:p.limit,"list-type":p.supportVideo?"text":"picture-card",accept:X.value,disabled:H.value,"http-request":Y,"before-upload":R,"on-preview":Z,"on-remove":J},{default:e.withCtx(()=>[N.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["qy-upload__trigger",{"is-dragover":B.value}]),onPaste:U,onDragover:t[4]||(t[4]=e.withModifiers(c=>B.value=!0,["prevent"])),onDragleave:t[5]||(t[5]=e.withModifiers(c=>B.value=!1,["prevent"])),onDrop:e.withModifiers(te,["prevent"])},[e.createVNode(o,{class:"qy-upload__icon"},{default:e.withCtx(()=>[e.createVNode(e.unref(O.Plus))]),_:1}),p.supportVideo?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[t[9]||(t[9]=e.createElementVNode("span",{class:"qy-upload__label"},"点击上传视频",-1)),e.createElementVNode("span",se,"支持 "+e.toDisplayString(m.value.join(" / "))+",不超过 "+e.toDisplayString(p.fileSize)+"MB",1)],64)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"qy-upload__text",onClick:t[3]||(t[3]=e.withModifiers(()=>{},["stop"])),onPaste:e.withModifiers(U,["stop"])},[e.createVNode(i,{visible:D.value,"onUpdate:visible":t[2]||(t[2]=c=>D.value=c),placement:"bottom-start",width:220,trigger:"click","popper-class":"qy-upload__text-popover",onAfterEnter:Q},{reference:e.withCtx(()=>[e.createElementVNode("div",{class:e.normalizeClass(["qy-upload__text-preview",{"is-placeholder":!f.value}])},e.toDisplayString(f.value||"输入文字"),3)]),default:e.withCtx(()=>[e.createVNode(a,{ref_key:"inputRef",ref:M,modelValue:f.value,"onUpdate:modelValue":t[0]||(t[0]=c=>f.value=c),type:"textarea",autosize:{minRows:2,maxRows:5},placeholder:"输入文字或粘贴图片",disabled:p.disabled,onBlur:t[1]||(t[1]=c=>D.value=!1),onPaste:e.withModifiers(U,["stop"])},null,8,["modelValue","disabled"])]),_:1},8,["visible"])],32)],34))]),_:1},8,["file-list","multiple","limit","list-type","accept","disabled"]),C.value?(e.openBlock(),e.createBlock(n,{key:0,"url-list":S.value,"initial-index":E.value,onClose:ee},null,8,["url-list","initial-index"])):e.createCommentVNode("",!0),e.createVNode(y,{modelValue:V.value,"onUpdate:modelValue":t[7]||(t[7]=c=>V.value=c),title:T.value,width:"640px","append-to-body":"","destroy-on-close":"",onClose:t[8]||(t[8]=c=>V.value=!1)},{default:e.withCtx(()=>[V.value?(e.openBlock(),e.createElementBlock("video",{key:0,src:L.value,controls:"",autoplay:"",style:{width:"100%","max-height":"400px","border-radius":"4px"}},null,8,ne)):e.createCommentVNode("",!0)]),_:1},8,["modelValue","title"]),W.value?(e.openBlock(),e.createElementBlock("div",re,[e.createVNode(o,null,{default:e.withCtx(()=>[e.createVNode(e.unref(O.InfoFilled))]),_:1}),e.createElementVNode("span",null,[t[12]||(t[12]=e.createTextVNode(" 请上传 ",-1)),p.fileSize?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[t[10]||(t[10]=e.createTextVNode("大小不超过 ",-1)),e.createElementVNode("b",ue,e.toDisplayString(p.fileSize)+"MB",1)],64)):e.createCommentVNode("",!0),(q=m.value)!=null&&q.length?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[t[11]||(t[11]=e.createTextVNode(",格式为 ",-1)),e.createElementVNode("b",de,e.toDisplayString(m.value.join("/")),1)],64)):e.createCommentVNode("",!0),t[13]||(t[13]=e.createTextVNode(" 的文件。 ",-1))])])):e.createCommentVNode("",!0)],6)}}}),pe=ie.default(ce,[["__scopeId","data-v-c1472320"]]);exports.default=pe;
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const x=require("element-plus/es"),t=require("vue"),H=require("@element-plus/icons-vue"),g=require("element-plus"),ge=require("../utils/auth.cjs");;/* empty css */;/* empty css */const ye=require("../../_virtual/_plugin-vue_export-helper.cjs"),xe={class:"qy-upload__hint"},he=["placeholder","disabled"],Ve=["src"],we={key:1,class:"qy-upload__tip"},be={class:"error"},ke={class:"error"},Be=Object.assign({name:"QyUpload"},{__name:"index",props:{modelValue:{type:[Object,Array,String],default:void 0},defaultValue:{type:Object,default:()=>({files:"",text:""})},valueFormat:{type:String,default:"object"},showText:{type:Boolean,default:!0},showPasteInput:{type:Boolean,default:!1},pastePlaceholder:{type:String,default:"输入文字"},multiple:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},fileType:{type:Array,default:()=>[]},fileSize:{type:Number,default:10},limit:{type:Number,default:9},isShowTip:{type:Boolean,default:!1},api:{type:String,default:"/permission-api/common/uploads"},name:{type:String,default:"file"},tokenKey:{type:String,default:"Admin-Token"},supportVideo:{type:Boolean,default:!1},size:{type:String,default:"default"},disableDrag:{type:Boolean,default:!1},callBack:{type:Function,default:null},extraData:{type:Object,default:()=>({})}},emits:["update:modelValue","change","success","error","remove"],setup(d,{expose:W,emit:X}){const o=d,m=X,k=t.ref(null),r=t.ref([]),U=t.ref(null),K=t.ref(null),h=[];let C=!1;const M=t.ref(!1),D=t.ref([]),E=t.ref(0),V=t.ref(!1),L=t.ref(""),R=t.ref(""),B=new Set,N=t.ref(!1),f=t.ref(""),T=t.ref(!1);t.onMounted(()=>{o.modelValue===void 0&&j(o.defaultValue)});const Q=t.computed(()=>({large:"160px",default:"140px",small:"80px"})[o.size]??o.size),J=t.computed(()=>o.disabled),G=t.computed(()=>{var e;return o.isShowTip&&(o.fileSize||((e=v.value)==null?void 0:e.length))}),v=t.computed(()=>{var e;return(e=o.fileType)!=null&&e.length?o.fileType.map(l=>l.toLowerCase()):o.supportVideo?["mp4","mov","avi"]:["jpg","jpeg","png","gif","webp"]}),S=t.computed(()=>{const e=o.supportVideo?1:o.limit;return r.value.length>=e}),Y=t.computed(()=>v.value.map(e=>`.${e}`).join(",")),Z=t.computed(()=>({"qy-upload--reached-limit":S.value,"qy-upload--disabled":o.disabled,"qy-upload--video":o.supportVideo,"qy-upload--without-text":!o.showText&&!o.showPasteInput}));t.watch(f,()=>{C||w()}),t.watch(()=>o.modelValue,e=>{e!==void 0&&j(e)},{immediate:!0,deep:!0});function P(e){return Array.isArray(e)?e.filter(Boolean):e?String(e).split(",").filter(Boolean):[]}function ee(e){return Array.isArray(e)?{files:e,text:""}:typeof e=="string"?{files:P(e),text:""}:e&&typeof e=="object"?{files:P(e.files),text:e.text??""}:{files:[],text:""}}function te(e=[]){return e.map((l,i)=>({name:String(l).split("/").pop()||`file-${i}`,url:l,status:"success",uid:Date.now()+i}))}function le(e){const l=new Set(e.map(a=>a.url)),i=r.value.filter(a=>a.status==="uploading"&&!l.has(a.url));return[...e,...i]}function j(e){const l=ee(e);C=!0,f.value=l.text,r.value=le(te(l.files)),t.nextTick(()=>{C=!1})}function z(e){return o.valueFormat==="array"?e.files:o.valueFormat==="string"?e.files.join(","):e}function ae(){var e;(e=U.value)==null||e.focus()}function oe(e){e.target.value=""}function w(e){const a={files:(e??r.value).filter(n=>n.status==="success"&&n.url).map(n=>n.url),text:f.value};m("update:modelValue",z(a)),m("change",a),o.callBack&&o.callBack(a)}function ie(e,l){w(l),m("remove",e,l)}function ne(e){var a;if(!(e.size/1024/1024<o.fileSize))return g.ElMessage.warning(`文件大小不能超过${o.fileSize}M`),!1;const i=((a=e.name.split(".").pop())==null?void 0:a.toLowerCase())||"";return v.value.includes(i)?!0:(g.ElMessage.warning(`格式不支持,仅允许: ${v.value.join("/")}`),!1)}function I(e,l,i,a){var F,_;const n=o.api.startsWith("http")?o.api:window.location.origin+o.api.replace(/^([^/])/,"/$1"),c=new FormData;c.append(o.name,e),o.extraData&&Object.entries(o.extraData).forEach(([u,ve])=>c.append(u,ve));const s=new XMLHttpRequest;h.push(s);const y=((F=k.value)==null?void 0:F.$el.querySelector(".el-upload--picture-card"))||((_=k.value)==null?void 0:_.$el),q=g.ElLoading.service({target:y,text:"上传中",background:"rgba(255,255,255,0.7)"}),p=()=>{const u=h.indexOf(s);u!==-1&&h.splice(u,1),q.close()};s.open("POST",n);const A=ge.getToken(o.tokenKey);A&&s.setRequestHeader("Authorization",`Bearer ${A}`),s.upload.onprogress=u=>{u.total>0&&(l==null||l({percent:u.loaded/u.total*100}))},s.onload=()=>{if(p(),s.status<200||s.status>=300){const u=`上传失败 (HTTP ${s.status})`;g.ElMessage.error(u),m("error",{msg:u,status:s.status}),a==null||a(new Error(u));return}try{const u=JSON.parse(s.responseText);u.code===200&&u.urls?(g.ElMessage.success("上传成功"),i==null||i({...u,url:u.urls})):(g.ElMessage.error(u.msg||"上传失败"),m("error",u),a==null||a(u))}catch{g.ElMessage.error("上传失败,响应格式错误"),m("error",new Error("Response parse error")),a==null||a(new Error("Response parse error"))}},s.onerror=()=>{p(),g.ElMessage.error("上传失败,网络异常"),m("error",new Error("Network error")),a==null||a(new Error("Network error"))},s.send(c)}function O(e){return o.disabled?!1:ne(e)}function se(e,l){const i=r.value.find(a=>{var n;return a.uid===(e==null?void 0:e.uid)||((n=a.raw)==null?void 0:n.uid)===(e==null?void 0:e.uid)});i&&(i.url=l,i.status="success")}function re(e){I(e.file,e.onProgress,l=>{se(e.file,l.url),e.onSuccess(l),w(),m("success",l)},l=>e.onError(l))}function ue(e){var a;if(!e.url)return;const l=((a=e.url.split(".").pop())==null?void 0:a.toLowerCase())||"";if(["mp4","mov","avi","webm"].includes(l)){L.value=e.url,R.value=e.name||"视频预览",V.value=!0;return}const i=r.value.filter(n=>{var c;return n.status==="success"&&n.url&&!["mp4","mov","avi","webm"].includes((c=n.url.split(".").pop())==null?void 0:c.toLowerCase())});D.value=i.map(n=>n.url),E.value=i.findIndex(n=>n.uid===e.uid)||0,M.value=!0}function de(){M.value=!1,D.value=[]}function $(e){for(let l=0;l<e.length;l++){const i=e[l];if(!O(i))continue;const a=Date.now()+l,n=URL.createObjectURL(i);B.add(n),r.value.push({uid:a,name:i.name||`file-${a}`,status:"uploading",percentage:0,url:n}),I(i,c=>{const s=r.value.find(y=>y.uid===a);s&&(s.percentage=c.percent)},c=>{const s=r.value.find(y=>y.uid===a);s&&(s.status="success",s.url=c.url,w(),m("success",c))},()=>me(a))}}function b(e){var a;if(o.disabled)return;const l=(a=e.clipboardData)==null?void 0:a.items;if(!l)return;const i=[];for(let n=0;n<l.length;n++){const c=l[n];if(c.kind==="file"&&c.type.startsWith("image/")){const s=c.getAsFile();s&&i.push(s)}}i.length&&(e.preventDefault(),$(i))}function ce(){o.disabled||o.disableDrag||(N.value=!0)}function pe(){N.value=!1}function fe(e){var i;if(N.value=!1,o.disabled||o.disableDrag||S.value)return;const l=Array.from(((i=e.dataTransfer)==null?void 0:i.files)||[]).filter(a=>{var n;return v.value.includes((n=a.name.split(".").pop())==null?void 0:n.toLowerCase())});l.length&&$(l)}function me(e){var i;const l=r.value.findIndex(a=>a.uid===e);l!==-1&&((i=r.value[l].url)!=null&&i.startsWith("blob:")&&(URL.revokeObjectURL(r.value[l].url),B.delete(r.value[l].url)),r.value.splice(l,1))}return t.onBeforeUnmount(()=>{h.forEach(e=>e.abort()),h.length=0,B.forEach(e=>URL.revokeObjectURL(e)),B.clear()}),W({openFileDialog:()=>{var e,l;o.disabled||S.value||(l=(e=k.value)==null?void 0:e.$el.querySelector('input[type="file"]'))==null||l.click()},getPathList:()=>r.value.filter(e=>e.status==="success").map(e=>e.url),clearFiles:()=>{r.value=[],f.value="",w()},getValue:()=>({files:r.value.filter(e=>e.status==="success"&&e.url).map(e=>e.url),text:f.value}),getModelValue:()=>z({files:r.value.filter(e=>e.status==="success"&&e.url).map(e=>e.url),text:f.value})}),(e,l)=>{var q;const i=x.ElIcon,a=x.ElInput,n=x.ElPopover,c=x.ElUpload,s=x.ElImageViewer,y=x.ElDialog;return t.openBlock(),t.createElementBlock("div",{class:t.normalizeClass(["qy-upload",Z.value]),style:t.normalizeStyle({"--qy-upload-size":Q.value})},[t.createVNode(c,{ref_key:"uploadRef",ref:k,"file-list":r.value,"onUpdate:fileList":l[6]||(l[6]=p=>r.value=p),action:"#",multiple:d.supportVideo?!1:d.multiple,limit:d.supportVideo?1:d.limit,"list-type":d.supportVideo?"text":"picture-card",accept:Y.value,disabled:J.value,"http-request":re,"before-upload":O,"on-preview":ue,"on-remove":ie},{default:t.withCtx(()=>[S.value?t.createCommentVNode("",!0):(t.openBlock(),t.createElementBlock("div",{key:0,class:t.normalizeClass(["qy-upload__trigger",{"is-dragover":N.value}]),onPaste:b,onDragover:t.withModifiers(ce,["prevent"]),onDragleave:t.withModifiers(pe,["prevent"]),onDrop:t.withModifiers(fe,["prevent"])},[t.createVNode(i,{class:"qy-upload__icon"},{default:t.withCtx(()=>[t.createVNode(t.unref(H.Plus))]),_:1}),d.supportVideo?(t.openBlock(),t.createElementBlock(t.Fragment,{key:0},[l[9]||(l[9]=t.createElementVNode("span",{class:"qy-upload__label"},"点击上传视频",-1)),t.createElementVNode("span",xe,"支持 "+t.toDisplayString(v.value.join(" / "))+",不超过 "+t.toDisplayString(d.fileSize)+"MB",1)],64)):t.createCommentVNode("",!0),d.showText?(t.openBlock(),t.createElementBlock("div",{key:1,class:"qy-upload__text",onClick:l[3]||(l[3]=t.withModifiers(()=>{},["stop"])),onPaste:t.withModifiers(b,["stop"])},[t.createVNode(n,{visible:T.value,"onUpdate:visible":l[2]||(l[2]=p=>T.value=p),placement:"bottom-start",width:220,trigger:"click","popper-class":"qy-upload__text-popover",onAfterEnter:ae},{reference:t.withCtx(()=>[t.createElementVNode("div",{class:t.normalizeClass(["qy-upload__text-preview",{"is-placeholder":!f.value}])},t.toDisplayString(f.value||d.pastePlaceholder),3)]),default:t.withCtx(()=>[t.createVNode(a,{ref_key:"inputRef",ref:U,modelValue:f.value,"onUpdate:modelValue":l[0]||(l[0]=p=>f.value=p),type:"textarea",autosize:{minRows:2,maxRows:5},placeholder:d.pastePlaceholder,disabled:d.disabled,onBlur:l[1]||(l[1]=p=>T.value=!1),onPaste:t.withModifiers(b,["stop"])},null,8,["modelValue","placeholder","disabled"])]),_:1},8,["visible"])],32)):d.showPasteInput?(t.openBlock(),t.createElementBlock("div",{key:2,class:"qy-upload__text",onClick:l[5]||(l[5]=t.withModifiers(()=>{},["stop"])),onPaste:t.withModifiers(b,["stop"])},[t.createElementVNode("input",{ref_key:"pasteInputRef",ref:K,class:"qy-upload__paste-input",placeholder:d.pastePlaceholder,disabled:d.disabled,onPaste:t.withModifiers(b,["stop"]),onInput:oe,onClick:l[4]||(l[4]=t.withModifiers(()=>{},["stop"]))},null,40,he)],32)):t.createCommentVNode("",!0)],34))]),_:1},8,["file-list","multiple","limit","list-type","accept","disabled"]),M.value?(t.openBlock(),t.createBlock(s,{key:0,"url-list":D.value,"initial-index":E.value,onClose:de},null,8,["url-list","initial-index"])):t.createCommentVNode("",!0),t.createVNode(y,{modelValue:V.value,"onUpdate:modelValue":l[7]||(l[7]=p=>V.value=p),title:R.value,width:"640px","append-to-body":"","destroy-on-close":"",onClose:l[8]||(l[8]=p=>V.value=!1)},{default:t.withCtx(()=>[V.value?(t.openBlock(),t.createElementBlock("video",{key:0,src:L.value,controls:"",autoplay:"",style:{width:"100%","max-height":"400px","border-radius":"4px"}},null,8,Ve)):t.createCommentVNode("",!0)]),_:1},8,["modelValue","title"]),G.value?(t.openBlock(),t.createElementBlock("div",we,[t.createVNode(i,null,{default:t.withCtx(()=>[t.createVNode(t.unref(H.InfoFilled))]),_:1}),t.createElementVNode("span",null,[l[12]||(l[12]=t.createTextVNode(" 请上传 ",-1)),d.fileSize?(t.openBlock(),t.createElementBlock(t.Fragment,{key:0},[l[10]||(l[10]=t.createTextVNode("大小不超过 ",-1)),t.createElementVNode("b",be,t.toDisplayString(d.fileSize)+"MB",1)],64)):t.createCommentVNode("",!0),(q=v.value)!=null&&q.length?(t.openBlock(),t.createElementBlock(t.Fragment,{key:1},[l[11]||(l[11]=t.createTextVNode(",格式为 ",-1)),t.createElementVNode("b",ke,t.toDisplayString(v.value.join("/")),1)],64)):t.createCommentVNode("",!0),l[13]||(l[13]=t.createTextVNode(" 的文件。 ",-1))])])):t.createCommentVNode("",!0)],6)}}}),Ne=ye.default(Be,[["__scopeId","data-v-1d6de9b6"]]);exports.default=Ne;
|