feat : add site custom setting
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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="请输入自定义的网站logo(svg文本)" style="margin-top: 15px;">
|
||||
<el-input v-model="logo" size="small" placeholder="请输入自定义的网站logo(svg文本)">
|
||||
<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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user