mirror of
https://gitee.com/chu1204505056/vue-admin-beautiful.git
synced 2025-04-05 19:41:43 +08:00
⬆ chore: version
This commit is contained in:
parent
b3f1494b7b
commit
3bdde369d7
@ -114,10 +114,7 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
overrides: [
|
overrides: [
|
||||||
{
|
{
|
||||||
files: [
|
files: ['**/__tests__/*.{j,t}s?(x)', '**/tests/unit/**/*.spec.{j,t}s?(x)'],
|
||||||
'**/__tests__/*.{j,t}s?(x)',
|
|
||||||
'**/tests/unit/**/*.spec.{j,t}s?(x)',
|
|
||||||
],
|
|
||||||
env: {
|
env: {
|
||||||
jest: true,
|
jest: true,
|
||||||
},
|
},
|
||||||
|
@ -47,7 +47,7 @@
|
|||||||
"sortablejs": "^1.15.0",
|
"sortablejs": "^1.15.0",
|
||||||
"vab-icon": "file:vab-icon",
|
"vab-icon": "file:vab-icon",
|
||||||
"vue": "~2.7.14",
|
"vue": "~2.7.14",
|
||||||
"vue-echarts": "6.6.0",
|
"vue-echarts": "6.6.1",
|
||||||
"vue-router": "^3.6.5",
|
"vue-router": "^3.6.5",
|
||||||
"vue-template-compiler": "~2.7.14",
|
"vue-template-compiler": "~2.7.14",
|
||||||
"vuex": "^3.6.2",
|
"vuex": "^3.6.2",
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
printWidth: 80,
|
printWidth: 100,
|
||||||
tabWidth: 2,
|
tabWidth: 2,
|
||||||
useTabs: false,
|
useTabs: false,
|
||||||
semi: false,
|
semi: false,
|
||||||
|
@ -86,13 +86,8 @@
|
|||||||
defaultSelectedKeys: [], //初始选中值数组
|
defaultSelectedKeys: [], //初始选中值数组
|
||||||
currentNodeKey: this.selectedKey,
|
currentNodeKey: this.selectedKey,
|
||||||
selectValue:
|
selectValue:
|
||||||
this.selectType == 'multiple'
|
this.selectType == 'multiple' ? this.selectedValue.split(',') : this.selectedValue, //下拉框选中值label
|
||||||
? this.selectedValue.split(',')
|
selectKey: this.selectType == 'multiple' ? this.selectedKey.split(',') : this.selectedKey, //下拉框选中值value
|
||||||
: this.selectedValue, //下拉框选中值label
|
|
||||||
selectKey:
|
|
||||||
this.selectType == 'multiple'
|
|
||||||
? this.selectedKey.split(',')
|
|
||||||
: this.selectedKey, //下拉框选中值value
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
@ -144,12 +144,7 @@
|
|||||||
width: $width;
|
width: $width;
|
||||||
height: $width;
|
height: $width;
|
||||||
transform: translate(-50%, -50%);
|
transform: translate(-50%, -50%);
|
||||||
animation: moveToTop
|
animation: moveToTop #{random(6) + 3}s ease-in-out -#{random(5000) / 1000}s infinite;
|
||||||
#{random(6) +
|
|
||||||
3}s
|
|
||||||
ease-in-out -#{random(5000) /
|
|
||||||
1000}s
|
|
||||||
infinite;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,8 +88,7 @@
|
|||||||
height: 2px;
|
height: 2px;
|
||||||
background: var(--card-bg-color);
|
background: var(--card-bg-color);
|
||||||
transform: translateX(-100%);
|
transform: translateX(-100%);
|
||||||
animation: slide-in-horizontal 0.8s cubic-bezier(0.645, 0.045, 0.355, 1)
|
animation: slide-in-horizontal 0.8s cubic-bezier(0.645, 0.045, 0.355, 1) forwards;
|
||||||
forwards;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.border-right {
|
.border-right {
|
||||||
@ -99,8 +98,7 @@
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
background: var(--card-bg-color);
|
background: var(--card-bg-color);
|
||||||
transform: translateY(100%);
|
transform: translateY(100%);
|
||||||
animation: slide-in-vertical 0.8s cubic-bezier(0.645, 0.045, 0.355, 1)
|
animation: slide-in-vertical 0.8s cubic-bezier(0.645, 0.045, 0.355, 1) forwards;
|
||||||
forwards;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.border-bottom {
|
.border-bottom {
|
||||||
@ -110,8 +108,7 @@
|
|||||||
height: 2px;
|
height: 2px;
|
||||||
background: var(--card-bg-color);
|
background: var(--card-bg-color);
|
||||||
transform: translateX(100%);
|
transform: translateX(100%);
|
||||||
animation: slide-in-horizontal-reverse 0.8s
|
animation: slide-in-horizontal-reverse 0.8s cubic-bezier(0.645, 0.045, 0.355, 1) forwards;
|
||||||
cubic-bezier(0.645, 0.045, 0.355, 1) forwards;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.border-left {
|
.border-left {
|
||||||
@ -121,8 +118,7 @@
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
background: var(--card-bg-color);
|
background: var(--card-bg-color);
|
||||||
transform: translateY(-100%);
|
transform: translateY(-100%);
|
||||||
animation: slide-in-vertical-reverse 0.8s
|
animation: slide-in-vertical-reverse 0.8s cubic-bezier(0.645, 0.045, 0.355, 1) forwards;
|
||||||
cubic-bezier(0.645, 0.045, 0.355, 1) forwards;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,8 +69,7 @@
|
|||||||
|
|
||||||
@keyframes fall-#{$i} {
|
@keyframes fall-#{$i} {
|
||||||
#{percentage($random-yoyo-time)} {
|
#{percentage($random-yoyo-time)} {
|
||||||
transform: translate($random-x-end, $random-yoyo-y)
|
transform: translate($random-x-end, $random-yoyo-y) scale($random-scale);
|
||||||
scale($random-scale);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
to {
|
to {
|
||||||
|
@ -36,11 +36,7 @@
|
|||||||
:on-success="handleSuccess"
|
:on-success="handleSuccess"
|
||||||
>
|
>
|
||||||
<i slot="trigger" class="el-icon-plus"></i>
|
<i slot="trigger" class="el-icon-plus"></i>
|
||||||
<el-dialog
|
<el-dialog append-to-body title="查看大图" :visible.sync="dialogVisible">
|
||||||
append-to-body
|
|
||||||
title="查看大图"
|
|
||||||
:visible.sync="dialogVisible"
|
|
||||||
>
|
|
||||||
<div>
|
<div>
|
||||||
<img alt="" :src="dialogImageUrl" width="100%" />
|
<img alt="" :src="dialogImageUrl" width="100%" />
|
||||||
</div>
|
</div>
|
||||||
@ -52,13 +48,8 @@
|
|||||||
class="dialog-footer"
|
class="dialog-footer"
|
||||||
style="position: relative; padding-right: 15px; text-align: right"
|
style="position: relative; padding-right: 15px; text-align: right"
|
||||||
>
|
>
|
||||||
<div
|
<div v-if="show" style="position: absolute; top: 10px; left: 15px; color: #999">
|
||||||
v-if="show"
|
正在上传中... 当前上传成功数:{{ imgSuccessNum }}张 当前上传失败数:{{ imgErrorNum }}张
|
||||||
style="position: absolute; top: 10px; left: 15px; color: #999"
|
|
||||||
>
|
|
||||||
正在上传中... 当前上传成功数:{{ imgSuccessNum }}张 当前上传失败数:{{
|
|
||||||
imgErrorNum
|
|
||||||
}}张
|
|
||||||
</div>
|
</div>
|
||||||
<el-button type="primary" @click="handleClose">关闭</el-button>
|
<el-button type="primary" @click="handleClose">关闭</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
@ -149,10 +140,7 @@
|
|||||||
this.imgSuccessNum = this.imgSuccessNum + 1
|
this.imgSuccessNum = this.imgSuccessNum + 1
|
||||||
if (fileList.length === this.imgNum) {
|
if (fileList.length === this.imgNum) {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
this.$baseMessage(
|
this.$baseMessage(`上传完成! 共上传${fileList.length}张图片`, 'success')
|
||||||
`上传完成! 共上传${fileList.length}张图片`,
|
|
||||||
'success'
|
|
||||||
)
|
|
||||||
}, 1000)
|
}, 1000)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,10 +3,7 @@
|
|||||||
**/
|
**/
|
||||||
const network = {
|
const network = {
|
||||||
// 默认的接口地址 如果是开发环境和生产环境走vab-mock-server,当然你也可以选择自己配置成需要的接口地址
|
// 默认的接口地址 如果是开发环境和生产环境走vab-mock-server,当然你也可以选择自己配置成需要的接口地址
|
||||||
baseURL:
|
baseURL: process.env.NODE_ENV === 'development' ? 'vab-mock-server' : 'vab-mock-server',
|
||||||
process.env.NODE_ENV === 'development'
|
|
||||||
? 'vab-mock-server'
|
|
||||||
: 'vab-mock-server',
|
|
||||||
//配后端数据的接收方式application/json;charset=UTF-8或者application/x-www-form-urlencoded;charset=UTF-8
|
//配后端数据的接收方式application/json;charset=UTF-8或者application/x-www-form-urlencoded;charset=UTF-8
|
||||||
contentType: 'application/json;charset=UTF-8',
|
contentType: 'application/json;charset=UTF-8',
|
||||||
//消息框消失时间
|
//消息框消失时间
|
||||||
|
@ -33,8 +33,7 @@ router.beforeResolve(async (to, from, next) => {
|
|||||||
if (progressBar) VabProgress.done()
|
if (progressBar) VabProgress.done()
|
||||||
} else {
|
} else {
|
||||||
const hasPermissions =
|
const hasPermissions =
|
||||||
store.getters['user/permissions'] &&
|
store.getters['user/permissions'] && store.getters['user/permissions'].length > 0
|
||||||
store.getters['user/permissions'].length > 0
|
|
||||||
if (hasPermissions) {
|
if (hasPermissions) {
|
||||||
next()
|
next()
|
||||||
} else {
|
} else {
|
||||||
|
@ -15,5 +15,4 @@ if (!!window.ActiveXObject || 'ActiveXObject' in window) {
|
|||||||
dangerouslyUseHTMLString: true,
|
dangerouslyUseHTMLString: true,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
if (!dependencies['vab-icon'] || !dependencies['layouts'])
|
if (!dependencies['vab-icon'] || !dependencies['layouts']) document.body.innerHTML = ''
|
||||||
document.body.innerHTML = ''
|
|
||||||
|
@ -177,8 +177,7 @@ export const asyncRoutes = [
|
|||||||
path: 'menu1-1-1',
|
path: 'menu1-1-1',
|
||||||
name: 'Menu1-1-1',
|
name: 'Menu1-1-1',
|
||||||
meta: { title: '嵌套路由 1-1-1' },
|
meta: { title: '嵌套路由 1-1-1' },
|
||||||
component: () =>
|
component: () => import('@/views/vab/nested/menu1/menu1-1/menu1-1-1/index'),
|
||||||
import('@/views/vab/nested/menu1/menu1-1/menu1-1-1/index'),
|
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
@ -249,22 +248,19 @@ export const asyncRoutes = [
|
|||||||
{
|
{
|
||||||
path: 'userManagement',
|
path: 'userManagement',
|
||||||
name: 'UserManagement',
|
name: 'UserManagement',
|
||||||
component: () =>
|
component: () => import('@/views/personnelManagement/userManagement/index'),
|
||||||
import('@/views/personnelManagement/userManagement/index'),
|
|
||||||
meta: { title: '用户管理' },
|
meta: { title: '用户管理' },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'roleManagement',
|
path: 'roleManagement',
|
||||||
name: 'RoleManagement',
|
name: 'RoleManagement',
|
||||||
component: () =>
|
component: () => import('@/views/personnelManagement/roleManagement/index'),
|
||||||
import('@/views/personnelManagement/roleManagement/index'),
|
|
||||||
meta: { title: '角色管理' },
|
meta: { title: '角色管理' },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'menuManagement',
|
path: 'menuManagement',
|
||||||
name: 'MenuManagement',
|
name: 'MenuManagement',
|
||||||
component: () =>
|
component: () => import('@/views/personnelManagement/menuManagement/index'),
|
||||||
import('@/views/personnelManagement/menuManagement/index'),
|
|
||||||
meta: { title: '菜单管理', badge: 'New' },
|
meta: { title: '菜单管理', badge: 'New' },
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
@ -28,10 +28,7 @@ const mutations = {
|
|||||||
const actions = {
|
const actions = {
|
||||||
async setRoutes({ commit }, permissions) {
|
async setRoutes({ commit }, permissions) {
|
||||||
//开源版只过滤动态路由permissions,admin不再默认拥有全部权限
|
//开源版只过滤动态路由permissions,admin不再默认拥有全部权限
|
||||||
const finallyAsyncRoutes = await filterAsyncRoutes(
|
const finallyAsyncRoutes = await filterAsyncRoutes([...asyncRoutes], permissions)
|
||||||
[...asyncRoutes],
|
|
||||||
permissions
|
|
||||||
)
|
|
||||||
commit('setRoutes', finallyAsyncRoutes)
|
commit('setRoutes', finallyAsyncRoutes)
|
||||||
return finallyAsyncRoutes
|
return finallyAsyncRoutes
|
||||||
},
|
},
|
||||||
|
@ -6,8 +6,7 @@
|
|||||||
import defaultSettings from '@/config'
|
import defaultSettings from '@/config'
|
||||||
|
|
||||||
const { tabsBar, logo, layout, header, themeBar } = defaultSettings
|
const { tabsBar, logo, layout, header, themeBar } = defaultSettings
|
||||||
const theme =
|
const theme = JSON.parse(localStorage.getItem('vue-admin-beautiful-theme')) || ''
|
||||||
JSON.parse(localStorage.getItem('vue-admin-beautiful-theme')) || ''
|
|
||||||
const state = () => ({
|
const state = () => ({
|
||||||
tabsBar: theme.tabsBar || tabsBar,
|
tabsBar: theme.tabsBar || tabsBar,
|
||||||
logo,
|
logo,
|
||||||
|
@ -5,11 +5,7 @@
|
|||||||
|
|
||||||
import Vue from 'vue'
|
import Vue from 'vue'
|
||||||
import { getUserInfo, login, logout } from '@/api/user'
|
import { getUserInfo, login, logout } from '@/api/user'
|
||||||
import {
|
import { getAccessToken, removeAccessToken, setAccessToken } from '@/utils/accessToken'
|
||||||
getAccessToken,
|
|
||||||
removeAccessToken,
|
|
||||||
setAccessToken,
|
|
||||||
} from '@/utils/accessToken'
|
|
||||||
import { resetRouter } from '@/router'
|
import { resetRouter } from '@/router'
|
||||||
import { title, tokenName } from '@/config'
|
import { title, tokenName } from '@/config'
|
||||||
|
|
||||||
@ -62,10 +58,7 @@ const actions = {
|
|||||||
: '晚上好'
|
: '晚上好'
|
||||||
Vue.prototype.$baseNotify(`欢迎登录${title}`, `${thisTime}!`)
|
Vue.prototype.$baseNotify(`欢迎登录${title}`, `${thisTime}!`)
|
||||||
} else {
|
} else {
|
||||||
Vue.prototype.$baseMessage(
|
Vue.prototype.$baseMessage(`登录接口异常,未正确返回${tokenName}...`, 'error')
|
||||||
`登录接口异常,未正确返回${tokenName}...`,
|
|
||||||
'error'
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async getUserInfo({ commit, state }) {
|
async getUserInfo({ commit, state }) {
|
||||||
|
@ -21,9 +21,7 @@ export async function encryptedData(data) {
|
|||||||
return data
|
return data
|
||||||
}
|
}
|
||||||
const encrypt = new JSEncrypt()
|
const encrypt = new JSEncrypt()
|
||||||
encrypt.setPublicKey(
|
encrypt.setPublicKey(`-----BEGIN PUBLIC KEY-----${publicKey}-----END PUBLIC KEY-----`)
|
||||||
`-----BEGIN PUBLIC KEY-----${publicKey}-----END PUBLIC KEY-----`
|
|
||||||
)
|
|
||||||
data = encrypt.encrypt(JSON.stringify(data))
|
data = encrypt.encrypt(JSON.stringify(data))
|
||||||
return {
|
return {
|
||||||
param: data,
|
param: data,
|
||||||
@ -38,9 +36,7 @@ export async function encryptedData(data) {
|
|||||||
*/
|
*/
|
||||||
export function decryptedData(data) {
|
export function decryptedData(data) {
|
||||||
const decrypt = new JSEncrypt()
|
const decrypt = new JSEncrypt()
|
||||||
decrypt.setPrivateKey(
|
decrypt.setPrivateKey(`-----BEGIN RSA PRIVATE KEY-----${privateKey}-----END RSA PRIVATE KEY-----`)
|
||||||
`-----BEGIN RSA PRIVATE KEY-----${privateKey}-----END RSA PRIVATE KEY-----`
|
|
||||||
)
|
|
||||||
data = decrypt.decrypt(JSON.stringify(data))
|
data = decrypt.decrypt(JSON.stringify(data))
|
||||||
return data
|
return data
|
||||||
}
|
}
|
||||||
|
@ -10,17 +10,14 @@ export function convertRouter(asyncRoutes) {
|
|||||||
if (route.component === 'Layout') {
|
if (route.component === 'Layout') {
|
||||||
route.component = (resolve) => require(['@/layouts'], resolve)
|
route.component = (resolve) => require(['@/layouts'], resolve)
|
||||||
} else if (route.component === 'EmptyLayout') {
|
} else if (route.component === 'EmptyLayout') {
|
||||||
route.component = (resolve) =>
|
route.component = (resolve) => require(['@/layouts/EmptyLayout'], resolve)
|
||||||
require(['@/layouts/EmptyLayout'], resolve)
|
|
||||||
} else {
|
} else {
|
||||||
const index = route.component.indexOf('views')
|
const index = route.component.indexOf('views')
|
||||||
const path =
|
const path = index > 0 ? route.component.slice(index) : `views/${route.component}`
|
||||||
index > 0 ? route.component.slice(index) : `views/${route.component}`
|
|
||||||
route.component = (resolve) => require([`@/${path}`], resolve)
|
route.component = (resolve) => require([`@/${path}`], resolve)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (route.children && route.children.length)
|
if (route.children && route.children.length) route.children = convertRouter(route.children)
|
||||||
route.children = convertRouter(route.children)
|
|
||||||
if (route.children && route.children.length === 0) delete route.children
|
if (route.children && route.children.length === 0) delete route.children
|
||||||
return route
|
return route
|
||||||
})
|
})
|
||||||
|
@ -75,9 +75,7 @@ export function formatTime(time, option) {
|
|||||||
if (option) {
|
if (option) {
|
||||||
return parseTime(time, option)
|
return parseTime(time, option)
|
||||||
} else {
|
} else {
|
||||||
return `${
|
return `${d.getMonth() + 1}月${d.getDate()}日${d.getHours()}时${d.getMinutes()}分`
|
||||||
d.getMonth() + 1
|
|
||||||
}月${d.getDate()}日${d.getHours()}时${d.getMinutes()}分`
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -108,12 +106,8 @@ export function paramObj(url) {
|
|||||||
* @returns {*}
|
* @returns {*}
|
||||||
*/
|
*/
|
||||||
export function translateDataToTree(data) {
|
export function translateDataToTree(data) {
|
||||||
const parent = data.filter(
|
const parent = data.filter((value) => value.parentId === 'undefined' || value.parentId == null)
|
||||||
(value) => value.parentId === 'undefined' || value.parentId == null
|
const children = data.filter((value) => value.parentId !== 'undefined' && value.parentId != null)
|
||||||
)
|
|
||||||
const children = data.filter(
|
|
||||||
(value) => value.parentId !== 'undefined' && value.parentId != null
|
|
||||||
)
|
|
||||||
const translator = (parent, children) => {
|
const translator = (parent, children) => {
|
||||||
parent.forEach((parent) => {
|
parent.forEach((parent) => {
|
||||||
children.forEach((current, index) => {
|
children.forEach((current, index) => {
|
||||||
|
@ -63,8 +63,7 @@ instance.interceptors.request.use(
|
|||||||
)
|
)
|
||||||
if (
|
if (
|
||||||
config.data &&
|
config.data &&
|
||||||
config.headers['Content-Type'] ===
|
config.headers['Content-Type'] === 'application/x-www-form-urlencoded;charset=UTF-8'
|
||||||
'application/x-www-form-urlencoded;charset=UTF-8'
|
|
||||||
)
|
)
|
||||||
config.data = qs.stringify(config.data)
|
config.data = qs.stringify(config.data)
|
||||||
if (debounce.some((item) => config.url.includes(item)))
|
if (debounce.some((item) => config.url.includes(item)))
|
||||||
@ -83,9 +82,7 @@ instance.interceptors.response.use(
|
|||||||
const { data, config } = response
|
const { data, config } = response
|
||||||
const { code, msg } = data
|
const { code, msg } = data
|
||||||
// 操作正常Code数组
|
// 操作正常Code数组
|
||||||
const codeVerificationArray = isArray(successCode)
|
const codeVerificationArray = isArray(successCode) ? [...successCode] : [...[successCode]]
|
||||||
? [...successCode]
|
|
||||||
: [...[successCode]]
|
|
||||||
// 是否操作正常
|
// 是否操作正常
|
||||||
if (codeVerificationArray.includes(code)) {
|
if (codeVerificationArray.includes(code)) {
|
||||||
return data
|
return data
|
||||||
|
@ -43,10 +43,6 @@ export function mockXHR() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
mocks.forEach((item) => {
|
mocks.forEach((item) => {
|
||||||
Mock.mock(
|
Mock.mock(new RegExp(item.url), item.type || 'get', XHRHttpRequst(item.response))
|
||||||
new RegExp(item.url),
|
|
||||||
item.type || 'get',
|
|
||||||
XHRHttpRequst(item.response)
|
|
||||||
)
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -161,8 +161,7 @@ const install = (Vue) => {
|
|||||||
urlTemplate:
|
urlTemplate:
|
||||||
'http://online{s}.map.bdimg.com/onlinelabel/?qt=tile&x={x}&y={y}&z={z}&styles=pl&scaler=1&p=1',
|
'http://online{s}.map.bdimg.com/onlinelabel/?qt=tile&x={x}&y={y}&z={z}&styles=pl&scaler=1&p=1',
|
||||||
subdomains: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
|
subdomains: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
|
||||||
attribution:
|
attribution: '© <a target="_blank" href="http://map.baidu.com">Baidu</a>',
|
||||||
'© <a target="_blank" href="http://map.baidu.com">Baidu</a>',
|
|
||||||
}),
|
}),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -4,26 +4,10 @@
|
|||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :lg="12" :md="12" :sm="24" :xl="12" :xs="24">
|
<el-col :lg="12" :md="12" :sm="24" :xl="12" :xs="24">
|
||||||
<div class="pic-error">
|
<div class="pic-error">
|
||||||
<img
|
<img alt="401" class="pic-error-parent" src="@/assets/error_images/401.png" />
|
||||||
alt="401"
|
<img alt="401" class="pic-error-child left" src="@/assets/error_images/cloud.png" />
|
||||||
class="pic-error-parent"
|
<img alt="401" class="pic-error-child" src="@/assets/error_images/cloud.png" />
|
||||||
src="@/assets/error_images/401.png"
|
<img alt="401" class="pic-error-child" src="@/assets/error_images/cloud.png" />
|
||||||
/>
|
|
||||||
<img
|
|
||||||
alt="401"
|
|
||||||
class="pic-error-child left"
|
|
||||||
src="@/assets/error_images/cloud.png"
|
|
||||||
/>
|
|
||||||
<img
|
|
||||||
alt="401"
|
|
||||||
class="pic-error-child"
|
|
||||||
src="@/assets/error_images/cloud.png"
|
|
||||||
/>
|
|
||||||
<img
|
|
||||||
alt="401"
|
|
||||||
class="pic-error-child"
|
|
||||||
src="@/assets/error_images/cloud.png"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
@ -38,9 +22,7 @@
|
|||||||
<div class="bullshit-info">
|
<div class="bullshit-info">
|
||||||
{{ info }}
|
{{ info }}
|
||||||
</div>
|
</div>
|
||||||
<a class="bullshit-return-home" href="#/index">
|
<a class="bullshit-return-home" href="#/index">{{ jumpTime }}s {{ btn }}</a>
|
||||||
{{ jumpTime }}s {{ btn }}
|
|
||||||
</a>
|
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
@ -4,26 +4,10 @@
|
|||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :lg="12" :md="12" :sm="24" :xl="12" :xs="24">
|
<el-col :lg="12" :md="12" :sm="24" :xl="12" :xs="24">
|
||||||
<div class="pic-error">
|
<div class="pic-error">
|
||||||
<img
|
<img alt="401" class="pic-error-parent" src="@/assets/error_images/404.png" />
|
||||||
alt="401"
|
<img alt="401" class="pic-error-child left" src="@/assets/error_images/cloud.png" />
|
||||||
class="pic-error-parent"
|
<img alt="401" class="pic-error-child" src="@/assets/error_images/cloud.png" />
|
||||||
src="@/assets/error_images/404.png"
|
<img alt="401" class="pic-error-child" src="@/assets/error_images/cloud.png" />
|
||||||
/>
|
|
||||||
<img
|
|
||||||
alt="401"
|
|
||||||
class="pic-error-child left"
|
|
||||||
src="@/assets/error_images/cloud.png"
|
|
||||||
/>
|
|
||||||
<img
|
|
||||||
alt="401"
|
|
||||||
class="pic-error-child"
|
|
||||||
src="@/assets/error_images/cloud.png"
|
|
||||||
/>
|
|
||||||
<img
|
|
||||||
alt="401"
|
|
||||||
class="pic-error-child"
|
|
||||||
src="@/assets/error_images/cloud.png"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
@ -38,9 +22,7 @@
|
|||||||
<div class="bullshit-info">
|
<div class="bullshit-info">
|
||||||
{{ info }}
|
{{ info }}
|
||||||
</div>
|
</div>
|
||||||
<a class="bullshit-return-home" href="#/index">
|
<a class="bullshit-return-home" href="#/index">{{ jumpTime }}s {{ btn }}</a>
|
||||||
{{ jumpTime }}s {{ btn }}
|
|
||||||
</a>
|
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
@ -26,29 +26,18 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td>授权渠道</td>
|
<td>授权渠道</td>
|
||||||
<td colspan="3">
|
<td colspan="3">
|
||||||
<a
|
<a href="https://vue-admin-beautiful.com/authorization" target="_blank">
|
||||||
href="https://vue-admin-beautiful.com/authorization"
|
|
||||||
target="_blank"
|
|
||||||
>
|
|
||||||
<el-button style="margin-left: 10px" type="primary">
|
<el-button style="margin-left: 10px" type="primary">
|
||||||
PRO付费版本 购买源码 ¥699
|
PRO付费版本 购买源码 ¥699
|
||||||
</el-button>
|
</el-button>
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a href="https://vue-admin-beautiful.com/authorization" target="_blank">
|
||||||
href="https://vue-admin-beautiful.com/authorization"
|
|
||||||
target="_blank"
|
|
||||||
>
|
|
||||||
<el-button style="margin-left: 10px" type="primary">
|
<el-button style="margin-left: 10px" type="primary">
|
||||||
Plus付费版本 购买源码 ¥799
|
Plus付费版本 购买源码 ¥799
|
||||||
</el-button>
|
</el-button>
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a href="https://github.com/chuzhixin/vue-admin-beautiful/" target="_blank">
|
||||||
href="https://github.com/chuzhixin/vue-admin-beautiful/"
|
<el-button style="margin-left: 10px" type="warning">开源免费版</el-button>
|
||||||
target="_blank"
|
|
||||||
>
|
|
||||||
<el-button style="margin-left: 10px" type="warning">
|
|
||||||
开源免费版
|
|
||||||
</el-button>
|
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -3,13 +3,8 @@
|
|||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :lg="24" :md="24" :sm="24" :xl="24" :xs="24">
|
<el-col :lg="24" :md="24" :sm="24" :xl="24" :xs="24">
|
||||||
<el-alert v-if="noticeList[0]" :closable="noticeList[0].closable">
|
<el-alert v-if="noticeList[0]" :closable="noticeList[0].closable">
|
||||||
<div
|
<div style="display: flex; align-items: center; justify-content: center">
|
||||||
style="display: flex; align-items: center; justify-content: center"
|
<a href="https://github.com/chuzhixin/vue-admin-better" target="_blank">
|
||||||
>
|
|
||||||
<a
|
|
||||||
href="https://github.com/chuzhixin/vue-admin-better"
|
|
||||||
target="_blank"
|
|
||||||
>
|
|
||||||
<img
|
<img
|
||||||
src="https://img.shields.io/github/stars/chuzhixin/vue-admin-better?style=flat-square&label=Stars&logo=github"
|
src="https://img.shields.io/github/stars/chuzhixin/vue-admin-better?style=flat-square&label=Stars&logo=github"
|
||||||
style="margin-right: 10px"
|
style="margin-right: 10px"
|
||||||
@ -60,10 +55,7 @@
|
|||||||
>
|
>
|
||||||
<router-link target="_blank" :to="item.link">
|
<router-link target="_blank" :to="item.link">
|
||||||
<el-card class="icon-panel" shadow="never">
|
<el-card class="icon-panel" shadow="never">
|
||||||
<vab-icon
|
<vab-icon :icon="['fas', item.icon]" :style="{ color: item.color }" />
|
||||||
:icon="['fas', item.icon]"
|
|
||||||
:style="{ color: item.color }"
|
|
||||||
/>
|
|
||||||
<p>{{ item.title }}</p>
|
<p>{{ item.title }}</p>
|
||||||
</el-card>
|
</el-card>
|
||||||
</router-link>
|
</router-link>
|
||||||
@ -86,16 +78,10 @@
|
|||||||
<el-button type="primary">QQ讨论群、基础版、文档</el-button>
|
<el-button type="primary">QQ讨论群、基础版、文档</el-button>
|
||||||
</a>
|
</a>
|
||||||
</el-popover>
|
</el-popover>
|
||||||
<a
|
<a href="https://github.com/chuzhixin/vue-admin-better" target="_blank">
|
||||||
href="https://github.com/chuzhixin/vue-admin-better"
|
|
||||||
target="_blank"
|
|
||||||
>
|
|
||||||
<el-button type="warning">github下载源码点star</el-button>
|
<el-button type="warning">github下载源码点star</el-button>
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a href="https://gitee.com/chu1204505056/vue-admin-beautiful" target="_blank">
|
||||||
href="https://gitee.com/chu1204505056/vue-admin-beautiful"
|
|
||||||
target="_blank"
|
|
||||||
>
|
|
||||||
<el-button type="warning">码云下载源码点star</el-button>
|
<el-button type="warning">码云下载源码点star</el-button>
|
||||||
</a>
|
</a>
|
||||||
<a @click="handleChangeTheme">
|
<a @click="handleChangeTheme">
|
||||||
@ -239,14 +225,7 @@
|
|||||||
|
|
||||||
//访问量
|
//访问量
|
||||||
fwl: {
|
fwl: {
|
||||||
color: [
|
color: ['#1890FF', '#36CBCB', '#4ECB73', '#FBD437', '#F2637B', '#975FE5'],
|
||||||
'#1890FF',
|
|
||||||
'#36CBCB',
|
|
||||||
'#4ECB73',
|
|
||||||
'#FBD437',
|
|
||||||
'#F2637B',
|
|
||||||
'#975FE5',
|
|
||||||
],
|
|
||||||
backgroundColor: 'rgba(252,252,252,0)',
|
backgroundColor: 'rgba(252,252,252,0)',
|
||||||
grid: {
|
grid: {
|
||||||
top: '4%',
|
top: '4%',
|
||||||
@ -282,14 +261,7 @@
|
|||||||
},
|
},
|
||||||
//授权数
|
//授权数
|
||||||
sqs: {
|
sqs: {
|
||||||
color: [
|
color: ['#1890FF', '#36CBCB', '#4ECB73', '#FBD437', '#F2637B', '#975FE5'],
|
||||||
'#1890FF',
|
|
||||||
'#36CBCB',
|
|
||||||
'#4ECB73',
|
|
||||||
'#FBD437',
|
|
||||||
'#F2637B',
|
|
||||||
'#975FE5',
|
|
||||||
],
|
|
||||||
backgroundColor: 'rgba(252,252,252,0)',
|
backgroundColor: 'rgba(252,252,252,0)',
|
||||||
grid: {
|
grid: {
|
||||||
top: '4%',
|
top: '4%',
|
||||||
@ -341,14 +313,7 @@
|
|||||||
textStyle: {
|
textStyle: {
|
||||||
normal: {
|
normal: {
|
||||||
color() {
|
color() {
|
||||||
const arr = [
|
const arr = ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#975FE5']
|
||||||
'#5470c6',
|
|
||||||
'#91cc75',
|
|
||||||
'#fac858',
|
|
||||||
'#ee6666',
|
|
||||||
'#73c0de',
|
|
||||||
'#975FE5',
|
|
||||||
]
|
|
||||||
let index = Math.floor(Math.random() * arr.length)
|
let index = Math.floor(Math.random() * arr.length)
|
||||||
return arr[index]
|
return arr[index]
|
||||||
},
|
},
|
||||||
|
@ -11,13 +11,7 @@
|
|||||||
<div style="color: transparent">占位符</div>
|
<div style="color: transparent">占位符</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :lg="8" :md="12" :sm="24" :xl="8" :xs="24">
|
<el-col :lg="8" :md="12" :sm="24" :xl="8" :xs="24">
|
||||||
<el-form
|
<el-form ref="form" class="login-form" label-position="left" :model="form" :rules="rules">
|
||||||
ref="form"
|
|
||||||
class="login-form"
|
|
||||||
label-position="left"
|
|
||||||
:model="form"
|
|
||||||
:rules="rules"
|
|
||||||
>
|
|
||||||
<div class="title">hello !</div>
|
<div class="title">hello !</div>
|
||||||
<div class="title-tips">欢迎来到{{ title }}!</div>
|
<div class="title-tips">欢迎来到{{ title }}!</div>
|
||||||
<el-form-item prop="username" style="margin-top: 40px">
|
<el-form-item prop="username" style="margin-top: 40px">
|
||||||
@ -45,23 +39,14 @@
|
|||||||
:type="passwordType"
|
:type="passwordType"
|
||||||
@keyup.enter.native="handleLogin"
|
@keyup.enter.native="handleLogin"
|
||||||
/>
|
/>
|
||||||
<span
|
<span v-if="passwordType === 'password'" class="show-password" @click="handlePassword">
|
||||||
v-if="passwordType === 'password'"
|
|
||||||
class="show-password"
|
|
||||||
@click="handlePassword"
|
|
||||||
>
|
|
||||||
<vab-icon :icon="['fas', 'eye-slash']" />
|
<vab-icon :icon="['fas', 'eye-slash']" />
|
||||||
</span>
|
</span>
|
||||||
<span v-else class="show-password" @click="handlePassword">
|
<span v-else class="show-password" @click="handlePassword">
|
||||||
<vab-icon :icon="['fas', 'eye']" />
|
<vab-icon :icon="['fas', 'eye']" />
|
||||||
</span>
|
</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-button
|
<el-button class="login-btn" :loading="loading" type="primary" @click="handleLogin">
|
||||||
class="login-btn"
|
|
||||||
:loading="loading"
|
|
||||||
type="primary"
|
|
||||||
@click="handleLogin"
|
|
||||||
>
|
|
||||||
登录
|
登录
|
||||||
</el-button>
|
</el-button>
|
||||||
<router-link to="/register">
|
<router-link to="/register">
|
||||||
@ -166,9 +151,7 @@
|
|||||||
.dispatch('user/login', this.form)
|
.dispatch('user/login', this.form)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
const routerPath =
|
const routerPath =
|
||||||
this.redirect === '/404' || this.redirect === '/401'
|
this.redirect === '/404' || this.redirect === '/401' ? '/' : this.redirect
|
||||||
? '/'
|
|
||||||
: this.redirect
|
|
||||||
this.$router.push(routerPath).catch(() => {})
|
this.$router.push(routerPath).catch(() => {})
|
||||||
this.loading = false
|
this.loading = false
|
||||||
})
|
})
|
||||||
@ -187,8 +170,7 @@
|
|||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.login-container {
|
.login-container {
|
||||||
height: 100vh;
|
height: 100vh;
|
||||||
background: url('~@/assets/login_images/background.jpg') center center fixed
|
background: url('~@/assets/login_images/background.jpg') center center fixed no-repeat;
|
||||||
no-repeat;
|
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
|
|
||||||
.title {
|
.title {
|
||||||
|
@ -2,12 +2,7 @@
|
|||||||
<div class="goods-list-container">
|
<div class="goods-list-container">
|
||||||
<vab-query-form>
|
<vab-query-form>
|
||||||
<vab-query-form-right-panel :span="24">
|
<vab-query-form-right-panel :span="24">
|
||||||
<el-form
|
<el-form ref="form" :inline="true" :model="queryForm" @submit.native.prevent>
|
||||||
ref="form"
|
|
||||||
:inline="true"
|
|
||||||
:model="queryForm"
|
|
||||||
@submit.native.prevent
|
|
||||||
>
|
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-input v-model="queryForm.title" placeholder="商品名称" />
|
<el-input v-model="queryForm.title" placeholder="商品名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -25,15 +20,7 @@
|
|||||||
</vab-query-form-right-panel>
|
</vab-query-form-right-panel>
|
||||||
</vab-query-form>
|
</vab-query-form>
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col
|
<el-col v-for="(item, index) in list" :key="index" :lg="8" :md="8" :sm="8" :xl="6" :xs="24">
|
||||||
v-for="(item, index) in list"
|
|
||||||
:key="index"
|
|
||||||
:lg="8"
|
|
||||||
:md="8"
|
|
||||||
:sm="8"
|
|
||||||
:xl="6"
|
|
||||||
:xs="24"
|
|
||||||
>
|
|
||||||
<el-card :body-style="{ padding: '0px' }" shadow="hover">
|
<el-card :body-style="{ padding: '0px' }" shadow="hover">
|
||||||
<div class="goods-list-card-body">
|
<div class="goods-list-card-body">
|
||||||
<div class="goods-list-tag-group">
|
<div class="goods-list-tag-group">
|
||||||
|
@ -33,16 +33,12 @@
|
|||||||
price: '100',
|
price: '100',
|
||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
payAccount: [
|
payAccount: [{ required: true, message: '请选择付款账户', trigger: 'blur' }],
|
||||||
{ required: true, message: '请选择付款账户', trigger: 'blur' },
|
|
||||||
],
|
|
||||||
gatheringAccount: [
|
gatheringAccount: [
|
||||||
{ required: true, message: '请输入收款账户', trigger: 'blur' },
|
{ required: true, message: '请输入收款账户', trigger: 'blur' },
|
||||||
{ type: 'email', message: '账户名应为邮箱格式', trigger: 'blur' },
|
{ type: 'email', message: '账户名应为邮箱格式', trigger: 'blur' },
|
||||||
],
|
],
|
||||||
gatheringName: [
|
gatheringName: [{ required: true, message: '请输入收款人姓名', trigger: 'blur' }],
|
||||||
{ required: true, message: '请输入收款人姓名', trigger: 'blur' },
|
|
||||||
],
|
|
||||||
price: [
|
price: [
|
||||||
{ required: true, message: '请输入转账金额', trigger: 'blur' },
|
{ required: true, message: '请输入转账金额', trigger: 'blur' },
|
||||||
{ pattern: /^(\d+)((?:\.\d+)?)$/, message: '请输入合法金额数字' },
|
{ pattern: /^(\d+)((?:\.\d+)?)$/, message: '请输入合法金额数字' },
|
||||||
|
@ -2,9 +2,7 @@
|
|||||||
<div>
|
<div>
|
||||||
<el-form ref="form" label-width="120px" :model="form" :rules="rules">
|
<el-form ref="form" label-width="120px" :model="form" :rules="rules">
|
||||||
<el-form-item label-width="0">
|
<el-form-item label-width="0">
|
||||||
<el-alert show-icon>
|
<el-alert show-icon>确认转账后,资金将直接打入对方账户,无法退回。</el-alert>
|
||||||
确认转账后,资金将直接打入对方账户,无法退回。
|
|
||||||
</el-alert>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="付款账户:">
|
<el-form-item label="付款账户:">
|
||||||
{{ infoData.payAccount }}
|
{{ infoData.payAccount }}
|
||||||
@ -25,9 +23,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div class="pay-button-group">
|
<div class="pay-button-group">
|
||||||
<el-button :loading="loading" type="primary" @click="handleSubmit">
|
<el-button :loading="loading" type="primary" @click="handleSubmit">提交</el-button>
|
||||||
提交
|
|
||||||
</el-button>
|
|
||||||
<el-button @click="handlePrev">上一步</el-button>
|
<el-button @click="handlePrev">上一步</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -48,9 +44,7 @@
|
|||||||
password: '123456',
|
password: '123456',
|
||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
password: [
|
password: [{ required: true, message: '请输入支付密码', trigger: 'blur' }],
|
||||||
{ required: true, message: '请输入支付密码', trigger: 'blur' },
|
|
||||||
],
|
|
||||||
},
|
},
|
||||||
loading: false,
|
loading: false,
|
||||||
}
|
}
|
||||||
|
@ -4,13 +4,7 @@
|
|||||||
<vab-icon class="pay-success" :icon="['fas', 'check-circle']" />
|
<vab-icon class="pay-success" :icon="['fas', 'check-circle']" />
|
||||||
<p>支付成功</p>
|
<p>支付成功</p>
|
||||||
</div>
|
</div>
|
||||||
<el-form
|
<el-form ref="form" class="pay-bottom" label-width="120px" :model="form" :rules="rules">
|
||||||
ref="form"
|
|
||||||
class="pay-bottom"
|
|
||||||
label-width="120px"
|
|
||||||
:model="form"
|
|
||||||
:rules="rules"
|
|
||||||
>
|
|
||||||
<el-form-item label="付款账户:">
|
<el-form-item label="付款账户:">
|
||||||
{{ infoData.payAccount }}
|
{{ infoData.payAccount }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -47,9 +41,7 @@
|
|||||||
password: '123456',
|
password: '123456',
|
||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
password: [
|
password: [{ required: true, message: '请输入支付密码', trigger: 'blur' }],
|
||||||
{ required: true, message: '请输入支付密码', trigger: 'blur' },
|
|
||||||
],
|
|
||||||
},
|
},
|
||||||
loading: false,
|
loading: false,
|
||||||
}
|
}
|
||||||
|
@ -14,16 +14,8 @@
|
|||||||
<el-step title="完成" />
|
<el-step title="完成" />
|
||||||
</el-steps>
|
</el-steps>
|
||||||
<step1 v-if="active === 1" @change-step="handleSetStep" />
|
<step1 v-if="active === 1" @change-step="handleSetStep" />
|
||||||
<step2
|
<step2 v-if="active === 2" :info-data="form" @change-step="handleSetStep" />
|
||||||
v-if="active === 2"
|
<step3 v-if="active === 3" :info-data="form" @change-step="handleSetStep" />
|
||||||
:info-data="form"
|
|
||||||
@change-step="handleSetStep"
|
|
||||||
/>
|
|
||||||
<step3
|
|
||||||
v-if="active === 3"
|
|
||||||
:info-data="form"
|
|
||||||
@change-step="handleSetStep"
|
|
||||||
/>
|
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,13 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog
|
<el-dialog :title="title" :visible.sync="dialogFormVisible" width="500px" @close="close">
|
||||||
:title="title"
|
<el-divider content-position="left">这里就不具体写了,请自行完善</el-divider>
|
||||||
:visible.sync="dialogFormVisible"
|
|
||||||
width="500px"
|
|
||||||
@close="close"
|
|
||||||
>
|
|
||||||
<el-divider content-position="left">
|
|
||||||
这里就不具体写了,请自行完善
|
|
||||||
</el-divider>
|
|
||||||
<el-form ref="form" label-width="80px" :model="form" :rules="rules">
|
<el-form ref="form" label-width="80px" :model="form" :rules="rules">
|
||||||
<el-form-item label="name" prop="name">
|
<el-form-item label="name" prop="name">
|
||||||
<el-input v-model="form.name" autocomplete="off" />
|
<el-input v-model="form.name" autocomplete="off" />
|
||||||
|
@ -16,9 +16,7 @@
|
|||||||
<el-col :lg="20" :md="16" :sm="24" :xl="20" :xs="24">
|
<el-col :lg="20" :md="16" :sm="24" :xl="20" :xs="24">
|
||||||
<vab-query-form>
|
<vab-query-form>
|
||||||
<vab-query-form-top-panel :span="12">
|
<vab-query-form-top-panel :span="12">
|
||||||
<el-button icon="el-icon-plus" type="primary" @click="handleEdit">
|
<el-button icon="el-icon-plus" type="primary" @click="handleEdit">添加</el-button>
|
||||||
添加
|
|
||||||
</el-button>
|
|
||||||
</vab-query-form-top-panel>
|
</vab-query-form-top-panel>
|
||||||
</vab-query-form>
|
</vab-query-form>
|
||||||
<el-table
|
<el-table
|
||||||
@ -46,21 +44,9 @@
|
|||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column label="vue文件路径" prop="component" show-overflow-tooltip />
|
||||||
label="vue文件路径"
|
<el-table-column label="重定向" prop="redirect" show-overflow-tooltip />
|
||||||
prop="component"
|
<el-table-column label="标题" prop="meta.title" show-overflow-tooltip />
|
||||||
show-overflow-tooltip
|
|
||||||
/>
|
|
||||||
<el-table-column
|
|
||||||
label="重定向"
|
|
||||||
prop="redirect"
|
|
||||||
show-overflow-tooltip
|
|
||||||
/>
|
|
||||||
<el-table-column
|
|
||||||
label="标题"
|
|
||||||
prop="meta.title"
|
|
||||||
show-overflow-tooltip
|
|
||||||
/>
|
|
||||||
<el-table-column label="图标" show-overflow-tooltip>
|
<el-table-column label="图标" show-overflow-tooltip>
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<span v-if="row.meta">
|
<span v-if="row.meta">
|
||||||
|
@ -1,10 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog
|
<el-dialog :title="title" :visible.sync="dialogFormVisible" width="500px" @close="close">
|
||||||
:title="title"
|
|
||||||
:visible.sync="dialogFormVisible"
|
|
||||||
width="500px"
|
|
||||||
@close="close"
|
|
||||||
>
|
|
||||||
<el-form ref="form" label-width="80px" :model="form" :rules="rules">
|
<el-form ref="form" label-width="80px" :model="form" :rules="rules">
|
||||||
<el-form-item label="权限码" prop="permission">
|
<el-form-item label="权限码" prop="permission">
|
||||||
<el-input v-model="form.permission" autocomplete="off" />
|
<el-input v-model="form.permission" autocomplete="off" />
|
||||||
@ -28,9 +23,7 @@
|
|||||||
id: '',
|
id: '',
|
||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
permission: [
|
permission: [{ required: true, trigger: 'blur', message: '请输入权限码' }],
|
||||||
{ required: true, trigger: 'blur', message: '请输入权限码' },
|
|
||||||
],
|
|
||||||
},
|
},
|
||||||
title: '',
|
title: '',
|
||||||
dialogFormVisible: false,
|
dialogFormVisible: false,
|
||||||
|
@ -5,26 +5,16 @@
|
|||||||
</el-divider>
|
</el-divider>
|
||||||
<vab-query-form>
|
<vab-query-form>
|
||||||
<vab-query-form-left-panel :span="12">
|
<vab-query-form-left-panel :span="12">
|
||||||
<el-button icon="el-icon-plus" type="primary" @click="handleEdit">
|
<el-button icon="el-icon-plus" type="primary" @click="handleEdit">添加</el-button>
|
||||||
添加
|
<el-button icon="el-icon-delete" type="danger" @click="handleDelete">批量删除</el-button>
|
||||||
</el-button>
|
|
||||||
<el-button icon="el-icon-delete" type="danger" @click="handleDelete">
|
|
||||||
批量删除
|
|
||||||
</el-button>
|
|
||||||
</vab-query-form-left-panel>
|
</vab-query-form-left-panel>
|
||||||
<vab-query-form-right-panel :span="12">
|
<vab-query-form-right-panel :span="12">
|
||||||
<el-form :inline="true" :model="queryForm" @submit.native.prevent>
|
<el-form :inline="true" :model="queryForm" @submit.native.prevent>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-input
|
<el-input v-model.trim="queryForm.permission" clearable placeholder="请输入查询条件" />
|
||||||
v-model.trim="queryForm.permission"
|
|
||||||
clearable
|
|
||||||
placeholder="请输入查询条件"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button icon="el-icon-search" type="primary" @click="queryData">
|
<el-button icon="el-icon-search" type="primary" @click="queryData">查询</el-button>
|
||||||
查询
|
|
||||||
</el-button>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</vab-query-form-right-panel>
|
</vab-query-form-right-panel>
|
||||||
|
@ -1,20 +1,11 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog
|
<el-dialog :title="title" :visible.sync="dialogFormVisible" width="500px" @close="close">
|
||||||
:title="title"
|
|
||||||
:visible.sync="dialogFormVisible"
|
|
||||||
width="500px"
|
|
||||||
@close="close"
|
|
||||||
>
|
|
||||||
<el-form ref="form" label-width="80px" :model="form" :rules="rules">
|
<el-form ref="form" label-width="80px" :model="form" :rules="rules">
|
||||||
<el-form-item label="用户名" prop="username">
|
<el-form-item label="用户名" prop="username">
|
||||||
<el-input v-model.trim="form.username" autocomplete="off" />
|
<el-input v-model.trim="form.username" autocomplete="off" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="密码" prop="password">
|
<el-form-item label="密码" prop="password">
|
||||||
<el-input
|
<el-input v-model.trim="form.password" autocomplete="off" type="password" />
|
||||||
v-model.trim="form.password"
|
|
||||||
autocomplete="off"
|
|
||||||
type="password"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="邮箱" prop="email">
|
<el-form-item label="邮箱" prop="email">
|
||||||
<el-input v-model.trim="form.email" autocomplete="off" />
|
<el-input v-model.trim="form.email" autocomplete="off" />
|
||||||
@ -47,16 +38,10 @@
|
|||||||
permissions: [],
|
permissions: [],
|
||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
username: [
|
username: [{ required: true, trigger: 'blur', message: '请输入用户名' }],
|
||||||
{ required: true, trigger: 'blur', message: '请输入用户名' },
|
password: [{ required: true, trigger: 'blur', message: '请输入密码' }],
|
||||||
],
|
|
||||||
password: [
|
|
||||||
{ required: true, trigger: 'blur', message: '请输入密码' },
|
|
||||||
],
|
|
||||||
email: [{ required: true, trigger: 'blur', message: '请输入邮箱' }],
|
email: [{ required: true, trigger: 'blur', message: '请输入邮箱' }],
|
||||||
permissions: [
|
permissions: [{ required: true, trigger: 'blur', message: '请选择权限' }],
|
||||||
{ required: true, trigger: 'blur', message: '请选择权限' },
|
|
||||||
],
|
|
||||||
},
|
},
|
||||||
title: '',
|
title: '',
|
||||||
dialogFormVisible: false,
|
dialogFormVisible: false,
|
||||||
|
@ -2,26 +2,16 @@
|
|||||||
<div class="userManagement-container">
|
<div class="userManagement-container">
|
||||||
<vab-query-form>
|
<vab-query-form>
|
||||||
<vab-query-form-left-panel :span="12">
|
<vab-query-form-left-panel :span="12">
|
||||||
<el-button icon="el-icon-plus" type="primary" @click="handleEdit">
|
<el-button icon="el-icon-plus" type="primary" @click="handleEdit">添加</el-button>
|
||||||
添加
|
<el-button icon="el-icon-delete" type="danger" @click="handleDelete">批量删除</el-button>
|
||||||
</el-button>
|
|
||||||
<el-button icon="el-icon-delete" type="danger" @click="handleDelete">
|
|
||||||
批量删除
|
|
||||||
</el-button>
|
|
||||||
</vab-query-form-left-panel>
|
</vab-query-form-left-panel>
|
||||||
<vab-query-form-right-panel :span="12">
|
<vab-query-form-right-panel :span="12">
|
||||||
<el-form :inline="true" :model="queryForm" @submit.native.prevent>
|
<el-form :inline="true" :model="queryForm" @submit.native.prevent>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-input
|
<el-input v-model.trim="queryForm.username" clearable placeholder="请输入用户名" />
|
||||||
v-model.trim="queryForm.username"
|
|
||||||
clearable
|
|
||||||
placeholder="请输入用户名"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button icon="el-icon-search" type="primary" @click="queryData">
|
<el-button icon="el-icon-search" type="primary" @click="queryData">查询</el-button>
|
||||||
查询
|
|
||||||
</el-button>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</vab-query-form-right-panel>
|
</vab-query-form-right-panel>
|
||||||
|
@ -44,11 +44,7 @@
|
|||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item prop="phoneCode" style="position: relative">
|
<el-form-item prop="phoneCode" style="position: relative">
|
||||||
<el-input
|
<el-input v-model.trim="form.phoneCode" placeholder="手机验证码" type="text">
|
||||||
v-model.trim="form.phoneCode"
|
|
||||||
placeholder="手机验证码"
|
|
||||||
type="text"
|
|
||||||
>
|
|
||||||
<vab-icon slot="prefix" :icon="['fas', 'envelope-open']" />
|
<vab-icon slot="prefix" :icon="['fas', 'envelope-open']" />
|
||||||
</el-input>
|
</el-input>
|
||||||
<el-button
|
<el-button
|
||||||
@ -71,11 +67,7 @@
|
|||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button
|
<el-button class="register-btn" type="primary" @click.native.prevent="handleReister">
|
||||||
class="register-btn"
|
|
||||||
type="primary"
|
|
||||||
@click.native.prevent="handleReister"
|
|
||||||
>
|
|
||||||
注册
|
注册
|
||||||
</el-button>
|
</el-button>
|
||||||
<router-link to="/login">
|
<router-link to="/login">
|
||||||
@ -144,9 +136,7 @@
|
|||||||
{ required: true, trigger: 'blur', message: '请输入密码' },
|
{ required: true, trigger: 'blur', message: '请输入密码' },
|
||||||
{ validator: validatePassword, trigger: 'blur' },
|
{ validator: validatePassword, trigger: 'blur' },
|
||||||
],
|
],
|
||||||
phoneCode: [
|
phoneCode: [{ required: true, trigger: 'blur', message: '请输入手机验证码' }],
|
||||||
{ required: true, trigger: 'blur', message: '请输入手机验证码' },
|
|
||||||
],
|
|
||||||
},
|
},
|
||||||
loading: false,
|
loading: false,
|
||||||
passwordType: 'password',
|
passwordType: 'password',
|
||||||
@ -201,8 +191,7 @@
|
|||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.register-container {
|
.register-container {
|
||||||
height: 100vh;
|
height: 100vh;
|
||||||
background: url('~@/assets/login_images/background.jpg') center center fixed
|
background: url('~@/assets/login_images/background.jpg') center center fixed no-repeat;
|
||||||
no-repeat;
|
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
|
|
||||||
.title {
|
.title {
|
||||||
|
@ -5,11 +5,7 @@
|
|||||||
<el-button type="primary" @click="dialogVisible = !dialogVisible">
|
<el-button type="primary" @click="dialogVisible = !dialogVisible">
|
||||||
element全部文档点这里
|
element全部文档点这里
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-dialog
|
<el-dialog :fullscreen="true" title="element文档" :visible.sync="dialogVisible">
|
||||||
:fullscreen="true"
|
|
||||||
title="element文档"
|
|
||||||
:visible.sync="dialogVisible"
|
|
||||||
>
|
|
||||||
<iframe
|
<iframe
|
||||||
class="element-iframe"
|
class="element-iframe"
|
||||||
frameborder="0"
|
frameborder="0"
|
||||||
@ -18,12 +14,7 @@
|
|||||||
</el-dialog>
|
</el-dialog>
|
||||||
<el-divider content-position="left">
|
<el-divider content-position="left">
|
||||||
Tag 标签
|
Tag 标签
|
||||||
<a
|
<a href="https://element.eleme.cn/#/zh-CN/component/tag" target="_blank">文档</a>
|
||||||
href="https://element.eleme.cn/#/zh-CN/component/tag"
|
|
||||||
target="_blank"
|
|
||||||
>
|
|
||||||
文档
|
|
||||||
</a>
|
|
||||||
</el-divider>
|
</el-divider>
|
||||||
<el-tag>标签一</el-tag>
|
<el-tag>标签一</el-tag>
|
||||||
<el-tag type="success">标签二</el-tag>
|
<el-tag type="success">标签二</el-tag>
|
||||||
@ -38,36 +29,16 @@
|
|||||||
|
|
||||||
<el-divider content-position="left">
|
<el-divider content-position="left">
|
||||||
进度条
|
进度条
|
||||||
<a
|
<a href="https://element.eleme.cn/#/zh-CN/component/progress" target="_blank">文档</a>
|
||||||
href="https://element.eleme.cn/#/zh-CN/component/progress"
|
|
||||||
target="_blank"
|
|
||||||
>
|
|
||||||
文档
|
|
||||||
</a>
|
|
||||||
</el-divider>
|
</el-divider>
|
||||||
<el-progress :percentage="50" />
|
<el-progress :percentage="50" />
|
||||||
<el-progress :percentage="100" status="success" />
|
<el-progress :percentage="100" status="success" />
|
||||||
<el-progress :percentage="100" status="warning" />
|
<el-progress :percentage="100" status="warning" />
|
||||||
<el-progress :percentage="50" status="exception" />
|
<el-progress :percentage="50" status="exception" />
|
||||||
<el-progress :percentage="70" :stroke-width="26" :text-inside="true" />
|
<el-progress :percentage="70" :stroke-width="26" :text-inside="true" />
|
||||||
<el-progress
|
<el-progress :percentage="100" status="success" :stroke-width="24" :text-inside="true" />
|
||||||
:percentage="100"
|
<el-progress :percentage="80" status="warning" :stroke-width="22" :text-inside="true" />
|
||||||
status="success"
|
<el-progress :percentage="50" status="exception" :stroke-width="20" :text-inside="true" />
|
||||||
:stroke-width="24"
|
|
||||||
:text-inside="true"
|
|
||||||
/>
|
|
||||||
<el-progress
|
|
||||||
:percentage="80"
|
|
||||||
status="warning"
|
|
||||||
:stroke-width="22"
|
|
||||||
:text-inside="true"
|
|
||||||
/>
|
|
||||||
<el-progress
|
|
||||||
:percentage="50"
|
|
||||||
status="exception"
|
|
||||||
:stroke-width="20"
|
|
||||||
:text-inside="true"
|
|
||||||
/>
|
|
||||||
<el-progress :percentage="0" type="circle" />
|
<el-progress :percentage="0" type="circle" />
|
||||||
<el-progress :percentage="25" type="circle" />
|
<el-progress :percentage="25" type="circle" />
|
||||||
<el-progress :percentage="100" status="success" type="circle" />
|
<el-progress :percentage="100" status="success" type="circle" />
|
||||||
@ -76,12 +47,7 @@
|
|||||||
|
|
||||||
<el-divider content-position="left">
|
<el-divider content-position="left">
|
||||||
按钮
|
按钮
|
||||||
<a
|
<a href="https://element.eleme.cn/#/zh-CN/component/button" target="_blank">文档</a>
|
||||||
href="https://element.eleme.cn/#/zh-CN/component/button"
|
|
||||||
target="_blank"
|
|
||||||
>
|
|
||||||
文档
|
|
||||||
</a>
|
|
||||||
</el-divider>
|
</el-divider>
|
||||||
<el-button>默认按钮</el-button>
|
<el-button>默认按钮</el-button>
|
||||||
<el-button type="primary">主要按钮</el-button>
|
<el-button type="primary">主要按钮</el-button>
|
||||||
@ -125,16 +91,9 @@
|
|||||||
|
|
||||||
<el-divider content-position="left">
|
<el-divider content-position="left">
|
||||||
文字链接
|
文字链接
|
||||||
<a
|
<a href="https://element.eleme.cn/#/zh-CN/component/link" target="_blank">文档</a>
|
||||||
href="https://element.eleme.cn/#/zh-CN/component/link"
|
|
||||||
target="_blank"
|
|
||||||
>
|
|
||||||
文档
|
|
||||||
</a>
|
|
||||||
</el-divider>
|
</el-divider>
|
||||||
<el-link href="https://element.eleme.io" target="_blank">
|
<el-link href="https://element.eleme.io" target="_blank">默认链接</el-link>
|
||||||
默认链接
|
|
||||||
</el-link>
|
|
||||||
<el-link type="primary">主要链接</el-link>
|
<el-link type="primary">主要链接</el-link>
|
||||||
<el-link type="success">成功链接</el-link>
|
<el-link type="success">成功链接</el-link>
|
||||||
<el-link type="warning">警告链接</el-link>
|
<el-link type="warning">警告链接</el-link>
|
||||||
@ -150,32 +109,17 @@
|
|||||||
<el-link>有下划线</el-link>
|
<el-link>有下划线</el-link>
|
||||||
<el-divider content-position="left">
|
<el-divider content-position="left">
|
||||||
头像
|
头像
|
||||||
<a
|
<a href="https://element.eleme.cn/#/zh-CN/component/avatar" target="_blank">文档</a>
|
||||||
href="https://element.eleme.cn/#/zh-CN/component/avatar"
|
|
||||||
target="_blank"
|
|
||||||
>
|
|
||||||
文档
|
|
||||||
</a>
|
|
||||||
</el-divider>
|
</el-divider>
|
||||||
<el-avatar icon="el-icon-user-solid" />
|
<el-avatar icon="el-icon-user-solid" />
|
||||||
<el-divider content-position="left">
|
<el-divider content-position="left">
|
||||||
页头
|
页头
|
||||||
<a
|
<a href="https://element.eleme.cn/#/zh-CN/component/page-header" target="_blank">文档</a>
|
||||||
href="https://element.eleme.cn/#/zh-CN/component/page-header"
|
|
||||||
target="_blank"
|
|
||||||
>
|
|
||||||
文档
|
|
||||||
</a>
|
|
||||||
</el-divider>
|
</el-divider>
|
||||||
<el-page-header content="详情页面" />
|
<el-page-header content="详情页面" />
|
||||||
<el-divider content-position="left">
|
<el-divider content-position="left">
|
||||||
面包屑
|
面包屑
|
||||||
<a
|
<a href="https://element.eleme.cn/#/zh-CN/component/breadcrumb" target="_blank">文档</a>
|
||||||
href="https://element.eleme.cn/#/zh-CN/component/breadcrumb"
|
|
||||||
target="_blank"
|
|
||||||
>
|
|
||||||
文档
|
|
||||||
</a>
|
|
||||||
</el-divider>
|
</el-divider>
|
||||||
<el-breadcrumb separator="/">
|
<el-breadcrumb separator="/">
|
||||||
<el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
|
<el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
|
||||||
|
@ -1,11 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="errorLog-container">
|
<div class="errorLog-container">
|
||||||
<el-divider content-position="left">
|
<el-divider content-position="left">这里会在顶部navbar上模拟一个控制台错误日志</el-divider>
|
||||||
这里会在顶部navbar上模拟一个控制台错误日志
|
<el-button type="primary" @click="handleError">点击模拟一个chuzhixinjiayou的错误</el-button>
|
||||||
</el-divider>
|
|
||||||
<el-button type="primary" @click="handleError">
|
|
||||||
点击模拟一个chuzhixinjiayou的错误
|
|
||||||
</el-button>
|
|
||||||
<error-test v-if="show" />
|
<error-test v-if="show" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -39,9 +39,7 @@
|
|||||||
<el-input v-model="ruleForm.desc" type="textarea" />
|
<el-input v-model="ruleForm.desc" type="textarea" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="submitForm('ruleForm')">
|
<el-button type="primary" @click="submitForm('ruleForm')">立即创建</el-button>
|
||||||
立即创建
|
|
||||||
</el-button>
|
|
||||||
<el-button @click="resetForm('ruleForm')">重置</el-button>
|
<el-button @click="resetForm('ruleForm')">重置</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
@ -73,9 +71,7 @@
|
|||||||
trigger: 'blur',
|
trigger: 'blur',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
region: [
|
region: [{ required: true, message: '请选择活动区域', trigger: 'change' }],
|
||||||
{ required: true, message: '请选择活动区域', trigger: 'change' },
|
|
||||||
],
|
|
||||||
type: [
|
type: [
|
||||||
{
|
{
|
||||||
type: 'array',
|
type: 'array',
|
||||||
@ -84,12 +80,8 @@
|
|||||||
trigger: 'change',
|
trigger: 'change',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
resource: [
|
resource: [{ required: true, message: '请选择活动资源', trigger: 'change' }],
|
||||||
{ required: true, message: '请选择活动资源', trigger: 'change' },
|
desc: [{ required: true, message: '请填写活动形式', trigger: 'blur' }],
|
||||||
],
|
|
||||||
desc: [
|
|
||||||
{ required: true, message: '请填写活动形式', trigger: 'blur' },
|
|
||||||
],
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -12,9 +12,7 @@
|
|||||||
<el-input v-model="queryForm.title" />
|
<el-input v-model="queryForm.title" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label-width="0">
|
<el-form-item label-width="0">
|
||||||
<el-button native-type="submit" type="primary" @click="queryData">
|
<el-button native-type="submit" type="primary" @click="queryData">搜索</el-button>
|
||||||
搜索
|
|
||||||
</el-button>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<!-- <el-form-item label-width="0">
|
<!-- <el-form-item label-width="0">
|
||||||
|
@ -10,9 +10,7 @@
|
|||||||
<el-input v-model="queryForm.title" />
|
<el-input v-model="queryForm.title" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label-width="0">
|
<el-form-item label-width="0">
|
||||||
<el-button native-type="submit" type="primary" @click="queryData">
|
<el-button native-type="submit" type="primary" @click="queryData">搜索</el-button>
|
||||||
搜索
|
|
||||||
</el-button>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
@ -15,18 +15,10 @@
|
|||||||
<br />
|
<br />
|
||||||
<br />
|
<br />
|
||||||
<el-divider content-position="left">多彩loading</el-divider>
|
<el-divider content-position="left">多彩loading</el-divider>
|
||||||
<el-button type="primary" @click="handleColorfullLoading(1)">
|
<el-button type="primary" @click="handleColorfullLoading(1)">效果1</el-button>
|
||||||
效果1
|
<el-button type="primary" @click="handleColorfullLoading(2)">效果2</el-button>
|
||||||
</el-button>
|
<el-button type="primary" @click="handleColorfullLoading(3)">效果3</el-button>
|
||||||
<el-button type="primary" @click="handleColorfullLoading(2)">
|
<el-button type="primary" @click="handleColorfullLoading(4)">效果4</el-button>
|
||||||
效果2
|
|
||||||
</el-button>
|
|
||||||
<el-button type="primary" @click="handleColorfullLoading(3)">
|
|
||||||
效果3
|
|
||||||
</el-button>
|
|
||||||
<el-button type="primary" @click="handleColorfullLoading(4)">
|
|
||||||
效果4
|
|
||||||
</el-button>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -3,11 +3,7 @@
|
|||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-link
|
<el-link href="https://www.lodashjs.com/" target="_blank" type="primary">
|
||||||
href="https://www.lodashjs.com/"
|
|
||||||
target="_blank"
|
|
||||||
type="primary"
|
|
||||||
>
|
|
||||||
lodashjs官网
|
lodashjs官网
|
||||||
</el-link>
|
</el-link>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
@ -19,9 +19,7 @@
|
|||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
const map = this.$baseMap()
|
const map = this.$baseMap()
|
||||||
axios
|
axios
|
||||||
.get(
|
.get('https://fastly.jsdelivr.net/npm/mapv@2.0.12/examples/data/od-xierqi.txt')
|
||||||
'https://fastly.jsdelivr.net/npm/mapv@2.0.12/examples/data/od-xierqi.txt'
|
|
||||||
)
|
|
||||||
.then((rs) => {
|
.then((rs) => {
|
||||||
let data = []
|
let data = []
|
||||||
let timeData = []
|
let timeData = []
|
||||||
@ -37,9 +35,7 @@
|
|||||||
for (let j = 0; j < item.length; j += 2) {
|
for (let j = 0; j < item.length; j += 2) {
|
||||||
let x = (Number(item[j]) / 20037508.34) * 180
|
let x = (Number(item[j]) / 20037508.34) * 180
|
||||||
let y = (Number(item[j + 1]) / 20037508.34) * 180
|
let y = (Number(item[j + 1]) / 20037508.34) * 180
|
||||||
y =
|
y = (180 / Math.PI) * (2 * Math.atan(Math.exp((y * Math.PI) / 180)) - Math.PI / 2)
|
||||||
(180 / Math.PI) *
|
|
||||||
(2 * Math.atan(Math.exp((y * Math.PI) / 180)) - Math.PI / 2)
|
|
||||||
if (x == 0 || y == NaN) {
|
if (x == 0 || y == NaN) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@ -72,11 +68,7 @@
|
|||||||
draw: 'simple',
|
draw: 'simple',
|
||||||
}
|
}
|
||||||
|
|
||||||
let mapvLayer = new mapv.MaptalksLayer(
|
let mapvLayer = new mapv.MaptalksLayer('mapv1', dataSet, options).addTo(map)
|
||||||
'mapv1',
|
|
||||||
dataSet,
|
|
||||||
options
|
|
||||||
).addTo(map)
|
|
||||||
|
|
||||||
let dataSet2 = new mapv.DataSet(timeData)
|
let dataSet2 = new mapv.DataSet(timeData)
|
||||||
|
|
||||||
@ -95,11 +87,7 @@
|
|||||||
draw: 'simple',
|
draw: 'simple',
|
||||||
}
|
}
|
||||||
|
|
||||||
let mapvLayer2 = new mapv.MaptalksLayer(
|
let mapvLayer2 = new mapv.MaptalksLayer('mapv2', dataSet2, options2).addTo(map)
|
||||||
'mapv2',
|
|
||||||
dataSet2,
|
|
||||||
options2
|
|
||||||
).addTo(map)
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
@ -17,10 +17,7 @@
|
|||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
开源地址
|
开源地址
|
||||||
<a
|
<a href="https://github.com/chuzhixin/vue-admin-beautiful" target="_blank">
|
||||||
href="https://github.com/chuzhixin/vue-admin-beautiful"
|
|
||||||
target="_blank"
|
|
||||||
>
|
|
||||||
如果有幸帮到了你,麻烦给个star
|
如果有幸帮到了你,麻烦给个star
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -14,24 +14,16 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="handleChangePermission">
|
<el-button type="primary" @click="handleChangePermission">切换权限</el-button>
|
||||||
切换权限
|
|
||||||
</el-button>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="当前账号拥有的权限">
|
<el-form-item label="当前账号拥有的权限">
|
||||||
{{ JSON.stringify(permissions) }}
|
{{ JSON.stringify(permissions) }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<el-divider content-position="left">按钮级权限演示</el-divider>
|
<el-divider content-position="left">按钮级权限演示</el-divider>
|
||||||
<el-button v-permissions="['admin']" type="primary">
|
<el-button v-permissions="['admin']" type="primary">我是拥有["admin"]权限的按钮</el-button>
|
||||||
我是拥有["admin"]权限的按钮
|
<el-button v-permissions="['editor']" type="primary">我是拥有["editor"]权限的按钮</el-button>
|
||||||
</el-button>
|
<el-button v-permissions="['test']" type="primary">我是拥有["test"]权限的按钮</el-button>
|
||||||
<el-button v-permissions="['editor']" type="primary">
|
|
||||||
我是拥有["editor"]权限的按钮
|
|
||||||
</el-button>
|
|
||||||
<el-button v-permissions="['test']" type="primary">
|
|
||||||
我是拥有["test"]权限的按钮
|
|
||||||
</el-button>
|
|
||||||
<br />
|
<br />
|
||||||
<br />
|
<br />
|
||||||
<el-divider content-position="left">
|
<el-divider content-position="left">
|
||||||
@ -53,21 +45,9 @@
|
|||||||
>
|
>
|
||||||
<el-table-column label="name" prop="name" show-overflow-tooltip />
|
<el-table-column label="name" prop="name" show-overflow-tooltip />
|
||||||
<el-table-column label="path" prop="path" show-overflow-tooltip />
|
<el-table-column label="path" prop="path" show-overflow-tooltip />
|
||||||
<el-table-column
|
<el-table-column label="component" prop="component" show-overflow-tooltip />
|
||||||
label="component"
|
<el-table-column label="redirect" prop="redirect" show-overflow-tooltip />
|
||||||
prop="component"
|
<el-table-column label="标题" prop="meta.title" show-overflow-tooltip />
|
||||||
show-overflow-tooltip
|
|
||||||
/>
|
|
||||||
<el-table-column
|
|
||||||
label="redirect"
|
|
||||||
prop="redirect"
|
|
||||||
show-overflow-tooltip
|
|
||||||
/>
|
|
||||||
<el-table-column
|
|
||||||
label="标题"
|
|
||||||
prop="meta.title"
|
|
||||||
show-overflow-tooltip
|
|
||||||
/>
|
|
||||||
<el-table-column label="图标" show-overflow-tooltip>
|
<el-table-column label="图标" show-overflow-tooltip>
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<span v-if="row.meta">
|
<span v-if="row.meta">
|
||||||
|
@ -16,11 +16,7 @@
|
|||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<div slot="header">
|
<div slot="header">
|
||||||
<span>profile</span>
|
<span>profile</span>
|
||||||
<el-button
|
<el-button style="float: right; padding: 3px 0" type="text" @click="handleProfile">
|
||||||
style="float: right; padding: 3px 0"
|
|
||||||
type="text"
|
|
||||||
@click="handleProfile"
|
|
||||||
>
|
|
||||||
重载
|
重载
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,10 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog
|
<el-dialog :title="title" :visible.sync="dialogFormVisible" width="500px" @close="close">
|
||||||
:title="title"
|
|
||||||
:visible.sync="dialogFormVisible"
|
|
||||||
width="500px"
|
|
||||||
@close="close"
|
|
||||||
>
|
|
||||||
<el-form ref="form" label-width="80px" :model="form" :rules="rules">
|
<el-form ref="form" label-width="80px" :model="form" :rules="rules">
|
||||||
<el-form-item label="标题" prop="title">
|
<el-form-item label="标题" prop="title">
|
||||||
<el-input v-model.trim="form.title" autocomplete="off" />
|
<el-input v-model.trim="form.title" autocomplete="off" />
|
||||||
|
@ -2,24 +2,15 @@
|
|||||||
<div class="table-container">
|
<div class="table-container">
|
||||||
<vab-query-form>
|
<vab-query-form>
|
||||||
<vab-query-form-left-panel>
|
<vab-query-form-left-panel>
|
||||||
<el-button icon="el-icon-plus" type="primary" @click="handleAdd">
|
<el-button icon="el-icon-plus" type="primary" @click="handleAdd">添加</el-button>
|
||||||
添加
|
<el-button icon="el-icon-delete" type="danger" @click="handleDelete">删除</el-button>
|
||||||
</el-button>
|
|
||||||
<el-button icon="el-icon-delete" type="danger" @click="handleDelete">
|
|
||||||
删除
|
|
||||||
</el-button>
|
|
||||||
<el-button type="primary" @click="testMessage">baseMessage</el-button>
|
<el-button type="primary" @click="testMessage">baseMessage</el-button>
|
||||||
<el-button type="primary" @click="testALert">baseAlert</el-button>
|
<el-button type="primary" @click="testALert">baseAlert</el-button>
|
||||||
<el-button type="primary" @click="testConfirm">baseConfirm</el-button>
|
<el-button type="primary" @click="testConfirm">baseConfirm</el-button>
|
||||||
<el-button type="primary" @click="testNotify">baseNotify</el-button>
|
<el-button type="primary" @click="testNotify">baseNotify</el-button>
|
||||||
</vab-query-form-left-panel>
|
</vab-query-form-left-panel>
|
||||||
<vab-query-form-right-panel>
|
<vab-query-form-right-panel>
|
||||||
<el-form
|
<el-form ref="form" :inline="true" :model="queryForm" @submit.native.prevent>
|
||||||
ref="form"
|
|
||||||
:inline="true"
|
|
||||||
:model="queryForm"
|
|
||||||
@submit.native.prevent
|
|
||||||
>
|
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-input v-model="queryForm.title" placeholder="标题" />
|
<el-input v-model="queryForm.title" placeholder="标题" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -56,39 +47,20 @@
|
|||||||
<el-table-column label="作者" prop="author" show-overflow-tooltip />
|
<el-table-column label="作者" prop="author" show-overflow-tooltip />
|
||||||
<el-table-column label="头像" show-overflow-tooltip>
|
<el-table-column label="头像" show-overflow-tooltip>
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-image
|
<el-image v-if="imgShow" :preview-src-list="imageList" :src="row.img" />
|
||||||
v-if="imgShow"
|
|
||||||
:preview-src-list="imageList"
|
|
||||||
:src="row.img"
|
|
||||||
/>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column label="点击量" prop="pageViews" show-overflow-tooltip sortable />
|
||||||
label="点击量"
|
|
||||||
prop="pageViews"
|
|
||||||
show-overflow-tooltip
|
|
||||||
sortable
|
|
||||||
/>
|
|
||||||
<el-table-column label="状态" show-overflow-tooltip>
|
<el-table-column label="状态" show-overflow-tooltip>
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-tooltip
|
<el-tooltip class="item" :content="row.status" effect="dark" placement="top-start">
|
||||||
class="item"
|
|
||||||
:content="row.status"
|
|
||||||
effect="dark"
|
|
||||||
placement="top-start"
|
|
||||||
>
|
|
||||||
<el-tag :type="row.status | statusFilter">
|
<el-tag :type="row.status | statusFilter">
|
||||||
{{ row.status }}
|
{{ row.status }}
|
||||||
</el-tag>
|
</el-tag>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column label="时间" prop="datetime" show-overflow-tooltip width="200" />
|
||||||
label="时间"
|
|
||||||
prop="datetime"
|
|
||||||
show-overflow-tooltip
|
|
||||||
width="200"
|
|
||||||
/>
|
|
||||||
<el-table-column label="操作" show-overflow-tooltip width="180px">
|
<el-table-column label="操作" show-overflow-tooltip width="180px">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-button type="text" @click="handleEdit(row)">编辑</el-button>
|
<el-button type="text" @click="handleEdit(row)">编辑</el-button>
|
||||||
|
@ -35,11 +35,7 @@
|
|||||||
>
|
>
|
||||||
<i class="el-icon-plus"></i>
|
<i class="el-icon-plus"></i>
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a class="vab-tree-btn" title="编辑" @click="() => edit(node, data, 1)">
|
||||||
class="vab-tree-btn"
|
|
||||||
title="编辑"
|
|
||||||
@click="() => edit(node, data, 1)"
|
|
||||||
>
|
|
||||||
<i class="el-icon-edit"></i>
|
<i class="el-icon-edit"></i>
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
@ -81,21 +77,13 @@
|
|||||||
{{ node.label }}
|
{{ node.label }}
|
||||||
</span>
|
</span>
|
||||||
<span class="vab-tree-options">
|
<span class="vab-tree-options">
|
||||||
<a
|
<a v-if="node.data.rank !== 4" class="vab-tree-btn" title="添加">
|
||||||
v-if="node.data.rank !== 4"
|
|
||||||
class="vab-tree-btn"
|
|
||||||
title="添加"
|
|
||||||
>
|
|
||||||
<i class="el-icon-plus"></i>
|
<i class="el-icon-plus"></i>
|
||||||
</a>
|
</a>
|
||||||
<a class="vab-tree-btn" title="编辑">
|
<a class="vab-tree-btn" title="编辑">
|
||||||
<i class="el-icon-edit"></i>
|
<i class="el-icon-edit"></i>
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a v-if="node.data.rank !== 1" class="vab-tree-btn" title="刪除">
|
||||||
v-if="node.data.rank !== 1"
|
|
||||||
class="vab-tree-btn"
|
|
||||||
title="刪除"
|
|
||||||
>
|
|
||||||
<i class="el-icon-delete"></i>
|
<i class="el-icon-delete"></i>
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
@ -125,11 +113,7 @@
|
|||||||
<a class="vab-tree-btn" title="编辑">
|
<a class="vab-tree-btn" title="编辑">
|
||||||
<i class="el-icon-edit"></i>
|
<i class="el-icon-edit"></i>
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a v-if="node.data.rank !== 1" class="vab-tree-btn" title="刪除">
|
||||||
v-if="node.data.rank !== 1"
|
|
||||||
class="vab-tree-btn"
|
|
||||||
title="刪除"
|
|
||||||
>
|
|
||||||
<i class="el-icon-delete"></i>
|
<i class="el-icon-delete"></i>
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
@ -401,16 +385,13 @@
|
|||||||
const { data } = await getTreeList()
|
const { data } = await getTreeList()
|
||||||
this.selectTreeData = data
|
this.selectTreeData = data
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.selectTreeDefaultSelectedKeys =
|
this.selectTreeDefaultSelectedKeys = this.singleSelectTreeKey.split(',') // 设置默认展开
|
||||||
this.singleSelectTreeKey.split(',') // 设置默认展开
|
|
||||||
if (treeType == 'single') {
|
if (treeType == 'single') {
|
||||||
//单选树
|
//单选树
|
||||||
this.$refs.singleSelectTree.setCurrentKey(this.singleSelectTreeKey) // 设置默认选中
|
this.$refs.singleSelectTree.setCurrentKey(this.singleSelectTreeKey) // 设置默认选中
|
||||||
} else {
|
} else {
|
||||||
// 多选树
|
// 多选树
|
||||||
this.$refs.multipleSelectTree.setCheckedKeys(
|
this.$refs.multipleSelectTree.setCheckedKeys(this.selectTreeDefaultSelectedKeys)
|
||||||
this.selectTreeDefaultSelectedKeys
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@ -430,9 +411,7 @@
|
|||||||
},
|
},
|
||||||
/* 清空选中样式 */
|
/* 清空选中样式 */
|
||||||
clearSelected() {
|
clearSelected() {
|
||||||
const allNode = document.querySelectorAll(
|
const allNode = document.querySelectorAll('#singleSelectTree .el-tree-node')
|
||||||
'#singleSelectTree .el-tree-node'
|
|
||||||
)
|
|
||||||
allNode.forEach((element) => element.classList.remove('is-current'))
|
allNode.forEach((element) => element.classList.remove('is-current'))
|
||||||
},
|
},
|
||||||
// select多选时移除某项操作
|
// select多选时移除某项操作
|
||||||
|
@ -1,16 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="upload-container">
|
<div class="upload-container">
|
||||||
<el-divider content-position="left">演示环境可能无法模拟上传</el-divider>
|
<el-divider content-position="left">演示环境可能无法模拟上传</el-divider>
|
||||||
<vab-upload
|
<vab-upload ref="vabUpload" :limit="50" name="file" :size="2" url="/upload" />
|
||||||
ref="vabUpload"
|
<el-button type="primary" @click="handleShow({ key: 'value' })">模拟上传</el-button>
|
||||||
:limit="50"
|
|
||||||
name="file"
|
|
||||||
:size="2"
|
|
||||||
url="/upload"
|
|
||||||
/>
|
|
||||||
<el-button type="primary" @click="handleShow({ key: 'value' })">
|
|
||||||
模拟上传
|
|
||||||
</el-button>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -2,9 +2,7 @@
|
|||||||
<div class="webSocket-container">
|
<div class="webSocket-container">
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :lg="8" :md="12" :sm="24" :xl="8" :xs="24">
|
<el-col :lg="8" :md="12" :sm="24" :xl="8" :xs="24">
|
||||||
<el-alert :closable="false" type="success">
|
<el-alert :closable="false" type="success">webSocket连接{{ status }}!</el-alert>
|
||||||
webSocket连接{{ status }}!
|
|
||||||
</el-alert>
|
|
||||||
<br />
|
<br />
|
||||||
<el-form ref="form" label-width="100px" :model="form" :rules="rules">
|
<el-form ref="form" label-width="100px" :model="form" :rules="rules">
|
||||||
<el-form-item label="地址">
|
<el-form-item label="地址">
|
||||||
|
@ -184,9 +184,7 @@ module.exports = {
|
|||||||
additionalData(content, loaderContext) {
|
additionalData(content, loaderContext) {
|
||||||
const { resourcePath, rootContext } = loaderContext
|
const { resourcePath, rootContext } = loaderContext
|
||||||
const relativePath = path.relative(rootContext, resourcePath)
|
const relativePath = path.relative(rootContext, resourcePath)
|
||||||
if (
|
if (relativePath.replace(/\\/g, '/') !== 'src/styles/variables.scss') {
|
||||||
relativePath.replace(/\\/g, '/') !== 'src/styles/variables.scss'
|
|
||||||
) {
|
|
||||||
return `@import "~@/styles/variables.scss";${content}`
|
return `@import "~@/styles/variables.scss";${content}`
|
||||||
}
|
}
|
||||||
return content
|
return content
|
||||||
|
Loading…
x
Reference in New Issue
Block a user