增加网站管理功能

This commit is contained in:
2026-09-17 23:00:06 +08:00
parent 1224735aa8
commit 67e819c629
98 changed files with 8711 additions and 2254 deletions
+61
View File
@@ -0,0 +1,61 @@
/**
* 官网管理上传辅助(platform/src/views/website 专用)
*
* 官网管理各页面(文章封面 / 分类图片 / Logo / 友情链接 Logo / 富文本正文图片)
* 上传的文件统一归入「文件管理」的「官网素材」分组,便于在
* /system/fileManager 中集中查找与复用。
*
* 分组按名称查找,不存在时补建 —— 与 platform/softwareupgrade 的
* appsupgrade 分组使用同一套做法;该默认分组同时由
* go/docs/sql/init_platform_website_file_cate.sql 预置。
*/
import { getUserCate, createFileCate, uploadFile } from "@/api/file";
export const WEBSITE_MATERIAL_CATE_NAME = "官网素材";
// 分组ID缓存(同一会话内只解析一次,并发调用复用同一个 Promise)
let cateIdPromise = null;
/**
* 取「官网素材」分组ID。
* 查询/创建任一环节失败时返回 0(未分类),不阻断上传本身。
* @returns {Promise<number>}
*/
export function ensureWebsiteMaterialCate() {
if (!cateIdPromise) {
cateIdPromise = (async () => {
try {
const res = await getUserCate();
if (res?.code === 200 && Array.isArray(res.data)) {
const found = res.data.find(
(item) => String(item.name || "").trim() === WEBSITE_MATERIAL_CATE_NAME
);
if (found?.id) {
return Number(found.id);
}
}
const created = await createFileCate({ name: WEBSITE_MATERIAL_CATE_NAME });
if (created?.code === 200 && created.data?.id != null) {
return Number(created.data.id);
}
} catch (e) {
console.error("解析「官网素材」文件分组失败:", e);
}
return 0;
})();
}
return cateIdPromise;
}
/**
* 上传文件到「官网素材」分组
* @param {File} file 待上传文件
* @returns {Promise} 与 uploadFile 返回值一致(code 200 新上传 / 201 已存在)
*/
export async function uploadToWebsiteMaterial(file) {
const cate = await ensureWebsiteMaterialCate();
const formData = new FormData();
formData.append("file", file);
return uploadFile(formData, { cate });
}