diff --git a/.browserslistrc b/.browserslistrc
deleted file mode 100644
index 214388f..0000000
--- a/.browserslistrc
+++ /dev/null
@@ -1,3 +0,0 @@
-> 1%
-last 2 versions
-not dead
diff --git a/App.vue b/App.vue
new file mode 100644
index 0000000..37e98bf
--- /dev/null
+++ b/App.vue
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..82ee362
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2021 FerrymanZhan
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
index eb51657..752c1ac 100644
--- a/README.md
+++ b/README.md
@@ -1,46 +1,20 @@
-# 简介
vue-element-perfect 是一个后台前端解决方案, 基于Vue3.0+TS+Element-plus实现。它使用了最新的前端技术栈、动态路由,权限验证,并且有着丰富的组件。
-## 效果预览
-#### vue-admin-perfect —— [企业级、通用型中后台前端解决方案 预览地址](http://182.61.5.190:8889/)
-
-附上github地址 [vue-admin-perfect](https://github.com/zouzhibin/vue-admin-perfect)
-
-## 目录结构介绍
+## 切换分支 uniapp
+# 克隆项目
+```
+git clone https://github.com/zouzhibin/vue-admin-perfect.git
+切换分支 uniapp
```
-├─assets 放置一些静态文件
-├─components 放置组件
-├─layout 首页布局
-│ ├─components
-│ │ ├─Sidebar 侧边栏配置
-│ │ ├─TagsView 标签栏配置
-│ │ └─UHeader 头部内容配置
-│ └─hooks
-├─router 路由配置
-├─store 数据存储
-├─styles 样式文件
-├─utils 工具方法
-└─views 页面配置方法
-└─permission 路由拦截 权限配置
+# 安装依赖
+```
+yarn install
```
-## 技术栈
-vue3.0 + Typescript + vuex + vue-router + Element-Plus scss
-
-## 实现功能
-- 登录逻辑
-- 权限校验
-- 侧边栏导航显示
-- 打印
-- 地图
-- 头像裁剪
-- 无限滚动
-- 多标签显示
-- 退出
-- 其他各组件
-
-
-
+# 本地开发 启动项目
+```
+yarn serve
+```
diff --git a/components/vue-admin-perfect/src/assets/image/error/401.gif b/assets/images/401_images/401.gif
similarity index 100%
rename from components/vue-admin-perfect/src/assets/image/error/401.gif
rename to assets/images/401_images/401.gif
diff --git a/components/vue-admin-perfect/src/assets/image/error/404s.png b/assets/images/404_images/404.png
similarity index 100%
rename from components/vue-admin-perfect/src/assets/image/error/404s.png
rename to assets/images/404_images/404.png
diff --git a/assets/images/404_images/404_cloud.png b/assets/images/404_images/404_cloud.png
new file mode 100644
index 0000000..c6281d0
Binary files /dev/null and b/assets/images/404_images/404_cloud.png differ
diff --git a/assets/images/bg.jpg b/assets/images/bg.jpg
new file mode 100644
index 0000000..177c5e1
Binary files /dev/null and b/assets/images/bg.jpg differ
diff --git a/assets/images/error-page/error-401.svg b/assets/images/error-page/error-401.svg
new file mode 100644
index 0000000..19e2f9f
--- /dev/null
+++ b/assets/images/error-page/error-401.svg
@@ -0,0 +1 @@
+tasting
\ No newline at end of file
diff --git a/assets/images/error-page/error-404.svg b/assets/images/error-page/error-404.svg
new file mode 100644
index 0000000..77d97f7
--- /dev/null
+++ b/assets/images/error-page/error-404.svg
@@ -0,0 +1 @@
+drone_delivery
\ No newline at end of file
diff --git a/assets/images/error-page/error-500.svg b/assets/images/error-page/error-500.svg
new file mode 100644
index 0000000..ef72fd3
--- /dev/null
+++ b/assets/images/error-page/error-500.svg
@@ -0,0 +1 @@
+co-working
\ No newline at end of file
diff --git a/assets/images/login-background.jpg b/assets/images/login-background.jpg
new file mode 100644
index 0000000..3d59e3b
Binary files /dev/null and b/assets/images/login-background.jpg differ
diff --git a/assets/images/login-background1.jpg b/assets/images/login-background1.jpg
new file mode 100644
index 0000000..8a89eb8
Binary files /dev/null and b/assets/images/login-background1.jpg differ
diff --git a/assets/images/profile.jpg b/assets/images/profile.jpg
new file mode 100644
index 0000000..6409273
Binary files /dev/null and b/assets/images/profile.jpg differ
diff --git a/components/vue-admin-perfect/src/assets/logo.png b/assets/logo/logo.png
similarity index 100%
rename from components/vue-admin-perfect/src/assets/logo.png
rename to assets/logo/logo.png
diff --git a/assets/styles/btn.scss b/assets/styles/btn.scss
new file mode 100644
index 0000000..e6ba1a8
--- /dev/null
+++ b/assets/styles/btn.scss
@@ -0,0 +1,99 @@
+@import './variables.scss';
+
+@mixin colorBtn($color) {
+ background: $color;
+
+ &:hover {
+ color: $color;
+
+ &:before,
+ &:after {
+ background: $color;
+ }
+ }
+}
+
+.blue-btn {
+ @include colorBtn($blue)
+}
+
+.light-blue-btn {
+ @include colorBtn($light-blue)
+}
+
+.red-btn {
+ @include colorBtn($red)
+}
+
+.pink-btn {
+ @include colorBtn($pink)
+}
+
+.green-btn {
+ @include colorBtn($green)
+}
+
+.tiffany-btn {
+ @include colorBtn($tiffany)
+}
+
+.yellow-btn {
+ @include colorBtn($yellow)
+}
+
+.pan-btn {
+ font-size: 14px;
+ color: #fff;
+ padding: 14px 36px;
+ border-radius: 8px;
+ border: none;
+ outline: none;
+ transition: 600ms ease all;
+ position: relative;
+ display: inline-block;
+
+ &:hover {
+ background: #fff;
+
+ &:before,
+ &:after {
+ width: 100%;
+ transition: 600ms ease all;
+ }
+ }
+
+ &:before,
+ &:after {
+ content: '';
+ position: absolute;
+ top: 0;
+ right: 0;
+ height: 2px;
+ width: 0;
+ transition: 400ms ease all;
+ }
+
+ &::after {
+ right: inherit;
+ top: inherit;
+ left: 0;
+ bottom: 0;
+ }
+}
+
+.custom-button {
+ display: inline-block;
+ line-height: 1;
+ white-space: nowrap;
+ cursor: pointer;
+ background: #fff;
+ color: #fff;
+ -webkit-appearance: none;
+ text-align: center;
+ box-sizing: border-box;
+ outline: 0;
+ margin: 0;
+ padding: 10px 15px;
+ font-size: 14px;
+ border-radius: 4px;
+}
diff --git a/assets/styles/element-ui.scss b/assets/styles/element-ui.scss
new file mode 100644
index 0000000..955d3ca
--- /dev/null
+++ b/assets/styles/element-ui.scss
@@ -0,0 +1,84 @@
+// cover some element-ui styles
+
+.el-breadcrumb__inner,
+.el-breadcrumb__inner a {
+ font-weight: 400 !important;
+}
+
+.el-upload {
+ input[type="file"] {
+ display: none !important;
+ }
+}
+
+.el-upload__input {
+ display: none;
+}
+
+.cell {
+ .el-tag {
+ margin-right: 0px;
+ }
+}
+
+.small-padding {
+ .cell {
+ padding-left: 5px;
+ padding-right: 5px;
+ }
+}
+
+.fixed-width {
+ .el-button--mini {
+ padding: 7px 10px;
+ width: 60px;
+ }
+}
+
+.status-col {
+ .cell {
+ padding: 0 10px;
+ text-align: center;
+
+ .el-tag {
+ margin-right: 0px;
+ }
+ }
+}
+
+// to fixed https://github.com/ElemeFE/element/issues/2461
+.el-dialog {
+ transform: none;
+ left: 0;
+ position: relative;
+ margin: 0 auto;
+}
+
+// refine element ui upload
+.upload-container {
+ .el-upload {
+ width: 100%;
+
+ .el-upload-dragger {
+ width: 100%;
+ height: 200px;
+ }
+ }
+}
+
+// dropdown
+.el-dropdown-menu {
+ a {
+ display: block
+ }
+}
+
+// fix date-picker ui bug in filter-item
+.el-range-editor.el-input__inner {
+ display: inline-flex !important;
+}
+
+// to fix el-date-picker css style
+.el-range-separator {
+ box-sizing: content-box;
+}
diff --git a/assets/styles/element-variables.scss b/assets/styles/element-variables.scss
new file mode 100644
index 0000000..8b7a48e
--- /dev/null
+++ b/assets/styles/element-variables.scss
@@ -0,0 +1,31 @@
+/**
+* I think element-ui's default theme color is too light for long-term use.
+* So I modified the default color and you can modify it to your liking.
+**/
+
+/* theme color */
+$--color-primary: #1890ff;
+$--color-success: #13ce66;
+$--color-warning: #ffba00;
+$--color-danger: #ff4949;
+// $--color-info: #1E1E1E;
+
+$--button-font-weight: 400;
+
+// $--color-text-regular: #1f2d3d;
+
+$--border-color-light: #dfe4ed;
+$--border-color-lighter: #e6ebf5;
+
+$--table-border:1px solid#dfe6ec;
+
+/* icon font path, required */
+$--font-path: '~element-ui/lib/theme-chalk/fonts';
+
+@import "~element-ui/packages/theme-chalk/src/index";
+
+// the :export directive is the magic sauce for webpack
+// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass
+:export {
+ theme: $--color-primary;
+}
diff --git a/assets/styles/index.scss b/assets/styles/index.scss
new file mode 100644
index 0000000..96095ef
--- /dev/null
+++ b/assets/styles/index.scss
@@ -0,0 +1,191 @@
+@import './variables.scss';
+@import './mixin.scss';
+@import './transition.scss';
+@import './element-ui.scss';
+@import './sidebar.scss';
+@import './btn.scss';
+
+body {
+ height: 100%;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-font-smoothing: antialiased;
+ text-rendering: optimizeLegibility;
+ font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;
+}
+
+label {
+ font-weight: 700;
+}
+
+html {
+ height: 100%;
+ box-sizing: border-box;
+}
+
+#app {
+ height: 100%;
+}
+
+*,
+*:before,
+*:after {
+ box-sizing: inherit;
+}
+
+.no-padding {
+ padding: 0px !important;
+}
+
+.padding-content {
+ padding: 4px 0;
+}
+
+a:focus,
+a:active {
+ outline: none;
+}
+
+a,
+a:focus,
+a:hover {
+ cursor: pointer;
+ color: inherit;
+ text-decoration: none;
+}
+
+div:focus {
+ outline: none;
+}
+
+.fr {
+ float: right;
+}
+
+.fl {
+ float: left;
+}
+
+.pr-5 {
+ padding-right: 5px;
+}
+
+.pl-5 {
+ padding-left: 5px;
+}
+
+.block {
+ display: block;
+}
+
+.pointer {
+ cursor: pointer;
+}
+
+.inlineBlock {
+ display: block;
+}
+
+.clearfix {
+ &:after {
+ visibility: hidden;
+ display: block;
+ font-size: 0;
+ content: " ";
+ clear: both;
+ height: 0;
+ }
+}
+
+aside {
+ background: #eef1f6;
+ padding: 8px 24px;
+ margin-bottom: 20px;
+ border-radius: 2px;
+ display: block;
+ line-height: 32px;
+ font-size: 16px;
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
+ color: #2c3e50;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+
+ a {
+ color: #337ab7;
+ cursor: pointer;
+
+ &:hover {
+ color: rgb(32, 160, 255);
+ }
+ }
+}
+
+//main-container全局样式
+.app-container {
+ padding: 20px;
+}
+
+.components-container {
+ margin: 30px 50px;
+ position: relative;
+}
+
+.pagination-container {
+ margin-top: 30px;
+}
+
+.text-center {
+ text-align: center
+}
+
+.sub-navbar {
+ height: 50px;
+ line-height: 50px;
+ position: relative;
+ width: 100%;
+ text-align: right;
+ padding-right: 20px;
+ transition: 600ms ease position;
+ background: linear-gradient(90deg, rgba(32, 182, 249, 1) 0%, rgba(32, 182, 249, 1) 0%, rgba(33, 120, 241, 1) 100%, rgba(33, 120, 241, 1) 100%);
+
+ .subtitle {
+ font-size: 20px;
+ color: #fff;
+ }
+
+ &.draft {
+ background: #d0d0d0;
+ }
+
+ &.deleted {
+ background: #d0d0d0;
+ }
+}
+
+.link-type,
+.link-type:focus {
+ color: #337ab7;
+ cursor: pointer;
+
+ &:hover {
+ color: rgb(32, 160, 255);
+ }
+}
+
+.filter-container {
+ padding-bottom: 10px;
+
+ .filter-item {
+ display: inline-block;
+ vertical-align: middle;
+ margin-bottom: 10px;
+ }
+}
+
+//refine vue-multiselect plugin
+.multiselect {
+ line-height: 16px;
+}
+
+.multiselect--active {
+ z-index: 1000 !important;
+}
diff --git a/assets/styles/mixin.scss b/assets/styles/mixin.scss
new file mode 100644
index 0000000..06fa061
--- /dev/null
+++ b/assets/styles/mixin.scss
@@ -0,0 +1,66 @@
+@mixin clearfix {
+ &:after {
+ content: "";
+ display: table;
+ clear: both;
+ }
+}
+
+@mixin scrollBar {
+ &::-webkit-scrollbar-track-piece {
+ background: #d3dce6;
+ }
+
+ &::-webkit-scrollbar {
+ width: 6px;
+ }
+
+ &::-webkit-scrollbar-thumb {
+ background: #99a9bf;
+ border-radius: 20px;
+ }
+}
+
+@mixin relative {
+ position: relative;
+ width: 100%;
+ height: 100%;
+}
+
+@mixin pct($pct) {
+ width: #{$pct};
+ position: relative;
+ margin: 0 auto;
+}
+
+@mixin triangle($width, $height, $color, $direction) {
+ $width: $width/2;
+ $color-border-style: $height solid $color;
+ $transparent-border-style: $width solid transparent;
+ height: 0;
+ width: 0;
+
+ @if $direction==up {
+ border-bottom: $color-border-style;
+ border-left: $transparent-border-style;
+ border-right: $transparent-border-style;
+ }
+
+ @else if $direction==right {
+ border-left: $color-border-style;
+ border-top: $transparent-border-style;
+ border-bottom: $transparent-border-style;
+ }
+
+ @else if $direction==down {
+ border-top: $color-border-style;
+ border-left: $transparent-border-style;
+ border-right: $transparent-border-style;
+ }
+
+ @else if $direction==left {
+ border-right: $color-border-style;
+ border-top: $transparent-border-style;
+ border-bottom: $transparent-border-style;
+ }
+}
diff --git a/components/vue-admin-perfect/src/styles/sidebar.scss b/assets/styles/sidebar.scss
similarity index 85%
rename from components/vue-admin-perfect/src/styles/sidebar.scss
rename to assets/styles/sidebar.scss
index 5a2cdba..cc68185 100644
--- a/components/vue-admin-perfect/src/styles/sidebar.scss
+++ b/assets/styles/sidebar.scss
@@ -7,16 +7,6 @@
position: relative;
}
- .hideSliderLayout{
- margin-left: 0;
- .el-menu--horizontal{
- border-bottom: none;
- }
- }
- .transverseMenu{
- background-color: $menuBg;
- }
-
.sidebar-container {
transition: width 0.28s;
width: $sideBarWidth !important;
@@ -29,6 +19,7 @@
left: 0;
z-index: 1001;
overflow: hidden;
+
// reset element-ui css
.horizontal-collapse-transition {
transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out;
@@ -63,19 +54,20 @@
}
.svg-icon {
- margin-right: 16px;
- }
-
- .sub-el-icon {
- margin-right: 12px;
- margin-left: -2px;
+ // margin-right: 16px;
+ margin-right: 4px;
}
.el-menu {
border: none;
height: 100%;
width: 100% !important;
- background: none;
+ }
+
+ .el-menu-item, .el-submenu__title {
+ overflow: hidden !important;
+ text-overflow: ellipsis !important;
+ white-space: nowrap !important;
}
// menu hover
@@ -103,11 +95,11 @@
.hideSidebar {
.sidebar-container {
- width: 60px !important;
+ width: 54px !important;
}
.main-container {
- margin-left: 60px;
+ margin-left: 54px;
}
.submenu-title-noDropdown {
@@ -118,11 +110,7 @@
padding: 0 !important;
.svg-icon {
- margin-left: 20px;
- }
-
- .sub-el-icon {
- margin-left: 19px;
+ margin-left: 14px;
}
}
}
@@ -134,11 +122,7 @@
padding: 0 !important;
.svg-icon {
- margin-left: 20px;
- }
-
- .sub-el-icon {
- margin-left: 19px;
+ margin-left: 14px;
}
.el-submenu__icon-arrow {
@@ -147,7 +131,7 @@
}
}
- .el-menu--collapse {
+ /* .el-menu--collapse {
.el-submenu {
&>.el-submenu__title {
&>span {
@@ -159,7 +143,7 @@
}
}
}
- }
+ } */
}
.el-menu--collapse .el-menu .el-submenu {
@@ -201,10 +185,6 @@
.svg-icon {
margin-right: 16px;
}
- .sub-el-icon {
- margin-right: 12px;
- margin-left: -2px;
- }
}
.nest-menu .el-submenu>.el-submenu__title,
diff --git a/assets/styles/transition.scss b/assets/styles/transition.scss
new file mode 100644
index 0000000..4cb27cc
--- /dev/null
+++ b/assets/styles/transition.scss
@@ -0,0 +1,48 @@
+// global transition css
+
+/* fade */
+.fade-enter-active,
+.fade-leave-active {
+ transition: opacity 0.28s;
+}
+
+.fade-enter,
+.fade-leave-active {
+ opacity: 0;
+}
+
+/* fade-transform */
+.fade-transform-leave-active,
+.fade-transform-enter-active {
+ transition: all .5s;
+}
+
+.fade-transform-enter {
+ opacity: 0;
+ transform: translateX(-30px);
+}
+
+.fade-transform-leave-to {
+ opacity: 0;
+ transform: translateX(30px);
+}
+
+/* breadcrumb transition */
+.breadcrumb-enter-active,
+.breadcrumb-leave-active {
+ transition: all .5s;
+}
+
+.breadcrumb-enter,
+.breadcrumb-leave-active {
+ opacity: 0;
+ transform: translateX(20px);
+}
+
+.breadcrumb-move {
+ transition: all .5s;
+}
+
+.breadcrumb-leave-active {
+ position: absolute;
+}
diff --git a/assets/styles/uniele.scss b/assets/styles/uniele.scss
new file mode 100644
index 0000000..6650517
--- /dev/null
+++ b/assets/styles/uniele.scss
@@ -0,0 +1,239 @@
+ /**
+ * 通用css样式布局处理
+ */
+
+ /** 基础通用 **/
+.pt5 {
+ padding-top: 5px;
+}
+.pr5 {
+ padding-right: 5px;
+}
+.pb5 {
+ padding-bottom: 5px;
+}
+.mt5 {
+ margin-top: 5px;
+}
+.mr5 {
+ margin-right: 5px;
+}
+.mb5 {
+ margin-bottom: 5px;
+}
+.mb8 {
+ margin-bottom: 8px;
+}
+.ml5 {
+ margin-left: 5px;
+}
+.mt10 {
+ margin-top: 10px;
+}
+.mr10 {
+ margin-right: 10px;
+}
+.mb10 {
+ margin-bottom: 10px;
+}
+.ml0 {
+ margin-left: 10px;
+}
+.mt20 {
+ margin-top: 20px;
+}
+.mr20 {
+ margin-right: 20px;
+}
+.mb20 {
+ margin-bottom: 20px;
+}
+.m20 {
+ margin-left: 20px;
+}
+
+.el-dialog:not(.is-fullscreen){
+ margin-top: 6vh !important;
+}
+
+.el-table {
+ .el-table__header-wrapper, .el-table__fixed-header-wrapper {
+ th {
+ word-break: break-word;
+ background-color: #f8f8f9;
+ color: #515a6e;
+ height: 40px;
+ font-size: 13px;
+ }
+ }
+ .el-table__body-wrapper {
+ .el-button [class*="el-icon-"] + span {
+ margin-left: 1px;
+ }
+ }
+}
+
+/** 表单布局 **/
+.form-header {
+ font-size:15px;
+ color:#6379bb;
+ border-bottom:1px solid #ddd;
+ margin:8px 10px 25px 10px;
+ padding-bottom:5px
+}
+
+/** 表格布局 **/
+.pagination-container {
+ position: relative;
+ height: 25px;
+ margin-bottom: 10px;
+ margin-top: 15px;
+ padding: 10px 20px !important;
+}
+
+/* tree border */
+.tree-border {
+ margin-top: 5px;
+ border: 1px solid #e5e6e7;
+ background: #FFFFFF none;
+ border-radius:4px;
+}
+
+.pagination-container .el-pagination {
+ right: 0;
+ position: absolute;
+}
+
+.el-table .fixed-width .el-button--mini {
+ color: #409EFF;
+ padding-left: 0;
+ padding-right: 0;
+ width: inherit;
+}
+
+.el-tree-node__content > .el-checkbox {
+ margin-right: 8px;
+}
+
+.list-group-striped > .list-group-item {
+ border-left: 0;
+ border-right: 0;
+ border-radius: 0;
+ padding-left: 0;
+ padding-right: 0;
+}
+
+.list-group {
+ padding-left: 0px;
+ list-style: none;
+}
+
+.list-group-item {
+ border-bottom: 1px solid #e7eaec;
+ border-top: 1px solid #e7eaec;
+ margin-bottom: -1px;
+ padding: 11px 0px;
+ font-size: 13px;
+}
+
+.pull-right {
+ float: right !important;
+}
+
+.el-card__header {
+ padding: 14px 15px 7px;
+ min-height: 40px;
+}
+
+.el-card__body {
+ padding: 15px 20px 20px 20px;
+}
+
+.card-box {
+ padding-right: 15px;
+ padding-left: 15px;
+ margin-bottom: 10px;
+}
+
+/* button color */
+.el-button--cyan.is-active,
+.el-button--cyan:active {
+ background: #20B2AA;
+ border-color: #20B2AA;
+ color: #FFFFFF;
+}
+
+.el-button--cyan:focus,
+.el-button--cyan:hover {
+ background: #48D1CC;
+ border-color: #48D1CC;
+ color: #FFFFFF;
+}
+
+.el-button--cyan {
+ background-color: #20B2AA;
+ border-color: #20B2AA;
+ color: #FFFFFF;
+}
+
+/* text color */
+.text-navy {
+ color: #1ab394;
+}
+
+.text-primary {
+ color: inherit;
+}
+
+.text-success {
+ color: #1c84c6;
+}
+
+.text-info {
+ color: #23c6c8;
+}
+
+.text-warning {
+ color: #f8ac59;
+}
+
+.text-danger {
+ color: #ed5565;
+}
+
+.text-muted {
+ color: #888888;
+}
+
+/* image */
+.img-circle {
+ border-radius: 50%;
+}
+
+.img-lg {
+ width: 120px;
+ height: 120px;
+}
+
+.avatar-upload-preview {
+ position: absolute;
+ top: 50%;
+ transform: translate(50%, -50%);
+ width: 200px;
+ height: 200px;
+ border-radius: 50%;
+ box-shadow: 0 0 4px #ccc;
+ overflow: hidden;
+}
+
+/* 拖拽列样式 */
+.sortable-ghost{
+ opacity: .8;
+ color: #fff!important;
+ background: #42b983!important;
+}
+
+.top-right-btn {
+ position: relative;
+ float: right;
+}
\ No newline at end of file
diff --git a/src/styles/variables.scss b/assets/styles/variables.scss
similarity index 97%
rename from src/styles/variables.scss
rename to assets/styles/variables.scss
index a19c27c..5688f25 100644
--- a/src/styles/variables.scss
+++ b/assets/styles/variables.scss
@@ -19,7 +19,7 @@ $menuHover:#263445;
$subMenuBg:#1f2d3d;
$subMenuHover:#001528;
-$sideBarWidth: 210px;
+$sideBarWidth: 200px;
// the :export directive is the magic sauce for webpack
// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass
diff --git a/babel.config.js b/babel.config.js
deleted file mode 100644
index e955840..0000000
--- a/babel.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-module.exports = {
- presets: [
- '@vue/cli-plugin-babel/preset'
- ]
-}
diff --git a/build.js b/build.js
new file mode 100644
index 0000000..5ba55bc
--- /dev/null
+++ b/build.js
@@ -0,0 +1,51 @@
+const {
+ exec
+} = require("child_process");
+
+function init() {
+ exec("npm install", (error, stdout, stderr) => {
+ if (error) {
+ console.error(`执行install出错`);
+ return;
+ }
+ const {
+ say
+ } = require("cfonts");
+ const chalk = require("chalk");
+ say("unicloudAdmin", {
+ colors: ["yellow"],
+ font: "simple",
+ space: true,
+ });
+ console.log(
+ chalk.blue("┏ 正在使用安装NPM依赖 -----------------") + "\n"
+ );
+ exec(
+ "cd cloudfunctions-aliyun/api && npm install",
+ (error, stdout, stderr) => {
+ console.log(stdout)
+ if (error) {
+ console.error(`执行安装云开发环境出错`);
+ return;
+ }
+ console.log(
+ chalk.blue("┗ 安装完毕 ----------------------------") + "\n"
+ );
+ console.log(chalk.bold.red(" 请继续使用HBuilderx运行服务") + "\n");
+ console.log(chalk.yellow(" --------------- 鸣谢 ----------------"));
+ console.log(chalk.yellow("| |"));
+ console.log(chalk.yellow("| 开源不易,需要鼓励 |"));
+ console.log(chalk.yellow("| By: 迷糊K(Ferryman) |"));
+ console.log(chalk.yellow("| 如有其他问题请联系: |"));
+ console.log(chalk.yellow("| QQ: 631038597 |"));
+ console.log(chalk.yellow("| 邮箱: zhanhengwork@outlook.com |"));
+ console.log(chalk.yellow("| |"));
+ console.log(
+ chalk.yellow(" -------------------------------------") + "\n"
+ );
+ }
+ );
+ });
+}
+
+init();
diff --git a/components/Breadcrumb/index.vue b/components/Breadcrumb/index.vue
new file mode 100644
index 0000000..63b7f37
--- /dev/null
+++ b/components/Breadcrumb/index.vue
@@ -0,0 +1,82 @@
+
+
+
+
+
+ {{ item.meta.title }}
+ {{ item.meta.title }}
+
+
+
+
+
+
+
+
diff --git a/components/Hamburger/index.vue b/components/Hamburger/index.vue
new file mode 100644
index 0000000..368b002
--- /dev/null
+++ b/components/Hamburger/index.vue
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
diff --git a/components/HeaderSearch/index.vue b/components/HeaderSearch/index.vue
new file mode 100644
index 0000000..3b4790d
--- /dev/null
+++ b/components/HeaderSearch/index.vue
@@ -0,0 +1,188 @@
+
+
+
+
+
+
+
diff --git a/components/IconSelect/index.vue b/components/IconSelect/index.vue
new file mode 100644
index 0000000..b0ec9fa
--- /dev/null
+++ b/components/IconSelect/index.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
diff --git a/components/IconSelect/requireIcons.js b/components/IconSelect/requireIcons.js
new file mode 100644
index 0000000..99e5c54
--- /dev/null
+++ b/components/IconSelect/requireIcons.js
@@ -0,0 +1,11 @@
+
+const req = require.context('../../assets/icons/svg', false, /\.svg$/)
+const requireAll = requireContext => requireContext.keys()
+
+const re = /\.\/(.*)\.svg/
+
+const icons = requireAll(req).map(i => {
+ return i.match(re)[1]
+})
+
+export default icons
diff --git a/components/Pagination/index.vue b/components/Pagination/index.vue
new file mode 100644
index 0000000..c815e13
--- /dev/null
+++ b/components/Pagination/index.vue
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
diff --git a/components/PanThumb/index.vue b/components/PanThumb/index.vue
new file mode 100644
index 0000000..1bcf417
--- /dev/null
+++ b/components/PanThumb/index.vue
@@ -0,0 +1,142 @@
+
+
+
+
+
+
+
diff --git a/components/ParentView/index.vue b/components/ParentView/index.vue
new file mode 100644
index 0000000..7bf6148
--- /dev/null
+++ b/components/ParentView/index.vue
@@ -0,0 +1,3 @@
+
+
+
diff --git a/components/RightPanel/index.vue b/components/RightPanel/index.vue
new file mode 100644
index 0000000..35931d1
--- /dev/null
+++ b/components/RightPanel/index.vue
@@ -0,0 +1,151 @@
+
+
+
+
+
+
+
+
+
diff --git a/components/RightToolbar/index.vue b/components/RightToolbar/index.vue
new file mode 100644
index 0000000..494c0b8
--- /dev/null
+++ b/components/RightToolbar/index.vue
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/Screenfull/index.vue b/components/Screenfull/index.vue
new file mode 100644
index 0000000..6950a89
--- /dev/null
+++ b/components/Screenfull/index.vue
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
diff --git a/components/SizeSelect/index.vue b/components/SizeSelect/index.vue
new file mode 100644
index 0000000..8a48df2
--- /dev/null
+++ b/components/SizeSelect/index.vue
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+ {{item.label }}
+
+
+
+
+
+
diff --git a/components/SvgIcon/index.vue b/components/SvgIcon/index.vue
new file mode 100644
index 0000000..c455e67
--- /dev/null
+++ b/components/SvgIcon/index.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/ThemePicker/index.vue b/components/ThemePicker/index.vue
new file mode 100644
index 0000000..3879c5a
--- /dev/null
+++ b/components/ThemePicker/index.vue
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+
diff --git a/components/UniEle/Doc/index.vue b/components/UniEle/Doc/index.vue
new file mode 100644
index 0000000..985088e
--- /dev/null
+++ b/components/UniEle/Doc/index.vue
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/UniEle/Git/index.vue b/components/UniEle/Git/index.vue
new file mode 100644
index 0000000..b5105c7
--- /dev/null
+++ b/components/UniEle/Git/index.vue
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/UploadImage/index.vue b/components/UploadImage/index.vue
new file mode 100644
index 0000000..87b3ee9
--- /dev/null
+++ b/components/UploadImage/index.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/vue-admin-perfect/public/favicon.ico b/components/vue-admin-perfect/public/favicon.ico
deleted file mode 100644
index df36fcf..0000000
Binary files a/components/vue-admin-perfect/public/favicon.ico and /dev/null differ
diff --git a/components/vue-admin-perfect/public/index.html b/components/vue-admin-perfect/public/index.html
deleted file mode 100644
index 3e5a139..0000000
--- a/components/vue-admin-perfect/public/index.html
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
- <%= htmlWebpackPlugin.options.title %>
-
-
-
- We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.
-
-
-
-
-
diff --git a/components/vue-admin-perfect/read/1.png b/components/vue-admin-perfect/read/1.png
deleted file mode 100644
index c1ebb6d..0000000
Binary files a/components/vue-admin-perfect/read/1.png and /dev/null differ
diff --git a/components/vue-admin-perfect/read/2.png b/components/vue-admin-perfect/read/2.png
deleted file mode 100644
index 4f1a026..0000000
Binary files a/components/vue-admin-perfect/read/2.png and /dev/null differ
diff --git a/components/vue-admin-perfect/read/3.png b/components/vue-admin-perfect/read/3.png
deleted file mode 100644
index a1ce9e0..0000000
Binary files a/components/vue-admin-perfect/read/3.png and /dev/null differ
diff --git a/components/vue-admin-perfect/read/4.png b/components/vue-admin-perfect/read/4.png
deleted file mode 100644
index 2e7fcac..0000000
Binary files a/components/vue-admin-perfect/read/4.png and /dev/null differ
diff --git a/components/vue-admin-perfect/read/5.png b/components/vue-admin-perfect/read/5.png
deleted file mode 100644
index cd205ee..0000000
Binary files a/components/vue-admin-perfect/read/5.png and /dev/null differ
diff --git a/components/vue-admin-perfect/read/6.png b/components/vue-admin-perfect/read/6.png
deleted file mode 100644
index 92f7242..0000000
Binary files a/components/vue-admin-perfect/read/6.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/App.vue b/components/vue-admin-perfect/src/App.vue
deleted file mode 100644
index d403b7b..0000000
--- a/components/vue-admin-perfect/src/App.vue
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/abandon/demo.vue b/components/vue-admin-perfect/src/abandon/demo.vue
deleted file mode 100644
index b4c751f..0000000
--- a/components/vue-admin-perfect/src/abandon/demo.vue
+++ /dev/null
@@ -1,92 +0,0 @@
-
-
-
-
新增
-
-
-
-
-
-
-
-
-
导出
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/abandon/exprotExcel.ts b/components/vue-admin-perfect/src/abandon/exprotExcel.ts
deleted file mode 100644
index 9a1b974..0000000
--- a/components/vue-admin-perfect/src/abandon/exprotExcel.ts
+++ /dev/null
@@ -1,200 +0,0 @@
-const ExcelJS = require("exceljs");
-
-const autoWidthAction = (val,width=10)=>{
- if (val == null) {
- width = 10;
- } else if (val.toString().charCodeAt(0) > 255) {
- /*if chinese*/
- width = val.toString().length * 2;
- } else {
- width = val.toString().length;
- }
- return width
-}
-export const exportExcel = ({column,data,filename,autoWidth})=>{
- // 创建excel
- const workbook = new ExcelJS.Workbook();
- // 设置信息
- workbook.creator = "Me";
- workbook.title = filename;
- workbook.created = new Date();
- workbook.modified = new Date();
- // 创建工作表
- const worksheet = workbook.addWorksheet(filename);
- // 设置列名
- let columnsName = [];
- column.forEach((item,index)=>{
- let obj = {
- header: item.label, key:item.name, width: null
- }
- if(autoWidth){
- let maxArr = [autoWidthAction(item.label)]
- data.forEach(ite=>{
- let str = ite[item.name] ||''
- if(str){
- maxArr.push(autoWidthAction(str))
- }
- })
- obj.width = Math.max(...maxArr)+5
- }
- // 设置列名、键和宽度
- columnsName.push(obj);
- })
- worksheet.columns = columnsName;
- // 添加行
- worksheet.addRows(data);
- // 写入文件
- workbook.xlsx.writeBuffer().then((data) => {
- const blob = new Blob([data, { type: "application/vnd.ms-excel" }]);
- if (window.navigator.msSaveOrOpenBlob) {
- // msSaveOrOpenBlob方法返回boolean值
- navigator.msSaveBlob(blob, filename + ".xlsx");
- // 本地保存
- } else {
- const link = document.createElement("a"); // a标签下载
- link.href = window.URL.createObjectURL(blob); // href属性指定下载链接
- link.download = filename + ".xlsx"; // dowload属性指定文件名
- link.click(); // click()事件触发下载
- window.URL.revokeObjectURL(link.href); // 释放内存
- }
- });
-}
-// 默认的列宽
-export const DEFAULT_COLUMN_WIDTH = 20;
-
-function getColumnNumber(width: number) {
- // 需要的列数,四舍五入
- return Math.round(width / DEFAULT_COLUMN_WIDTH);
-}
-
-
-function addData(worksheet,headerKeys,headers,data){
-
-}
-
-export const exportMultiHeaderExcel = ({column,data,filename,autoWidth})=>{
- // 创建excel
- const workbook = new ExcelJS.Workbook();
- // 创建工作表
- const worksheet = workbook.addWorksheet(filename);
-
- // 第一行表头
- const names1= [];
- // 第二行表头
- const names2= [];
-
- // 用于匹配数据的 keys
- const headerKeys= [];
-
- let headers = [];
- column.forEach((item,index)=>{
- let obj = {
- header: item.label, key:item.name, width: null
- }
- let maxArr = [autoWidthAction(item.label)]
- data.forEach(ite=>{
- let str = ite[item.name] ||''
- if(str){
- maxArr.push(autoWidthAction(str))
- }
- })
- obj.width = Math.max(...maxArr)+5
- // 设置列名、键和宽度
- headers.push(obj);
- })
-
- column.forEach(item => {
- if (item.children) {
- // 有 children 说明是多级表头,header name 需要两行
- item.children.forEach(child => {
- names1.push(item.label);
- names2.push(child.label);
- headerKeys.push(child.name);
- });
- } else {
- names1.push(item.label);
- names2.push(item.label);
- headerKeys.push(item.name);
- }
- });
-
-
-
- // 判断是否有 children, 有的话是两行表头
- const isMultiHeader = column.some(item => item.children);
- if(isMultiHeader){
- const rowHeader1 = worksheet.addRow(names1);
- const rowHeader2 = worksheet.addRow(names2);
-
- console.log('rowHeader1====',names1,names2,rowHeader1,rowHeader2)
- mergeColumnCell(headers, rowHeader1, rowHeader2, names1, names2, worksheet)
- // return
-
- }
-
- data.forEach((item: any) => {
- const rowData = headerKeys?.map(key => item[key]);
- const row = worksheet.addRow(rowData);
- // console.log('row--------',row)
- })
- // 写入文件
- workbook.xlsx.writeBuffer().then((data) => {
- const blob = new Blob([data, { type: "application/vnd.ms-excel" }]);
- if (window.navigator.msSaveOrOpenBlob) {
- // msSaveOrOpenBlob方法返回boolean值
- navigator.msSaveBlob(blob, filename + ".xlsx");
- // 本地保存
- } else {
- const link = document.createElement("a"); // a标签下载
- link.href = window.URL.createObjectURL(blob); // href属性指定下载链接
- link.download = filename + ".xlsx"; // dowload属性指定文件名
- link.click(); // click()事件触发下载
- window.URL.revokeObjectURL(link.href); // 释放内存
- }
- });
-}
-
-
-function mergeColumnCell(headers, rowHeader1, rowHeader2, nameRow1, nameRow2, worksheet){
- // 当前 index 的指针
- let pointer = -1;
- nameRow1.forEach((name, index) => {
- // 当 index 小于指针时,说明这一列已经被合并过了,不能再合并
- if (index <= pointer) return;
- // 是否应该列合并
- const shouldVerticalMerge = name === nameRow2[index];
-
-
- // 是否应该行合并
- const shouldHorizontalMerge = index !== nameRow1.lastIndexOf(name);
-
- console.log('==',name,nameRow2[index],index,nameRow1.lastIndexOf(name),shouldVerticalMerge,shouldHorizontalMerge)
-
- pointer = nameRow1.lastIndexOf(name);
- if (shouldVerticalMerge && shouldHorizontalMerge) {
- // 两个方向都合并
- worksheet.mergeCells(
- Number(rowHeader1.number),
- index + 1,
- Number(rowHeader2.number),
- nameRow1.lastIndexOf(name) + 1,
- );
- console.log('==')
- } else if (shouldVerticalMerge && !shouldHorizontalMerge) {
- // 只在垂直方向上同一列的两行合并
- worksheet.mergeCells(Number(rowHeader1.number), index + 1, Number(rowHeader2.number), index + 1);
- } else if (!shouldVerticalMerge && shouldHorizontalMerge) {
- // 只有水平方向同一行的多列合并
- worksheet.mergeCells(
- Number(rowHeader1.number),
- index + 1,
- Number(rowHeader1.number),
- nameRow1.lastIndexOf(name) + 1,
- );
- // eslint-disable-next-line no-param-reassign
- const cell = rowHeader1.getCell(index + 1);
- cell.alignment = { vertical: 'middle', horizontal: 'center', wrapText: true };
- }
- });
-
-}
diff --git a/components/vue-admin-perfect/src/assets/2.png b/components/vue-admin-perfect/src/assets/2.png
deleted file mode 100644
index e69de29..0000000
diff --git a/components/vue-admin-perfect/src/assets/3.png b/components/vue-admin-perfect/src/assets/3.png
deleted file mode 100644
index 0daef75..0000000
Binary files a/components/vue-admin-perfect/src/assets/3.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/NO.png b/components/vue-admin-perfect/src/assets/face/NO.png
deleted file mode 100644
index de13583..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/NO.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/OK.png b/components/vue-admin-perfect/src/assets/face/OK.png
deleted file mode 100644
index 976248f..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/OK.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/emoji-after.png b/components/vue-admin-perfect/src/assets/face/emoji-after.png
deleted file mode 100644
index ca2211d..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/emoji-after.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/emoji-before.png b/components/vue-admin-perfect/src/assets/face/emoji-before.png
deleted file mode 100644
index 620b6b5..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/emoji-before.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/乒乓.png b/components/vue-admin-perfect/src/assets/face/乒乓.png
deleted file mode 100644
index 606eefe..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/乒乓.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/乱舞.png b/components/vue-admin-perfect/src/assets/face/乱舞.png
deleted file mode 100644
index 137ba8f..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/乱舞.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/亲亲.png b/components/vue-admin-perfect/src/assets/face/亲亲.png
deleted file mode 100644
index f09535c..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/亲亲.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/便便.png b/components/vue-admin-perfect/src/assets/face/便便.png
deleted file mode 100644
index 6e7ea6b..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/便便.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/偷笑.png b/components/vue-admin-perfect/src/assets/face/偷笑.png
deleted file mode 100644
index e7ede5a..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/偷笑.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/傲慢.png b/components/vue-admin-perfect/src/assets/face/傲慢.png
deleted file mode 100644
index 4bf853c..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/傲慢.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/再见.png b/components/vue-admin-perfect/src/assets/face/再见.png
deleted file mode 100644
index 33c29ba..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/再见.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/冷汗.png b/components/vue-admin-perfect/src/assets/face/冷汗.png
deleted file mode 100644
index 19fff5a..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/冷汗.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/凋谢.png b/components/vue-admin-perfect/src/assets/face/凋谢.png
deleted file mode 100644
index 7aadc6f..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/凋谢.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/刀.png b/components/vue-admin-perfect/src/assets/face/刀.png
deleted file mode 100644
index 44fa579..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/刀.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/勾引.png b/components/vue-admin-perfect/src/assets/face/勾引.png
deleted file mode 100644
index 97ac70d..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/勾引.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/发呆.png b/components/vue-admin-perfect/src/assets/face/发呆.png
deleted file mode 100644
index b562171..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/发呆.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/发怒.png b/components/vue-admin-perfect/src/assets/face/发怒.png
deleted file mode 100644
index ea04e8c..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/发怒.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/发抖.png b/components/vue-admin-perfect/src/assets/face/发抖.png
deleted file mode 100644
index f36e3a0..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/发抖.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/可怜.png b/components/vue-admin-perfect/src/assets/face/可怜.png
deleted file mode 100644
index 8b4a094..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/可怜.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/右哼哼.png b/components/vue-admin-perfect/src/assets/face/右哼哼.png
deleted file mode 100644
index 3938340..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/右哼哼.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/右太极.png b/components/vue-admin-perfect/src/assets/face/右太极.png
deleted file mode 100644
index 3ef59eb..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/右太极.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/吐.png b/components/vue-admin-perfect/src/assets/face/吐.png
deleted file mode 100644
index 766ad1d..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/吐.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/吓.png b/components/vue-admin-perfect/src/assets/face/吓.png
deleted file mode 100644
index a10a2bb..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/吓.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/呲牙.png b/components/vue-admin-perfect/src/assets/face/呲牙.png
deleted file mode 100644
index b626e67..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/呲牙.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/咒骂.png b/components/vue-admin-perfect/src/assets/face/咒骂.png
deleted file mode 100644
index 8fa8c6b..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/咒骂.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/咖啡.png b/components/vue-admin-perfect/src/assets/face/咖啡.png
deleted file mode 100644
index 9db94c3..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/咖啡.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/哈欠.png b/components/vue-admin-perfect/src/assets/face/哈欠.png
deleted file mode 100644
index 1c42a73..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/哈欠.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/啤酒.png b/components/vue-admin-perfect/src/assets/face/啤酒.png
deleted file mode 100644
index 0f8c77c..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/啤酒.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/嘘.png b/components/vue-admin-perfect/src/assets/face/嘘.png
deleted file mode 100644
index 14eadc6..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/嘘.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/嘴唇.png b/components/vue-admin-perfect/src/assets/face/嘴唇.png
deleted file mode 100644
index c30fec3..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/嘴唇.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/嘿哈.png b/components/vue-admin-perfect/src/assets/face/嘿哈.png
deleted file mode 100644
index f046059..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/嘿哈.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/回头.png b/components/vue-admin-perfect/src/assets/face/回头.png
deleted file mode 100644
index 6cd2d29..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/回头.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/困.png b/components/vue-admin-perfect/src/assets/face/困.png
deleted file mode 100644
index f878067..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/困.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/坏笑.png b/components/vue-admin-perfect/src/assets/face/坏笑.png
deleted file mode 100644
index c082745..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/坏笑.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/大哭.png b/components/vue-admin-perfect/src/assets/face/大哭.png
deleted file mode 100644
index a2fe2c2..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/大哭.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/太阳.png b/components/vue-admin-perfect/src/assets/face/太阳.png
deleted file mode 100644
index c89a346..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/太阳.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/奋斗.png b/components/vue-admin-perfect/src/assets/face/奋斗.png
deleted file mode 100644
index 82a71f6..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/奋斗.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/奸笑.png b/components/vue-admin-perfect/src/assets/face/奸笑.png
deleted file mode 100644
index 543a4da..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/奸笑.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/委屈.png b/components/vue-admin-perfect/src/assets/face/委屈.png
deleted file mode 100644
index 1e2e39e..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/委屈.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/害羞.png b/components/vue-admin-perfect/src/assets/face/害羞.png
deleted file mode 100644
index 67f4072..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/害羞.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/尴尬.png b/components/vue-admin-perfect/src/assets/face/尴尬.png
deleted file mode 100644
index a954c55..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/尴尬.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/左哼哼.png b/components/vue-admin-perfect/src/assets/face/左哼哼.png
deleted file mode 100644
index 0e9f122..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/左哼哼.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/左太极.png b/components/vue-admin-perfect/src/assets/face/左太极.png
deleted file mode 100644
index d01df1b..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/左太极.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/差劲.png b/components/vue-admin-perfect/src/assets/face/差劲.png
deleted file mode 100644
index 8ddde22..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/差劲.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/弱.png b/components/vue-admin-perfect/src/assets/face/弱.png
deleted file mode 100644
index 6bf1caf..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/弱.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/强.png b/components/vue-admin-perfect/src/assets/face/强.png
deleted file mode 100644
index 7e34985..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/强.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/得意.png b/components/vue-admin-perfect/src/assets/face/得意.png
deleted file mode 100644
index 2b1ba69..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/得意.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/微笑.png b/components/vue-admin-perfect/src/assets/face/微笑.png
deleted file mode 100644
index 4a38990..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/微笑.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/心碎.png b/components/vue-admin-perfect/src/assets/face/心碎.png
deleted file mode 100644
index 0665834..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/心碎.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/快哭了.png b/components/vue-admin-perfect/src/assets/face/快哭了.png
deleted file mode 100644
index b9b5190..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/快哭了.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/怄火.png b/components/vue-admin-perfect/src/assets/face/怄火.png
deleted file mode 100644
index 8a05c34..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/怄火.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/悠闲.png b/components/vue-admin-perfect/src/assets/face/悠闲.png
deleted file mode 100644
index e8d4a4a..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/悠闲.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/惊恐.png b/components/vue-admin-perfect/src/assets/face/惊恐.png
deleted file mode 100644
index 648b4fe..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/惊恐.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/惊讶.png b/components/vue-admin-perfect/src/assets/face/惊讶.png
deleted file mode 100644
index 1e86345..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/惊讶.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/愉快.png b/components/vue-admin-perfect/src/assets/face/愉快.png
deleted file mode 100644
index 91ad87c..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/愉快.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/憨笑.png b/components/vue-admin-perfect/src/assets/face/憨笑.png
deleted file mode 100644
index 4aa5d0c..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/憨笑.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/抓狂.png b/components/vue-admin-perfect/src/assets/face/抓狂.png
deleted file mode 100644
index 51740fb..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/抓狂.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/投降.png b/components/vue-admin-perfect/src/assets/face/投降.png
deleted file mode 100644
index aee818c..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/投降.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/抠鼻.png b/components/vue-admin-perfect/src/assets/face/抠鼻.png
deleted file mode 100644
index 14c6af7..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/抠鼻.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/抱拳.png b/components/vue-admin-perfect/src/assets/face/抱拳.png
deleted file mode 100644
index 7c8bd29..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/抱拳.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/拥抱.png b/components/vue-admin-perfect/src/assets/face/拥抱.png
deleted file mode 100644
index 0fcc271..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/拥抱.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/拳头.png b/components/vue-admin-perfect/src/assets/face/拳头.png
deleted file mode 100644
index 166e87a..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/拳头.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/捂脸.png b/components/vue-admin-perfect/src/assets/face/捂脸.png
deleted file mode 100644
index 2459dd5..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/捂脸.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/握手.png b/components/vue-admin-perfect/src/assets/face/握手.png
deleted file mode 100644
index e9bc91c..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/握手.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/撇嘴.png b/components/vue-admin-perfect/src/assets/face/撇嘴.png
deleted file mode 100644
index 5dbb5b3..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/撇嘴.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/擦汗.png b/components/vue-admin-perfect/src/assets/face/擦汗.png
deleted file mode 100644
index 3e82855..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/擦汗.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/敲打.png b/components/vue-admin-perfect/src/assets/face/敲打.png
deleted file mode 100644
index 5c40d2a..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/敲打.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/晕.png b/components/vue-admin-perfect/src/assets/face/晕.png
deleted file mode 100644
index de893e4..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/晕.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/月亮.png b/components/vue-admin-perfect/src/assets/face/月亮.png
deleted file mode 100644
index fb3b35e..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/月亮.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/机智.png b/components/vue-admin-perfect/src/assets/face/机智.png
deleted file mode 100644
index 4002d4e..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/机智.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/流汗.png b/components/vue-admin-perfect/src/assets/face/流汗.png
deleted file mode 100644
index 39a9ef5..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/流汗.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/流泪.png b/components/vue-admin-perfect/src/assets/face/流泪.png
deleted file mode 100644
index 9912664..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/流泪.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/激动.png b/components/vue-admin-perfect/src/assets/face/激动.png
deleted file mode 100644
index 84b6372..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/激动.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/炸弹.png b/components/vue-admin-perfect/src/assets/face/炸弹.png
deleted file mode 100644
index 3b6320c..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/炸弹.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/爱你.png b/components/vue-admin-perfect/src/assets/face/爱你.png
deleted file mode 100644
index abc26dd..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/爱你.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/爱心.png b/components/vue-admin-perfect/src/assets/face/爱心.png
deleted file mode 100644
index b1582e9..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/爱心.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/爱情.png b/components/vue-admin-perfect/src/assets/face/爱情.png
deleted file mode 100644
index baa3602..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/爱情.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/猪头.png b/components/vue-admin-perfect/src/assets/face/猪头.png
deleted file mode 100644
index cb56ee0..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/猪头.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/献吻.png b/components/vue-admin-perfect/src/assets/face/献吻.png
deleted file mode 100644
index 933404e..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/献吻.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/玫瑰.png b/components/vue-admin-perfect/src/assets/face/玫瑰.png
deleted file mode 100644
index 5cdf902..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/玫瑰.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/瓢虫.png b/components/vue-admin-perfect/src/assets/face/瓢虫.png
deleted file mode 100644
index fd6ca53..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/瓢虫.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/疑问.png b/components/vue-admin-perfect/src/assets/face/疑问.png
deleted file mode 100644
index 48567b7..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/疑问.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/疯了.png b/components/vue-admin-perfect/src/assets/face/疯了.png
deleted file mode 100644
index 9dcb8eb..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/疯了.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/白眼.png b/components/vue-admin-perfect/src/assets/face/白眼.png
deleted file mode 100644
index 0b2cb45..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/白眼.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/皱眉.png b/components/vue-admin-perfect/src/assets/face/皱眉.png
deleted file mode 100644
index 289b6b2..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/皱眉.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/睡.png b/components/vue-admin-perfect/src/assets/face/睡.png
deleted file mode 100644
index d02cc5c..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/睡.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/磕头.png b/components/vue-admin-perfect/src/assets/face/磕头.png
deleted file mode 100644
index 0cdc841..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/磕头.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/礼物.png b/components/vue-admin-perfect/src/assets/face/礼物.png
deleted file mode 100644
index f2219ca..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/礼物.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/篮球.png b/components/vue-admin-perfect/src/assets/face/篮球.png
deleted file mode 100644
index ba51abf..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/篮球.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/糗大了.png b/components/vue-admin-perfect/src/assets/face/糗大了.png
deleted file mode 100644
index 3c966ef..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/糗大了.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/红包.png b/components/vue-admin-perfect/src/assets/face/红包.png
deleted file mode 100644
index dd1941a..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/红包.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/耶.png b/components/vue-admin-perfect/src/assets/face/耶.png
deleted file mode 100644
index 0f6f5a9..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/耶.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/胜利.png b/components/vue-admin-perfect/src/assets/face/胜利.png
deleted file mode 100644
index ec1fc0b..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/胜利.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/色.png b/components/vue-admin-perfect/src/assets/face/色.png
deleted file mode 100644
index 86107c6..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/色.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/菜刀.png b/components/vue-admin-perfect/src/assets/face/菜刀.png
deleted file mode 100644
index 336e6fd..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/菜刀.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/蛋糕.png b/components/vue-admin-perfect/src/assets/face/蛋糕.png
deleted file mode 100644
index 1a97494..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/蛋糕.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/衰.png b/components/vue-admin-perfect/src/assets/face/衰.png
deleted file mode 100644
index 438af01..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/衰.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/西瓜.png b/components/vue-admin-perfect/src/assets/face/西瓜.png
deleted file mode 100644
index fb381c5..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/西瓜.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/调皮.png b/components/vue-admin-perfect/src/assets/face/调皮.png
deleted file mode 100644
index 4815f5f..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/调皮.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/足球.png b/components/vue-admin-perfect/src/assets/face/足球.png
deleted file mode 100644
index e9c08ca..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/足球.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/跳绳.png b/components/vue-admin-perfect/src/assets/face/跳绳.png
deleted file mode 100644
index 26a0b85..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/跳绳.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/跳跳.png b/components/vue-admin-perfect/src/assets/face/跳跳.png
deleted file mode 100644
index c370740..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/跳跳.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/转圈.png b/components/vue-admin-perfect/src/assets/face/转圈.png
deleted file mode 100644
index 6501073..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/转圈.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/鄙视.png b/components/vue-admin-perfect/src/assets/face/鄙视.png
deleted file mode 100644
index 03087b5..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/鄙视.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/酷.png b/components/vue-admin-perfect/src/assets/face/酷.png
deleted file mode 100644
index 9884164..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/酷.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/闪电.png b/components/vue-admin-perfect/src/assets/face/闪电.png
deleted file mode 100644
index ea0178b..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/闪电.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/闭嘴.png b/components/vue-admin-perfect/src/assets/face/闭嘴.png
deleted file mode 100644
index b6bb864..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/闭嘴.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/阴险.png b/components/vue-admin-perfect/src/assets/face/阴险.png
deleted file mode 100644
index b1834a9..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/阴险.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/难过.png b/components/vue-admin-perfect/src/assets/face/难过.png
deleted file mode 100644
index 69b144c..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/难过.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/飞吻.png b/components/vue-admin-perfect/src/assets/face/飞吻.png
deleted file mode 100644
index 57f2296..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/飞吻.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/饥饿.png b/components/vue-admin-perfect/src/assets/face/饥饿.png
deleted file mode 100644
index 53aa48a..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/饥饿.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/饭.png b/components/vue-admin-perfect/src/assets/face/饭.png
deleted file mode 100644
index 9a4e698..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/饭.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/骷髅.png b/components/vue-admin-perfect/src/assets/face/骷髅.png
deleted file mode 100644
index 453226b..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/骷髅.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/鸡.png b/components/vue-admin-perfect/src/assets/face/鸡.png
deleted file mode 100644
index 07517f3..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/鸡.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/face/鼓掌.png b/components/vue-admin-perfect/src/assets/face/鼓掌.png
deleted file mode 100644
index 027f883..0000000
Binary files a/components/vue-admin-perfect/src/assets/face/鼓掌.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/image/avator.png b/components/vue-admin-perfect/src/assets/image/avator.png
deleted file mode 100644
index 7d1e905..0000000
Binary files a/components/vue-admin-perfect/src/assets/image/avator.png and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/image/berserk.jpg b/components/vue-admin-perfect/src/assets/image/berserk.jpg
deleted file mode 100644
index 09d0d62..0000000
Binary files a/components/vue-admin-perfect/src/assets/image/berserk.jpg and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/image/cro.jpg b/components/vue-admin-perfect/src/assets/image/cro.jpg
deleted file mode 100644
index 29f7614..0000000
Binary files a/components/vue-admin-perfect/src/assets/image/cro.jpg and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/image/error/404.jpeg b/components/vue-admin-perfect/src/assets/image/error/404.jpeg
deleted file mode 100644
index 58e8269..0000000
Binary files a/components/vue-admin-perfect/src/assets/image/error/404.jpeg and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/image/im1.jpeg b/components/vue-admin-perfect/src/assets/image/im1.jpeg
deleted file mode 100644
index ea28337..0000000
Binary files a/components/vue-admin-perfect/src/assets/image/im1.jpeg and /dev/null differ
diff --git a/components/vue-admin-perfect/src/assets/mp4/2.mp4 b/components/vue-admin-perfect/src/assets/mp4/2.mp4
deleted file mode 100644
index e69de29..0000000
diff --git a/components/vue-admin-perfect/src/assets/mp4/3.jpeg b/components/vue-admin-perfect/src/assets/mp4/3.jpeg
deleted file mode 100644
index e69de29..0000000
diff --git a/components/vue-admin-perfect/src/components/Charts/Keyboard.vue b/components/vue-admin-perfect/src/components/Charts/Keyboard.vue
deleted file mode 100644
index 0b258f3..0000000
--- a/components/vue-admin-perfect/src/components/Charts/Keyboard.vue
+++ /dev/null
@@ -1,155 +0,0 @@
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/components/Charts/LineMarker.vue b/components/vue-admin-perfect/src/components/Charts/LineMarker.vue
deleted file mode 100644
index 580176d..0000000
--- a/components/vue-admin-perfect/src/components/Charts/LineMarker.vue
+++ /dev/null
@@ -1,230 +0,0 @@
-
-
-
-
diff --git a/components/vue-admin-perfect/src/components/Charts/MixChart.vue b/components/vue-admin-perfect/src/components/Charts/MixChart.vue
deleted file mode 100644
index c416542..0000000
--- a/components/vue-admin-perfect/src/components/Charts/MixChart.vue
+++ /dev/null
@@ -1,271 +0,0 @@
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/components/Charts/mixins/resize.js b/components/vue-admin-perfect/src/components/Charts/mixins/resize.js
deleted file mode 100644
index 20cf1e6..0000000
--- a/components/vue-admin-perfect/src/components/Charts/mixins/resize.js
+++ /dev/null
@@ -1,56 +0,0 @@
-import { debounce } from '@/utils/index.js'
-
-export default {
- data() {
- return {
- $_sidebarElm: null,
- $_resizeHandler: null
- }
- },
- mounted() {
- this.initListener()
- },
- activated() {
- if (!this.$_resizeHandler) {
- // avoid duplication init
- this.initListener()
- }
-
- // when keep-alive chart activated, auto resize
- this.resize()
- },
- beforeDestroy() {
- this.destroyListener()
- },
- deactivated() {
- this.destroyListener()
- },
- methods: {
- // use $_ for mixins properties
- // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential
- $_sidebarResizeHandler(e) {
- if (e.propertyName === 'width') {
- this.$_resizeHandler()
- }
- },
- initListener() {
- this.$_resizeHandler = debounce(() => {
- this.resize()
- }, 100)
- window.addEventListener('resize', this.$_resizeHandler)
-
- this.$_sidebarElm = document.getElementsByClassName('sidebar-container')[0]
- this.$_sidebarElm && this.$_sidebarElm.addEventListener('transitionend', this.$_sidebarResizeHandler)
- },
- destroyListener() {
- window.removeEventListener('resize', this.$_resizeHandler)
- this.$_resizeHandler = null
-
- this.$_sidebarElm && this.$_sidebarElm.removeEventListener('transitionend', this.$_sidebarResizeHandler)
- },
- resize() {
- const { chart } = this
- chart && chart.resize()
- }
- }
-}
diff --git a/components/vue-admin-perfect/src/components/pipeline/index.vue b/components/vue-admin-perfect/src/components/pipeline/index.vue
deleted file mode 100644
index 1130301..0000000
--- a/components/vue-admin-perfect/src/components/pipeline/index.vue
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/components/pipeline/zb-pipeline-start.vue b/components/vue-admin-perfect/src/components/pipeline/zb-pipeline-start.vue
deleted file mode 100644
index 0300e82..0000000
--- a/components/vue-admin-perfect/src/components/pipeline/zb-pipeline-start.vue
+++ /dev/null
@@ -1,63 +0,0 @@
-
-
-
-
-
-
开始
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/components/u-Hamburger/index.vue b/components/vue-admin-perfect/src/components/u-Hamburger/index.vue
deleted file mode 100644
index 9561467..0000000
--- a/components/vue-admin-perfect/src/components/u-Hamburger/index.vue
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
-
-
- {{ item.meta.title }}
- {{ item.meta.title }}
-
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/components/u-mavonEditor/index.vue b/components/vue-admin-perfect/src/components/u-mavonEditor/index.vue
deleted file mode 100644
index 08a64de..0000000
--- a/components/vue-admin-perfect/src/components/u-mavonEditor/index.vue
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/components/u-rightClickMenu/index.vue b/components/vue-admin-perfect/src/components/u-rightClickMenu/index.vue
deleted file mode 100644
index c2fd794..0000000
--- a/components/vue-admin-perfect/src/components/u-rightClickMenu/index.vue
+++ /dev/null
@@ -1,112 +0,0 @@
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/components/u-screenfull/index.js b/components/vue-admin-perfect/src/components/u-screenfull/index.js
deleted file mode 100644
index e1ae5b6..0000000
--- a/components/vue-admin-perfect/src/components/u-screenfull/index.js
+++ /dev/null
@@ -1,157 +0,0 @@
-/* eslint-disable promise/prefer-await-to-then */
-
-const methodMap = [
- [
- 'requestFullscreen',
- 'exitFullscreen',
- 'fullscreenElement',
- 'fullscreenEnabled',
- 'fullscreenchange',
- 'fullscreenerror',
- ],
- // New WebKit
- [
- 'webkitRequestFullscreen',
- 'webkitExitFullscreen',
- 'webkitFullscreenElement',
- 'webkitFullscreenEnabled',
- 'webkitfullscreenchange',
- 'webkitfullscreenerror',
-
- ],
- // Old WebKit
- [
- 'webkitRequestFullScreen',
- 'webkitCancelFullScreen',
- 'webkitCurrentFullScreenElement',
- 'webkitCancelFullScreen',
- 'webkitfullscreenchange',
- 'webkitfullscreenerror',
-
- ],
- [
- 'mozRequestFullScreen',
- 'mozCancelFullScreen',
- 'mozFullScreenElement',
- 'mozFullScreenEnabled',
- 'mozfullscreenchange',
- 'mozfullscreenerror',
- ],
- [
- 'msRequestFullscreen',
- 'msExitFullscreen',
- 'msFullscreenElement',
- 'msFullscreenEnabled',
- 'MSFullscreenChange',
- 'MSFullscreenError',
- ],
-];
-
-const nativeAPI = (() => {
- const unprefixedMethods = methodMap[0];
- const returnValue = {};
-
- for (const methodList of methodMap) {
- const exitFullscreenMethod = methodList?.[1];
- if (exitFullscreenMethod in document) {
- for (const [index, method] of methodList.entries()) {
- returnValue[unprefixedMethods[index]] = method;
- }
-
- return returnValue;
- }
- }
-
- return false;
-})();
-
-const eventNameMap = {
- change: nativeAPI.fullscreenchange,
- error: nativeAPI.fullscreenerror,
-};
-
-// eslint-disable-next-line import/no-mutable-exports
-let screenfull = {
- // eslint-disable-next-line default-param-last
- request(element = document.documentElement, options) {
- return new Promise((resolve, reject) => {
- const onFullScreenEntered = () => {
- screenfull.off('change', onFullScreenEntered);
- resolve();
- };
-
- screenfull.on('change', onFullScreenEntered);
-
- const returnPromise = element[nativeAPI.requestFullscreen](options);
-
- if (returnPromise instanceof Promise) {
- returnPromise.then(onFullScreenEntered).catch(reject);
- }
- });
- },
- exit() {
- return new Promise((resolve, reject) => {
- if (!screenfull.isFullscreen) {
- resolve();
- return;
- }
-
- const onFullScreenExit = () => {
- screenfull.off('change', onFullScreenExit);
- resolve();
- };
-
- screenfull.on('change', onFullScreenExit);
-
- const returnPromise = document[nativeAPI.exitFullscreen]();
-
- if (returnPromise instanceof Promise) {
- returnPromise.then(onFullScreenExit).catch(reject);
- }
- });
- },
- toggle(element, options) {
- return screenfull.isFullscreen ? screenfull.exit() : screenfull.request(element, options);
- },
- onchange(callback) {
- screenfull.on('change', callback);
- },
- onerror(callback) {
- screenfull.on('error', callback);
- },
- on(event, callback) {
- const eventName = eventNameMap[event];
- if (eventName) {
- document.addEventListener(eventName, callback, false);
- }
- },
- off(event, callback) {
- const eventName = eventNameMap[event];
- if (eventName) {
- document.removeEventListener(eventName, callback, false);
- }
- },
- raw: nativeAPI,
-};
-
-Object.defineProperties(screenfull, {
- isFullscreen: {
- get: () => Boolean(document[nativeAPI.fullscreenElement]),
- },
- element: {
- enumerable: true,
- get: () => document[nativeAPI.fullscreenElement] ?? undefined,
- },
- isEnabled: {
- enumerable: true,
- // Coerce to boolean in case of old WebKit.
- get: () => Boolean(document[nativeAPI.fullscreenEnabled]),
- },
-});
-
-if (!nativeAPI) {
- screenfull = {isEnabled: false};
-}
-
-
-export default screenfull;
diff --git a/components/vue-admin-perfect/src/components/u-screenfull/index.vue b/components/vue-admin-perfect/src/components/u-screenfull/index.vue
deleted file mode 100644
index 6253ab2..0000000
--- a/components/vue-admin-perfect/src/components/u-screenfull/index.vue
+++ /dev/null
@@ -1,52 +0,0 @@
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/components/u-setting/index.vue b/components/vue-admin-perfect/src/components/u-setting/index.vue
deleted file mode 100644
index f15b243..0000000
--- a/components/vue-admin-perfect/src/components/u-setting/index.vue
+++ /dev/null
@@ -1,126 +0,0 @@
-
-
-
-
-
-
- 主题配置
-
-
-
- 源码拷贝
-
-
-
-
-
- 布局
- changeSwitch(val,2)">
-
-
-
-
-
- 标签
- changeSwitch(val,1)"/>
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/components/vue-admin-perfect/src/components/u-upload/index.vue b/components/vue-admin-perfect/src/components/u-upload/index.vue
deleted file mode 100644
index 4a49826..0000000
--- a/components/vue-admin-perfect/src/components/u-upload/index.vue
+++ /dev/null
@@ -1,73 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/components/u-wangEdior/index.vue b/components/vue-admin-perfect/src/components/u-wangEdior/index.vue
deleted file mode 100644
index af8df04..0000000
--- a/components/vue-admin-perfect/src/components/u-wangEdior/index.vue
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/layout/components/AppMain.vue b/components/vue-admin-perfect/src/layout/components/AppMain.vue
deleted file mode 100644
index e48062a..0000000
--- a/components/vue-admin-perfect/src/layout/components/AppMain.vue
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/layout/components/Sidebar/Logo.vue b/components/vue-admin-perfect/src/layout/components/Sidebar/Logo.vue
deleted file mode 100644
index 591b168..0000000
--- a/components/vue-admin-perfect/src/layout/components/Sidebar/Logo.vue
+++ /dev/null
@@ -1,78 +0,0 @@
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/layout/components/Sidebar/SidebarItem.vue b/components/vue-admin-perfect/src/layout/components/Sidebar/SidebarItem.vue
deleted file mode 100644
index 96c1fc2..0000000
--- a/components/vue-admin-perfect/src/layout/components/Sidebar/SidebarItem.vue
+++ /dev/null
@@ -1,80 +0,0 @@
-
-
-
-
-
-
-
-
- {{ onlyOneChild.meta&&onlyOneChild.meta.title }}
-
-
-
-
-
-
- {{ item.meta&&item.meta.title }}
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/layout/components/Sidebar/index.vue b/components/vue-admin-perfect/src/layout/components/Sidebar/index.vue
deleted file mode 100644
index 0369603..0000000
--- a/components/vue-admin-perfect/src/layout/components/Sidebar/index.vue
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/layout/components/Sidebar/menuSlide.vue b/components/vue-admin-perfect/src/layout/components/Sidebar/menuSlide.vue
deleted file mode 100644
index 033b666..0000000
--- a/components/vue-admin-perfect/src/layout/components/Sidebar/menuSlide.vue
+++ /dev/null
@@ -1,55 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/components/vue-admin-perfect/src/layout/components/TagsView/ScrollPane.vue b/components/vue-admin-perfect/src/layout/components/TagsView/ScrollPane.vue
deleted file mode 100644
index f5a2362..0000000
--- a/components/vue-admin-perfect/src/layout/components/TagsView/ScrollPane.vue
+++ /dev/null
@@ -1,87 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/layout/components/TagsView/index.vue b/components/vue-admin-perfect/src/layout/components/TagsView/index.vue
deleted file mode 100644
index 9747dc3..0000000
--- a/components/vue-admin-perfect/src/layout/components/TagsView/index.vue
+++ /dev/null
@@ -1,202 +0,0 @@
-
-
-
-
- {{ tag.title }}
-
-
-
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/layout/components/UHeader/Personal.vue b/components/vue-admin-perfect/src/layout/components/UHeader/Personal.vue
deleted file mode 100644
index eb8657f..0000000
--- a/components/vue-admin-perfect/src/layout/components/UHeader/Personal.vue
+++ /dev/null
@@ -1,91 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/layout/components/UHeader/expand.vue b/components/vue-admin-perfect/src/layout/components/UHeader/expand.vue
deleted file mode 100644
index e69de29..0000000
diff --git a/components/vue-admin-perfect/src/layout/components/UHeader/index.vue b/components/vue-admin-perfect/src/layout/components/UHeader/index.vue
deleted file mode 100644
index baa4631..0000000
--- a/components/vue-admin-perfect/src/layout/components/UHeader/index.vue
+++ /dev/null
@@ -1,168 +0,0 @@
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/layout/hooks/useResizeHandler.ts b/components/vue-admin-perfect/src/layout/hooks/useResizeHandler.ts
deleted file mode 100644
index 0cc690e..0000000
--- a/components/vue-admin-perfect/src/layout/hooks/useResizeHandler.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-import store from '@/store'
-import {computed, onMounted, onUnmounted, watch} from "vue";
-import {useRoute} from "vue-router";
-
-const { body } = document
-
-const WIDTH = 992 // refer to Bootstrap's responsive design
-
-export const useResizeHandler = ()=>{
- const route = useRoute()
- const device = computed(()=>{
- return store.state.app.device
- })
- function $_isMobile(){
- const rect = body.getBoundingClientRect()
- return rect.width - 1 < WIDTH
- }
- function $_resizeHandler(){
- if (!document.hidden) { // bool型,表示页面是否处于隐藏状态。页面隐藏包括页面在后台标签页或者浏览器最小化
- const isMobile = $_isMobile()
- store.dispatch('app/toggleDevice', isMobile ? 'mobile' : 'desktop')
-
- if (isMobile) {
- store.dispatch('app/closeSideBar', { withoutAnimation: true })
- }
- }
- }
- onMounted(()=>{
- const isMobile = $_isMobile()
- if (isMobile) {
- store.dispatch('app/toggleDevice', 'mobile')
- store.dispatch('app/closeSideBar', { withoutAnimation: true })
- }
- window.addEventListener('resize', $_resizeHandler)
-
- watch(route,()=>{
- if (device.value === 'mobile' && store.state.app.isCollapse) {
- store.dispatch('app/closeSideBar', { withoutAnimation: false })
- }
- })
- })
-
- onUnmounted(()=>{
- window.removeEventListener('resize', $_resizeHandler)
- })
-
-
- return {device}
-}
diff --git a/components/vue-admin-perfect/src/layout/index.vue b/components/vue-admin-perfect/src/layout/index.vue
deleted file mode 100644
index 6f5adee..0000000
--- a/components/vue-admin-perfect/src/layout/index.vue
+++ /dev/null
@@ -1,110 +0,0 @@
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/main.ts b/components/vue-admin-perfect/src/main.ts
deleted file mode 100644
index 0046852..0000000
--- a/components/vue-admin-perfect/src/main.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { createApp } from 'vue'
-import App from './App.vue'
-import router from './router'
-import store from './store'
-
-import './permission'
-import ElementPlus from 'element-plus'
-import 'element-plus/dist/index.css'
-import zhCn from 'element-plus/es/locale/lang/zh-cn'
-const app = createApp(App)
-
-import * as ElIconsModules from '@element-plus/icons-vue'
-// 全局注册element-plus icon图标组件
-Object.keys(ElIconsModules).forEach((key) => {//循环遍历组件名称
- if ("Menu" !== key) {//如果不是图标组件不是Menu,就跳过,否则加上ICon的后缀
- app.component(key, ElIconsModules[key]);
- } else {
- app.component(key + "Icon", ElIconsModules[key]);
- }
-});
-
-import '@/styles/index.scss' // global css
-app.use(store).use(router).use(ElementPlus,{
- locale: zhCn,
-}).mount('#app')
diff --git a/components/vue-admin-perfect/src/permission.js b/components/vue-admin-perfect/src/permission.js
deleted file mode 100644
index a791914..0000000
--- a/components/vue-admin-perfect/src/permission.js
+++ /dev/null
@@ -1,57 +0,0 @@
-import router from './router/index'
-import store from './store/index'
-import NProgress from 'nprogress'
-import 'nprogress/nprogress.css'
-import { getToken } from '@/utils/auth'
-
-NProgress.configure({ showSpinner: false }) // NProgress Configuration
-
-const whiteList = ['/login', '/auth-redirect'] // 设置白名单
-// 记录路由
-let hasRoles = true
-
-router.beforeEach(async(to, from, next) => {
- // 开启进度条
- NProgress.start()
-
- // set page title
- document.title = to.meta.title
-
- // 确定用户是否已登录
- const hasToken = getToken()
-
- if (hasToken) {
- if (to.path === '/login') {
- // 如果已登录,请重定向到主页
- next({ path: '/' })
- NProgress.done()
- } else {
- try {
- // 路由添加进去了没有及时更新 需要重新进去一次拦截
- if(!store.state.permission.routes.length){
- // 获取权限列表进行接口访问 因为这里页面要切换权限
- // const roles = await store.dispatch('user/getInfo')
- const accessRoutes = await store.dispatch('permission/generateRoutes', store.getters.roles)
- hasRoles = false
- accessRoutes.forEach(item => router.addRoute(item)) // 动态添加访问路由表
- next({ ...to, replace: true }) // // 这里相当于push到一个页面 不在进入路由拦截
- }else {
- next() // // 如果不传参数就会重新执行路由拦截,重新进到这里
- }
- } catch (error) {
- next(`/login?redirect=${to.path}`)
- }
- }
- }else{
- if (whiteList.indexOf(to.path) !== -1) {
- next()
- } else {
- next(`/login?redirect=${to.path}`)
- NProgress.done()
- }
- }
-})
-
-router.afterEach(() => {
- NProgress.done()
-})
diff --git a/components/vue-admin-perfect/src/router/index.ts b/components/vue-admin-perfect/src/router/index.ts
deleted file mode 100644
index 8189ac1..0000000
--- a/components/vue-admin-perfect/src/router/index.ts
+++ /dev/null
@@ -1,97 +0,0 @@
-import { createRouter, createWebHistory, RouteRecordRaw,createWebHashHistory,Router } from 'vue-router'
-import Layout from "@/layout/index.vue";
-
-// 引入组件
-import chartsRouter from './modules/charts'
-import chatRouter from './modules/chat'
-import componentsRouter from './modules/components'
-import othersRouter from './modules/other'
-import externalLink from './modules/externalLink'
-import permissionRouter from './modules/permission'
-import tableRouter from './modules/table'
-import errorRouter from './modules/error'
-import excelRouter from './modules/excel'
-
-
-interface extendRoute {
- hidden?:boolean
-}
-
-export const constantRoutes: Array = [
- {
- path: '/login',
- name: 'Login',
- component: () => import('@/views/login/index.vue'),
- hidden: true,
- meta: { title: '登录',}
- },
-
- {
- path: '/',
- name: 'layout',
- component: Layout,
- redirect: '/home',
- children: [
- {
- path: '/home',
- component: () => import('@/views/home/index.vue'),
- name: 'home',
- meta: { title: '首页', icon: 'film', affix: true ,role:['other']}
- },
- ]
- },
-
-]
-
-const clipboardTable = {
- path: '/clipboard',
- component: Layout,
- redirect: 'noRedirect',
- name: 'clipboard',
- meta: {
- title: 'clipboard',
- icon: 'document-copy',
- roles:['other']
- },
- children: [
- {
- path: 'index',
- component: () => import('@/views/clipboard/index.vue'),
- name: 'map',
- meta: { title: 'clipboard', noCache: true , roles:['other'] ,icon: 'document-copy',}
- },
-
- ]
-}
-
-
-// 异步组件
-export const asyncRoutes = [
- tableRouter,
- chartsRouter,
- chatRouter,
- componentsRouter,
- othersRouter,
- excelRouter,
- errorRouter,
- externalLink,
- clipboardTable,
- permissionRouter,
-
- {
- path: '/:pathMatch(.*)',
- redirect: '/error/404'
- }
-]
-
-
-const router = createRouter({
- // history: createWebHistory(process.env.BASE_URL), // history
- history: createWebHashHistory(), // hash
- routes:constantRoutes
-})
-
-
-
-
-export default router
diff --git a/components/vue-admin-perfect/src/router/modules/charts.ts b/components/vue-admin-perfect/src/router/modules/charts.ts
deleted file mode 100644
index 310a7b2..0000000
--- a/components/vue-admin-perfect/src/router/modules/charts.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-/** When your routing table is too long, you can split it into small modules**/
-
-import Layout from "@/layout/index.vue";
-
-const chartsRouter = {
- path: '/charts',
- component: Layout,
- redirect: 'noRedirect',
- name: 'Charts',
- meta: {
- title: '图表',
- icon: 'trend-charts',
- roles:['other']
- },
- children: [
- // {
- // path: 'map',
- // component: () => import('@/views/charts/map.vue'),
- // name: 'map',
- // meta: { title: '地图', noCache: true , roles:['other'] }
- // },
- {
- path: 'migration',
- component: () => import('@/views/charts/migration.vue'),
- name: 'migration',
- meta: { title: '迁徙图', noCache: true , roles:['other'] }
- },
- {
- path: 'simple',
- component: () => import('@/views/charts/simple.vue'),
- name: 'charts-simple',
- meta: { title: '简单图表', noCache: true , roles:['other'] }
- },
- {
- path: 'complex',
- component: () => import('@/views/charts/complex.vue'),
- name: 'charts-complex',
- meta: { title: '复杂图表', noCache: true , roles:['other'] }
- },
- ]
-}
-
-export default chartsRouter
diff --git a/components/vue-admin-perfect/src/router/modules/chat.ts b/components/vue-admin-perfect/src/router/modules/chat.ts
deleted file mode 100644
index a0bd5b0..0000000
--- a/components/vue-admin-perfect/src/router/modules/chat.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-/** When your routing table is too long, you can split it into small modules**/
-
-import Layout from "@/layout/index.vue";
-
-const chartsRouter = {
- path: '/chat',
- component: Layout,
- redirect: 'noRedirect',
- name: 'chat',
- meta: {
- title: '聊天框',
- icon: 'chat-square'
- },
- children: [
- {
- path: 'index',
- component: () => import('@/views/chat/index.vue'),
- name: 'chat',
- meta: { title: '聊天框', noCache: true,icon: 'chat-square' }
- },
- ]
-}
-
-export default chartsRouter
diff --git a/components/vue-admin-perfect/src/router/modules/components.ts b/components/vue-admin-perfect/src/router/modules/components.ts
deleted file mode 100644
index cf25b30..0000000
--- a/components/vue-admin-perfect/src/router/modules/components.ts
+++ /dev/null
@@ -1,55 +0,0 @@
-/** When your routing table is too long, you can split it into small modules**/
-
-import Layout from "@/layout/index.vue";
-
-const componentsRouter = {
- path: '/components',
- component: Layout,
- redirect: 'noRedirect',
- name: 'components',
- meta: {
- title: '组件',
- icon: 'Histogram',
- roles:['other']
- },
- children: [
- {
- path: 'editor',
- component: () => import('@/views/components-demo/editor.vue'),
- name: 'editor',
- meta: { title: '富文本编辑器', noCache: true, roles:['other'] }
- },
- {
- path: 'mark-down',
- component: () => import('@/views/components-demo/mark-down.vue'),
- name: 'mark-down',
- meta: { title: 'markDown', noCache: true , roles:['other']}
- },
- {
- path: 'form',
- component: () => import('@/views/components-demo/form.vue'),
- name: 'form',
- meta: { title: '表单', noCache: true , roles:['other']}
- },
- {
- path: 'scroll',
- component: () => import('@/views/components-demo/scroll.vue'),
- name: 'scroll',
- meta: { title: '无限滚动', noCache: true }
- },
- {
- path: 'button',
- component: () => import('@/views/components-demo/button.vue'),
- name: 'button',
- meta: { title: '按钮', noCache: true }
- },
- {
- path: 'upload',
- component: () => import('@/views/components-demo/upload.vue'),
- name: 'upload',
- meta: { title: '上传图片', noCache: true }
- },
- ]
-}
-
-export default componentsRouter
diff --git a/components/vue-admin-perfect/src/router/modules/error.ts b/components/vue-admin-perfect/src/router/modules/error.ts
deleted file mode 100644
index 9d57c59..0000000
--- a/components/vue-admin-perfect/src/router/modules/error.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-/** When your routing table is too long, you can split it into small modules**/
-
-import Layout from "@/layout/index.vue";
-
-const errorRouter = {
- path: '/error',
- component: Layout,
- redirect: 'noRedirect',
- name: 'error',
- meta: {
- title: '错误页面',
- icon: 'School'
- },
- children: [
- {
- path: '404',
- component: () => import('@/views/error/404.vue'),
- name: '404',
- meta: { title: '404', noCache: true }
- },
- {
- path: '401',
- component: () => import('@/views/error/401.vue'),
- name: '401',
- meta: { title: '401', noCache: true }
- },
- ]
-}
-
-export default errorRouter
diff --git a/components/vue-admin-perfect/src/router/modules/excel.ts b/components/vue-admin-perfect/src/router/modules/excel.ts
deleted file mode 100644
index 176400d..0000000
--- a/components/vue-admin-perfect/src/router/modules/excel.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-/** When your routing table is too long, you can split it into small modules**/
-
-import Layout from "@/layout/index.vue";
-
-const excelRouter = {
- path: '/excel',
- component: Layout,
- redirect: 'noRedirect',
- name: 'excel',
- meta: {
- title: 'Excel',
- icon: 'School'
- },
- children: [
- {
- path: 'export-excel',
- component: () => import('@/views/excel/export-excel.vue'),
- name: 'export-excel',
- meta: { title: '导出 Excel', noCache: true }
- },
- {
- path: 'export-merge-header',
- component: () => import('@/views/excel/export-merge-header.vue'),
- name: 'export-merge-header',
- meta: { title: '导出 多级表头', noCache: true }
- },
- {
- path: 'upload-excel',
- component: () => import('@/views/excel/upload-excel.vue'),
- name: 'upload-excel',
- meta: { title: '上传 Excel', noCache: true }
- },
- {
- path: 'upload-style-excel',
- component: () => import('@/views/excel/export-style-excel.vue'),
- name: 'upload-style-excel',
- meta: { title: '自定义样式导出 Excel', noCache: true }
- },
- ]
-}
-
-export default excelRouter
diff --git a/components/vue-admin-perfect/src/router/modules/externalLink.ts b/components/vue-admin-perfect/src/router/modules/externalLink.ts
deleted file mode 100644
index 41cd066..0000000
--- a/components/vue-admin-perfect/src/router/modules/externalLink.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-/** When your routing table is too long, you can split it into small modules**/
-
-import Layout from "@/layout/index.vue";
-
-const externalLink = {
- path: '/external-link',
- component: Layout,
- redirect: 'noRedirect',
- name: 'external-link',
- children: [
- {
- path: 'https://github.com/zouzhibin/vue-admin-perfect',
- name: 'external',
- meta: { title: '外链', noCache: true , icon: 'link' }
- },
- ]
-}
-
-export default externalLink
diff --git a/components/vue-admin-perfect/src/router/modules/other.ts b/components/vue-admin-perfect/src/router/modules/other.ts
deleted file mode 100644
index 5a24865..0000000
--- a/components/vue-admin-perfect/src/router/modules/other.ts
+++ /dev/null
@@ -1,54 +0,0 @@
-/** When your routing table is too long, you can split it into small modules**/
-
-import Layout from "@/layout/index.vue";
-
-const othersRouter = {
- path: '/other',
- component: Layout,
- redirect: 'noRedirect',
- name: 'other',
- meta: {
- title: '扩展组件',
- icon: 'management'
- },
- children: [
- {
- path: 'print',
- component: () => import('@/views/other/print.vue'),
- name: 'print',
- meta: { title: '打印', noCache: true }
- },
- {
- path: 'cropper',
- component: () => import('@/views/other/cropper/index.vue'),
- name: 'cropper',
- meta: { title: '头像裁剪', noCache: true }
- },
- {
- path: 'grid-sorter',
- component: () => import('@/views/other/grid-sorter.vue'),
- name: 'grid-sorter',
- meta: { title: '卡片拖拽', noCache: true }
- },
- {
- path: 'splitpane',
- component: () => import('@/views/other/splitpane.vue'),
- name: 'splitpane',
- meta: { title: '分割模块', noCache: true }
- },
- {
- path: 'qrcode',
- component: () => import('@/views/other/qrcode.vue'),
- name: 'qrcode',
- meta: { title: '生成二维码', noCache: true }
- },
- {
- path: 'right-menu',
- component: () => import('@/views/other/right-menu.vue'),
- name: 'right-menu',
- meta: { title: '右键菜单', noCache: true }
- },
- ]
-}
-
-export default othersRouter
diff --git a/components/vue-admin-perfect/src/router/modules/permission.ts b/components/vue-admin-perfect/src/router/modules/permission.ts
deleted file mode 100644
index 1895787..0000000
--- a/components/vue-admin-perfect/src/router/modules/permission.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-/** When your routing table is too long, you can split it into small modules**/
-
-import Layout from "@/layout/index.vue";
-
-const permissionRouter = {
- path: '/permission',
- component: Layout,
- redirect: 'noRedirect',
- name: 'permission',
- meta: {
- title: '权限测试页',
- icon: 'trend-charts', roles:['other']
- },
- children: [
- {
- path: 'page',
- component: () => import('@/views/permission/page.vue'),
- name: 'page',
- meta: { title: '页面权限', noCache: true,icon: 'trend-charts', roles:['other'] }
- },
- ]
-}
-
-export default permissionRouter
diff --git a/components/vue-admin-perfect/src/shims-vue.d.ts b/components/vue-admin-perfect/src/shims-vue.d.ts
deleted file mode 100644
index 3804a43..0000000
--- a/components/vue-admin-perfect/src/shims-vue.d.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-/* eslint-disable */
-declare module '*.vue' {
- import type { DefineComponent } from 'vue'
- const component: DefineComponent<{}, {}, any>
- export default component
-}
diff --git a/components/vue-admin-perfect/src/store/getters.ts b/components/vue-admin-perfect/src/store/getters.ts
deleted file mode 100644
index 8e52917..0000000
--- a/components/vue-admin-perfect/src/store/getters.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-const getters = {
- permission_routes: state => state.permission.routes,
- isCollapse: state => state.app.isCollapse,
- userInfo: state => state.user.userInfo,
- roles: state => state.user.roles,
-
-}
-export default getters
diff --git a/components/vue-admin-perfect/src/store/modules/app.ts b/components/vue-admin-perfect/src/store/modules/app.ts
deleted file mode 100644
index 6d46ea5..0000000
--- a/components/vue-admin-perfect/src/store/modules/app.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-import {Module} from "vuex";
-
-const state = {
- isCollapse: true,
- withoutAnimation:false,
- device: 'desktop',
-}
-
-const mutations = {
- SET_COLLAPSE: (state, value) => {
- state.isCollapse = value
- state.withoutAnimation = false
- },
- // 获取设备
- TOGGLE_DEVICE: (state, device) => {
- state.device = device
-
- },
- // 点击遮罩层 关闭左边按钮
- CLOSE_SIDEBAR:(state, withoutAnimation) => {
- state.isCollapse = false
- state.withoutAnimation = withoutAnimation
- },
-}
-const actions = {
- toggleDevice({ commit }, device) {
- commit('TOGGLE_DEVICE', device)
- },
- closeSideBar({ commit }, { withoutAnimation }) {
- commit('CLOSE_SIDEBAR', withoutAnimation)
- },
-}
-
-
-const app:Module = {
- namespaced:true,
- state,
- mutations,
- actions
-}
-
-export default app
diff --git a/components/vue-admin-perfect/src/store/modules/permission.ts b/components/vue-admin-perfect/src/store/modules/permission.ts
deleted file mode 100644
index 3ab1062..0000000
--- a/components/vue-admin-perfect/src/store/modules/permission.ts
+++ /dev/null
@@ -1,84 +0,0 @@
-import {Module} from "vuex";
-
-import { asyncRoutes, constantRoutes } from '@/router/index'
-/**
- * 使用 meta.role 来确定当前用户是否具有权限
- * @param roles
- * @param route
- */
-function hasPermission(roles, route) {
- if (route.meta && route.meta.roles) {
- return roles.some(role => route.meta.roles.includes(role))
- } else {
- // return true
- return false
- }
-}
-
-/**
- * 通过递归过滤异步路由表
- * @param routes asyncRoutes
- * @param roles
- */
-export function filterAsyncRoutes(routes, roles) {
- const res = []
-
- routes.forEach(route => {
- const tmp = { ...route }
- if (hasPermission(roles, tmp)) {
- if (tmp.children) {
- tmp.children = filterAsyncRoutes(tmp.children, roles)
- }
- res.push(tmp)
- }
- })
-
-
- return res
-}
-
-
-const state = {
- routes: [],
- addRoutes: []
-}
-
-const mutations = {
- SET_ROUTES: (state, routes) => {
- state.addRoutes = routes
- state.routes = constantRoutes.concat(routes)
- },
- CLEAR_ROUTERS:(state, routes) => {
- state.addRoutes = []
- state.routes = []
- },
-}
-
-const actions = {
- generateRoutes({ commit }, roles) {
- return new Promise(resolve => {
- // 在这判断是否有权限,哪些角色拥有哪些权限
- let accessedRoutes
- if (roles&&roles.length&&!roles.includes('admin')) {
- accessedRoutes = filterAsyncRoutes(asyncRoutes, roles)
- } else {
- accessedRoutes = asyncRoutes || []
- }
-
- commit('SET_ROUTES', accessedRoutes)
- resolve(accessedRoutes)
- })
- },
- clearRoutes({commit}){
- commit('CLEAR_ROUTERS')
- }
-}
-
-const permission:Module = {
- namespaced:true,
- state,
- mutations,
- actions
-}
-
-export default permission
diff --git a/components/vue-admin-perfect/src/store/modules/setting.ts b/components/vue-admin-perfect/src/store/modules/setting.ts
deleted file mode 100644
index c13b781..0000000
--- a/components/vue-admin-perfect/src/store/modules/setting.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import {Module} from "vuex";
-
-const state = {
- isShowTag: true,
- mode: 'vertical',
-}
-
-const mutations = {
- SET_TAG: (state, value) => {
- state.isShowTag = value
- },
- SET_MODE: (state, value) => {
- state.mode = value
- },
-}
-const actions = {
- setTag({ commit }, value) {
- commit('SET_TAG', value)
- },
- setMode({ commit }, value) {
- commit('SET_MODE', value)
- },
-}
-
-
-const setting:Module = {
- namespaced:true,
- state,
- mutations,
- actions
-}
-
-export default setting
diff --git a/components/vue-admin-perfect/src/store/modules/tagsView.ts b/components/vue-admin-perfect/src/store/modules/tagsView.ts
deleted file mode 100644
index 9ae4021..0000000
--- a/components/vue-admin-perfect/src/store/modules/tagsView.ts
+++ /dev/null
@@ -1,96 +0,0 @@
-import {Module} from "vuex";
-
-const state = {
- visitedViews: [],
- cachedViews: []
-}
-
-const mutations = {
- ADD_VISITED_VIEW: (state, view) => {
- if (state.visitedViews.some(v => v.path === view.path)) return
- state.visitedViews.push(
- Object.assign({}, view, {
- title: view.meta.title || 'no-name'
- })
- )
- },
- REMOVE_VISITED_VIEW: (state, routes) => {
- state.visitedViews = state.visitedViews.filter(item=>!routes.includes(item.path))
- },
- CLEAR_VISITED_VIEW:(state, view) => {
- state.visitedViews = []
- state.cachedViews = []
- },
- ADD_CACHED_VIEW: (state, view) => {
- if (state.cachedViews.includes(view.name)) return
- if (!view.meta.noCache) {
- state.cachedViews.push(view.name)
- }
- },
- DEL_VISITED_VIEW: (state, view) => {
- for (const [i, v] of state.visitedViews.entries()) {
- if (v.path === view.path) {
- state.visitedViews.splice(i, 1)
- break
- }
- }
- },
- DEL_CACHED_VIEW: (state, view) => {
- const index = state.cachedViews.indexOf(view.name)
- index > -1 && state.cachedViews.splice(index, 1)
- },
-
-}
-
-const actions = {
- addView({ dispatch }, view) {
- dispatch('addVisitedView', view)
- // dispatch('addCachedView', view)
- },
- removeView({ commit }, views){
- return new Promise((resolve, reject) => {
- commit('REMOVE_VISITED_VIEW', views)
- resolve(null)
- })
-
- },
- addVisitedView({ commit }, view) {
- commit('ADD_VISITED_VIEW', view)
- },
- delView({ dispatch, state }, view) {
- return new Promise(resolve => {
- dispatch('delVisitedView', view)
- dispatch('delCachedView', view)
- resolve({
- visitedViews: [...state.visitedViews],
- cachedViews: [...state.cachedViews]
- })
- })
- },
- delVisitedView({ commit, state }, view) {
- return new Promise(resolve => {
- commit('DEL_VISITED_VIEW', view)
- resolve([...state.visitedViews])
- })
- },
- delCachedView({ commit, state }, view) {
- return new Promise(resolve => {
- commit('DEL_CACHED_VIEW', view)
- resolve([...state.cachedViews])
- })
- },
- clearVisitedView({ commit, state }){
- commit('CLEAR_VISITED_VIEW')
- }
-}
-
-
-
-const tagsView:Module = {
- namespaced:true,
- state,
- mutations,
- actions
-}
-
-export default tagsView
diff --git a/components/vue-admin-perfect/src/store/modules/user.ts b/components/vue-admin-perfect/src/store/modules/user.ts
deleted file mode 100644
index a208c33..0000000
--- a/components/vue-admin-perfect/src/store/modules/user.ts
+++ /dev/null
@@ -1,64 +0,0 @@
-import {Module} from "vuex";
-import { getToken, setToken, removeToken } from '@/utils/auth'
-const state = {
- token: getToken(),
- userInfo:localStorage.userInfo?JSON.parse(localStorage.userInfo):{},
- roles: localStorage.roles?JSON.parse(localStorage.roles):[],
-}
-
-const mutations = {
- SET_TOKEN: (state, token) => {
- state.token = token
- },
- SET_INFO: (state, userInfo) => {
- localStorage.userInfo = JSON.stringify(userInfo)
- state.userInfo = userInfo
- },
- SET_ROLES: (state, roles) => {
- localStorage.roles = JSON.stringify(roles)
- state.roles = roles
- }
-}
-
-
-const actions = {
- // 登录
- login({ commit,dispatch }, userInfo) {
- const { username, password } = userInfo
- return new Promise(async (resolve, reject) => {
- commit('SET_TOKEN', username)
-
- commit('SET_INFO', userInfo)
- await dispatch('getInfo', ['admin']) // 获取权限列表 默认就是超级管理员,因为没有进行接口请求 写死
- setToken(username)
- resolve(username)
- })
- },
- // 获取用户信息 ,如实际应用中 可以通过token通过请求接口在这里获取用户信息
- getInfo({ commit, state },roles) {
- return new Promise((resolve, reject) =>{
- commit('SET_ROLES', roles)
- resolve(roles)
- } )
- },
- // 退出
- logout({ commit, state, dispatch }) {
- return new Promise((resolve, reject) => {
- removeToken()
- commit('SET_TOKEN', '')
- commit('SET_INFO', '')
- commit('SET_ROLES', '')
- resolve(null)
- })
- },
-}
-
-
-const user:Module = {
- namespaced:true,
- state,
- actions,
- mutations,
-}
-
-export default user
diff --git a/components/vue-admin-perfect/src/styles/index.scss b/components/vue-admin-perfect/src/styles/index.scss
deleted file mode 100644
index 106046f..0000000
--- a/components/vue-admin-perfect/src/styles/index.scss
+++ /dev/null
@@ -1,3 +0,0 @@
-@import './variables.scss';
-@import './sidebar.scss';
-@import "./transition.scss";
diff --git a/components/vue-admin-perfect/src/styles/transition.scss b/components/vue-admin-perfect/src/styles/transition.scss
deleted file mode 100644
index c3fbb7c..0000000
--- a/components/vue-admin-perfect/src/styles/transition.scss
+++ /dev/null
@@ -1,62 +0,0 @@
-// global transition css
-
-/* fade */
-.fade-enter-active,
-.fade-leave-active {
- transition: opacity 0.28s;
-}
-
-.fade-enter,
-.fade-leave-active {
- opacity: 0;
-}
-//
-///* fade-transform */
-//.fade-transform-leave-active,
-//.fade-transform-enter-active {
-// transition: all .2s;
-//}
-//
-//.fade-transform-enter-from {
-// opacity: 0;
-// transform: translateX(-30px);
-//}
-//
-//.fade-transform-leave-to {
-// opacity: 0;
-// transform: translateX(30px);
-//}
-
-/* breadcrumb transition */
-.breadcrumb-enter-active,
-.breadcrumb-leave-active {
- transition: all .2s;
-}
-
-.breadcrumb-enter-from,
-.breadcrumb-leave-active {
- opacity: 0;
- //transform: translateX(20px);
-}
-
-.breadcrumb-move {
- transition: all .2s;
-}
-
-.breadcrumb-leave-active {
- position: absolute;
-}
-
-
-.fade-transform-leave-active,
-.fade-transform-enter-active {
- transition: all 0.2s cubic-bezier(0.645, 0.045, 0.355, 1), border 0s;
-}
-
-.fade-transform-enter-from {
- opacity: 0;
-}
-
-.fade-transform-leave-to {
- opacity: 0;
-}
diff --git a/components/vue-admin-perfect/src/styles/variables.scss b/components/vue-admin-perfect/src/styles/variables.scss
deleted file mode 100644
index a19c27c..0000000
--- a/components/vue-admin-perfect/src/styles/variables.scss
+++ /dev/null
@@ -1,35 +0,0 @@
-// base color
-$blue:#324157;
-$light-blue:#3A71A8;
-$red:#C03639;
-$pink: #E65D6E;
-$green: #30B08F;
-$tiffany: #4AB7BD;
-$yellow:#FEC171;
-$panGreen: #30B08F;
-
-// sidebar
-$menuText:#bfcbd9;
-$menuActiveText:#409EFF;
-$subMenuActiveText:#f4f4f5; // https://github.com/ElemeFE/element/issues/12951
-
-$menuBg:#304156;
-$menuHover:#263445;
-
-$subMenuBg:#1f2d3d;
-$subMenuHover:#001528;
-
-$sideBarWidth: 210px;
-
-// the :export directive is the magic sauce for webpack
-// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass
-:export {
- menuText: $menuText;
- menuActiveText: $menuActiveText;
- subMenuActiveText: $subMenuActiveText;
- menuBg: $menuBg;
- menuHover: $menuHover;
- subMenuBg: $subMenuBg;
- subMenuHover: $subMenuHover;
- sideBarWidth: $sideBarWidth;
-}
diff --git a/components/vue-admin-perfect/src/utils/auth.js b/components/vue-admin-perfect/src/utils/auth.js
deleted file mode 100644
index 3d5b86e..0000000
--- a/components/vue-admin-perfect/src/utils/auth.js
+++ /dev/null
@@ -1,14 +0,0 @@
-
-const TokenKey = 'zb-token'
-
-export function getToken() {
- return localStorage.TokenKey
-}
-
-export function setToken(token) {
- return localStorage.TokenKey = token
-}
-
-export function removeToken() {
- return localStorage.TokenKey =''
-}
diff --git a/components/vue-admin-perfect/src/utils/clipboard.ts b/components/vue-admin-perfect/src/utils/clipboard.ts
deleted file mode 100644
index 5343e9e..0000000
--- a/components/vue-admin-perfect/src/utils/clipboard.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import Clipboard from 'clipboard'
-import { ElMessage } from 'element-plus'
-
-
-function clipboardSuccess() {
- ElMessage({
- message: '复制成功',
- type: 'success',
- duration: 1500
- })
-}
-
-function clipboardError() {
- ElMessage({
- message: '复制失败',
- type: 'error'
- })
-}
-
-export default function handleClipboard(text, event) {
- const clipboard:any = new Clipboard(event.target, {
- text: () => text
- })
- clipboard.on('success', () => {
- clipboardSuccess()
- clipboard.destroy()
- })
- clipboard.on('error', () => {
- clipboardError()
- clipboard.destroy()
- })
- clipboard.onClick(event)
-}
diff --git a/components/vue-admin-perfect/src/utils/emojis.js b/components/vue-admin-perfect/src/utils/emojis.js
deleted file mode 100644
index 3fafa63..0000000
--- a/components/vue-admin-perfect/src/utils/emojis.js
+++ /dev/null
@@ -1,12 +0,0 @@
-export default {
- imgs: ['爱你',
- '爱情', '爱心', '傲慢',
- '白眼', '抱拳', '鄙视',
- '闭嘴', '便便', '擦汗',
- '菜刀', '差劲', '呲牙',
- '大哭', '蛋糕', '刀',
- '得意', '凋谢', '发呆', 'NO', 'OK',
- '发抖', '发怒', '饭', '飞吻', '奋斗',
- '疯了', '尴尬', '勾引', '鼓掌', '哈欠',
- ]
-}
diff --git a/components/vue-admin-perfect/src/utils/exprotExcel.ts b/components/vue-admin-perfect/src/utils/exprotExcel.ts
deleted file mode 100644
index dff5db5..0000000
--- a/components/vue-admin-perfect/src/utils/exprotExcel.ts
+++ /dev/null
@@ -1,280 +0,0 @@
-const ExcelJS = require("exceljs");
-
-const autoWidthAction = (val,width=10)=>{
- if (val == null) {
- width = 10;
- } else if (val.toString().charCodeAt(0) > 255) {
- /*if chinese*/
- width = val.toString().length * 2;
- } else {
- width = val.toString().length;
- }
- return width
-}
-export const exportExcel = async ({column,data,filename,autoWidth,format})=>{
- // 创建excel
- const workbook = new ExcelJS.Workbook();
- // 设置信息
- workbook.creator = "Me";
- workbook.title = filename;
- workbook.created = new Date();
- workbook.modified = new Date();
- // 创建工作表
- const worksheet = workbook.addWorksheet(filename);
- // 设置列名
- let columnsName = [];
- column.forEach((item,index)=>{
- let obj = {
- header: item.label, key:item.name, width: null
- }
- if(autoWidth){
- let maxArr = [autoWidthAction(item.label)]
- data.forEach(ite=>{
- let str = ite[item.name] ||''
- if(str){
- maxArr.push(autoWidthAction(str))
- }
- })
- obj.width = Math.max(...maxArr)+5
- }
- // 设置列名、键和宽度
- columnsName.push(obj);
- })
- worksheet.columns = columnsName;
- // 添加行
- worksheet.addRows(data);
- // 写入文件
-
- const uint8Array =
- format === "xlsx"
- ? await workbook.xlsx.writeBuffer()
- : await workbook.csv.writeBuffer();
-
- const blob = new Blob([uint8Array], { type: "application/octet-binary" });
- if (window.navigator.msSaveOrOpenBlob) {
- // msSaveOrOpenBlob方法返回boolean值
- navigator.msSaveBlob(blob, filename + `.${format}`);
- // 本地保存
- } else {
- const link = document.createElement("a"); // a标签下载
- link.href = window.URL.createObjectURL(blob); // href属性指定下载链接
- link.download = filename + `.${format}`; // dowload属性指定文件名
- link.click(); // click()事件触发下载
- window.URL.revokeObjectURL(link.href); // 释放内存
- }
-}
-export function addCellStyle(cell, attr) {
- const {color, fontSize, horizontal, bold} = attr || {};
- // eslint-disable-next-line no-param-reassign
- cell.fill = {
- type: 'pattern',
- pattern: 'solid',
- fgColor: {argb: color},
- };
- // eslint-disable-next-line no-param-reassign
- cell.font = {
- bold: bold ?? true,
- size: fontSize ?? 11,
- // italic: true,
- // name: '微软雅黑',
- color: {argb: 'ff0000'},
- };
- // eslint-disable-next-line no-param-reassign
- cell.alignment = {vertical: 'middle', wrapText: true, horizontal: horizontal ?? 'left'};
-}
-
-export const exportStyleExcel =async ({column,data,filename,autoWidth,format})=>{
- // 创建excel
- const workbook = new ExcelJS.Workbook();
- // 设置信息
- workbook.creator = "Me";
- workbook.title = filename;
- workbook.created = new Date();
- workbook.modified = new Date();
- // 创建工作表
- const worksheet = workbook.addWorksheet(filename);
- // 设置列名
- let columnsName = [];
- column.forEach((item,index)=>{
- let obj = {
- header: item.label, key:item.name, width: null
- }
- if(autoWidth){
- let maxArr = [autoWidthAction(item.label)]
- data.forEach(ite=>{
- let str = ite[item.name] ||''
- if(str){
- maxArr.push(autoWidthAction(str))
- }
- })
- obj.width = Math.max(...maxArr)+5
- }
- // 设置列名、键和宽度
- columnsName.push(obj);
- })
- worksheet.columns = columnsName;
- // 添加行
- worksheet.addRows(data);
- // 写入文件
-
- // 设置表头颜色
- // 给表头添加背景色。因为表头是第一行,可以通过 getRow(1) 来获取表头这一行
- const headerRow = worksheet.getRow(1);
- // 通过 cell 设置样式,更精准
- headerRow.eachCell((cell) => addCellStyle(cell, {color: 'dff8ff', fontSize: 12, horizontal: 'left'}));
-
- const uint8Array =
- format === "xlsx"
- ? await workbook.xlsx.writeBuffer()
- : await workbook.csv.writeBuffer();
-
- const blob = new Blob([uint8Array], { type: "application/octet-binary" });
- if (window.navigator.msSaveOrOpenBlob) {
- // msSaveOrOpenBlob方法返回boolean值
- navigator.msSaveBlob(blob, filename + `.${format}`);
- // 本地保存
- } else {
- const link = document.createElement("a"); // a标签下载
- link.href = window.URL.createObjectURL(blob); // href属性指定下载链接
- link.download = filename + `.${format}`; // dowload属性指定文件名
- link.click(); // click()事件触发下载
- window.URL.revokeObjectURL(link.href); // 释放内存
- }
-}
-
-
-
-
-// 默认的列宽
-export const DEFAULT_COLUMN_WIDTH = 20;
-
-function getColumnNumber(width: number) {
- // 需要的列数,四舍五入
- return Math.round(width / DEFAULT_COLUMN_WIDTH);
-}
-
-
-function addData(worksheet,headerKeys,headers,data){
-
-}
-
-export const exportMultiHeaderExcel = ({column,data,filename,autoWidth})=>{
- // 创建excel
- const workbook = new ExcelJS.Workbook();
- // 创建工作表
- let sheet = workbook.addWorksheet("sheet1");
-
- // 添加表头
- sheet.getRow(1).values = ["序号", "日期","地址" ,"配送消息" ,,, ];
- sheet.getRow(2).values = [
- "序号",
- "日期",
- "地址",
- "省份",
- "城市",
- "邮编"
- ];
- let headers = [];
- column.forEach((item,index)=>{
- if(item.children){
- item.children.forEach(itemChild=>{
- let obj = {
- key:itemChild.name, width: null
- }
- let maxArr = [autoWidthAction(itemChild.label)]
- data.forEach(ite=>{
- let str = ite[itemChild.name] ||''
- if(str){
- maxArr.push(autoWidthAction(str))
- }
- })
- obj.width = Math.max(...maxArr)+5
- // 设置列名、键和宽度
- headers.push(obj);
- })
-
- }else {
- let obj = {
- key:item.name, width: null
- }
- let maxArr = [autoWidthAction(item.label)]
- data.forEach(ite=>{
- let str = ite[item.name] ||''
- if(str){
- maxArr.push(autoWidthAction(str))
- }
- })
- obj.width = Math.max(...maxArr)+5
- // 设置列名、键和宽度
- headers.push(obj);
- }
- })
- sheet.columns = headers;
- sheet.addRows(data);
-
- // 合并单元格
- sheet.mergeCells(`D1:F1`);
- sheet.mergeCells("A1:A2");
- sheet.mergeCells("B1:B2");
- sheet.mergeCells("C1:C2");
- // 写入文件
- workbook.xlsx.writeBuffer().then((data) => {
- const blob = new Blob([data, { type: "application/vnd.ms-excel" }]);
- if (window.navigator.msSaveOrOpenBlob) {
- // msSaveOrOpenBlob方法返回boolean值
- navigator.msSaveBlob(blob, filename + ".xlsx");
- // 本地保存
- } else {
- const link = document.createElement("a"); // a标签下载
- link.href = window.URL.createObjectURL(blob); // href属性指定下载链接
- link.download = filename + ".xlsx"; // dowload属性指定文件名
- link.click(); // click()事件触发下载
- window.URL.revokeObjectURL(link.href); // 释放内存
- }
- });
-}
-
-
-function mergeColumnCell(headers, rowHeader1, rowHeader2, nameRow1, nameRow2, worksheet){
- // 当前 index 的指针
- let pointer = -1;
- nameRow1.forEach((name, index) => {
- // 当 index 小于指针时,说明这一列已经被合并过了,不能再合并
- if (index <= pointer) return;
- // 是否应该列合并
- const shouldVerticalMerge = name === nameRow2[index];
-
-
- // 是否应该行合并
- const shouldHorizontalMerge = index !== nameRow1.lastIndexOf(name);
-
- console.log('==',name,nameRow2[index],index,nameRow1.lastIndexOf(name),shouldVerticalMerge,shouldHorizontalMerge)
-
- pointer = nameRow1.lastIndexOf(name);
- if (shouldVerticalMerge && shouldHorizontalMerge) {
- // 两个方向都合并
- worksheet.mergeCells(
- Number(rowHeader1.number),
- index + 1,
- Number(rowHeader2.number),
- nameRow1.lastIndexOf(name) + 1,
- );
- console.log('==')
- } else if (shouldVerticalMerge && !shouldHorizontalMerge) {
- // 只在垂直方向上同一列的两行合并
- worksheet.mergeCells(Number(rowHeader1.number), index + 1, Number(rowHeader2.number), index + 1);
- } else if (!shouldVerticalMerge && shouldHorizontalMerge) {
- // 只有水平方向同一行的多列合并
- worksheet.mergeCells(
- Number(rowHeader1.number),
- index + 1,
- Number(rowHeader1.number),
- nameRow1.lastIndexOf(name) + 1,
- );
- // eslint-disable-next-line no-param-reassign
- const cell = rowHeader1.getCell(index + 1);
- cell.alignment = { vertical: 'middle', horizontal: 'center', wrapText: true };
- }
- });
-
-}
diff --git a/components/vue-admin-perfect/src/utils/index.js b/components/vue-admin-perfect/src/utils/index.js
deleted file mode 100644
index 632a4b2..0000000
--- a/components/vue-admin-perfect/src/utils/index.js
+++ /dev/null
@@ -1,425 +0,0 @@
-/**
- * Created by PanJiaChen on 16/11/18.
- */
-
-/**
- * Parse the time to string
- * @param {(Object|string|number)} time
- * @param {string} cFormat
- * @returns {string | null}
- */
-export function parseTime(time, cFormat) {
- if (arguments.length === 0 || !time) {
- return null
- }
- const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
- let date
- if (typeof time === 'object') {
- date = time
- } else {
- if ((typeof time === 'string')) {
- if ((/^[0-9]+$/.test(time))) {
- // support "1548221490638"
- time = parseInt(time)
- } else {
- // support safari
- // https://stackoverflow.com/questions/4310953/invalid-date-in-safari
- time = time.replace(new RegExp(/-/gm), '/')
- }
- }
-
- if ((typeof time === 'number') && (time.toString().length === 10)) {
- time = time * 1000
- }
- date = new Date(time)
- }
- const formatObj = {
- y: date.getFullYear(),
- m: date.getMonth() + 1,
- d: date.getDate(),
- h: date.getHours(),
- i: date.getMinutes(),
- s: date.getSeconds(),
- a: date.getDay()
- }
- const time_str = format.replace(/{([ymdhisa])+}/g, (result, key) => {
- const value = formatObj[key]
- // Note: getDay() returns 0 on Sunday
- if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value ] }
- return value.toString().padStart(2, '0')
- })
- return time_str
-}
-
-/**
- * @param {number} time
- * @param {string} option
- * @returns {string}
- */
-export function formatTime(time, option) {
- if (('' + time).length === 10) {
- time = parseInt(time) * 1000
- } else {
- time = +time
- }
- const d = new Date(time)
- const now = Date.now()
-
- const diff = (now - d) / 1000
-
- if (diff < 30) {
- return '刚刚'
- } else if (diff < 3600) {
- // less 1 hour
- return Math.ceil(diff / 60) + '分钟前'
- } else if (diff < 3600 * 24) {
- return Math.ceil(diff / 3600) + '小时前'
- } else if (diff < 3600 * 24 * 2) {
- return '1天前'
- }
- if (option) {
- return parseTime(time, option)
- } else {
- return (
- d.getMonth() +
- 1 +
- '月' +
- d.getDate() +
- '日' +
- d.getHours() +
- '时' +
- d.getMinutes() +
- '分'
- )
- }
-}
-
-/**
- * @param {string} url
- * @returns {Object}
- */
-export function getQueryObject(url) {
- url = url == null ? window.location.href : url
- const search = url.substring(url.lastIndexOf('?') + 1)
- const obj = {}
- const reg = /([^?&=]+)=([^?&=]*)/g
- search.replace(reg, (rs, $1, $2) => {
- const name = decodeURIComponent($1)
- let val = decodeURIComponent($2)
- val = String(val)
- obj[name] = val
- return rs
- })
- return obj
-}
-
-/**
- * @param {string} input value
- * @returns {number} output value
- */
-export function byteLength(str) {
- // returns the byte length of an utf8 string
- let s = str.length
- for (var i = str.length - 1; i >= 0; i--) {
- const code = str.charCodeAt(i)
- if (code > 0x7f && code <= 0x7ff) s++
- else if (code > 0x7ff && code <= 0xffff) s += 2
- if (code >= 0xDC00 && code <= 0xDFFF) i--
- }
- return s
-}
-
-/**
- * @param {Array} actual
- * @returns {Array}
- */
-export function cleanArray(actual) {
- const newArray = []
- for (let i = 0; i < actual.length; i++) {
- if (actual[i]) {
- newArray.push(actual[i])
- }
- }
- return newArray
-}
-
-/**
- * @param {Object} json
- * @returns {Array}
- */
-export function param(json) {
- if (!json) return ''
- return cleanArray(
- Object.keys(json).map(key => {
- if (json[key] === undefined) return ''
- return encodeURIComponent(key) + '=' + encodeURIComponent(json[key])
- })
- ).join('&')
-}
-
-/**
- * @param {string} url
- * @returns {Object}
- */
-export function param2Obj(url) {
- const search = decodeURIComponent(url.split('?')[1]).replace(/\+/g, ' ')
- if (!search) {
- return {}
- }
- const obj = {}
- const searchArr = search.split('&')
- searchArr.forEach(v => {
- const index = v.indexOf('=')
- if (index !== -1) {
- const name = v.substring(0, index)
- const val = v.substring(index + 1, v.length)
- obj[name] = val
- }
- })
- return obj
-}
-
-/**
- * @param {string} val
- * @returns {string}
- */
-export function html2Text(val) {
- const div = document.createElement('div')
- div.innerHTML = val
- return div.textContent || div.innerText
-}
-
-/**
- * Merges two objects, giving the last one precedence
- * @param {Object} target
- * @param {(Object|Array)} source
- * @returns {Object}
- */
-export function objectMerge(target, source) {
- if (typeof target !== 'object') {
- target = {}
- }
- if (Array.isArray(source)) {
- return source.slice()
- }
- Object.keys(source).forEach(property => {
- const sourceProperty = source[property]
- if (typeof sourceProperty === 'object') {
- target[property] = objectMerge(target[property], sourceProperty)
- } else {
- target[property] = sourceProperty
- }
- })
- return target
-}
-
-/**
- * @param {HTMLElement} element
- * @param {string} className
- */
-export function toggleClass(element, className) {
- if (!element || !className) {
- return
- }
- let classString = element.className
- const nameIndex = classString.indexOf(className)
- if (nameIndex === -1) {
- classString += '' + className
- } else {
- classString =
- classString.substr(0, nameIndex) +
- classString.substr(nameIndex + className.length)
- }
- element.className = classString
-}
-
-/**
- * @param {string} type
- * @returns {Date}
- */
-export function getTime(type) {
- if (type === 'start') {
- return new Date().getTime() - 3600 * 1000 * 24 * 90
- } else {
- return new Date(new Date().toDateString())
- }
-}
-
-/**
- * @param {Function} func
- * @param {number} wait
- * @param {boolean} immediate
- * @return {*}
- */
-export function debounce(func, wait, immediate) {
- let timeout, args, context, timestamp, result
-
- const later = function() {
- // 据上一次触发时间间隔
- const last = +new Date() - timestamp
-
- // 上次被包装函数被调用时间间隔 last 小于设定时间间隔 wait
- if (last < wait && last > 0) {
- timeout = setTimeout(later, wait - last)
- } else {
- timeout = null
- // 如果设定为immediate===true,因为开始边界已经调用过了此处无需调用
- if (!immediate) {
- result = func.apply(context, args)
- if (!timeout) context = args = null
- }
- }
- }
-
- return function(...args) {
- context = this
- timestamp = +new Date()
- const callNow = immediate && !timeout
- // 如果延时不存在,重新设定延时
- if (!timeout) timeout = setTimeout(later, wait)
- if (callNow) {
- result = func.apply(context, args)
- context = args = null
- }
-
- return result
- }
-}
-
-/**
- * This is just a simple version of deep copy
- * Has a lot of edge cases bug
- * If you want to use a perfect deep copy, use lodash's _.cloneDeep
- * @param {Object} source
- * @returns {Object}
- */
-export function deepClone(source) {
- if (!source && typeof source !== 'object') {
- throw new Error('error arguments', 'deepClone')
- }
- const targetObj = source.constructor === Array ? [] : {}
- Object.keys(source).forEach(keys => {
- if (source[keys] && typeof source[keys] === 'object') {
- targetObj[keys] = deepClone(source[keys])
- } else {
- targetObj[keys] = source[keys]
- }
- })
- return targetObj
-}
-
-/**
- * @param {Array} arr
- * @returns {Array}
- */
-export function uniqueArr(arr) {
- return Array.from(new Set(arr))
-}
-
-/**
- * @returns {string}
- */
-export function createUniqueString() {
- const timestamp = +new Date() + ''
- const randomNum = parseInt((1 + Math.random()) * 65536) + ''
- return (+(randomNum + timestamp)).toString(32)
-}
-
-/**
- * Check if an element has a class
- * @param {HTMLElement} elm
- * @param {string} cls
- * @returns {boolean}
- */
-export function hasClass(ele, cls) {
- return !!ele.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'))
-}
-
-/**
- * Add class to element
- * @param {HTMLElement} elm
- * @param {string} cls
- */
-export function addClass(ele, cls) {
- if (!hasClass(ele, cls)) ele.className += ' ' + cls
-}
-
-/**
- * Remove class from element
- * @param {HTMLElement} elm
- * @param {string} cls
- */
-export function removeClass(ele, cls) {
- if (hasClass(ele, cls)) {
- const reg = new RegExp('(\\s|^)' + cls + '(\\s|$)')
- ele.className = ele.className.replace(reg, ' ')
- }
-}
-
-
-export function getColor() {
- var str = '#';
- var arr = ['1', '2', '3', '4', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];
- for (var i = 0; i < 6; i++) {
- var num = parseInt(Math.random() * 16);
- str += arr[num];
- }
- return str;
-}
-// 检查给定的值是否是数组
-export const isArray = function(value) {
- return objToString.call(value) === "[object Array]";
-};
-var funProto = Function.prototype;
-var objProto = Object.prototype;
-
-var getPrototypeOf = Object.getPrototypeOf;
-
-var objToString = objProto.toString;
-var hasOwnProperty = objProto.hasOwnProperty;
-var funToString = funProto.toString;
-// 检查给定的值是否是字符串
-export const isString = function(value) {
- return objToString.call(value) === "[object String]";
-};
-// 检查给定的值是否是纯对象,纯对象是指通过 {} 或 new Object() 声明的对象
-export const isPlainObject = function(value) {
- if (!value || objToString.call(value) !== "[object Object]") {
- return false;
- }
-
- var prototype = getPrototypeOf(value);
-
- if (prototype === null) {
- return true;
- }
-
- var constructor = hasOwnProperty.call(prototype, "constructor") && prototype.constructor;
-
- return typeof constructor === "function" && funToString.call(constructor) === funToString.call(Object);
-};
-
-// // 深度克隆 array 数组或 json 对象,返回克隆后的副本
-export const deepObjClone = function(obj){
- let weakMap = new WeakMap()
- function clone (obj){
- if(obj==null){return obj}
- if(obj instanceof Date){ return new Date(obj) }
- if(obj instanceof RegExp){ return new RegExp(obj)}
- if(typeof obj !== 'object') return obj
-
- if(weakMap.get(obj)){
- return weakMap.get(obj)
- }
- var copy = new obj.constructor
- weakMap.set(obj,copy)
- for(var key in obj){
- if(Object.prototype.hasOwnProperty.call(obj, key)){
- var value = obj[key];
- copy[key] = clone(value);
- }
- }
- return copy;
- }
- return clone (obj)
-};
diff --git a/components/vue-admin-perfect/src/utils/validate.js b/components/vue-admin-perfect/src/utils/validate.js
deleted file mode 100644
index 6b3ac41..0000000
--- a/components/vue-admin-perfect/src/utils/validate.js
+++ /dev/null
@@ -1,87 +0,0 @@
-/**
- * Created by PanJiaChen on 16/11/18.
- */
-
-/**
- * @param {string} path
- * @returns {Boolean}
- */
-export function isExternal(path) {
- return /^(https?:|mailto:|tel:)/.test(path)
-}
-
-/**
- * @param {string} str
- * @returns {Boolean}
- */
-export function validUsername(str) {
- const valid_map = ['admin', 'editor']
- return valid_map.indexOf(str.trim()) >= 0
-}
-
-/**
- * @param {string} url
- * @returns {Boolean}
- */
-export function validURL(url) {
- const reg = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
- return reg.test(url)
-}
-
-/**
- * @param {string} str
- * @returns {Boolean}
- */
-export function validLowerCase(str) {
- const reg = /^[a-z]+$/
- return reg.test(str)
-}
-
-/**
- * @param {string} str
- * @returns {Boolean}
- */
-export function validUpperCase(str) {
- const reg = /^[A-Z]+$/
- return reg.test(str)
-}
-
-/**
- * @param {string} str
- * @returns {Boolean}
- */
-export function validAlphabets(str) {
- const reg = /^[A-Za-z]+$/
- return reg.test(str)
-}
-
-/**
- * @param {string} email
- * @returns {Boolean}
- */
-export function validEmail(email) {
- const reg = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
- return reg.test(email)
-}
-
-/**
- * @param {string} str
- * @returns {Boolean}
- */
-export function isString(str) {
- if (typeof str === 'string' || str instanceof String) {
- return true
- }
- return false
-}
-
-/**
- * @param {Array} arg
- * @returns {Boolean}
- */
-export function isArray(arg) {
- if (typeof Array.isArray === 'undefined') {
- return Object.prototype.toString.call(arg) === '[object Array]'
- }
- return Array.isArray(arg)
-}
diff --git a/components/vue-admin-perfect/src/views/About.vue b/components/vue-admin-perfect/src/views/About.vue
deleted file mode 100644
index 3fa2807..0000000
--- a/components/vue-admin-perfect/src/views/About.vue
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
This is an about page
-
-
diff --git a/components/vue-admin-perfect/src/views/Home.vue b/components/vue-admin-perfect/src/views/Home.vue
deleted file mode 100644
index 50d8a19..0000000
--- a/components/vue-admin-perfect/src/views/Home.vue
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/views/charts/components/simple/bar.vue b/components/vue-admin-perfect/src/views/charts/components/simple/bar.vue
deleted file mode 100644
index 1638bf5..0000000
--- a/components/vue-admin-perfect/src/views/charts/components/simple/bar.vue
+++ /dev/null
@@ -1,66 +0,0 @@
-
-
-
-
diff --git a/components/vue-admin-perfect/src/views/chat/components/u-chartBox/chat.js b/components/vue-admin-perfect/src/views/chat/components/u-chartBox/chat.js
deleted file mode 100644
index 4c9404d..0000000
--- a/components/vue-admin-perfect/src/views/chat/components/u-chartBox/chat.js
+++ /dev/null
@@ -1,15 +0,0 @@
-export const chatData = [
- {
- is_self:0,
- created_at:'2022-03-11',
- content:'hello 你好呀!',
- id:1
- },
- {
- is_self:1,
- created_at:'2022-03-11',
- content:'hello 你好呀!',
- id:2,
- type:1, // 文字
- }
-]
diff --git a/components/vue-admin-perfect/src/views/chat/components/u-chartBox/index.vue b/components/vue-admin-perfect/src/views/chat/components/u-chartBox/index.vue
deleted file mode 100644
index 659b711..0000000
--- a/components/vue-admin-perfect/src/views/chat/components/u-chartBox/index.vue
+++ /dev/null
@@ -1,465 +0,0 @@
-
-
-
-
-
-
{{ item.created_at }} 林峰
-
-
-
-
-
-
-
-
-
{{ item.created_at }} 林峰
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/views/chat/components/u-toolbar/index.vue b/components/vue-admin-perfect/src/views/chat/components/u-toolbar/index.vue
deleted file mode 100644
index b273c99..0000000
--- a/components/vue-admin-perfect/src/views/chat/components/u-toolbar/index.vue
+++ /dev/null
@@ -1,159 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/views/chat/index.vue b/components/vue-admin-perfect/src/views/chat/index.vue
deleted file mode 100644
index 1502e4c..0000000
--- a/components/vue-admin-perfect/src/views/chat/index.vue
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
聊天内容框,功能有发送emoji表情,上传图片,发送图片,内容滚动,发送文字
-
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/views/clipboard/index.vue b/components/vue-admin-perfect/src/views/clipboard/index.vue
deleted file mode 100644
index 28c7f53..0000000
--- a/components/vue-admin-perfect/src/views/clipboard/index.vue
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
- 复制
-
-
-
-
\ No newline at end of file
diff --git a/components/vue-admin-perfect/src/views/components-demo/button.vue b/components/vue-admin-perfect/src/views/components-demo/button.vue
deleted file mode 100644
index a38239a..0000000
--- a/components/vue-admin-perfect/src/views/components-demo/button.vue
+++ /dev/null
@@ -1,194 +0,0 @@
-
-
-
-
-
-
-
- Default
- Primary
- Success
- Info
- Warning
- Danger
- 中文
- Plain
- Primary
- Success
- Info
- Warning
- Danger
- Round
- Primary
- Success
- Info
- Warning
- Danger
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Default
- Primary
- Success
- Info
- Warning
- Danger
- Plain
- Primary
- Success
- Info
- Warning
- Danger
-
-
-
-
-
-
-
-
- 文字按钮
- 文字按钮
-
-
-
-
-
-
-
-
-
-
-
- Search
-
- Upload
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Loading
-
Loading
-
-
-
-
- Loading
-
-
-
-
-
-
-
-
-
-
- Default
- Plain
-
- Disabled
- Disabled Plain
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/views/components-demo/editor.vue b/components/vue-admin-perfect/src/views/components-demo/editor.vue
deleted file mode 100644
index 6f5ba47..0000000
--- a/components/vue-admin-perfect/src/views/components-demo/editor.vue
+++ /dev/null
@@ -1,75 +0,0 @@
-
-
-
-
-
-
-
-
-
- 保存
-
- 取消
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/views/components-demo/flow-chart.vue b/components/vue-admin-perfect/src/views/components-demo/flow-chart.vue
deleted file mode 100644
index 808f81e..0000000
--- a/components/vue-admin-perfect/src/views/components-demo/flow-chart.vue
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/views/components-demo/form.vue b/components/vue-admin-perfect/src/views/components-demo/form.vue
deleted file mode 100644
index 4762f53..0000000
--- a/components/vue-admin-perfect/src/views/components-demo/form.vue
+++ /dev/null
@@ -1,163 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 立即创建
- 重置
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/views/components-demo/form/u-upload.vue b/components/vue-admin-perfect/src/views/components-demo/form/u-upload.vue
deleted file mode 100644
index c26446f..0000000
--- a/components/vue-admin-perfect/src/views/components-demo/form/u-upload.vue
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/views/components-demo/mark-down.vue b/components/vue-admin-perfect/src/views/components-demo/mark-down.vue
deleted file mode 100644
index b89ae78..0000000
--- a/components/vue-admin-perfect/src/views/components-demo/mark-down.vue
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/views/components-demo/scroll.vue b/components/vue-admin-perfect/src/views/components-demo/scroll.vue
deleted file mode 100644
index eaa314d..0000000
--- a/components/vue-admin-perfect/src/views/components-demo/scroll.vue
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/views/components-demo/split-pane.vue b/components/vue-admin-perfect/src/views/components-demo/split-pane.vue
deleted file mode 100644
index 2ac6cce..0000000
--- a/components/vue-admin-perfect/src/views/components-demo/split-pane.vue
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/views/components-demo/upload.vue b/components/vue-admin-perfect/src/views/components-demo/upload.vue
deleted file mode 100644
index 833f057..0000000
--- a/components/vue-admin-perfect/src/views/components-demo/upload.vue
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/components/vue-admin-perfect/src/views/components-demo/watermark.vue b/components/vue-admin-perfect/src/views/components-demo/watermark.vue
deleted file mode 100644
index e69de29..0000000
diff --git a/components/vue-admin-perfect/src/views/dashboard/index.vue b/components/vue-admin-perfect/src/views/dashboard/index.vue
deleted file mode 100644
index 3d43e2c..0000000
--- a/components/vue-admin-perfect/src/views/dashboard/index.vue
+++ /dev/null
@@ -1,69 +0,0 @@
-
-
- expand
- collapse
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/views/error/401.vue b/components/vue-admin-perfect/src/views/error/401.vue
deleted file mode 100644
index c230e64..0000000
--- a/components/vue-admin-perfect/src/views/error/401.vue
+++ /dev/null
@@ -1,70 +0,0 @@
-
-
-
-
-
-
-
-
-
抱歉!
-
你没有权限去该页面...
-
返回首页
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/components/vue-admin-perfect/src/views/error/404.vue b/components/vue-admin-perfect/src/views/error/404.vue
deleted file mode 100644
index 9e4de6e..0000000
--- a/components/vue-admin-perfect/src/views/error/404.vue
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
-
-
-
-
-
-
-
抱歉!
-
当前页面不存在...
-
请检查您输入的URL是否正确,或单击下面的按钮返回主页。
-
返回首页
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/components/vue-admin-perfect/src/views/excel/export-excel.vue b/components/vue-admin-perfect/src/views/excel/export-excel.vue
deleted file mode 100644
index f8a89ae..0000000
--- a/components/vue-admin-perfect/src/views/excel/export-excel.vue
+++ /dev/null
@@ -1,103 +0,0 @@
-
-
-
-
-
- 导出格式
-
-
-
-
-
-
- 导出 Excel
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/views/excel/export-merge-header.vue b/components/vue-admin-perfect/src/views/excel/export-merge-header.vue
deleted file mode 100644
index b6d80d4..0000000
--- a/components/vue-admin-perfect/src/views/excel/export-merge-header.vue
+++ /dev/null
@@ -1,77 +0,0 @@
-
-
-
-
-
-
- 导出 Excel
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/views/excel/export-selected-excel.vue b/components/vue-admin-perfect/src/views/excel/export-selected-excel.vue
deleted file mode 100644
index 8b13789..0000000
--- a/components/vue-admin-perfect/src/views/excel/export-selected-excel.vue
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/components/vue-admin-perfect/src/views/excel/export-style-excel.vue b/components/vue-admin-perfect/src/views/excel/export-style-excel.vue
deleted file mode 100644
index 4a39758..0000000
--- a/components/vue-admin-perfect/src/views/excel/export-style-excel.vue
+++ /dev/null
@@ -1,96 +0,0 @@
-
-
-
-
-
- 导出样式 Excel
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/views/excel/upload-excel.vue b/components/vue-admin-perfect/src/views/excel/upload-excel.vue
deleted file mode 100644
index 0a60bd3..0000000
--- a/components/vue-admin-perfect/src/views/excel/upload-excel.vue
+++ /dev/null
@@ -1,93 +0,0 @@
-
-
-
-
-
- 拖拽上传 或者点击上传 Excel
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/views/login/index.vue b/components/vue-admin-perfect/src/views/login/index.vue
deleted file mode 100644
index 0e43472..0000000
--- a/components/vue-admin-perfect/src/views/login/index.vue
+++ /dev/null
@@ -1,162 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
登录系统-密码账号随便填 admin admin
-
-
-
-
-
-
-
-
-
-
- 登录
-
-
-
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/views/other/count.vue b/components/vue-admin-perfect/src/views/other/count.vue
deleted file mode 100644
index b350b02..0000000
--- a/components/vue-admin-perfect/src/views/other/count.vue
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/components/vue-admin-perfect/src/views/other/cropper/cropper.vue b/components/vue-admin-perfect/src/views/other/cropper/cropper.vue
deleted file mode 100644
index a6616a6..0000000
--- a/components/vue-admin-perfect/src/views/other/cropper/cropper.vue
+++ /dev/null
@@ -1,342 +0,0 @@
-
-
-
-
-
-
-
- Preview
-
- Cropped Image
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/views/other/cropper/cropper1.vue b/components/vue-admin-perfect/src/views/other/cropper/cropper1.vue
deleted file mode 100644
index fe2d32c..0000000
--- a/components/vue-admin-perfect/src/views/other/cropper/cropper1.vue
+++ /dev/null
@@ -1,186 +0,0 @@
-
-
-
-
-
-
-
- 放大
- 缩小
- 向左移动
- 向右移动
- 向上移动
- 向下移动
- 旋转90度
- 旋转-90度
- 翻转 X
- 翻转 Y
- 重置
- 获取结果
-
- 选择上传图片
-
-
-
-
-
-
-
-
得到结果
-
-
-
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/views/other/cropper/cropper2.vue b/components/vue-admin-perfect/src/views/other/cropper/cropper2.vue
deleted file mode 100644
index e9b9dff..0000000
--- a/components/vue-admin-perfect/src/views/other/cropper/cropper2.vue
+++ /dev/null
@@ -1,223 +0,0 @@
-
-
-
-
-
-
-
-
放大
-
缩小
-
向左旋转
-
向右旋转
-
-
-
-
-
-
-
-
-
-
-
重置
-
获取结果
-
下载图片
-
- 选择上传图片
-
-
-
-
-
-
实时预览
-
-
-
-
-
-
获取结果
-
-
-
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/views/other/cropper/index.vue b/components/vue-admin-perfect/src/views/other/cropper/index.vue
deleted file mode 100644
index ca800d9..0000000
--- a/components/vue-admin-perfect/src/views/other/cropper/index.vue
+++ /dev/null
@@ -1,206 +0,0 @@
-
-
-
-
-
-
-
放大
-
缩小
-
向左旋转
-
向右旋转
-
清除
-
获取结果
-
下载图片
-
- 选择上传图片
-
-
-
-
-
实时预览
-
-
-
-
-
-
获取结果
-
-
-
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/views/other/grid-sorter.vue b/components/vue-admin-perfect/src/views/other/grid-sorter.vue
deleted file mode 100644
index f29bd21..0000000
--- a/components/vue-admin-perfect/src/views/other/grid-sorter.vue
+++ /dev/null
@@ -1,152 +0,0 @@
-
-
-
-
卡片拖拽排序
-
- 还原
-
-
-
-
-
-
-
-
-
-
-
-
- 按住拖拽排序
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/views/other/print.vue b/components/vue-admin-perfect/src/views/other/print.vue
deleted file mode 100644
index 7602db4..0000000
--- a/components/vue-admin-perfect/src/views/other/print.vue
+++ /dev/null
@@ -1,77 +0,0 @@
-
-
-
- 打印图片
- 打印表格
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/views/other/qrcode.vue b/components/vue-admin-perfect/src/views/other/qrcode.vue
deleted file mode 100644
index e24f4a2..0000000
--- a/components/vue-admin-perfect/src/views/other/qrcode.vue
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
- 生成二维码
-
-
生成带logo
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/views/other/right-menu.vue b/components/vue-admin-perfect/src/views/other/right-menu.vue
deleted file mode 100644
index a1a1390..0000000
--- a/components/vue-admin-perfect/src/views/other/right-menu.vue
+++ /dev/null
@@ -1,58 +0,0 @@
-
-
- 右键菜单
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/views/other/share.vue b/components/vue-admin-perfect/src/views/other/share.vue
deleted file mode 100644
index 8b13789..0000000
--- a/components/vue-admin-perfect/src/views/other/share.vue
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/components/vue-admin-perfect/src/views/other/splitpane.vue b/components/vue-admin-perfect/src/views/other/splitpane.vue
deleted file mode 100644
index 2194fce..0000000
--- a/components/vue-admin-perfect/src/views/other/splitpane.vue
+++ /dev/null
@@ -1,62 +0,0 @@
-
-
-
- 1
-
-
- 2
- 3
- 4
-
-
- 5
-
-
-
-
-
-
-
diff --git a/components/vue-admin-perfect/src/views/permission/page.vue b/components/vue-admin-perfect/src/views/permission/page.vue
deleted file mode 100644
index ad957fd..0000000
--- a/components/vue-admin-perfect/src/views/permission/page.vue
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
- 权限列表{{store.getters.roles}}
-
-
-
-
-
-
-
-
-
-
-
diff --git a/deploy.sh b/deploy.sh
deleted file mode 100644
index f31ae91..0000000
--- a/deploy.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#强制推送
-#!/usr/bin/env bash
-set -e
-npm run build
-cd dist
-touch .nojekyll
-git init
-git add -A
-git commit -m 'deploy'
-git push -f "https://${access_token}@gitee.com/yuanzbz/vue-admin-perfect.git" master:gh-pages
-git push -f "https://${access_token}@github.com/zouzhibin/vue-admin-perfect.git" master:gh-pages
-
-cd -
-exec /bin/bash
-
-
-
-
diff --git a/icons/index.js b/icons/index.js
new file mode 100644
index 0000000..2bc9d02
--- /dev/null
+++ b/icons/index.js
@@ -0,0 +1,12 @@
+import Vue from 'vue'
+import SvgIcon from '@/components/SvgIcon'// svg组件
+// import generateIconsView from '@/views/svg-icons/generateIconsView.js'// just for @/views/icons , you can delete it
+
+// register globally
+Vue.component('svg-icon', SvgIcon)
+
+const requireAll = requireContext => requireContext.keys().map(requireContext)
+const req = require.context('./svg', false, /\.svg$/)
+const iconMap = requireAll(req)
+
+// generateIconsView.generate(iconMap) // just for @/views/icons , you can delete it
diff --git a/icons/svg/404.svg b/icons/svg/404.svg
new file mode 100644
index 0000000..bc5bc9f
--- /dev/null
+++ b/icons/svg/404.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/svg/bug.svg b/icons/svg/bug.svg
new file mode 100644
index 0000000..a12a939
--- /dev/null
+++ b/icons/svg/bug.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/svg/chart.svg b/icons/svg/chart.svg
new file mode 100644
index 0000000..b1b3133
--- /dev/null
+++ b/icons/svg/chart.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/svg/clipboard.svg b/icons/svg/clipboard.svg
new file mode 100644
index 0000000..cf1c9b0
--- /dev/null
+++ b/icons/svg/clipboard.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/svg/component.svg b/icons/svg/component.svg
new file mode 100644
index 0000000..a8008c8
--- /dev/null
+++ b/icons/svg/component.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/svg/dashboard.svg b/icons/svg/dashboard.svg
new file mode 100644
index 0000000..bee4250
--- /dev/null
+++ b/icons/svg/dashboard.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/svg/documentation.svg b/icons/svg/documentation.svg
new file mode 100644
index 0000000..405c2ad
--- /dev/null
+++ b/icons/svg/documentation.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/svg/drag.svg b/icons/svg/drag.svg
new file mode 100644
index 0000000..819c8d5
--- /dev/null
+++ b/icons/svg/drag.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/svg/edit.svg b/icons/svg/edit.svg
new file mode 100644
index 0000000..5c77d97
--- /dev/null
+++ b/icons/svg/edit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/svg/email.svg b/icons/svg/email.svg
new file mode 100644
index 0000000..8a87e14
--- /dev/null
+++ b/icons/svg/email.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/svg/example.svg b/icons/svg/example.svg
new file mode 100644
index 0000000..681422e
--- /dev/null
+++ b/icons/svg/example.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/svg/excel.svg b/icons/svg/excel.svg
new file mode 100644
index 0000000..e5dd5ce
--- /dev/null
+++ b/icons/svg/excel.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/svg/eye.svg b/icons/svg/eye.svg
new file mode 100644
index 0000000..194aa45
--- /dev/null
+++ b/icons/svg/eye.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/svg/form.svg b/icons/svg/form.svg
new file mode 100644
index 0000000..79716f0
--- /dev/null
+++ b/icons/svg/form.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/svg/guide.svg b/icons/svg/guide.svg
new file mode 100644
index 0000000..9bae339
--- /dev/null
+++ b/icons/svg/guide.svg
@@ -0,0 +1 @@
+
diff --git a/icons/svg/icon.svg b/icons/svg/icon.svg
new file mode 100644
index 0000000..906af96
--- /dev/null
+++ b/icons/svg/icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/svg/international.svg b/icons/svg/international.svg
new file mode 100644
index 0000000..6912767
--- /dev/null
+++ b/icons/svg/international.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/svg/language.svg b/icons/svg/language.svg
new file mode 100644
index 0000000..2baf743
--- /dev/null
+++ b/icons/svg/language.svg
@@ -0,0 +1 @@
+
diff --git a/icons/svg/list.svg b/icons/svg/list.svg
new file mode 100644
index 0000000..c45f459
--- /dev/null
+++ b/icons/svg/list.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/svg/lock.svg b/icons/svg/lock.svg
new file mode 100644
index 0000000..37c6070
--- /dev/null
+++ b/icons/svg/lock.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/svg/message.svg b/icons/svg/message.svg
new file mode 100644
index 0000000..d807b00
--- /dev/null
+++ b/icons/svg/message.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/svg/money.svg b/icons/svg/money.svg
new file mode 100644
index 0000000..d4fcb9c
--- /dev/null
+++ b/icons/svg/money.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/svg/nested.svg b/icons/svg/nested.svg
new file mode 100644
index 0000000..f564197
--- /dev/null
+++ b/icons/svg/nested.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/svg/password.svg b/icons/svg/password.svg
new file mode 100644
index 0000000..920b500
--- /dev/null
+++ b/icons/svg/password.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/svg/people.svg b/icons/svg/people.svg
new file mode 100644
index 0000000..3985ab5
--- /dev/null
+++ b/icons/svg/people.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/svg/peoples.svg b/icons/svg/peoples.svg
new file mode 100644
index 0000000..2dccfcc
--- /dev/null
+++ b/icons/svg/peoples.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/svg/qq.svg b/icons/svg/qq.svg
new file mode 100644
index 0000000..97aee71
--- /dev/null
+++ b/icons/svg/qq.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/svg/shoppingCard.svg b/icons/svg/shoppingCard.svg
new file mode 100644
index 0000000..cdebbdb
--- /dev/null
+++ b/icons/svg/shoppingCard.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/svg/star.svg b/icons/svg/star.svg
new file mode 100644
index 0000000..685a301
--- /dev/null
+++ b/icons/svg/star.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/svg/tab.svg b/icons/svg/tab.svg
new file mode 100644
index 0000000..17aa088
--- /dev/null
+++ b/icons/svg/tab.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/svg/table.svg b/icons/svg/table.svg
new file mode 100644
index 0000000..083bc8c
--- /dev/null
+++ b/icons/svg/table.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/svg/theme.svg b/icons/svg/theme.svg
new file mode 100644
index 0000000..d5c2e5a
--- /dev/null
+++ b/icons/svg/theme.svg
@@ -0,0 +1 @@
+
diff --git a/icons/svg/user.svg b/icons/svg/user.svg
new file mode 100644
index 0000000..5971dee
--- /dev/null
+++ b/icons/svg/user.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/svg/wechat.svg b/icons/svg/wechat.svg
new file mode 100644
index 0000000..d88a64b
--- /dev/null
+++ b/icons/svg/wechat.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/svg/zip.svg b/icons/svg/zip.svg
new file mode 100644
index 0000000..e9a9d01
--- /dev/null
+++ b/icons/svg/zip.svg
@@ -0,0 +1 @@
+
diff --git a/layout/components/AppMain.vue b/layout/components/AppMain.vue
new file mode 100644
index 0000000..288b3da
--- /dev/null
+++ b/layout/components/AppMain.vue
@@ -0,0 +1,160 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/layout/components/Navbar.vue b/layout/components/Navbar.vue
new file mode 100644
index 0000000..dfa3a03
--- /dev/null
+++ b/layout/components/Navbar.vue
@@ -0,0 +1,195 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/layout/components/Settings/index.vue b/layout/components/Settings/index.vue
new file mode 100644
index 0000000..90d99df
--- /dev/null
+++ b/layout/components/Settings/index.vue
@@ -0,0 +1,108 @@
+
+
+
+
系统布局配置
+
+
+ 主题颜色
+
+
+
+
+ 开启 Tags-Views
+
+
+
+
+ 固定 Header
+
+
+
+
+ 显示 Logo
+
+
+
+
+
+
+
+
+
+
diff --git a/layout/components/Sidebar/FixiOSBug.js b/layout/components/Sidebar/FixiOSBug.js
new file mode 100644
index 0000000..6823726
--- /dev/null
+++ b/layout/components/Sidebar/FixiOSBug.js
@@ -0,0 +1,25 @@
+export default {
+ computed: {
+ device() {
+ return this.$store.state.app.device
+ }
+ },
+ mounted() {
+ // In order to fix the click on menu on the ios device will trigger the mouseleave bug
+ this.fixBugIniOS()
+ },
+ methods: {
+ fixBugIniOS() {
+ const $subMenu = this.$refs.subMenu
+ if ($subMenu) {
+ const handleMouseleave = $subMenu.handleMouseleave
+ $subMenu.handleMouseleave = (e) => {
+ if (this.device === 'mobile') {
+ return
+ }
+ handleMouseleave(e)
+ }
+ }
+ }
+ }
+}
diff --git a/layout/components/Sidebar/Item.vue b/layout/components/Sidebar/Item.vue
new file mode 100644
index 0000000..d5baddd
--- /dev/null
+++ b/layout/components/Sidebar/Item.vue
@@ -0,0 +1,30 @@
+
diff --git a/components/vue-admin-perfect/src/layout/components/Sidebar/Link.vue b/layout/components/Sidebar/Link.vue
similarity index 84%
rename from components/vue-admin-perfect/src/layout/components/Sidebar/Link.vue
rename to layout/components/Sidebar/Link.vue
index 62b9535..530b3d5 100644
--- a/components/vue-admin-perfect/src/layout/components/Sidebar/Link.vue
+++ b/layout/components/Sidebar/Link.vue
@@ -5,7 +5,7 @@
-
-
diff --git a/src/layout/components/Sidebar/Logo.vue b/layout/components/Sidebar/Logo.vue
similarity index 65%
rename from src/layout/components/Sidebar/Logo.vue
rename to layout/components/Sidebar/Logo.vue
index 591b168..cf50dce 100644
--- a/src/layout/components/Sidebar/Logo.vue
+++ b/layout/components/Sidebar/Logo.vue
@@ -1,30 +1,36 @@
-