From ef698ebe45b8e7408ec05d94b017f71b3f430953 Mon Sep 17 00:00:00 2001 From: "2358328281@qq.com" <邮箱地址> Date: Fri, 17 Jul 2026 11:03:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/service/modular/login/index.js | 13 +++++++ src/stores/theme/index.js | 22 ++++++++++- .../orders/components/OrderFormDialog.vue | 12 ++++-- src/views/hospital/orders/OrderFormDialog.vue | 10 +++-- src/views/login/index.vue | 39 +++++-------------- 5 files changed, 59 insertions(+), 37 deletions(-) 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 @@
{{ $t("login.headerTitle") }}
- + @@ -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; }