parent
664c6c2bb0
commit
3c3ebab876
File diff suppressed because one or more lines are too long
|
@ -1 +0,0 @@
|
|||
.margin-bottom[data-v-3e2e0422]{margin-bottom:5px}
|
|
@ -1 +1 @@
|
|||
.back-to-ceiling[data-v-766863d9]{position:fixed;display:inline-block;text-align:center;cursor:pointer}.back-to-ceiling[data-v-766863d9]:hover{background:#d5dbe7}.fade-enter-active[data-v-766863d9],.fade-leave-active[data-v-766863d9]{-webkit-transition:opacity .5s;transition:opacity .5s}.fade-enter[data-v-766863d9],.fade-leave-to[data-v-766863d9]{opacity:0}.back-to-ceiling .Icon[data-v-766863d9]{fill:#9aaabf;background:none}.box-card[data-v-b50e96ee]{text-align:center}.box-card .text[data-v-b50e96ee]{text-align:center;color:#666;font-size:20px;line-height:32px;font-weight:700;margin-bottom:10px}
|
||||
.back-to-ceiling[data-v-766863d9]{position:fixed;display:inline-block;text-align:center;cursor:pointer}.back-to-ceiling[data-v-766863d9]:hover{background:#d5dbe7}.fade-enter-active[data-v-766863d9],.fade-leave-active[data-v-766863d9]{-webkit-transition:opacity .5s;transition:opacity .5s}.fade-enter[data-v-766863d9],.fade-leave-to[data-v-766863d9]{opacity:0}.back-to-ceiling .Icon[data-v-766863d9]{fill:#9aaabf;background:none}.box-card[data-v-bc6fad40]{text-align:center}.box-card .text[data-v-bc6fad40]{text-align:center;color:#666;font-size:20px;line-height:32px;font-weight:700;margin-bottom:10px}
|
|
@ -0,0 +1 @@
|
|||
.padding-right[data-v-ef947cf4]{color:#303133;font-size:14px;padding-right:30px}.el-icon-copy-document[data-v-ef947cf4]{color:#1890ff}
|
|
@ -1 +1 @@
|
|||
.back-to-ceiling[data-v-766863d9]{position:fixed;display:inline-block;text-align:center;cursor:pointer}.back-to-ceiling[data-v-766863d9]:hover{background:#d5dbe7}.fade-enter-active[data-v-766863d9],.fade-leave-active[data-v-766863d9]{-webkit-transition:opacity .5s;transition:opacity .5s}.fade-enter[data-v-766863d9],.fade-leave-to[data-v-766863d9]{opacity:0}.back-to-ceiling .Icon[data-v-766863d9]{fill:#9aaabf;background:none}.box-card[data-v-4d30981a]{text-align:center}.box-card .text[data-v-4d30981a]{text-align:center;color:#666;font-size:20px;line-height:32px;font-weight:700;margin-bottom:10px}
|
||||
.back-to-ceiling[data-v-766863d9]{position:fixed;display:inline-block;text-align:center;cursor:pointer}.back-to-ceiling[data-v-766863d9]:hover{background:#d5dbe7}.fade-enter-active[data-v-766863d9],.fade-leave-active[data-v-766863d9]{-webkit-transition:opacity .5s;transition:opacity .5s}.fade-enter[data-v-766863d9],.fade-leave-to[data-v-766863d9]{opacity:0}.back-to-ceiling .Icon[data-v-766863d9]{fill:#9aaabf;background:none}.box-card[data-v-a7bbc70a]{text-align:center}.box-card .text[data-v-a7bbc70a]{text-align:center;color:#666;font-size:20px;line-height:32px;font-weight:700;margin-bottom:10px}
|
|
@ -0,0 +1 @@
|
|||
.margin-bottom[data-v-766fc46c]{margin-bottom:5px}
|
|
@ -1 +0,0 @@
|
|||
.padding-right[data-v-36de341c]{color:#303133;font-size:14px;padding-right:30px}.el-icon-copy-document[data-v-36de341c]{color:#1890ff}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -23,7 +23,7 @@ import Layout from '@/layout'
|
|||
* // 你可以设置 alwaysShow: true,这样它就会忽略之前定义的规则,一直显示根路由
|
||||
* alwaysShow: true
|
||||
*
|
||||
* // 设定路由的名字,一定要填写不然使用<keep-alive>时会出现各种问题
|
||||
* // 设定路由的名字,一定要填写且与vue文件name一致,不然使用<keep-alive>时会出现各种问题
|
||||
* name: 'Index'
|
||||
* meta: {
|
||||
* roles: ['admin/Index/index'] // 设置该路由进入的权限(菜单链接),支持多个权限叠加
|
||||
|
@ -110,7 +110,12 @@ export const asyncRoutes = [
|
|||
meta: {
|
||||
title: '会员管理',
|
||||
icon: 'el-icon-user',
|
||||
roles: ['admin/Member/list', 'admin/MemberLog/list', 'admin/Member/stat']
|
||||
roles: [
|
||||
'admin/Member/list',
|
||||
'admin/MemberLog/list',
|
||||
'admin/MemberLog/stat',
|
||||
'admin/Member/stat'
|
||||
]
|
||||
},
|
||||
redirect: 'noRedirect',
|
||||
component: Layout,
|
||||
|
@ -136,17 +141,6 @@ export const asyncRoutes = [
|
|||
},
|
||||
component: () => import('@/views/member/member-log')
|
||||
},
|
||||
{
|
||||
path: 'member-log-stat',
|
||||
name: 'MemberLogStat',
|
||||
meta: {
|
||||
title: '会员日志统计',
|
||||
roles: ['admin/MemberLog/stat'],
|
||||
activeMenu: '/member/member-log'
|
||||
},
|
||||
component: () => import('@/views/member/member-log-stat'),
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
path: 'member-stat',
|
||||
name: 'MemberStat',
|
||||
|
@ -156,6 +150,16 @@ export const asyncRoutes = [
|
|||
roles: ['admin/Member/stat']
|
||||
},
|
||||
component: () => import('@/views/member/member-stat')
|
||||
},
|
||||
{
|
||||
path: 'member-log-stat',
|
||||
name: 'MemberLogStat',
|
||||
meta: {
|
||||
title: '会员日志统计',
|
||||
icon: 'el-icon-user',
|
||||
roles: ['admin/MemberLog/stat']
|
||||
},
|
||||
component: () => import('@/views/member/member-log-stat')
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -226,7 +230,8 @@ export const asyncRoutes = [
|
|||
icon: 'el-icon-folder',
|
||||
roles: [
|
||||
'admin/file.File/list',
|
||||
'admin/file.Group/list'
|
||||
'admin/file.Group/list',
|
||||
'admin/file.Setting/info'
|
||||
]
|
||||
},
|
||||
redirect: 'noRedirect',
|
||||
|
@ -235,7 +240,7 @@ export const asyncRoutes = [
|
|||
children: [
|
||||
{
|
||||
path: 'file',
|
||||
name: 'File',
|
||||
name: 'FileFile',
|
||||
meta: {
|
||||
title: '文件管理',
|
||||
icon: 'el-icon-folder',
|
||||
|
@ -245,7 +250,7 @@ export const asyncRoutes = [
|
|||
},
|
||||
{
|
||||
path: 'group',
|
||||
name: 'Group',
|
||||
name: 'FileGroup',
|
||||
meta: {
|
||||
title: '文件分组',
|
||||
icon: 'el-icon-folder',
|
||||
|
@ -255,7 +260,7 @@ export const asyncRoutes = [
|
|||
},
|
||||
{
|
||||
path: 'setting',
|
||||
name: 'setting',
|
||||
name: 'FileSetting',
|
||||
meta: {
|
||||
title: '文件设置',
|
||||
icon: 'el-icon-folder',
|
||||
|
@ -288,7 +293,7 @@ export const asyncRoutes = [
|
|||
children: [
|
||||
{
|
||||
path: 'api',
|
||||
name: 'Api',
|
||||
name: 'SettingApi',
|
||||
meta: {
|
||||
title: '接口管理',
|
||||
icon: 'el-icon-setting',
|
||||
|
@ -298,7 +303,7 @@ export const asyncRoutes = [
|
|||
},
|
||||
{
|
||||
path: 'base',
|
||||
name: 'Base',
|
||||
name: 'SettingBase',
|
||||
meta: {
|
||||
title: '设置管理',
|
||||
icon: 'el-icon-setting',
|
||||
|
@ -313,7 +318,7 @@ export const asyncRoutes = [
|
|||
},
|
||||
{
|
||||
path: 'wechat',
|
||||
name: 'Wechat',
|
||||
name: 'SettingWechat',
|
||||
meta: {
|
||||
title: '微信设置',
|
||||
icon: 'el-icon-setting',
|
||||
|
@ -323,7 +328,7 @@ export const asyncRoutes = [
|
|||
},
|
||||
{
|
||||
path: 'region',
|
||||
name: 'Region',
|
||||
name: 'SettingRegion',
|
||||
meta: {
|
||||
title: '地区管理',
|
||||
icon: 'el-icon-setting',
|
||||
|
@ -345,6 +350,7 @@ export const asyncRoutes = [
|
|||
'admin/admin.Role/list',
|
||||
'admin/admin.User/list',
|
||||
'admin/admin.UserLog/list',
|
||||
'admin/admin.UserLog/stat',
|
||||
'admin/admin.UserCenter/info'
|
||||
]
|
||||
},
|
||||
|
@ -386,23 +392,12 @@ export const asyncRoutes = [
|
|||
path: 'user-log',
|
||||
name: 'AdminUserLog',
|
||||
meta: {
|
||||
title: '日志管理',
|
||||
title: '用户日志',
|
||||
icon: 'el-icon-lock',
|
||||
roles: ['admin/admin.UserLog/list']
|
||||
},
|
||||
component: () => import('@/views/admin/user/user-log')
|
||||
},
|
||||
{
|
||||
path: 'user-log-stat',
|
||||
name: 'AdminUserLogStat',
|
||||
meta: {
|
||||
title: '日志管理统计',
|
||||
roles: ['admin/admin.UserLog/stat'],
|
||||
activeMenu: '/admin/rule/user-log'
|
||||
},
|
||||
component: () => import('@/views/admin/user/user-log-stat'),
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
path: 'user-center',
|
||||
name: 'AdminUserCenter',
|
||||
|
@ -412,6 +407,16 @@ export const asyncRoutes = [
|
|||
roles: ['admin/admin.UserCenter/info']
|
||||
},
|
||||
component: () => import('@/views/admin/user/user-center')
|
||||
},
|
||||
{
|
||||
path: 'user-log-stat',
|
||||
name: 'AdminUserLogStat',
|
||||
meta: {
|
||||
title: '用户日志统计',
|
||||
icon: 'el-icon-lock',
|
||||
roles: ['admin/admin.UserLog/stat']
|
||||
},
|
||||
component: () => import('@/views/admin/user/user-log-stat')
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -438,7 +443,7 @@ export const asyncRoutes = [
|
|||
children: [
|
||||
{
|
||||
path: 'setting',
|
||||
name: 'AdminSetting',
|
||||
name: 'AdminSystemSetting',
|
||||
meta: {
|
||||
title: '设置管理',
|
||||
icon: 'el-icon-s-tools',
|
||||
|
@ -454,7 +459,7 @@ export const asyncRoutes = [
|
|||
},
|
||||
{
|
||||
path: 'apidoc',
|
||||
name: 'AdminApidoc',
|
||||
name: 'AdminSystemApidoc',
|
||||
meta: {
|
||||
title: '接口文档',
|
||||
icon: 'el-icon-s-tools',
|
||||
|
@ -464,7 +469,7 @@ export const asyncRoutes = [
|
|||
},
|
||||
{
|
||||
path: 'utils',
|
||||
name: 'AdminUtils',
|
||||
name: 'AdminSystemUtils',
|
||||
meta: {
|
||||
title: '实用工具',
|
||||
icon: 'el-icon-s-tools',
|
||||
|
|
|
@ -2,16 +2,17 @@
|
|||
<div class="app-container">
|
||||
<el-row :gutter="0">
|
||||
<el-col :span="24">
|
||||
<span class="padding-right">密码:{{ apidocModel.apidoc_pwd }}
|
||||
<i class="el-icon-copy-document" title="复制密码" @click="apidocCopy(apidocModel.apidoc_pwd, $event)" />
|
||||
<span class="padding-right">密码:{{ model.apidoc_pwd }}
|
||||
<i class="el-icon-copy-document" title="复制密码" @click="copy(model.apidoc_pwd, $event)" />
|
||||
</span>
|
||||
<span class="padding-right">AdminToken:{{ apidocModel.admin_token_sub }}
|
||||
<i class="el-icon-copy-document" title="复制Token" @click="apidocCopy(apidocModel.admin_token, $event)" />
|
||||
<span class="padding-right">AdminToken:{{ model.admin_token_sub }}
|
||||
<i class="el-icon-copy-document" title="复制Token" @click="copy(model.admin_token, $event)" />
|
||||
</span>
|
||||
<el-button class="filter-item" size="mini" @click="refresh()"><i class="el-icon-refresh" />刷新</el-button>
|
||||
<el-button class="filter-item" size="mini" circle title="刷新" @click="refresh()"><i class="el-icon-refresh" /></el-button>
|
||||
<el-link style="margin-left:10px" :href="model.apidoc_url" target="_blank" :underline="false" title="新标签页打开"><i class="el-icon-position" /></el-link>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<iframe :src="apidocModel.apidoc_url" frameborder="0" width="100%" :height="height" />
|
||||
<iframe :src="model.apidoc_url" frameborder="0" width="100%" :height="height" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
|
@ -23,13 +24,13 @@ import clip from '@/utils/clipboard'
|
|||
import { apidoc } from '@/api/admin/apidoc'
|
||||
|
||||
export default {
|
||||
name: 'AdminApidoc',
|
||||
name: 'AdminSystemApidoc',
|
||||
components: {},
|
||||
data() {
|
||||
return {
|
||||
height: 600,
|
||||
isload: false,
|
||||
apidocModel: {
|
||||
model: {
|
||||
apidoc_url: '',
|
||||
apidoc_pwd: '',
|
||||
admin_token: '',
|
||||
|
@ -47,18 +48,19 @@ export default {
|
|||
apidoc() {
|
||||
apidoc().then(res => {
|
||||
this.isload = true
|
||||
this.apidocModel = res.data
|
||||
this.model = res.data
|
||||
})
|
||||
},
|
||||
// 刷新
|
||||
refresh() {
|
||||
this.apidoc()
|
||||
},
|
||||
apidocCopy(text, event) {
|
||||
// 复制
|
||||
copy(text, event) {
|
||||
if (text) {
|
||||
clip(text, event)
|
||||
} else {
|
||||
this.$message({ message: '复制失败', type: 'error' })
|
||||
this.$message.error('复制失败')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,7 +8,9 @@
|
|||
</el-form-item>
|
||||
<el-form-item label="接口速率">
|
||||
<el-col :span="11">
|
||||
<el-input v-model="model.api_rate_num" type="number" placeholder="次数" />
|
||||
<el-input v-model="model.api_rate_num" type="number" placeholder="次数">
|
||||
<template slot="append">次</template>
|
||||
</el-input>
|
||||
</el-col>
|
||||
<el-col class="line" :span="2" style="text-align:center">/</el-col>
|
||||
<el-col :span="11">
|
||||
|
@ -31,7 +33,7 @@
|
|||
import { apiInfo, apiEdit } from '@/api/admin/setting'
|
||||
|
||||
export default {
|
||||
name: 'Api',
|
||||
name: 'AdminSettingApi',
|
||||
components: {},
|
||||
data() {
|
||||
return {
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
import { cacheInfo, cacheClear } from '@/api/admin/setting'
|
||||
|
||||
export default {
|
||||
name: 'Cache',
|
||||
name: 'AdminSettingCache',
|
||||
components: {},
|
||||
data() {
|
||||
return {
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
import { captchaInfo, captchaEdit } from '@/api/admin/setting'
|
||||
|
||||
export default {
|
||||
name: 'Captcha',
|
||||
name: 'AdminSettingCaptcha',
|
||||
components: {},
|
||||
data() {
|
||||
return {
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
import { logInfo, logEdit } from '@/api/admin/setting'
|
||||
|
||||
export default {
|
||||
name: 'Log',
|
||||
name: 'AdminSettingLog',
|
||||
components: {},
|
||||
data() {
|
||||
return {
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
import { tokenInfo, tokenEdit } from '@/api/admin/setting'
|
||||
|
||||
export default {
|
||||
name: 'Token',
|
||||
name: 'AdminSettingToken',
|
||||
components: {},
|
||||
data() {
|
||||
return {
|
||||
|
|
|
@ -30,7 +30,7 @@ import Log from './components/Log'
|
|||
import Api from './components/Api'
|
||||
|
||||
export default {
|
||||
name: 'AdminSetting',
|
||||
name: 'AdminSystemSetting',
|
||||
directives: { permission },
|
||||
components: { Cache, Token, Captcha, Log, Api },
|
||||
data() {
|
||||
|
|
|
@ -85,13 +85,13 @@
|
|||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
style="max-width:280px"
|
||||
@change="echartDateChange()"
|
||||
@change="echartUserDateChange()"
|
||||
/>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="0">
|
||||
<el-col :sm="24">
|
||||
<div id="echartDate" :style="{height:height-100+'px'}" />
|
||||
<div id="echartUserDate" :style="{height:height-100+'px'}" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-card>
|
||||
|
@ -116,13 +116,13 @@
|
|||
<el-divider />
|
||||
<el-row v-loading="loadField" :gutter="0">
|
||||
<el-col :sm="24">
|
||||
<div id="echartFieldLine" :style="{height:height+'px'}" />
|
||||
<div id="echartUserLine" :style="{height:height+'px'}" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-divider />
|
||||
<el-row v-loading="loadField" :gutter="0">
|
||||
<el-col :sm="24">
|
||||
<div id="echartFieldPie" :style="{height:height+'px'}" />
|
||||
<div id="echartUserPie" :style="{height:height+'px'}" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-card>
|
||||
|
@ -167,13 +167,13 @@ export default {
|
|||
lastmonth: '--'
|
||||
},
|
||||
date: {
|
||||
x_data: [],
|
||||
y_data: [],
|
||||
x: [],
|
||||
s: [],
|
||||
date: []
|
||||
},
|
||||
field: {
|
||||
x_data: [],
|
||||
y_data: [],
|
||||
x: [],
|
||||
s: [],
|
||||
date: []
|
||||
},
|
||||
fieldType: [
|
||||
|
@ -218,21 +218,21 @@ export default {
|
|||
this.num = res.data.num
|
||||
this.date = res.data.date
|
||||
this.field = res.data.field
|
||||
this.echartDate(res.data.date)
|
||||
this.echartFieldLine(res.data.field)
|
||||
this.echartFieldPie(res.data.field)
|
||||
this.echartUserDate(res.data.date)
|
||||
this.echartUserLine(res.data.field)
|
||||
this.echartUserPie(res.data.field)
|
||||
this.loadNum = false
|
||||
}).catch(() => {
|
||||
this.loadNum = false
|
||||
})
|
||||
},
|
||||
echartDateChange() {
|
||||
echartUserDateChange() {
|
||||
this.loadDate = true
|
||||
stat({
|
||||
type: 'date',
|
||||
date: this.date.date
|
||||
}).then(res => {
|
||||
this.echartDate(res.data.date)
|
||||
this.echartUserDate(res.data.date)
|
||||
this.loadDate = false
|
||||
}).catch(() => {
|
||||
this.loadDate = false
|
||||
|
@ -245,15 +245,15 @@ export default {
|
|||
date: this.field.date,
|
||||
field: this.fieldValue
|
||||
}).then(res => {
|
||||
this.echartFieldLine(res.data.field)
|
||||
this.echartFieldPie(res.data.field)
|
||||
this.echartUserLine(res.data.field)
|
||||
this.echartUserPie(res.data.field)
|
||||
this.loadField = false
|
||||
}).catch(() => {
|
||||
this.loadField = false
|
||||
})
|
||||
},
|
||||
echartDate(data) {
|
||||
var echart = echarts.init(document.getElementById('echartDate'))
|
||||
echartUserDate(data) {
|
||||
var echart = echarts.init(document.getElementById('echartUserDate'))
|
||||
var option = {
|
||||
title: {
|
||||
text: ''
|
||||
|
@ -264,14 +264,14 @@ export default {
|
|||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
right: '3%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
boundaryGap: false,
|
||||
data: data.x_data
|
||||
data: data.x
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value'
|
||||
|
@ -281,14 +281,18 @@ export default {
|
|||
name: '',
|
||||
type: 'line',
|
||||
smooth: true,
|
||||
data: data.y_data
|
||||
data: data.s,
|
||||
label: {
|
||||
show: true,
|
||||
position: 'top'
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
echart.setOption(option)
|
||||
},
|
||||
echartFieldLine(data) {
|
||||
var echart = echarts.init(document.getElementById('echartFieldLine'))
|
||||
echartUserLine(data) {
|
||||
var echart = echarts.init(document.getElementById('echartUserLine'))
|
||||
var option = {
|
||||
title: {
|
||||
text: ''
|
||||
|
@ -302,14 +306,14 @@ export default {
|
|||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
right: '3%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
xAxis: [
|
||||
{
|
||||
type: 'category',
|
||||
data: data.x_data
|
||||
data: data.x
|
||||
}
|
||||
],
|
||||
yAxis: [
|
||||
|
@ -320,14 +324,18 @@ export default {
|
|||
series: [
|
||||
{
|
||||
type: 'bar',
|
||||
data: data.y_data
|
||||
data: data.s,
|
||||
label: {
|
||||
show: true,
|
||||
position: 'top'
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
echart.setOption(option)
|
||||
},
|
||||
echartFieldPie(data) {
|
||||
var echart = echarts.init(document.getElementById('echartFieldPie'))
|
||||
echartUserPie(data) {
|
||||
var echart = echarts.init(document.getElementById('echartUserPie'))
|
||||
var option = {
|
||||
title: {
|
||||
text: ''
|
||||
|
@ -347,12 +355,15 @@ export default {
|
|||
type: 'pie',
|
||||
radius: '55%',
|
||||
center: ['50%', '60%'],
|
||||
data: data.p_data,
|
||||
emphasis: {
|
||||
Style: {
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
data: data.sp,
|
||||
itemStyle: {
|
||||
borderRadius: 8,
|
||||
normal: {
|
||||
label: {
|
||||
show: true,
|
||||
formatter: '{b} : {c} ({d}%)'
|
||||
},
|
||||
labelLine: { show: true }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,7 +27,6 @@
|
|||
</el-col>
|
||||
<el-col :xs="24" :sm="4" style="text-align:right;">
|
||||
<el-button v-permission="['admin/admin.UserLog/clear']" class="filter-item" title="日志清除" @click="clear()">清除</el-button>
|
||||
<el-button v-permission="['admin/admin.UserLog/stat']" class="filter-item" type="primary" title="日志管理统计" @click="stat">统计</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
|
@ -300,10 +299,6 @@ export default {
|
|||
}).catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
// 统计
|
||||
stat() {
|
||||
this.$router.push('/admin/rule/user-log-stat')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,79 +1,79 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<el-tabs v-model="actTabName" @tab-click="tabClick">
|
||||
<el-tab-pane v-if="checkPermission(['admin/admin.Utils/strrand','admin/admin.Utils/strtran'])" label="字符串" name="str">
|
||||
<el-tabs>
|
||||
<el-tab-pane v-if="checkPermission(['admin/admin.Utils/strrand','admin/admin.Utils/strtran'])" label="字符串" lazy>
|
||||
<el-row :gutter="8">
|
||||
<el-col v-permission="['admin/admin.Utils/strrand']" :sm="24" :md="12">
|
||||
<el-col v-permission="['admin/admin.Utils/strrand']" :xs="24" :sm="12">
|
||||
<div class=" filter-container">
|
||||
<Strrand v-if="str" />
|
||||
<strrand />
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col v-permission="['admin/admin.Utils/strtran']" :sm="24" :md="12">
|
||||
<el-col v-permission="['admin/admin.Utils/strtran']" :xs="24" :sm="12">
|
||||
<div class="filter-container">
|
||||
<Strtran v-if="str" />
|
||||
<Strtran />
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane v-if="checkPermission(['admin/admin.Utils/timestamp'])" label="时间戳" name="timestamp">
|
||||
<el-tab-pane v-if="checkPermission(['admin/admin.Utils/timestamp'])" label="时间戳" lazy>
|
||||
<el-row :gutter="8">
|
||||
<el-col :sm="24" :md="12">
|
||||
<el-col :xs="24" :sm="12">
|
||||
<div class="filter-container">
|
||||
<Timestamp v-if="timestamp" />
|
||||
<Timestamp />
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane v-if="checkPermission(['admin/admin.Utils/qrcode'])" label="二维码" name="qrcode">
|
||||
<el-tab-pane v-if="checkPermission(['admin/admin.Utils/qrcode'])" label="二维码" lazy>
|
||||
<el-row :gutter="8">
|
||||
<el-col :sm="24" :md="12">
|
||||
<el-col :xs="24" :sm="12">
|
||||
<div class="filter-container">
|
||||
<Qrcode v-if="qrcode" />
|
||||
<Qrcode />
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane v-if="checkPermission(['admin/admin.Utils/bytetran'])" label="字节" name="byte">
|
||||
<el-tab-pane v-if="checkPermission(['admin/admin.Utils/bytetran'])" label="字节" lazy>
|
||||
<el-row :gutter="8">
|
||||
<el-col :sm="24" :md="12">
|
||||
<el-col :xs="24" :sm="12">
|
||||
<div class="filter-container">
|
||||
<Byte v-if="byte" />
|
||||
<Byte />
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane v-if="checkPermission(['admin/admin.Utils/ipinfo'])" label="IP" name="ip">
|
||||
<el-tab-pane v-if="checkPermission(['admin/admin.Utils/ipinfo'])" label="IP" lazy>
|
||||
<el-row :gutter="8">
|
||||
<el-col :sm="24" :md="12">
|
||||
<el-col :xs="24" :sm="12">
|
||||
<div class="filter-container">
|
||||
<Ip v-if="ip" />
|
||||
<Ip />
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane v-if="checkPermission(['admin/admin.Utils/map'])" label="地图" name="map">
|
||||
<el-tab-pane v-if="checkPermission(['admin/admin.Utils/map'])" label="地图" lazy>
|
||||
<el-row :gutter="8">
|
||||
<el-col :sm="24" :md="24">
|
||||
<el-col :xs="24" :sm="24">
|
||||
<div class="filter-container">
|
||||
<Map v-if="map" />
|
||||
<Map />
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane v-if="checkPermission(['admin/admin.Utils/server'])" label="服务器" name="server">
|
||||
<el-tab-pane v-if="checkPermission(['admin/admin.Utils/server'])" label="服务器" lazy>
|
||||
<el-row :gutter="8" class="dialog-body" :style="{height:height+60+'px'}">
|
||||
<el-col :sm="24" :md="24">
|
||||
<el-col :xs="24" :sm="24">
|
||||
<div class="filter-container">
|
||||
<Server v-if="server" />
|
||||
<Server />
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane v-if="checkPermission(['admin/admin.Utils/toollu'])" label="在线工具" name="toollu">
|
||||
<el-tab-pane v-if="checkPermission(['admin/admin.Utils/toollu'])" label="在线工具" lazy>
|
||||
<el-row :gutter="8" class="dialog-body" :style="{height:height+60+'px'}">
|
||||
<el-col :sm="24" :md="24">
|
||||
<el-col :xs="24" :sm="24">
|
||||
<div class="filter-container">
|
||||
<Toollu v-if="toollu" />
|
||||
<Toollu />
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
@ -97,31 +97,19 @@ import Server from './components/Server'
|
|||
import Toollu from './components/Toollu'
|
||||
|
||||
export default {
|
||||
name: 'AdminUtils',
|
||||
name: 'AdminSystemUtils',
|
||||
directives: { permission },
|
||||
components: { Strtran, Strrand, Timestamp, Qrcode, Byte, Ip, Map, Server, Toollu },
|
||||
data() {
|
||||
return {
|
||||
height: 680,
|
||||
str: true,
|
||||
timestamp: false,
|
||||
qrcode: false,
|
||||
byte: false,
|
||||
ip: false,
|
||||
map: false,
|
||||
server: false,
|
||||
toollu: false,
|
||||
actTabName: 'str'
|
||||
height: 680
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.height = screenHeight()
|
||||
},
|
||||
methods: {
|
||||
checkPermission,
|
||||
tabClick(tab) {
|
||||
this[tab.name] = true
|
||||
}
|
||||
checkPermission
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -93,7 +93,7 @@ import permission from '@/directive/permission/index.js' // 权限判断指令
|
|||
import { list, info, add, edit, dele, disable, unlogin } from '@/api/api'
|
||||
|
||||
export default {
|
||||
name: 'Api',
|
||||
name: 'SettingApi',
|
||||
components: { },
|
||||
directives: { permission },
|
||||
data() {
|
||||
|
|
|
@ -1,333 +1,332 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<el-card class="box-card">
|
||||
<el-row :gutter="0">
|
||||
<el-col :sm="24" :md="16">
|
||||
<el-form ref="ref" :model="model" :rules="rules" label-width="150px">
|
||||
<el-tabs>
|
||||
<el-tab-pane v-if="checkPermission(['admin/file.Setting/info'])" label="上传设置" lazy>
|
||||
<el-form-item label="存储方式" prop="storage">
|
||||
<el-radio-group v-model="model.storage">
|
||||
<el-radio v-for="(item, index) in storages" :key="index" :label="index">{{ item }}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<div v-if="model.storage=='qiniu'">
|
||||
<el-form-item label="">
|
||||
<el-card class="box-card">
|
||||
<div class="text item">
|
||||
文件将上传到七牛云 Kodo 存储,对象存储 > 空间管理 > 空间设置 > 访问控制, 设置为 公开空间。
|
||||
<br>
|
||||
需要配置跨域访问 CORS 规则,设置:来源 Origin 为 *,允许 Methods 为 GET,POST,允许 Headers 为 *。
|
||||
</div>
|
||||
</el-card>
|
||||
</el-form-item>
|
||||
<el-form-item label="AccessKey" prop="qiniu_access_key" class="margin-bottom">
|
||||
<el-input v-model="model.qiniu_access_key" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.qiniu_access_key, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">AccessKey(AK) 在 [ 七牛云 > 个人中心 > 密钥管理 ] 设置和获取</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="SecretKey" prop="qiniu_secret_key" class="margin-bottom">
|
||||
<el-input v-model="model.qiniu_secret_key" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.qiniu_secret_key, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">SecretKey(SK) 在 [ 七牛云 > 个人中心 > 密钥管理 ] 设置和获取</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="空间名称" prop="qiniu_bucket" class="margin-bottom">
|
||||
<el-input v-model="model.qiniu_bucket" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.qiniu_bucket, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">空间名称 在 [ 七牛云 > 对象存储 > 空间管理] 设置和获取</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="外链域名" prop="qiniu_domain" class="margin-bottom">
|
||||
<el-input v-model="model.qiniu_domain" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.qiniu_domain, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">外链域名 在 [ 七牛云 > 对象存储 > 空间管理 > 域名设置 ] 设置和获取</el-col>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div v-else-if="model.storage=='aliyun'">
|
||||
<el-form-item label="">
|
||||
<el-card class="box-card">
|
||||
<div class="text item">
|
||||
文件将上传到阿里云 OSS 存储,需要配置 OSS 公开访问及跨域策略。
|
||||
<br>
|
||||
需要配置跨域访问 CORS 规则,设置:来源 Origin 为 *,允许 Methods 为 GET,POST,允许 Headers 为 *。
|
||||
</div>
|
||||
</el-card>
|
||||
</el-form-item>
|
||||
<el-form-item label="AccessKey ID" prop="aliyun_access_key_id" class="margin-bottom">
|
||||
<el-input v-model="model.aliyun_access_key_id" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.aliyun_access_key_id, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">AccessKey ID 在 [ 阿里云 > 个人中心 > AccessKey 管理 ] 设置和获取</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="AccessKey Secret" prop="aliyun_access_key_secret" class="margin-bottom">
|
||||
<el-input v-model="model.aliyun_access_key_secret" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.aliyun_access_key_secret, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">AccessKey Secret 在 [ 阿里云 > 个人中心 > AccessKey 管理 ] 设置和获取</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="Bucket名称" prop="aliyun_bucket" class="margin-bottom">
|
||||
<el-input v-model="model.aliyun_bucket" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.aliyun_bucket, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">Bucket 名称 在 [ 阿里云 > 对象存储 > Bucket 列表 ] 获取</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="Endpoint地域节点" prop="aliyun_endpoint" class="margin-bottom">
|
||||
<el-input v-model="model.aliyun_endpoint" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.aliyun_endpoint, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">Endpoint(地域节点) 在 [ 阿里云 > 对象存储 > Bucket 列表 > Bucket 概览 ] 获取</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="Bucket域名" prop="aliyun_bucket_domain" class="margin-bottom">
|
||||
<el-input v-model="model.aliyun_bucket_domain" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.aliyun_bucket_domain, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">Bucket 域名 在 [ 阿里云 > 对象存储 > Bucket 列表 > Bucket 概览 ] 获取</el-col>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div v-else-if="model.storage=='tencent'">
|
||||
<el-form-item label="">
|
||||
<el-card class="box-card">
|
||||
<div class="text item">
|
||||
文件将上传到腾讯云 COS 存储,需要配置 COS 公有读私有写访问权限及跨域策略。
|
||||
<br>
|
||||
需要配置跨域访问 CORS 规则,设置:来源 Origin 为 *,允许 Methods 为 GET,POST,允许 Headers 为 *。
|
||||
</div>
|
||||
</el-card>
|
||||
</el-form-item>
|
||||
<el-form-item label="SecretId" prop="tencent_secret_id" class="margin-bottom">
|
||||
<el-input v-model="model.tencent_secret_id" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.tencent_secret_id, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">SecretId 在 [ 腾讯云 > 个人中心 > 访问管理 > API密钥 ] 设置和获取</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="SecretKey" prop="tencent_secret_key" class="margin-bottom">
|
||||
<el-input v-model="model.tencent_secret_key" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.tencent_secret_key, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">SecretKey 在 [ 腾讯云 > 个人中心 > 访问管理 > API密钥 ] 设置和获取</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="存储桶名称" prop="tencent_bucket" class="margin-bottom">
|
||||
<el-input v-model="model.tencent_bucket" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.tencent_bucket, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">存储桶名称 在 [ 腾讯云 > 对象存储 > 存储桶列表 ] 获取</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="所属地域" prop="tencent_region" class="margin-bottom">
|
||||
<el-input v-model="model.tencent_region" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.tencent_region, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">所属地域 在 [ 腾讯云 > 对象存储 > 存储桶列表 ] 获取。如:ap-guangzhou</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="访问域名" prop="tencent_domain" class="margin-bottom">
|
||||
<el-input v-model="model.tencent_domain" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.tencent_domain, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">访问域名 在 [ 腾讯云 > 对象存储 > 存储桶列表 > 概览 ] 获取</el-col>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div v-else-if="model.storage=='baidu'">
|
||||
<el-form-item label="">
|
||||
<el-card class="box-card">
|
||||
<div class="text item">
|
||||
文件将上传到百度云 BOS 存储,对象存储 > Bucket列表 > 配置设置 > Bucket权限配置, 设置为 公共 *。
|
||||
<br>
|
||||
需要配置跨域访问 CORS 规则,设置:来源 Origin 为 *,允许 Methods 为 GET,POST,允许 Headers 为 *。
|
||||
</div>
|
||||
</el-card>
|
||||
</el-form-item>
|
||||
<el-form-item label="Access Key" prop="baidu_access_key" class="margin-bottom">
|
||||
<el-input v-model="model.baidu_access_key" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.baidu_access_key, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">Access Key 在 [ 百度云 > 个人中心 > 安全认证 > Access Key ] 设置和获取</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="Secret Key" prop="baidu_secret_key" class="margin-bottom">
|
||||
<el-input v-model="model.baidu_secret_key" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.baidu_secret_key, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">Secret Key 在 [ 百度云 > 个人中心 > 安全认证 > Access Key ] 设置和获取</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="Bucket名称" prop="baidu_bucket" class="margin-bottom">
|
||||
<el-input v-model="model.baidu_bucket" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.baidu_bucket, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">Bucket 名称 在 [ 百度云 > 对象存储 > Bucket 列表 ] 获取。如:yyladmin</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="官方域名" prop="baidu_domain" class="margin-bottom">
|
||||
<el-input v-model="model.baidu_domain" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.baidu_domain, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">官方域名 在 [ 百度云 > 对象存储 > 发布管理 ] 获取。如:yyladmin.gz.bcebos.com</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="所属地域" prop="baidu_endpoint" class="margin-bottom">
|
||||
<el-input v-model="model.baidu_endpoint" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.baidu_endpoint, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">所属地域:官方域名去掉 Bucket 名称,如:gz.bcebos.com</el-col>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div v-else>
|
||||
<el-form-item label="">
|
||||
<el-card class="box-card">
|
||||
<div class="text item">
|
||||
文件将存储在本地服务器,默认保存在 public/storage 目录,文件以 hash 命名。
|
||||
<br>
|
||||
文件存储的目录需要有读写权限(777),有足够的存储空间。
|
||||
</div>
|
||||
</el-card>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane v-if="checkPermission(['admin/file.Setting/info'])" label="上传限制" lazy>
|
||||
<el-form-item label="图片类型" prop="image_ext" class="margin-bottom">
|
||||
<el-col :span="11">
|
||||
<el-input v-model="model.image_ext" clearable />
|
||||
</el-col>
|
||||
<el-col class="line" :span="13">
|
||||
允许上传的图片后缀,逗号,隔开,为空则不限制
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="图片大小" prop="image_size">
|
||||
<el-col :span="11">
|
||||
<el-input v-model="model.image_size" clearable>
|
||||
<template slot="append">MB</template>
|
||||
</el-input>
|
||||
</el-col>
|
||||
<el-col class="line" :span="13">
|
||||
允许上传的图片大小,单位 MB,为0则不限制
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="视频类型" prop="video_ext" class="margin-bottom">
|
||||
<el-col :span="11">
|
||||
<el-input v-model="model.video_ext" clearable />
|
||||
</el-col>
|
||||
<el-col class="line" :span="13">
|
||||
允许上传的视频后缀,逗号,隔开,为空则不限制
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="视频大小" prop="video_size">
|
||||
<el-col :span="11">
|
||||
<el-input v-model="model.video_size" clearable>
|
||||
<template slot="append">MB</template>
|
||||
</el-input>
|
||||
</el-col>
|
||||
<el-col class="line" :span="13">
|
||||
允许上传的视频大小,单位 MB,为0则不限制
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="音频类型" prop="audio_ext" class="margin-bottom">
|
||||
<el-col :span="11">
|
||||
<el-input v-model="model.audio_ext" clearable />
|
||||
</el-col>
|
||||
<el-col class="line" :span="13">
|
||||
允许上传的音频后缀,逗号,隔开,为空则不限制
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="音频大小" prop="audio_size">
|
||||
<el-col :span="11">
|
||||
<el-input v-model="model.audio_size" clearable>
|
||||
<template slot="append">MB</template>
|
||||
</el-input>
|
||||
</el-col>
|
||||
<el-col class="line" :span="13">
|
||||
允许上传的音频大小,单位 MB,为0则不限制
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="文档类型" prop="word_ext" class="margin-bottom">
|
||||
<el-col :span="11">
|
||||
<el-input v-model="model.word_ext" clearable />
|
||||
</el-col>
|
||||
<el-col class="line" :span="13">
|
||||
允许上传的文档后缀,逗号,隔开,为空则不限制
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="文档大小" prop="word_size">
|
||||
<el-col :span="11">
|
||||
<el-input v-model="model.word_size" clearable>
|
||||
<template slot="append">MB</template>
|
||||
</el-input>
|
||||
</el-col>
|
||||
<el-col class="line" :span="13">
|
||||
允许上传的文档大小,单位 MB,为0则不限制
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="其它类型" prop="other_ext" class="margin-bottom">
|
||||
<el-col :span="11">
|
||||
<el-input v-model="model.other_ext" clearable />
|
||||
</el-col>
|
||||
<el-col class="line" :span="13">
|
||||
允许上传的其它文件后缀,逗号,隔开,为空则不限制
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="其它大小" prop="other_size">
|
||||
<el-col :span="11">
|
||||
<el-input v-model="model.other_size" clearable>
|
||||
<template slot="append">MB</template>
|
||||
</el-input>
|
||||
</el-col>
|
||||
<el-col class="line" :span="13">
|
||||
允许上传的其它文件大小,单位 MB,为0则不限制
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
<el-form-item>
|
||||
<el-button :loading="loading" @click="refresh()">刷新</el-button>
|
||||
<el-button :loading="loading" type="primary" @click="submit()">提交</el-button>
|
||||
<el-form ref="ref" :model="model" :rules="rules" label-width="150px">
|
||||
<el-tabs class="dialog-body" :style="{height:height+'px'}">
|
||||
<el-tab-pane label="上传设置" lazy>
|
||||
<el-form-item label="存储方式" prop="storage">
|
||||
<el-radio-group v-model="model.storage">
|
||||
<el-radio v-for="(item, index) in storages" :key="index" :label="index">{{ item }}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div v-if="model.storage=='qiniu'">
|
||||
<el-form-item label="">
|
||||
<el-card class="box-card">
|
||||
<div class="text item">
|
||||
文件将上传到七牛云 Kodo 存储,对象存储 > 空间管理 > 空间设置 > 访问控制, 设置为 公开空间。
|
||||
<br>
|
||||
需要配置跨域访问 CORS 规则,设置:来源 Origin 为 *,允许 Methods 为 GET,POST,允许 Headers 为 *。
|
||||
</div>
|
||||
</el-card>
|
||||
</el-form-item>
|
||||
<el-form-item label="AccessKey" prop="qiniu_access_key" class="margin-bottom">
|
||||
<el-input v-model="model.qiniu_access_key" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.qiniu_access_key, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">AccessKey(AK) 在 [ 七牛云 > 个人中心 > 密钥管理 ] 设置和获取</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="SecretKey" prop="qiniu_secret_key" class="margin-bottom">
|
||||
<el-input v-model="model.qiniu_secret_key" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.qiniu_secret_key, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">SecretKey(SK) 在 [ 七牛云 > 个人中心 > 密钥管理 ] 设置和获取</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="空间名称" prop="qiniu_bucket" class="margin-bottom">
|
||||
<el-input v-model="model.qiniu_bucket" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.qiniu_bucket, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">空间名称 在 [ 七牛云 > 对象存储 > 空间管理] 设置和获取</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="外链域名" prop="qiniu_domain" class="margin-bottom">
|
||||
<el-input v-model="model.qiniu_domain" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.qiniu_domain, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">外链域名 在 [ 七牛云 > 对象存储 > 空间管理 > 域名设置 ] 设置和获取</el-col>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div v-else-if="model.storage=='aliyun'">
|
||||
<el-form-item label="">
|
||||
<el-card class="box-card">
|
||||
<div class="text item">
|
||||
文件将上传到阿里云 OSS 存储,需要配置 OSS 公开访问及跨域策略。
|
||||
<br>
|
||||
需要配置跨域访问 CORS 规则,设置:来源 Origin 为 *,允许 Methods 为 GET,POST,允许 Headers 为 *。
|
||||
</div>
|
||||
</el-card>
|
||||
</el-form-item>
|
||||
<el-form-item label="AccessKey ID" prop="aliyun_access_key_id" class="margin-bottom">
|
||||
<el-input v-model="model.aliyun_access_key_id" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.aliyun_access_key_id, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">AccessKey ID 在 [ 阿里云 > 个人中心 > AccessKey 管理 ] 设置和获取</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="AccessKey Secret" prop="aliyun_access_key_secret" class="margin-bottom">
|
||||
<el-input v-model="model.aliyun_access_key_secret" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.aliyun_access_key_secret, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">AccessKey Secret 在 [ 阿里云 > 个人中心 > AccessKey 管理 ] 设置和获取</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="Bucket名称" prop="aliyun_bucket" class="margin-bottom">
|
||||
<el-input v-model="model.aliyun_bucket" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.aliyun_bucket, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">Bucket 名称 在 [ 阿里云 > 对象存储 > Bucket 列表 ] 获取</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="Endpoint地域节点" prop="aliyun_endpoint" class="margin-bottom">
|
||||
<el-input v-model="model.aliyun_endpoint" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.aliyun_endpoint, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">Endpoint(地域节点) 在 [ 阿里云 > 对象存储 > Bucket 列表 > Bucket 概览 ] 获取</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="Bucket域名" prop="aliyun_bucket_domain" class="margin-bottom">
|
||||
<el-input v-model="model.aliyun_bucket_domain" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.aliyun_bucket_domain, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">Bucket 域名 在 [ 阿里云 > 对象存储 > Bucket 列表 > Bucket 概览 ] 获取</el-col>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div v-else-if="model.storage=='tencent'">
|
||||
<el-form-item label="">
|
||||
<el-card class="box-card">
|
||||
<div class="text item">
|
||||
文件将上传到腾讯云 COS 存储,需要配置 COS 公有读私有写访问权限及跨域策略。
|
||||
<br>
|
||||
需要配置跨域访问 CORS 规则,设置:来源 Origin 为 *,允许 Methods 为 GET,POST,允许 Headers 为 *。
|
||||
</div>
|
||||
</el-card>
|
||||
</el-form-item>
|
||||
<el-form-item label="SecretId" prop="tencent_secret_id" class="margin-bottom">
|
||||
<el-input v-model="model.tencent_secret_id" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.tencent_secret_id, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">SecretId 在 [ 腾讯云 > 个人中心 > 访问管理 > API密钥 ] 设置和获取</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="SecretKey" prop="tencent_secret_key" class="margin-bottom">
|
||||
<el-input v-model="model.tencent_secret_key" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.tencent_secret_key, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">SecretKey 在 [ 腾讯云 > 个人中心 > 访问管理 > API密钥 ] 设置和获取</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="存储桶名称" prop="tencent_bucket" class="margin-bottom">
|
||||
<el-input v-model="model.tencent_bucket" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.tencent_bucket, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">存储桶名称 在 [ 腾讯云 > 对象存储 > 存储桶列表 ] 获取</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="所属地域" prop="tencent_region" class="margin-bottom">
|
||||
<el-input v-model="model.tencent_region" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.tencent_region, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">所属地域 在 [ 腾讯云 > 对象存储 > 存储桶列表 ] 获取。如:ap-guangzhou</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="访问域名" prop="tencent_domain" class="margin-bottom">
|
||||
<el-input v-model="model.tencent_domain" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.tencent_domain, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">访问域名 在 [ 腾讯云 > 对象存储 > 存储桶列表 > 概览 ] 获取</el-col>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div v-else-if="model.storage=='baidu'">
|
||||
<el-form-item label="">
|
||||
<el-card class="box-card">
|
||||
<div class="text item">
|
||||
文件将上传到百度云 BOS 存储,对象存储 > Bucket列表 > 配置设置 > Bucket权限配置, 设置为 公共 *。
|
||||
<br>
|
||||
需要配置跨域访问 CORS 规则,设置:来源 Origin 为 *,允许 Methods 为 GET,POST,允许 Headers 为 *。
|
||||
</div>
|
||||
</el-card>
|
||||
</el-form-item>
|
||||
<el-form-item label="Access Key" prop="baidu_access_key" class="margin-bottom">
|
||||
<el-input v-model="model.baidu_access_key" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.baidu_access_key, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">Access Key 在 [ 百度云 > 个人中心 > 安全认证 > Access Key ] 设置和获取</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="Secret Key" prop="baidu_secret_key" class="margin-bottom">
|
||||
<el-input v-model="model.baidu_secret_key" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.baidu_secret_key, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">Secret Key 在 [ 百度云 > 个人中心 > 安全认证 > Access Key ] 设置和获取</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="Bucket名称" prop="baidu_bucket" class="margin-bottom">
|
||||
<el-input v-model="model.baidu_bucket" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.baidu_bucket, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">Bucket 名称 在 [ 百度云 > 对象存储 > Bucket 列表 ] 获取。如:yyladmin</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="官方域名" prop="baidu_domain" class="margin-bottom">
|
||||
<el-input v-model="model.baidu_domain" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.baidu_domain, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">官方域名 在 [ 百度云 > 对象存储 > 发布管理 ] 获取。如:yyladmin.gz.bcebos.com</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="所属地域" prop="baidu_endpoint" class="margin-bottom">
|
||||
<el-input v-model="model.baidu_endpoint" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.baidu_endpoint, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-col class="line" :span="24">所属地域:官方域名去掉 Bucket 名称,如:gz.bcebos.com</el-col>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div v-else>
|
||||
<el-form-item label="">
|
||||
<el-card class="box-card">
|
||||
<div class="text item">
|
||||
文件将存储在本地服务器,默认保存在 public/storage 目录,文件以 hash 命名。
|
||||
<br>
|
||||
文件存储的目录需要有读写权限(777),有足够的存储空间。
|
||||
</div>
|
||||
</el-card>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="上传限制" lazy>
|
||||
<el-form-item label="图片类型" prop="image_ext" class="margin-bottom">
|
||||
<el-col :span="11">
|
||||
<el-input v-model="model.image_ext" clearable />
|
||||
</el-col>
|
||||
<el-col class="line" :span="13">
|
||||
允许上传的图片后缀,逗号,隔开,为空则不限制
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="图片大小" prop="image_size">
|
||||
<el-col :span="11">
|
||||
<el-input v-model="model.image_size" clearable>
|
||||
<template slot="append">MB</template>
|
||||
</el-input>
|
||||
</el-col>
|
||||
<el-col class="line" :span="13">
|
||||
允许上传的图片大小,单位 MB,为0则不限制
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="视频类型" prop="video_ext" class="margin-bottom">
|
||||
<el-col :span="11">
|
||||
<el-input v-model="model.video_ext" clearable />
|
||||
</el-col>
|
||||
<el-col class="line" :span="13">
|
||||
允许上传的视频后缀,逗号,隔开,为空则不限制
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="视频大小" prop="video_size">
|
||||
<el-col :span="11">
|
||||
<el-input v-model="model.video_size" clearable>
|
||||
<template slot="append">MB</template>
|
||||
</el-input>
|
||||
</el-col>
|
||||
<el-col class="line" :span="13">
|
||||
允许上传的视频大小,单位 MB,为0则不限制
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="音频类型" prop="audio_ext" class="margin-bottom">
|
||||
<el-col :span="11">
|
||||
<el-input v-model="model.audio_ext" clearable />
|
||||
</el-col>
|
||||
<el-col class="line" :span="13">
|
||||
允许上传的音频后缀,逗号,隔开,为空则不限制
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="音频大小" prop="audio_size">
|
||||
<el-col :span="11">
|
||||
<el-input v-model="model.audio_size" clearable>
|
||||
<template slot="append">MB</template>
|
||||
</el-input>
|
||||
</el-col>
|
||||
<el-col class="line" :span="13">
|
||||
允许上传的音频大小,单位 MB,为0则不限制
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="文档类型" prop="word_ext" class="margin-bottom">
|
||||
<el-col :span="11">
|
||||
<el-input v-model="model.word_ext" clearable />
|
||||
</el-col>
|
||||
<el-col class="line" :span="13">
|
||||
允许上传的文档后缀,逗号,隔开,为空则不限制
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="文档大小" prop="word_size">
|
||||
<el-col :span="11">
|
||||
<el-input v-model="model.word_size" clearable>
|
||||
<template slot="append">MB</template>
|
||||
</el-input>
|
||||
</el-col>
|
||||
<el-col class="line" :span="13">
|
||||
允许上传的文档大小,单位 MB,为0则不限制
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="其它类型" prop="other_ext" class="margin-bottom">
|
||||
<el-col :span="11">
|
||||
<el-input v-model="model.other_ext" clearable />
|
||||
</el-col>
|
||||
<el-col class="line" :span="13">
|
||||
允许上传的其它文件后缀,逗号,隔开,为空则不限制
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="其它大小" prop="other_size">
|
||||
<el-col :span="11">
|
||||
<el-input v-model="model.other_size" clearable>
|
||||
<template slot="append">MB</template>
|
||||
</el-input>
|
||||
</el-col>
|
||||
<el-col class="line" :span="13">
|
||||
允许上传的其它文件大小,单位 MB,为0则不限制
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</el-form>
|
||||
<el-form label-width="150px">
|
||||
<el-form-item>
|
||||
<el-button :loading="loading" @click="refresh()">刷新</el-button>
|
||||
<el-button :loading="loading" type="primary" @click="submit()">提交</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import screenHeight from '@/utils/screen-height'
|
||||
import checkPermission from '@/utils/permission' // 权限判断函数
|
||||
import clip from '@/utils/clipboard'
|
||||
import { info, edit } from '@/api/file/setting'
|
||||
|
@ -337,6 +336,7 @@ export default {
|
|||
components: { },
|
||||
data() {
|
||||
return {
|
||||
height: 680,
|
||||
loading: false,
|
||||
storages: [],
|
||||
model: {
|
||||
|
@ -357,13 +357,11 @@ export default {
|
|||
other_ext: '',
|
||||
other_size: 0
|
||||
},
|
||||
rules: {
|
||||
appid: [{ required: true, message: '请输入appid', trigger: 'blur' }],
|
||||
appsecret: [{ required: true, message: '请输入appsecret', trigger: 'blur' }]
|
||||
}
|
||||
rules: {}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.height = screenHeight()
|
||||
this.info()
|
||||
},
|
||||
methods: {
|
||||
|
|
|
@ -148,7 +148,7 @@ import BackToTop from '@/components/BackToTop'
|
|||
import { stat } from '@/api/member-log'
|
||||
|
||||
export default {
|
||||
name: 'MemberLogsta',
|
||||
name: 'MemberLogStat',
|
||||
components: { BackToTop },
|
||||
data() {
|
||||
return {
|
||||
|
@ -318,7 +318,11 @@ export default {
|
|||
series: [
|
||||
{
|
||||
type: 'bar',
|
||||
data: data.y_data
|
||||
data: data.y_data,
|
||||
label: {
|
||||
show: true,
|
||||
position: 'top'
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -35,7 +35,6 @@
|
|||
</el-col>
|
||||
<el-col :xs="24" :sm="4" style="text-align:right;">
|
||||
<el-button v-permission="['admin/MemberLog/clear']" class="filter-item" title="日志清除" @click="clear()">清除</el-button>
|
||||
<el-button v-permission="['admin/MemberLog/stat']" class="filter-item" type="primary" title="日志统计" @click="stat">统计</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
|
@ -305,10 +304,6 @@ export default {
|
|||
}).catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
// 统计
|
||||
stat() {
|
||||
this.$router.push('/member/member-log-stat')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -107,7 +107,7 @@ import screenHeight from '@/utils/screen-height'
|
|||
import { list, info, add, edit, dele } from '@/api/region'
|
||||
|
||||
export default {
|
||||
name: 'Region',
|
||||
name: 'SettingRegion',
|
||||
components: { },
|
||||
data() {
|
||||
return {
|
||||
|
|
|
@ -25,7 +25,7 @@ import Log from './components/Log'
|
|||
import Api from './components/Api'
|
||||
|
||||
export default {
|
||||
name: 'Base',
|
||||
name: 'SettingBase',
|
||||
components: { Token, Captcha, Log, Api },
|
||||
data() {
|
||||
return {
|
||||
|
|
|
@ -8,7 +8,9 @@
|
|||
</el-form-item>
|
||||
<el-form-item label="接口速率">
|
||||
<el-col :span="11">
|
||||
<el-input v-model="model.api_rate_num" type="number" placeholder="次数" />
|
||||
<el-input v-model="model.api_rate_num" type="number" placeholder="次数">
|
||||
<template slot="append">次</template>
|
||||
</el-input>
|
||||
</el-col>
|
||||
<el-col class="line" :span="2" style="text-align:center">/</el-col>
|
||||
<el-col :span="11">
|
||||
|
@ -31,7 +33,7 @@
|
|||
import { apiInfo, apiEdit } from '@/api/setting'
|
||||
|
||||
export default {
|
||||
name: 'Api',
|
||||
name: 'SettingApi',
|
||||
components: {},
|
||||
data() {
|
||||
return {
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
import { captchaInfo, captchaEdit } from '@/api/setting'
|
||||
|
||||
export default {
|
||||
name: 'Captcha',
|
||||
name: 'SettingCaptcha',
|
||||
components: {},
|
||||
data() {
|
||||
return {
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
import { logInfo, logEdit } from '@/api/setting'
|
||||
|
||||
export default {
|
||||
name: 'Log',
|
||||
name: 'SettingLog',
|
||||
components: {},
|
||||
data() {
|
||||
return {
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
import { tokenInfo, tokenEdit } from '@/api/setting'
|
||||
|
||||
export default {
|
||||
name: 'Token',
|
||||
name: 'SettingToken',
|
||||
components: {},
|
||||
data() {
|
||||
return {
|
||||
|
|
|
@ -58,6 +58,7 @@ import FileManage from '@/components/FileManage'
|
|||
import { miniInfo, miniEdit } from '@/api/setting-wechat'
|
||||
|
||||
export default {
|
||||
name: 'SettingWechatMini',
|
||||
components: { FileManage },
|
||||
data() {
|
||||
return {
|
||||
|
|
|
@ -78,6 +78,7 @@ import FileManage from '@/components/FileManage'
|
|||
import { offiInfo, offiEdit } from '@/api/setting-wechat'
|
||||
|
||||
export default {
|
||||
name: 'SettingWechatOffi',
|
||||
components: { FileManage },
|
||||
data() {
|
||||
return {
|
||||
|
|
|
@ -18,7 +18,7 @@ import WechatOffi from './components/WechatOffi'
|
|||
import WechatMini from './components/WechatMini'
|
||||
|
||||
export default {
|
||||
name: 'Wechat',
|
||||
name: 'SettingWechat',
|
||||
components: { WechatOffi, WechatMini },
|
||||
data() {
|
||||
return {
|
||||
|
|
Loading…
Reference in New Issue