增加网站管理功能
This commit is contained in:
@@ -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 });
|
||||
}
|
||||
Reference in New Issue
Block a user