diff --git a/src/service/modular/login/index.js b/src/service/modular/login/index.js
index 88c9787..fd3caa3 100644
--- a/src/service/modular/login/index.js
+++ b/src/service/modular/login/index.js
@@ -4,3 +4,16 @@ import kcRequest from "@/service/request/index.js";
export const adminLogin = (data) => {
return kcRequest.request(`/admin/login`, "post", data, false, "json");
};
+
+
+// 设置管理端主题
+export const setAdminTopic = (data) => {
+ return kcRequest.request(`/admin/topic`, "put", data);
+};
+
+
+
+// 设置医院端主题
+export const setHospitalTopic = (data) => {
+ return kcRequest.request(`/hospital/topic`, "put", data);
+};
diff --git a/src/stores/theme/index.js b/src/stores/theme/index.js
index 4318af6..4f6a240 100644
--- a/src/stores/theme/index.js
+++ b/src/stores/theme/index.js
@@ -5,7 +5,11 @@ import {
normalizeThemeValue,
DEFAULT_THEME,
} from "./buildThemeVars.js";
-
+import { useUserStore } from "@/stores/api/user";
+import {
+ setAdminTopic,
+ setHospitalTopic
+} from '@/service/modular/login/index.js'
const APPLIED_KEYS = Object.keys(buildThemeVars(DEFAULT_THEME));
const applyToRoot = (theme) => {
@@ -22,11 +26,25 @@ export const useThemeStore = defineStore("theme", () => {
normalizeThemeValue(localStorage.getItem("theme") || DEFAULT_THEME),
);
- const setTheme = (theme) => {
+ const setTheme = (theme, inital = false) => {
const next = normalizeThemeValue(theme);
themeValue.value = next;
+ console.log(next);
localStorage.setItem("theme", next);
applyToRoot(next);
+
+ if (!inital) {
+ const userStore = useUserStore();
+ if (userStore.userInfo.userType === 'Admin') {
+ setAdminTopic({
+ topic: theme
+ })
+ } else {
+ setHospitalTopic({
+ topic: theme
+ })
+ }
+ }
};
// 初始化:setup 内即生效,不依赖外部调用
diff --git a/src/views/admin/orders/components/OrderFormDialog.vue b/src/views/admin/orders/components/OrderFormDialog.vue
index 8016a41..31143c3 100644
--- a/src/views/admin/orders/components/OrderFormDialog.vue
+++ b/src/views/admin/orders/components/OrderFormDialog.vue
@@ -80,6 +80,10 @@
+
+
+
+
@@ -162,6 +166,7 @@ import {
import { ElMessage } from 'element-plus';
import { Editor, Toolbar } from '@wangeditor/editor-for-vue';
import '@wangeditor/editor/dist/css/style.css';
+import { CloseBold } from "@element-plus/icons-vue";
import { useI18n } from 'vue-i18n';
const props = defineProps({
@@ -217,7 +222,7 @@ const form = reactive({
priority: '中',
feedbackchannel: '',
department: '',
- colorTag: '#667eea',
+ colorTag: '',
description: '',
submitter: '',
createdat: '',
@@ -470,7 +475,7 @@ const resetForm = () => {
priority: '中',
feedbackchannel: '',
department: '',
- colorTag: '#667eea',
+ colorTag: '',
description: '',
submitter: '',
createdat: '',
@@ -487,7 +492,7 @@ const fillFormFromOrder = (d) => {
form.priority = d.priority || '中';
form.feedbackchannel = d.feedbackChannel || d.feedbackchannel || '';
form.department = d.department || '';
- form.colorTag = d.colorTag || '#667eea';
+ form.colorTag = d.colorTag;
form.description = d.description || '';
form.submitter = d.submitter || '';
// 后端返回时间可能含 T,统一格式化为 YYYY-MM-DD HH:mm:ss 供 date-picker 回显
@@ -551,6 +556,7 @@ const onSubmit = async () => {
if (editor && typeof editor.getHtml === 'function') {
form.description = editor.getHtml() || '';
}
+ form.colorTag = form.colorTag ? form.colorTag : ' ';
await formRef.value.validate(async (valid) => {
if (!valid) return;
const formData = new FormData();
diff --git a/src/views/hospital/orders/OrderFormDialog.vue b/src/views/hospital/orders/OrderFormDialog.vue
index 84622ee..38f743e 100644
--- a/src/views/hospital/orders/OrderFormDialog.vue
+++ b/src/views/hospital/orders/OrderFormDialog.vue
@@ -74,6 +74,9 @@
+
+
+
@@ -147,6 +150,7 @@ import { ElMessage } from "element-plus";
import { Editor, Toolbar } from "@wangeditor/editor-for-vue";
import "@wangeditor/editor/dist/css/style.css";
import { useI18n } from "vue-i18n";
+import { CloseBold } from "@element-plus/icons-vue";
import {
createHospitalOrder,
getHospitalOrderDetail,
@@ -186,7 +190,7 @@ const fillFormFromDetail = (detail) => {
form.priority = detail.priority || "中";
form.feedbackchannel = detail.feedbackChannel || detail.feedbackchannel || "";
form.department = detail.department || "";
- form.colorTag = detail.colorTag || "#667eea";
+ form.colorTag = detail.colorTag || "";
form.description = detail.description || "";
form.submitter = detail.submitter || "";
form.createdat = detail.createdAt
@@ -228,7 +232,7 @@ const form = reactive({
priority: "中",
feedbackchannel: "",
department: "",
- colorTag: "#667eea",
+ colorTag: "",
description: "",
submitter: "",
createdat: "",
@@ -474,7 +478,7 @@ const onClosed = () => {
form.priority = "中";
form.feedbackchannel = "";
form.department = "";
- form.colorTag = "#667eea";
+ form.colorTag = "";
form.description = "";
form.submitter = "";
form.createdat = "";
diff --git a/src/views/login/index.vue b/src/views/login/index.vue
index a30b84f..13c9589 100644
--- a/src/views/login/index.vue
+++ b/src/views/login/index.vue
@@ -9,31 +9,16 @@
-
+
-
+
-
+
@@ -46,13 +31,7 @@
}}
-
+
{{ $t("login.denglu") }}
@@ -75,7 +54,8 @@ import { useUserStore } from "@/stores/api/user";
import SvgIcon from "@/components/SvgIcon/index.vue";
import i18nSwitch from "@/components/i18nSwitch/index.vue";
import { useI18n } from "vue-i18n";
-
+import { useThemeStore } from "@/stores/theme";
+const themeStore = useThemeStore();
const { t } = useI18n();
const router = useRouter();
const route = useRoute();
@@ -135,8 +115,9 @@ const submit = async () => {
role: data?.role,
name: data?.name,
gender: data?.gender,
+ topic: data?.topic
};
-
+ themeStore.setTheme(data?.topic || 'blue', true);
userStore.setToken(data?.token || "");
userStore.setUserInfo(userInfo);
@@ -207,8 +188,7 @@ onMounted(() => {
margin-bottom: 48px;
}
-.login-card {
-}
+.login-card {}
.login-title {
font-size: 20px;
@@ -238,6 +218,7 @@ onMounted(() => {
font-weight: 400;
font-size: 16px;
caret-color: #2b7afa;
+
&::placeholder {
color: #bbbbbb;
}