Signed-off-by: skyselang <215817969@qq.com>
This commit is contained in:
skyselang 2023-02-01 15:48:09 +08:00
parent bbaee61961
commit 1e119bab84
23 changed files with 117 additions and 107 deletions

View File

@ -19,9 +19,7 @@ yylAdmin是一个基于ThinkPHP6和Vue2极简后台管理系统只有登录
- 内容管理 - 内容管理
- 文件管理 - 文件管理
- 设置管理 - 设置管理
- 权限管理 - 系统管理:权限管理...
- 系统管理
- 数据库管理
- 代码生成器 - 代码生成器
- Excel导出导入 - Excel导出导入
- 接口文档与调试... - 接口文档与调试...
@ -42,9 +40,9 @@ yylAdmin是一个基于ThinkPHP6和Vue2极简后台管理系统只有登录
- PHP >= 7.2.5 - PHP >= 7.2.5
安装 fileinfo、redis 扩展 安装 fileinfo、redis 扩展
开启 putenv、proc_open 函数 开启 putenv、proc_open 函数
- MySQL >= 5.5 - MySQL >= 5.6
- Redis - Redis
- node >= 12.0.0 - node >= 14.0.0
- npm >= 6.9.0 - npm >= 6.9.0
### 安装后端 ### 安装后端

View File

