feat : add site custom setting

This commit is contained in:
engigu
2024-01-17 23:15:47 +08:00
parent 98985c2470
commit 69d4a1cc74
22 changed files with 174 additions and 61 deletions
+13 -2
View File
@@ -3,6 +3,7 @@
<el-menu :collapse="isCollapse" breakpoint="768px" mode="horizontal" @select="handleSelect()"
:default-active="currActivate()" :ellipsis="false" :menu-width="'auto'">
<el-menu-item index="0" :disabled="false">
<!-- <div class="title-logo" v-html="titleLogo"></div> -->
<img style="width: 60px" class="title-logo" :src="titleLogo" alt="Message logo" />
</el-menu-item>
@@ -30,7 +31,7 @@ export default {
const router = useRouter();
const isCollapse = ref(false);
const state = reactive({
titleLogo: 'data:image/svg+xml;utf8,' + CONSTANT.LOGO,
titleLogo: '',
});
const menuData = reactive([
{
@@ -76,10 +77,16 @@ export default {
return result;
}
const setSiteConfig = () => {
document.title = pageState.siteConfigData.title;
state.titleLogo = 'data:image/svg+xml;base64,' + btoa(pageState.siteConfigData.logo);
}
onMounted(() => {
changeFavicon();
checkIsLogin();
loadLocalToken();
setSiteConfig();
});
const changeFavicon = () => {
@@ -87,7 +94,7 @@ export default {
if (link) {
link.type = 'image/svg+xml';
link.rel = 'icon';
link.href = 'data:image/svg+xml;utf8,' + CONSTANT.LOGO;
link.href = 'data:image/svg+xml;base64,' + btoa(pageState.siteConfigData.logo)
document.getElementsByTagName('head')[0].appendChild(link);
}
}
@@ -118,6 +125,10 @@ export default {
margin: 0 auto;
}
.title-logo svg {
height: 50px;
}
.logout-btn {
margin: auto 40px auto 40px;
float: right;
+9 -5
View File
@@ -4,7 +4,7 @@
<div class="main-center-body">
<div class="container">
<img class="login-logo" :src="logo" alt="login logo">
<p class="desc">A Message Way Hosted Site</p>
<p class="desc">{{ slogan }}</p>
<div class="login-block">
<p class="login-text">账号</p>
@@ -33,21 +33,25 @@ import { request } from '../../api/api'
import { CONSTANT } from '../../constant'
import { usePageState } from '../../store/page_sate';
import { useRouter } from 'vue-router';
import { LocalStieConfigUtils } from '@/util/localSiteConfig'
export default {
setup() {
const router = useRouter();
const pageState = usePageState();
const state = reactive({
account: '',
passwd: '',
logo: 'data:image/svg+xml;utf8,' + CONSTANT.LOGO,
logo: 'data:image/svg+xml;base64,' + btoa(pageState.siteConfigData.logo),
slogan: pageState.siteConfigData.slogan,
});
onMounted(() => {
// 加载站点信息
setTimeout(() => {
LocalStieConfigUtils.getLatestLocalConfig();
}, 100)
});
// 登录
@@ -60,7 +64,7 @@ export default {
pageState.setToken(rsp.data.token);
pageState.setIsLogin(true);
localStorage.setItem(CONSTANT.STORE_TOKEN_NAME, rsp.data.token);
router.push('/sendlogs', { replace: true })
router.push('/sendlogs', { replace: true });
}
};
@@ -37,7 +37,7 @@
<div class="pagination-block">
<el-pagination layout="prev, pager, next" :total="total" :page-size="pageSize" @current-change="handPageChange" />
<el-text class="total-tip" size="small">{{ total }}</el-text>
<el-text class="total-tip" size="small">每页{{ pageSize }}{{ total }}</el-text>
</div>
</div>
@@ -50,11 +50,13 @@ import { request } from '../../../api/api'
import { copyToClipboard } from '../../../util/clipboard.js';
import { useRoute } from 'vue-router';
import { CONSTANT } from '@/constant'
import { usePageState } from '@/store/page_sate.js';
export default {
components: {
},
setup() {
const pageState = usePageState();
const router = useRoute();
const state = reactive({
search: '',
@@ -63,7 +65,7 @@ export default {
drawer: false,
tableData: [],
total: CONSTANT.TOTAL,
pageSize: CONSTANT.PAGE_SIZE,
pageSize: pageState.siteConfigData.pagesize,
currPage: CONSTANT.PAGE,
});
@@ -38,7 +38,7 @@
<div class="pagination-block">
<el-pagination layout="prev, pager, next" :total="total" :page-size="pageSize" @current-change="handPageChange" />
<el-text class="total-tip" size="small">{{ total }}</el-text>
<el-text class="total-tip" size="small">每页{{ pageSize }}{{ total }}</el-text>
</div>
</div>
@@ -83,7 +83,7 @@ export default {
// confirmBtnVisible: false,
tableData: [],
total: CONSTANT.TOTAL,
pageSize: CONSTANT.PAGE_SIZE,
pageSize: pageState.siteConfigData.pagesize,
currPage: CONSTANT.PAGE,
displayCols: [
{ 'col': 'id', 'label': '任务ID' },
@@ -43,7 +43,7 @@
</div>
<div class="pagination-block">
<el-pagination layout="prev, pager, next" :total="total" :page-size="pageSize" @current-change="handPageChange" />
<el-text class="total-tip" size="small">{{ total }}</el-text>
<el-text class="total-tip" size="small">每页{{ pageSize }}{{ total }}</el-text>
</div>
<addWayComponent :componentName="addWayComponentName" />
@@ -83,7 +83,7 @@ export default {
// confirmBtnVisible: false,
tableData: [],
total: CONSTANT.TOTAL,
pageSize: CONSTANT.PAGE_SIZE,
pageSize: pageState.siteConfigData.pagesize,
currPage: CONSTANT.PAGE,
displayCols: [
{ 'col': 'id', 'label': '渠道ID' },
@@ -10,9 +10,9 @@
<el-menu-item index="logCleanSetting">
日志清理
</el-menu-item>
<!-- <el-menu-item index="siteCustomSetting">
<el-menu-item index="siteCustomSetting">
站点设置
</el-menu-item> -->
</el-menu-item>
<el-menu-item index="aboutSetting">
站点关于
</el-menu-item>
@@ -82,9 +82,9 @@ hr {
margin-top: -10vh;
}
/* .setting-main {
} */
:deep(.el-input ) {
margin-top: 14px;
}
.setting-right {
width: 100%;
@@ -4,12 +4,15 @@
<el-input v-model="title" size="small" placeholder="请输入自定义的网站标题">
<template size="small" #prepend>站点标题</template>
</el-input>
<el-input v-model.number="slogan" size="small" placeholder="请输入自定义的网站slogan" style="margin-top: 15px;">
<el-input v-model="slogan" size="small" placeholder="请输入自定义的网站slogan">
<template size="small" #prepend>站点标语</template>
</el-input>
<el-input v-model.number="logo" size="small" placeholder="请输入自定义的网站logosvg文本)" style="margin-top: 15px;">
<el-input v-model="logo" size="small" placeholder="请输入自定义的网站logosvg文本)">
<template size="small" #prepend>站点图标</template>
</el-input>
<el-input v-model="pagesize" size="small" placeholder="页面分页大小">
<template size="small" #prepend>分页大小</template>
</el-input>
</div>
<div class="buttom">
<div class="tips">
@@ -27,7 +30,7 @@
</el-icon>
</el-tooltip>
</div>
<el-button @click="handleView" size="small">恢复默认</el-button>
<el-button @click="handleSubmitReset" size="small">恢复默认</el-button>
<el-button @click="handleSubmit" size="small" type="primary">确定</el-button>
</div>
</div>
@@ -40,6 +43,8 @@ import { QuestionFilled } from '@element-plus/icons-vue'
import { useRouter } from 'vue-router';
import { request } from '@/api/api'
import { CONSTANT } from '@/constant'
import { LocalStieConfigUtils } from '@/util/localSiteConfig'
export default defineComponent({
components: {
@@ -55,6 +60,7 @@ export default defineComponent({
title: '',
slogan: '',
logo: '',
pagesize: '',
section: 'site_config',
});
@@ -65,6 +71,7 @@ export default defineComponent({
title: state.title.trim(),
slogan: state.slogan.trim(),
logo: state.logo.trim(),
pagesize: state.pagesize,
},
};
const rsp = await request.post('/settings/set', postData);
@@ -73,8 +80,15 @@ export default defineComponent({
ElMessage({ message: msg, type: 'success' })
}
}
const handleView = async () => {
router.push('/sendlogs?taskid=' + CONSTANT.LOG_TASK_ID, { replace: true });
const handleSubmitReset = async () => {
const rsp = await request.post('/settings/reset', {});
if (await rsp.data.code == 200) {
let msg = await rsp.data.msg;
ElMessage({ message: msg, type: 'success' });
// 重新获取设置
await getSiteConfig();
}
}
const getSiteConfig = async () => {
@@ -85,6 +99,9 @@ export default defineComponent({
state.title = data.title;
state.logo = data.logo;
state.slogan = data.slogan;
state.pagesize = data.pagesize;
LocalStieConfigUtils.updateLocalConfig(data);
}
}
@@ -93,7 +110,7 @@ export default defineComponent({
})
return {
...toRefs(state), handleSubmit, handleView
...toRefs(state), handleSubmit, handleSubmitReset
}
}