⬆ chore: version

This commit is contained in:
zhideyiman 2023-08-07 17:43:54 +08:00
parent b3f1494b7b
commit 3bdde369d7
55 changed files with 158 additions and 631 deletions

View File

@ -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,
}, },

View File

@ -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",

View File

@ -4,7 +4,7 @@
*/ */
module.exports = { module.exports = {
printWidth: 80, printWidth: 100,
tabWidth: 2, tabWidth: 2,
useTabs: false, useTabs: false,
semi: false, semi: false,

View File

@ -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() {

View File

@ -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;
} }
} }

View File

@ -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;
} }
} }

View File

@ -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 {

View File

@ -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)
} }

View File

@ -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-8application/x-www-form-urlencoded;charset=UTF-8 //application/json;charset=UTF-8application/x-www-form-urlencoded;charset=UTF-8
contentType: 'application/json;charset=UTF-8', contentType: 'application/json;charset=UTF-8',
// //

View File

@ -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 {

View File

@ -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 = ''

View File

@ -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' },
}, },
], ],

View File

@ -28,10 +28,7 @@ const mutations = {
const actions = { const actions = {
async setRoutes({ commit }, permissions) { async setRoutes({ commit }, permissions) {
//permissionsadmin //permissionsadmin
const finallyAsyncRoutes = await filterAsyncRoutes( const finallyAsyncRoutes = await filterAsyncRoutes([...asyncRoutes], permissions)
[...asyncRoutes],
permissions
)
commit('setRoutes', finallyAsyncRoutes) commit('setRoutes', finallyAsyncRoutes)
return finallyAsyncRoutes return finallyAsyncRoutes
}, },

View File

@ -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,

View File

@ -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 }) {

View File

@ -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
} }

View File

@ -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
}) })

View File

@ -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) => {

View File

@ -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

View File

@ -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)
)
}) })
} }

View File

@ -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: '&copy; <a target="_blank" href="http://map.baidu.com">Baidu</a>',
'&copy; <a target="_blank" href="http://map.baidu.com">Baidu</a>',
}), }),
}) })
} }

View File

@ -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&nbsp;{{ btn }}</a>
{{ jumpTime }}s&nbsp;{{ btn }}
</a>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>

View File

@ -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&nbsp;{{ btn }}</a>
{{ jumpTime }}s&nbsp;{{ btn }}
</a>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>

View File

@ -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>

View File

@ -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]
}, },

View File

@ -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 {

View File

@ -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">

View File

@ -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: '请输入合法金额数字' },

View File

@ -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,
} }

View File

@ -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,
} }

View File

@ -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>

View File

@ -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" />

View File

@ -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">

View File

@ -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,

View File

@ -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>

View File

@ -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,

View File

@ -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>

View File

@ -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 {

View File

@ -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>

View File

@ -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>

View File

@ -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' },
],
}, },
} }
}, },

View File

@ -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">

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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)
}) })
}) })
}, },

View File

@ -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>

View File

@ -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">

View File

@ -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>

View File

@ -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" />

View File

@ -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>

View File

@ -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

View File

@ -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>

View File

@ -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="地址">

View File

@ -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