master
2358328281@qq.com 1 month ago
parent 26449fbea5
commit ef698ebe45

@ -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);
};

@ -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 内即生效,不依赖外部调用

@ -80,6 +80,10 @@
<div v-for="c in colorOptions" :key="c.value" class="color-tag-option"
:class="{ active: form.colorTag === c.value }" :style="{ background: c.value }" :title="c.label"
@click="selectColor(c.value)"></div>
<div class="color-tag-option clear" @click="selectColor('')">
<el-icon :size="24"><CloseBold /></el-icon>
</div>
</div>
</el-popover>
</div>
@ -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();

@ -74,6 +74,9 @@
<div v-for="c in colorOptions" :key="c.value" class="color-tag-option"
:class="{ active: form.colorTag === c.value }" :style="{ background: c.value }" :title="c.label"
@click="selectColor(c.value)"></div>
<div class="color-tag-option clear" @click="selectColor('')">
<el-icon :size="24"><CloseBold /></el-icon>
</div>
</div>
</el-popover>
</template>
@ -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 = "";

@ -9,31 +9,16 @@
<div class="login-header">{{ $t("login.headerTitle") }}</div>
<div class="login-card">
<el-form
ref="formRef"
:model="form"
:rules="rules"
@keyup.enter="submit"
class="login-form"
>
<el-form ref="formRef" :model="form" :rules="rules" @keyup.enter="submit" class="login-form">
<el-form-item prop="username">
<el-input
v-model="form.username"
:placeholder="$t('login.userName')"
size="large"
>
<el-input v-model="form.username" :placeholder="$t('login.userName')" size="large">
<template #prefix>
<SvgIcon name="login-user" :size="28" />
</template>
</el-input>
</el-form-item>
<el-form-item prop="password">
<el-input
v-model="form.password"
type="password"
:placeholder="$t('login.passWord')"
size="large"
>
<el-input v-model="form.password" type="password" :placeholder="$t('login.passWord')" size="large">
<template #prefix>
<SvgIcon name="login-password" :size="28" />
</template>
@ -46,13 +31,7 @@
}}</el-checkbox>
</el-form-item>
<el-button
type="primary"
class="submit-btn"
:loading="loading"
size="large"
@click="submit"
>
<el-button type="primary" class="submit-btn" :loading="loading" size="large" @click="submit">
{{ $t("login.denglu") }}
</el-button>
</el-form>
@ -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;
}

Loading…
Cancel
Save