mirror of https://github.com/halo-dev/halo-admin
feat: add OptionsList.
parent
f20ba887cf
commit
06b9225037
|
@ -77,23 +77,23 @@ attachmentApi.type = {
|
||||||
text: 'SM.MS'
|
text: 'SM.MS'
|
||||||
},
|
},
|
||||||
UPOSS: {
|
UPOSS: {
|
||||||
type: 'upyun',
|
type: 'uposs',
|
||||||
text: '又拍云'
|
text: '又拍云'
|
||||||
},
|
},
|
||||||
QINIUOSS: {
|
QINIUOSS: {
|
||||||
type: 'qnyun',
|
type: 'qiniuoss',
|
||||||
text: '七牛云'
|
text: '七牛云'
|
||||||
},
|
},
|
||||||
ALIOSS: {
|
ALIOSS: {
|
||||||
type: 'aliyun',
|
type: 'alioss',
|
||||||
text: '阿里云'
|
text: '阿里云'
|
||||||
},
|
},
|
||||||
BAIDUBOS: {
|
BAIDUBOS: {
|
||||||
type: 'baiduyun',
|
type: 'baidubos',
|
||||||
text: '百度云'
|
text: '百度云'
|
||||||
},
|
},
|
||||||
TENCENTCOS: {
|
TENCENTCOS: {
|
||||||
type: 'tencentyun',
|
type: 'tencentcos',
|
||||||
text: '腾讯云'
|
text: '腾讯云'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,14 @@ optionApi.listAll = keys => {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
optionApi.query = params => {
|
||||||
|
return service({
|
||||||
|
url: `${baseUrl}/list_view`,
|
||||||
|
params: params,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
optionApi.save = options => {
|
optionApi.save = options => {
|
||||||
return service({
|
return service({
|
||||||
url: `${baseUrl}/map_view/saving`,
|
url: `${baseUrl}/map_view/saving`,
|
||||||
|
@ -22,4 +30,15 @@ optionApi.save = options => {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
optionApi.type = {
|
||||||
|
INTERNAL: {
|
||||||
|
type: 'internal',
|
||||||
|
text: '系统'
|
||||||
|
},
|
||||||
|
CUSTOM: {
|
||||||
|
type: 'custom',
|
||||||
|
text: '自定义'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export default optionApi
|
export default optionApi
|
||||||
|
|
|
@ -160,7 +160,7 @@
|
||||||
<a-form-item label="评论回复通知对方:">
|
<a-form-item label="评论回复通知对方:">
|
||||||
<a-switch v-model="options.comment_reply_notice" />
|
<a-switch v-model="options.comment_reply_notice" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="API 评论开关:">
|
<a-form-item label="API 评论开关:" help="* 关闭之后将无法进行评论">
|
||||||
<a-switch v-model="options.comment_api_enabled" />
|
<a-switch v-model="options.comment_api_enabled" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="评论模块 JS:">
|
<a-form-item label="评论模块 JS:">
|
||||||
|
|
|
@ -13,12 +13,18 @@
|
||||||
</span>
|
</span>
|
||||||
<Environment />
|
<Environment />
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
<a-tab-pane key="runtimelogs">
|
<a-tab-pane key="runtimeLogs">
|
||||||
<span slot="tab">
|
<span slot="tab">
|
||||||
<a-icon type="code" />实时日志
|
<a-icon type="code" />实时日志
|
||||||
</span>
|
</span>
|
||||||
<RuntimeLogs />
|
<RuntimeLogs />
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
|
<a-tab-pane key="optionsList">
|
||||||
|
<span slot="tab">
|
||||||
|
<a-icon type="code" />系统变量
|
||||||
|
</span>
|
||||||
|
<OptionsList />
|
||||||
|
</a-tab-pane>
|
||||||
<a-tab-pane key="settings">
|
<a-tab-pane key="settings">
|
||||||
<span slot="tab">
|
<span slot="tab">
|
||||||
<a-icon type="setting" />设置
|
<a-icon type="setting" />设置
|
||||||
|
@ -43,11 +49,13 @@ import { mapGetters } from 'vuex'
|
||||||
import Environment from './tabs/Environment'
|
import Environment from './tabs/Environment'
|
||||||
import RuntimeLogs from './tabs/RuntimeLogs'
|
import RuntimeLogs from './tabs/RuntimeLogs'
|
||||||
import SettingsForm from './tabs/SettingsForm'
|
import SettingsForm from './tabs/SettingsForm'
|
||||||
|
import OptionsList from './tabs/OptionsList'
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
Environment,
|
Environment,
|
||||||
RuntimeLogs,
|
RuntimeLogs,
|
||||||
SettingsForm
|
SettingsForm,
|
||||||
|
OptionsList
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapGetters(['options'])
|
...mapGetters(['options'])
|
||||||
|
|
|
@ -0,0 +1,245 @@
|
||||||
|
<template>
|
||||||
|
<div class="option-tab-wrapper">
|
||||||
|
<a-card
|
||||||
|
:bordered="false"
|
||||||
|
:bodyStyle="{ padding: 0 }"
|
||||||
|
>
|
||||||
|
<div class="table-page-search-wrapper">
|
||||||
|
<a-form layout="inline">
|
||||||
|
<a-row :gutter="48">
|
||||||
|
<a-col
|
||||||
|
:md="6"
|
||||||
|
:sm="24"
|
||||||
|
>
|
||||||
|
<a-form-item label="关键词">
|
||||||
|
<a-input
|
||||||
|
v-model="queryParam.keyword"
|
||||||
|
@keyup.enter="handleQuery()"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col
|
||||||
|
:md="6"
|
||||||
|
:sm="24"
|
||||||
|
>
|
||||||
|
<a-form-item label="类型">
|
||||||
|
<a-select
|
||||||
|
v-model="queryParam.type"
|
||||||
|
placeholder="请选择类型"
|
||||||
|
@change="handleQuery()"
|
||||||
|
>
|
||||||
|
<a-select-option
|
||||||
|
v-for="item in Object.keys(optionType)"
|
||||||
|
:key="item"
|
||||||
|
:value="item"
|
||||||
|
>{{ optionType[item].text }}</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
|
||||||
|
<a-col
|
||||||
|
:md="12"
|
||||||
|
:sm="24"
|
||||||
|
>
|
||||||
|
<span class="table-page-search-submitButtons">
|
||||||
|
<a-button
|
||||||
|
type="primary"
|
||||||
|
@click="handleQuery()"
|
||||||
|
>查询</a-button>
|
||||||
|
<a-button
|
||||||
|
style="margin-left: 8px;"
|
||||||
|
@click="handleResetParam()"
|
||||||
|
>重置</a-button>
|
||||||
|
</span>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
</a-form>
|
||||||
|
</div>
|
||||||
|
<div class="table-operator">
|
||||||
|
<a-button
|
||||||
|
type="primary"
|
||||||
|
icon="plus"
|
||||||
|
>新增</a-button>
|
||||||
|
</div>
|
||||||
|
<div style="margin-top:15px">
|
||||||
|
<a-table
|
||||||
|
:rowKey="option => option.id"
|
||||||
|
:columns="columns"
|
||||||
|
:dataSource="formattedDatas"
|
||||||
|
:loading="loading"
|
||||||
|
:pagination="false"
|
||||||
|
>
|
||||||
|
<ellipsis
|
||||||
|
:length="50"
|
||||||
|
tooltip
|
||||||
|
slot="key"
|
||||||
|
slot-scope="key"
|
||||||
|
>
|
||||||
|
{{ key }}
|
||||||
|
</ellipsis>
|
||||||
|
<ellipsis
|
||||||
|
:length="50"
|
||||||
|
tooltip
|
||||||
|
slot="value"
|
||||||
|
slot-scope="value"
|
||||||
|
>
|
||||||
|
{{ value }}
|
||||||
|
</ellipsis>
|
||||||
|
<span
|
||||||
|
slot="type"
|
||||||
|
slot-scope="typeProperty"
|
||||||
|
>
|
||||||
|
{{ typeProperty.text }}
|
||||||
|
</span>
|
||||||
|
<span
|
||||||
|
slot="createTime"
|
||||||
|
slot-scope="createTime"
|
||||||
|
>
|
||||||
|
<a-tooltip placement="top">
|
||||||
|
<template slot="title">
|
||||||
|
{{ createTime | moment }}
|
||||||
|
</template>
|
||||||
|
{{ createTime | timeAgo }}
|
||||||
|
</a-tooltip>
|
||||||
|
</span>
|
||||||
|
<span
|
||||||
|
slot="updateTime"
|
||||||
|
slot-scope="updateTime"
|
||||||
|
>
|
||||||
|
<a-tooltip placement="top">
|
||||||
|
<template slot="title">
|
||||||
|
{{ updateTime | moment }}
|
||||||
|
</template>
|
||||||
|
{{ updateTime | timeAgo }}
|
||||||
|
</a-tooltip>
|
||||||
|
</span>
|
||||||
|
<span
|
||||||
|
slot="action"
|
||||||
|
>
|
||||||
|
<a href="javascript:void(0);">编辑</a>
|
||||||
|
<a-divider type="vertical" />
|
||||||
|
<a-popconfirm
|
||||||
|
:title="'你确定要永久删除该变量?'"
|
||||||
|
okText="确定"
|
||||||
|
cancelText="取消"
|
||||||
|
>
|
||||||
|
<a href="javascript:;">删除</a>
|
||||||
|
</a-popconfirm>
|
||||||
|
</span>
|
||||||
|
</a-table>
|
||||||
|
<div class="page-wrapper">
|
||||||
|
<a-pagination
|
||||||
|
class="pagination"
|
||||||
|
:current="pagination.page"
|
||||||
|
:total="pagination.total"
|
||||||
|
:defaultPageSize="pagination.size"
|
||||||
|
:pageSizeOptions="['1', '2', '5', '10', '20', '50', '100']"
|
||||||
|
showSizeChanger
|
||||||
|
@showSizeChange="handlePaginationChange"
|
||||||
|
@change="handlePaginationChange"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import optionApi from '@/api/option'
|
||||||
|
const columns = [
|
||||||
|
{
|
||||||
|
title: 'Key',
|
||||||
|
dataIndex: 'key',
|
||||||
|
scopedSlots: { customRender: 'key' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Value',
|
||||||
|
dataIndex: 'value',
|
||||||
|
scopedSlots: { customRender: 'value' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '类型',
|
||||||
|
dataIndex: 'typeProperty',
|
||||||
|
width: '100px',
|
||||||
|
scopedSlots: { customRender: 'type' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '创建时间',
|
||||||
|
dataIndex: 'createTime',
|
||||||
|
width: '200px',
|
||||||
|
scopedSlots: { customRender: 'createTime' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '更新时间',
|
||||||
|
dataIndex: 'updateTime',
|
||||||
|
width: '200px',
|
||||||
|
scopedSlots: { customRender: 'updateTime' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
dataIndex: 'action',
|
||||||
|
width: '180px',
|
||||||
|
scopedSlots: { customRender: 'action' }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
export default {
|
||||||
|
name: 'OptionsList',
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
optionType: optionApi.type,
|
||||||
|
columns: columns,
|
||||||
|
pagination: {
|
||||||
|
page: 1,
|
||||||
|
size: 10,
|
||||||
|
sort: null
|
||||||
|
},
|
||||||
|
queryParam: {
|
||||||
|
page: 0,
|
||||||
|
size: 10,
|
||||||
|
sort: null,
|
||||||
|
keyword: null,
|
||||||
|
status: null
|
||||||
|
},
|
||||||
|
loading: false,
|
||||||
|
options: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
formattedDatas() {
|
||||||
|
return this.options.map(option => {
|
||||||
|
option.typeProperty = this.optionType[option.type]
|
||||||
|
return option
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.loadOptions()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
loadOptions() {
|
||||||
|
this.loading = true
|
||||||
|
this.queryParam.page = this.pagination.page - 1
|
||||||
|
this.queryParam.size = this.pagination.size
|
||||||
|
this.queryParam.sort = this.pagination.sort
|
||||||
|
optionApi.query(this.queryParam).then(response => {
|
||||||
|
this.options = response.data.data.content
|
||||||
|
this.pagination.total = response.data.data.total
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleQuery() {
|
||||||
|
this.handlePaginationChange(1, this.pagination.size)
|
||||||
|
},
|
||||||
|
handlePaginationChange(page, pageSize) {
|
||||||
|
this.$log.debug(`Current: ${page}, PageSize: ${pageSize}`)
|
||||||
|
this.pagination.page = page
|
||||||
|
this.pagination.size = pageSize
|
||||||
|
this.loadOptions()
|
||||||
|
},
|
||||||
|
handleResetParam() {
|
||||||
|
this.queryParam.keyword = null
|
||||||
|
this.queryParam.type = null
|
||||||
|
this.handlePaginationChange(1, this.pagination.size)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
Loading…
Reference in New Issue