Browse Source

禁用相对路径

master
dai 2 years ago
parent
commit
5c60024de1
  1. 274
      src/views/components/tinymce/index.vue
  2. 2
      src/views/components/tinymce2/index.vue

274
src/views/components/tinymce/index.vue

@ -1,6 +1,6 @@
/* eslint-disable */ /* eslint-disable */
<template> <template>
<textarea :id="tinymceId" style="visibility: hidden" /> <textarea :id="tinymceId" style="visibility: hidden" />
</template> </template>
<script> <script>
@ -14,144 +14,148 @@ import nextTick from "dai-js/tools/nextTick";
let num = 1; let num = 1;
export default { export default {
name: "Tinymce", name: "Tinymce",
props: { props: {
id: { id: {
type: String, type: String,
default: () => { default: () => {
num === 10000 && (num = 1); num === 10000 && (num = 1);
return `tinymce${+new Date()}${num++}`; return `tinymce${+new Date()}${num++}`;
}, },
}, },
value: { value: {
default: "", default: "",
}, },
customerId: { customerId: {
type: String, type: String,
default: "", default: "",
}, },
}, },
data() { data() {
return { return {
tinymceId: this.id, tinymceId: this.id,
}; };
}, },
mounted() { mounted() {
loadTinymce((tinymce) => { loadTinymce((tinymce) => {
let token = this.getUserToken(); let token = this.getUserToken();
// let uploadUrl = '1111' // let uploadUrl = '1111'
let uploadUrl = let uploadUrl =
window.SITE_CONFIG["apiURL"] + "/oss/file/function/upload"; window.SITE_CONFIG["apiURL"] + "/oss/file/function/upload";
// :data="{customerId:customerId}" // :data="{customerId:customerId}"
// let uploadUrl = constants.userUploadUrl // let uploadUrl = constants.userUploadUrl
// eslint-disable-next-line global-require // eslint-disable-next-line global-require
require("./zh_CN"); require("./zh_CN");
let conf = { let conf = {
selector: `#${this.tinymceId}`, selector: `#${this.tinymceId}`,
language: "zh_CN", language: "zh_CN",
menubar: "false", menubar: "false",
skin_url: skin_url:
"/" + process.env.VUE_APP_PUBLIC_PATH + "/tinymce/skins/ui/tduck", "/" +
content_style: "p {margin:3px 0; border:0px; padding:0px}", process.env.VUE_APP_PUBLIC_PATH +
content_css: "/tinymce/skins/ui/tduck",
"/" + content_style: "p {margin:3px 0; border:0px; padding:0px}",
process.env.VUE_APP_PUBLIC_PATH + content_css:
"/tinymce/skins/content/tduck", "/" +
cache_suffix: "?v=0.0.1", process.env.VUE_APP_PUBLIC_PATH +
plugins, "/tinymce/skins/content/tduck",
toolbar, cache_suffix: "?v=0.0.1",
toolbar_drawer: "sliding", plugins,
toolbar_mode: "sliding", toolbar,
height: 400, toolbar_drawer: "sliding",
// fontsize_formats: "8pt 10pt 12pt 14pt 18pt 24pt 36pt", toolbar_mode: "sliding",
branding: false, height: 400,
object_resizing: false, // fontsize_formats: "8pt 10pt 12pt 14pt 18pt 24pt 36pt",
end_container_on_empty_block: true, branding: false,
powerpaste_word_import: "clean", object_resizing: false,
// code_dialog_height: 450, end_container_on_empty_block: true,
// code_dialog_width: 1000, powerpaste_word_import: "clean",
// autoresize_max_height: 450, // // code_dialog_height: 450,
// autoresize_min_height: 350, // // code_dialog_width: 1000,
advlist_bullet_styles: "square", // autoresize_max_height: 450, //
advlist_number_styles: "default", // autoresize_min_height: 350, //
default_link_target: "_blank", advlist_bullet_styles: "square",
link_title: false, advlist_number_styles: "default",
statusbar: false, default_link_target: "_blank",
nonbreaking_force_tab: true, link_title: false,
// images_upload_url: uploadUrl, statusbar: false,
images_upload_handler: function (blobInfo, succFun, failFun) { nonbreaking_force_tab: true,
var xhr, formData; // 便
var file = blobInfo.blob(); // file convert_urls: false,
xhr = new XMLHttpRequest(); // images_upload_url: uploadUrl,
xhr.withCredentials = false; images_upload_handler: function (blobInfo, succFun, failFun) {
xhr.open("POST", uploadUrl); var xhr, formData;
xhr.setRequestHeader("token", token); var file = blobInfo.blob(); // file
xhr.onload = function () { xhr = new XMLHttpRequest();
var json; xhr.withCredentials = false;
if (xhr.status != 200) { xhr.open("POST", uploadUrl);
failFun("HTTP Error: " + xhr.status); xhr.setRequestHeader("token", token);
return; xhr.onload = function () {
} var json;
json = JSON.parse(xhr.responseText); if (xhr.status != 200) {
if (!json || typeof json.data.url != "string") { failFun("HTTP Error: " + xhr.status);
failFun("Invalid JSON: " + xhr.responseText); return;
return; }
} json = JSON.parse(xhr.responseText);
if (!json || typeof json.data.url != "string") {
failFun("Invalid JSON: " + xhr.responseText);
return;
}
succFun(json.data.url); succFun(json.data.url);
}; };
formData = new FormData(); formData = new FormData();
formData.append("file", file, file.name); // formData.append("file", file, file.name); //
// formData.append('customerId', '111') // formData.append('customerId', '111')
xhr.send(formData); xhr.send(formData);
}, },
}; };
conf = Object.assign(conf, this.$attrs); conf = Object.assign(conf, this.$attrs);
conf.init_instance_callback = (editor) => { conf.init_instance_callback = (editor) => {
if (this.value) editor.setContent(this.value); if (this.value) editor.setContent(this.value);
this.vModel(editor); this.vModel(editor);
}; };
tinymce.init(conf); tinymce.init(conf);
}); });
}, },
destroyed() { destroyed() {
this.destroyTinymce(); this.destroyTinymce();
}, },
methods: { methods: {
vModel(editor) { vModel(editor) {
// setContent // setContent
const debounceSetContent = debounce(250, editor.setContent); const debounceSetContent = debounce(250, editor.setContent);
this.$watch("value", (val, prevVal) => { this.$watch("value", (val, prevVal) => {
if (editor && val !== prevVal && val !== editor.getContent()) { if (editor && val !== prevVal && val !== editor.getContent()) {
if (typeof val !== "string") val = val.toString(); if (typeof val !== "string") val = val.toString();
debounceSetContent.call(editor, val); debounceSetContent.call(editor, val);
} }
}); });
editor.on("change keyup undo redo", () => { editor.on("change keyup undo redo", () => {
this.$emit("input", editor.getContent()); this.$emit("input", editor.getContent());
}); });
editor.on("blur", () => { editor.on("blur", () => {
this.$emit("blur"); this.$emit("blur");
}); });
console.log('init_instance_callback1111111111') console.log("init_instance_callback1111111111");
}, },
getUserToken() { getUserToken() {
let token = localStorage.getItem("token"); let token = localStorage.getItem("token");
// console.log('token', token) // console.log('token', token)
// return this.$store.getters['user/isLogin'] // return this.$store.getters['user/isLogin']
return token; return token;
}, },
destroyTinymce() { destroyTinymce() {
if (!window.tinymce) return; if (!window.tinymce) return;
const tinymce = window.tinymce.get(this.tinymceId); const tinymce = window.tinymce.get(this.tinymceId);
if (tinymce) { if (tinymce) {
tinymce.destroy(); tinymce.destroy();
} }
}, },
}, },
}; };
</script> </script>

2
src/views/components/tinymce2/index.vue

@ -113,6 +113,8 @@ export default {
default_link_target: "_blank", default_link_target: "_blank",
link_title: false, link_title: false,
nonbreaking_force_tab: true, nonbreaking_force_tab: true,
// 便
convert_urls: false,
// //
images_upload_handler: function (blobInfo, succFun, failFun) { images_upload_handler: function (blobInfo, succFun, failFun) {
var xhr, formData; var xhr, formData;

Loading…
Cancel
Save