feat: 添加环境变量示例,更新样式和依赖,增强全局状态管理
This commit is contained in:
51
stores/state.ts
Normal file
51
stores/state.ts
Normal file
@ -0,0 +1,51 @@
|
||||
import type { LocalMessage, VisitorRole } from "~/types";
|
||||
|
||||
export const useGState = defineStore("global_state", () => {
|
||||
const currentRole = ref<VisitorRole>("stu");
|
||||
const botName = computed(() => {
|
||||
switch (currentRole.value) {
|
||||
case "stu":
|
||||
return "AI 辅导员";
|
||||
case "tea":
|
||||
return "AI 教研专家";
|
||||
case "fans":
|
||||
return "校园百事通";
|
||||
default:
|
||||
return "AI 智慧校园";
|
||||
}
|
||||
});
|
||||
|
||||
const setCurrentRole = (role: VisitorRole) => {
|
||||
currentRole.value = role;
|
||||
};
|
||||
|
||||
const messagesByRole = ref<Record<VisitorRole, LocalMessage[]>>({
|
||||
stu: [],
|
||||
tea: [],
|
||||
fans: [],
|
||||
});
|
||||
const messages = computed({
|
||||
get: () => messagesByRole.value[currentRole.value],
|
||||
set: (value: LocalMessage[]) => {
|
||||
messagesByRole.value[currentRole.value] = value;
|
||||
},
|
||||
});
|
||||
|
||||
const insertOrUpdateMessage = (message: LocalMessage) => {
|
||||
const index = messages.value.findIndex((m) => m.id === message.id);
|
||||
if (index >= 0) {
|
||||
messages.value.splice(index, 1, message);
|
||||
} else {
|
||||
messages.value.push(message);
|
||||
}
|
||||
};
|
||||
|
||||
return {
|
||||
currentRole,
|
||||
botName,
|
||||
setCurrentRole,
|
||||
messagesByRole,
|
||||
messages,
|
||||
insertOrUpdateMessage,
|
||||
};
|
||||
});
|
Reference in New Issue
Block a user