diff --git a/portal-ui/src/components/RichTextEditor.vue b/portal-ui/src/components/RichTextEditor.vue
index bb3b59c..7eeb6d9 100644
--- a/portal-ui/src/components/RichTextEditor.vue
+++ b/portal-ui/src/components/RichTextEditor.vue
@@ -50,7 +50,7 @@
+
+
diff --git a/portal-ui/src/layout/components/Menu.vue b/portal-ui/src/layout/components/Menu.vue
index 3591182..a7db5ed 100644
--- a/portal-ui/src/layout/components/Menu.vue
+++ b/portal-ui/src/layout/components/Menu.vue
@@ -50,6 +50,9 @@ import cloneDeep from 'lodash-es/cloneDeep'
import { constantRoutes } from '@/router/index'
import { generateTitle, generateLang } from '@/utils/i18n'
+/** 左侧导航仅显示这些路由(name 与 router/index.js 一致) */
+const SIDEBAR_ONLY_ROUTE_NAMES = ['video-gen']
+
defineProps({
collapsed: Boolean
})
@@ -62,9 +65,14 @@ const $base = inject('$base')
const $message = inject('$message')
const menuItems = computed(() => {
- return constantRoutes
- .find((d) => d.path == '/')
- .children.map((route) => ({
+ const root = constantRoutes.find((d) => d.path === '/')
+ const children = root?.children ?? []
+ return children
+ .filter(
+ (r) =>
+ r.meta?.menuItem !== false && SIDEBAR_ONLY_ROUTE_NAMES.includes(r.name)
+ )
+ .map((route) => ({
key: route.name,
label: generateTitle(route.meta?.title),
meta: route.meta,
diff --git a/portal-ui/src/utils/file.js b/portal-ui/src/utils/file.js
index 73a5f7f..06e4c60 100644
--- a/portal-ui/src/utils/file.js
+++ b/portal-ui/src/utils/file.js
@@ -130,6 +130,23 @@ export const convertBase64ToUrl = (base64) => {
)
}
+/**
+ * 从若依 AjaxResult / 兼容仅返回顶层 url 的上传响应中解析访问地址
+ */
+export const extractUploadUrlFromResponse = (res) => {
+ if (!res) return ''
+ if (typeof res.data === 'string' && res.data.trim()) return res.data.trim()
+ if (res.data && typeof res.data === 'object') {
+ const u = res.data.url || res.data.path
+ if (typeof u === 'string' && u.trim()) return u.trim()
+ }
+ if (typeof res.url === 'string' && res.url.trim()) return res.url.trim()
+ return ''
+}
+
+/** 门户统一腾讯云 COS:后端 FileController `/api/file/upload`,与 mf-image-upload 一致 */
+export const PORTAL_TENCENT_COS_UPLOAD_URL = '/api/file/upload'
+
/**
* 文件上传
* @param {Object} {url, file,name} 文件上传地址 file 文件 name 文件名参数
@@ -148,12 +165,10 @@ export const uploadFile = ({
formData.append(key, data[key])
})
}
+ // 不要手动设置 Content-Type,否则缺少 boundary,服务端无法解析 multipart,文件参数字段为空
return request({
url: url,
method: 'POST',
- data: formData,
- headers: {
- 'Content-Type': 'multipart/form-data'
- }
+ data: formData
})
}
\ No newline at end of file