// 简单版本的论坛编辑器,确保图片插入功能正常
const { createApp, ref, computed, onMounted, nextTick } = Vue;
import { headTop } from "../component/head-top/head-top.js";
const editApp = createApp({
setup() {
let titleLength = ref(200);
onMounted(() => {
getUserInfoWin();
cUpload();
init();
});
let isLogin = ref(true);
let realname = ref(1); // 是否已经实名
let userInfoWin = ref({
authority: ["comment.edit", "comment.delete", "offercollege.hide", "offersummary.hide", "mj.hide", "topic:manager", "topic:hide"],
avatar: "https://nas.gter.net:9008/avatar/97K4EWIMLrsbGTWXslC2WFVSEKWOikN42jDKLNjtax7HL4xtfMOJSdU9oWFhY2E~/middle?random=1761733169",
groupid: 3,
nickname: "肖荣豪",
realname: 1,
token: "01346a38444d71aaadb3adad52b52c39",
uid: 500144,
uin: 4238049,
});
let permissions = ref([]);
const getUserInfoWin = () => {
const checkUser = () => {
const user = window.userInfoWin;
if (!user) return;
document.removeEventListener("getUser", checkUser);
realname.value = user.realname;
userInfoWin.value = user;
if (user?.uin > 0 || user?.uid > 0) isLogin.value = true;
permissions.value = user?.authority || [];
};
document.addEventListener("getUser", checkUser);
};
const openAttest = () => {
const handleAttestClose = () => {
document.removeEventListener("closeAttest", handleAttestClose);
realname.value = window.userInfoWin?.realname || 0;
};
// 启动认证流程时添加监听
document.addEventListener("closeAttest", handleAttestClose);
loadAttest(2);
};
// 跳转登录
const goLogin = () => {
if (typeof window === "undefined") return;
if (window["userInfoWin"] && Object.keys(window["userInfoWin"]).length !== 0) {
if (window["userInfoWin"]["uid"]) isLogin.value = true;
else ajax_login();
} else ajax_login();
};
let uConfigData = {};
const cUpload = () => {
ajaxget(`/v2/api/config/upload?type=topic`).then((res) => {
const data = res.data;
uConfigData = data;
});
};
let info = ref({});
let tagList = ref([]);
let token = ref("");
let infoImages = [];
const init = () => {
ajax("/v2/api/forum/postPublishInit")
.then((res) => {
const data = res.data;
if (res.code != 200) {
creationAlertBox(res.message || "操作失败");
return;
}
const infoTarget = data.info || {};
infoImages = infoTarget.attachments?.images || [];
if (infoTarget.content) infoTarget.content = restoreHtml(infoTarget.content, infoImages);
info.value = infoTarget;
tagList.value = data.tagList;
token.value = data.token;
nextTick(() => {
judgeIsEmpty();
});
})
.catch((err) => {
console.log("err", err);
});
};
const restoreHtml = (formattedText, imageList) => {
let html = formattedText;
// 1. 还原换行符为
标签
html = html.replace(/\n/g, "
");
// 2. 还原块级标签的换行标记
html = html.replace(/