kouxiangtang 0.1.29-beta.2 → 0.1.30
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/dist/{AttachmentUploader-Gl4uwpi0.js → AttachmentUploader-CqZvNLjp.js} +2 -2
- package/dist/{AttachmentUploader-Gl4uwpi0.js.map → AttachmentUploader-CqZvNLjp.js.map} +1 -1
- package/dist/{ImageUploader-Ecxbu5yB.js → ImageUploader-BO9H3K96.js} +2 -2
- package/dist/{ImageUploader-Ecxbu5yB.js.map → ImageUploader-BO9H3K96.js.map} +1 -1
- package/dist/{ImagesUploader-DiaKghBH.js → ImagesUploader-HPjV03pF.js} +2 -2
- package/dist/{ImagesUploader-DiaKghBH.js.map → ImagesUploader-HPjV03pF.js.map} +1 -1
- package/dist/{RichTextEditor-bJlEkb34.js → RichTextEditor-B2M7zkFs.js} +2 -2
- package/dist/{RichTextEditor-bJlEkb34.js.map → RichTextEditor-B2M7zkFs.js.map} +1 -1
- package/dist/{config-BNxcHvPM.js → config-BO5zOtvQ.js} +3 -3
- package/dist/{config-BNxcHvPM.js.map → config-BO5zOtvQ.js.map} +1 -1
- package/dist/{config-DSE87t_O.js → config-BU1ASpQ3.js} +2 -2
- package/dist/{config-DSE87t_O.js.map → config-BU1ASpQ3.js.map} +1 -1
- package/dist/{config-Bbs_ly6P.js → config-Bu9X2qA5.js} +2 -2
- package/dist/{config-Bbs_ly6P.js.map → config-Bu9X2qA5.js.map} +1 -1
- package/dist/{config-Bmby6rfL.js → config-BxKEHQF5.js} +3 -3
- package/dist/{config-Bmby6rfL.js.map → config-BxKEHQF5.js.map} +1 -1
- package/dist/{config-Dh16WhJb.js → config-BymsJwle.js} +2 -2
- package/dist/{config-Dh16WhJb.js.map → config-BymsJwle.js.map} +1 -1
- package/dist/{config-BMdtWu5R.js → config-CIz8N_B8.js} +2 -2
- package/dist/{config-BMdtWu5R.js.map → config-CIz8N_B8.js.map} +1 -1
- package/dist/{config-CDG1L4Oi.js → config-C_03mBxe.js} +2 -2
- package/dist/{config-CDG1L4Oi.js.map → config-C_03mBxe.js.map} +1 -1
- package/dist/{config-ssH8d7K9.js → config-Cbunz5c7.js} +2 -2
- package/dist/{config-ssH8d7K9.js.map → config-Cbunz5c7.js.map} +1 -1
- package/dist/{config-Dr_SXi5U.js → config-CqXtSzw0.js} +2 -2
- package/dist/{config-Dr_SXi5U.js.map → config-CqXtSzw0.js.map} +1 -1
- package/dist/{config-BSYmo88x.js → config-CrgMgLvC.js} +2 -2
- package/dist/{config-BSYmo88x.js.map → config-CrgMgLvC.js.map} +1 -1
- package/dist/{config-B04hLt3e.js → config-D0Q_3HIz.js} +2 -2
- package/dist/{config-B04hLt3e.js.map → config-D0Q_3HIz.js.map} +1 -1
- package/dist/{config-Xk01hDVk.js → config-D5KDDUDX.js} +2 -2
- package/dist/{config-Xk01hDVk.js.map → config-D5KDDUDX.js.map} +1 -1
- package/dist/{config-CEbwLzea.js → config-DFmMEuSd.js} +2 -2
- package/dist/{config-CEbwLzea.js.map → config-DFmMEuSd.js.map} +1 -1
- package/dist/{config-C8MFDKwG.js → config-De6kHEXC.js} +2 -2
- package/dist/{config-C8MFDKwG.js.map → config-De6kHEXC.js.map} +1 -1
- package/dist/{config-KtTeOyV6.js → config-DpQsB0Wn.js} +2 -2
- package/dist/{config-KtTeOyV6.js.map → config-DpQsB0Wn.js.map} +1 -1
- package/dist/{config-CE-gN7KM.js → config-Dxg5dNtI.js} +2 -2
- package/dist/{config-CE-gN7KM.js.map → config-Dxg5dNtI.js.map} +1 -1
- package/dist/{config-yVymOXO_.js → config-HIw7lgrK.js} +2 -2
- package/dist/{config-yVymOXO_.js.map → config-HIw7lgrK.js.map} +1 -1
- package/dist/{config-ys3nFgYd.js → config-uXBfJs4O.js} +2 -2
- package/dist/config-uXBfJs4O.js.map +1 -0
- package/dist/{config-DrJPQ_iz.js → config-wqoIRf6T.js} +3 -3
- package/dist/{config-DrJPQ_iz.js.map → config-wqoIRf6T.js.map} +1 -1
- package/dist/{config-DQerJfRt.js → config-xytc8y6s.js} +2 -2
- package/dist/{config-DQerJfRt.js.map → config-xytc8y6s.js.map} +1 -1
- package/dist/{index-lFCbFvdk.js → index-BsT_4hup.js} +53 -58
- package/dist/index-BsT_4hup.js.map +1 -0
- package/dist/kouxiangtang.js +1 -1
- package/dist/kouxiangtang.umd.cjs +4 -4
- package/dist/kouxiangtang.umd.cjs.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +2 -1
- package/dist/config-ys3nFgYd.js.map +0 -1
- package/dist/index-lFCbFvdk.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { computed as F, ref as y, openBlock as c, createElementBlock as b, Fragment as k, createVNode as r, unref as n, normalizeClass as M, withModifiers as R, withCtx as i, createBlock as f, createTextVNode as j, createElementVNode as E, renderList as L, toDisplayString as O, createCommentVNode as S } from "vue";
|
|
2
2
|
import { ElUpload as q, ElIcon as v, ElButton as W, ElDialog as G, ElForm as H, ElFormItem as J, ElInput as K, ElMessage as u, ElLoading as w } from "element-plus";
|
|
3
|
-
import { _ as Q, j as X, p as Y, d as Z, k as ee, h as te, m as ae } from "./index-
|
|
3
|
+
import { _ as Q, j as X, p as Y, d as Z, k as ee, h as te, m as ae } from "./index-BsT_4hup.js";
|
|
4
4
|
import "./el-progress-l0sNRNKZ.js";
|
|
5
5
|
const se = ["src"], ne = { class: "file-type" }, le = {
|
|
6
6
|
__name: "AttachmentUploader",
|
|
@@ -222,4 +222,4 @@ const se = ["src"], ne = { class: "file-type" }, le = {
|
|
|
222
222
|
export {
|
|
223
223
|
ce as default
|
|
224
224
|
};
|
|
225
|
-
//# sourceMappingURL=AttachmentUploader-
|
|
225
|
+
//# sourceMappingURL=AttachmentUploader-CqZvNLjp.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AttachmentUploader-Gl4uwpi0.js","sources":["../src/framework/field/attachment/AttachmentUploader.vue"],"sourcesContent":["<script setup>\r\nimport {\r\n ElUpload,\r\n ElIcon,\r\n ElDialog,\r\n ElForm,\r\n ElFormItem,\r\n ElButton,\r\n ElInput,\r\n} from \"element-plus\";\r\nimport axios from \"axios\";\r\nimport http from \"../../utils/http\";\r\nimport { getConfig } from \"../../config-loader\";\r\nimport { ref, computed } from \"vue\";\r\nimport { ElLoading, ElMessage } from \"element-plus\";\r\nimport { Plus, Document, Close } from \"@element-plus/icons-vue\";\r\n\r\nconst emit = defineEmits([\"on-success\", \"on-remove\", \"on-change\"]);\r\nconst props = defineProps({\r\n pics: {\r\n type: Array,\r\n default() {\r\n return [];\r\n },\r\n },\r\n limit: { type: Number },\r\n props: {\r\n type: Object,\r\n default() {\r\n return {\r\n listType: \"picture-card\", //'text' | 'picture' | 'picture-card'\r\n limit: 5, //最多上传几个文件\r\n accept: \"image/*\",\r\n };\r\n },\r\n },\r\n});\r\n\r\nconst files = computed(() => {\r\n return props.pics.map((item) => {\r\n const fileType = item.url.substring(item.url.lastIndexOf(\".\") + 1);\r\n if (typeof item.name !== undefined) {\r\n item.fileType = fileType;\r\n return item;\r\n }\r\n\r\n if (item.url) {\r\n const parts = item.url.split(\"/\");\r\n const namedItem = {\r\n ...item,\r\n name: parts[parts.length - 1],\r\n fileType: fileType,\r\n };\r\n return namedItem;\r\n }\r\n\r\n return { ...item, name: item.id, fileType: fileType };\r\n });\r\n});\r\nconst dialogImageUrl = ref(\"\");\r\nconst dialogVisible = ref(false);\r\nconst imageUrl = ref(props);\r\nconst uploadUrl = getConfig().fileUploadUrl;\r\nconst header = {\r\n Authorization: `Bearer ${localStorage.getItem(\"token\")}`,\r\n};\r\nconst compressImg = (file) => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n\r\n return new Promise(function (resolve, reject) {\r\n if (!file.type.startsWith(\"image/\")) {\r\n resolve(file);\r\n return false;\r\n }\r\n reader.onload = async (e) => {\r\n const img = new Image();\r\n img.src = e.target.result;\r\n img.onload = () => {\r\n const canvas = document.createElement(\"canvas\");\r\n const ctx = canvas.getContext(\"2d\");\r\n canvas.width = img.width;\r\n canvas.height = img.height;\r\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\r\n canvas.toBlob(\r\n (blob) => {\r\n const newFile = new File([blob], file.name, {\r\n type: file.type,\r\n lastModified: Date.now(),\r\n });\r\n resolve(newFile);\r\n },\r\n file.type,\r\n 0.5,\r\n );\r\n };\r\n };\r\n return false;\r\n });\r\n};\r\nconst handleRemoveSuccess = (uploadFile) => {\r\n if (uploadFile.status === \"success\") {\r\n if (props.props.deleteParams) {\r\n const paramsData = props.props.deleteParams?.data\r\n ? props.props.deleteParams?.data\r\n : {};\r\n http\r\n .remove(\r\n `${props.props.deleteParams.url}/${uploadFile.id}/attachment`,\r\n paramsData,\r\n paramsData,\r\n )\r\n .then(() => {\r\n emit(\"on-remove\", uploadFile);\r\n });\r\n } else {\r\n emit(\"on-remove\", uploadFile);\r\n }\r\n }\r\n};\r\nconst handleExceed = () => {\r\n ElMessage({\r\n message: `最多只能上传 ${props.props.limit} 个文件!`,\r\n type: \"warning\",\r\n });\r\n};\r\nconst handlePictureCardPreview = (uploadFile) => {\r\n dialogImageUrl.value = uploadFile.url;\r\n dialogVisible.value = true;\r\n};\r\nconst handleBeforeUpload = (file) => {\r\n const fileName = file.name.substring(0, file.name.lastIndexOf(\".\"));\r\n const regex = /^[\\u4e00-\\u9fa5\\w-_]+$/;\r\n if (!regex.test(fileName)) {\r\n ElMessage({\r\n message: \"请勿输入特殊字符!\",\r\n type: \"warning\",\r\n });\r\n return false;\r\n }\r\n compressImg(file).then((newFile) => {\r\n if (newFile.size / 1024 / 1024 < 5) {\r\n uploadRequest(newFile);\r\n return false;\r\n } else {\r\n ElMessage({\r\n message: \"上传大小不能超过 5MB!\",\r\n type: \"warning\",\r\n });\r\n return false;\r\n }\r\n });\r\n};\r\n\r\nfunction handleFileNameChange(file, index) {\r\n if (!file.name) {\r\n ElMessage({\r\n message: \"附件名称不能为空!\",\r\n type: \"warning\",\r\n });\r\n return;\r\n }\r\n emit(\"on-change\", file);\r\n}\r\n\r\nfunction uploadRequest(file) {\r\n ElLoading.service({ text: \"上传中,请稍后\", background: \"rgba(0,0,0,0.3)\" });\r\n return new Promise((resolve, reject) => {\r\n const formData = new FormData();\r\n formData.append(\"file\", file);\r\n axios\r\n .post(uploadUrl, formData, {})\r\n .then((res) => {\r\n ElLoading.service().close();\r\n ElMessage({\r\n message: \"上传成功\",\r\n type: \"success\",\r\n });\r\n emit(\"on-success\", res.data.data);\r\n resolve(res.data);\r\n return false;\r\n })\r\n .catch(() => {\r\n ElLoading.service().close();\r\n ElMessage({\r\n message: \"上传失败\",\r\n type: \"warning\",\r\n });\r\n reject(\"Upload failed\");\r\n });\r\n });\r\n}\r\n</script>\r\n\r\n<template>\r\n <!-- 删除请求头加权限后请添加到组建中 :headers=\"header\"-->\r\n <el-upload\r\n :file-list=\"files\"\r\n :action=\"uploadUrl\"\r\n :limit=\"props.props.limit\"\r\n :accept=\"props.props.accept\"\r\n :list-type=\"props.props.listType\"\r\n :on-remove=\"handleRemoveSuccess\"\r\n :before-upload=\"handleBeforeUpload\"\r\n :on-exceed=\"handleExceed\"\r\n :on-preview=\"handlePictureCardPreview\"\r\n :multiple=\"true\"\r\n :http-request=\"\r\n () => {\r\n return false;\r\n }\r\n \"\r\n :show-file-list=\"props.props.listType !== 'text'\"\r\n :class=\"[\r\n 'upload-main',\r\n { 'disable-upload': files.length >= props.props.limit },\r\n ]\"\r\n @click.prevent\r\n >\r\n <template v-if=\"props.props.listType !== 'text'\">\r\n <el-icon :disabled=\"true\">\r\n <Plus />\r\n </el-icon>\r\n </template>\r\n <template v-else>\r\n <el-button class=\"upload-button\" type=\"primary\"> 上传附件 </el-button>\r\n </template>\r\n </el-upload>\r\n <el-dialog v-model=\"dialogVisible\">\r\n <img w-full :src=\"dialogImageUrl\" alt=\"Preview Image\" />\r\n </el-dialog>\r\n <el-form v-if=\"props.props.listType == 'text'\">\r\n <el-form-item v-for=\"(file, index) in files\" :key=\"index\" class=\"file-list\">\r\n <el-icon color=\"#73767a\" :size=\"14\">\r\n <Document />\r\n </el-icon>\r\n <el-input\r\n v-model=\"file.name\"\r\n @change=\"handleFileNameChange(file, index)\"\r\n />\r\n <span class=\"file-type\">.{{ file.fileType }}</span>\r\n <el-icon color=\"#73767a\" :size=\"12\" @click=\"handleRemoveSuccess(file)\">\r\n <Close />\r\n </el-icon>\r\n </el-form-item>\r\n </el-form>\r\n</template>\r\n<style scoped lang=\"scss\">\r\n:deep(.el-upload-list) {\r\n .el-upload-list__item-actions span {\r\n margin-left: 20px;\r\n }\r\n}\r\n\r\n.disable-upload {\r\n :deep(.el-upload--picture-card) {\r\n display: none !important;\r\n }\r\n\r\n :deep(.el-upload--text) {\r\n display: none !important;\r\n }\r\n\r\n :deep(.el-upload--picture) {\r\n display: none !important;\r\n }\r\n}\r\n.upload-main {\r\n flex-basis: 100%;\r\n}\r\n.file-list {\r\n display: flex;\r\n align-items: center;\r\n margin-top: 10px;\r\n .file-type {\r\n height: 22px;\r\n line-height: 22px;\r\n margin-right: 5px;\r\n background: #eeeeee;\r\n border-radius: 4px;\r\n font-size: 12px;\r\n padding: 0 4px;\r\n }\r\n :deep(.el-form-item__content) {\r\n display: contents;\r\n }\r\n :deep(.el-input__wrapper) {\r\n margin: 0 5px;\r\n }\r\n :deep(.el-input__inner) {\r\n height: 20px;\r\n line-height: 20px;\r\n }\r\n}\r\n</style>\r\n"],"names":["emit","__emit","props","__props","files","computed","item","fileType","parts","dialogImageUrl","ref","dialogVisible","uploadUrl","getConfig","compressImg","file","reader","resolve","reject","e","img","canvas","ctx","blob","newFile","handleRemoveSuccess","uploadFile","paramsData","_a","_b","http","handleExceed","ElMessage","handlePictureCardPreview","handleBeforeUpload","fileName","uploadRequest","handleFileNameChange","index","ElLoading","formData","axios","res"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,UAAMA,IAAOC,GACPC,IAAQC,GAoBRC,IAAQC,EAAS,MACdH,EAAM,KAAK,IAAI,CAACI,MAAS;AAC9B,YAAMC,IAAWD,EAAK,IAAI,UAAUA,EAAK,IAAI,YAAY,GAAG,IAAI,CAAC;AACjE,UAAI,OAAOA,EAAK,SAAS;AACvB,eAAAA,EAAK,WAAWC,GACTD;AAGT,UAAIA,EAAK,KAAK;AACZ,cAAME,IAAQF,EAAK,IAAI,MAAM,GAAG;AAMhC,eALkB;AAAA,UAChB,GAAGA;AAAA,UACH,MAAME,EAAMA,EAAM,SAAS,CAAC;AAAA,UAC5B,UAAUD;AAAA,QAClB;AAAA,MAEK;AAED,aAAO,EAAE,GAAGD,GAAM,MAAMA,EAAK,IAAI,UAAUC;IAC/C,CAAG,CACF,GACKE,IAAiBC,EAAI,EAAE,GACvBC,IAAgBD,EAAI,EAAK;AACd,IAAAA,EAAIR,CAAK;AAC1B,UAAMU,IAAYC,EAAW,EAAC;AACf,IACY,gBAAa,QAAQ,OAAO;AAEvD,UAAMC,IAAc,CAACC,MAAS;AAC5B,YAAMC,IAAS,IAAI;AACnB,aAAAA,EAAO,cAAcD,CAAI,GAElB,IAAI,QAAQ,SAAUE,GAASC,GAAQ;AAC5C,eAAKH,EAAK,KAAK,WAAW,QAAQ,KAIlCC,EAAO,SAAS,OAAOG,MAAM;AAC3B,gBAAMC,IAAM,IAAI;AAChB,UAAAA,EAAI,MAAMD,EAAE,OAAO,QACnBC,EAAI,SAAS,MAAM;AACjB,kBAAMC,IAAS,SAAS,cAAc,QAAQ,GACxCC,IAAMD,EAAO,WAAW,IAAI;AAClC,YAAAA,EAAO,QAAQD,EAAI,OACnBC,EAAO,SAASD,EAAI,QACpBE,EAAI,UAAUF,GAAK,GAAG,GAAGC,EAAO,OAAOA,EAAO,MAAM,GACpDA,EAAO;AAAA,cACL,CAACE,MAAS;AACR,sBAAMC,IAAU,IAAI,KAAK,CAACD,CAAI,GAAGR,EAAK,MAAM;AAAA,kBAC1C,MAAMA,EAAK;AAAA,kBACX,cAAc,KAAK,IAAK;AAAA,gBACtC,CAAa;AACD,gBAAAE,EAAQO,CAAO;AAAA,cAChB;AAAA,cACDT,EAAK;AAAA,cACL;AAAA,YACV;AAAA,UACA;AAAA,QACA,GACW,OAzBLE,EAAQF,CAAI,GACL;AAAA,MAyBb,CAAG;AAAA,IACH,GACMU,IAAsB,CAACC,MAAe;;AAC1C,UAAIA,EAAW,WAAW;AACxB,YAAIxB,EAAM,MAAM,cAAc;AAC5B,gBAAMyB,KAAaC,IAAA1B,EAAM,MAAM,iBAAZ,QAAA0B,EAA0B,QACzCC,IAAA3B,EAAM,MAAM,iBAAZ,gBAAA2B,EAA0B,OAC1B;AACJ,UAAAC,GACG;AAAA,YACC,GAAG5B,EAAM,MAAM,aAAa,GAAG,IAAIwB,EAAW,EAAE;AAAA,YAChDC;AAAA,YACAA;AAAA,UACD,EACA,KAAK,MAAM;AACV,YAAA3B,EAAK,aAAa0B,CAAU;AAAA,UACtC,CAAS;AAAA,QACT;AACM,UAAA1B,EAAK,aAAa0B,CAAU;AAAA,IAGlC,GACMK,IAAe,MAAM;AACzB,MAAAC,EAAU;AAAA,QACR,SAAS,UAAU9B,EAAM,MAAM,KAAK;AAAA,QACpC,MAAM;AAAA,MACV,CAAG;AAAA,IACH,GACM+B,IAA2B,CAACP,MAAe;AAC/C,MAAAjB,EAAe,QAAQiB,EAAW,KAClCf,EAAc,QAAQ;AAAA,IACxB,GACMuB,IAAqB,CAACnB,MAAS;AACnC,YAAMoB,IAAWpB,EAAK,KAAK,UAAU,GAAGA,EAAK,KAAK,YAAY,GAAG,CAAC;AAElE,UAAI,CADU,yBACH,KAAKoB,CAAQ;AACtB,eAAAH,EAAU;AAAA,UACR,SAAS;AAAA,UACT,MAAM;AAAA,QACZ,CAAK,GACM;AAET,MAAAlB,EAAYC,CAAI,EAAE,KAAK,CAACS,MAClBA,EAAQ,OAAO,OAAO,OAAO,KAC/BY,EAAcZ,CAAO,GACd,OAEPQ,EAAU;AAAA,QACR,SAAS;AAAA,QACT,MAAM;AAAA,MACd,CAAO,GACM,GAEV;AAAA,IACH;AAEA,aAASK,EAAqBtB,GAAMuB,GAAO;AACzC,UAAI,CAACvB,EAAK,MAAM;AACd,QAAAiB,EAAU;AAAA,UACR,SAAS;AAAA,UACT,MAAM;AAAA,QACZ,CAAK;AACD;AAAA,MACD;AACD,MAAAhC,EAAK,aAAae,CAAI;AAAA,IACxB;AAEA,aAASqB,EAAcrB,GAAM;AAC3B,aAAAwB,EAAU,QAAQ,EAAE,MAAM,WAAW,YAAY,kBAAiB,CAAE,GAC7D,IAAI,QAAQ,CAACtB,GAASC,MAAW;AACtC,cAAMsB,IAAW,IAAI;AACrB,QAAAA,EAAS,OAAO,QAAQzB,CAAI,GAC5B0B,GACG,KAAK7B,GAAW4B,GAAU,EAAE,EAC5B,KAAK,CAACE,OACLH,EAAU,UAAU,SACpBP,EAAU;AAAA,UACR,SAAS;AAAA,UACT,MAAM;AAAA,QAChB,CAAS,GACDhC,EAAK,cAAc0C,EAAI,KAAK,IAAI,GAChCzB,EAAQyB,EAAI,IAAI,GACT,GACR,EACA,MAAM,MAAM;AACX,UAAAH,EAAU,UAAU,SACpBP,EAAU;AAAA,YACR,SAAS;AAAA,YACT,MAAM;AAAA,UAChB,CAAS,GACDd,EAAO,eAAe;AAAA,QAC9B,CAAO;AAAA,MACP,CAAG;AAAA,IACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"AttachmentUploader-CqZvNLjp.js","sources":["../src/framework/field/attachment/AttachmentUploader.vue"],"sourcesContent":["<script setup>\r\nimport {\r\n ElUpload,\r\n ElIcon,\r\n ElDialog,\r\n ElForm,\r\n ElFormItem,\r\n ElButton,\r\n ElInput,\r\n} from \"element-plus\";\r\nimport axios from \"axios\";\r\nimport http from \"../../utils/http\";\r\nimport { getConfig } from \"../../config-loader\";\r\nimport { ref, computed } from \"vue\";\r\nimport { ElLoading, ElMessage } from \"element-plus\";\r\nimport { Plus, Document, Close } from \"@element-plus/icons-vue\";\r\n\r\nconst emit = defineEmits([\"on-success\", \"on-remove\", \"on-change\"]);\r\nconst props = defineProps({\r\n pics: {\r\n type: Array,\r\n default() {\r\n return [];\r\n },\r\n },\r\n limit: { type: Number },\r\n props: {\r\n type: Object,\r\n default() {\r\n return {\r\n listType: \"picture-card\", //'text' | 'picture' | 'picture-card'\r\n limit: 5, //最多上传几个文件\r\n accept: \"image/*\",\r\n };\r\n },\r\n },\r\n});\r\n\r\nconst files = computed(() => {\r\n return props.pics.map((item) => {\r\n const fileType = item.url.substring(item.url.lastIndexOf(\".\") + 1);\r\n if (typeof item.name !== undefined) {\r\n item.fileType = fileType;\r\n return item;\r\n }\r\n\r\n if (item.url) {\r\n const parts = item.url.split(\"/\");\r\n const namedItem = {\r\n ...item,\r\n name: parts[parts.length - 1],\r\n fileType: fileType,\r\n };\r\n return namedItem;\r\n }\r\n\r\n return { ...item, name: item.id, fileType: fileType };\r\n });\r\n});\r\nconst dialogImageUrl = ref(\"\");\r\nconst dialogVisible = ref(false);\r\nconst imageUrl = ref(props);\r\nconst uploadUrl = getConfig().fileUploadUrl;\r\nconst header = {\r\n Authorization: `Bearer ${localStorage.getItem(\"token\")}`,\r\n};\r\nconst compressImg = (file) => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n\r\n return new Promise(function (resolve, reject) {\r\n if (!file.type.startsWith(\"image/\")) {\r\n resolve(file);\r\n return false;\r\n }\r\n reader.onload = async (e) => {\r\n const img = new Image();\r\n img.src = e.target.result;\r\n img.onload = () => {\r\n const canvas = document.createElement(\"canvas\");\r\n const ctx = canvas.getContext(\"2d\");\r\n canvas.width = img.width;\r\n canvas.height = img.height;\r\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\r\n canvas.toBlob(\r\n (blob) => {\r\n const newFile = new File([blob], file.name, {\r\n type: file.type,\r\n lastModified: Date.now(),\r\n });\r\n resolve(newFile);\r\n },\r\n file.type,\r\n 0.5,\r\n );\r\n };\r\n };\r\n return false;\r\n });\r\n};\r\nconst handleRemoveSuccess = (uploadFile) => {\r\n if (uploadFile.status === \"success\") {\r\n if (props.props.deleteParams) {\r\n const paramsData = props.props.deleteParams?.data\r\n ? props.props.deleteParams?.data\r\n : {};\r\n http\r\n .remove(\r\n `${props.props.deleteParams.url}/${uploadFile.id}/attachment`,\r\n paramsData,\r\n paramsData,\r\n )\r\n .then(() => {\r\n emit(\"on-remove\", uploadFile);\r\n });\r\n } else {\r\n emit(\"on-remove\", uploadFile);\r\n }\r\n }\r\n};\r\nconst handleExceed = () => {\r\n ElMessage({\r\n message: `最多只能上传 ${props.props.limit} 个文件!`,\r\n type: \"warning\",\r\n });\r\n};\r\nconst handlePictureCardPreview = (uploadFile) => {\r\n dialogImageUrl.value = uploadFile.url;\r\n dialogVisible.value = true;\r\n};\r\nconst handleBeforeUpload = (file) => {\r\n const fileName = file.name.substring(0, file.name.lastIndexOf(\".\"));\r\n const regex = /^[\\u4e00-\\u9fa5\\w-_]+$/;\r\n if (!regex.test(fileName)) {\r\n ElMessage({\r\n message: \"请勿输入特殊字符!\",\r\n type: \"warning\",\r\n });\r\n return false;\r\n }\r\n compressImg(file).then((newFile) => {\r\n if (newFile.size / 1024 / 1024 < 5) {\r\n uploadRequest(newFile);\r\n return false;\r\n } else {\r\n ElMessage({\r\n message: \"上传大小不能超过 5MB!\",\r\n type: \"warning\",\r\n });\r\n return false;\r\n }\r\n });\r\n};\r\n\r\nfunction handleFileNameChange(file, index) {\r\n if (!file.name) {\r\n ElMessage({\r\n message: \"附件名称不能为空!\",\r\n type: \"warning\",\r\n });\r\n return;\r\n }\r\n emit(\"on-change\", file);\r\n}\r\n\r\nfunction uploadRequest(file) {\r\n ElLoading.service({ text: \"上传中,请稍后\", background: \"rgba(0,0,0,0.3)\" });\r\n return new Promise((resolve, reject) => {\r\n const formData = new FormData();\r\n formData.append(\"file\", file);\r\n axios\r\n .post(uploadUrl, formData, {})\r\n .then((res) => {\r\n ElLoading.service().close();\r\n ElMessage({\r\n message: \"上传成功\",\r\n type: \"success\",\r\n });\r\n emit(\"on-success\", res.data.data);\r\n resolve(res.data);\r\n return false;\r\n })\r\n .catch(() => {\r\n ElLoading.service().close();\r\n ElMessage({\r\n message: \"上传失败\",\r\n type: \"warning\",\r\n });\r\n reject(\"Upload failed\");\r\n });\r\n });\r\n}\r\n</script>\r\n\r\n<template>\r\n <!-- 删除请求头加权限后请添加到组建中 :headers=\"header\"-->\r\n <el-upload\r\n :file-list=\"files\"\r\n :action=\"uploadUrl\"\r\n :limit=\"props.props.limit\"\r\n :accept=\"props.props.accept\"\r\n :list-type=\"props.props.listType\"\r\n :on-remove=\"handleRemoveSuccess\"\r\n :before-upload=\"handleBeforeUpload\"\r\n :on-exceed=\"handleExceed\"\r\n :on-preview=\"handlePictureCardPreview\"\r\n :multiple=\"true\"\r\n :http-request=\"\r\n () => {\r\n return false;\r\n }\r\n \"\r\n :show-file-list=\"props.props.listType !== 'text'\"\r\n :class=\"[\r\n 'upload-main',\r\n { 'disable-upload': files.length >= props.props.limit },\r\n ]\"\r\n @click.prevent\r\n >\r\n <template v-if=\"props.props.listType !== 'text'\">\r\n <el-icon :disabled=\"true\">\r\n <Plus />\r\n </el-icon>\r\n </template>\r\n <template v-else>\r\n <el-button class=\"upload-button\" type=\"primary\"> 上传附件 </el-button>\r\n </template>\r\n </el-upload>\r\n <el-dialog v-model=\"dialogVisible\">\r\n <img w-full :src=\"dialogImageUrl\" alt=\"Preview Image\" />\r\n </el-dialog>\r\n <el-form v-if=\"props.props.listType == 'text'\">\r\n <el-form-item v-for=\"(file, index) in files\" :key=\"index\" class=\"file-list\">\r\n <el-icon color=\"#73767a\" :size=\"14\">\r\n <Document />\r\n </el-icon>\r\n <el-input\r\n v-model=\"file.name\"\r\n @change=\"handleFileNameChange(file, index)\"\r\n />\r\n <span class=\"file-type\">.{{ file.fileType }}</span>\r\n <el-icon color=\"#73767a\" :size=\"12\" @click=\"handleRemoveSuccess(file)\">\r\n <Close />\r\n </el-icon>\r\n </el-form-item>\r\n </el-form>\r\n</template>\r\n<style scoped lang=\"scss\">\r\n:deep(.el-upload-list) {\r\n .el-upload-list__item-actions span {\r\n margin-left: 20px;\r\n }\r\n}\r\n\r\n.disable-upload {\r\n :deep(.el-upload--picture-card) {\r\n display: none !important;\r\n }\r\n\r\n :deep(.el-upload--text) {\r\n display: none !important;\r\n }\r\n\r\n :deep(.el-upload--picture) {\r\n display: none !important;\r\n }\r\n}\r\n.upload-main {\r\n flex-basis: 100%;\r\n}\r\n.file-list {\r\n display: flex;\r\n align-items: center;\r\n margin-top: 10px;\r\n .file-type {\r\n height: 22px;\r\n line-height: 22px;\r\n margin-right: 5px;\r\n background: #eeeeee;\r\n border-radius: 4px;\r\n font-size: 12px;\r\n padding: 0 4px;\r\n }\r\n :deep(.el-form-item__content) {\r\n display: contents;\r\n }\r\n :deep(.el-input__wrapper) {\r\n margin: 0 5px;\r\n }\r\n :deep(.el-input__inner) {\r\n height: 20px;\r\n line-height: 20px;\r\n }\r\n}\r\n</style>\r\n"],"names":["emit","__emit","props","__props","files","computed","item","fileType","parts","dialogImageUrl","ref","dialogVisible","uploadUrl","getConfig","compressImg","file","reader","resolve","reject","e","img","canvas","ctx","blob","newFile","handleRemoveSuccess","uploadFile","paramsData","_a","_b","http","handleExceed","ElMessage","handlePictureCardPreview","handleBeforeUpload","fileName","uploadRequest","handleFileNameChange","index","ElLoading","formData","axios","res"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { openBlock as o, createBlock as c, unref as e, createSlots as I, withCtx as s, renderSlot as E, createElementVNode as f, createVNode as l, withModifiers as S, createCommentVNode as x, toDisplayString as B } from "vue";
|
|
2
2
|
import { ElUpload as M, ElImage as b, ElIcon as i, ElMessage as n, ElLoading as p } from "element-plus";
|
|
3
|
-
import { _ as C, j as D, l as L, p as N, n as V, m as j } from "./index-
|
|
3
|
+
import { _ as C, j as D, l as L, p as N, n as V, m as j } from "./index-BsT_4hup.js";
|
|
4
4
|
import "./el-progress-l0sNRNKZ.js";
|
|
5
5
|
const q = { class: "image-slot" }, z = { class: "el-upload__tip" }, $ = {
|
|
6
6
|
__name: "ImageUploader",
|
|
@@ -112,4 +112,4 @@ const q = { class: "image-slot" }, z = { class: "el-upload__tip" }, $ = {
|
|
|
112
112
|
export {
|
|
113
113
|
R as default
|
|
114
114
|
};
|
|
115
|
-
//# sourceMappingURL=ImageUploader-
|
|
115
|
+
//# sourceMappingURL=ImageUploader-BO9H3K96.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageUploader-
|
|
1
|
+
{"version":3,"file":"ImageUploader-BO9H3K96.js","sources":["../src/framework/field/image/ImageUploader.vue"],"sourcesContent":["<script setup>\r\nimport { ElUpload, ElImage, ElIcon } from \"element-plus\";\r\nimport axios from \"axios\";\r\nimport { getConfig } from \"../../config-loader\";\r\nimport { ElLoading, ElMessage } from \"element-plus\";\r\nimport { Plus, Delete, Loading } from \"@element-plus/icons-vue\";\r\n\r\nconst emit = defineEmits([\"on-success\"]);\r\nconst props = defineProps({\r\n imageUrl: { type: String },\r\n props: {\r\n type: Object,\r\n default() {\r\n return {\r\n accept: \"image/*\",\r\n tip: \"\",\r\n };\r\n },\r\n },\r\n});\r\nconst uploadUrl = getConfig().imageUploadUrl;\r\nconst header = {\r\n Authorization: `Bearer ${localStorage.getItem(\"token\")}`,\r\n};\r\nconst handleBeforeUpload = (uploadFile) => {\r\n const isLt2M = uploadFile.size / 1024 / 1024 < 5;\r\n if (!isLt2M) {\r\n ElMessage({\r\n message: \"上传大小不能超过 5MB!\",\r\n type: \"warning\",\r\n });\r\n return false;\r\n }\r\n};\r\nconst handleSuccess = (response) => {\r\n emit(\"on-success\", response.data.imageUrl);\r\n};\r\n\r\nfunction deleteImageUrl() {\r\n emit(\"on-success\", \"\");\r\n}\r\n\r\nfunction uploadRequest(file) {\r\n ElLoading.service({ text: \"上传中,请稍后\", background: \"rgba(0,0,0,0.3)\" });\r\n return new Promise((resolve, reject) => {\r\n const formData = new FormData();\r\n formData.append(\"image\", file.file);\r\n axios\r\n .post(uploadUrl, formData, {})\r\n .then((res) => {\r\n ElLoading.service().close();\r\n ElMessage({\r\n message: \"上传成功\",\r\n type: \"success\",\r\n });\r\n resolve(res.data);\r\n })\r\n .catch(() => {\r\n ElLoading.service().close();\r\n ElMessage({\r\n message: \"上传失败\",\r\n type: \"warning\",\r\n });\r\n reject(\"Upload failed\");\r\n });\r\n });\r\n}\r\n</script>\r\n\r\n<template>\r\n <!-- 删除请求头加权限后请添加到组建中 :headers=\"header\"-->\r\n <el-upload\r\n class=\"image-uploader\"\r\n :action=\"uploadUrl\"\r\n name=\"image\"\r\n :show-file-list=\"false\"\r\n :accept=\"props.props.accept\"\r\n :on-success=\"handleSuccess\"\r\n :before-upload=\"handleBeforeUpload\"\r\n :http-request=\"uploadRequest\"\r\n >\r\n <slot />\r\n <el-image\r\n v-if=\"props.imageUrl\"\r\n class=\"image\"\r\n :src=\"props.imageUrl\"\r\n fit=\"scale-down\"\r\n >\r\n <template #placeholder>\r\n <div class=\"image-slot\">\r\n <el-icon class=\"placeholder-icon\">\r\n <Loading />\r\n </el-icon>\r\n </div>\r\n </template>\r\n </el-image>\r\n <el-icon v-else class=\"uploader-icon\">\r\n <Plus />\r\n </el-icon>\r\n <el-icon\r\n v-if=\"props.imageUrl\"\r\n class=\"delete-icon\"\r\n @click.stop.prevent=\"deleteImageUrl\"\r\n >\r\n <Delete />\r\n </el-icon>\r\n <template v-if=\"props.props.tip\" #tip>\r\n <div class=\"el-upload__tip\">{{ props.props.tip }}</div>\r\n </template>\r\n </el-upload>\r\n</template>\r\n\r\n<style scoped lang=\"scss\">\r\n.image-uploader {\r\n :deep(.el-upload) {\r\n border: 1px dashed var(--el-border-color);\r\n border-radius: 6px;\r\n cursor: pointer;\r\n position: relative;\r\n overflow: hidden;\r\n transition: var(--el-transition-duration-fast);\r\n\r\n &:hover {\r\n border-color: var(--el-color-primary);\r\n }\r\n }\r\n\r\n .image {\r\n width: 146px;\r\n height: 146px;\r\n\r\n .placeholder-icon {\r\n width: 146px;\r\n height: 146px;\r\n font-size: 30px;\r\n color: #a7a7a7;\r\n }\r\n }\r\n\r\n .uploader-icon {\r\n font-size: 28px;\r\n color: #8c939d;\r\n width: 146px;\r\n height: 146px;\r\n text-align: center;\r\n }\r\n\r\n .delete-icon {\r\n font-size: 20px;\r\n color: #b7b4b4;\r\n position: absolute;\r\n top: 10px;\r\n right: 10px;\r\n }\r\n}\r\n</style>\r\n"],"names":["emit","__emit","props","__props","uploadUrl","getConfig","handleBeforeUpload","uploadFile","ElMessage","handleSuccess","response","deleteImageUrl","uploadRequest","file","ElLoading","resolve","reject","formData","axios","res"],"mappings":";;;;;;;;;;;;;;;;;;;;AAOA,UAAMA,IAAOC,GACPC,IAAQC,GAYRC,IAAYC,EAAW,EAAC;AACf,IACY,gBAAa,QAAQ,OAAO;AAEvD,UAAMC,IAAqB,CAACC,MAAe;AAEzC,UAAI,EADWA,EAAW,OAAO,OAAO,OAAO;AAE7C,eAAAC,EAAU;AAAA,UACR,SAAS;AAAA,UACT,MAAM;AAAA,QACZ,CAAK,GACM;AAAA,IAEX,GACMC,IAAgB,CAACC,MAAa;AAClC,MAAAV,EAAK,cAAcU,EAAS,KAAK,QAAQ;AAAA,IAC3C;AAEA,aAASC,IAAiB;AACxB,MAAAX,EAAK,cAAc,EAAE;AAAA,IACvB;AAEA,aAASY,EAAcC,GAAM;AAC3B,aAAAC,EAAU,QAAQ,EAAE,MAAM,WAAW,YAAY,kBAAiB,CAAE,GAC7D,IAAI,QAAQ,CAACC,GAASC,MAAW;AACtC,cAAMC,IAAW,IAAI;AACrB,QAAAA,EAAS,OAAO,SAASJ,EAAK,IAAI,GAClCK,EACG,KAAKd,GAAWa,GAAU,EAAE,EAC5B,KAAK,CAACE,MAAQ;AACb,UAAAL,EAAU,UAAU,SACpBN,EAAU;AAAA,YACR,SAAS;AAAA,YACT,MAAM;AAAA,UAChB,CAAS,GACDO,EAAQI,EAAI,IAAI;AAAA,QACxB,CAAO,EACA,MAAM,MAAM;AACX,UAAAL,EAAU,UAAU,SACpBN,EAAU;AAAA,YACR,SAAS;AAAA,YACT,MAAM;AAAA,UAChB,CAAS,GACDQ,EAAO,eAAe;AAAA,QAC9B,CAAO;AAAA,MACP,CAAG;AAAA,IACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ref as c, computed as I, openBlock as i, createElementBlock as E, createVNode as u, unref as o, normalizeClass as T, withModifiers as V, createSlots as P, withCtx as s, createBlock as f, createTextVNode as U, createElementVNode as g, toDisplayString as B } from "vue";
|
|
2
2
|
import { ElUpload as D, ElIcon as z, ElButton as N, ElDialog as S, ElMessage as v } from "element-plus";
|
|
3
|
-
import { _ as C, p as M, h as $ } from "./index-
|
|
3
|
+
import { _ as C, p as M, h as $ } from "./index-BsT_4hup.js";
|
|
4
4
|
import "./el-progress-l0sNRNKZ.js";
|
|
5
5
|
const q = { class: "el-upload__tip" }, O = ["src"], R = {
|
|
6
6
|
__name: "ImagesUploader",
|
|
@@ -138,4 +138,4 @@ const q = { class: "el-upload__tip" }, O = ["src"], R = {
|
|
|
138
138
|
export {
|
|
139
139
|
J as default
|
|
140
140
|
};
|
|
141
|
-
//# sourceMappingURL=ImagesUploader-
|
|
141
|
+
//# sourceMappingURL=ImagesUploader-HPjV03pF.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImagesUploader-
|
|
1
|
+
{"version":3,"file":"ImagesUploader-HPjV03pF.js","sources":["../src/framework/field/images/ImagesUploader.vue"],"sourcesContent":["<script setup>\r\nimport { ElUpload, ElDialog, ElIcon, ElButton } from \"element-plus\";\r\nimport { computed, ref } from \"vue\";\r\nimport { ElMessage } from \"element-plus\";\r\nimport { Plus } from \"@element-plus/icons-vue\";\r\nimport http from \"../../utils/http\";\r\n\r\nconst emit = defineEmits([\"on-remove\", \"on-upload\"]);\r\nconst dialogImageUrl = ref(\"\");\r\nconst dialogVisible = ref(false);\r\nconst props = defineProps({\r\n images: {\r\n type: Array,\r\n default() {\r\n return [];\r\n },\r\n },\r\n limit: { type: Number },\r\n props: {\r\n type: Object,\r\n default() {\r\n return {\r\n listType: \"picture-card\",\r\n limit: 5,\r\n accept: \"image/*\",\r\n tip: \"\",\r\n };\r\n },\r\n },\r\n});\r\n\r\nconst files = computed(() => {\r\n return props.images.map((item) => {\r\n if (!item?.url) {\r\n return { ...item, name: \"unknown\", fileType: \"unknown\" };\r\n }\r\n\r\n const fileType = item.url.substring(item.url.lastIndexOf(\".\") + 1);\r\n const parts = item.url.split(\"/\");\r\n const namedItem = {\r\n ...item,\r\n name: parts[parts.length - 1],\r\n fileType,\r\n };\r\n return namedItem;\r\n });\r\n});\r\n\r\nfunction onRemove(uploadFile) {\r\n if (props.props.deleteParams) {\r\n const paramsData = props.props.deleteParams?.data\r\n ? props.props.deleteParams?.data\r\n : {};\r\n http\r\n .remove(\r\n `${props.props.deleteParams.url}/${uploadFile.id}/attachment`,\r\n paramsData,\r\n paramsData,\r\n )\r\n .then(() => {\r\n emit(\"on-remove\", uploadFile);\r\n });\r\n } else {\r\n emit(\"on-remove\", uploadFile);\r\n }\r\n}\r\n\r\nfunction onExceed() {\r\n ElMessage({\r\n message: `最多只能上传 ${props.props.limit} 个文件!`,\r\n type: \"warning\",\r\n });\r\n}\r\n\r\nfunction onPreview(uploadFile) {\r\n dialogImageUrl.value = uploadFile.url;\r\n dialogVisible.value = true;\r\n}\r\n\r\nfunction beforeUpload(uploadFile) {\r\n const limitSize = 1024 * 1024 * 5;\r\n if (uploadFile.size > limitSize) {\r\n ElMessage({\r\n message: \"上传大小不能超过 5MB!\",\r\n type: \"warning\",\r\n });\r\n return false;\r\n }\r\n\r\n return true;\r\n}\r\n\r\nfunction httpRequest(uploadFile) {\r\n const formData = new FormData();\r\n formData.append(\"file\", uploadFile.file);\r\n emit(\"on-upload\", formData);\r\n}\r\n</script>\r\n\r\n<template>\r\n <div>\r\n <el-upload\r\n :file-list=\"files\"\r\n :limit=\"props.props.limit\"\r\n :accept=\"props.props.accept\"\r\n :list-type=\"props.props.listType\"\r\n :on-remove=\"onRemove\"\r\n :on-exceed=\"onExceed\"\r\n :on-preview=\"onPreview\"\r\n :multiple=\"true\"\r\n :before-upload=\"beforeUpload\"\r\n :http-request=\"httpRequest\"\r\n :show-file-list=\"props.props.listType !== 'text'\"\r\n :class=\"[\r\n 'upload-main',\r\n { 'disable-upload': files.length >= props.props.limit },\r\n ]\"\r\n @click.prevent\r\n >\r\n <template v-if=\"props.props.listType !== 'text'\">\r\n <el-icon :disabled=\"true\">\r\n <Plus />\r\n </el-icon>\r\n </template>\r\n <template v-else>\r\n <el-button class=\"upload-button\" type=\"primary\"> 上传附件 </el-button>\r\n </template>\r\n <template v-if=\"props.props.tip\" #tip>\r\n <div class=\"el-upload__tip\">{{ props.props.tip }}</div>\r\n </template>\r\n </el-upload>\r\n <el-dialog v-model=\"dialogVisible\">\r\n <img w-full :src=\"dialogImageUrl\" alt=\"Preview Image\" />\r\n </el-dialog>\r\n </div>\r\n</template>\r\n<style scoped lang=\"scss\">\r\n:deep(.el-upload-list) {\r\n .el-upload-list__item-actions span {\r\n margin-left: 20px;\r\n }\r\n}\r\n\r\n.disable-upload {\r\n :deep(.el-upload--picture-card) {\r\n display: none !important;\r\n }\r\n\r\n :deep(.el-upload--text) {\r\n display: none !important;\r\n }\r\n\r\n :deep(.el-upload--picture) {\r\n display: none !important;\r\n }\r\n}\r\n.upload-main {\r\n flex-basis: 100%;\r\n}\r\n.file-list {\r\n display: flex;\r\n align-items: center;\r\n margin-top: 10px;\r\n .file-type {\r\n height: 22px;\r\n line-height: 22px;\r\n margin-right: 5px;\r\n background: #eeeeee;\r\n border-radius: 4px;\r\n font-size: 12px;\r\n padding: 0 4px;\r\n }\r\n :deep(.el-form-item__content) {\r\n display: contents;\r\n }\r\n :deep(.el-input__wrapper) {\r\n margin: 0 5px;\r\n }\r\n :deep(.el-input__inner) {\r\n height: 20px;\r\n line-height: 20px;\r\n }\r\n}\r\n</style>\r\n"],"names":["emit","__emit","dialogImageUrl","ref","dialogVisible","props","__props","files","computed","item","fileType","parts","onRemove","uploadFile","paramsData","_a","_b","http","onExceed","ElMessage","onPreview","beforeUpload","httpRequest","formData"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,UAAMA,IAAOC,GACPC,IAAiBC,EAAI,EAAE,GACvBC,IAAgBD,EAAI,EAAK,GACzBE,IAAQC,GAqBRC,IAAQC,EAAS,MACdH,EAAM,OAAO,IAAI,CAACI,MAAS;AAChC,UAAI,EAACA,KAAA,QAAAA,EAAM;AACT,eAAO,EAAE,GAAGA,GAAM,MAAM,WAAW,UAAU;AAG/C,YAAMC,IAAWD,EAAK,IAAI,UAAUA,EAAK,IAAI,YAAY,GAAG,IAAI,CAAC,GAC3DE,IAAQF,EAAK,IAAI,MAAM,GAAG;AAMhC,aALkB;AAAA,QAChB,GAAGA;AAAA,QACH,MAAME,EAAMA,EAAM,SAAS,CAAC;AAAA,QAC5B,UAAAD;AAAA,MACN;AAAA,IAEA,CAAG,CACF;AAED,aAASE,EAASC,GAAY;;AAC5B,UAAIR,EAAM,MAAM,cAAc;AAC5B,cAAMS,KAAaC,IAAAV,EAAM,MAAM,iBAAZ,QAAAU,EAA0B,QACzCC,IAAAX,EAAM,MAAM,iBAAZ,gBAAAW,EAA0B,OAC1B;AACJ,QAAAC,EACG;AAAA,UACC,GAAGZ,EAAM,MAAM,aAAa,GAAG,IAAIQ,EAAW,EAAE;AAAA,UAChDC;AAAA,UACAA;AAAA,QACD,EACA,KAAK,MAAM;AACV,UAAAd,EAAK,aAAaa,CAAU;AAAA,QACpC,CAAO;AAAA,MACP;AACI,QAAAb,EAAK,aAAaa,CAAU;AAAA,IAEhC;AAEA,aAASK,IAAW;AAClB,MAAAC,EAAU;AAAA,QACR,SAAS,UAAUd,EAAM,MAAM,KAAK;AAAA,QACpC,MAAM;AAAA,MACV,CAAG;AAAA,IACH;AAEA,aAASe,EAAUP,GAAY;AAC7B,MAAAX,EAAe,QAAQW,EAAW,KAClCT,EAAc,QAAQ;AAAA,IACxB;AAEA,aAASiB,EAAaR,GAAY;AAEhC,aAAIA,EAAW,OAAO,WACpBM,EAAU;AAAA,QACR,SAAS;AAAA,QACT,MAAM;AAAA,MACZ,CAAK,GACM,MAGF;AAAA,IACT;AAEA,aAASG,EAAYT,GAAY;AAC/B,YAAMU,IAAW,IAAI;AACrB,MAAAA,EAAS,OAAO,QAAQV,EAAW,IAAI,GACvCb,EAAK,aAAauB,CAAQ;AAAA,IAC5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defineComponent as rr, onMounted as ir, onBeforeUnmount as ar, ref as $n, watch as Pn, nextTick as Gn, h as or, computed as sr, openBlock as ur, createBlock as lr, unref as fr } from "vue";
|
|
2
2
|
import * as rt from "quill";
|
|
3
3
|
import Rn from "quill";
|
|
4
|
-
import { o as W, r as cr, m as hr, j as dr } from "./index-
|
|
4
|
+
import { o as W, r as cr, m as hr, j as dr } from "./index-BsT_4hup.js";
|
|
5
5
|
import { ElMessage as Ln } from "element-plus";
|
|
6
6
|
var ue = -1, re = 1, Z = 0;
|
|
7
7
|
function at(r, a, n, u) {
|
|
@@ -1811,4 +1811,4 @@ const Wn = {
|
|
|
1811
1811
|
export {
|
|
1812
1812
|
Rr as default
|
|
1813
1813
|
};
|
|
1814
|
-
//# sourceMappingURL=RichTextEditor-
|
|
1814
|
+
//# sourceMappingURL=RichTextEditor-B2M7zkFs.js.map
|