@arkxos/arkos-theme-classic 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/README.md +36 -0
  2. package/ark_dist/ark-meta.json +81 -0
  3. package/ark_dist/ark_userChunk_1.js +5 -0
  4. package/ark_dist/ark_userChunk_2.js +5 -0
  5. package/ark_dist/ark_userChunk_3.js +49 -0
  6. package/ark_dist/config.js +79 -0
  7. package/ark_dist/css/layout.93396d23.css +125 -0
  8. package/ark_dist/favicon.ico +0 -0
  9. package/ark_dist/img/401.1800ba9e.gif +0 -0
  10. package/ark_dist/img/404.458c248a.png +0 -0
  11. package/ark_dist/img/404.png +0 -0
  12. package/ark_dist/img/auth_banner.jpg +0 -0
  13. package/ark_dist/img/avatar.jpg +0 -0
  14. package/ark_dist/img/avatar2.gif +0 -0
  15. package/ark_dist/img/avatar3.gif +0 -0
  16. package/ark_dist/img/login-background.1a699c00.jpg +0 -0
  17. package/ark_dist/img/loginbg.svg +1 -0
  18. package/ark_dist/img/logo-r.png +0 -0
  19. package/ark_dist/img/logo.png +0 -0
  20. package/ark_dist/img/no-widgets.svg +57 -0
  21. package/ark_dist/img/tasks-example.png +0 -0
  22. package/ark_dist/img/ver.svg +236 -0
  23. package/ark_dist/index.html +127 -0
  24. package/ark_dist/js/app.4a68e1f9.js +1 -0
  25. package/ark_dist/js/layout.661faa0e.js +3 -0
  26. package/ark_dist/js/layout.661faa0e.js.LICENSE.txt +6 -0
  27. package/ark_dist/js/layout.661faa0e.js.map +1 -0
  28. package/ark_proxy/entry.js +28 -0
  29. package/ark_proxy_es/entry.js +16 -0
  30. package/package.json +110 -0
  31. package/scripts/check.js +13 -0
  32. package/scripts/meta.js +21 -0
  33. package/scripts/prepublishOnly.js +28 -0
  34. package/src/assets/logo.png +0 -0
  35. package/src/auto-imports.d.ts +307 -0
  36. package/src/configs/subApp.ts +9 -0
  37. package/src/entrance/libProperties.ts +28 -0
  38. package/src/entrance/libTypes.ts +26 -0
  39. package/src/loadApp.ts +16 -0
  40. package/src/main.ts +18 -0
  41. package/src/os-themes/classic/assets/401_images/401.gif +0 -0
  42. package/src/os-themes/classic/assets/404_images/404.png +0 -0
  43. package/src/os-themes/classic/assets/404_images/404_cloud.png +0 -0
  44. package/src/os-themes/classic/assets/images/login-background.jpg +0 -0
  45. package/src/os-themes/classic/i18n/en.ts +39 -0
  46. package/src/os-themes/classic/i18n/zh-cn.ts +39 -0
  47. package/src/os-themes/classic/i18nFileBuilder/index.ts +19 -0
  48. package/src/os-themes/classic/images/tabs_images/ark-tab.png +0 -0
  49. package/src/os-themes/classic/index.js +19 -0
  50. package/src/os-themes/classic/layout/components/NavMenu.vue +56 -0
  51. package/src/os-themes/classic/layout/components/iframeView.vue +69 -0
  52. package/src/os-themes/classic/layout/components/search.vue +139 -0
  53. package/src/os-themes/classic/layout/components/setting.vue +95 -0
  54. package/src/os-themes/classic/layout/components/sideM.vue +137 -0
  55. package/src/os-themes/classic/layout/components/tags.vue +476 -0
  56. package/src/os-themes/classic/layout/components/tasks.vue +83 -0
  57. package/src/os-themes/classic/layout/components/topbar.vue +49 -0
  58. package/src/os-themes/classic/layout/components/userbar.vue +238 -0
  59. package/src/os-themes/classic/layout/index.vue +347 -0
  60. package/src/os-themes/classic/layout/other/404.vue +44 -0
  61. package/src/os-themes/classic/layout/other/autoExit.js +51 -0
  62. package/src/os-themes/classic/layout/other/empty.vue +3 -0
  63. package/src/os-themes/classic/router/routerStatic.js +103 -0
  64. package/src/os-themes/classic/router/scrollBehavior.js +22 -0
  65. package/src/os-themes/classic/router/systemRouter.js +36 -0
  66. package/src/os-themes/classic/store/index.js +6 -0
  67. package/src/os-themes/classic/store/modules/global.js +25 -0
  68. package/src/os-themes/classic/store/modules/iframe.js +40 -0
  69. package/src/os-themes/classic/store/modules/keepAlive.js +25 -0
  70. package/src/os-themes/classic/store/modules/viewTags.js +48 -0
  71. package/src/os-themes/classic/style/app.scss +318 -0
  72. package/src/os-themes/classic/style/dark.scss +42 -0
  73. package/src/os-themes/classic/style/fix.scss +87 -0
  74. package/src/os-themes/classic/style/media.scss +52 -0
  75. package/src/os-themes/classic/style/pages.scss +46 -0
  76. package/src/os-themes/classic/style/style.scss +5 -0
  77. package/src/os-themes/classic/utils/useTabs.js +66 -0
  78. package/src/os-themes/classic/views/bg.png +0 -0
  79. package/src/os-themes/classic/views/error/401.vue +82 -0
  80. package/src/os-themes/classic/views/error/404.vue +230 -0
  81. package/src/os-themes/classic/views/home.vue +13 -0
  82. package/src/os-themes/classic/views/login/components/commonPage.vue +35 -0
  83. package/src/os-themes/classic/views/login/components/passwordForm.vue +174 -0
  84. package/src/os-themes/classic/views/login/components/phoneForm.vue +74 -0
  85. package/src/os-themes/classic/views/login/index.vue +210 -0
  86. package/src/os-themes/classic/views/login/resetPassword.vue +125 -0
  87. package/src/os-themes/classic/views/login/userRegister.vue +174 -0
  88. package/src/os-themes/classic/views/redirect/index.vue +14 -0
  89. package/src/os-themes/classic/views/register.vue +219 -0
  90. package/src/shims-vue.d.ts +6 -0
  91. package/src/types/axios.d.ts +13 -0
  92. package/src/types/func.ts +14 -0
  93. package/src/types/global.d.ts +108 -0
  94. package/src/types/layout.d.ts +59 -0
  95. package/src/types/mitt.d.ts +40 -0
  96. package/src/types/pinia.d.ts +93 -0
  97. package/src/types/views.d.ts +27 -0
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Note: 路由配置项
3
+ *
4
+ * hidden: true // 当设置 true 的时候该路由不会再侧边栏出现 如401,login等页面,或者如一些编辑页面/edit/1
5
+ * alwaysShow: true // 当你一个路由下面的 children 声明的路由大于1个时,自动会变成嵌套的模式--如组件页面
6
+ * // 只有一个时,会将那个子路由当做根路由显示在侧边栏--如引导页面
7
+ * // 若你想不管路由下面的 children 声明的个数都显示你的根路由
8
+ * // 你可以设置 alwaysShow: true,这样它就会忽略之前定义的规则,一直显示根路由
9
+ * redirect: noRedirect // 当设置 noRedirect 的时候该路由在面包屑导航中不可被点击
10
+ * name:'router-name' // 设定路由的名字,一定要填写不然使用<keep-alive>时会出现各种问题
11
+ * query: '{"id": 1, "name": "ry"}' // 访问路由的默认传递参数
12
+ * roles: ['admin', 'common'] // 访问路由的角色权限
13
+ * permissions: ['a:a:a', 'b:b:b'] // 访问路由的菜单权限
14
+ * meta : {
15
+ noCache: true // 如果设置为true,则不会被 <keep-alive> 缓存(默认 false)
16
+ title: 'title' // 设置该路由在侧边栏和面包屑中展示的名字
17
+ icon: 'svg-name' // 设置该路由的图标,对应路径src/assets/icons/svg
18
+ breadcrumb: false // 如果设置为false,则不会在breadcrumb面包屑中显示
19
+ activeMenu: '/system/user' // 当路由设置了该属性,则会高亮相对应的侧边栏。
20
+ }
21
+ */
22
+ export default [
23
+ {
24
+ name: 'layout',
25
+ path: '/',
26
+ component: () => import('../layout/index.vue'),
27
+ children: [
28
+ {
29
+ path: '/',
30
+ redirect: '/home'
31
+ },
32
+ {
33
+ path: '/home',
34
+ component: () => import('../views/home.vue')
35
+ }
36
+ ]
37
+ },
38
+ {
39
+ path: '/redirect',
40
+ component: () => import(/* webpackChunkName: "layout" */ '../layout/index.vue'),
41
+ hidden: true,
42
+ children: [
43
+ {
44
+ path: '/redirect/:path(.*)',
45
+ component: () => import('../views/redirect/index.vue')
46
+ }
47
+ ]
48
+ },
49
+ {
50
+ path: '/login',
51
+ component: () => import('../views/login/index.vue'),
52
+ hidden: true
53
+ },
54
+ {
55
+ path: '/register',
56
+ component: () => import('../views/register.vue'),
57
+ hidden: true
58
+ },
59
+ {
60
+ path: '/:pathMatch(.*)*',
61
+ component: () => import('../views/error/404'),
62
+ hidden: true
63
+ },
64
+ {
65
+ path: '/401',
66
+ component: () => import('../views/error/401'),
67
+ hidden: true
68
+ },
69
+ // {
70
+ // name: 'layout',
71
+ // path: '/',
72
+ // component: () => import(/* webpackChunkName: "layout" */ '../layout/index.vue'),
73
+ // redirect: config.DASHBOARD_URL || '/arkui-sample/dashboard',
74
+ // children: []
75
+ // },
76
+ // {
77
+ // path: '',
78
+ // component: () => import(/* webpackChunkName: "layout" */ '@/layout'),
79
+ // redirect: '/index',
80
+ // children: [
81
+ // {
82
+ // path: '/index',
83
+ // component: () => import('@/views/index'),
84
+ // name: 'Index',
85
+ // meta: { title: '首页', icon: 'dashboard', affix: true }
86
+ // }
87
+ // ]
88
+ // },
89
+ // {
90
+ // path: '/user',
91
+ // component: () => import(/* webpackChunkName: "layout" */ '@/layout'),
92
+ // hidden: true,
93
+ // redirect: 'noredirect',
94
+ // children: [
95
+ // {
96
+ // path: 'profile',
97
+ // component: () => import('@/puzzles/arkos-system/views/system/user/profile/index'),
98
+ // name: 'Profile',
99
+ // meta: { title: '个人中心', icon: 'user' }
100
+ // }
101
+ // ]
102
+ // }
103
+ ];
@@ -0,0 +1,22 @@
1
+ import { nextTick } from 'vue'
2
+ import viewTagsStore from '../store/modules/viewTags';
3
+
4
+ export function beforeEach(to, from) {
5
+ const adminMain = document.querySelector('#adminui-main')
6
+ if (!adminMain) { return false }
7
+ viewTagsStore().updateViewTags({
8
+ fullPath: from.fullPath,
9
+ scrollTop: adminMain.scrollTop
10
+ })
11
+ }
12
+
13
+ export function afterEach(to) {
14
+ const adminMain = document.querySelector('#adminui-main')
15
+ if (!adminMain) { return false }
16
+ nextTick(() => {
17
+ const beforeRoute = viewTagsStore().viewTags.filter(v => v.fullPath == to.fullPath)[0]
18
+ if (beforeRoute) {
19
+ adminMain.scrollTop = beforeRoute.scrollTop || 0
20
+ }
21
+ })
22
+ }
@@ -0,0 +1,36 @@
1
+ import { config } from '@arkxos/arkos'
2
+
3
+ // 系统路由
4
+ const routes = [
5
+ {
6
+ name: 'layout',
7
+ path: '/',
8
+ component: () => import(/* webpackChunkName: "layout" */ '../layout/index.vue'),
9
+ redirect: config.DASHBOARD_URL || '/arkui-sample/dashboard',
10
+ children: []
11
+ },
12
+ {
13
+ path: '/login',
14
+ hidden: true,
15
+ component: () => import(/* webpackChunkName: "login" */ '../views/login/index.vue'),
16
+ meta: {
17
+ title: '登录'
18
+ }
19
+ },
20
+ {
21
+ path: '/user_register',
22
+ component: () => import(/* webpackChunkName: "userRegister" */ '../views/login/userRegister.vue'),
23
+ meta: {
24
+ title: '注册'
25
+ }
26
+ },
27
+ {
28
+ path: '/reset_password',
29
+ component: () => import(/* webpackChunkName: "resetPassword" */ '../views/login/resetPassword.vue'),
30
+ meta: {
31
+ title: '重置密码'
32
+ }
33
+ }
34
+ ]
35
+
36
+ export default routes;
@@ -0,0 +1,6 @@
1
+ import globalStore from './modules/global';
2
+ import iframeStore from './modules/iframe';
3
+ import keepAliveStore from './modules/keepAlive';
4
+ import viewTagsStore from './modules/viewTags';
5
+
6
+ export default { globalStore, iframeStore, keepAliveStore, viewTagsStore };
@@ -0,0 +1,25 @@
1
+ import { config } from '@arkxos/arkos-core';
2
+ import { defineStore } from 'pinia'
3
+
4
+ export default defineStore('global', {
5
+ state: () => ({
6
+ // 移动端布局
7
+ ismobile: false,
8
+ // 布局
9
+ layout: config.LAYOUT,
10
+ // 菜单是否折叠 toggle
11
+ menuIsCollapse: config.MENU_IS_COLLAPSE,
12
+ // 多标签栏
13
+ layoutTags: config.LAYOUT_TAGS,
14
+ // 主题
15
+ theme: config.THEME,
16
+ }),
17
+ actions: {
18
+ toggleMenuIsCollapse() {
19
+ this.menuIsCollapse = !this.menuIsCollapse
20
+ },
21
+ toggleLayoutTags() {
22
+ this.layoutTags = !this.layoutTags
23
+ }
24
+ }
25
+ })
@@ -0,0 +1,40 @@
1
+ import { defineStore } from 'pinia'
2
+
3
+ export default defineStore('iframe', {
4
+ state: () => ({
5
+ iframeList: []
6
+ }),
7
+ actions: {
8
+ setIframeList(route) {
9
+ this.iframeList = []
10
+ this.iframeList.push(route)
11
+ },
12
+ pushIframeList(route) {
13
+ const target = this.iframeList.find((item) => item.path === route.path)
14
+ if (!target) {
15
+ this.iframeList.push(route)
16
+ }
17
+ },
18
+ removeIframeList(route) {
19
+ this.iframeList.forEach((item, index) => {
20
+ if (item.path === route.path) {
21
+ this.iframeList.splice(index, 1)
22
+ }
23
+ })
24
+ },
25
+ refreshIframe(route) {
26
+ this.iframeList.forEach((item) => {
27
+ if (item.path == route.path) {
28
+ const url = route.meta.url;
29
+ item.meta.url = '';
30
+ setTimeout(function() {
31
+ item.meta.url = url
32
+ }, 200);
33
+ }
34
+ })
35
+ },
36
+ clearIframeList() {
37
+ this.iframeList = []
38
+ }
39
+ }
40
+ })
@@ -0,0 +1,25 @@
1
+ import { defineStore } from 'pinia'
2
+
3
+ export default defineStore('keepAlive', {
4
+ state: () => ({
5
+ keepLiveRoute: [],
6
+ routeKey: null,
7
+ routeShow: true
8
+ }),
9
+ actions: {
10
+ pushKeepLive(component) {
11
+ if (!this.keepLiveRoute.includes(component)) {
12
+ this.keepLiveRoute.push(component)
13
+ }
14
+ },
15
+ removeKeepLive(component) {
16
+ const index = this.keepLiveRoute.indexOf(component);
17
+ if (index !== -1) {
18
+ this.keepLiveRoute.splice(index, 1);
19
+ }
20
+ },
21
+ clearKeepLive() {
22
+ this.keepLiveRoute = []
23
+ }
24
+ }
25
+ })
@@ -0,0 +1,48 @@
1
+ // import router from '@/router'
2
+ import { defineStore } from 'pinia'
3
+
4
+ export default defineStore('viewTags', {
5
+ state: () => ({
6
+ viewTags: []
7
+ }),
8
+ actions: {
9
+ pushViewTags(route) {
10
+ console.log('push view tags', route)
11
+ const backPathIndex = -1;// this.viewTags.findIndex(item => item.fullPath == router.options.history.state.back)
12
+ const target = this.viewTags.find((item) => item.fullPath === route.fullPath)
13
+ const isName = route.name
14
+ if (!target && isName) {
15
+ if (backPathIndex == -1) {
16
+ this.viewTags.push(route)
17
+ } else {
18
+ this.viewTags.splice(backPathIndex + 1, 0, route)
19
+ }
20
+ }
21
+ },
22
+ removeViewTags(route) {
23
+ this.viewTags.forEach((item, index) => {
24
+ if (item.fullPath === route.fullPath) {
25
+ this.viewTags.splice(index, 1)
26
+ }
27
+ })
28
+ },
29
+ updateViewTags(route) {
30
+ this.viewTags.forEach((item) => {
31
+ if (item.fullPath == route.fullPath) {
32
+ item = Object.assign(item, route)
33
+ }
34
+ })
35
+ },
36
+ updateViewTagsTitle(title = '') {
37
+ const nowFullPath = location.hash.substring(1)
38
+ this.viewTags.forEach((item) => {
39
+ if (item.fullPath == nowFullPath) {
40
+ item.meta.title = title
41
+ }
42
+ })
43
+ },
44
+ clearViewTags() {
45
+ this.viewTags = []
46
+ }
47
+ }
48
+ })
@@ -0,0 +1,318 @@
1
+ /* 全局 */
2
+ #app, body, html {width: 100%;height: 100%;background-color: #f6f8f9;font-size: 12px;}
3
+ a {color: #333;text-decoration: none;}
4
+ a:hover, a:focus {color: #000;text-decoration: none;}
5
+ a:link {text-decoration: none;}
6
+ a:-webkit-any-link {text-decoration: none;}
7
+ a,button,input,textarea{-webkit-tap-highlight-color:rgba(0,0,0,0);box-sizing: border-box;outline:none !important; -webkit-appearance: none;}
8
+ * {margin: 0;padding: 0;box-sizing: border-box;outline: none;}
9
+
10
+ /* 大布局样式 */
11
+ .aminui {display: flex;flex-flow: column;}
12
+ .aminui-wrapper {display: flex;flex:1;overflow: auto;}
13
+
14
+ /* 全局滚动条样式 */
15
+ .scrollable {-webkit-overflow-scrolling: touch;}
16
+ ::-webkit-scrollbar {width: 5px;height: 5px;}
17
+ ::-webkit-scrollbar-thumb {background-color: rgba(50, 50, 50, 0.3);}
18
+ ::-webkit-scrollbar-thumb:hover {background-color: rgba(50, 50, 50, 0.6);}
19
+ ::-webkit-scrollbar-track {background-color: rgba(50, 50, 50, 0.1);}
20
+ ::-webkit-scrollbar-track:hover {background-color: rgba(50, 50, 50, 0.2);}
21
+
22
+ /*布局设置*/
23
+ .layout-setting {position: fixed;width: 40px;height: 40px;border-radius: 3px 0 0 3px;bottom: 100px;right: 0px;z-index: 100;background: #409EFF;display: flex;flex-direction: column;align-items: center;justify-content: center;cursor: pointer;}
24
+ .layout-setting i {font-size: 18px;color: #fff;}
25
+
26
+ /* 头部 */
27
+ .adminui-header {height: 58px;background: var(--el-color-primary);color: #fff;display: flex;justify-content:space-between;}
28
+ .adminui-header-left {display: flex;align-items: center;padding-left:20px;}
29
+ .adminui-header-right {display: flex;align-items: center;}
30
+ .adminui-header .logo-bar {font-size: 20px;font-weight: bold;display: flex;align-items: center;}
31
+ .adminui-header .logo-bar .logo {
32
+ margin-right: 10px;
33
+ width: 35px;height: 35px;
34
+ }
35
+ .adminui-header .nav {display: flex;height: 100%;margin-left: 40px;}
36
+ .adminui-header .nav li {
37
+ padding:0 12px;
38
+ margin: 2px 10px 0 0;
39
+ font-size: 16px;
40
+ color: var(--color-primary-lighter);
41
+ list-style: none;
42
+ display: flex;
43
+ align-items: center;
44
+ cursor: pointer;
45
+ height: 100%;
46
+ line-height: 30px;
47
+ }
48
+ .adminui-header .nav li i { margin-right: 5px; display: none; }
49
+ .adminui-header .nav li:hover {color: #fff;}
50
+ .adminui-header .nav li.active {
51
+ // background: rgba(255, 255, 255, 0.1);
52
+ color: #fff;
53
+ }
54
+
55
+ .adminui-header .nav li :after {
56
+ content: " ";
57
+ display: block;
58
+ height: 2px;
59
+ border-radius: 2px;
60
+ background-color: transparent;
61
+ margin-top: 0;
62
+ }
63
+
64
+ .adminui-header .nav li.active :after {
65
+ background-color: #fff;
66
+ }
67
+
68
+ .adminui-header .user-bar .panel-item:hover {background: rgba(255, 255, 255, 0.1)!important;}
69
+ .adminui-header .user-bar .user label{color: #fff;}
70
+
71
+ /* 左侧菜单 */
72
+ .aminui-side-split {width:65px;flex-shrink:0;background: #222b45;display: flex;flex-flow: column;}
73
+ .aminui-side-split-top {height: 49px;}
74
+ .aminui-side-split-top a {display: inline-block;width: 100%;height: 100%;display: flex;align-items: center;justify-content: center;}
75
+ .aminui-side-split-top .logo {height:30px;vertical-align: bottom;}
76
+ .adminui-side-split-scroll {overflow: auto;overflow-x:hidden;height: 100%;flex: 1;}
77
+ .aminui-side-split li {cursor: pointer;width: 65px;height: 65px;color: #fff;text-align: center;display: flex;flex-direction: column;align-items: center;justify-content: center;}
78
+ .aminui-side-split li i {font-size: 18px;}
79
+ .aminui-side-split li p {margin-top:5px;}
80
+ .aminui-side-split li:hover {background: rgba(255, 255, 255, 0.1);}
81
+ .aminui-side-split li.active {background: #409EFF;}
82
+
83
+ .adminui-side-split-scroll::-webkit-scrollbar-thumb {background-color: rgba(255, 255, 255, 0.4);border-radius:5px;}
84
+ .adminui-side-split-scroll::-webkit-scrollbar-thumb:hover {background-color: rgba(255, 255, 255, 0.5);}
85
+ .adminui-side-split-scroll::-webkit-scrollbar-track {background-color: rgba(255, 255, 255, 0);}
86
+ .adminui-side-split-scroll::-webkit-scrollbar-track:hover {background-color: rgba(255, 255, 255, 0);}
87
+
88
+ .aminui-side {display: flex;flex-flow: column;flex-shrink:0;width:220px;background: #fff;box-shadow: 2px 0 8px 0 rgba(29,35,41,.05);border-right: 1px solid #e6e6e6;transition:width 0.3s;position: relative;}
89
+ .adminui-side-top {border-bottom: 1px solid #ebeef5;height:50px;line-height: 50px;}
90
+ .adminui-side-top h2 {padding:0 20px;font-size: 17px;color: #3c4a54;}
91
+ .adminui-side-scroll {overflow: auto;overflow-x:hidden;flex: 1;}
92
+ .adminui-side-scroll .el-menu-item.is-active {
93
+ color: #303133;
94
+ background-color: #f2f3f5;
95
+ }
96
+
97
+ .adminui-side-scroll .el-menu-item:hover,
98
+ .adminui-side-scroll .el-sub-menu__title:hover {
99
+ background-color: #f2f3f5 !important;
100
+ }
101
+ .adminui-side-bottom {border-top: 1px solid #ebeef5;height:51px;cursor: pointer;display: flex;align-items: center;justify-content: center;}
102
+ .adminui-side-bottom i {font-size: 16px;}
103
+ .adminui-side-bottom:hover {color: var(--el-color-primary);}
104
+
105
+ .adminui-side-tree {
106
+ height: calc(100% - 55px);
107
+ }
108
+ .adminui-side-icon {
109
+ display: flex;
110
+ justify-content: center;
111
+ padding: 10px 0;
112
+
113
+ .bottom-icon {
114
+ display: flex;
115
+ align-items: center;
116
+ justify-content: center;
117
+ width: 35px;
118
+ height: 35px;
119
+ border-radius: 5px;
120
+ background-color: var(--el-color-primary);
121
+ cursor: pointer;
122
+ }
123
+ }
124
+
125
+ .right-line::after,
126
+ .back-line::before {
127
+ content: '';
128
+ left: 0px;
129
+ top: 0;
130
+ height: 12px;
131
+ width: 1.5px;
132
+ border-radius: 1px;
133
+ background-color: #fff;
134
+ }
135
+
136
+ .right-line::after {
137
+ right: 0px;
138
+ top: 0;
139
+ }
140
+
141
+ .adminui-side-shrink {
142
+ position: absolute;
143
+ top: 50%;
144
+ right: -12px;
145
+ transform: translateY(-50%);
146
+ color: #387fff;
147
+ background-color: #fff;
148
+ font-size: 12px;
149
+ box-shadow: 3px 0px 3px 0px rgba(0, 66, 181, 0.36);
150
+ display: flex;
151
+ align-items: center;
152
+ justify-content: center;
153
+ padding: 10px 2px;
154
+ border-top-right-radius: 4px;
155
+ border-bottom-right-radius: 4px;
156
+ cursor: pointer;
157
+ }
158
+
159
+ .aminui-side.isCollapse {width: 65px;}
160
+ .el-menu .menu-tag {position: absolute;height: 18px;line-height: 18px;background: var(--el-color-danger);font-size: 12px;color: #fff;right: 20px;border-radius:18px;padding:0 6px;}
161
+ .el-menu .el-sub-menu__title .menu-tag {right: 40px;}
162
+ .el-menu--horizontal > li .menu-tag {display: none;}
163
+
164
+ /* 右侧内容 */
165
+ .aminui-body {flex: 1;display: flex;flex-flow: column;}
166
+
167
+ .adminui-topbar {height: 50px;border-bottom: 1px solid #ebeef5;background: #fff;box-shadow: 0 1px 4px rgba(0,21,41,.08);display: flex;justify-content:space-between;}
168
+ .adminui-topbar .left-panel {display: flex;align-items: center;}
169
+ .adminui-topbar .right-panel {display: flex;align-items: center;}
170
+
171
+ .right-panel-search {display: flex;align-items: center;}
172
+ .right-panel-search > * + * {margin-left:10px;}
173
+
174
+ .adminui-tags {
175
+ //height:35px;
176
+ //background: #fff;
177
+ border-bottom: 1px solid #e6e6e6;
178
+ position: relative;
179
+ box-sizing: border-box;
180
+ display: flex;
181
+ align-content: center;
182
+ align-items: center;
183
+ justify-content: space-between;
184
+ min-height: 50px;
185
+ padding-right: 20px;
186
+ padding-left: 40px;
187
+ -webkit-user-select: none;
188
+ -moz-user-select: none;
189
+ user-select: none;
190
+ background: var(--el-color-white);
191
+ border-top: 1px solid #f6f6f6;
192
+ }
193
+ .adminui-tags ul {display: flex;overflow: hidden;}
194
+ .adminui-tags li {
195
+ margin-top: 10px;
196
+ cursor: pointer;display: inline-block;float: left;height:38px;line-height: 38px;position: relative;flex-shrink: 0;
197
+ font-size: var(--el-menu-item-font-size);
198
+
199
+ height: 38px;
200
+ padding: 0 15px 0 15px;
201
+ //margin-top: 5.95px;
202
+ margin-right: -18px;
203
+ line-height: 38px;
204
+ text-align: center;
205
+ border: 0;
206
+ outline: none;
207
+ transition: padding 0.3s cubic-bezier(0.645, 0.045, 0.355, 1) !important;
208
+ }
209
+ .adminui-tags li::after {content: " ";width:1px;height:100%;position: absolute;right:0px;background-image: linear-gradient(#fff, #e6e6e6);}
210
+ .adminui-tags li a {display: inline-block;padding:0 10px;width:100%;height:100%;color: #999;text-decoration:none;display: flex;align-items: center;}
211
+ .adminui-tags li i {margin-left:0px;border-radius: 3px;width:18px;height:18px;display: flex;align-items: center;justify-content: center;}
212
+ //.adminui-tags li i:hover {background: rgba(0,0,0,.2);color: #fff;}
213
+ .adminui-tags li:hover {
214
+ //background: #ecf5ff;
215
+ color: var(--el-color-black);
216
+ background: #dee1e6;
217
+ mask: url('../images/tabs_images/ark-tab.png');
218
+ mask-size: 100% 100%;
219
+ }
220
+ .adminui-tags li.active {
221
+ background: var(--el-color-primary-light-9) !important;
222
+ //padding: 0 30px 0 30px;
223
+ color: var(--el-color-black);
224
+ background: #dee1e6;
225
+ mask: url('../images/tabs_images/ark-tab.png');
226
+ mask-size: 100% 100%;
227
+ }
228
+ .adminui-tags li.active a {color: var(--el-color-primary) !important;}
229
+ .adminui-tags li.sortable-ghost {opacity: 0;}
230
+ .adminui-tags .ark-tabs-toggle {
231
+ position: absolute;
232
+ left: 15px;
233
+ top: 20px;
234
+ cursor: pointer;
235
+ }
236
+
237
+ .adminui-main {
238
+ padding: 0px 0px 0px 0px;
239
+ overflow: auto;
240
+ background-color: #f6f8f9;
241
+ flex: 1;
242
+ }
243
+
244
+ /*页面最大化*/
245
+ .aminui.main-maximize {
246
+ .main-maximize-exit {display: block;}
247
+ .aminui-side-split, .aminui-side, .adminui-header, .adminui-topbar, .adminui-tags {display: none;}
248
+ }
249
+ .main-maximize-exit {display: none;position: fixed;z-index: 3000;top:-20px;left:50%;margin-left: -20px;border-radius: 50%;width: 40px;height: 40px;cursor: pointer;background: rgba(0,0,0,0.2);text-align: center;}
250
+ .main-maximize-exit i {font-size: 14px;margin-top: 22px;color: #fff;}
251
+ .main-maximize-exit:hover {background: rgba(0,0,0,0.4);}
252
+
253
+ /*定宽页面*/
254
+ .sc-page {width: 1230px;margin: 0 auto;}
255
+
256
+ .layout-pd {
257
+ padding: 10px 10px 0 !important;
258
+ }
259
+ .layout-flex {
260
+ display: flex;
261
+ flex-direction: column;
262
+ flex: 1;
263
+ }
264
+ // 用于界面高度自适应
265
+ .layout-padding {
266
+ height: 100%;
267
+ @extend .layout-pd;
268
+ @extend .layout-flex;
269
+ &-auto {
270
+ height: inherit;
271
+ @extend .layout-flex;
272
+ padding: 10px;
273
+ }
274
+ &-view {
275
+ background: var(--el-color-white);
276
+ width: 100%;
277
+ height: 100%;
278
+ border-radius: 4px;
279
+ border: 1px solid var(--el-border-color-light, #ebeef5);
280
+ overflow: hidden;
281
+ }
282
+ }
283
+
284
+ .layout-toolbar {
285
+ display: flex;
286
+ align-items: center;
287
+ justify-content: space-between;
288
+ margin-bottom: 10px;
289
+
290
+ .layout-toolbar-item,
291
+ .layout-toolbar-item {
292
+ display: flex;
293
+ align-items: center;
294
+
295
+ .el-form-item--default {
296
+ margin-bottom: 0
297
+ }
298
+ }
299
+ }
300
+
301
+ .mb8 {
302
+ text-align: left;
303
+ margin-bottom: 8px;
304
+ }
305
+
306
+
307
+ .el-pagination__editor {
308
+ margin-right: 8px;
309
+ }
310
+
311
+ .el-pagination {
312
+ margin-top: 15px;
313
+ justify-content: flex-end;
314
+ }
315
+
316
+ .splitpanes--vertical>.splitpanes__splitter {
317
+ min-width: 10px !important;
318
+ }
@@ -0,0 +1,42 @@
1
+ @import '~element-plus/theme-chalk/src/dark/css-vars.scss';
2
+
3
+ html.dark {
4
+ //变量
5
+ --el-text-color-primary: #d0d0d0;
6
+ --el-color-primary-dark-2: var(--el-color-primary-light-2) !important;
7
+ --el-color-primary-light-9: var(--el-color-primary-dark-8) !important;
8
+ --el-color-primary-light-8: var(--el-color-primary-dark-7) !important;
9
+ --el-color-primary-light-7: var(--el-color-primary-dark-6) !important;
10
+ --el-color-primary-light-5: var(--el-color-primary-dark-4) !important;
11
+ --el-color-primary-light-3: var(--el-color-primary-dark-3) !important;
12
+
13
+ //背景
14
+ #app {background: var(--el-bg-color);}
15
+
16
+ //登录背景
17
+ .login_bg {background: var(--el-bg-color);}
18
+
19
+ //框架
20
+ .adminui-header {background: var(--el-bg-color-overlay);border-bottom: 1px solid var(--el-border-color-light);height:59px;}
21
+ .aminui-side-split {background: var(--el-bg-color);}
22
+ .aminui-side-split li {color: var(--el-text-color-primary);}
23
+ .aminui-side {background: var(--el-bg-color-overlay);border-color: var(--el-border-color-light);}
24
+ .adminui-side-top, .adminui-side-bottom {border-color: var(--el-border-color-light);}
25
+ .adminui-side-top h2 {color: var(--el-text-color-primary);}
26
+ .adminui-topbar, .adminui-tags {background: var(--el-bg-color-overlay);border-color: var(--el-border-color-light);}
27
+ .adminui-main {background: var(--el-bg-color);}
28
+ .drawerBG {background: var(--el-bg-color);}
29
+ .adminui-header-menu .el-menu {--el-menu-bg-color:var(--el-bg-color-overlay) !important;--el-menu-hover-bg-color: #171819 !important;}
30
+ .adminui-header-menu .el-menu .el-sub-menu__title {background-color:transparent !important;}
31
+
32
+ //全局滚动条样式
33
+ ::-webkit-scrollbar-thumb {background-color: rgba(163, 166, 173, 0.3);}
34
+ ::-webkit-scrollbar-thumb:hover {background-color: rgba(163, 166, 173, 0.5);}
35
+
36
+ //组件
37
+ .el-header, .el-main.nopadding, .el-footer {background: var(--el-bg-color-overlay);border-color: var(--el-border-color-light);}
38
+ .el-main {background: var(--el-bg-color);}
39
+ .el-aside {background: var(--el-bg-color-overlay);border-color: var(--el-border-color-light);}
40
+ .el-table .el-table__body-wrapper {background: var(--el-bg-color);}
41
+ .el-table th.is-sortable:hover {background: #111;}
42
+ }