8 changed files with 133 additions and 37 deletions
@ -0,0 +1,72 @@ |
|||||
|
<template> |
||||
|
<div :class="prefixCls"> |
||||
|
<Upload |
||||
|
name="file" |
||||
|
multiple |
||||
|
@change="handleChange" |
||||
|
:action="uploadUrl" |
||||
|
:showUploadList="false" |
||||
|
accept=".jpg,.jpeg,.gif,.png,.webp" |
||||
|
> |
||||
|
<a-button type="primary">{{ t('component.upload.imgUpload') }}</a-button> |
||||
|
</Upload> |
||||
|
</div> |
||||
|
</template> |
||||
|
<script lang="ts"> |
||||
|
import { defineComponent } from 'vue'; |
||||
|
|
||||
|
import { Upload } from 'ant-design-vue'; |
||||
|
import { InboxOutlined } from '@ant-design/icons-vue'; |
||||
|
import { useDesign } from '/@/hooks/web/useDesign'; |
||||
|
import { useGlobSetting } from '/@/hooks/setting'; |
||||
|
import { useI18n } from '/@/hooks/web/useI18n'; |
||||
|
|
||||
|
export default defineComponent({ |
||||
|
name: 'TinymceImageUpload', |
||||
|
components: { Upload, InboxOutlined }, |
||||
|
emits: ['uploading', 'done', 'error'], |
||||
|
setup(_, { emit }) { |
||||
|
let uploading = false; |
||||
|
|
||||
|
const { uploadUrl } = useGlobSetting(); |
||||
|
const { t } = useI18n(); |
||||
|
const { prefixCls } = useDesign('tinymce-img-upload'); |
||||
|
function handleChange(info: Recordable) { |
||||
|
const file = info.file; |
||||
|
const status = file?.status; |
||||
|
|
||||
|
const url = file?.response?.url; |
||||
|
const name = file?.name; |
||||
|
if (status === 'uploading') { |
||||
|
if (!uploading) { |
||||
|
emit('uploading', name); |
||||
|
uploading = true; |
||||
|
} |
||||
|
} else if (status === 'done') { |
||||
|
emit('done', name, url); |
||||
|
uploading = false; |
||||
|
} else if (status === 'error') { |
||||
|
emit('error'); |
||||
|
uploading = false; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return { |
||||
|
prefixCls, |
||||
|
handleChange, |
||||
|
uploadUrl, |
||||
|
t, |
||||
|
}; |
||||
|
}, |
||||
|
}); |
||||
|
</script> |
||||
|
<style lang="less" scoped> |
||||
|
@prefix-cls: ~'@{namespace}-tinymce-img-upload'; |
||||
|
|
||||
|
.@{prefix-cls} { |
||||
|
position: absolute; |
||||
|
top: 4px; |
||||
|
right: 10px; |
||||
|
z-index: 20; |
||||
|
} |
||||
|
</style> |
||||
Loading…
Reference in new issue