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