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