93 lines
2.3 KiB
JavaScript
93 lines
2.3 KiB
JavaScript
// ⚠ Mock 数据,后续请替换成真实接口。
|
|
import { reactive, watch } from "vue";
|
|
|
|
export const useMockData = () => {
|
|
// 从本地存储读取初始数据,如果没有则使用默认值
|
|
const initialCategories = uni.getStorageSync("mockCategories") || [
|
|
{ id: 101, name: "分类 A", status: 1, sort: 1 },
|
|
{ id: 102, name: "分类 B", status: 1, sort: 2 },
|
|
];
|
|
|
|
const initialArticles = uni.getStorageSync("mockArticles") || [
|
|
{
|
|
id: 1,
|
|
title: "文章 1",
|
|
summary: "摘要 1",
|
|
cover: "",
|
|
categoryId: 101,
|
|
content: "<p>富文本内容 1</p>",
|
|
},
|
|
{
|
|
id: 2,
|
|
title: "文章 2",
|
|
summary: "摘要 2",
|
|
cover: "",
|
|
categoryId: 102,
|
|
content: "<p>富文本内容 2</p>",
|
|
},
|
|
];
|
|
|
|
const mockCategories = reactive(initialCategories);
|
|
const mockArticles = reactive(initialArticles);
|
|
|
|
// 监听数据变化并保存到本地存储
|
|
watch(
|
|
mockCategories,
|
|
(newVal) => {
|
|
uni.setStorageSync("mockCategories", JSON.parse(JSON.stringify(newVal)));
|
|
},
|
|
{ deep: true },
|
|
);
|
|
|
|
watch(
|
|
mockArticles,
|
|
(newVal) => {
|
|
uni.setStorageSync("mockArticles", JSON.parse(JSON.stringify(newVal)));
|
|
},
|
|
{ deep: true },
|
|
);
|
|
|
|
const addCategory = (category) => {
|
|
const newId =
|
|
mockCategories.length > 0
|
|
? Math.max(...mockCategories.map((c) => c.id)) + 1
|
|
: 101;
|
|
mockCategories.push({ ...category, id: newId });
|
|
};
|
|
|
|
const updateCategory = (id, category) => {
|
|
const index = mockCategories.findIndex((c) => c.id === id);
|
|
if (index !== -1) {
|
|
Object.assign(mockCategories[index], category);
|
|
}
|
|
};
|
|
|
|
const addArticle = (article) => {
|
|
const newId =
|
|
mockArticles.length > 0
|
|
? Math.max(...mockArticles.map((a) => a.id)) + 1
|
|
: 1;
|
|
mockArticles.push({ ...article, id: newId });
|
|
};
|
|
|
|
const updateArticle = (id, article) => {
|
|
const index = mockArticles.findIndex((a) => a.id === id);
|
|
if (index !== -1) {
|
|
Object.assign(mockArticles[index], article);
|
|
}
|
|
};
|
|
|
|
return {
|
|
mockCategories,
|
|
mockArticles,
|
|
addCategory,
|
|
updateCategory,
|
|
addArticle,
|
|
updateArticle,
|
|
};
|
|
};
|
|
|
|
// 单例模式,确保全局共享状态
|
|
const mockStore = useMockData();
|
|
export default mockStore;
|