fix: 上传200MB限制、备案信息、超级管理员仅首注、文件管理菜单
Made-with: Cursor
This commit is contained in:
@@ -9,10 +9,19 @@
|
||||
text-color="#bfcbd9"
|
||||
active-text-color="#409EFF"
|
||||
>
|
||||
<el-menu-item v-for="item in menuItems" :key="item.index" :index="item.index">
|
||||
<el-icon><component :is="item.icon" /></el-icon>
|
||||
<span>{{ item.title }}</span>
|
||||
</el-menu-item>
|
||||
<template v-for="item in menuItems" :key="item.index">
|
||||
<el-menu-item v-if="!item.children" :index="item.index">
|
||||
<el-icon><component :is="item.icon" /></el-icon>
|
||||
<span>{{ item.title }}</span>
|
||||
</el-menu-item>
|
||||
<el-sub-menu v-else :index="item.index">
|
||||
<template #title>
|
||||
<el-icon><component :is="item.icon" /></el-icon>
|
||||
<span>{{ item.title }}</span>
|
||||
</template>
|
||||
<el-menu-item v-for="sub in item.children" :key="sub.index" :index="sub.index">{{ sub.title }}</el-menu-item>
|
||||
</el-sub-menu>
|
||||
</template>
|
||||
</el-menu>
|
||||
</el-aside>
|
||||
<el-container>
|
||||
@@ -26,6 +35,7 @@
|
||||
<el-main class="main">
|
||||
<router-view />
|
||||
</el-main>
|
||||
<footer class="layout-footer">成都宇惠达智能科技有限公司 <a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">蜀ICP备2025134957号-1</a></footer>
|
||||
</el-container>
|
||||
</el-container>
|
||||
</template>
|
||||
@@ -61,10 +71,25 @@ const menuItems = computed(() => {
|
||||
{ index: '/sites', title: '站点管理', icon: Monitor, permission: 'site:manage' },
|
||||
{ index: '/pages', title: '网页管理', icon: Document, permission: 'page:manage' },
|
||||
{ index: '/homepage-edit', title: '首页编辑', icon: EditPen, permission: 'homepage:edit' },
|
||||
{ index: '/module-upload', title: '功能模块上传', icon: Upload, permission: 'module:upload' },
|
||||
{
|
||||
index: 'files',
|
||||
title: '文件管理',
|
||||
icon: Folder,
|
||||
permission: null,
|
||||
children: [
|
||||
{ index: '/files/images', title: '图片管理(含图标)', permission: null },
|
||||
{ index: '/module-upload', title: '功能模块上传', permission: 'module:upload' }
|
||||
]
|
||||
},
|
||||
{ index: '/role-permissions', title: '角色权限管理', icon: Key, permission: 'role:permission' }
|
||||
]
|
||||
return all.filter((item) => hasPermission(item.permission))
|
||||
return all.filter((item) => {
|
||||
if (item.children) {
|
||||
item.children = item.children.filter((sub) => hasPermission(sub.permission))
|
||||
return hasPermission(item.permission) && item.children.length > 0
|
||||
}
|
||||
return hasPermission(item.permission)
|
||||
})
|
||||
})
|
||||
|
||||
const handleLogout = () => {
|
||||
@@ -109,4 +134,13 @@ const handleLogout = () => {
|
||||
background: #f0f2f5;
|
||||
padding: 20px;
|
||||
}
|
||||
.layout-footer {
|
||||
padding: 8px 20px;
|
||||
font-size: 12px;
|
||||
color: #999;
|
||||
text-align: center;
|
||||
border-top: 1px solid #eee;
|
||||
}
|
||||
.layout-footer a { color: #999; text-decoration: none; }
|
||||
.layout-footer a:hover { text-decoration: underline; }
|
||||
</style>
|
||||
|
||||
@@ -66,6 +66,12 @@ const routes = [
|
||||
component: () => import('../views/sites/HomepageEdit.vue'),
|
||||
meta: { title: '首页编辑', permission: 'homepage:edit' }
|
||||
},
|
||||
{
|
||||
path: 'files/images',
|
||||
name: 'FileImages',
|
||||
component: () => import('../views/files/FileImages.vue'),
|
||||
meta: { title: '图片管理', permission: null }
|
||||
},
|
||||
{
|
||||
path: 'module-upload',
|
||||
name: 'ModuleUpload',
|
||||
|
||||
23
admin/src/views/files/FileImages.vue
Normal file
23
admin/src/views/files/FileImages.vue
Normal file
@@ -0,0 +1,23 @@
|
||||
<!--
|
||||
文件管理:可自定义功能子模块,默认包含「图片管理」「图标管理」(图标归在图片管理下)。
|
||||
文件支持:可下载 / 不可下载。
|
||||
超级管理员:仅一个,默认取第一个注册用户。
|
||||
-->
|
||||
<template>
|
||||
<div class="file-images">
|
||||
<el-card>
|
||||
<template #header>
|
||||
<span>图片管理</span>
|
||||
<el-tag size="small" style="margin-left:8px">含图标</el-tag>
|
||||
</template>
|
||||
<p class="tip">图片与图标统一在此管理,支持可下载/不可下载。功能开发中。</p>
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.file-images .tip { color: #666; font-size: 14px; }
|
||||
</style>
|
||||
@@ -4,6 +4,7 @@ server {
|
||||
listen 443 ssl http2;
|
||||
listen [::]:443 ssl http2;
|
||||
server_name yuheng.yuxindazhineng.com;
|
||||
client_max_body_size 200m;
|
||||
|
||||
ssl_certificate /etc/ssl/yh_web/yuheng.yuxindazhineng.com/fullchain.pem;
|
||||
ssl_certificate_key /etc/ssl/yh_web/yuheng.yuxindazhineng.com/privkey.pem;
|
||||
|
||||
@@ -179,12 +179,21 @@ func Register(c *gin.Context) {
|
||||
}
|
||||
}
|
||||
|
||||
// 超级管理员仅一个:第一个注册用户为超级管理员,后续均为普通用户
|
||||
count, _ := coll.CountDocuments(ctx, bson.M{})
|
||||
roleID := models.RoleIDUser
|
||||
role := "user"
|
||||
if count == 0 {
|
||||
roleID = models.RoleIDSuperAdmin
|
||||
role = "admin"
|
||||
}
|
||||
|
||||
doc := bson.M{
|
||||
"username": username,
|
||||
"mobile": input.Mobile,
|
||||
"password": utils.HashPassword(input.Password),
|
||||
"role": "admin",
|
||||
"role_id": models.RoleIDSuperAdmin,
|
||||
"role": role,
|
||||
"role_id": roleID,
|
||||
}
|
||||
if input.Email != "" {
|
||||
doc["email"] = input.Email
|
||||
|
||||
@@ -79,6 +79,7 @@ func main() {
|
||||
}
|
||||
|
||||
r := gin.Default()
|
||||
r.MaxMultipartMemory = 200 << 20 // 200MB,与 Nginx client_max_body_size 一致,避免上传 413
|
||||
r.Use(middleware.ErrorLogger())
|
||||
|
||||
// CORS(ALLOWED_ORIGINS 为空则允许所有来源;否则仅允许配置的域名)
|
||||
|
||||
@@ -22,6 +22,9 @@ RUN printf '%s\n' \
|
||||
' alias /verify-root/$1;' \
|
||||
' }' \
|
||||
'' \
|
||||
' location = / {' \
|
||||
' try_files /index.html =404;' \
|
||||
' }' \
|
||||
' location / {' \
|
||||
' try_files $uri $uri/ /index.html;' \
|
||||
' }' \
|
||||
|
||||
@@ -48,7 +48,10 @@
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<footer><p>{{ data.footer_text || '© 2024 YUHENG ONE // STELLAR EXPLORATION INITIATIVE' }}</p></footer>
|
||||
<footer>
|
||||
<p>{{ data.footer_text || '© 2024 YUHENG ONE // STELLAR EXPLORATION INITIATIVE' }}</p>
|
||||
<p class="beian">成都宇惠达智能科技有限公司 <a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">蜀ICP备2025134957号-1</a></p>
|
||||
</footer>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -360,6 +363,9 @@ onUnmounted(() => {
|
||||
margin-top: 80px; position: relative; z-index: 10;
|
||||
}
|
||||
.landing footer p { color: rgba(255,255,255,0.3); font-size: 12px; font-family: 'Exo 2', sans-serif; letter-spacing: 2px; }
|
||||
.landing footer .beian { margin-top: 8px; }
|
||||
.landing footer .beian a { color: rgba(255,255,255,0.4); text-decoration: none; }
|
||||
.landing footer .beian a:hover { text-decoration: underline; }
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.navbar { padding: 15px 20px; }
|
||||
|
||||
Reference in New Issue
Block a user