# Conflicts:
#	Front/vue-unilife/src/routers/routers.ts
main
勿妄 5 days ago
commit 2f52a66c74

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

@ -9,6 +9,7 @@
<template>
<header class ="header-bar" >
<!-- 左侧图标组 -->
<img src = "@/assets/images/logo.png" alt="Logo" class="logo" />
<div class="left-icons">
<router-link to="/unilifeHome" class="icon-btn" title="首页">
<el-icon class="icon-btn" :size="24">
@ -20,12 +21,12 @@
<MessageBox />
</el-icon>
</router-link>
<router-link to="/self" class="icon-btn" title="日程">
<router-link to="/personal/curriculum" class="icon-btn" title="日程">
<el-icon class = "icon-btn" :size="24">
<Calendar />
</el-icon>
</router-link>
<router-link to="/assistant" class="icon-btn" title="AI助手">
<router-link to="/personal/ai" class="icon-btn" title="AI助手">
<el-icon class = "icon-btn" :size="24">
<Cpu />
</el-icon>
@ -45,6 +46,11 @@
<User />
</el-icon>
</router-link>
<router-link to="/register" class="icon-btn" title="注册">
<el-icon class = "icon-btn" :size="24">
<Message/>
</el-icon>
</router-link>
</div>
</header>
</template>
@ -75,10 +81,14 @@
.left-icons,
.right-section {
flex:7;
padding:50px;
display: flex;
align-items: center;
}
.right-section{
justify-content: flex-end;
}
.icon-btn {
margin: 0 10px;
@ -98,4 +108,14 @@
color: #303133;
cursor: pointer;
}
.logo
{
flex:1;
width: 120px;
height: 120px;
margin-left: 20px;
border-radius: 50%;
object-fit: cover;
}
</style>

@ -38,7 +38,7 @@ async function renderMarkdown() {
watch(() => props.content, renderMarkdown, { immediate: true })
</script>
<style scoped>
<style>
.markdown-body {
font-size: 16px;
line-height: 1.8;

@ -69,14 +69,14 @@ export default defineComponent({
<div class="text">测试样例3</div>
</router-link>
</li>
<li :class="{active:route.name === 'AiManager'}" @click="setActive(4)">
<router-link :to="{name:'Manager'}">
<li :class="{active:route.name === 'AIManager'}" @click="setActive(4)">
<router-link :to="{name:'AIManager'}">
<div class="icon">
<div class="imageBox">
<img src="@/assets/images/个人.png">
</div>
</div>
<div class="text">测试样例4</div>
<div class="text">AI助手</div>
</router-link>
</li>
</ul>

@ -6,7 +6,7 @@
<!-- 主容器 -->
<div class="main-container">
<!-- 侧边栏 -->
<aside class="sidebar">
<aside class="sidebar card">
<h2 class="sidebar-title">历史对话</h2>
<ul class="history-list">
<li class="history-item"
@ -31,7 +31,7 @@
</aside>
<!-- 聊天区域 -->
<main class="chat-area">
<main class="chat-area card">
<div class="chat-content">
<!-- 欢迎消息始终显示在最上方 -->
<div class="welcome-message">

@ -81,7 +81,7 @@ onMounted(() => {
gap:16px;
.sidebar{
flex:2;
width:15%;
position:sticky;
height: fit-content;
border-radius: 8px;
@ -90,13 +90,13 @@ onMounted(() => {
}
.content{
flex: 8;
width: 60%;
padding: 16px;
border-radius: 8px;
}
.author-info{
flex:3;
width: 20%;
position:sticky;
flex-shrink:0;
height:fit-content;

@ -3,7 +3,9 @@
<div class="post-editor">
<!-- 顶部工具栏 -->
<div class="toolbar">
<router-link to = '/personal'>
<el-button :icon="ArrowLeft" circle></el-button>
</router-link>
<el-select v-model="selectedCategory" placeholder="选择分区" class="category-select" size="large">
<el-option
v-for="item in categories"
@ -40,7 +42,6 @@
<el-icon size = 30px v-else><Plus/></el-icon>
</el-upload>
<template #footer>
<button class = "btn btn-primary" @click="uploadPictureDialog = false,previewUrl = ''">取消</button>
<button class = "btn btn-primary" @click="uploadPictureDialog = false ,previewUrl = ''">确定</button>
</template>
</el-dialog>
@ -70,10 +71,7 @@
<!-- 右侧Markdown预览框 -->
<div class="preview-pane card">
<div class="editor-title">{{ title || '请输入文章标题' }}</div>
<div
class="markdown-preview"
v-html="DOMPurify.sanitize(compiledMarkdown)"
></div>
<MarkdownRender :content="markdownText" />
</div>
</div>
@ -88,6 +86,8 @@ import type { UploadFile } from 'element-plus'
import { markedHighlight } from 'marked-highlight'
import 'highlight.js/styles/github.css'
import { ArrowLeft, Document, Picture, ArrowRight } from '@element-plus/icons-vue'
import MarkdownRender from '@/components/MarkdownRender.vue'
import { useRoute } from 'vue-router'
import DOMPurify from 'dompurify'
const title = ref('')
@ -251,14 +251,15 @@ function insertAtCursor(text: string) {
display: flex;
flex-direction:row;
justify-content: space-between;
align-items: flex-start;
gap: 16px;
margin-top:20px;
min-height: 100%;
.editor-pane,
.preview-pane {
min-height:93%;
width:50%;
height:auto;
padding: 16px;
background: #fff;
border-radius: 8px;
@ -275,17 +276,11 @@ function insertAtCursor(text: string) {
.markdown-input {
font-size:20px;
width: 100%;
::v-deep(.el-textarea__inner) {
border:none !important;
box-shadow:none !important;
}
}
.markdown-preview {
padding-top: 10px;
img {
max-width: 50%;
height: auto;
display: block;
margin: 0.5rem 0;
}
}
}
}
</style>

Loading…
Cancel
Save