2024-07-09 09:50:37 +00:00
|
|
|
|
<template>
|
2024-07-12 09:13:11 +00:00
|
|
|
|
<div class="theme-setting">
|
|
|
|
|
|
<h4 class="p-16-24">外观设置</h4>
|
2024-07-11 10:13:52 +00:00
|
|
|
|
<el-scrollbar>
|
2024-07-12 09:13:11 +00:00
|
|
|
|
<div class="p-24 pt-0">
|
|
|
|
|
|
<div class="app-card p-24">
|
|
|
|
|
|
<h5 class="mb-16">平台显示主题</h5>
|
|
|
|
|
|
<el-radio-group
|
|
|
|
|
|
v-model="themeForm.theme"
|
|
|
|
|
|
class="app-radio-button-group"
|
2024-07-12 11:04:08 +00:00
|
|
|
|
@change="changeTheme"
|
2024-07-12 09:13:11 +00:00
|
|
|
|
>
|
|
|
|
|
|
<template v-for="(item, index) in themeList" :key="index">
|
|
|
|
|
|
<el-radio-button :label="item.label" :value="item.value" />
|
|
|
|
|
|
</template>
|
2024-07-11 10:13:52 +00:00
|
|
|
|
</el-radio-group>
|
|
|
|
|
|
</div>
|
2024-07-12 09:13:11 +00:00
|
|
|
|
<div class="app-card p-24 mt-16">
|
|
|
|
|
|
<h5 class="mb-16">平台登陆设置</h5>
|
|
|
|
|
|
<el-card shadow="never" class="layout-bg">
|
|
|
|
|
|
<div class="flex-between">
|
|
|
|
|
|
<h5 class="mb-16">页面预览</h5>
|
|
|
|
|
|
<el-button type="primary" link> 恢复默认 </el-button>
|
2024-07-11 10:13:52 +00:00
|
|
|
|
</div>
|
2024-07-12 09:13:11 +00:00
|
|
|
|
<div class="theme-preview">
|
2024-07-12 11:04:08 +00:00
|
|
|
|
<el-row :gutter="8">
|
2024-07-12 09:13:11 +00:00
|
|
|
|
<el-col :span="16">
|
|
|
|
|
|
<LoginPreview />
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
<el-col :span="8">
|
|
|
|
|
|
<div class="theme-form">
|
|
|
|
|
|
<el-card shadow="never" class="mb-8">
|
|
|
|
|
|
<div class="flex-between mb-8">
|
|
|
|
|
|
<span class="lighter">网站 Logo</span>
|
|
|
|
|
|
<el-button size="small"> 替换图片 </el-button>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<el-text type="info" size="small"
|
|
|
|
|
|
>顶部网站显示的 Logo,建议尺寸 48 x 48,支持 JPG、PNG、SVG,大小不超过
|
|
|
|
|
|
200KB</el-text
|
|
|
|
|
|
>
|
|
|
|
|
|
</el-card>
|
|
|
|
|
|
<el-card shadow="never" class="mb-8">
|
|
|
|
|
|
<div class="flex-between mb-8">
|
|
|
|
|
|
<span class="lighter">登录 Logo</span>
|
|
|
|
|
|
<el-button size="small"> 替换图片 </el-button>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<el-text type="info" size="small"
|
|
|
|
|
|
>登录页面右侧 Logo,建议尺寸 204*52,支持 JPG、PNG、SVG,大小不超过
|
|
|
|
|
|
200KB</el-text
|
|
|
|
|
|
>
|
|
|
|
|
|
</el-card>
|
|
|
|
|
|
<el-card shadow="never" class="mb-8">
|
|
|
|
|
|
<div class="flex-between mb-8">
|
|
|
|
|
|
<span class="lighter">登录背景图</span>
|
|
|
|
|
|
<el-button size="small"> 替换图片 </el-button>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<el-text type="info" size="small">
|
|
|
|
|
|
左侧背景图,矢量图建议尺寸 576*900,位图建议尺寸1152*1800;支持
|
|
|
|
|
|
JPG、PNG、SVG,大小不超过 5M
|
|
|
|
|
|
</el-text>
|
|
|
|
|
|
</el-card>
|
|
|
|
|
|
|
|
|
|
|
|
<el-form
|
|
|
|
|
|
ref="themeFormRef"
|
|
|
|
|
|
:model="themeForm"
|
|
|
|
|
|
label-position="top"
|
|
|
|
|
|
require-asterisk-position="right"
|
|
|
|
|
|
:rules="rules"
|
|
|
|
|
|
@submit.prevent
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-form-item label="网站名称" prop="title">
|
|
|
|
|
|
<el-input v-model="themeForm.title" placeholder="请输入网站名称">
|
|
|
|
|
|
</el-input>
|
|
|
|
|
|
<el-text type="info"> 显示在网页 Tab 的平台名称 </el-text>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="欢迎语" prop="slogan">
|
|
|
|
|
|
<el-input v-model="themeForm.slogan" placeholder="请输入欢迎语"> </el-input>
|
|
|
|
|
|
<el-text type="info"> 产品 Logo 下的 欢迎语 </el-text>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-form>
|
|
|
|
|
|
</div></el-col
|
|
|
|
|
|
>
|
|
|
|
|
|
</el-row>
|
2024-07-11 10:13:52 +00:00
|
|
|
|
</div>
|
|
|
|
|
|
|
2024-07-12 09:13:11 +00:00
|
|
|
|
<div class="mt-16">
|
|
|
|
|
|
<el-text type="info">默认为 MaxKB 登录界面,支持自定义设置</el-text>
|
2024-07-11 10:13:52 +00:00
|
|
|
|
</div>
|
2024-07-12 09:13:11 +00:00
|
|
|
|
</el-card>
|
2024-07-11 10:13:52 +00:00
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</el-scrollbar>
|
2024-07-12 09:13:11 +00:00
|
|
|
|
<div class="theme-setting__operate w-full p-16-24">
|
2024-07-12 11:04:08 +00:00
|
|
|
|
<el-button @click="resetTheme">放弃更新</el-button>
|
2024-07-12 09:13:11 +00:00
|
|
|
|
<el-button type="primary"> 保存并应用 </el-button>
|
|
|
|
|
|
</div>
|
2024-07-11 10:13:52 +00:00
|
|
|
|
</div>
|
2024-07-09 09:50:37 +00:00
|
|
|
|
</template>
|
2024-07-11 10:13:52 +00:00
|
|
|
|
|
|
|
|
|
|
<script lang="ts" setup>
|
2024-07-12 11:04:08 +00:00
|
|
|
|
import { ref, reactive, watch } from 'vue'
|
2024-07-12 09:13:11 +00:00
|
|
|
|
import type { FormInstance, FormRules } from 'element-plus'
|
|
|
|
|
|
import LoginPreview from './LoginPreview.vue'
|
2024-07-12 11:04:08 +00:00
|
|
|
|
import { useElementPlusTheme } from 'use-element-plus-theme'
|
|
|
|
|
|
|
2024-07-12 09:13:11 +00:00
|
|
|
|
const themeList = [
|
2024-07-11 10:13:52 +00:00
|
|
|
|
{
|
2024-07-12 09:13:11 +00:00
|
|
|
|
label: '默认',
|
|
|
|
|
|
value: '#3370FF',
|
|
|
|
|
|
loginBackground: '@/assets/theme/default.jpg'
|
2024-07-11 10:13:52 +00:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2024-07-12 09:13:11 +00:00
|
|
|
|
label: '活力橙',
|
|
|
|
|
|
value: '#FF8800',
|
|
|
|
|
|
loginBackground: '@/assets/theme/orange.jpg'
|
2024-07-11 10:13:52 +00:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2024-07-12 09:13:11 +00:00
|
|
|
|
label: '松石绿',
|
|
|
|
|
|
value: '#00B69D',
|
|
|
|
|
|
loginBackground: '@/assets/theme/green.jpg'
|
2024-07-11 10:13:52 +00:00
|
|
|
|
},
|
2024-07-12 09:13:11 +00:00
|
|
|
|
{
|
|
|
|
|
|
label: '商务蓝',
|
|
|
|
|
|
value: '#4954E6',
|
|
|
|
|
|
loginBackground: '@/assets/theme/default.jpg'
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
label: '神秘紫',
|
|
|
|
|
|
value: '#7F3BF5',
|
|
|
|
|
|
loginBackground: '@/assets/theme/purple.jpg'
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
label: '胭脂红',
|
|
|
|
|
|
value: '#F01D94',
|
|
|
|
|
|
loginBackground: '@/assets/theme/red.jpg'
|
2024-07-11 10:13:52 +00:00
|
|
|
|
}
|
2024-07-12 09:13:11 +00:00
|
|
|
|
]
|
|
|
|
|
|
const themeFormRef = ref<FormInstance>()
|
|
|
|
|
|
const themeForm = ref({
|
|
|
|
|
|
theme: '#3370FF',
|
|
|
|
|
|
icon: '',
|
|
|
|
|
|
loginLogo: '',
|
|
|
|
|
|
loginImage: '',
|
|
|
|
|
|
title: 'MaxKB',
|
|
|
|
|
|
slogan: '欢迎使用 MaxKB 智能知识库'
|
2024-07-11 10:13:52 +00:00
|
|
|
|
})
|
2024-07-12 09:13:11 +00:00
|
|
|
|
|
|
|
|
|
|
const rules = reactive<FormRules>({
|
|
|
|
|
|
title: [{ required: true, message: '请输入网站标题', trigger: 'blur' }],
|
|
|
|
|
|
slogan: [{ required: true, message: '请输入欢迎语', trigger: 'blur' }]
|
2024-07-11 10:13:52 +00:00
|
|
|
|
})
|
2024-07-12 09:13:11 +00:00
|
|
|
|
|
2024-07-12 11:04:08 +00:00
|
|
|
|
const { changeTheme } = useElementPlusTheme(themeForm.value.theme)
|
|
|
|
|
|
|
|
|
|
|
|
function resetTheme() {
|
|
|
|
|
|
themeForm.value.theme = '#3370FF'
|
|
|
|
|
|
changeTheme(themeForm.value.theme)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
watch(
|
|
|
|
|
|
() => themeForm.value.theme,
|
|
|
|
|
|
(val) => {
|
|
|
|
|
|
if (val) {
|
|
|
|
|
|
console.log(val)
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
)
|
2024-07-11 10:13:52 +00:00
|
|
|
|
</script>
|
|
|
|
|
|
|
2024-07-12 09:13:11 +00:00
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
|
|
.theme-setting {
|
|
|
|
|
|
height: 100%;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-direction: column;
|
2024-07-11 10:13:52 +00:00
|
|
|
|
box-sizing: border-box;
|
2024-07-12 09:13:11 +00:00
|
|
|
|
position: relative;
|
|
|
|
|
|
padding-bottom: 64px;
|
|
|
|
|
|
|
|
|
|
|
|
&__operate {
|
|
|
|
|
|
position: absolute;
|
|
|
|
|
|
bottom: 0;
|
|
|
|
|
|
right: 0;
|
|
|
|
|
|
left: 0;
|
|
|
|
|
|
background: #ffffff;
|
|
|
|
|
|
text-align: right;
|
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
|
box-shadow: 0px -2px 4px 0px rgba(31, 35, 41, 0.08);
|
|
|
|
|
|
}
|
|
|
|
|
|
.theme-preview {
|
|
|
|
|
|
min-width: 1000px;
|
2024-07-11 10:13:52 +00:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
</style>
|