Files
PC-Light-Forum/edit.html
DESKTOP-RQ919RC\Pc 0960a310aa feat(editor): 添加预加载动画和编辑器功能优化
- 新增预加载动画组件及样式
- 优化编辑器图片和视频上传处理逻辑
- 修复编辑器内容转换和格式处理问题
- 添加上传进度显示功能
- 改进编辑器工具栏图标和布局
2025-11-28 18:06:40 +08:00

127 lines
6.5 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>发布帖子 - 轻论坛</title>
<link rel="stylesheet" href="./css/public.css" />
<link rel="stylesheet" href="./css/edit.css" />
<link href="./css/editor.css" rel="stylesheet" />
<script src="./js/vue.global.js"></script>
<style>
[v-cloak] {
display: none;
}
</style>
<script src="./js/editor.js"></script>
</head>
<body>
<div class="container" id="edit" v-cloak>
<div class="valueA" ref="valueA" style="display: none;">{@}</div>
<div class="edit-head flexacenter">
<div class="edit-head-container flexacenter">
<a class="" href="/" target="_blank">
<img class="icon" src="{@/img/edit-logo-icon.png}" />
</a>
<div class="dot"></div>
<div class="title">发帖</div>
<div class="hint">发帖奖励 3 个寄托币/篇每天最高奖励3篇</div>
<div class="flex1"></div>
<img v-if="userInfoWin.avatar" class="avatar" :src="userInfoWin.avatar" />
</div>
<!-- <div class="progress-box" v-if="progress != 0 || progress != 100" :style="{ width: progress + '%' }"></div> -->
</div>
<div class="edit-container">
<!-- 标题输入 -->
<div class="title-box">
<input class="title-input" type="title" placeholder="输入标题(非必填)" v-model="info.title" :maxlength="titleLength" />
<div class="sum">{{ info?.title?.length ? titleLength - info?.title?.length : titleLength }}</div>
</div>
<div id="editor—wrapper" class="editor—wrapper">
<!-- 工具栏 -->
<div ref="toolbarRef" id="toolbar-container" class="editor-toolbar flexacenter">
<!-- <div class="toolbar-item flexacenter h2" :class="{'pitch': isPTitle}" @click="paragraphTitle">
<img class="icon" src="{@/img/t-icon.png}" alt="段落标题" />
<span>段落标题</span>
</div>
<div class="toolbar-item flexacenter">
<img class="icon" src="{@/img/img-icon.png}" alt="图片" />
<span>图片</span>
<input class="file" type="file" @change="insertImage" accept=".png, .jpg, .jpeg" />
</div>
<div class="toolbar-item flexacenter">
<img class="icon" src="{@/img/video-icon.png}" alt="视频" />
<span>视频</span>
<input class="file" type="file" @change="insertVideo" accept=".mp4, .avi, .mov" />
</div>
<div class="toolbar-item flexacenter expression" :class="{'pitch': emojiState}" @click="openEmoji">
<img class="icon" src="{@/img/smiling-face-round-black.png}" alt="表情" />
<span>表情</span>
<div class="emoji-box-mask" @click.stop="closeEmoji"></div>
<div class="emoji-box">
<div class="emoji-icon" v-for="emoji in optionEmoji" :key="emoji" @click.stop="selectEmoji(emoji)">{{ emoji }}</div>
</div>
</div>
<div class="toolbar-item flexacenter link" :class="{'pitch': linkState}" @click="openLink">
<img class="icon" src="{@/img/link-icon.png}" alt="链接" />
<span>链接</span>
<div class="link-box-mask" @click.stop="closeLink"></div>
<div class="link-box flexflex" @click.stop="linkClick">
<div class="item flexflex">
<div class="name">请输入链接地址:</div>
<input class="input" type="text" v-model="linkUrl" />
</div>
<div class="item flexflex">
<div class="name">请输入链接文字:</div>
<input class="input" type="text" v-model="linkText" />
</div>
<div class="btn flexcenter" @click.stop="insertLink">OK</div>
</div>
</div>
<div class="toolbar-item flexacenter expression" :class="{'pitch': emojiState}" @click="overstriking">
<img class="icon" src="{@/img/overstriking-icon.png}" alt="加粗" />
<span>加粗</span>
<div class="emoji-box-mask" @click.stop="closeEmoji"></div>
<div class="emoji-box">
<div class="emoji-icon" v-for="emoji in optionEmoji" :key="emoji" @click.stop="selectEmoji(emoji)">{{ emoji }}</div>
</div>
</div> -->
</div>
<div id="editor-container" ref="editorRef"><!-- 编辑器 --></div>
</div>
<!-- 内容编辑区 -->
<!-- <div class="content-input" id="editor" contenteditable="true" :class="{ 'empty': isEmpty }" placeholder="输入正文" ref="editorRef" @input="onEditorInput" @focus="onEditorFocus" @blur="onEditorBlur" v-html="info.content" @click="handleClick"></div> -->
<!-- 操作按钮 -->
<div class="action-buttons flexacenter">
<div class="left-section flexacenter" @click="cutAnonymity">
<img v-if="info.anonymous == 1" class="icon-pitch" src="{@/img/tick-box.svg}" />
<div v-else class="icon"></div>
<div class="text">匿名发布</div>
</div>
<div class="right-section flexcenter">
<div v-if="!uniqid" class="draft-btn flexcenter" @click="submit(0)">
<img class="icon" src="{@/img/draft-icon.png}" />
存草稿
</div>
<div class="publish-btn flexcenter" @click="submit(1)">发表帖子</div>
</div>
</div>
</div>
</div>
<script src="./js/axios.min.js"></script>
<script src="./js/public.js"></script>
<script type="module" src="./js/edit.js"></script>
</body>
</html>