import axios from 'axios' import dayjs from 'dayjs' import { NUpload, useMessage, NModal } from 'naive-ui' import { defineComponent, reactive, ref, watch } from 'vue' import { VueUeditorWrap } from 'vue-ueditor-wrap' import { policy } from '../upload-file/api' import path from 'path' declare const window: Window & { UE: any } export default defineComponent({ name: 'u-editor', props: { isDisable: { type: Boolean, default: false }, bucketName: { type: String, default: () => 'gyt' }, path: { type: String, default: '' }, modelValue: { type: [String, Number], default: '' } }, emits: ['submit', 'update:modelValue'], setup(props, ctx) { const value = ref() const visiable = ref(false) const state = reactive({ value: null as any, vueUeditor: null, ossUploadUrl: `https://${props.bucketName}.ks3-cn-beijing.ksyuncs.com/`, accept: '*' }) const message = useMessage() const searchForm = reactive({ fileList: [] as any, coverImg: '' }) const UpLoadStates = reactive({ policy: '', signature: '', key: '', KSSAccessKeyId: '', acl: 'public-read', name: '' }) as any const uploadRef = ref() const editorConfig = { UEDITOR_HOME_URL: './UEditor/', // 访问 UEditor 静态资源的根路径,可参考常见问题1 // serverUrl: '/api-admin/uploadFile', // 服务端接口(这个地址是我为了方便各位体验文件上传功能搭建的临时接口,请勿在生产环境使用!!!) // uploadUrl: '/api-admin/uploadFile', autoHeightEnabled: false, // 初始容器高度 initialFrameHeight: 400, // 初始容器宽度 initialFrameWidth: '100%' } const ready = (editor: any) => { console.log('ready', editor) if (props.isDisable) { editor.setDisabled() } else { editor.setEnabled() } } const addCustimButtom = (e: any) => { window.UE.registerUI( 'preview', function (editor: any, uiName: String) { // 注册按钮执行时的 command 命令,使用命令默认就会带有回退操作 editor.registerCommand(uiName, { execCommand: function () { editor.execCommand('inserthtml', ``) } }) var btn = new window.UE.ui.Button({ name: 'preview', title: '预览', cssRules: `background-position: -420px -18px;`, onclick: function () { // 渲染dialog // that.dialogVisible = true visiable.value = true editor.execCommand(uiName) } }) return btn }, 99 ) } watch( () => value.value, (val) => { ctx.emit('update:modelValue', val) }, { deep: true // immediate: true // 必须要深度监听,否则初始值赋不进去 } ) watch( () => props.modelValue, (v1) => { value.value = v1 }, { deep: true, immediate: true // 必须要深度监听,否则初始值赋不进去 } ) return () => ( <> {/* @cropper-no="error" @cropper-ok="success" */}
) } })