新增:心语记录
This commit is contained in:
parent
6df591caae
commit
f0ea9dfc84
@ -66,3 +66,11 @@ export function updateSetting(data) {
|
|||||||
data
|
data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getHeartwings(params) {
|
||||||
|
return request({
|
||||||
|
url: '/website/heartwings',
|
||||||
|
method: 'get',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@ -80,6 +80,9 @@ a:hover {
|
|||||||
padding-bottom: 5px;
|
padding-bottom: 5px;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
|
>>> .el-button {
|
||||||
|
padding: 0px 0px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.img-dialog {
|
.img-dialog {
|
||||||
|
|
||||||
|
|||||||
@ -4,13 +4,23 @@
|
|||||||
<a-affix>
|
<a-affix>
|
||||||
<div class="box-card-header">
|
<div class="box-card-header">
|
||||||
<div class="clearfix card-header-back">
|
<div class="clearfix card-header-back">
|
||||||
<span>外观设置</span>
|
<div v-if="!subpage">
|
||||||
<el-button class="card-button" size="mini" type="primary" @click="save()">保存设置</el-button>
|
<span>外观设置</span>
|
||||||
|
<el-button class="card-button" size="mini" type="primary" @click="save()">保存设置</el-button>
|
||||||
|
</div>
|
||||||
|
<div v-if="subpage">
|
||||||
|
<div class="card-header-back">
|
||||||
|
<span class="header-back-title" @click="backParent">
|
||||||
|
<i class="el-icon-back"></i>
|
||||||
|
<span>返回</span>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a-affix>
|
</a-affix>
|
||||||
|
|
||||||
<el-tabs v-model="activeName" @tab-click="handleClick">
|
<el-tabs v-if="!subpage" v-model="activeName" @tab-click="handleClick">
|
||||||
<el-tab-pane label="网站首页背景" name="1">
|
<el-tab-pane label="网站首页背景" name="1">
|
||||||
<div class="config-itme-label">站点地址:</div>
|
<div class="config-itme-label">站点地址:</div>
|
||||||
<el-input autosize type="textarea" width="100%" v-model="form.siteUrl"></el-input>
|
<el-input autosize type="textarea" width="100%" v-model="form.siteUrl"></el-input>
|
||||||
@ -18,7 +28,9 @@
|
|||||||
<div class="config-itme-label">站点背景大图:</div>
|
<div class="config-itme-label">站点背景大图:</div>
|
||||||
<upload-image-input v-model="form.backgroundSite"/>
|
<upload-image-input v-model="form.backgroundSite"/>
|
||||||
<span class="instruction">在这里填入图片的URL地址, 以在网站首页显示一个背景大图。</span>
|
<span class="instruction">在这里填入图片的URL地址, 以在网站首页显示一个背景大图。</span>
|
||||||
<div class="config-itme-label">首页大图内文字:</div>
|
<div class="config-itme-label">首页大图内文字:
|
||||||
|
<el-button type="text" @click="heartwings">历史记录</el-button>
|
||||||
|
</div>
|
||||||
<el-input autosize type="textarea" v-model="form.backgroundTextSite"></el-input>
|
<el-input autosize type="textarea" v-model="form.backgroundTextSite"></el-input>
|
||||||
<span class="instruction">显示在博客首页大图内的描述。</span>
|
<span class="instruction">显示在博客首页大图内的描述。</span>
|
||||||
<div class="config-itme-label">首页大图内描述:</div>
|
<div class="config-itme-label">首页大图内描述:</div>
|
||||||
@ -30,13 +42,14 @@
|
|||||||
<el-input autosize type="textarea" width="100%" v-model="form.siteName"></el-input>
|
<el-input autosize type="textarea" width="100%" v-model="form.siteName"></el-input>
|
||||||
<span class="instruction">配置网站的 Logo,该选项仅作用于顶部导航条</span>
|
<span class="instruction">配置网站的 Logo,该选项仅作用于顶部导航条</span>
|
||||||
<div class="config-itme-label">导航栏操作按钮:</div>
|
<div class="config-itme-label">导航栏操作按钮:</div>
|
||||||
<el-input type="textarea" width="100%" v-model="form.operatingButtons" :autosize="{ minRows: 1, maxRows: 6 }" @input="preview"></el-input>
|
<el-input type="textarea" width="100%" v-model="form.operatingButtons" :autosize="{ minRows: 1, maxRows: 6 }"
|
||||||
|
@input="preview"></el-input>
|
||||||
<span class="instruction">
|
<span class="instruction">
|
||||||
一个操作按钮包含两个部分:
|
一个操作按钮包含两个部分:
|
||||||
<a href="https://fontawesome.com/icons?d=gallery" target="_blank">Font-awesome</a>
|
<a href="https://fontawesome.com/icons?d=gallery" target="_blank">Font-awesome</a>
|
||||||
图标标签和链接,使用':'隔开(标签里的内容为该图标的简述)。
|
图标标签和链接,使用':'隔开(标签里的内容为该图标的简述)。
|
||||||
<br>
|
<br>
|
||||||
列如:{{example}}:https://github.com/jamebal (建议不超过5项)
|
列如:{{ example }}:https://github.com/jamebal (建议不超过5项)
|
||||||
</span>
|
</span>
|
||||||
<div>
|
<div>
|
||||||
<el-divider content-position="center">预览</el-divider>
|
<el-divider content-position="center">预览</el-divider>
|
||||||
@ -44,7 +57,7 @@
|
|||||||
<li v-for="operatingButton in operatingButtons">
|
<li v-for="operatingButton in operatingButtons">
|
||||||
<a :href="operatingButton.url" :title="operatingButton.title" target="_blank">
|
<a :href="operatingButton.url" :title="operatingButton.title" target="_blank">
|
||||||
<dl v-html="operatingButton.fontHtml">
|
<dl v-html="operatingButton.fontHtml">
|
||||||
{{operatingButton.fontHtml}}
|
{{ operatingButton.fontHtml }}
|
||||||
</dl>
|
</dl>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
@ -59,7 +72,6 @@
|
|||||||
<el-checkbox label="tags">标签</el-checkbox>
|
<el-checkbox label="tags">标签</el-checkbox>
|
||||||
</el-checkbox-group>
|
</el-checkbox-group>
|
||||||
<span class="instruction">选中项会显示在导航栏中</span>
|
<span class="instruction">选中项会显示在导航栏中</span>
|
||||||
|
|
||||||
<div class="config-itme-label">归档界面背景大图:</div>
|
<div class="config-itme-label">归档界面背景大图:</div>
|
||||||
<upload-image-input v-model="form.archiveBackground"/>
|
<upload-image-input v-model="form.archiveBackground"/>
|
||||||
<span class="instruction">在这里填入图片的URL地址, 以在归档页面显示一个背景大图。</span>
|
<span class="instruction">在这里填入图片的URL地址, 以在归档页面显示一个背景大图。</span>
|
||||||
@ -77,6 +89,20 @@
|
|||||||
<el-input autosize type="textarea" width="100%" v-model="form.recordPermissionNum"></el-input>
|
<el-input autosize type="textarea" width="100%" v-model="form.recordPermissionNum"></el-input>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
|
<div v-if="subpage" class="list-body">
|
||||||
|
<table-list
|
||||||
|
ref="tableList"
|
||||||
|
:less-client-height="280"
|
||||||
|
:tableData="dataList"
|
||||||
|
:loading="heartwingsLoading"
|
||||||
|
:hasSelection="false"
|
||||||
|
:tableHeader="tableHeader"
|
||||||
|
:pagination="pagination"
|
||||||
|
@pageChange="pageChange"
|
||||||
|
@sizeChange="pageChange"
|
||||||
|
@sortChange="sortChange"
|
||||||
|
></table-list>
|
||||||
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -84,16 +110,19 @@
|
|||||||
<script>
|
<script>
|
||||||
|
|
||||||
import '../../../assets/fontawesome-free-5.11.2-web/css/all.min.css'
|
import '../../../assets/fontawesome-free-5.11.2-web/css/all.min.css'
|
||||||
import {getSetting, updateSetting} from '@/api/setting-api'
|
import {getSetting, getHeartwings, updateSetting} from '@/api/setting-api'
|
||||||
import UploadImageInput from "@/components/input/UploadImageInput";
|
import UploadImageInput from "@/components/input/UploadImageInput"
|
||||||
|
import TableList from "@/components/table/TableList"
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'blogManager',
|
name: 'blogManager',
|
||||||
components: {
|
components: {
|
||||||
UploadImageInput
|
UploadImageInput,
|
||||||
|
TableList
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
subpage: false,
|
||||||
activeName: '1',
|
activeName: '1',
|
||||||
example: '<i class="fab fa-github">github</i>',
|
example: '<i class="fab fa-github">github</i>',
|
||||||
form: {
|
form: {
|
||||||
@ -111,22 +140,69 @@ export default {
|
|||||||
recordPermissionNum: ''
|
recordPermissionNum: ''
|
||||||
},
|
},
|
||||||
operatingButtons: [],
|
operatingButtons: [],
|
||||||
|
dataList: [],
|
||||||
|
heartwingsLoading: false,
|
||||||
|
tableHeader: [
|
||||||
|
{prop: 'heartwings',label: '心语', minWidth: 450},
|
||||||
|
{prop: 'username',label: '账号', minWidth: 110},
|
||||||
|
{prop: 'createTime',label: '创建时间', minWidth: 110, sortable: 'custom'},
|
||||||
|
],
|
||||||
|
queryCondition: {
|
||||||
|
sortProp: '',
|
||||||
|
sortOrder: ''
|
||||||
|
},
|
||||||
|
pagination: {
|
||||||
|
pageIndex: 1,
|
||||||
|
pageSize: 15,
|
||||||
|
pageTotal: 0
|
||||||
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {},
|
computed: {},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.getSetting()
|
this.getSetting()
|
||||||
if(this.$route.query.tab){
|
if (this.$route.query.tab) {
|
||||||
this.activeName = this.$route.query.tab
|
this.activeName = this.$route.query.tab
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
backParent() {
|
||||||
|
this.subpage = false
|
||||||
|
},
|
||||||
|
heartwings() {
|
||||||
|
this.subpage = true
|
||||||
|
this.heartwingsLoading = true
|
||||||
|
this.getHeartwingsList()
|
||||||
|
},
|
||||||
|
getHeartwingsList() {
|
||||||
|
getHeartwings({
|
||||||
|
page: this.pagination.pageIndex,
|
||||||
|
pageSize: this.pagination.pageSize,
|
||||||
|
order: this.queryCondition.sortOrder
|
||||||
|
}).then((res) => {
|
||||||
|
this.dataList = res.data
|
||||||
|
this.heartwingsLoading = false
|
||||||
|
this.pagination.pageTotal = res.count
|
||||||
|
}).catch(() => {
|
||||||
|
this.heartwingsLoading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
pageChange(data) {
|
||||||
|
this.pagination = data.backData;
|
||||||
|
this.getHeartwingsList()
|
||||||
|
},
|
||||||
|
sortChange(data) {
|
||||||
|
let column = data.backData;
|
||||||
|
this.queryCondition.sortProp = column.prop
|
||||||
|
this.queryCondition.sortOrder = column.order
|
||||||
|
this.getHeartwingsList()
|
||||||
|
},
|
||||||
handleClick(tab, event) {
|
handleClick(tab, event) {
|
||||||
this.$router.push({query: {tab: tab.name}})
|
this.$router.push({query: {tab: tab.name}})
|
||||||
},
|
},
|
||||||
preview(){
|
preview() {
|
||||||
this.operatingButtons = []
|
this.operatingButtons = []
|
||||||
if(this.form.operatingButtons) {
|
if (this.form.operatingButtons) {
|
||||||
this.form.operatingButtons.split(/[\n]/).forEach(button => {
|
this.form.operatingButtons.split(/[\n]/).forEach(button => {
|
||||||
let operatingButton = {}
|
let operatingButton = {}
|
||||||
const splitIndex = button.indexOf(":")
|
const splitIndex = button.indexOf(":")
|
||||||
@ -144,19 +220,19 @@ export default {
|
|||||||
},
|
},
|
||||||
getSetting() {
|
getSetting() {
|
||||||
getSetting({userId: this.$store.state.user.userId}).then((res) => {
|
getSetting({userId: this.$store.state.user.userId}).then((res) => {
|
||||||
if(res.data) {
|
if (res.data) {
|
||||||
this.form = res.data;
|
this.form = res.data;
|
||||||
this.preview()
|
this.preview()
|
||||||
}
|
}
|
||||||
}).catch(()=> {
|
}).catch(() => {
|
||||||
|
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
save() {
|
save() {
|
||||||
this.form.userId = this.$store.state.user.userId
|
this.form.userId = this.$store.state.user.userId
|
||||||
updateSetting(this.form).then((res)=> {
|
updateSetting(this.form).then((res) => {
|
||||||
this.$message.success("保存成功!")
|
this.$message.success("保存成功!")
|
||||||
}).catch(()=> {
|
}).catch(() => {
|
||||||
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -166,35 +242,44 @@ export default {
|
|||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@import "src/styles/setting";
|
@import "src/styles/setting";
|
||||||
@import "src/styles/markdown";
|
@import "src/styles/markdown";
|
||||||
|
|
||||||
/deep/ .el-collapse-item__header {
|
/deep/ .el-collapse-item__header {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
padding-left: 20px;
|
padding-left: 20px;
|
||||||
}
|
}
|
||||||
|
.list-body {
|
||||||
|
padding-bottom: 15px;
|
||||||
|
}
|
||||||
/deep/ .el-card__body {
|
/deep/ .el-card__body {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.box-card-header {
|
.box-card-header {
|
||||||
padding: 15px 20px;
|
padding: 15px 20px;
|
||||||
border-bottom: 1px solid #EBEEF5;
|
border-bottom: 1px solid #EBEEF5;
|
||||||
-webkit-box-sizing: border-box;
|
-webkit-box-sizing: border-box;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
background: rgba(235,235,235,0.3);
|
background: rgba(235, 235, 235, 0.3);
|
||||||
-webkit-backdrop-filter: blur(20px);
|
-webkit-backdrop-filter: blur(20px);
|
||||||
backdrop-filter: blur(20px);
|
backdrop-filter: blur(20px);
|
||||||
}
|
}
|
||||||
|
|
||||||
/deep/ .el-divider__text {
|
/deep/ .el-divider__text {
|
||||||
background-color: #fafafa;
|
background-color: #fafafa;
|
||||||
}
|
}
|
||||||
|
|
||||||
.side-toolbar-list {
|
.side-toolbar-list {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
-webkit-flex-wrap: nowrap;
|
-webkit-flex-wrap: nowrap;
|
||||||
-ms-flex-wrap: nowrap;
|
-ms-flex-wrap: nowrap;
|
||||||
flex-wrap: nowrap;
|
flex-wrap: nowrap;
|
||||||
|
|
||||||
li {
|
li {
|
||||||
position: relative;
|
position: relative;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin: 0 .25rem;
|
margin: 0 .25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
li a {
|
li a {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
height: 2.75rem;
|
height: 2.75rem;
|
||||||
@ -210,17 +295,20 @@ export default {
|
|||||||
-ms-transition: 0.3s ease all;
|
-ms-transition: 0.3s ease all;
|
||||||
-o-transition: 0.3s ease all;
|
-o-transition: 0.3s ease all;
|
||||||
transition: 0.3s ease all;
|
transition: 0.3s ease all;
|
||||||
|
|
||||||
svg {
|
svg {
|
||||||
width: 22px;
|
width: 22px;
|
||||||
height: 22px;
|
height: 22px;
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
li a:hover {
|
li a:hover {
|
||||||
background: #333;
|
background: #333;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/deep/ .el-tabs__header {
|
/deep/ .el-tabs__header {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
@media screen and (min-width: 768px) {
|
@media screen and (min-width: 768px) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user