添加基地概况,科学研究页面

This commit is contained in:
2025-10-24 11:52:18 +08:00
parent 3e023ed937
commit 294c9ccf4c
16 changed files with 1138 additions and 464 deletions

View File

@@ -51,6 +51,10 @@
<el-icon><Memo /></el-icon>
<template #title>发布文章</template>
</el-menu-item>
<el-menu-item index="/baseoverview">
<el-icon><Memo /></el-icon>
<template #title>编辑基地概况</template>
</el-menu-item>
</el-menu>
</el-aside>

View File

@@ -9,6 +9,7 @@ const NewsView = () => import('../views/news/NewsView.vue')
const PublishView = () => import('../views/publish/PublishView.vue')
const CommunityView = () => import('../views/community/CommunityView.vue')
const ResourceView = () => import('../views/resource/ResourceView.vue')
const BaseOverview = ()=> import('../views/baseoverview/BaseOverView.vue')
// 定义路由规则(现在 RouteRecordRaw 导入正确)
const routes: RouteRecordRaw[] = [
@@ -74,6 +75,16 @@ const routes: RouteRecordRaw[] = [
meta: {
title: '关于我们'
}
},
{
path: '/baseoverview',
name: 'baseoverview',
component: BaseOverview,
meta: {
title: '编辑基地概况',
requiresAuth: false
}
}
]

View File

