mirror of https://github.com/halo-dev/halo-admin
样式美化
parent
e0591f7749
commit
4799a7ec31
|
@ -1,7 +1,10 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="footer">
|
<div class="footer">
|
||||||
<div class="copyright">
|
<div class="copyright">
|
||||||
Proudly power by <a target="_blank" href="https://github.com/halo-dev/halo">Halo</a>
|
Proudly power by
|
||||||
|
<router-link :to="{ name:'About' }">
|
||||||
|
<a href="javascript:void(0);">Halo</a>
|
||||||
|
</router-link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -176,6 +176,13 @@ export const asyncRouterMap = [
|
||||||
name: 'ToolList',
|
name: 'ToolList',
|
||||||
component: () => import('@/views/system/ToolList'),
|
component: () => import('@/views/system/ToolList'),
|
||||||
meta: { title: '小工具', hiddenHeaderContent: false }
|
meta: { title: '小工具', hiddenHeaderContent: false }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/system/about',
|
||||||
|
name: 'About',
|
||||||
|
component: () => import('@/views/system/About'),
|
||||||
|
hidden: true,
|
||||||
|
meta: { title: '关于 Halo', hiddenHeaderContent: false }
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,23 +2,17 @@
|
||||||
<div class="page-header-index-wide">
|
<div class="page-header-index-wide">
|
||||||
<a-row :gutter="12">
|
<a-row :gutter="12">
|
||||||
<a-col :xl="24" :lg="24" :md="24" :sm="24" :xs="24">
|
<a-col :xl="24" :lg="24" :md="24" :sm="24" :xs="24">
|
||||||
<a-card>
|
<div style="margin-bottom: 16px">
|
||||||
<div style="margin-bottom: 16px">
|
<a-input
|
||||||
<a-input
|
v-model="postToStage.title"
|
||||||
v-model="postToStage.title"
|
v-decorator="['title', { rules: [{ required: true, message: '请输入页面标题' }] }]"
|
||||||
v-decorator="['title', { rules: [{ required: true, message: '请输入页面标题' }] }]"
|
size="large"
|
||||||
size="large"
|
placeholder="请输入页面标题"
|
||||||
placeholder="请输入页面标题"
|
/>
|
||||||
/>
|
</div>
|
||||||
</div>
|
<div id="editor">
|
||||||
<a-button type="primary" @click="showDrawer">发布</a-button>
|
<mavon-editor v-model="postToStage.originalContent" :boxShadow="false" :ishljs="true"/>
|
||||||
</a-card>
|
</div>
|
||||||
|
|
||||||
<a-card>
|
|
||||||
<div id="editor">
|
|
||||||
<mavon-editor v-model="postToStage.originalContent"/>
|
|
||||||
</div>
|
|
||||||
</a-card>
|
|
||||||
</a-col>
|
</a-col>
|
||||||
|
|
||||||
<a-col :xl="24" :lg="24" :md="24" :sm="24" :xs="24">
|
<a-col :xl="24" :lg="24" :md="24" :sm="24" :xs="24">
|
||||||
|
@ -34,17 +28,17 @@
|
||||||
<h3 class="post-setting-drawer-title">基本设置</h3>
|
<h3 class="post-setting-drawer-title">基本设置</h3>
|
||||||
<div class="post-setting-drawer-item">
|
<div class="post-setting-drawer-item">
|
||||||
<a-form layout="vertical">
|
<a-form layout="vertical">
|
||||||
<a-form-item label="页面路径:" :help="'https://localhost:8090/p/'+ (postToStage.url ? postToStage.url : '{auto_generate}')">
|
<a-form-item
|
||||||
|
label="页面路径:"
|
||||||
|
:help="'https://localhost:8090/p/'+ (postToStage.url ? postToStage.url : '{auto_generate}')"
|
||||||
|
>
|
||||||
<a-input v-model="postToStage.url"/>
|
<a-input v-model="postToStage.url"/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="页面密码:">
|
<a-form-item label="页面密码:">
|
||||||
<a-input type="password" v-model="postToStage.password"/>
|
<a-input type="password" v-model="postToStage.password"/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="是否关闭评论:">
|
<a-form-item label="是否关闭评论:">
|
||||||
<a-radio-group
|
<a-radio-group v-model="postToStage.disallowComment" :defaultValue="false">
|
||||||
v-model="postToStage.disallowComment"
|
|
||||||
:defaultValue="false"
|
|
||||||
>
|
|
||||||
<a-radio :value="false">开启</a-radio>
|
<a-radio :value="false">开启</a-radio>
|
||||||
<a-radio :value="true">关闭</a-radio>
|
<a-radio :value="true">关闭</a-radio>
|
||||||
</a-radio-group>
|
</a-radio-group>
|
||||||
|
@ -76,11 +70,19 @@
|
||||||
</a-drawer>
|
</a-drawer>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
|
|
||||||
|
<footer-tool-bar
|
||||||
|
:style="{ width: isSideMenu() && isDesktop() ? `calc(100% - ${sidebarOpened ? 256 : 80}px)` : '100%'}"
|
||||||
|
>
|
||||||
|
<a-button type="primary" @click="showDrawer">发布</a-button>
|
||||||
|
<a-button type="dashed" style="margin-left: 8px;">附件库</a-button>
|
||||||
|
</footer-tool-bar>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { mavonEditor } from 'mavon-editor'
|
import { mavonEditor } from 'mavon-editor'
|
||||||
|
import FooterToolBar from '@/components/FooterToolbar'
|
||||||
import { mixin, mixinDevice } from '@/utils/mixin.js'
|
import { mixin, mixinDevice } from '@/utils/mixin.js'
|
||||||
import 'mavon-editor/dist/css/index.css'
|
import 'mavon-editor/dist/css/index.css'
|
||||||
import postApi from '@/api/post'
|
import postApi from '@/api/post'
|
||||||
|
@ -88,9 +90,9 @@ import themeApi from '@/api/theme'
|
||||||
export default {
|
export default {
|
||||||
name: 'Editor',
|
name: 'Editor',
|
||||||
components: {
|
components: {
|
||||||
mavonEditor
|
mavonEditor,
|
||||||
|
FooterToolBar
|
||||||
},
|
},
|
||||||
|
|
||||||
mixins: [mixin, mixinDevice],
|
mixins: [mixin, mixinDevice],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
@ -179,17 +181,9 @@ export default {
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style scoped>
|
<style scoped>
|
||||||
#editor {
|
|
||||||
margin: auto;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.v-note-wrapper {
|
.v-note-wrapper {
|
||||||
z-index: 1000;
|
z-index: 1000;
|
||||||
}
|
min-height: 540px;
|
||||||
|
|
||||||
.ant-card {
|
|
||||||
margin-bottom: 16px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.ant-form-vertical .ant-form-item {
|
.ant-form-vertical .ant-form-item {
|
||||||
|
|
|
@ -11,9 +11,11 @@
|
||||||
<div class="card-container">
|
<div class="card-container">
|
||||||
<a-tabs type="card">
|
<a-tabs type="card">
|
||||||
<a-tab-pane
|
<a-tab-pane
|
||||||
tab="内置页面"
|
|
||||||
key="internal"
|
key="internal"
|
||||||
>
|
>
|
||||||
|
<span slot="tab">
|
||||||
|
<a-icon type="pushpin" />内置页面
|
||||||
|
</span>
|
||||||
<a-table
|
<a-table
|
||||||
:columns="internalColumns"
|
:columns="internalColumns"
|
||||||
:dataSource="internalPages"
|
:dataSource="internalPages"
|
||||||
|
@ -45,9 +47,12 @@
|
||||||
</a-table>
|
</a-table>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
<a-tab-pane
|
<a-tab-pane
|
||||||
tab="自定义页面"
|
|
||||||
key="custom"
|
key="custom"
|
||||||
>自定义页面</a-tab-pane>
|
>
|
||||||
|
<span slot="tab">
|
||||||
|
<a-icon type="fork" />内置页面
|
||||||
|
</span>
|
||||||
|
自定义页面</a-tab-pane>
|
||||||
</a-tabs>
|
</a-tabs>
|
||||||
</div>
|
</div>
|
||||||
</a-col>
|
</a-col>
|
||||||
|
|
|
@ -497,10 +497,6 @@ export default {
|
||||||
min-height: 540px;
|
min-height: 540px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ant-card {
|
|
||||||
margin-bottom: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ant-form-vertical .ant-form-item {
|
.ant-form-vertical .ant-form-item {
|
||||||
padding-bottom: 0;
|
padding-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
<template>
|
||||||
|
<div class="page-header-index-wide">About page</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
</style>
|
|
@ -2,7 +2,10 @@
|
||||||
<div class="page-header-index-wide">
|
<div class="page-header-index-wide">
|
||||||
<div class="card-container">
|
<div class="card-container">
|
||||||
<a-tabs type="card">
|
<a-tabs type="card">
|
||||||
<a-tab-pane tab="资源文件备份" key="1">
|
<a-tab-pane key="1">
|
||||||
|
<span slot="tab">
|
||||||
|
<a-icon type="folder" />资源文件备份
|
||||||
|
</span>
|
||||||
<a-table :columns="columns" :dataSource="ResourcesData">
|
<a-table :columns="columns" :dataSource="ResourcesData">
|
||||||
<span slot="action" slot-scope="text, record">
|
<span slot="action" slot-scope="text, record">
|
||||||
<a href="javascript:;" @click="downResources('ResourcesData',record.id)">下载</a>
|
<a href="javascript:;" @click="downResources('ResourcesData',record.id)">下载</a>
|
||||||
|
@ -14,7 +17,10 @@
|
||||||
</a-table>
|
</a-table>
|
||||||
<a-button type="primary" @click="backupData('ResourcesData')">备份</a-button>
|
<a-button type="primary" @click="backupData('ResourcesData')">备份</a-button>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
<a-tab-pane tab="数据库备份" key="2">
|
<a-tab-pane key="2">
|
||||||
|
<span slot="tab">
|
||||||
|
<a-icon type="database" />资源文件备份
|
||||||
|
</span>
|
||||||
<a-table :columns="columns" :dataSource="DataBaseData">
|
<a-table :columns="columns" :dataSource="DataBaseData">
|
||||||
<span slot="action" slot-scope="text, record">
|
<span slot="action" slot-scope="text, record">
|
||||||
<a href="javascript:;" @click="downResources('DataBaseData',record.id)">下载</a>
|
<a href="javascript:;" @click="downResources('DataBaseData',record.id)">下载</a>
|
||||||
|
@ -26,7 +32,10 @@
|
||||||
</a-table>
|
</a-table>
|
||||||
<a-button type="primary" @click="backupData('DataBaseData')">备份</a-button>
|
<a-button type="primary" @click="backupData('DataBaseData')">备份</a-button>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
<a-tab-pane tab="文章备份" key="3">
|
<a-tab-pane key="3">
|
||||||
|
<span slot="tab">
|
||||||
|
<a-icon type="read" />文章备份
|
||||||
|
</span>
|
||||||
<a-table :columns="columns" :dataSource="FileData">
|
<a-table :columns="columns" :dataSource="FileData">
|
||||||
<span slot="action" slot-scope="text, record">
|
<span slot="action" slot-scope="text, record">
|
||||||
<a href="javascript:;" @click="downResources('FileData',record.id)">下载</a>
|
<a href="javascript:;" @click="downResources('FileData',record.id)">下载</a>
|
||||||
|
@ -125,11 +134,8 @@ export default {
|
||||||
<style>
|
<style>
|
||||||
.card-container {
|
.card-container {
|
||||||
background: #f5f5f5;
|
background: #f5f5f5;
|
||||||
overflow: hidden;
|
|
||||||
padding: 24px;
|
|
||||||
}
|
}
|
||||||
.card-container > .ant-tabs-card > .ant-tabs-content {
|
.card-container > .ant-tabs-card > .ant-tabs-content {
|
||||||
/* height: 120px; */
|
|
||||||
margin-top: -16px;
|
margin-top: -16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -151,4 +157,7 @@ export default {
|
||||||
border-color: #fff;
|
border-color: #fff;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
}
|
}
|
||||||
|
.ant-form-vertical .ant-form-item {
|
||||||
|
padding-bottom: 0;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
<a-tab-pane key="seo">
|
<a-tab-pane key="seo">
|
||||||
<span slot="tab">
|
<span slot="tab">
|
||||||
<a-icon type="read" />SEO设置
|
<a-icon type="global" />SEO设置
|
||||||
</span>
|
</span>
|
||||||
<a-form layout="vertical">
|
<a-form layout="vertical">
|
||||||
<a-form-item label="关键词: " :wrapper-col="wrapperCol">
|
<a-form-item label="关键词: " :wrapper-col="wrapperCol">
|
||||||
|
|
|
@ -4,23 +4,32 @@
|
||||||
<a-col :lg="10" :md="24" :style="{ 'padding-bottom': '12px' }">
|
<a-col :lg="10" :md="24" :style="{ 'padding-bottom': '12px' }">
|
||||||
<a-card :bodyStyle="{ padding: '16' }" :bordered="false">
|
<a-card :bodyStyle="{ padding: '16' }" :bordered="false">
|
||||||
<div class="profile-center-avatarHolder">
|
<div class="profile-center-avatarHolder">
|
||||||
<div class="avatar">
|
<a-tooltip placement="right" :trigger="['hover']" title="点击可修改头像">
|
||||||
<img :src="user.avatar || 'https://gravatar.loli.net/avatar/?s=256&d=mm'" />
|
<template slot="title">
|
||||||
</div>
|
<span>prompt text</span>
|
||||||
|
</template>
|
||||||
|
<div class="avatar">
|
||||||
|
<img :src="user.avatar || 'https://gravatar.loli.net/avatar/?s=256&d=mm'">
|
||||||
|
</div>
|
||||||
|
</a-tooltip>
|
||||||
<div class="username">{{ user.nickname }}</div>
|
<div class="username">{{ user.nickname }}</div>
|
||||||
<div class="bio">{{ user.description }}</div>
|
<div class="bio">{{ user.description }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="profile-center-detail">
|
<div class="profile-center-detail">
|
||||||
<p>
|
<p>
|
||||||
<a-icon type="mail" />
|
<a-icon type="link"/>
|
||||||
|
<a href="http://localhost:8090" target="method">http://localhost:8090</a>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<a-icon type="mail"/>
|
||||||
{{ user.email }}
|
{{ user.email }}
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<a-icon type="calendar" />
|
<a-icon type="calendar"/>
|
||||||
{{ counts.establishDays || 0 }} 天
|
{{ counts.establishDays || 0 }} 天
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<a-divider />
|
<a-divider/>
|
||||||
<div class="general-profile">
|
<div class="general-profile">
|
||||||
<a-list :loading="countsLoading" itemLayout="horizontal">
|
<a-list :loading="countsLoading" itemLayout="horizontal">
|
||||||
<a-list-item>累计发表了 {{ counts.postCount || 0 }} 篇文章。</a-list-item>
|
<a-list-item>累计发表了 {{ counts.postCount || 0 }} 篇文章。</a-list-item>
|
||||||
|
@ -37,43 +46,48 @@
|
||||||
<a-card :bodyStyle="{ padding: '0' }" :bordered="false" title="个人资料">
|
<a-card :bodyStyle="{ padding: '0' }" :bordered="false" title="个人资料">
|
||||||
<div class="card-container">
|
<div class="card-container">
|
||||||
<a-tabs type="card">
|
<a-tabs type="card">
|
||||||
<a-tab-pane key="1" tab="基本资料">
|
<a-tab-pane key="1">
|
||||||
|
<span slot="tab">
|
||||||
|
<a-icon type="idcard"/>基本资料
|
||||||
|
</span>
|
||||||
<a-form layout="vertical">
|
<a-form layout="vertical">
|
||||||
<a-form-item label="用户名:">
|
<a-form-item label="用户名:">
|
||||||
<a-input v-model="user.username" />
|
<a-input v-model="user.username"/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="昵称:">
|
<a-form-item label="昵称:">
|
||||||
<a-input v-model="user.nickname" />
|
<a-input v-model="user.nickname"/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="邮箱:">
|
<a-form-item label="邮箱:">
|
||||||
<a-input v-model="user.email" />
|
<a-input v-model="user.email"/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="个人说明:">
|
<a-form-item label="个人说明:">
|
||||||
<a-input :autosize="{ minRows: 5 }" type="textarea" v-model="user.description" />
|
<a-input :autosize="{ minRows: 5 }" type="textarea" v-model="user.description"/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item>
|
<a-form-item>
|
||||||
<a-button @click="updateProfile" type="primary">保存</a-button>
|
<a-button @click="updateProfile" type="primary">保存</a-button>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-form>
|
</a-form>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
<a-tab-pane key="2" tab="密码">
|
<a-tab-pane key="2">
|
||||||
|
<span slot="tab">
|
||||||
|
<a-icon type="lock"/>密码
|
||||||
|
</span>
|
||||||
<a-form layout="vertical">
|
<a-form layout="vertical">
|
||||||
<a-form-item label="原密码:">
|
<a-form-item label="原密码:">
|
||||||
<a-input type="password" v-model="passwordParam.oldPassword" />
|
<a-input type="password" v-model="passwordParam.oldPassword"/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="新密码:">
|
<a-form-item label="新密码:">
|
||||||
<a-input type="password" v-model="passwordParam.newPassword" />
|
<a-input type="password" v-model="passwordParam.newPassword"/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="确认密码:">
|
<a-form-item label="确认密码:">
|
||||||
<a-input type="password" v-model="passwordParam.confirmPassword" />
|
<a-input type="password" v-model="passwordParam.confirmPassword"/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item>
|
<a-form-item>
|
||||||
<a-button
|
<a-button
|
||||||
:disabled="passwordUpdateButtonDisabled"
|
:disabled="passwordUpdateButtonDisabled"
|
||||||
@click="updatePassword"
|
@click="updatePassword"
|
||||||
type="primary"
|
type="primary"
|
||||||
>确认更改
|
>确认更改</a-button>
|
||||||
</a-button>
|
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-form>
|
</a-form>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
|
@ -162,6 +176,7 @@ export default {
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
img {
|
img {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|
Loading…
Reference in New Issue