@ -3,7 +3,7 @@ import request from '@/utils/request'
const url = '/admin/content.Category/' const url = '/admin/content.Category/'
/** /**
* 内容分类列表 * 内容分类列表
* @param {array} data 请求数据 * @param {array} params 请求参数
*/ */
export function list(params) { export function list(params) {
return request({ return request({

View File

@ -423,7 +423,7 @@ import Pagination from '@/components/Pagination'
import clip from '@/utils/clipboard' import clip from '@/utils/clipboard'
import store from '@/store' import store from '@/store'
import { arrayColumn } from '@/utils/index' import { arrayColumn } from '@/utils/index'
import { getUserToken } from '@/utils/auth' import { getAdminToken } from '@/utils/auth'
import { list, info, add, edit, dele, editgroup, edittag, edittype, editdomain, disable, recycle, recycleReco, recycleDele } from '@/api/file/file' import { list, info, add, edit, dele, editgroup, edittag, edittype, editdomain, disable, recycle, recycleReco, recycleDele } from '@/api/file/file'
import { info as groupInfo, add as groupAdd, edit as groupEdit, dele as groupDele } from '@/api/file/group' import { info as groupInfo, add as groupAdd, edit as groupEdit, dele as groupDele } from '@/api/file/group'
import { info as tagInfo, add as tagAdd, edit as tagEdit, dele as tagDele } from '@/api/file/tag' import { info as tagInfo, add as tagAdd, edit as tagEdit, dele as tagDele } from '@/api/file/tag'
@ -563,7 +563,7 @@ export default {
this.list() this.list()
const tokenType = store.getters.tokenType const tokenType = store.getters.tokenType
const tokenName = store.getters.tokenName const tokenName = store.getters.tokenName
const tokenValue = getUserToken() const tokenValue = getAdminToken()
if (tokenType === 'header') { if (tokenType === 'header') {
const uploadHeaders = {} const uploadHeaders = {}
uploadHeaders[tokenName] = tokenValue uploadHeaders[tokenName] = tokenValue

View File

@ -3,7 +3,7 @@ import store from './store'
import { Message } from 'element-ui' import { Message } from 'element-ui'
import NProgress from 'nprogress' // 进度条 import NProgress from 'nprogress' // 进度条
import 'nprogress/nprogress.css' // 进度条样式 import 'nprogress/nprogress.css' // 进度条样式
import { getUserToken } from '@/utils/auth' // 从cookie中获取token import { getAdminToken } from '@/utils/auth' // 从cookie中获取token
import getPageTitle from '@/utils/page-title' import getPageTitle from '@/utils/page-title'
import Layout from '@/layout' import Layout from '@/layout'
@ -29,7 +29,7 @@ router.beforeEach(async(to, from, next) => {
document.title = getPageTitle(to.meta.title) document.title = getPageTitle(to.meta.title)
// 判断用户是否已登录 // 判断用户是否已登录
const hasToken = getUserToken() const hasToken = getAdminToken()
if (hasToken) { if (hasToken) {
if (to.path === '/login') { if (to.path === '/login') {
@ -61,7 +61,7 @@ router.beforeEach(async(to, from, next) => {
next({ ...to, replace: true }) next({ ...to, replace: true })
} catch (error) { } catch (error) {
// 删除token并转到登录页面重新登录 // 删除token并转到登录页面重新登录
await store.dispatch('user/resetUserToken') await store.dispatch('user/resetAdminToken')
Message.error(error || 'Has Error') Message.error(error || 'Has Error')
next(`/login?redirect=${to.path}`) next(`/login?redirect=${to.path}`)
NProgress.done() NProgress.done()

View File

@ -23,15 +23,15 @@ module.exports = {
*/ */
sidebarLogo: true, sidebarLogo: true,
/**
* @type {string} 前后端必须一致
* @description token名称
*/
tokenName: 'AdminToken',
/** /**
* @type {string} headerparam * @type {string} headerparam
* @description token方式 * @description token方式
*/ */
tokenType: 'param' tokenType: 'param',
/**
* @type {string} 前后端必须一致
* @description token名称
*/
tokenName: 'AdminToken'
} }

View File

@ -1,9 +1,9 @@
import { login, logout } from '@/api/system/login' import { login, logout } from '@/api/system/login'
import { info as userInfo } from '@/api/system/user-center' import { info as userInfo } from '@/api/system/user-center'
import { import {
setUserToken, setAdminToken,
getUserToken, getAdminToken,
delUserToken, delAdminToken,
setUsername, setUsername,
delUsername, delUsername,
setNickname, setNickname,
@ -15,7 +15,7 @@ import { getTokenName } from '@/utils/settings'
import router, { resetRouter } from '@/router' import router, { resetRouter } from '@/router'
const state = { const state = {
userToken: getUserToken(), userToken: getAdminToken(),
username: '', username: '',
nickname: '', nickname: '',
avatar: '', avatar: '',
@ -64,7 +64,7 @@ const actions = {
}).then(response => { }).then(response => {
const { data } = response const { data } = response
commit('SET_USERTOKEN', data[getTokenName()]) commit('SET_USERTOKEN', data[getTokenName()])
setUserToken(data[getTokenName()]) setAdminToken(data[getTokenName()])
resolve() resolve()
}).catch(error => { }).catch(error => {
reject(error) reject(error)
@ -120,7 +120,7 @@ const actions = {
commit('SET_AVATAR', '') commit('SET_AVATAR', '')
commit('SET_ROLES', []) commit('SET_ROLES', [])
commit('SET_MENUS', []) commit('SET_MENUS', [])
delUserToken() delAdminToken()
delUsername() delUsername()
delNickname() delNickname()
delAvatar() delAvatar()
@ -137,11 +137,11 @@ const actions = {
}, },
// 重置token // 重置token
resetUserToken({ commit }) { resetAdminToken({ commit }) {
return new Promise(resolve => { return new Promise(resolve => {
commit('SET_USERTOKEN', '') commit('SET_USERTOKEN', '')
commit('SET_ROLES', []) commit('SET_ROLES', [])
delUserToken() delAdminToken()
resolve() resolve()
}) })
}, },
@ -151,7 +151,7 @@ const actions = {
const userToken = role + '-userToken' const userToken = role + '-userToken'
commit('SET_USERTOKEN', userToken) commit('SET_USERTOKEN', userToken)
setUserToken(userToken) setAdminToken(userToken)
const { roles } = await dispatch('userInfo') const { roles } = await dispatch('userInfo')

View File

@ -1,46 +1,46 @@
import Cookies from 'js-cookie' import Cookies from 'js-cookie'
const key_prefix = 'yaAuth' const keyPrefix = 'yaAuth'
const UserTokenKey = key_prefix + 'UserToken' const adminTokenKey = keyPrefix + 'AdminToken'
export function setUserToken(UserToken) { export function setAdminToken(adminToken) {
return Cookies.set(UserTokenKey, UserToken) return Cookies.set(adminTokenKey, adminToken)
} }
export function getUserToken() { export function getAdminToken() {
return Cookies.get(UserTokenKey) return Cookies.get(adminTokenKey)
} }
export function delUserToken() { export function delAdminToken() {
return Cookies.remove(UserTokenKey) return Cookies.remove(adminTokenKey)
} }
const UsernameKey = key_prefix + 'Username' const usernameKey = keyPrefix + 'Username'
export function setUsername(username) { export function setUsername(username) {
return Cookies.set(UsernameKey, username) return Cookies.set(usernameKey, username)
} }
export function getUsername() { export function getUsername() {
return Cookies.get(UsernameKey) return Cookies.get(usernameKey)
} }
export function delUsername() { export function delUsername() {
return Cookies.remove(UsernameKey) return Cookies.remove(usernameKey)
} }
const NicknameKey = key_prefix + 'Nickname' const nicknameKey = keyPrefix + 'Nickname'
export function setNickname(nickname) { export function setNickname(nickname) {
return Cookies.set(NicknameKey, nickname) return Cookies.set(nicknameKey, nickname)
} }
export function getNickname() { export function getNickname() {
return Cookies.get(NicknameKey) return Cookies.get(nicknameKey)
} }
export function delNickname() { export function delNickname() {
return Cookies.remove(NicknameKey) return Cookies.remove(nicknameKey)
} }
const AvatarKey = key_prefix + 'Avatar' const avatarKey = keyPrefix + 'Avatar'
export function setAvatar(avatar) { export function setAvatar(avatar) {
return Cookies.set(AvatarKey, avatar) return Cookies.set(avatarKey, avatar)
} }
export function getAvatar() { export function getAvatar() {
return Cookies.get(AvatarKey) return Cookies.get(avatarKey)
} }
export function delAvatar() { export function delAvatar() {
return Cookies.remove(AvatarKey) return Cookies.remove(avatarKey)
} }

View File

@ -1,6 +1,10 @@
import store from '@/store' import store from '@/store'
// 获取页面标题 /**
* 获取页面标题
* @param {string} pageName 页面名称
* @returns {string}
*/
export default function getPageTitle(pageName) { export default function getPageTitle(pageName) {
const pageTitle = store.getters.pageTitle const pageTitle = store.getters.pageTitle
if (pageName) { if (pageName) {

View File

@ -1,7 +1,7 @@
import axios from 'axios' import axios from 'axios'
import store from '@/store' import store from '@/store'
import { Message, MessageBox } from 'element-ui' import { Message, MessageBox } from 'element-ui'
import { getUserToken } from '@/utils/auth' import { getAdminToken } from '@/utils/auth'
// 创建axios实例 // 创建axios实例
const service = axios.create({ const service = axios.create({
@ -18,7 +18,7 @@ service.interceptors.request.use(
// 设置Token请求头部header或请求参数param // 设置Token请求头部header或请求参数param
const tokenType = store.getters.tokenType const tokenType = store.getters.tokenType
const tokenName = store.getters.tokenName const tokenName = store.getters.tokenName
const tokenValue = getUserToken() const tokenValue = getAdminToken()
if (tokenType === 'header') { if (tokenType === 'header') {
// 请求头部token // 请求头部token
config.headers[tokenName] = tokenValue config.headers[tokenName] = tokenValue
@ -92,7 +92,7 @@ function responseHandle(res) {
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
store.dispatch('user/resetUserToken').then(() => { store.dispatch('user/resetAdminToken').then(() => {
location.reload() location.reload()
}) })
}).catch(() => { }) }).catch(() => { })

View File

@ -1,79 +1,79 @@
import Cookies from 'js-cookie' import Cookies from 'js-cookie'
const key_prefix = 'yaSettings' const keyPrefix = 'yaSettings'
const SystemNameKey = key_prefix + 'SystemName' const systemNameKey = keyPrefix + 'SystemName'
export function setSystemName(SystemName) { export function setSystemName(systemName) {
return Cookies.set(SystemNameKey, SystemName) return Cookies.set(systemNameKey, systemName)
} }
export function getSystemName() { export function getSystemName() {
return Cookies.get(SystemNameKey) return Cookies.get(systemNameKey)
} }
export function delSystemName() { export function delSystemName() {
return Cookies.remove(SystemNameKey) return Cookies.remove(systemNameKey)
} }
const FaviconUrlKey = key_prefix + 'FaviconUrl' const faviconUrlKey = keyPrefix + 'FaviconUrl'
export function setFaviconUrl(FaviconUrl) { export function setFaviconUrl(faviconUrl) {
return Cookies.set(FaviconUrlKey, FaviconUrl) return Cookies.set(faviconUrlKey, faviconUrl)
} }
export function getFaviconUrl() { export function getFaviconUrl() {
return Cookies.get(FaviconUrlKey) return Cookies.get(faviconUrlKey)
} }
export function delFaviconUrl() { export function delFaviconUrl() {
return Cookies.remove(FaviconUrlKey) return Cookies.remove(faviconUrlKey)
} }
const PageTitleKey = key_prefix + 'PageTitle' const pageTitleKey = keyPrefix + 'PageTitle'
export function setPageTitle(PageTitle) { export function setPageTitle(pageTitle) {
return Cookies.set(PageTitleKey, PageTitle) return Cookies.set(pageTitleKey, pageTitle)
} }
export function getPageTitle() { export function getPageTitle() {
return Cookies.get(PageTitleKey) return Cookies.get(pageTitleKey)
} }
export function delPageTitle() { export function delPageTitle() {
return Cookies.remove(PageTitleKey) return Cookies.remove(pageTitleKey)
} }
const LogoUrlKey = key_prefix + 'LogoUrl' const logoUrlKey = keyPrefix + 'LogoUrl'
export function setLogoUrl(LogoUrl) { export function setLogoUrl(logoUrl) {
return Cookies.set(LogoUrlKey, LogoUrl) return Cookies.set(logoUrlKey, logoUrl)
} }
export function getLogoUrl() { export function getLogoUrl() {
return Cookies.get(LogoUrlKey) return Cookies.get(logoUrlKey)
} }
export function delLogoUrl() { export function delLogoUrl() {
return Cookies.remove(LogoUrlKey) return Cookies.remove(logoUrlKey)
} }
const NoticeKey = key_prefix + 'Notice' const noticeKey = keyPrefix + 'Notice'
export function setNotice(notice) { export function setNotice(notice) {
return Cookies.set(NoticeKey, notice) return Cookies.set(noticeKey, notice)
} }
export function getNotice() { export function getNotice() {
return Cookies.get(NoticeKey) return Cookies.get(noticeKey)
} }
export function delNotice() { export function delNotice() {
return Cookies.remove(NoticeKey) return Cookies.remove(noticeKey)
} }
const TokenNameKey = key_prefix + 'TokenName' const tokenNameKey = keyPrefix + 'TokenName'
export function setTokenName(TokenName) { export function setTokenName(tokenName) {
return Cookies.set(TokenNameKey, TokenName) return Cookies.set(tokenNameKey, tokenName)
} }
export function getTokenName() { export function getTokenName() {
return Cookies.get(TokenNameKey) return Cookies.get(tokenNameKey)
} }
export function delTokenName() { export function delTokenName() {
return Cookies.remove(TokenNameKey) return Cookies.remove(tokenNameKey)
} }
const TokenTypeKey = key_prefix + 'TokenType' const tokenTypeKey = keyPrefix + 'TokenType'
export function setTokenType(TokenType) { export function setTokenType(tokenType) {
return Cookies.set(TokenTypeKey, TokenType) return Cookies.set(tokenTypeKey, tokenType)
} }
export function getTokenType() { export function getTokenType() {
return Cookies.get(TokenTypeKey) return Cookies.get(tokenTypeKey)
} }
export function delTokenType() { export function delTokenType() {
return Cookies.remove(TokenTypeKey) return Cookies.remove(tokenTypeKey)
} }

View File

@ -1,7 +1,7 @@
<template> <template>
<el-card class="dialog-body" :style="{height:height+'px'}"> <el-card class="dialog-body" :style="{height:height+'px'}">
<el-row :gutter="0"> <el-row>
<el-col :span="12"> <el-col :span="14">
<el-form ref="ref" :model="model" :rules="rules" label-width="120px"> <el-form ref="ref" :model="model" :rules="rules" label-width="120px">
<el-form-item label="会员接口" prop="is_member_api"> <el-form-item label="会员接口" prop="is_member_api">
<el-col :span="24"> <el-col :span="24">

View File

@ -1,7 +1,7 @@
<template> <template>
<el-card class="dialog-body" :style="{height:height+'px'}"> <el-card class="dialog-body" :style="{height:height+'px'}">
<el-row :gutter="0"> <el-row>
<el-col :span="12"> <el-col :span="14">
<el-form ref="ref" :model="model" :rules="rules" label-width="120px"> <el-form ref="ref" :model="model" :rules="rules" label-width="120px">
<el-form-item label="注册验证码" prop="captcha_register"> <el-form-item label="注册验证码" prop="captcha_register">
<el-col :span="8"> <el-col :span="8">

View File

@ -1,6 +1,6 @@
<template> <template>
<el-card class="dialog-body" :style="{height:height+'px'}"> <el-card class="dialog-body" :style="{height:height+'px'}">
<el-row :gutter="0"> <el-row>
<el-col :span="16"> <el-col :span="16">
<el-form ref="ref" :model="model" :rules="rules" label-width="120px"> <el-form ref="ref" :model="model" :rules="rules" label-width="120px">
<el-form-item label="自定义设置" prop=""> <el-form-item label="自定义设置" prop="">

View File

@ -1,7 +1,7 @@
<template> <template>
<el-card class="dialog-body" :style="{height:height+'px'}"> <el-card class="dialog-body" :style="{height:height+'px'}">
<el-row :gutter="0"> <el-row>
<el-col :span="12"> <el-col :span="14">
<el-form ref="ref" :model="model" :rules="rules" label-width="120px"> <el-form ref="ref" :model="model" :rules="rules" label-width="120px">
<el-form-item label="日志记录开关" prop="log_switch"> <el-form-item label="日志记录开关" prop="log_switch">
<el-col :span="8"> <el-col :span="8">

View File

@ -1,12 +1,20 @@
<template> <template>
<el-card class="dialog-body" :style="{height:height+'px'}"> <el-card class="dialog-body" :style="{height:height+'px'}">
<el-row :gutter="0"> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form ref="ref" :model="model" :rules="rules" label-width="120px"> <el-form ref="ref" :model="model" :rules="rules" label-width="120px">
<el-form-item label="注册" prop="is_register"> <el-form-item label="注册" prop="is_register">
<el-col :span="8"> <el-col :span="8">
<el-switch v-model="model.is_register" :active-value="1" :inactive-value="0" /> <el-switch v-model="model.is_register" :active-value="1" :inactive-value="0" />
</el-col> </el-col>
<el-col :span="16">
关闭后不能再注册用户名手机邮箱
</el-col>
</el-form-item>
<el-form-item label="登录" prop="is_login">
<el-col :span="8">
<el-switch v-model="model.is_login" :active-value="1" :inactive-value="0" />
</el-col>
<el-col :span="16"> <el-col :span="16">
关闭后不能再登录用户名手机邮箱 关闭后不能再登录用户名手机邮箱
</el-col> </el-col>

View File

@ -1,7 +1,7 @@
<template> <template>
<el-card class="dialog-body" :style="{height:height+'px'}"> <el-card class="dialog-body" :style="{height:height+'px'}">
<el-row :gutter="0"> <el-row>
<el-col :span="12"> <el-col :span="14">
<el-form ref="ref" :model="model" :rules="rules" label-width="120px"> <el-form ref="ref" :model="model" :rules="rules" label-width="120px">
<el-form-item label="Token密钥" prop="token_key"> <el-form-item label="Token密钥" prop="token_key">
<el-col :span="8"> <el-col :span="8">

View File

@ -1,7 +1,7 @@
<template> <template>
<el-card class="dialog-body" :style="{height:height+'px'}"> <el-card class="dialog-body" :style="{height:height+'px'}">
<el-row :gutter="0"> <el-row>
<el-col :span="13"> <el-col :span="14">
<el-form ref="ref" :model="model" :rules="rules" label-width="120px"> <el-form ref="ref" :model="model" :rules="rules" label-width="120px">
<el-form-item label="接口速率"> <el-form-item label="接口速率">
<el-col :span="12"> <el-col :span="12">

View File

@ -1,7 +1,7 @@
<template> <template>
<el-card class="dialog-body" :style="{height:height+'px'}"> <el-card class="dialog-body" :style="{height:height+'px'}">
<el-row> <el-row>
<el-col :span="13"> <el-col :span="14">
<el-form ref="ref" :model="model" :rules="rules" label-width="120px"> <el-form ref="ref" :model="model" :rules="rules" label-width="120px">
<el-form-item label="缓存类型" prop="cache_type"> <el-form-item label="缓存类型" prop="cache_type">
<el-col :span="8"> <el-col :span="8">

View File

@ -1,7 +1,7 @@
<template> <template>
<el-card class="dialog-body" :style="{height:height+'px'}"> <el-card class="dialog-body" :style="{height:height+'px'}">
<el-row> <el-row>
<el-col :span="13"> <el-col :span="14">
<el-form ref="ref" :model="model" :rules="rules" label-width="120px"> <el-form ref="ref" :model="model" :rules="rules" label-width="120px">
<el-form-item label="验证码开关" prop="captcha_switch"> <el-form-item label="验证码开关" prop="captcha_switch">
<el-col :span="8"> <el-col :span="8">

View File

@ -1,7 +1,7 @@
<template> <template>
<el-card class="dialog-body" :style="{height:height+'px'}"> <el-card class="dialog-body" :style="{height:height+'px'}">
<el-row :gutter="0"> <el-row>
<el-col :span="13"> <el-col :span="14">
<el-form ref="ref" :model="model" :rules="rules" label-width="120px"> <el-form ref="ref" :model="model" :rules="rules" label-width="120px">
<el-form-item label="* SMTP服务器" prop="email_host"> <el-form-item label="* SMTP服务器" prop="email_host">
<el-col :span="8"> <el-col :span="8">

View File

@ -1,7 +1,7 @@
<template> <template>
<el-card class="dialog-body" :style="{height:height+'px'}"> <el-card class="dialog-body" :style="{height:height+'px'}">
<el-row :gutter="0"> <el-row>
<el-col :span="13"> <el-col :span="14">
<el-form ref="ref" :model="model" :rules="rules" label-width="120px"> <el-form ref="ref" :model="model" :rules="rules" label-width="120px">
<el-form-item label="日志记录开关" prop="log_switch"> <el-form-item label="日志记录开关" prop="log_switch">
<el-col :span="8"> <el-col :span="8">

View File

@ -1,7 +1,7 @@
<template> <template>
<el-card class="dialog-body" :style="{height:height+'px'}"> <el-card class="dialog-body" :style="{height:height+'px'}">
<el-row :gutter="0"> <el-row>
<el-col :span="13"> <el-col :span="14">
<el-form ref="ref" :model="model" :rules="rules" label-width="120px"> <el-form ref="ref" :model="model" :rules="rules" label-width="120px">
<el-form-item label="* 系统简称" prop="system_name"> <el-form-item label="* 系统简称" prop="system_name">
<el-col :span="8"> <el-col :span="8">

View File

@ -1,7 +1,7 @@
<template> <template>
<el-card class="dialog-body" :style="{height:height+'px'}"> <el-card class="dialog-body" :style="{height:height+'px'}">
<el-row> <el-row>
<el-col :span="13"> <el-col :span="14">
<el-form ref="ref" :model="model" :rules="rules" label-width="120px"> <el-form ref="ref" :model="model" :rules="rules" label-width="120px">
<el-form-item label="Token密钥" prop="token_key"> <el-form-item label="Token密钥" prop="token_key">
<el-col :span="8"> <el-col :span="8">