@@ -0,0 +1,242 @@
<template>
<div class="base-overview-admin">
<!-- 页面标题 -->
<el-card class="page-header-card">
<h1 class="page-title">基地概况管理</h1>
</el-card>
<!-- 标签页切换 -->
<el-tabs v-model="activeTab" type="card" class="mt-4">
<el-tab-pane label="基地简介" name="introduction">
<el-card class="mt-2">
<el-form ref="introductionForm" :model="formData" label-width="120px">
<el-form-item label="简介内容">
<el-input
type="textarea"
v-model="formData.introduction"
rows="10"
placeholder="请输入基地简介内容"
clearable
resize="vertical"
/>
</el-form-item>
</el-form>
</el-card>
</el-tab-pane>
<el-tab-pane label="基地成员" name="members">
<el-card class="mt-2">
<el-form ref="membersForm" :model="formData" label-width="120px">
<el-form-item label="主任">
<el-input v-model="formData.director" placeholder="请输入主任姓名" clearable />
</el-form-item>
<el-form-item label="副主任">
<el-input v-model="formData.deputyDirector" placeholder="请输入副主任姓名" clearable />
</el-form-item>
<el-form-item label="研究人员">
<el-input v-model="formData.researchers" placeholder="请输入研究人员(逗号分隔)" clearable />
</el-form-item>
</el-form>
</el-card>
</el-tab-pane>
<el-tab-pane label="规章制度" name="regulations">
<el-card class="mt-2">
<el-form ref="regulationsForm" :model="formData" label-width="120px">
<el-form-item label="制度内容">
<el-input
type="textarea"
v-model="formData.regulations"
rows="10"
placeholder="请输入规章制度内容"
clearable
resize="vertical"
/>
</el-form-item>
</el-form>
</el-card>
</el-tab-pane>
<el-tab-pane label="联系我们" name="contact">
<el-card class="mt-2">
<el-form ref="contactForm" :model="formData" label-width="120px">
<el-form-item label="地址">
<el-input v-model="formData.address" placeholder="请输入地址" clearable />
</el-form-item>
<el-form-item label="电话">
<el-input v-model="formData.phone" placeholder="请输入电话" clearable />
</el-form-item>
<el-form-item label="邮箱">
<el-input v-model="formData.email" placeholder="请输入邮箱" clearable />
</el-form-item>
<el-form-item label="网站">
<el-input v-model="formData.website" placeholder="请输入网站地址" clearable />
</el-form-item>
</el-form>
</el-card>
</el-tab-pane>
</el-tabs>
<!-- 操作按钮 -->
<div class="action-buttons mt-4">
<el-button type="primary" @click="saveAll">保存全部</el-button>
<el-button @click="saveCurrent">保存当前标签</el-button>
<el-button type="info" @click="outputIntroduction">输出简介内容</el-button>
<el-button @click="resetAll">重置全部</el-button>
<el-button @click="resetCurrent">重置当前标签</el-button>
</div>
</div>
</template>
<script lang="ts" setup>
import { ref, reactive } from 'vue';
import { ElMessage } from 'element-plus';
// 激活的标签页(默认显示基地简介)
const activeTab = ref('introduction');
// 统一管理表单数据(与数据库字段对应)
const formData = reactive({
introduction: '探索健康设计的新路径,引领知识创新的新范式...',
director: '张三',
deputyDirector: '李四',
researchers: '王五,赵六,孙七',
regulations: '1. 科研项目管理办法...',
address: '湖北省武汉市江夏区阳光大道1号',
phone: '027-87186XXX',
email: 'hldrcenter@wtu.edu.cn',
website: 'http://www.wtu.edu.cn/hldrcenter',
});
// 保存全部内容(打印原始数据 + Markdown格式
const saveAll = () => {
// 1. 打印可直接存入数据库的原始数据(保留所有格式)
console.log('【数据库存储格式】基地概况完整原始数据:');
console.log('='.repeat(50));
console.log(formData); // 直接打印对象,保留原始文本格式
console.log('\n【原始文本详情】');
Object.entries(formData).forEach(([key, value]) => {
console.log(`- ${key}`);
console.log(value); // 单独打印每个字段的原始文本
console.log('---');
});
// 2. 构建Markdown格式内容仅用于展示不影响原始数据
const mdContent = `# 基地概况\n\n` +
`## 基地简介\n${formData.introduction}\n\n` + // 不做格式化,直接使用原始文本
`## 基地成员\n` +
`- 主任:${formData.director}\n` +
`- 副主任:${formData.deputyDirector}\n` +
`- 研究人员:${formData.researchers}\n\n` +
`## 规章制度\n${formData.regulations}\n\n` + // 不做格式化
`## 联系我们\n` +
`- 地址:${formData.address}\n` +
`- 电话:${formData.phone}\n` +
`- 邮箱:${formData.email}\n` +
`- 网站:${formData.website}`;
console.log('\n\n【Markdown格式】基地概况内容\n');
console.log(mdContent);
ElMessage.success('全部内容保存成功已在控制台输出原始数据和Markdown格式内容');
};
// 单独输出基地简介(仅打印原始文本)
const outputIntroduction = () => {
console.log('【数据库存储格式】基地简介原始内容:');
console.log('='.repeat(50));
console.log('原始文本(可直接存入数据库):');
console.log(formData.introduction); // 直接打印原始文本,保留所有换行和格式
// 可选:同时打印带换行符标记的文本,方便查看换行位置
console.log('\n\n带换行符标记的文本便于调试');
console.log(formData.introduction.replace(/\n/g, '\\n'));
// Markdown格式仍使用原始文本
const introMd = `# 基地简介\n\n${formData.introduction}`;
console.log('\n\n【Markdown格式】基地简介内容\n');
console.log(introMd);
ElMessage.success('基地简介内容已在控制台输出');
};
// 保存当前标签页内容(打印原始数据)
const saveCurrent = () => {
const currentKey = activeTab.value as keyof typeof formData;
const currentValue = formData[currentKey];
console.log(`【数据库存储格式】当前标签(${activeTab.value})原始内容:`);
console.log('='.repeat(50));
console.log('字段名:', currentKey);
console.log('原始文本:');
console.log(currentValue); // 直接打印原始文本
console.log('\n带换行符标记的文本');
console.log(currentValue.replace(/\n/g, '\\n')); // 便于调试换行位置
ElMessage.success(`当前标签(${activeTab.value})内容保存成功,已在控制台输出原始数据`);
};
// 重置全部内容到初始值
const resetAll = () => {
Object.assign(formData, {
introduction: '探索健康设计的新路径,引领知识创新的新范式...',
director: '张三',
deputyDirector: '李四',
researchers: '王五,赵六,孙七',
regulations: '1. 科研项目管理办法...',
address: '湖北省武汉市江夏区阳光大道1号',
phone: '027-87186XXX',
email: 'hldrcenter@wtu.edu.cn',
website: 'http://www.wtu.edu.cn/hldrcenter',
});
ElMessage.info('全部内容已重置!');
};
// 重置当前标签页内容到初始值
const resetCurrent = () => {
const initialValues = {
introduction: '探索健康设计的新路径,引领知识创新的新范式...',
director: '张三',
deputyDirector: '李四',
researchers: '王五,赵六,孙七',
regulations: '1. 科研项目管理办法...',
address: '湖北省武汉市江夏区阳光大道1号',
phone: '027-87186XXX',
email: 'hldrcenter@wtu.edu.cn',
website: 'http://www.wtu.edu.cn/hldrcenter',
};
formData[activeTab.value as keyof typeof initialValues] = initialValues[activeTab.value as keyof typeof initialValues];
ElMessage.info('当前标签内容已重置!');
};
</script>
<style scoped>
.base-overview-admin {
max-width: 1200px;
margin: 0 auto;
padding: 20px;
}
.page-header-card {
margin-bottom: 20px;
}
.page-title {
font-size: 24px;
font-weight: 600;
margin: 0;
}
.action-buttons {
display: flex;
gap: 10px;
flex-wrap: wrap; /* 适配小屏幕换行 */
}
:deep(.el-textarea__inner) {
min-height: 200px;
resize: vertical;
}
</style>