diff --git a/src/App.vue b/src/App.vue
index 8624b4c..52ccd6e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,7 +27,7 @@
actualWidth = 0
}
else if (settingsStore.menu.subMenuCollapse) {
- actualWidth = 64
+ actualWidth = 55
}
return `${actualWidth}px`
})
diff --git a/src/App.vue b/src/App.vue
index 8624b4c..52ccd6e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,7 +27,7 @@
actualWidth = 0
}
else if (settingsStore.menu.subMenuCollapse) {
- actualWidth = 64
+ actualWidth = 55
}
return `${actualWidth}px`
})
diff --git a/src/assets/icons/icon-setting.svg b/src/assets/icons/icon-setting.svg
new file mode 100644
index 0000000..33353f0
--- /dev/null
+++ b/src/assets/icons/icon-setting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/App.vue b/src/App.vue
index 8624b4c..52ccd6e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,7 +27,7 @@
actualWidth = 0
}
else if (settingsStore.menu.subMenuCollapse) {
- actualWidth = 64
+ actualWidth = 55
}
return `${actualWidth}px`
})
diff --git a/src/assets/icons/icon-setting.svg b/src/assets/icons/icon-setting.svg
new file mode 100644
index 0000000..33353f0
--- /dev/null
+++ b/src/assets/icons/icon-setting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/next_level.png b/src/assets/images/next_level.png
new file mode 100644
index 0000000..53d2837
--- /dev/null
+++ b/src/assets/images/next_level.png
Binary files differ
diff --git a/src/App.vue b/src/App.vue
index 8624b4c..52ccd6e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,7 +27,7 @@
actualWidth = 0
}
else if (settingsStore.menu.subMenuCollapse) {
- actualWidth = 64
+ actualWidth = 55
}
return `${actualWidth}px`
})
diff --git a/src/assets/icons/icon-setting.svg b/src/assets/icons/icon-setting.svg
new file mode 100644
index 0000000..33353f0
--- /dev/null
+++ b/src/assets/icons/icon-setting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/next_level.png b/src/assets/images/next_level.png
new file mode 100644
index 0000000..53d2837
--- /dev/null
+++ b/src/assets/images/next_level.png
Binary files differ
diff --git a/src/assets/images/next_level_active.png b/src/assets/images/next_level_active.png
new file mode 100644
index 0000000..1a52ae8
--- /dev/null
+++ b/src/assets/images/next_level_active.png
Binary files differ
diff --git a/src/App.vue b/src/App.vue
index 8624b4c..52ccd6e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,7 +27,7 @@
actualWidth = 0
}
else if (settingsStore.menu.subMenuCollapse) {
- actualWidth = 64
+ actualWidth = 55
}
return `${actualWidth}px`
})
diff --git a/src/assets/icons/icon-setting.svg b/src/assets/icons/icon-setting.svg
new file mode 100644
index 0000000..33353f0
--- /dev/null
+++ b/src/assets/icons/icon-setting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/next_level.png b/src/assets/images/next_level.png
new file mode 100644
index 0000000..53d2837
--- /dev/null
+++ b/src/assets/images/next_level.png
Binary files differ
diff --git a/src/assets/images/next_level_active.png b/src/assets/images/next_level_active.png
new file mode 100644
index 0000000..1a52ae8
--- /dev/null
+++ b/src/assets/images/next_level_active.png
Binary files differ
diff --git a/src/assets/styles/element-plus/index.scss b/src/assets/styles/element-plus/index.scss
index 3b53223..6dc95ed 100644
--- a/src/assets/styles/element-plus/index.scss
+++ b/src/assets/styles/element-plus/index.scss
@@ -7,6 +7,10 @@
$table:(
"header-bg-color":#f2f6ff,
"header-text-color":#444c59
+ ),
+ $menu:(
+ "base-level-padding": 15px,
+ "level-padding": 10px
)
);
@use "element-plus/theme-chalk/src/index.scss" as *;
diff --git a/src/App.vue b/src/App.vue
index 8624b4c..52ccd6e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,7 +27,7 @@
actualWidth = 0
}
else if (settingsStore.menu.subMenuCollapse) {
- actualWidth = 64
+ actualWidth = 55
}
return `${actualWidth}px`
})
diff --git a/src/assets/icons/icon-setting.svg b/src/assets/icons/icon-setting.svg
new file mode 100644
index 0000000..33353f0
--- /dev/null
+++ b/src/assets/icons/icon-setting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/next_level.png b/src/assets/images/next_level.png
new file mode 100644
index 0000000..53d2837
--- /dev/null
+++ b/src/assets/images/next_level.png
Binary files differ
diff --git a/src/assets/images/next_level_active.png b/src/assets/images/next_level_active.png
new file mode 100644
index 0000000..1a52ae8
--- /dev/null
+++ b/src/assets/images/next_level_active.png
Binary files differ
diff --git a/src/assets/styles/element-plus/index.scss b/src/assets/styles/element-plus/index.scss
index 3b53223..6dc95ed 100644
--- a/src/assets/styles/element-plus/index.scss
+++ b/src/assets/styles/element-plus/index.scss
@@ -7,6 +7,10 @@
$table:(
"header-bg-color":#f2f6ff,
"header-text-color":#444c59
+ ),
+ $menu:(
+ "base-level-padding": 15px,
+ "level-padding": 10px
)
);
@use "element-plus/theme-chalk/src/index.scss" as *;
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 4565a0f..938efd4 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -6,7 +6,7 @@
// 头部宽度(默认自适应宽度,可固定宽度,固定宽度后为居中显示)
--g-header-width: 100%;
// 头部高度
- --g-header-height: 67px;
+ --g-header-height: 60px;
// 侧边栏宽度
--g-main-sidebar-width: 70px;
--g-sub-sidebar-width: 180px;
@@ -91,3 +91,20 @@
.el-cascader.full-width-input {
width: 100% !important;
}
+
+.el-menu--popup {
+ color: var(--g-sub-sidebar-popmenu-bg);
+
+ .sidebar-item {
+ .el-menu-item,
+ .el-sub-menu__title {
+ color: var(--g-sub-sidebar-popmenu-color) !important;
+ }
+
+ .el-menu-item:hover,
+ .el-sub-menu__title:hover {
+ color: var(--g-sub-sidebar-popmenu-active-color) !important;
+ background-color: var(--g-sub-sidebar-popmenu-hover-color) !important;
+ }
+ }
+}
diff --git a/src/App.vue b/src/App.vue
index 8624b4c..52ccd6e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,7 +27,7 @@
actualWidth = 0
}
else if (settingsStore.menu.subMenuCollapse) {
- actualWidth = 64
+ actualWidth = 55
}
return `${actualWidth}px`
})
diff --git a/src/assets/icons/icon-setting.svg b/src/assets/icons/icon-setting.svg
new file mode 100644
index 0000000..33353f0
--- /dev/null
+++ b/src/assets/icons/icon-setting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/next_level.png b/src/assets/images/next_level.png
new file mode 100644
index 0000000..53d2837
--- /dev/null
+++ b/src/assets/images/next_level.png
Binary files differ
diff --git a/src/assets/images/next_level_active.png b/src/assets/images/next_level_active.png
new file mode 100644
index 0000000..1a52ae8
--- /dev/null
+++ b/src/assets/images/next_level_active.png
Binary files differ
diff --git a/src/assets/styles/element-plus/index.scss b/src/assets/styles/element-plus/index.scss
index 3b53223..6dc95ed 100644
--- a/src/assets/styles/element-plus/index.scss
+++ b/src/assets/styles/element-plus/index.scss
@@ -7,6 +7,10 @@
$table:(
"header-bg-color":#f2f6ff,
"header-text-color":#444c59
+ ),
+ $menu:(
+ "base-level-padding": 15px,
+ "level-padding": 10px
)
);
@use "element-plus/theme-chalk/src/index.scss" as *;
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 4565a0f..938efd4 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -6,7 +6,7 @@
// 头部宽度(默认自适应宽度,可固定宽度,固定宽度后为居中显示)
--g-header-width: 100%;
// 头部高度
- --g-header-height: 67px;
+ --g-header-height: 60px;
// 侧边栏宽度
--g-main-sidebar-width: 70px;
--g-sub-sidebar-width: 180px;
@@ -91,3 +91,20 @@
.el-cascader.full-width-input {
width: 100% !important;
}
+
+.el-menu--popup {
+ color: var(--g-sub-sidebar-popmenu-bg);
+
+ .sidebar-item {
+ .el-menu-item,
+ .el-sub-menu__title {
+ color: var(--g-sub-sidebar-popmenu-color) !important;
+ }
+
+ .el-menu-item:hover,
+ .el-sub-menu__title:hover {
+ color: var(--g-sub-sidebar-popmenu-active-color) !important;
+ background-color: var(--g-sub-sidebar-popmenu-hover-color) !important;
+ }
+ }
+}
diff --git a/src/assets/styles/themes.scss b/src/assets/styles/themes.scss
index 47da1fb..418dc62 100644
--- a/src/assets/styles/themes.scss
+++ b/src/assets/styles/themes.scss
@@ -52,6 +52,14 @@
--g-sub-sidebar-menu-active-color: #3d7eff;
// 菜单选中背景色
--g-sub-sidebar-menu-active-bg: #dae9fe;
+ // 弹出菜单背景色
+ --g-sub-sidebar-popmenu-bg: #fff;
+ // 弹出菜单文字颜色
+ --g-sub-sidebar-popmenu-color: rgb(92 92 92);
+ // 弹出菜单鼠标悬浮文字颜色
+ --g-sub-sidebar-popmenu-hover-color: #dae9fe;
+ // 弹出菜单选中文字颜色
+ --g-sub-sidebar-popmenu-active-color: rgb(92 92 92);
/* ----- 顶栏 ----- */
--g-toolbar-bg: var(--el-bg-color);
diff --git a/src/App.vue b/src/App.vue
index 8624b4c..52ccd6e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,7 +27,7 @@
actualWidth = 0
}
else if (settingsStore.menu.subMenuCollapse) {
- actualWidth = 64
+ actualWidth = 55
}
return `${actualWidth}px`
})
diff --git a/src/assets/icons/icon-setting.svg b/src/assets/icons/icon-setting.svg
new file mode 100644
index 0000000..33353f0
--- /dev/null
+++ b/src/assets/icons/icon-setting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/next_level.png b/src/assets/images/next_level.png
new file mode 100644
index 0000000..53d2837
--- /dev/null
+++ b/src/assets/images/next_level.png
Binary files differ
diff --git a/src/assets/images/next_level_active.png b/src/assets/images/next_level_active.png
new file mode 100644
index 0000000..1a52ae8
--- /dev/null
+++ b/src/assets/images/next_level_active.png
Binary files differ
diff --git a/src/assets/styles/element-plus/index.scss b/src/assets/styles/element-plus/index.scss
index 3b53223..6dc95ed 100644
--- a/src/assets/styles/element-plus/index.scss
+++ b/src/assets/styles/element-plus/index.scss
@@ -7,6 +7,10 @@
$table:(
"header-bg-color":#f2f6ff,
"header-text-color":#444c59
+ ),
+ $menu:(
+ "base-level-padding": 15px,
+ "level-padding": 10px
)
);
@use "element-plus/theme-chalk/src/index.scss" as *;
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 4565a0f..938efd4 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -6,7 +6,7 @@
// 头部宽度(默认自适应宽度,可固定宽度,固定宽度后为居中显示)
--g-header-width: 100%;
// 头部高度
- --g-header-height: 67px;
+ --g-header-height: 60px;
// 侧边栏宽度
--g-main-sidebar-width: 70px;
--g-sub-sidebar-width: 180px;
@@ -91,3 +91,20 @@
.el-cascader.full-width-input {
width: 100% !important;
}
+
+.el-menu--popup {
+ color: var(--g-sub-sidebar-popmenu-bg);
+
+ .sidebar-item {
+ .el-menu-item,
+ .el-sub-menu__title {
+ color: var(--g-sub-sidebar-popmenu-color) !important;
+ }
+
+ .el-menu-item:hover,
+ .el-sub-menu__title:hover {
+ color: var(--g-sub-sidebar-popmenu-active-color) !important;
+ background-color: var(--g-sub-sidebar-popmenu-hover-color) !important;
+ }
+ }
+}
diff --git a/src/assets/styles/themes.scss b/src/assets/styles/themes.scss
index 47da1fb..418dc62 100644
--- a/src/assets/styles/themes.scss
+++ b/src/assets/styles/themes.scss
@@ -52,6 +52,14 @@
--g-sub-sidebar-menu-active-color: #3d7eff;
// 菜单选中背景色
--g-sub-sidebar-menu-active-bg: #dae9fe;
+ // 弹出菜单背景色
+ --g-sub-sidebar-popmenu-bg: #fff;
+ // 弹出菜单文字颜色
+ --g-sub-sidebar-popmenu-color: rgb(92 92 92);
+ // 弹出菜单鼠标悬浮文字颜色
+ --g-sub-sidebar-popmenu-hover-color: #dae9fe;
+ // 弹出菜单选中文字颜色
+ --g-sub-sidebar-popmenu-active-color: rgb(92 92 92);
/* ----- 顶栏 ----- */
--g-toolbar-bg: var(--el-bg-color);
diff --git a/src/layouts/components/Header/index.vue b/src/layouts/components/Header/index.vue
index 4a98f23..83ad8cd 100644
--- a/src/layouts/components/Header/index.vue
+++ b/src/layouts/components/Header/index.vue
@@ -31,7 +31,7 @@
-
+
{{ item.meta.title }}
@@ -136,8 +136,7 @@
display: flex;
align-items: center;
justify-content: center;
- flex-direction: column;
- padding: 10px;
+ padding: 5px;
height: auto;
cursor: pointer;
color: var(--g-header-menu-color);
@@ -150,7 +149,7 @@
}
.el-icon {
- font-size: 24px;
+ font-size: 18px;
vertical-align: middle;
}
@@ -161,6 +160,14 @@
@include text-overflow(1, false);
}
+
+ .el-icon + span {
+ margin-left: 5px;
+ }
+ }
+
+ .item + .item {
+ margin-left: 5px;
}
.round-item {
diff --git a/src/App.vue b/src/App.vue
index 8624b4c..52ccd6e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,7 +27,7 @@
actualWidth = 0
}
else if (settingsStore.menu.subMenuCollapse) {
- actualWidth = 64
+ actualWidth = 55
}
return `${actualWidth}px`
})
diff --git a/src/assets/icons/icon-setting.svg b/src/assets/icons/icon-setting.svg
new file mode 100644
index 0000000..33353f0
--- /dev/null
+++ b/src/assets/icons/icon-setting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/next_level.png b/src/assets/images/next_level.png
new file mode 100644
index 0000000..53d2837
--- /dev/null
+++ b/src/assets/images/next_level.png
Binary files differ
diff --git a/src/assets/images/next_level_active.png b/src/assets/images/next_level_active.png
new file mode 100644
index 0000000..1a52ae8
--- /dev/null
+++ b/src/assets/images/next_level_active.png
Binary files differ
diff --git a/src/assets/styles/element-plus/index.scss b/src/assets/styles/element-plus/index.scss
index 3b53223..6dc95ed 100644
--- a/src/assets/styles/element-plus/index.scss
+++ b/src/assets/styles/element-plus/index.scss
@@ -7,6 +7,10 @@
$table:(
"header-bg-color":#f2f6ff,
"header-text-color":#444c59
+ ),
+ $menu:(
+ "base-level-padding": 15px,
+ "level-padding": 10px
)
);
@use "element-plus/theme-chalk/src/index.scss" as *;
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 4565a0f..938efd4 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -6,7 +6,7 @@
// 头部宽度(默认自适应宽度,可固定宽度,固定宽度后为居中显示)
--g-header-width: 100%;
// 头部高度
- --g-header-height: 67px;
+ --g-header-height: 60px;
// 侧边栏宽度
--g-main-sidebar-width: 70px;
--g-sub-sidebar-width: 180px;
@@ -91,3 +91,20 @@
.el-cascader.full-width-input {
width: 100% !important;
}
+
+.el-menu--popup {
+ color: var(--g-sub-sidebar-popmenu-bg);
+
+ .sidebar-item {
+ .el-menu-item,
+ .el-sub-menu__title {
+ color: var(--g-sub-sidebar-popmenu-color) !important;
+ }
+
+ .el-menu-item:hover,
+ .el-sub-menu__title:hover {
+ color: var(--g-sub-sidebar-popmenu-active-color) !important;
+ background-color: var(--g-sub-sidebar-popmenu-hover-color) !important;
+ }
+ }
+}
diff --git a/src/assets/styles/themes.scss b/src/assets/styles/themes.scss
index 47da1fb..418dc62 100644
--- a/src/assets/styles/themes.scss
+++ b/src/assets/styles/themes.scss
@@ -52,6 +52,14 @@
--g-sub-sidebar-menu-active-color: #3d7eff;
// 菜单选中背景色
--g-sub-sidebar-menu-active-bg: #dae9fe;
+ // 弹出菜单背景色
+ --g-sub-sidebar-popmenu-bg: #fff;
+ // 弹出菜单文字颜色
+ --g-sub-sidebar-popmenu-color: rgb(92 92 92);
+ // 弹出菜单鼠标悬浮文字颜色
+ --g-sub-sidebar-popmenu-hover-color: #dae9fe;
+ // 弹出菜单选中文字颜色
+ --g-sub-sidebar-popmenu-active-color: rgb(92 92 92);
/* ----- 顶栏 ----- */
--g-toolbar-bg: var(--el-bg-color);
diff --git a/src/layouts/components/Header/index.vue b/src/layouts/components/Header/index.vue
index 4a98f23..83ad8cd 100644
--- a/src/layouts/components/Header/index.vue
+++ b/src/layouts/components/Header/index.vue
@@ -31,7 +31,7 @@
-
+
{{ item.meta.title }}
@@ -136,8 +136,7 @@
display: flex;
align-items: center;
justify-content: center;
- flex-direction: column;
- padding: 10px;
+ padding: 5px;
height: auto;
cursor: pointer;
color: var(--g-header-menu-color);
@@ -150,7 +149,7 @@
}
.el-icon {
- font-size: 24px;
+ font-size: 18px;
vertical-align: middle;
}
@@ -161,6 +160,14 @@
@include text-overflow(1, false);
}
+
+ .el-icon + span {
+ margin-left: 5px;
+ }
+ }
+
+ .item + .item {
+ margin-left: 5px;
}
.round-item {
diff --git a/src/layouts/components/SidebarItem/index.vue b/src/layouts/components/SidebarItem/index.vue
index b930871..540d253 100644
--- a/src/layouts/components/SidebarItem/index.vue
+++ b/src/layouts/components/SidebarItem/index.vue
@@ -85,15 +85,15 @@
:deep(.el-sub-menu),
:deep(.el-menu-item) {
.title-icon {
- width: 20px;
- font-size: 20px;
+ width: 16px;
+ font-size: 16px;
vertical-align: -0.25em;
transition: transform 0.3s;
color: unset;
}
.title-icon + .title {
- margin-left: 10px;
+ margin-left: 5px;
}
&:hover > .title-icon,
diff --git a/src/App.vue b/src/App.vue
index 8624b4c..52ccd6e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,7 +27,7 @@
actualWidth = 0
}
else if (settingsStore.menu.subMenuCollapse) {
- actualWidth = 64
+ actualWidth = 55
}
return `${actualWidth}px`
})
diff --git a/src/assets/icons/icon-setting.svg b/src/assets/icons/icon-setting.svg
new file mode 100644
index 0000000..33353f0
--- /dev/null
+++ b/src/assets/icons/icon-setting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/next_level.png b/src/assets/images/next_level.png
new file mode 100644
index 0000000..53d2837
--- /dev/null
+++ b/src/assets/images/next_level.png
Binary files differ
diff --git a/src/assets/images/next_level_active.png b/src/assets/images/next_level_active.png
new file mode 100644
index 0000000..1a52ae8
--- /dev/null
+++ b/src/assets/images/next_level_active.png
Binary files differ
diff --git a/src/assets/styles/element-plus/index.scss b/src/assets/styles/element-plus/index.scss
index 3b53223..6dc95ed 100644
--- a/src/assets/styles/element-plus/index.scss
+++ b/src/assets/styles/element-plus/index.scss
@@ -7,6 +7,10 @@
$table:(
"header-bg-color":#f2f6ff,
"header-text-color":#444c59
+ ),
+ $menu:(
+ "base-level-padding": 15px,
+ "level-padding": 10px
)
);
@use "element-plus/theme-chalk/src/index.scss" as *;
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 4565a0f..938efd4 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -6,7 +6,7 @@
// 头部宽度(默认自适应宽度,可固定宽度,固定宽度后为居中显示)
--g-header-width: 100%;
// 头部高度
- --g-header-height: 67px;
+ --g-header-height: 60px;
// 侧边栏宽度
--g-main-sidebar-width: 70px;
--g-sub-sidebar-width: 180px;
@@ -91,3 +91,20 @@
.el-cascader.full-width-input {
width: 100% !important;
}
+
+.el-menu--popup {
+ color: var(--g-sub-sidebar-popmenu-bg);
+
+ .sidebar-item {
+ .el-menu-item,
+ .el-sub-menu__title {
+ color: var(--g-sub-sidebar-popmenu-color) !important;
+ }
+
+ .el-menu-item:hover,
+ .el-sub-menu__title:hover {
+ color: var(--g-sub-sidebar-popmenu-active-color) !important;
+ background-color: var(--g-sub-sidebar-popmenu-hover-color) !important;
+ }
+ }
+}
diff --git a/src/assets/styles/themes.scss b/src/assets/styles/themes.scss
index 47da1fb..418dc62 100644
--- a/src/assets/styles/themes.scss
+++ b/src/assets/styles/themes.scss
@@ -52,6 +52,14 @@
--g-sub-sidebar-menu-active-color: #3d7eff;
// 菜单选中背景色
--g-sub-sidebar-menu-active-bg: #dae9fe;
+ // 弹出菜单背景色
+ --g-sub-sidebar-popmenu-bg: #fff;
+ // 弹出菜单文字颜色
+ --g-sub-sidebar-popmenu-color: rgb(92 92 92);
+ // 弹出菜单鼠标悬浮文字颜色
+ --g-sub-sidebar-popmenu-hover-color: #dae9fe;
+ // 弹出菜单选中文字颜色
+ --g-sub-sidebar-popmenu-active-color: rgb(92 92 92);
/* ----- 顶栏 ----- */
--g-toolbar-bg: var(--el-bg-color);
diff --git a/src/layouts/components/Header/index.vue b/src/layouts/components/Header/index.vue
index 4a98f23..83ad8cd 100644
--- a/src/layouts/components/Header/index.vue
+++ b/src/layouts/components/Header/index.vue
@@ -31,7 +31,7 @@
-
+
{{ item.meta.title }}
@@ -136,8 +136,7 @@
display: flex;
align-items: center;
justify-content: center;
- flex-direction: column;
- padding: 10px;
+ padding: 5px;
height: auto;
cursor: pointer;
color: var(--g-header-menu-color);
@@ -150,7 +149,7 @@
}
.el-icon {
- font-size: 24px;
+ font-size: 18px;
vertical-align: middle;
}
@@ -161,6 +160,14 @@
@include text-overflow(1, false);
}
+
+ .el-icon + span {
+ margin-left: 5px;
+ }
+ }
+
+ .item + .item {
+ margin-left: 5px;
}
.round-item {
diff --git a/src/layouts/components/SidebarItem/index.vue b/src/layouts/components/SidebarItem/index.vue
index b930871..540d253 100644
--- a/src/layouts/components/SidebarItem/index.vue
+++ b/src/layouts/components/SidebarItem/index.vue
@@ -85,15 +85,15 @@
:deep(.el-sub-menu),
:deep(.el-menu-item) {
.title-icon {
- width: 20px;
- font-size: 20px;
+ width: 16px;
+ font-size: 16px;
vertical-align: -0.25em;
transition: transform 0.3s;
color: unset;
}
.title-icon + .title {
- margin-left: 10px;
+ margin-left: 5px;
}
&:hover > .title-icon,
diff --git a/src/layouts/components/SubSidebar/index.vue b/src/layouts/components/SubSidebar/index.vue
index 9fc8a18..5928469 100644
--- a/src/layouts/components/SubSidebar/index.vue
+++ b/src/layouts/components/SubSidebar/index.vue
@@ -62,7 +62,7 @@
transition: background-color 0.3s, var(--el-transition-box-shadow), left 0.3s, width 0.3s;
&.is-collapse {
- width: 64px;
+ width: 55px;
.sidebar-logo {
&:not(.sidebar-logo-bg) {
@@ -96,7 +96,7 @@
.el-menu {
border-right: 0;
- padding: 0 10px;
+ padding: 0 5px;
padding-top: var(--g-sidebar-logo-height);
padding-top: 16px !important;
transition: border-color 0.3s, background-color 0.3s, color 0.3s, padding-top 0.3s;
diff --git a/src/App.vue b/src/App.vue
index 8624b4c..52ccd6e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,7 +27,7 @@
actualWidth = 0
}
else if (settingsStore.menu.subMenuCollapse) {
- actualWidth = 64
+ actualWidth = 55
}
return `${actualWidth}px`
})
diff --git a/src/assets/icons/icon-setting.svg b/src/assets/icons/icon-setting.svg
new file mode 100644
index 0000000..33353f0
--- /dev/null
+++ b/src/assets/icons/icon-setting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/next_level.png b/src/assets/images/next_level.png
new file mode 100644
index 0000000..53d2837
--- /dev/null
+++ b/src/assets/images/next_level.png
Binary files differ
diff --git a/src/assets/images/next_level_active.png b/src/assets/images/next_level_active.png
new file mode 100644
index 0000000..1a52ae8
--- /dev/null
+++ b/src/assets/images/next_level_active.png
Binary files differ
diff --git a/src/assets/styles/element-plus/index.scss b/src/assets/styles/element-plus/index.scss
index 3b53223..6dc95ed 100644
--- a/src/assets/styles/element-plus/index.scss
+++ b/src/assets/styles/element-plus/index.scss
@@ -7,6 +7,10 @@
$table:(
"header-bg-color":#f2f6ff,
"header-text-color":#444c59
+ ),
+ $menu:(
+ "base-level-padding": 15px,
+ "level-padding": 10px
)
);
@use "element-plus/theme-chalk/src/index.scss" as *;
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 4565a0f..938efd4 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -6,7 +6,7 @@
// 头部宽度(默认自适应宽度,可固定宽度,固定宽度后为居中显示)
--g-header-width: 100%;
// 头部高度
- --g-header-height: 67px;
+ --g-header-height: 60px;
// 侧边栏宽度
--g-main-sidebar-width: 70px;
--g-sub-sidebar-width: 180px;
@@ -91,3 +91,20 @@
.el-cascader.full-width-input {
width: 100% !important;
}
+
+.el-menu--popup {
+ color: var(--g-sub-sidebar-popmenu-bg);
+
+ .sidebar-item {
+ .el-menu-item,
+ .el-sub-menu__title {
+ color: var(--g-sub-sidebar-popmenu-color) !important;
+ }
+
+ .el-menu-item:hover,
+ .el-sub-menu__title:hover {
+ color: var(--g-sub-sidebar-popmenu-active-color) !important;
+ background-color: var(--g-sub-sidebar-popmenu-hover-color) !important;
+ }
+ }
+}
diff --git a/src/assets/styles/themes.scss b/src/assets/styles/themes.scss
index 47da1fb..418dc62 100644
--- a/src/assets/styles/themes.scss
+++ b/src/assets/styles/themes.scss
@@ -52,6 +52,14 @@
--g-sub-sidebar-menu-active-color: #3d7eff;
// 菜单选中背景色
--g-sub-sidebar-menu-active-bg: #dae9fe;
+ // 弹出菜单背景色
+ --g-sub-sidebar-popmenu-bg: #fff;
+ // 弹出菜单文字颜色
+ --g-sub-sidebar-popmenu-color: rgb(92 92 92);
+ // 弹出菜单鼠标悬浮文字颜色
+ --g-sub-sidebar-popmenu-hover-color: #dae9fe;
+ // 弹出菜单选中文字颜色
+ --g-sub-sidebar-popmenu-active-color: rgb(92 92 92);
/* ----- 顶栏 ----- */
--g-toolbar-bg: var(--el-bg-color);
diff --git a/src/layouts/components/Header/index.vue b/src/layouts/components/Header/index.vue
index 4a98f23..83ad8cd 100644
--- a/src/layouts/components/Header/index.vue
+++ b/src/layouts/components/Header/index.vue
@@ -31,7 +31,7 @@
-
+
{{ item.meta.title }}
@@ -136,8 +136,7 @@
display: flex;
align-items: center;
justify-content: center;
- flex-direction: column;
- padding: 10px;
+ padding: 5px;
height: auto;
cursor: pointer;
color: var(--g-header-menu-color);
@@ -150,7 +149,7 @@
}
.el-icon {
- font-size: 24px;
+ font-size: 18px;
vertical-align: middle;
}
@@ -161,6 +160,14 @@
@include text-overflow(1, false);
}
+
+ .el-icon + span {
+ margin-left: 5px;
+ }
+ }
+
+ .item + .item {
+ margin-left: 5px;
}
.round-item {
diff --git a/src/layouts/components/SidebarItem/index.vue b/src/layouts/components/SidebarItem/index.vue
index b930871..540d253 100644
--- a/src/layouts/components/SidebarItem/index.vue
+++ b/src/layouts/components/SidebarItem/index.vue
@@ -85,15 +85,15 @@
:deep(.el-sub-menu),
:deep(.el-menu-item) {
.title-icon {
- width: 20px;
- font-size: 20px;
+ width: 16px;
+ font-size: 16px;
vertical-align: -0.25em;
transition: transform 0.3s;
color: unset;
}
.title-icon + .title {
- margin-left: 10px;
+ margin-left: 5px;
}
&:hover > .title-icon,
diff --git a/src/layouts/components/SubSidebar/index.vue b/src/layouts/components/SubSidebar/index.vue
index 9fc8a18..5928469 100644
--- a/src/layouts/components/SubSidebar/index.vue
+++ b/src/layouts/components/SubSidebar/index.vue
@@ -62,7 +62,7 @@
transition: background-color 0.3s, var(--el-transition-box-shadow), left 0.3s, width 0.3s;
&.is-collapse {
- width: 64px;
+ width: 55px;
.sidebar-logo {
&:not(.sidebar-logo-bg) {
@@ -96,7 +96,7 @@
.el-menu {
border-right: 0;
- padding: 0 10px;
+ padding: 0 5px;
padding-top: var(--g-sidebar-logo-height);
padding-top: 16px !important;
transition: border-color 0.3s, background-color 0.3s, color 0.3s, padding-top 0.3s;
diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts
new file mode 100644
index 0000000..55b4d14
--- /dev/null
+++ b/src/router/modules/device.ts
@@ -0,0 +1,286 @@
+// 测量设备
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/device',
+ component: Layout,
+ redirect: '/device/bench',
+ name: 'DBench',
+ meta: {
+ title: '工作台',
+ icon: 'ep:key',
+ auth: '/device/bench',
+ },
+ children: [
+ {
+ path: '/device/bench',
+ name: 'DeviceBench',
+ component: () => import('@/views/device/bench/deviceBench.vue'),
+ meta: {
+ title: '工作台',
+ auth: '/device/bench',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/device',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standingBook',
+ component: Layout,
+ redirect: '/standingBook/measureDevice',
+ name: 'standingBook',
+ meta: {
+ title: '设备台账',
+ icon: 'ep:key',
+ auth: '/device/standingBook',
+ },
+ children: [
+ {
+ path: 'measureDevice',
+ name: 'measureDevice',
+ component: () => import('@/views/device/standingBook/measureDevice.vue'),
+ meta: {
+ title: '测量设备',
+ icon: 'ep:key',
+ auth: '/device/measureDevice',
+ },
+ },
+ {
+ path: 'adjustDevice',
+ name: 'adjustDevice',
+ component: () => import('@/views/device/standingBook/adjustDevice.vue'),
+ meta: {
+ title: '校准/检定设备',
+ icon: 'ep:key',
+ auth: '/device/adjustDevice',
+ },
+ },
+ {
+ path: 'standardMatchDevice',
+ name: 'standardMatchDevice',
+ component: () => import('@/views/device/standingBook/standardMatchDevice.vue'),
+ meta: {
+ title: '标准配套设备',
+ icon: 'ep:key',
+ auth: '/device/standardMatchDevice',
+ },
+ },
+ {
+ path: 'measureTool',
+ name: 'measureTool',
+ component: () => import('@/views/device/standingBook/measureTool.vue'),
+ meta: {
+ title: '测量工装',
+ icon: 'ep:key',
+ auth: '/device/measureTool',
+ },
+ },
+ {
+ path: 'fixedAssets',
+ name: 'fixedAssets',
+ component: () => import('@/views/device/standingBook/fixedAssets.vue'),
+ meta: {
+ title: '固定资产',
+ icon: 'ep:key',
+ auth: '/device/fixedAssets',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standard',
+ component: Layout,
+ redirect: '/standard/list',
+ name: 'Standard',
+ meta: {
+ title: '标准装置',
+ icon: 'ep:key',
+ auth: '/standardEquipment',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'standardList',
+ component: () => import('@/views/device/standardEquipment/standardList.vue'),
+ meta: {
+ title: '标准装置列表',
+ icon: 'ep:key',
+ auth: '/standard/list',
+ },
+ },
+ {
+ path: 'expirationRemind',
+ name: 'expirationRemind',
+ component: () => import('@/views/device/standardEquipment/expirationRemind.vue'),
+ meta: {
+ title: '到期提醒',
+ icon: 'ep:key',
+ auth: '/standard/expirationRemind',
+ },
+ },
+ {
+ path: 'changeApply',
+ name: 'changeApply',
+ component: () => import('@/views/device/standardEquipment/changeApply.vue'),
+ meta: {
+ title: '更换申请',
+ icon: 'ep:key',
+ auth: '/standard/changeApply',
+ },
+ },
+ {
+ path: 'pauseApply',
+ name: 'pauseApply',
+ component: () => import('@/views/device/standardEquipment/pauseApply.vue'),
+ meta: {
+ title: '暂停申请',
+ icon: 'ep:key',
+ auth: '/standard/pauseApply',
+ },
+ },
+ {
+ path: 'cancelApply',
+ name: 'cancelApply',
+ component: () => import('@/views/device/standardEquipment/cancelApply.vue'),
+ meta: {
+ title: '撤销申请',
+ icon: 'ep:key',
+ auth: '/standard/cancelApply',
+ },
+ },
+ {
+ path: 'resumeApply',
+ name: 'resumeApply',
+ component: () => import('@/views/device/standardEquipment/resumeApply.vue'),
+ meta: {
+ title: '恢复申请',
+ icon: 'ep:key',
+ auth: '/standard/resumeApply',
+ },
+ },
+ {
+ path: 'checkApply',
+ name: 'checkApply',
+ component: () => import('@/views/device/standardEquipment/checkApply.vue'),
+ meta: {
+ title: '复查申请',
+ icon: 'ep:key',
+ auth: '/standard/checkApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/stateManage',
+ component: Layout,
+ redirect: '/stateManage/unusedApply',
+ name: 'stateManage',
+ meta: {
+ title: '状态管理',
+ icon: 'ep:key',
+ auth: '/device/stateManage',
+ },
+ children: [
+ {
+ path: 'unusedApply',
+ name: 'unusedApply',
+ component: () => import('@/views/device/stateManage/unusedApply.vue'),
+ meta: {
+ title: '设备闲置申请',
+ icon: 'ep:key',
+ auth: '/device/unusedApply',
+ },
+ },
+ {
+ path: 'sealupApply',
+ name: 'sealupApply',
+ component: () => import('@/views/device/stateManage/sealupApply.vue'),
+ meta: {
+ title: '设备封存申请',
+ icon: 'ep:key',
+ auth: '/device/sealupApply',
+ },
+ },
+ {
+ path: 'openApply',
+ name: 'openApply',
+ component: () => import('@/views/device/stateManage/openApply.vue'),
+ meta: {
+ title: '设备启封申请',
+ icon: 'ep:key',
+ auth: '/device/openApply',
+ },
+ },
+ {
+ path: 'scrapApply',
+ name: 'scrapApply',
+ component: () => import('@/views/device/stateManage/scrapApply.vue'),
+ meta: {
+ title: '设备报废申请',
+ icon: 'ep:key',
+ auth: '/device/scrapApply',
+ },
+ },
+ {
+ path: 'handleApply',
+ name: 'handleApply',
+ component: () => import('@/views/device/stateManage/handleApply.vue'),
+ meta: {
+ title: '设备处置申请',
+ icon: 'ep:key',
+ auth: '/device/handleApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/maintenance',
+ component: Layout,
+ redirect: '/maintenance/maintenanceList',
+ name: 'MaintenanceManage',
+ meta: {
+ title: '设备维护',
+ icon: 'ep:key',
+ auth: '/device/maintenance',
+ },
+ children: [
+ {
+ path: 'maintenanceList',
+ name: 'maintenanceList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceList.vue'),
+ meta: {
+ title: '设备维护列表',
+ icon: 'ep:key',
+ auth: '/device/maintenanceList',
+ },
+ },
+ {
+ path: 'maintenanceCheckList',
+ name: 'maintenanceCheckList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceCheckList.vue'),
+ meta: {
+ title: '设备检修保养验收单',
+ icon: 'ep:key',
+ auth: '/device/maintenance/checkList',
+ },
+ },
+ {
+ path: 'manageCheckList',
+ name: 'manageCheckList',
+ component: () => import('@/views/device/deviceMaintenance/manageCheckList.vue'),
+ meta: {
+ title: '设备管理点检查表',
+ icon: 'ep:key',
+ auth: '/device/manage/checkList',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/App.vue b/src/App.vue
index 8624b4c..52ccd6e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,7 +27,7 @@
actualWidth = 0
}
else if (settingsStore.menu.subMenuCollapse) {
- actualWidth = 64
+ actualWidth = 55
}
return `${actualWidth}px`
})
diff --git a/src/assets/icons/icon-setting.svg b/src/assets/icons/icon-setting.svg
new file mode 100644
index 0000000..33353f0
--- /dev/null
+++ b/src/assets/icons/icon-setting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/next_level.png b/src/assets/images/next_level.png
new file mode 100644
index 0000000..53d2837
--- /dev/null
+++ b/src/assets/images/next_level.png
Binary files differ
diff --git a/src/assets/images/next_level_active.png b/src/assets/images/next_level_active.png
new file mode 100644
index 0000000..1a52ae8
--- /dev/null
+++ b/src/assets/images/next_level_active.png
Binary files differ
diff --git a/src/assets/styles/element-plus/index.scss b/src/assets/styles/element-plus/index.scss
index 3b53223..6dc95ed 100644
--- a/src/assets/styles/element-plus/index.scss
+++ b/src/assets/styles/element-plus/index.scss
@@ -7,6 +7,10 @@
$table:(
"header-bg-color":#f2f6ff,
"header-text-color":#444c59
+ ),
+ $menu:(
+ "base-level-padding": 15px,
+ "level-padding": 10px
)
);
@use "element-plus/theme-chalk/src/index.scss" as *;
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 4565a0f..938efd4 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -6,7 +6,7 @@
// 头部宽度(默认自适应宽度,可固定宽度,固定宽度后为居中显示)
--g-header-width: 100%;
// 头部高度
- --g-header-height: 67px;
+ --g-header-height: 60px;
// 侧边栏宽度
--g-main-sidebar-width: 70px;
--g-sub-sidebar-width: 180px;
@@ -91,3 +91,20 @@
.el-cascader.full-width-input {
width: 100% !important;
}
+
+.el-menu--popup {
+ color: var(--g-sub-sidebar-popmenu-bg);
+
+ .sidebar-item {
+ .el-menu-item,
+ .el-sub-menu__title {
+ color: var(--g-sub-sidebar-popmenu-color) !important;
+ }
+
+ .el-menu-item:hover,
+ .el-sub-menu__title:hover {
+ color: var(--g-sub-sidebar-popmenu-active-color) !important;
+ background-color: var(--g-sub-sidebar-popmenu-hover-color) !important;
+ }
+ }
+}
diff --git a/src/assets/styles/themes.scss b/src/assets/styles/themes.scss
index 47da1fb..418dc62 100644
--- a/src/assets/styles/themes.scss
+++ b/src/assets/styles/themes.scss
@@ -52,6 +52,14 @@
--g-sub-sidebar-menu-active-color: #3d7eff;
// 菜单选中背景色
--g-sub-sidebar-menu-active-bg: #dae9fe;
+ // 弹出菜单背景色
+ --g-sub-sidebar-popmenu-bg: #fff;
+ // 弹出菜单文字颜色
+ --g-sub-sidebar-popmenu-color: rgb(92 92 92);
+ // 弹出菜单鼠标悬浮文字颜色
+ --g-sub-sidebar-popmenu-hover-color: #dae9fe;
+ // 弹出菜单选中文字颜色
+ --g-sub-sidebar-popmenu-active-color: rgb(92 92 92);
/* ----- 顶栏 ----- */
--g-toolbar-bg: var(--el-bg-color);
diff --git a/src/layouts/components/Header/index.vue b/src/layouts/components/Header/index.vue
index 4a98f23..83ad8cd 100644
--- a/src/layouts/components/Header/index.vue
+++ b/src/layouts/components/Header/index.vue
@@ -31,7 +31,7 @@
-
+
{{ item.meta.title }}
@@ -136,8 +136,7 @@
display: flex;
align-items: center;
justify-content: center;
- flex-direction: column;
- padding: 10px;
+ padding: 5px;
height: auto;
cursor: pointer;
color: var(--g-header-menu-color);
@@ -150,7 +149,7 @@
}
.el-icon {
- font-size: 24px;
+ font-size: 18px;
vertical-align: middle;
}
@@ -161,6 +160,14 @@
@include text-overflow(1, false);
}
+
+ .el-icon + span {
+ margin-left: 5px;
+ }
+ }
+
+ .item + .item {
+ margin-left: 5px;
}
.round-item {
diff --git a/src/layouts/components/SidebarItem/index.vue b/src/layouts/components/SidebarItem/index.vue
index b930871..540d253 100644
--- a/src/layouts/components/SidebarItem/index.vue
+++ b/src/layouts/components/SidebarItem/index.vue
@@ -85,15 +85,15 @@
:deep(.el-sub-menu),
:deep(.el-menu-item) {
.title-icon {
- width: 20px;
- font-size: 20px;
+ width: 16px;
+ font-size: 16px;
vertical-align: -0.25em;
transition: transform 0.3s;
color: unset;
}
.title-icon + .title {
- margin-left: 10px;
+ margin-left: 5px;
}
&:hover > .title-icon,
diff --git a/src/layouts/components/SubSidebar/index.vue b/src/layouts/components/SubSidebar/index.vue
index 9fc8a18..5928469 100644
--- a/src/layouts/components/SubSidebar/index.vue
+++ b/src/layouts/components/SubSidebar/index.vue
@@ -62,7 +62,7 @@
transition: background-color 0.3s, var(--el-transition-box-shadow), left 0.3s, width 0.3s;
&.is-collapse {
- width: 64px;
+ width: 55px;
.sidebar-logo {
&:not(.sidebar-logo-bg) {
@@ -96,7 +96,7 @@
.el-menu {
border-right: 0;
- padding: 0 10px;
+ padding: 0 5px;
padding-top: var(--g-sidebar-logo-height);
padding-top: 16px !important;
transition: border-color 0.3s, background-color 0.3s, color 0.3s, padding-top 0.3s;
diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts
new file mode 100644
index 0000000..55b4d14
--- /dev/null
+++ b/src/router/modules/device.ts
@@ -0,0 +1,286 @@
+// 测量设备
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/device',
+ component: Layout,
+ redirect: '/device/bench',
+ name: 'DBench',
+ meta: {
+ title: '工作台',
+ icon: 'ep:key',
+ auth: '/device/bench',
+ },
+ children: [
+ {
+ path: '/device/bench',
+ name: 'DeviceBench',
+ component: () => import('@/views/device/bench/deviceBench.vue'),
+ meta: {
+ title: '工作台',
+ auth: '/device/bench',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/device',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standingBook',
+ component: Layout,
+ redirect: '/standingBook/measureDevice',
+ name: 'standingBook',
+ meta: {
+ title: '设备台账',
+ icon: 'ep:key',
+ auth: '/device/standingBook',
+ },
+ children: [
+ {
+ path: 'measureDevice',
+ name: 'measureDevice',
+ component: () => import('@/views/device/standingBook/measureDevice.vue'),
+ meta: {
+ title: '测量设备',
+ icon: 'ep:key',
+ auth: '/device/measureDevice',
+ },
+ },
+ {
+ path: 'adjustDevice',
+ name: 'adjustDevice',
+ component: () => import('@/views/device/standingBook/adjustDevice.vue'),
+ meta: {
+ title: '校准/检定设备',
+ icon: 'ep:key',
+ auth: '/device/adjustDevice',
+ },
+ },
+ {
+ path: 'standardMatchDevice',
+ name: 'standardMatchDevice',
+ component: () => import('@/views/device/standingBook/standardMatchDevice.vue'),
+ meta: {
+ title: '标准配套设备',
+ icon: 'ep:key',
+ auth: '/device/standardMatchDevice',
+ },
+ },
+ {
+ path: 'measureTool',
+ name: 'measureTool',
+ component: () => import('@/views/device/standingBook/measureTool.vue'),
+ meta: {
+ title: '测量工装',
+ icon: 'ep:key',
+ auth: '/device/measureTool',
+ },
+ },
+ {
+ path: 'fixedAssets',
+ name: 'fixedAssets',
+ component: () => import('@/views/device/standingBook/fixedAssets.vue'),
+ meta: {
+ title: '固定资产',
+ icon: 'ep:key',
+ auth: '/device/fixedAssets',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standard',
+ component: Layout,
+ redirect: '/standard/list',
+ name: 'Standard',
+ meta: {
+ title: '标准装置',
+ icon: 'ep:key',
+ auth: '/standardEquipment',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'standardList',
+ component: () => import('@/views/device/standardEquipment/standardList.vue'),
+ meta: {
+ title: '标准装置列表',
+ icon: 'ep:key',
+ auth: '/standard/list',
+ },
+ },
+ {
+ path: 'expirationRemind',
+ name: 'expirationRemind',
+ component: () => import('@/views/device/standardEquipment/expirationRemind.vue'),
+ meta: {
+ title: '到期提醒',
+ icon: 'ep:key',
+ auth: '/standard/expirationRemind',
+ },
+ },
+ {
+ path: 'changeApply',
+ name: 'changeApply',
+ component: () => import('@/views/device/standardEquipment/changeApply.vue'),
+ meta: {
+ title: '更换申请',
+ icon: 'ep:key',
+ auth: '/standard/changeApply',
+ },
+ },
+ {
+ path: 'pauseApply',
+ name: 'pauseApply',
+ component: () => import('@/views/device/standardEquipment/pauseApply.vue'),
+ meta: {
+ title: '暂停申请',
+ icon: 'ep:key',
+ auth: '/standard/pauseApply',
+ },
+ },
+ {
+ path: 'cancelApply',
+ name: 'cancelApply',
+ component: () => import('@/views/device/standardEquipment/cancelApply.vue'),
+ meta: {
+ title: '撤销申请',
+ icon: 'ep:key',
+ auth: '/standard/cancelApply',
+ },
+ },
+ {
+ path: 'resumeApply',
+ name: 'resumeApply',
+ component: () => import('@/views/device/standardEquipment/resumeApply.vue'),
+ meta: {
+ title: '恢复申请',
+ icon: 'ep:key',
+ auth: '/standard/resumeApply',
+ },
+ },
+ {
+ path: 'checkApply',
+ name: 'checkApply',
+ component: () => import('@/views/device/standardEquipment/checkApply.vue'),
+ meta: {
+ title: '复查申请',
+ icon: 'ep:key',
+ auth: '/standard/checkApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/stateManage',
+ component: Layout,
+ redirect: '/stateManage/unusedApply',
+ name: 'stateManage',
+ meta: {
+ title: '状态管理',
+ icon: 'ep:key',
+ auth: '/device/stateManage',
+ },
+ children: [
+ {
+ path: 'unusedApply',
+ name: 'unusedApply',
+ component: () => import('@/views/device/stateManage/unusedApply.vue'),
+ meta: {
+ title: '设备闲置申请',
+ icon: 'ep:key',
+ auth: '/device/unusedApply',
+ },
+ },
+ {
+ path: 'sealupApply',
+ name: 'sealupApply',
+ component: () => import('@/views/device/stateManage/sealupApply.vue'),
+ meta: {
+ title: '设备封存申请',
+ icon: 'ep:key',
+ auth: '/device/sealupApply',
+ },
+ },
+ {
+ path: 'openApply',
+ name: 'openApply',
+ component: () => import('@/views/device/stateManage/openApply.vue'),
+ meta: {
+ title: '设备启封申请',
+ icon: 'ep:key',
+ auth: '/device/openApply',
+ },
+ },
+ {
+ path: 'scrapApply',
+ name: 'scrapApply',
+ component: () => import('@/views/device/stateManage/scrapApply.vue'),
+ meta: {
+ title: '设备报废申请',
+ icon: 'ep:key',
+ auth: '/device/scrapApply',
+ },
+ },
+ {
+ path: 'handleApply',
+ name: 'handleApply',
+ component: () => import('@/views/device/stateManage/handleApply.vue'),
+ meta: {
+ title: '设备处置申请',
+ icon: 'ep:key',
+ auth: '/device/handleApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/maintenance',
+ component: Layout,
+ redirect: '/maintenance/maintenanceList',
+ name: 'MaintenanceManage',
+ meta: {
+ title: '设备维护',
+ icon: 'ep:key',
+ auth: '/device/maintenance',
+ },
+ children: [
+ {
+ path: 'maintenanceList',
+ name: 'maintenanceList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceList.vue'),
+ meta: {
+ title: '设备维护列表',
+ icon: 'ep:key',
+ auth: '/device/maintenanceList',
+ },
+ },
+ {
+ path: 'maintenanceCheckList',
+ name: 'maintenanceCheckList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceCheckList.vue'),
+ meta: {
+ title: '设备检修保养验收单',
+ icon: 'ep:key',
+ auth: '/device/maintenance/checkList',
+ },
+ },
+ {
+ path: 'manageCheckList',
+ name: 'manageCheckList',
+ component: () => import('@/views/device/deviceMaintenance/manageCheckList.vue'),
+ meta: {
+ title: '设备管理点检查表',
+ icon: 'ep:key',
+ auth: '/device/manage/checkList',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index fbbf7a4..4153ab5 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -4,6 +4,7 @@
import BreadcrumbExample from './modules/breadcrumb.example'
import systemRoute from './modules/system'
import measureRoute from './modules/measure'
+import deviceRoute from './modules/device'
import type { Route } from '@/global'
import useSettingsStore from '@/store/modules/settings'
@@ -132,11 +133,10 @@
meta: {
title: '测量设备',
icon: '',
- auth: 'clsb',
+ auth: '/device',
},
children: [
- MultilevelMenuExample,
- BreadcrumbExample,
+ ...deviceRoute,
],
},
{
diff --git a/src/App.vue b/src/App.vue
index 8624b4c..52ccd6e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,7 +27,7 @@
actualWidth = 0
}
else if (settingsStore.menu.subMenuCollapse) {
- actualWidth = 64
+ actualWidth = 55
}
return `${actualWidth}px`
})
diff --git a/src/assets/icons/icon-setting.svg b/src/assets/icons/icon-setting.svg
new file mode 100644
index 0000000..33353f0
--- /dev/null
+++ b/src/assets/icons/icon-setting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/next_level.png b/src/assets/images/next_level.png
new file mode 100644
index 0000000..53d2837
--- /dev/null
+++ b/src/assets/images/next_level.png
Binary files differ
diff --git a/src/assets/images/next_level_active.png b/src/assets/images/next_level_active.png
new file mode 100644
index 0000000..1a52ae8
--- /dev/null
+++ b/src/assets/images/next_level_active.png
Binary files differ
diff --git a/src/assets/styles/element-plus/index.scss b/src/assets/styles/element-plus/index.scss
index 3b53223..6dc95ed 100644
--- a/src/assets/styles/element-plus/index.scss
+++ b/src/assets/styles/element-plus/index.scss
@@ -7,6 +7,10 @@
$table:(
"header-bg-color":#f2f6ff,
"header-text-color":#444c59
+ ),
+ $menu:(
+ "base-level-padding": 15px,
+ "level-padding": 10px
)
);
@use "element-plus/theme-chalk/src/index.scss" as *;
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 4565a0f..938efd4 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -6,7 +6,7 @@
// 头部宽度(默认自适应宽度,可固定宽度,固定宽度后为居中显示)
--g-header-width: 100%;
// 头部高度
- --g-header-height: 67px;
+ --g-header-height: 60px;
// 侧边栏宽度
--g-main-sidebar-width: 70px;
--g-sub-sidebar-width: 180px;
@@ -91,3 +91,20 @@
.el-cascader.full-width-input {
width: 100% !important;
}
+
+.el-menu--popup {
+ color: var(--g-sub-sidebar-popmenu-bg);
+
+ .sidebar-item {
+ .el-menu-item,
+ .el-sub-menu__title {
+ color: var(--g-sub-sidebar-popmenu-color) !important;
+ }
+
+ .el-menu-item:hover,
+ .el-sub-menu__title:hover {
+ color: var(--g-sub-sidebar-popmenu-active-color) !important;
+ background-color: var(--g-sub-sidebar-popmenu-hover-color) !important;
+ }
+ }
+}
diff --git a/src/assets/styles/themes.scss b/src/assets/styles/themes.scss
index 47da1fb..418dc62 100644
--- a/src/assets/styles/themes.scss
+++ b/src/assets/styles/themes.scss
@@ -52,6 +52,14 @@
--g-sub-sidebar-menu-active-color: #3d7eff;
// 菜单选中背景色
--g-sub-sidebar-menu-active-bg: #dae9fe;
+ // 弹出菜单背景色
+ --g-sub-sidebar-popmenu-bg: #fff;
+ // 弹出菜单文字颜色
+ --g-sub-sidebar-popmenu-color: rgb(92 92 92);
+ // 弹出菜单鼠标悬浮文字颜色
+ --g-sub-sidebar-popmenu-hover-color: #dae9fe;
+ // 弹出菜单选中文字颜色
+ --g-sub-sidebar-popmenu-active-color: rgb(92 92 92);
/* ----- 顶栏 ----- */
--g-toolbar-bg: var(--el-bg-color);
diff --git a/src/layouts/components/Header/index.vue b/src/layouts/components/Header/index.vue
index 4a98f23..83ad8cd 100644
--- a/src/layouts/components/Header/index.vue
+++ b/src/layouts/components/Header/index.vue
@@ -31,7 +31,7 @@
-
+
{{ item.meta.title }}
@@ -136,8 +136,7 @@
display: flex;
align-items: center;
justify-content: center;
- flex-direction: column;
- padding: 10px;
+ padding: 5px;
height: auto;
cursor: pointer;
color: var(--g-header-menu-color);
@@ -150,7 +149,7 @@
}
.el-icon {
- font-size: 24px;
+ font-size: 18px;
vertical-align: middle;
}
@@ -161,6 +160,14 @@
@include text-overflow(1, false);
}
+
+ .el-icon + span {
+ margin-left: 5px;
+ }
+ }
+
+ .item + .item {
+ margin-left: 5px;
}
.round-item {
diff --git a/src/layouts/components/SidebarItem/index.vue b/src/layouts/components/SidebarItem/index.vue
index b930871..540d253 100644
--- a/src/layouts/components/SidebarItem/index.vue
+++ b/src/layouts/components/SidebarItem/index.vue
@@ -85,15 +85,15 @@
:deep(.el-sub-menu),
:deep(.el-menu-item) {
.title-icon {
- width: 20px;
- font-size: 20px;
+ width: 16px;
+ font-size: 16px;
vertical-align: -0.25em;
transition: transform 0.3s;
color: unset;
}
.title-icon + .title {
- margin-left: 10px;
+ margin-left: 5px;
}
&:hover > .title-icon,
diff --git a/src/layouts/components/SubSidebar/index.vue b/src/layouts/components/SubSidebar/index.vue
index 9fc8a18..5928469 100644
--- a/src/layouts/components/SubSidebar/index.vue
+++ b/src/layouts/components/SubSidebar/index.vue
@@ -62,7 +62,7 @@
transition: background-color 0.3s, var(--el-transition-box-shadow), left 0.3s, width 0.3s;
&.is-collapse {
- width: 64px;
+ width: 55px;
.sidebar-logo {
&:not(.sidebar-logo-bg) {
@@ -96,7 +96,7 @@
.el-menu {
border-right: 0;
- padding: 0 10px;
+ padding: 0 5px;
padding-top: var(--g-sidebar-logo-height);
padding-top: 16px !important;
transition: border-color 0.3s, background-color 0.3s, color 0.3s, padding-top 0.3s;
diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts
new file mode 100644
index 0000000..55b4d14
--- /dev/null
+++ b/src/router/modules/device.ts
@@ -0,0 +1,286 @@
+// 测量设备
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/device',
+ component: Layout,
+ redirect: '/device/bench',
+ name: 'DBench',
+ meta: {
+ title: '工作台',
+ icon: 'ep:key',
+ auth: '/device/bench',
+ },
+ children: [
+ {
+ path: '/device/bench',
+ name: 'DeviceBench',
+ component: () => import('@/views/device/bench/deviceBench.vue'),
+ meta: {
+ title: '工作台',
+ auth: '/device/bench',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/device',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standingBook',
+ component: Layout,
+ redirect: '/standingBook/measureDevice',
+ name: 'standingBook',
+ meta: {
+ title: '设备台账',
+ icon: 'ep:key',
+ auth: '/device/standingBook',
+ },
+ children: [
+ {
+ path: 'measureDevice',
+ name: 'measureDevice',
+ component: () => import('@/views/device/standingBook/measureDevice.vue'),
+ meta: {
+ title: '测量设备',
+ icon: 'ep:key',
+ auth: '/device/measureDevice',
+ },
+ },
+ {
+ path: 'adjustDevice',
+ name: 'adjustDevice',
+ component: () => import('@/views/device/standingBook/adjustDevice.vue'),
+ meta: {
+ title: '校准/检定设备',
+ icon: 'ep:key',
+ auth: '/device/adjustDevice',
+ },
+ },
+ {
+ path: 'standardMatchDevice',
+ name: 'standardMatchDevice',
+ component: () => import('@/views/device/standingBook/standardMatchDevice.vue'),
+ meta: {
+ title: '标准配套设备',
+ icon: 'ep:key',
+ auth: '/device/standardMatchDevice',
+ },
+ },
+ {
+ path: 'measureTool',
+ name: 'measureTool',
+ component: () => import('@/views/device/standingBook/measureTool.vue'),
+ meta: {
+ title: '测量工装',
+ icon: 'ep:key',
+ auth: '/device/measureTool',
+ },
+ },
+ {
+ path: 'fixedAssets',
+ name: 'fixedAssets',
+ component: () => import('@/views/device/standingBook/fixedAssets.vue'),
+ meta: {
+ title: '固定资产',
+ icon: 'ep:key',
+ auth: '/device/fixedAssets',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standard',
+ component: Layout,
+ redirect: '/standard/list',
+ name: 'Standard',
+ meta: {
+ title: '标准装置',
+ icon: 'ep:key',
+ auth: '/standardEquipment',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'standardList',
+ component: () => import('@/views/device/standardEquipment/standardList.vue'),
+ meta: {
+ title: '标准装置列表',
+ icon: 'ep:key',
+ auth: '/standard/list',
+ },
+ },
+ {
+ path: 'expirationRemind',
+ name: 'expirationRemind',
+ component: () => import('@/views/device/standardEquipment/expirationRemind.vue'),
+ meta: {
+ title: '到期提醒',
+ icon: 'ep:key',
+ auth: '/standard/expirationRemind',
+ },
+ },
+ {
+ path: 'changeApply',
+ name: 'changeApply',
+ component: () => import('@/views/device/standardEquipment/changeApply.vue'),
+ meta: {
+ title: '更换申请',
+ icon: 'ep:key',
+ auth: '/standard/changeApply',
+ },
+ },
+ {
+ path: 'pauseApply',
+ name: 'pauseApply',
+ component: () => import('@/views/device/standardEquipment/pauseApply.vue'),
+ meta: {
+ title: '暂停申请',
+ icon: 'ep:key',
+ auth: '/standard/pauseApply',
+ },
+ },
+ {
+ path: 'cancelApply',
+ name: 'cancelApply',
+ component: () => import('@/views/device/standardEquipment/cancelApply.vue'),
+ meta: {
+ title: '撤销申请',
+ icon: 'ep:key',
+ auth: '/standard/cancelApply',
+ },
+ },
+ {
+ path: 'resumeApply',
+ name: 'resumeApply',
+ component: () => import('@/views/device/standardEquipment/resumeApply.vue'),
+ meta: {
+ title: '恢复申请',
+ icon: 'ep:key',
+ auth: '/standard/resumeApply',
+ },
+ },
+ {
+ path: 'checkApply',
+ name: 'checkApply',
+ component: () => import('@/views/device/standardEquipment/checkApply.vue'),
+ meta: {
+ title: '复查申请',
+ icon: 'ep:key',
+ auth: '/standard/checkApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/stateManage',
+ component: Layout,
+ redirect: '/stateManage/unusedApply',
+ name: 'stateManage',
+ meta: {
+ title: '状态管理',
+ icon: 'ep:key',
+ auth: '/device/stateManage',
+ },
+ children: [
+ {
+ path: 'unusedApply',
+ name: 'unusedApply',
+ component: () => import('@/views/device/stateManage/unusedApply.vue'),
+ meta: {
+ title: '设备闲置申请',
+ icon: 'ep:key',
+ auth: '/device/unusedApply',
+ },
+ },
+ {
+ path: 'sealupApply',
+ name: 'sealupApply',
+ component: () => import('@/views/device/stateManage/sealupApply.vue'),
+ meta: {
+ title: '设备封存申请',
+ icon: 'ep:key',
+ auth: '/device/sealupApply',
+ },
+ },
+ {
+ path: 'openApply',
+ name: 'openApply',
+ component: () => import('@/views/device/stateManage/openApply.vue'),
+ meta: {
+ title: '设备启封申请',
+ icon: 'ep:key',
+ auth: '/device/openApply',
+ },
+ },
+ {
+ path: 'scrapApply',
+ name: 'scrapApply',
+ component: () => import('@/views/device/stateManage/scrapApply.vue'),
+ meta: {
+ title: '设备报废申请',
+ icon: 'ep:key',
+ auth: '/device/scrapApply',
+ },
+ },
+ {
+ path: 'handleApply',
+ name: 'handleApply',
+ component: () => import('@/views/device/stateManage/handleApply.vue'),
+ meta: {
+ title: '设备处置申请',
+ icon: 'ep:key',
+ auth: '/device/handleApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/maintenance',
+ component: Layout,
+ redirect: '/maintenance/maintenanceList',
+ name: 'MaintenanceManage',
+ meta: {
+ title: '设备维护',
+ icon: 'ep:key',
+ auth: '/device/maintenance',
+ },
+ children: [
+ {
+ path: 'maintenanceList',
+ name: 'maintenanceList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceList.vue'),
+ meta: {
+ title: '设备维护列表',
+ icon: 'ep:key',
+ auth: '/device/maintenanceList',
+ },
+ },
+ {
+ path: 'maintenanceCheckList',
+ name: 'maintenanceCheckList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceCheckList.vue'),
+ meta: {
+ title: '设备检修保养验收单',
+ icon: 'ep:key',
+ auth: '/device/maintenance/checkList',
+ },
+ },
+ {
+ path: 'manageCheckList',
+ name: 'manageCheckList',
+ component: () => import('@/views/device/deviceMaintenance/manageCheckList.vue'),
+ meta: {
+ title: '设备管理点检查表',
+ icon: 'ep:key',
+ auth: '/device/manage/checkList',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index fbbf7a4..4153ab5 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -4,6 +4,7 @@
import BreadcrumbExample from './modules/breadcrumb.example'
import systemRoute from './modules/system'
import measureRoute from './modules/measure'
+import deviceRoute from './modules/device'
import type { Route } from '@/global'
import useSettingsStore from '@/store/modules/settings'
@@ -132,11 +133,10 @@
meta: {
title: '测量设备',
icon: '',
- auth: 'clsb',
+ auth: '/device',
},
children: [
- MultilevelMenuExample,
- BreadcrumbExample,
+ ...deviceRoute,
],
},
{
diff --git a/src/settings.ts b/src/settings.ts
index f89a3ab..ae5c3f5 100644
--- a/src/settings.ts
+++ b/src/settings.ts
@@ -16,6 +16,7 @@
menu: {
baseOn: 'backend',
menuMode: 'head',
+ showIcon: true,
enableSubMenuCollapseButton: true,
},
toolbar: {
diff --git a/src/App.vue b/src/App.vue
index 8624b4c..52ccd6e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,7 +27,7 @@
actualWidth = 0
}
else if (settingsStore.menu.subMenuCollapse) {
- actualWidth = 64
+ actualWidth = 55
}
return `${actualWidth}px`
})
diff --git a/src/assets/icons/icon-setting.svg b/src/assets/icons/icon-setting.svg
new file mode 100644
index 0000000..33353f0
--- /dev/null
+++ b/src/assets/icons/icon-setting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/next_level.png b/src/assets/images/next_level.png
new file mode 100644
index 0000000..53d2837
--- /dev/null
+++ b/src/assets/images/next_level.png
Binary files differ
diff --git a/src/assets/images/next_level_active.png b/src/assets/images/next_level_active.png
new file mode 100644
index 0000000..1a52ae8
--- /dev/null
+++ b/src/assets/images/next_level_active.png
Binary files differ
diff --git a/src/assets/styles/element-plus/index.scss b/src/assets/styles/element-plus/index.scss
index 3b53223..6dc95ed 100644
--- a/src/assets/styles/element-plus/index.scss
+++ b/src/assets/styles/element-plus/index.scss
@@ -7,6 +7,10 @@
$table:(
"header-bg-color":#f2f6ff,
"header-text-color":#444c59
+ ),
+ $menu:(
+ "base-level-padding": 15px,
+ "level-padding": 10px
)
);
@use "element-plus/theme-chalk/src/index.scss" as *;
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 4565a0f..938efd4 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -6,7 +6,7 @@
// 头部宽度(默认自适应宽度,可固定宽度,固定宽度后为居中显示)
--g-header-width: 100%;
// 头部高度
- --g-header-height: 67px;
+ --g-header-height: 60px;
// 侧边栏宽度
--g-main-sidebar-width: 70px;
--g-sub-sidebar-width: 180px;
@@ -91,3 +91,20 @@
.el-cascader.full-width-input {
width: 100% !important;
}
+
+.el-menu--popup {
+ color: var(--g-sub-sidebar-popmenu-bg);
+
+ .sidebar-item {
+ .el-menu-item,
+ .el-sub-menu__title {
+ color: var(--g-sub-sidebar-popmenu-color) !important;
+ }
+
+ .el-menu-item:hover,
+ .el-sub-menu__title:hover {
+ color: var(--g-sub-sidebar-popmenu-active-color) !important;
+ background-color: var(--g-sub-sidebar-popmenu-hover-color) !important;
+ }
+ }
+}
diff --git a/src/assets/styles/themes.scss b/src/assets/styles/themes.scss
index 47da1fb..418dc62 100644
--- a/src/assets/styles/themes.scss
+++ b/src/assets/styles/themes.scss
@@ -52,6 +52,14 @@
--g-sub-sidebar-menu-active-color: #3d7eff;
// 菜单选中背景色
--g-sub-sidebar-menu-active-bg: #dae9fe;
+ // 弹出菜单背景色
+ --g-sub-sidebar-popmenu-bg: #fff;
+ // 弹出菜单文字颜色
+ --g-sub-sidebar-popmenu-color: rgb(92 92 92);
+ // 弹出菜单鼠标悬浮文字颜色
+ --g-sub-sidebar-popmenu-hover-color: #dae9fe;
+ // 弹出菜单选中文字颜色
+ --g-sub-sidebar-popmenu-active-color: rgb(92 92 92);
/* ----- 顶栏 ----- */
--g-toolbar-bg: var(--el-bg-color);
diff --git a/src/layouts/components/Header/index.vue b/src/layouts/components/Header/index.vue
index 4a98f23..83ad8cd 100644
--- a/src/layouts/components/Header/index.vue
+++ b/src/layouts/components/Header/index.vue
@@ -31,7 +31,7 @@
-
+
{{ item.meta.title }}
@@ -136,8 +136,7 @@
display: flex;
align-items: center;
justify-content: center;
- flex-direction: column;
- padding: 10px;
+ padding: 5px;
height: auto;
cursor: pointer;
color: var(--g-header-menu-color);
@@ -150,7 +149,7 @@
}
.el-icon {
- font-size: 24px;
+ font-size: 18px;
vertical-align: middle;
}
@@ -161,6 +160,14 @@
@include text-overflow(1, false);
}
+
+ .el-icon + span {
+ margin-left: 5px;
+ }
+ }
+
+ .item + .item {
+ margin-left: 5px;
}
.round-item {
diff --git a/src/layouts/components/SidebarItem/index.vue b/src/layouts/components/SidebarItem/index.vue
index b930871..540d253 100644
--- a/src/layouts/components/SidebarItem/index.vue
+++ b/src/layouts/components/SidebarItem/index.vue
@@ -85,15 +85,15 @@
:deep(.el-sub-menu),
:deep(.el-menu-item) {
.title-icon {
- width: 20px;
- font-size: 20px;
+ width: 16px;
+ font-size: 16px;
vertical-align: -0.25em;
transition: transform 0.3s;
color: unset;
}
.title-icon + .title {
- margin-left: 10px;
+ margin-left: 5px;
}
&:hover > .title-icon,
diff --git a/src/layouts/components/SubSidebar/index.vue b/src/layouts/components/SubSidebar/index.vue
index 9fc8a18..5928469 100644
--- a/src/layouts/components/SubSidebar/index.vue
+++ b/src/layouts/components/SubSidebar/index.vue
@@ -62,7 +62,7 @@
transition: background-color 0.3s, var(--el-transition-box-shadow), left 0.3s, width 0.3s;
&.is-collapse {
- width: 64px;
+ width: 55px;
.sidebar-logo {
&:not(.sidebar-logo-bg) {
@@ -96,7 +96,7 @@
.el-menu {
border-right: 0;
- padding: 0 10px;
+ padding: 0 5px;
padding-top: var(--g-sidebar-logo-height);
padding-top: 16px !important;
transition: border-color 0.3s, background-color 0.3s, color 0.3s, padding-top 0.3s;
diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts
new file mode 100644
index 0000000..55b4d14
--- /dev/null
+++ b/src/router/modules/device.ts
@@ -0,0 +1,286 @@
+// 测量设备
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/device',
+ component: Layout,
+ redirect: '/device/bench',
+ name: 'DBench',
+ meta: {
+ title: '工作台',
+ icon: 'ep:key',
+ auth: '/device/bench',
+ },
+ children: [
+ {
+ path: '/device/bench',
+ name: 'DeviceBench',
+ component: () => import('@/views/device/bench/deviceBench.vue'),
+ meta: {
+ title: '工作台',
+ auth: '/device/bench',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/device',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standingBook',
+ component: Layout,
+ redirect: '/standingBook/measureDevice',
+ name: 'standingBook',
+ meta: {
+ title: '设备台账',
+ icon: 'ep:key',
+ auth: '/device/standingBook',
+ },
+ children: [
+ {
+ path: 'measureDevice',
+ name: 'measureDevice',
+ component: () => import('@/views/device/standingBook/measureDevice.vue'),
+ meta: {
+ title: '测量设备',
+ icon: 'ep:key',
+ auth: '/device/measureDevice',
+ },
+ },
+ {
+ path: 'adjustDevice',
+ name: 'adjustDevice',
+ component: () => import('@/views/device/standingBook/adjustDevice.vue'),
+ meta: {
+ title: '校准/检定设备',
+ icon: 'ep:key',
+ auth: '/device/adjustDevice',
+ },
+ },
+ {
+ path: 'standardMatchDevice',
+ name: 'standardMatchDevice',
+ component: () => import('@/views/device/standingBook/standardMatchDevice.vue'),
+ meta: {
+ title: '标准配套设备',
+ icon: 'ep:key',
+ auth: '/device/standardMatchDevice',
+ },
+ },
+ {
+ path: 'measureTool',
+ name: 'measureTool',
+ component: () => import('@/views/device/standingBook/measureTool.vue'),
+ meta: {
+ title: '测量工装',
+ icon: 'ep:key',
+ auth: '/device/measureTool',
+ },
+ },
+ {
+ path: 'fixedAssets',
+ name: 'fixedAssets',
+ component: () => import('@/views/device/standingBook/fixedAssets.vue'),
+ meta: {
+ title: '固定资产',
+ icon: 'ep:key',
+ auth: '/device/fixedAssets',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standard',
+ component: Layout,
+ redirect: '/standard/list',
+ name: 'Standard',
+ meta: {
+ title: '标准装置',
+ icon: 'ep:key',
+ auth: '/standardEquipment',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'standardList',
+ component: () => import('@/views/device/standardEquipment/standardList.vue'),
+ meta: {
+ title: '标准装置列表',
+ icon: 'ep:key',
+ auth: '/standard/list',
+ },
+ },
+ {
+ path: 'expirationRemind',
+ name: 'expirationRemind',
+ component: () => import('@/views/device/standardEquipment/expirationRemind.vue'),
+ meta: {
+ title: '到期提醒',
+ icon: 'ep:key',
+ auth: '/standard/expirationRemind',
+ },
+ },
+ {
+ path: 'changeApply',
+ name: 'changeApply',
+ component: () => import('@/views/device/standardEquipment/changeApply.vue'),
+ meta: {
+ title: '更换申请',
+ icon: 'ep:key',
+ auth: '/standard/changeApply',
+ },
+ },
+ {
+ path: 'pauseApply',
+ name: 'pauseApply',
+ component: () => import('@/views/device/standardEquipment/pauseApply.vue'),
+ meta: {
+ title: '暂停申请',
+ icon: 'ep:key',
+ auth: '/standard/pauseApply',
+ },
+ },
+ {
+ path: 'cancelApply',
+ name: 'cancelApply',
+ component: () => import('@/views/device/standardEquipment/cancelApply.vue'),
+ meta: {
+ title: '撤销申请',
+ icon: 'ep:key',
+ auth: '/standard/cancelApply',
+ },
+ },
+ {
+ path: 'resumeApply',
+ name: 'resumeApply',
+ component: () => import('@/views/device/standardEquipment/resumeApply.vue'),
+ meta: {
+ title: '恢复申请',
+ icon: 'ep:key',
+ auth: '/standard/resumeApply',
+ },
+ },
+ {
+ path: 'checkApply',
+ name: 'checkApply',
+ component: () => import('@/views/device/standardEquipment/checkApply.vue'),
+ meta: {
+ title: '复查申请',
+ icon: 'ep:key',
+ auth: '/standard/checkApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/stateManage',
+ component: Layout,
+ redirect: '/stateManage/unusedApply',
+ name: 'stateManage',
+ meta: {
+ title: '状态管理',
+ icon: 'ep:key',
+ auth: '/device/stateManage',
+ },
+ children: [
+ {
+ path: 'unusedApply',
+ name: 'unusedApply',
+ component: () => import('@/views/device/stateManage/unusedApply.vue'),
+ meta: {
+ title: '设备闲置申请',
+ icon: 'ep:key',
+ auth: '/device/unusedApply',
+ },
+ },
+ {
+ path: 'sealupApply',
+ name: 'sealupApply',
+ component: () => import('@/views/device/stateManage/sealupApply.vue'),
+ meta: {
+ title: '设备封存申请',
+ icon: 'ep:key',
+ auth: '/device/sealupApply',
+ },
+ },
+ {
+ path: 'openApply',
+ name: 'openApply',
+ component: () => import('@/views/device/stateManage/openApply.vue'),
+ meta: {
+ title: '设备启封申请',
+ icon: 'ep:key',
+ auth: '/device/openApply',
+ },
+ },
+ {
+ path: 'scrapApply',
+ name: 'scrapApply',
+ component: () => import('@/views/device/stateManage/scrapApply.vue'),
+ meta: {
+ title: '设备报废申请',
+ icon: 'ep:key',
+ auth: '/device/scrapApply',
+ },
+ },
+ {
+ path: 'handleApply',
+ name: 'handleApply',
+ component: () => import('@/views/device/stateManage/handleApply.vue'),
+ meta: {
+ title: '设备处置申请',
+ icon: 'ep:key',
+ auth: '/device/handleApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/maintenance',
+ component: Layout,
+ redirect: '/maintenance/maintenanceList',
+ name: 'MaintenanceManage',
+ meta: {
+ title: '设备维护',
+ icon: 'ep:key',
+ auth: '/device/maintenance',
+ },
+ children: [
+ {
+ path: 'maintenanceList',
+ name: 'maintenanceList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceList.vue'),
+ meta: {
+ title: '设备维护列表',
+ icon: 'ep:key',
+ auth: '/device/maintenanceList',
+ },
+ },
+ {
+ path: 'maintenanceCheckList',
+ name: 'maintenanceCheckList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceCheckList.vue'),
+ meta: {
+ title: '设备检修保养验收单',
+ icon: 'ep:key',
+ auth: '/device/maintenance/checkList',
+ },
+ },
+ {
+ path: 'manageCheckList',
+ name: 'manageCheckList',
+ component: () => import('@/views/device/deviceMaintenance/manageCheckList.vue'),
+ meta: {
+ title: '设备管理点检查表',
+ icon: 'ep:key',
+ auth: '/device/manage/checkList',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index fbbf7a4..4153ab5 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -4,6 +4,7 @@
import BreadcrumbExample from './modules/breadcrumb.example'
import systemRoute from './modules/system'
import measureRoute from './modules/measure'
+import deviceRoute from './modules/device'
import type { Route } from '@/global'
import useSettingsStore from '@/store/modules/settings'
@@ -132,11 +133,10 @@
meta: {
title: '测量设备',
icon: '',
- auth: 'clsb',
+ auth: '/device',
},
children: [
- MultilevelMenuExample,
- BreadcrumbExample,
+ ...deviceRoute,
],
},
{
diff --git a/src/settings.ts b/src/settings.ts
index f89a3ab..ae5c3f5 100644
--- a/src/settings.ts
+++ b/src/settings.ts
@@ -16,6 +16,7 @@
menu: {
baseOn: 'backend',
menuMode: 'head',
+ showIcon: true,
enableSubMenuCollapseButton: true,
},
toolbar: {
diff --git a/src/views/device/bench/deviceBench.vue b/src/views/device/bench/deviceBench.vue
new file mode 100644
index 0000000..9206576
--- /dev/null
+++ b/src/views/device/bench/deviceBench.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 工作台
+
+
+
+
diff --git a/src/App.vue b/src/App.vue
index 8624b4c..52ccd6e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,7 +27,7 @@
actualWidth = 0
}
else if (settingsStore.menu.subMenuCollapse) {
- actualWidth = 64
+ actualWidth = 55
}
return `${actualWidth}px`
})
diff --git a/src/assets/icons/icon-setting.svg b/src/assets/icons/icon-setting.svg
new file mode 100644
index 0000000..33353f0
--- /dev/null
+++ b/src/assets/icons/icon-setting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/next_level.png b/src/assets/images/next_level.png
new file mode 100644
index 0000000..53d2837
--- /dev/null
+++ b/src/assets/images/next_level.png
Binary files differ
diff --git a/src/assets/images/next_level_active.png b/src/assets/images/next_level_active.png
new file mode 100644
index 0000000..1a52ae8
--- /dev/null
+++ b/src/assets/images/next_level_active.png
Binary files differ
diff --git a/src/assets/styles/element-plus/index.scss b/src/assets/styles/element-plus/index.scss
index 3b53223..6dc95ed 100644
--- a/src/assets/styles/element-plus/index.scss
+++ b/src/assets/styles/element-plus/index.scss
@@ -7,6 +7,10 @@
$table:(
"header-bg-color":#f2f6ff,
"header-text-color":#444c59
+ ),
+ $menu:(
+ "base-level-padding": 15px,
+ "level-padding": 10px
)
);
@use "element-plus/theme-chalk/src/index.scss" as *;
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 4565a0f..938efd4 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -6,7 +6,7 @@
// 头部宽度(默认自适应宽度,可固定宽度,固定宽度后为居中显示)
--g-header-width: 100%;
// 头部高度
- --g-header-height: 67px;
+ --g-header-height: 60px;
// 侧边栏宽度
--g-main-sidebar-width: 70px;
--g-sub-sidebar-width: 180px;
@@ -91,3 +91,20 @@
.el-cascader.full-width-input {
width: 100% !important;
}
+
+.el-menu--popup {
+ color: var(--g-sub-sidebar-popmenu-bg);
+
+ .sidebar-item {
+ .el-menu-item,
+ .el-sub-menu__title {
+ color: var(--g-sub-sidebar-popmenu-color) !important;
+ }
+
+ .el-menu-item:hover,
+ .el-sub-menu__title:hover {
+ color: var(--g-sub-sidebar-popmenu-active-color) !important;
+ background-color: var(--g-sub-sidebar-popmenu-hover-color) !important;
+ }
+ }
+}
diff --git a/src/assets/styles/themes.scss b/src/assets/styles/themes.scss
index 47da1fb..418dc62 100644
--- a/src/assets/styles/themes.scss
+++ b/src/assets/styles/themes.scss
@@ -52,6 +52,14 @@
--g-sub-sidebar-menu-active-color: #3d7eff;
// 菜单选中背景色
--g-sub-sidebar-menu-active-bg: #dae9fe;
+ // 弹出菜单背景色
+ --g-sub-sidebar-popmenu-bg: #fff;
+ // 弹出菜单文字颜色
+ --g-sub-sidebar-popmenu-color: rgb(92 92 92);
+ // 弹出菜单鼠标悬浮文字颜色
+ --g-sub-sidebar-popmenu-hover-color: #dae9fe;
+ // 弹出菜单选中文字颜色
+ --g-sub-sidebar-popmenu-active-color: rgb(92 92 92);
/* ----- 顶栏 ----- */
--g-toolbar-bg: var(--el-bg-color);
diff --git a/src/layouts/components/Header/index.vue b/src/layouts/components/Header/index.vue
index 4a98f23..83ad8cd 100644
--- a/src/layouts/components/Header/index.vue
+++ b/src/layouts/components/Header/index.vue
@@ -31,7 +31,7 @@
-
+
{{ item.meta.title }}
@@ -136,8 +136,7 @@
display: flex;
align-items: center;
justify-content: center;
- flex-direction: column;
- padding: 10px;
+ padding: 5px;
height: auto;
cursor: pointer;
color: var(--g-header-menu-color);
@@ -150,7 +149,7 @@
}
.el-icon {
- font-size: 24px;
+ font-size: 18px;
vertical-align: middle;
}
@@ -161,6 +160,14 @@
@include text-overflow(1, false);
}
+
+ .el-icon + span {
+ margin-left: 5px;
+ }
+ }
+
+ .item + .item {
+ margin-left: 5px;
}
.round-item {
diff --git a/src/layouts/components/SidebarItem/index.vue b/src/layouts/components/SidebarItem/index.vue
index b930871..540d253 100644
--- a/src/layouts/components/SidebarItem/index.vue
+++ b/src/layouts/components/SidebarItem/index.vue
@@ -85,15 +85,15 @@
:deep(.el-sub-menu),
:deep(.el-menu-item) {
.title-icon {
- width: 20px;
- font-size: 20px;
+ width: 16px;
+ font-size: 16px;
vertical-align: -0.25em;
transition: transform 0.3s;
color: unset;
}
.title-icon + .title {
- margin-left: 10px;
+ margin-left: 5px;
}
&:hover > .title-icon,
diff --git a/src/layouts/components/SubSidebar/index.vue b/src/layouts/components/SubSidebar/index.vue
index 9fc8a18..5928469 100644
--- a/src/layouts/components/SubSidebar/index.vue
+++ b/src/layouts/components/SubSidebar/index.vue
@@ -62,7 +62,7 @@
transition: background-color 0.3s, var(--el-transition-box-shadow), left 0.3s, width 0.3s;
&.is-collapse {
- width: 64px;
+ width: 55px;
.sidebar-logo {
&:not(.sidebar-logo-bg) {
@@ -96,7 +96,7 @@
.el-menu {
border-right: 0;
- padding: 0 10px;
+ padding: 0 5px;
padding-top: var(--g-sidebar-logo-height);
padding-top: 16px !important;
transition: border-color 0.3s, background-color 0.3s, color 0.3s, padding-top 0.3s;
diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts
new file mode 100644
index 0000000..55b4d14
--- /dev/null
+++ b/src/router/modules/device.ts
@@ -0,0 +1,286 @@
+// 测量设备
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/device',
+ component: Layout,
+ redirect: '/device/bench',
+ name: 'DBench',
+ meta: {
+ title: '工作台',
+ icon: 'ep:key',
+ auth: '/device/bench',
+ },
+ children: [
+ {
+ path: '/device/bench',
+ name: 'DeviceBench',
+ component: () => import('@/views/device/bench/deviceBench.vue'),
+ meta: {
+ title: '工作台',
+ auth: '/device/bench',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/device',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standingBook',
+ component: Layout,
+ redirect: '/standingBook/measureDevice',
+ name: 'standingBook',
+ meta: {
+ title: '设备台账',
+ icon: 'ep:key',
+ auth: '/device/standingBook',
+ },
+ children: [
+ {
+ path: 'measureDevice',
+ name: 'measureDevice',
+ component: () => import('@/views/device/standingBook/measureDevice.vue'),
+ meta: {
+ title: '测量设备',
+ icon: 'ep:key',
+ auth: '/device/measureDevice',
+ },
+ },
+ {
+ path: 'adjustDevice',
+ name: 'adjustDevice',
+ component: () => import('@/views/device/standingBook/adjustDevice.vue'),
+ meta: {
+ title: '校准/检定设备',
+ icon: 'ep:key',
+ auth: '/device/adjustDevice',
+ },
+ },
+ {
+ path: 'standardMatchDevice',
+ name: 'standardMatchDevice',
+ component: () => import('@/views/device/standingBook/standardMatchDevice.vue'),
+ meta: {
+ title: '标准配套设备',
+ icon: 'ep:key',
+ auth: '/device/standardMatchDevice',
+ },
+ },
+ {
+ path: 'measureTool',
+ name: 'measureTool',
+ component: () => import('@/views/device/standingBook/measureTool.vue'),
+ meta: {
+ title: '测量工装',
+ icon: 'ep:key',
+ auth: '/device/measureTool',
+ },
+ },
+ {
+ path: 'fixedAssets',
+ name: 'fixedAssets',
+ component: () => import('@/views/device/standingBook/fixedAssets.vue'),
+ meta: {
+ title: '固定资产',
+ icon: 'ep:key',
+ auth: '/device/fixedAssets',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standard',
+ component: Layout,
+ redirect: '/standard/list',
+ name: 'Standard',
+ meta: {
+ title: '标准装置',
+ icon: 'ep:key',
+ auth: '/standardEquipment',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'standardList',
+ component: () => import('@/views/device/standardEquipment/standardList.vue'),
+ meta: {
+ title: '标准装置列表',
+ icon: 'ep:key',
+ auth: '/standard/list',
+ },
+ },
+ {
+ path: 'expirationRemind',
+ name: 'expirationRemind',
+ component: () => import('@/views/device/standardEquipment/expirationRemind.vue'),
+ meta: {
+ title: '到期提醒',
+ icon: 'ep:key',
+ auth: '/standard/expirationRemind',
+ },
+ },
+ {
+ path: 'changeApply',
+ name: 'changeApply',
+ component: () => import('@/views/device/standardEquipment/changeApply.vue'),
+ meta: {
+ title: '更换申请',
+ icon: 'ep:key',
+ auth: '/standard/changeApply',
+ },
+ },
+ {
+ path: 'pauseApply',
+ name: 'pauseApply',
+ component: () => import('@/views/device/standardEquipment/pauseApply.vue'),
+ meta: {
+ title: '暂停申请',
+ icon: 'ep:key',
+ auth: '/standard/pauseApply',
+ },
+ },
+ {
+ path: 'cancelApply',
+ name: 'cancelApply',
+ component: () => import('@/views/device/standardEquipment/cancelApply.vue'),
+ meta: {
+ title: '撤销申请',
+ icon: 'ep:key',
+ auth: '/standard/cancelApply',
+ },
+ },
+ {
+ path: 'resumeApply',
+ name: 'resumeApply',
+ component: () => import('@/views/device/standardEquipment/resumeApply.vue'),
+ meta: {
+ title: '恢复申请',
+ icon: 'ep:key',
+ auth: '/standard/resumeApply',
+ },
+ },
+ {
+ path: 'checkApply',
+ name: 'checkApply',
+ component: () => import('@/views/device/standardEquipment/checkApply.vue'),
+ meta: {
+ title: '复查申请',
+ icon: 'ep:key',
+ auth: '/standard/checkApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/stateManage',
+ component: Layout,
+ redirect: '/stateManage/unusedApply',
+ name: 'stateManage',
+ meta: {
+ title: '状态管理',
+ icon: 'ep:key',
+ auth: '/device/stateManage',
+ },
+ children: [
+ {
+ path: 'unusedApply',
+ name: 'unusedApply',
+ component: () => import('@/views/device/stateManage/unusedApply.vue'),
+ meta: {
+ title: '设备闲置申请',
+ icon: 'ep:key',
+ auth: '/device/unusedApply',
+ },
+ },
+ {
+ path: 'sealupApply',
+ name: 'sealupApply',
+ component: () => import('@/views/device/stateManage/sealupApply.vue'),
+ meta: {
+ title: '设备封存申请',
+ icon: 'ep:key',
+ auth: '/device/sealupApply',
+ },
+ },
+ {
+ path: 'openApply',
+ name: 'openApply',
+ component: () => import('@/views/device/stateManage/openApply.vue'),
+ meta: {
+ title: '设备启封申请',
+ icon: 'ep:key',
+ auth: '/device/openApply',
+ },
+ },
+ {
+ path: 'scrapApply',
+ name: 'scrapApply',
+ component: () => import('@/views/device/stateManage/scrapApply.vue'),
+ meta: {
+ title: '设备报废申请',
+ icon: 'ep:key',
+ auth: '/device/scrapApply',
+ },
+ },
+ {
+ path: 'handleApply',
+ name: 'handleApply',
+ component: () => import('@/views/device/stateManage/handleApply.vue'),
+ meta: {
+ title: '设备处置申请',
+ icon: 'ep:key',
+ auth: '/device/handleApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/maintenance',
+ component: Layout,
+ redirect: '/maintenance/maintenanceList',
+ name: 'MaintenanceManage',
+ meta: {
+ title: '设备维护',
+ icon: 'ep:key',
+ auth: '/device/maintenance',
+ },
+ children: [
+ {
+ path: 'maintenanceList',
+ name: 'maintenanceList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceList.vue'),
+ meta: {
+ title: '设备维护列表',
+ icon: 'ep:key',
+ auth: '/device/maintenanceList',
+ },
+ },
+ {
+ path: 'maintenanceCheckList',
+ name: 'maintenanceCheckList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceCheckList.vue'),
+ meta: {
+ title: '设备检修保养验收单',
+ icon: 'ep:key',
+ auth: '/device/maintenance/checkList',
+ },
+ },
+ {
+ path: 'manageCheckList',
+ name: 'manageCheckList',
+ component: () => import('@/views/device/deviceMaintenance/manageCheckList.vue'),
+ meta: {
+ title: '设备管理点检查表',
+ icon: 'ep:key',
+ auth: '/device/manage/checkList',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index fbbf7a4..4153ab5 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -4,6 +4,7 @@
import BreadcrumbExample from './modules/breadcrumb.example'
import systemRoute from './modules/system'
import measureRoute from './modules/measure'
+import deviceRoute from './modules/device'
import type { Route } from '@/global'
import useSettingsStore from '@/store/modules/settings'
@@ -132,11 +133,10 @@
meta: {
title: '测量设备',
icon: '',
- auth: 'clsb',
+ auth: '/device',
},
children: [
- MultilevelMenuExample,
- BreadcrumbExample,
+ ...deviceRoute,
],
},
{
diff --git a/src/settings.ts b/src/settings.ts
index f89a3ab..ae5c3f5 100644
--- a/src/settings.ts
+++ b/src/settings.ts
@@ -16,6 +16,7 @@
menu: {
baseOn: 'backend',
menuMode: 'head',
+ showIcon: true,
enableSubMenuCollapseButton: true,
},
toolbar: {
diff --git a/src/views/device/bench/deviceBench.vue b/src/views/device/bench/deviceBench.vue
new file mode 100644
index 0000000..9206576
--- /dev/null
+++ b/src/views/device/bench/deviceBench.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 工作台
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceCheckList.vue b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
new file mode 100644
index 0000000..84224db
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备检修保养验收单
+
+
+
+
diff --git a/src/App.vue b/src/App.vue
index 8624b4c..52ccd6e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,7 +27,7 @@
actualWidth = 0
}
else if (settingsStore.menu.subMenuCollapse) {
- actualWidth = 64
+ actualWidth = 55
}
return `${actualWidth}px`
})
diff --git a/src/assets/icons/icon-setting.svg b/src/assets/icons/icon-setting.svg
new file mode 100644
index 0000000..33353f0
--- /dev/null
+++ b/src/assets/icons/icon-setting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/next_level.png b/src/assets/images/next_level.png
new file mode 100644
index 0000000..53d2837
--- /dev/null
+++ b/src/assets/images/next_level.png
Binary files differ
diff --git a/src/assets/images/next_level_active.png b/src/assets/images/next_level_active.png
new file mode 100644
index 0000000..1a52ae8
--- /dev/null
+++ b/src/assets/images/next_level_active.png
Binary files differ
diff --git a/src/assets/styles/element-plus/index.scss b/src/assets/styles/element-plus/index.scss
index 3b53223..6dc95ed 100644
--- a/src/assets/styles/element-plus/index.scss
+++ b/src/assets/styles/element-plus/index.scss
@@ -7,6 +7,10 @@
$table:(
"header-bg-color":#f2f6ff,
"header-text-color":#444c59
+ ),
+ $menu:(
+ "base-level-padding": 15px,
+ "level-padding": 10px
)
);
@use "element-plus/theme-chalk/src/index.scss" as *;
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 4565a0f..938efd4 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -6,7 +6,7 @@
// 头部宽度(默认自适应宽度,可固定宽度,固定宽度后为居中显示)
--g-header-width: 100%;
// 头部高度
- --g-header-height: 67px;
+ --g-header-height: 60px;
// 侧边栏宽度
--g-main-sidebar-width: 70px;
--g-sub-sidebar-width: 180px;
@@ -91,3 +91,20 @@
.el-cascader.full-width-input {
width: 100% !important;
}
+
+.el-menu--popup {
+ color: var(--g-sub-sidebar-popmenu-bg);
+
+ .sidebar-item {
+ .el-menu-item,
+ .el-sub-menu__title {
+ color: var(--g-sub-sidebar-popmenu-color) !important;
+ }
+
+ .el-menu-item:hover,
+ .el-sub-menu__title:hover {
+ color: var(--g-sub-sidebar-popmenu-active-color) !important;
+ background-color: var(--g-sub-sidebar-popmenu-hover-color) !important;
+ }
+ }
+}
diff --git a/src/assets/styles/themes.scss b/src/assets/styles/themes.scss
index 47da1fb..418dc62 100644
--- a/src/assets/styles/themes.scss
+++ b/src/assets/styles/themes.scss
@@ -52,6 +52,14 @@
--g-sub-sidebar-menu-active-color: #3d7eff;
// 菜单选中背景色
--g-sub-sidebar-menu-active-bg: #dae9fe;
+ // 弹出菜单背景色
+ --g-sub-sidebar-popmenu-bg: #fff;
+ // 弹出菜单文字颜色
+ --g-sub-sidebar-popmenu-color: rgb(92 92 92);
+ // 弹出菜单鼠标悬浮文字颜色
+ --g-sub-sidebar-popmenu-hover-color: #dae9fe;
+ // 弹出菜单选中文字颜色
+ --g-sub-sidebar-popmenu-active-color: rgb(92 92 92);
/* ----- 顶栏 ----- */
--g-toolbar-bg: var(--el-bg-color);
diff --git a/src/layouts/components/Header/index.vue b/src/layouts/components/Header/index.vue
index 4a98f23..83ad8cd 100644
--- a/src/layouts/components/Header/index.vue
+++ b/src/layouts/components/Header/index.vue
@@ -31,7 +31,7 @@
-
+
{{ item.meta.title }}
@@ -136,8 +136,7 @@
display: flex;
align-items: center;
justify-content: center;
- flex-direction: column;
- padding: 10px;
+ padding: 5px;
height: auto;
cursor: pointer;
color: var(--g-header-menu-color);
@@ -150,7 +149,7 @@
}
.el-icon {
- font-size: 24px;
+ font-size: 18px;
vertical-align: middle;
}
@@ -161,6 +160,14 @@
@include text-overflow(1, false);
}
+
+ .el-icon + span {
+ margin-left: 5px;
+ }
+ }
+
+ .item + .item {
+ margin-left: 5px;
}
.round-item {
diff --git a/src/layouts/components/SidebarItem/index.vue b/src/layouts/components/SidebarItem/index.vue
index b930871..540d253 100644
--- a/src/layouts/components/SidebarItem/index.vue
+++ b/src/layouts/components/SidebarItem/index.vue
@@ -85,15 +85,15 @@
:deep(.el-sub-menu),
:deep(.el-menu-item) {
.title-icon {
- width: 20px;
- font-size: 20px;
+ width: 16px;
+ font-size: 16px;
vertical-align: -0.25em;
transition: transform 0.3s;
color: unset;
}
.title-icon + .title {
- margin-left: 10px;
+ margin-left: 5px;
}
&:hover > .title-icon,
diff --git a/src/layouts/components/SubSidebar/index.vue b/src/layouts/components/SubSidebar/index.vue
index 9fc8a18..5928469 100644
--- a/src/layouts/components/SubSidebar/index.vue
+++ b/src/layouts/components/SubSidebar/index.vue
@@ -62,7 +62,7 @@
transition: background-color 0.3s, var(--el-transition-box-shadow), left 0.3s, width 0.3s;
&.is-collapse {
- width: 64px;
+ width: 55px;
.sidebar-logo {
&:not(.sidebar-logo-bg) {
@@ -96,7 +96,7 @@
.el-menu {
border-right: 0;
- padding: 0 10px;
+ padding: 0 5px;
padding-top: var(--g-sidebar-logo-height);
padding-top: 16px !important;
transition: border-color 0.3s, background-color 0.3s, color 0.3s, padding-top 0.3s;
diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts
new file mode 100644
index 0000000..55b4d14
--- /dev/null
+++ b/src/router/modules/device.ts
@@ -0,0 +1,286 @@
+// 测量设备
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/device',
+ component: Layout,
+ redirect: '/device/bench',
+ name: 'DBench',
+ meta: {
+ title: '工作台',
+ icon: 'ep:key',
+ auth: '/device/bench',
+ },
+ children: [
+ {
+ path: '/device/bench',
+ name: 'DeviceBench',
+ component: () => import('@/views/device/bench/deviceBench.vue'),
+ meta: {
+ title: '工作台',
+ auth: '/device/bench',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/device',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standingBook',
+ component: Layout,
+ redirect: '/standingBook/measureDevice',
+ name: 'standingBook',
+ meta: {
+ title: '设备台账',
+ icon: 'ep:key',
+ auth: '/device/standingBook',
+ },
+ children: [
+ {
+ path: 'measureDevice',
+ name: 'measureDevice',
+ component: () => import('@/views/device/standingBook/measureDevice.vue'),
+ meta: {
+ title: '测量设备',
+ icon: 'ep:key',
+ auth: '/device/measureDevice',
+ },
+ },
+ {
+ path: 'adjustDevice',
+ name: 'adjustDevice',
+ component: () => import('@/views/device/standingBook/adjustDevice.vue'),
+ meta: {
+ title: '校准/检定设备',
+ icon: 'ep:key',
+ auth: '/device/adjustDevice',
+ },
+ },
+ {
+ path: 'standardMatchDevice',
+ name: 'standardMatchDevice',
+ component: () => import('@/views/device/standingBook/standardMatchDevice.vue'),
+ meta: {
+ title: '标准配套设备',
+ icon: 'ep:key',
+ auth: '/device/standardMatchDevice',
+ },
+ },
+ {
+ path: 'measureTool',
+ name: 'measureTool',
+ component: () => import('@/views/device/standingBook/measureTool.vue'),
+ meta: {
+ title: '测量工装',
+ icon: 'ep:key',
+ auth: '/device/measureTool',
+ },
+ },
+ {
+ path: 'fixedAssets',
+ name: 'fixedAssets',
+ component: () => import('@/views/device/standingBook/fixedAssets.vue'),
+ meta: {
+ title: '固定资产',
+ icon: 'ep:key',
+ auth: '/device/fixedAssets',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standard',
+ component: Layout,
+ redirect: '/standard/list',
+ name: 'Standard',
+ meta: {
+ title: '标准装置',
+ icon: 'ep:key',
+ auth: '/standardEquipment',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'standardList',
+ component: () => import('@/views/device/standardEquipment/standardList.vue'),
+ meta: {
+ title: '标准装置列表',
+ icon: 'ep:key',
+ auth: '/standard/list',
+ },
+ },
+ {
+ path: 'expirationRemind',
+ name: 'expirationRemind',
+ component: () => import('@/views/device/standardEquipment/expirationRemind.vue'),
+ meta: {
+ title: '到期提醒',
+ icon: 'ep:key',
+ auth: '/standard/expirationRemind',
+ },
+ },
+ {
+ path: 'changeApply',
+ name: 'changeApply',
+ component: () => import('@/views/device/standardEquipment/changeApply.vue'),
+ meta: {
+ title: '更换申请',
+ icon: 'ep:key',
+ auth: '/standard/changeApply',
+ },
+ },
+ {
+ path: 'pauseApply',
+ name: 'pauseApply',
+ component: () => import('@/views/device/standardEquipment/pauseApply.vue'),
+ meta: {
+ title: '暂停申请',
+ icon: 'ep:key',
+ auth: '/standard/pauseApply',
+ },
+ },
+ {
+ path: 'cancelApply',
+ name: 'cancelApply',
+ component: () => import('@/views/device/standardEquipment/cancelApply.vue'),
+ meta: {
+ title: '撤销申请',
+ icon: 'ep:key',
+ auth: '/standard/cancelApply',
+ },
+ },
+ {
+ path: 'resumeApply',
+ name: 'resumeApply',
+ component: () => import('@/views/device/standardEquipment/resumeApply.vue'),
+ meta: {
+ title: '恢复申请',
+ icon: 'ep:key',
+ auth: '/standard/resumeApply',
+ },
+ },
+ {
+ path: 'checkApply',
+ name: 'checkApply',
+ component: () => import('@/views/device/standardEquipment/checkApply.vue'),
+ meta: {
+ title: '复查申请',
+ icon: 'ep:key',
+ auth: '/standard/checkApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/stateManage',
+ component: Layout,
+ redirect: '/stateManage/unusedApply',
+ name: 'stateManage',
+ meta: {
+ title: '状态管理',
+ icon: 'ep:key',
+ auth: '/device/stateManage',
+ },
+ children: [
+ {
+ path: 'unusedApply',
+ name: 'unusedApply',
+ component: () => import('@/views/device/stateManage/unusedApply.vue'),
+ meta: {
+ title: '设备闲置申请',
+ icon: 'ep:key',
+ auth: '/device/unusedApply',
+ },
+ },
+ {
+ path: 'sealupApply',
+ name: 'sealupApply',
+ component: () => import('@/views/device/stateManage/sealupApply.vue'),
+ meta: {
+ title: '设备封存申请',
+ icon: 'ep:key',
+ auth: '/device/sealupApply',
+ },
+ },
+ {
+ path: 'openApply',
+ name: 'openApply',
+ component: () => import('@/views/device/stateManage/openApply.vue'),
+ meta: {
+ title: '设备启封申请',
+ icon: 'ep:key',
+ auth: '/device/openApply',
+ },
+ },
+ {
+ path: 'scrapApply',
+ name: 'scrapApply',
+ component: () => import('@/views/device/stateManage/scrapApply.vue'),
+ meta: {
+ title: '设备报废申请',
+ icon: 'ep:key',
+ auth: '/device/scrapApply',
+ },
+ },
+ {
+ path: 'handleApply',
+ name: 'handleApply',
+ component: () => import('@/views/device/stateManage/handleApply.vue'),
+ meta: {
+ title: '设备处置申请',
+ icon: 'ep:key',
+ auth: '/device/handleApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/maintenance',
+ component: Layout,
+ redirect: '/maintenance/maintenanceList',
+ name: 'MaintenanceManage',
+ meta: {
+ title: '设备维护',
+ icon: 'ep:key',
+ auth: '/device/maintenance',
+ },
+ children: [
+ {
+ path: 'maintenanceList',
+ name: 'maintenanceList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceList.vue'),
+ meta: {
+ title: '设备维护列表',
+ icon: 'ep:key',
+ auth: '/device/maintenanceList',
+ },
+ },
+ {
+ path: 'maintenanceCheckList',
+ name: 'maintenanceCheckList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceCheckList.vue'),
+ meta: {
+ title: '设备检修保养验收单',
+ icon: 'ep:key',
+ auth: '/device/maintenance/checkList',
+ },
+ },
+ {
+ path: 'manageCheckList',
+ name: 'manageCheckList',
+ component: () => import('@/views/device/deviceMaintenance/manageCheckList.vue'),
+ meta: {
+ title: '设备管理点检查表',
+ icon: 'ep:key',
+ auth: '/device/manage/checkList',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index fbbf7a4..4153ab5 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -4,6 +4,7 @@
import BreadcrumbExample from './modules/breadcrumb.example'
import systemRoute from './modules/system'
import measureRoute from './modules/measure'
+import deviceRoute from './modules/device'
import type { Route } from '@/global'
import useSettingsStore from '@/store/modules/settings'
@@ -132,11 +133,10 @@
meta: {
title: '测量设备',
icon: '',
- auth: 'clsb',
+ auth: '/device',
},
children: [
- MultilevelMenuExample,
- BreadcrumbExample,
+ ...deviceRoute,
],
},
{
diff --git a/src/settings.ts b/src/settings.ts
index f89a3ab..ae5c3f5 100644
--- a/src/settings.ts
+++ b/src/settings.ts
@@ -16,6 +16,7 @@
menu: {
baseOn: 'backend',
menuMode: 'head',
+ showIcon: true,
enableSubMenuCollapseButton: true,
},
toolbar: {
diff --git a/src/views/device/bench/deviceBench.vue b/src/views/device/bench/deviceBench.vue
new file mode 100644
index 0000000..9206576
--- /dev/null
+++ b/src/views/device/bench/deviceBench.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 工作台
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceCheckList.vue b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
new file mode 100644
index 0000000..84224db
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备检修保养验收单
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue
new file mode 100644
index 0000000..3c91abd
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备维护列表
+
+
+
+
diff --git a/src/App.vue b/src/App.vue
index 8624b4c..52ccd6e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,7 +27,7 @@
actualWidth = 0
}
else if (settingsStore.menu.subMenuCollapse) {
- actualWidth = 64
+ actualWidth = 55
}
return `${actualWidth}px`
})
diff --git a/src/assets/icons/icon-setting.svg b/src/assets/icons/icon-setting.svg
new file mode 100644
index 0000000..33353f0
--- /dev/null
+++ b/src/assets/icons/icon-setting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/next_level.png b/src/assets/images/next_level.png
new file mode 100644
index 0000000..53d2837
--- /dev/null
+++ b/src/assets/images/next_level.png
Binary files differ
diff --git a/src/assets/images/next_level_active.png b/src/assets/images/next_level_active.png
new file mode 100644
index 0000000..1a52ae8
--- /dev/null
+++ b/src/assets/images/next_level_active.png
Binary files differ
diff --git a/src/assets/styles/element-plus/index.scss b/src/assets/styles/element-plus/index.scss
index 3b53223..6dc95ed 100644
--- a/src/assets/styles/element-plus/index.scss
+++ b/src/assets/styles/element-plus/index.scss
@@ -7,6 +7,10 @@
$table:(
"header-bg-color":#f2f6ff,
"header-text-color":#444c59
+ ),
+ $menu:(
+ "base-level-padding": 15px,
+ "level-padding": 10px
)
);
@use "element-plus/theme-chalk/src/index.scss" as *;
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 4565a0f..938efd4 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -6,7 +6,7 @@
// 头部宽度(默认自适应宽度,可固定宽度,固定宽度后为居中显示)
--g-header-width: 100%;
// 头部高度
- --g-header-height: 67px;
+ --g-header-height: 60px;
// 侧边栏宽度
--g-main-sidebar-width: 70px;
--g-sub-sidebar-width: 180px;
@@ -91,3 +91,20 @@
.el-cascader.full-width-input {
width: 100% !important;
}
+
+.el-menu--popup {
+ color: var(--g-sub-sidebar-popmenu-bg);
+
+ .sidebar-item {
+ .el-menu-item,
+ .el-sub-menu__title {
+ color: var(--g-sub-sidebar-popmenu-color) !important;
+ }
+
+ .el-menu-item:hover,
+ .el-sub-menu__title:hover {
+ color: var(--g-sub-sidebar-popmenu-active-color) !important;
+ background-color: var(--g-sub-sidebar-popmenu-hover-color) !important;
+ }
+ }
+}
diff --git a/src/assets/styles/themes.scss b/src/assets/styles/themes.scss
index 47da1fb..418dc62 100644
--- a/src/assets/styles/themes.scss
+++ b/src/assets/styles/themes.scss
@@ -52,6 +52,14 @@
--g-sub-sidebar-menu-active-color: #3d7eff;
// 菜单选中背景色
--g-sub-sidebar-menu-active-bg: #dae9fe;
+ // 弹出菜单背景色
+ --g-sub-sidebar-popmenu-bg: #fff;
+ // 弹出菜单文字颜色
+ --g-sub-sidebar-popmenu-color: rgb(92 92 92);
+ // 弹出菜单鼠标悬浮文字颜色
+ --g-sub-sidebar-popmenu-hover-color: #dae9fe;
+ // 弹出菜单选中文字颜色
+ --g-sub-sidebar-popmenu-active-color: rgb(92 92 92);
/* ----- 顶栏 ----- */
--g-toolbar-bg: var(--el-bg-color);
diff --git a/src/layouts/components/Header/index.vue b/src/layouts/components/Header/index.vue
index 4a98f23..83ad8cd 100644
--- a/src/layouts/components/Header/index.vue
+++ b/src/layouts/components/Header/index.vue
@@ -31,7 +31,7 @@
-
+
{{ item.meta.title }}
@@ -136,8 +136,7 @@
display: flex;
align-items: center;
justify-content: center;
- flex-direction: column;
- padding: 10px;
+ padding: 5px;
height: auto;
cursor: pointer;
color: var(--g-header-menu-color);
@@ -150,7 +149,7 @@
}
.el-icon {
- font-size: 24px;
+ font-size: 18px;
vertical-align: middle;
}
@@ -161,6 +160,14 @@
@include text-overflow(1, false);
}
+
+ .el-icon + span {
+ margin-left: 5px;
+ }
+ }
+
+ .item + .item {
+ margin-left: 5px;
}
.round-item {
diff --git a/src/layouts/components/SidebarItem/index.vue b/src/layouts/components/SidebarItem/index.vue
index b930871..540d253 100644
--- a/src/layouts/components/SidebarItem/index.vue
+++ b/src/layouts/components/SidebarItem/index.vue
@@ -85,15 +85,15 @@
:deep(.el-sub-menu),
:deep(.el-menu-item) {
.title-icon {
- width: 20px;
- font-size: 20px;
+ width: 16px;
+ font-size: 16px;
vertical-align: -0.25em;
transition: transform 0.3s;
color: unset;
}
.title-icon + .title {
- margin-left: 10px;
+ margin-left: 5px;
}
&:hover > .title-icon,
diff --git a/src/layouts/components/SubSidebar/index.vue b/src/layouts/components/SubSidebar/index.vue
index 9fc8a18..5928469 100644
--- a/src/layouts/components/SubSidebar/index.vue
+++ b/src/layouts/components/SubSidebar/index.vue
@@ -62,7 +62,7 @@
transition: background-color 0.3s, var(--el-transition-box-shadow), left 0.3s, width 0.3s;
&.is-collapse {
- width: 64px;
+ width: 55px;
.sidebar-logo {
&:not(.sidebar-logo-bg) {
@@ -96,7 +96,7 @@
.el-menu {
border-right: 0;
- padding: 0 10px;
+ padding: 0 5px;
padding-top: var(--g-sidebar-logo-height);
padding-top: 16px !important;
transition: border-color 0.3s, background-color 0.3s, color 0.3s, padding-top 0.3s;
diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts
new file mode 100644
index 0000000..55b4d14
--- /dev/null
+++ b/src/router/modules/device.ts
@@ -0,0 +1,286 @@
+// 测量设备
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/device',
+ component: Layout,
+ redirect: '/device/bench',
+ name: 'DBench',
+ meta: {
+ title: '工作台',
+ icon: 'ep:key',
+ auth: '/device/bench',
+ },
+ children: [
+ {
+ path: '/device/bench',
+ name: 'DeviceBench',
+ component: () => import('@/views/device/bench/deviceBench.vue'),
+ meta: {
+ title: '工作台',
+ auth: '/device/bench',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/device',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standingBook',
+ component: Layout,
+ redirect: '/standingBook/measureDevice',
+ name: 'standingBook',
+ meta: {
+ title: '设备台账',
+ icon: 'ep:key',
+ auth: '/device/standingBook',
+ },
+ children: [
+ {
+ path: 'measureDevice',
+ name: 'measureDevice',
+ component: () => import('@/views/device/standingBook/measureDevice.vue'),
+ meta: {
+ title: '测量设备',
+ icon: 'ep:key',
+ auth: '/device/measureDevice',
+ },
+ },
+ {
+ path: 'adjustDevice',
+ name: 'adjustDevice',
+ component: () => import('@/views/device/standingBook/adjustDevice.vue'),
+ meta: {
+ title: '校准/检定设备',
+ icon: 'ep:key',
+ auth: '/device/adjustDevice',
+ },
+ },
+ {
+ path: 'standardMatchDevice',
+ name: 'standardMatchDevice',
+ component: () => import('@/views/device/standingBook/standardMatchDevice.vue'),
+ meta: {
+ title: '标准配套设备',
+ icon: 'ep:key',
+ auth: '/device/standardMatchDevice',
+ },
+ },
+ {
+ path: 'measureTool',
+ name: 'measureTool',
+ component: () => import('@/views/device/standingBook/measureTool.vue'),
+ meta: {
+ title: '测量工装',
+ icon: 'ep:key',
+ auth: '/device/measureTool',
+ },
+ },
+ {
+ path: 'fixedAssets',
+ name: 'fixedAssets',
+ component: () => import('@/views/device/standingBook/fixedAssets.vue'),
+ meta: {
+ title: '固定资产',
+ icon: 'ep:key',
+ auth: '/device/fixedAssets',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standard',
+ component: Layout,
+ redirect: '/standard/list',
+ name: 'Standard',
+ meta: {
+ title: '标准装置',
+ icon: 'ep:key',
+ auth: '/standardEquipment',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'standardList',
+ component: () => import('@/views/device/standardEquipment/standardList.vue'),
+ meta: {
+ title: '标准装置列表',
+ icon: 'ep:key',
+ auth: '/standard/list',
+ },
+ },
+ {
+ path: 'expirationRemind',
+ name: 'expirationRemind',
+ component: () => import('@/views/device/standardEquipment/expirationRemind.vue'),
+ meta: {
+ title: '到期提醒',
+ icon: 'ep:key',
+ auth: '/standard/expirationRemind',
+ },
+ },
+ {
+ path: 'changeApply',
+ name: 'changeApply',
+ component: () => import('@/views/device/standardEquipment/changeApply.vue'),
+ meta: {
+ title: '更换申请',
+ icon: 'ep:key',
+ auth: '/standard/changeApply',
+ },
+ },
+ {
+ path: 'pauseApply',
+ name: 'pauseApply',
+ component: () => import('@/views/device/standardEquipment/pauseApply.vue'),
+ meta: {
+ title: '暂停申请',
+ icon: 'ep:key',
+ auth: '/standard/pauseApply',
+ },
+ },
+ {
+ path: 'cancelApply',
+ name: 'cancelApply',
+ component: () => import('@/views/device/standardEquipment/cancelApply.vue'),
+ meta: {
+ title: '撤销申请',
+ icon: 'ep:key',
+ auth: '/standard/cancelApply',
+ },
+ },
+ {
+ path: 'resumeApply',
+ name: 'resumeApply',
+ component: () => import('@/views/device/standardEquipment/resumeApply.vue'),
+ meta: {
+ title: '恢复申请',
+ icon: 'ep:key',
+ auth: '/standard/resumeApply',
+ },
+ },
+ {
+ path: 'checkApply',
+ name: 'checkApply',
+ component: () => import('@/views/device/standardEquipment/checkApply.vue'),
+ meta: {
+ title: '复查申请',
+ icon: 'ep:key',
+ auth: '/standard/checkApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/stateManage',
+ component: Layout,
+ redirect: '/stateManage/unusedApply',
+ name: 'stateManage',
+ meta: {
+ title: '状态管理',
+ icon: 'ep:key',
+ auth: '/device/stateManage',
+ },
+ children: [
+ {
+ path: 'unusedApply',
+ name: 'unusedApply',
+ component: () => import('@/views/device/stateManage/unusedApply.vue'),
+ meta: {
+ title: '设备闲置申请',
+ icon: 'ep:key',
+ auth: '/device/unusedApply',
+ },
+ },
+ {
+ path: 'sealupApply',
+ name: 'sealupApply',
+ component: () => import('@/views/device/stateManage/sealupApply.vue'),
+ meta: {
+ title: '设备封存申请',
+ icon: 'ep:key',
+ auth: '/device/sealupApply',
+ },
+ },
+ {
+ path: 'openApply',
+ name: 'openApply',
+ component: () => import('@/views/device/stateManage/openApply.vue'),
+ meta: {
+ title: '设备启封申请',
+ icon: 'ep:key',
+ auth: '/device/openApply',
+ },
+ },
+ {
+ path: 'scrapApply',
+ name: 'scrapApply',
+ component: () => import('@/views/device/stateManage/scrapApply.vue'),
+ meta: {
+ title: '设备报废申请',
+ icon: 'ep:key',
+ auth: '/device/scrapApply',
+ },
+ },
+ {
+ path: 'handleApply',
+ name: 'handleApply',
+ component: () => import('@/views/device/stateManage/handleApply.vue'),
+ meta: {
+ title: '设备处置申请',
+ icon: 'ep:key',
+ auth: '/device/handleApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/maintenance',
+ component: Layout,
+ redirect: '/maintenance/maintenanceList',
+ name: 'MaintenanceManage',
+ meta: {
+ title: '设备维护',
+ icon: 'ep:key',
+ auth: '/device/maintenance',
+ },
+ children: [
+ {
+ path: 'maintenanceList',
+ name: 'maintenanceList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceList.vue'),
+ meta: {
+ title: '设备维护列表',
+ icon: 'ep:key',
+ auth: '/device/maintenanceList',
+ },
+ },
+ {
+ path: 'maintenanceCheckList',
+ name: 'maintenanceCheckList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceCheckList.vue'),
+ meta: {
+ title: '设备检修保养验收单',
+ icon: 'ep:key',
+ auth: '/device/maintenance/checkList',
+ },
+ },
+ {
+ path: 'manageCheckList',
+ name: 'manageCheckList',
+ component: () => import('@/views/device/deviceMaintenance/manageCheckList.vue'),
+ meta: {
+ title: '设备管理点检查表',
+ icon: 'ep:key',
+ auth: '/device/manage/checkList',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index fbbf7a4..4153ab5 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -4,6 +4,7 @@
import BreadcrumbExample from './modules/breadcrumb.example'
import systemRoute from './modules/system'
import measureRoute from './modules/measure'
+import deviceRoute from './modules/device'
import type { Route } from '@/global'
import useSettingsStore from '@/store/modules/settings'
@@ -132,11 +133,10 @@
meta: {
title: '测量设备',
icon: '',
- auth: 'clsb',
+ auth: '/device',
},
children: [
- MultilevelMenuExample,
- BreadcrumbExample,
+ ...deviceRoute,
],
},
{
diff --git a/src/settings.ts b/src/settings.ts
index f89a3ab..ae5c3f5 100644
--- a/src/settings.ts
+++ b/src/settings.ts
@@ -16,6 +16,7 @@
menu: {
baseOn: 'backend',
menuMode: 'head',
+ showIcon: true,
enableSubMenuCollapseButton: true,
},
toolbar: {
diff --git a/src/views/device/bench/deviceBench.vue b/src/views/device/bench/deviceBench.vue
new file mode 100644
index 0000000..9206576
--- /dev/null
+++ b/src/views/device/bench/deviceBench.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 工作台
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceCheckList.vue b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
new file mode 100644
index 0000000..84224db
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备检修保养验收单
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue
new file mode 100644
index 0000000..3c91abd
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备维护列表
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/manageCheckList.vue b/src/views/device/deviceMaintenance/manageCheckList.vue
new file mode 100644
index 0000000..a4ace73
--- /dev/null
+++ b/src/views/device/deviceMaintenance/manageCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备管理点检查表
+
+
+
+
diff --git a/src/App.vue b/src/App.vue
index 8624b4c..52ccd6e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,7 +27,7 @@
actualWidth = 0
}
else if (settingsStore.menu.subMenuCollapse) {
- actualWidth = 64
+ actualWidth = 55
}
return `${actualWidth}px`
})
diff --git a/src/assets/icons/icon-setting.svg b/src/assets/icons/icon-setting.svg
new file mode 100644
index 0000000..33353f0
--- /dev/null
+++ b/src/assets/icons/icon-setting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/next_level.png b/src/assets/images/next_level.png
new file mode 100644
index 0000000..53d2837
--- /dev/null
+++ b/src/assets/images/next_level.png
Binary files differ
diff --git a/src/assets/images/next_level_active.png b/src/assets/images/next_level_active.png
new file mode 100644
index 0000000..1a52ae8
--- /dev/null
+++ b/src/assets/images/next_level_active.png
Binary files differ
diff --git a/src/assets/styles/element-plus/index.scss b/src/assets/styles/element-plus/index.scss
index 3b53223..6dc95ed 100644
--- a/src/assets/styles/element-plus/index.scss
+++ b/src/assets/styles/element-plus/index.scss
@@ -7,6 +7,10 @@
$table:(
"header-bg-color":#f2f6ff,
"header-text-color":#444c59
+ ),
+ $menu:(
+ "base-level-padding": 15px,
+ "level-padding": 10px
)
);
@use "element-plus/theme-chalk/src/index.scss" as *;
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 4565a0f..938efd4 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -6,7 +6,7 @@
// 头部宽度(默认自适应宽度,可固定宽度,固定宽度后为居中显示)
--g-header-width: 100%;
// 头部高度
- --g-header-height: 67px;
+ --g-header-height: 60px;
// 侧边栏宽度
--g-main-sidebar-width: 70px;
--g-sub-sidebar-width: 180px;
@@ -91,3 +91,20 @@
.el-cascader.full-width-input {
width: 100% !important;
}
+
+.el-menu--popup {
+ color: var(--g-sub-sidebar-popmenu-bg);
+
+ .sidebar-item {
+ .el-menu-item,
+ .el-sub-menu__title {
+ color: var(--g-sub-sidebar-popmenu-color) !important;
+ }
+
+ .el-menu-item:hover,
+ .el-sub-menu__title:hover {
+ color: var(--g-sub-sidebar-popmenu-active-color) !important;
+ background-color: var(--g-sub-sidebar-popmenu-hover-color) !important;
+ }
+ }
+}
diff --git a/src/assets/styles/themes.scss b/src/assets/styles/themes.scss
index 47da1fb..418dc62 100644
--- a/src/assets/styles/themes.scss
+++ b/src/assets/styles/themes.scss
@@ -52,6 +52,14 @@
--g-sub-sidebar-menu-active-color: #3d7eff;
// 菜单选中背景色
--g-sub-sidebar-menu-active-bg: #dae9fe;
+ // 弹出菜单背景色
+ --g-sub-sidebar-popmenu-bg: #fff;
+ // 弹出菜单文字颜色
+ --g-sub-sidebar-popmenu-color: rgb(92 92 92);
+ // 弹出菜单鼠标悬浮文字颜色
+ --g-sub-sidebar-popmenu-hover-color: #dae9fe;
+ // 弹出菜单选中文字颜色
+ --g-sub-sidebar-popmenu-active-color: rgb(92 92 92);
/* ----- 顶栏 ----- */
--g-toolbar-bg: var(--el-bg-color);
diff --git a/src/layouts/components/Header/index.vue b/src/layouts/components/Header/index.vue
index 4a98f23..83ad8cd 100644
--- a/src/layouts/components/Header/index.vue
+++ b/src/layouts/components/Header/index.vue
@@ -31,7 +31,7 @@
-
+
{{ item.meta.title }}
@@ -136,8 +136,7 @@
display: flex;
align-items: center;
justify-content: center;
- flex-direction: column;
- padding: 10px;
+ padding: 5px;
height: auto;
cursor: pointer;
color: var(--g-header-menu-color);
@@ -150,7 +149,7 @@
}
.el-icon {
- font-size: 24px;
+ font-size: 18px;
vertical-align: middle;
}
@@ -161,6 +160,14 @@
@include text-overflow(1, false);
}
+
+ .el-icon + span {
+ margin-left: 5px;
+ }
+ }
+
+ .item + .item {
+ margin-left: 5px;
}
.round-item {
diff --git a/src/layouts/components/SidebarItem/index.vue b/src/layouts/components/SidebarItem/index.vue
index b930871..540d253 100644
--- a/src/layouts/components/SidebarItem/index.vue
+++ b/src/layouts/components/SidebarItem/index.vue
@@ -85,15 +85,15 @@
:deep(.el-sub-menu),
:deep(.el-menu-item) {
.title-icon {
- width: 20px;
- font-size: 20px;
+ width: 16px;
+ font-size: 16px;
vertical-align: -0.25em;
transition: transform 0.3s;
color: unset;
}
.title-icon + .title {
- margin-left: 10px;
+ margin-left: 5px;
}
&:hover > .title-icon,
diff --git a/src/layouts/components/SubSidebar/index.vue b/src/layouts/components/SubSidebar/index.vue
index 9fc8a18..5928469 100644
--- a/src/layouts/components/SubSidebar/index.vue
+++ b/src/layouts/components/SubSidebar/index.vue
@@ -62,7 +62,7 @@
transition: background-color 0.3s, var(--el-transition-box-shadow), left 0.3s, width 0.3s;
&.is-collapse {
- width: 64px;
+ width: 55px;
.sidebar-logo {
&:not(.sidebar-logo-bg) {
@@ -96,7 +96,7 @@
.el-menu {
border-right: 0;
- padding: 0 10px;
+ padding: 0 5px;
padding-top: var(--g-sidebar-logo-height);
padding-top: 16px !important;
transition: border-color 0.3s, background-color 0.3s, color 0.3s, padding-top 0.3s;
diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts
new file mode 100644
index 0000000..55b4d14
--- /dev/null
+++ b/src/router/modules/device.ts
@@ -0,0 +1,286 @@
+// 测量设备
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/device',
+ component: Layout,
+ redirect: '/device/bench',
+ name: 'DBench',
+ meta: {
+ title: '工作台',
+ icon: 'ep:key',
+ auth: '/device/bench',
+ },
+ children: [
+ {
+ path: '/device/bench',
+ name: 'DeviceBench',
+ component: () => import('@/views/device/bench/deviceBench.vue'),
+ meta: {
+ title: '工作台',
+ auth: '/device/bench',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/device',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standingBook',
+ component: Layout,
+ redirect: '/standingBook/measureDevice',
+ name: 'standingBook',
+ meta: {
+ title: '设备台账',
+ icon: 'ep:key',
+ auth: '/device/standingBook',
+ },
+ children: [
+ {
+ path: 'measureDevice',
+ name: 'measureDevice',
+ component: () => import('@/views/device/standingBook/measureDevice.vue'),
+ meta: {
+ title: '测量设备',
+ icon: 'ep:key',
+ auth: '/device/measureDevice',
+ },
+ },
+ {
+ path: 'adjustDevice',
+ name: 'adjustDevice',
+ component: () => import('@/views/device/standingBook/adjustDevice.vue'),
+ meta: {
+ title: '校准/检定设备',
+ icon: 'ep:key',
+ auth: '/device/adjustDevice',
+ },
+ },
+ {
+ path: 'standardMatchDevice',
+ name: 'standardMatchDevice',
+ component: () => import('@/views/device/standingBook/standardMatchDevice.vue'),
+ meta: {
+ title: '标准配套设备',
+ icon: 'ep:key',
+ auth: '/device/standardMatchDevice',
+ },
+ },
+ {
+ path: 'measureTool',
+ name: 'measureTool',
+ component: () => import('@/views/device/standingBook/measureTool.vue'),
+ meta: {
+ title: '测量工装',
+ icon: 'ep:key',
+ auth: '/device/measureTool',
+ },
+ },
+ {
+ path: 'fixedAssets',
+ name: 'fixedAssets',
+ component: () => import('@/views/device/standingBook/fixedAssets.vue'),
+ meta: {
+ title: '固定资产',
+ icon: 'ep:key',
+ auth: '/device/fixedAssets',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standard',
+ component: Layout,
+ redirect: '/standard/list',
+ name: 'Standard',
+ meta: {
+ title: '标准装置',
+ icon: 'ep:key',
+ auth: '/standardEquipment',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'standardList',
+ component: () => import('@/views/device/standardEquipment/standardList.vue'),
+ meta: {
+ title: '标准装置列表',
+ icon: 'ep:key',
+ auth: '/standard/list',
+ },
+ },
+ {
+ path: 'expirationRemind',
+ name: 'expirationRemind',
+ component: () => import('@/views/device/standardEquipment/expirationRemind.vue'),
+ meta: {
+ title: '到期提醒',
+ icon: 'ep:key',
+ auth: '/standard/expirationRemind',
+ },
+ },
+ {
+ path: 'changeApply',
+ name: 'changeApply',
+ component: () => import('@/views/device/standardEquipment/changeApply.vue'),
+ meta: {
+ title: '更换申请',
+ icon: 'ep:key',
+ auth: '/standard/changeApply',
+ },
+ },
+ {
+ path: 'pauseApply',
+ name: 'pauseApply',
+ component: () => import('@/views/device/standardEquipment/pauseApply.vue'),
+ meta: {
+ title: '暂停申请',
+ icon: 'ep:key',
+ auth: '/standard/pauseApply',
+ },
+ },
+ {
+ path: 'cancelApply',
+ name: 'cancelApply',
+ component: () => import('@/views/device/standardEquipment/cancelApply.vue'),
+ meta: {
+ title: '撤销申请',
+ icon: 'ep:key',
+ auth: '/standard/cancelApply',
+ },
+ },
+ {
+ path: 'resumeApply',
+ name: 'resumeApply',
+ component: () => import('@/views/device/standardEquipment/resumeApply.vue'),
+ meta: {
+ title: '恢复申请',
+ icon: 'ep:key',
+ auth: '/standard/resumeApply',
+ },
+ },
+ {
+ path: 'checkApply',
+ name: 'checkApply',
+ component: () => import('@/views/device/standardEquipment/checkApply.vue'),
+ meta: {
+ title: '复查申请',
+ icon: 'ep:key',
+ auth: '/standard/checkApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/stateManage',
+ component: Layout,
+ redirect: '/stateManage/unusedApply',
+ name: 'stateManage',
+ meta: {
+ title: '状态管理',
+ icon: 'ep:key',
+ auth: '/device/stateManage',
+ },
+ children: [
+ {
+ path: 'unusedApply',
+ name: 'unusedApply',
+ component: () => import('@/views/device/stateManage/unusedApply.vue'),
+ meta: {
+ title: '设备闲置申请',
+ icon: 'ep:key',
+ auth: '/device/unusedApply',
+ },
+ },
+ {
+ path: 'sealupApply',
+ name: 'sealupApply',
+ component: () => import('@/views/device/stateManage/sealupApply.vue'),
+ meta: {
+ title: '设备封存申请',
+ icon: 'ep:key',
+ auth: '/device/sealupApply',
+ },
+ },
+ {
+ path: 'openApply',
+ name: 'openApply',
+ component: () => import('@/views/device/stateManage/openApply.vue'),
+ meta: {
+ title: '设备启封申请',
+ icon: 'ep:key',
+ auth: '/device/openApply',
+ },
+ },
+ {
+ path: 'scrapApply',
+ name: 'scrapApply',
+ component: () => import('@/views/device/stateManage/scrapApply.vue'),
+ meta: {
+ title: '设备报废申请',
+ icon: 'ep:key',
+ auth: '/device/scrapApply',
+ },
+ },
+ {
+ path: 'handleApply',
+ name: 'handleApply',
+ component: () => import('@/views/device/stateManage/handleApply.vue'),
+ meta: {
+ title: '设备处置申请',
+ icon: 'ep:key',
+ auth: '/device/handleApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/maintenance',
+ component: Layout,
+ redirect: '/maintenance/maintenanceList',
+ name: 'MaintenanceManage',
+ meta: {
+ title: '设备维护',
+ icon: 'ep:key',
+ auth: '/device/maintenance',
+ },
+ children: [
+ {
+ path: 'maintenanceList',
+ name: 'maintenanceList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceList.vue'),
+ meta: {
+ title: '设备维护列表',
+ icon: 'ep:key',
+ auth: '/device/maintenanceList',
+ },
+ },
+ {
+ path: 'maintenanceCheckList',
+ name: 'maintenanceCheckList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceCheckList.vue'),
+ meta: {
+ title: '设备检修保养验收单',
+ icon: 'ep:key',
+ auth: '/device/maintenance/checkList',
+ },
+ },
+ {
+ path: 'manageCheckList',
+ name: 'manageCheckList',
+ component: () => import('@/views/device/deviceMaintenance/manageCheckList.vue'),
+ meta: {
+ title: '设备管理点检查表',
+ icon: 'ep:key',
+ auth: '/device/manage/checkList',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index fbbf7a4..4153ab5 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -4,6 +4,7 @@
import BreadcrumbExample from './modules/breadcrumb.example'
import systemRoute from './modules/system'
import measureRoute from './modules/measure'
+import deviceRoute from './modules/device'
import type { Route } from '@/global'
import useSettingsStore from '@/store/modules/settings'
@@ -132,11 +133,10 @@
meta: {
title: '测量设备',
icon: '',
- auth: 'clsb',
+ auth: '/device',
},
children: [
- MultilevelMenuExample,
- BreadcrumbExample,
+ ...deviceRoute,
],
},
{
diff --git a/src/settings.ts b/src/settings.ts
index f89a3ab..ae5c3f5 100644
--- a/src/settings.ts
+++ b/src/settings.ts
@@ -16,6 +16,7 @@
menu: {
baseOn: 'backend',
menuMode: 'head',
+ showIcon: true,
enableSubMenuCollapseButton: true,
},
toolbar: {
diff --git a/src/views/device/bench/deviceBench.vue b/src/views/device/bench/deviceBench.vue
new file mode 100644
index 0000000..9206576
--- /dev/null
+++ b/src/views/device/bench/deviceBench.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 工作台
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceCheckList.vue b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
new file mode 100644
index 0000000..84224db
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备检修保养验收单
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue
new file mode 100644
index 0000000..3c91abd
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备维护列表
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/manageCheckList.vue b/src/views/device/deviceMaintenance/manageCheckList.vue
new file mode 100644
index 0000000..a4ace73
--- /dev/null
+++ b/src/views/device/deviceMaintenance/manageCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备管理点检查表
+
+
+
+
diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue
new file mode 100644
index 0000000..c093520
--- /dev/null
+++ b/src/views/device/standardEquipment/cancelApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 撤销申请
+
+
+
+
diff --git a/src/App.vue b/src/App.vue
index 8624b4c..52ccd6e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,7 +27,7 @@
actualWidth = 0
}
else if (settingsStore.menu.subMenuCollapse) {
- actualWidth = 64
+ actualWidth = 55
}
return `${actualWidth}px`
})
diff --git a/src/assets/icons/icon-setting.svg b/src/assets/icons/icon-setting.svg
new file mode 100644
index 0000000..33353f0
--- /dev/null
+++ b/src/assets/icons/icon-setting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/next_level.png b/src/assets/images/next_level.png
new file mode 100644
index 0000000..53d2837
--- /dev/null
+++ b/src/assets/images/next_level.png
Binary files differ
diff --git a/src/assets/images/next_level_active.png b/src/assets/images/next_level_active.png
new file mode 100644
index 0000000..1a52ae8
--- /dev/null
+++ b/src/assets/images/next_level_active.png
Binary files differ
diff --git a/src/assets/styles/element-plus/index.scss b/src/assets/styles/element-plus/index.scss
index 3b53223..6dc95ed 100644
--- a/src/assets/styles/element-plus/index.scss
+++ b/src/assets/styles/element-plus/index.scss
@@ -7,6 +7,10 @@
$table:(
"header-bg-color":#f2f6ff,
"header-text-color":#444c59
+ ),
+ $menu:(
+ "base-level-padding": 15px,
+ "level-padding": 10px
)
);
@use "element-plus/theme-chalk/src/index.scss" as *;
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 4565a0f..938efd4 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -6,7 +6,7 @@
// 头部宽度(默认自适应宽度,可固定宽度,固定宽度后为居中显示)
--g-header-width: 100%;
// 头部高度
- --g-header-height: 67px;
+ --g-header-height: 60px;
// 侧边栏宽度
--g-main-sidebar-width: 70px;
--g-sub-sidebar-width: 180px;
@@ -91,3 +91,20 @@
.el-cascader.full-width-input {
width: 100% !important;
}
+
+.el-menu--popup {
+ color: var(--g-sub-sidebar-popmenu-bg);
+
+ .sidebar-item {
+ .el-menu-item,
+ .el-sub-menu__title {
+ color: var(--g-sub-sidebar-popmenu-color) !important;
+ }
+
+ .el-menu-item:hover,
+ .el-sub-menu__title:hover {
+ color: var(--g-sub-sidebar-popmenu-active-color) !important;
+ background-color: var(--g-sub-sidebar-popmenu-hover-color) !important;
+ }
+ }
+}
diff --git a/src/assets/styles/themes.scss b/src/assets/styles/themes.scss
index 47da1fb..418dc62 100644
--- a/src/assets/styles/themes.scss
+++ b/src/assets/styles/themes.scss
@@ -52,6 +52,14 @@
--g-sub-sidebar-menu-active-color: #3d7eff;
// 菜单选中背景色
--g-sub-sidebar-menu-active-bg: #dae9fe;
+ // 弹出菜单背景色
+ --g-sub-sidebar-popmenu-bg: #fff;
+ // 弹出菜单文字颜色
+ --g-sub-sidebar-popmenu-color: rgb(92 92 92);
+ // 弹出菜单鼠标悬浮文字颜色
+ --g-sub-sidebar-popmenu-hover-color: #dae9fe;
+ // 弹出菜单选中文字颜色
+ --g-sub-sidebar-popmenu-active-color: rgb(92 92 92);
/* ----- 顶栏 ----- */
--g-toolbar-bg: var(--el-bg-color);
diff --git a/src/layouts/components/Header/index.vue b/src/layouts/components/Header/index.vue
index 4a98f23..83ad8cd 100644
--- a/src/layouts/components/Header/index.vue
+++ b/src/layouts/components/Header/index.vue
@@ -31,7 +31,7 @@
-
+
{{ item.meta.title }}
@@ -136,8 +136,7 @@
display: flex;
align-items: center;
justify-content: center;
- flex-direction: column;
- padding: 10px;
+ padding: 5px;
height: auto;
cursor: pointer;
color: var(--g-header-menu-color);
@@ -150,7 +149,7 @@
}
.el-icon {
- font-size: 24px;
+ font-size: 18px;
vertical-align: middle;
}
@@ -161,6 +160,14 @@
@include text-overflow(1, false);
}
+
+ .el-icon + span {
+ margin-left: 5px;
+ }
+ }
+
+ .item + .item {
+ margin-left: 5px;
}
.round-item {
diff --git a/src/layouts/components/SidebarItem/index.vue b/src/layouts/components/SidebarItem/index.vue
index b930871..540d253 100644
--- a/src/layouts/components/SidebarItem/index.vue
+++ b/src/layouts/components/SidebarItem/index.vue
@@ -85,15 +85,15 @@
:deep(.el-sub-menu),
:deep(.el-menu-item) {
.title-icon {
- width: 20px;
- font-size: 20px;
+ width: 16px;
+ font-size: 16px;
vertical-align: -0.25em;
transition: transform 0.3s;
color: unset;
}
.title-icon + .title {
- margin-left: 10px;
+ margin-left: 5px;
}
&:hover > .title-icon,
diff --git a/src/layouts/components/SubSidebar/index.vue b/src/layouts/components/SubSidebar/index.vue
index 9fc8a18..5928469 100644
--- a/src/layouts/components/SubSidebar/index.vue
+++ b/src/layouts/components/SubSidebar/index.vue
@@ -62,7 +62,7 @@
transition: background-color 0.3s, var(--el-transition-box-shadow), left 0.3s, width 0.3s;
&.is-collapse {
- width: 64px;
+ width: 55px;
.sidebar-logo {
&:not(.sidebar-logo-bg) {
@@ -96,7 +96,7 @@
.el-menu {
border-right: 0;
- padding: 0 10px;
+ padding: 0 5px;
padding-top: var(--g-sidebar-logo-height);
padding-top: 16px !important;
transition: border-color 0.3s, background-color 0.3s, color 0.3s, padding-top 0.3s;
diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts
new file mode 100644
index 0000000..55b4d14
--- /dev/null
+++ b/src/router/modules/device.ts
@@ -0,0 +1,286 @@
+// 测量设备
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/device',
+ component: Layout,
+ redirect: '/device/bench',
+ name: 'DBench',
+ meta: {
+ title: '工作台',
+ icon: 'ep:key',
+ auth: '/device/bench',
+ },
+ children: [
+ {
+ path: '/device/bench',
+ name: 'DeviceBench',
+ component: () => import('@/views/device/bench/deviceBench.vue'),
+ meta: {
+ title: '工作台',
+ auth: '/device/bench',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/device',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standingBook',
+ component: Layout,
+ redirect: '/standingBook/measureDevice',
+ name: 'standingBook',
+ meta: {
+ title: '设备台账',
+ icon: 'ep:key',
+ auth: '/device/standingBook',
+ },
+ children: [
+ {
+ path: 'measureDevice',
+ name: 'measureDevice',
+ component: () => import('@/views/device/standingBook/measureDevice.vue'),
+ meta: {
+ title: '测量设备',
+ icon: 'ep:key',
+ auth: '/device/measureDevice',
+ },
+ },
+ {
+ path: 'adjustDevice',
+ name: 'adjustDevice',
+ component: () => import('@/views/device/standingBook/adjustDevice.vue'),
+ meta: {
+ title: '校准/检定设备',
+ icon: 'ep:key',
+ auth: '/device/adjustDevice',
+ },
+ },
+ {
+ path: 'standardMatchDevice',
+ name: 'standardMatchDevice',
+ component: () => import('@/views/device/standingBook/standardMatchDevice.vue'),
+ meta: {
+ title: '标准配套设备',
+ icon: 'ep:key',
+ auth: '/device/standardMatchDevice',
+ },
+ },
+ {
+ path: 'measureTool',
+ name: 'measureTool',
+ component: () => import('@/views/device/standingBook/measureTool.vue'),
+ meta: {
+ title: '测量工装',
+ icon: 'ep:key',
+ auth: '/device/measureTool',
+ },
+ },
+ {
+ path: 'fixedAssets',
+ name: 'fixedAssets',
+ component: () => import('@/views/device/standingBook/fixedAssets.vue'),
+ meta: {
+ title: '固定资产',
+ icon: 'ep:key',
+ auth: '/device/fixedAssets',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standard',
+ component: Layout,
+ redirect: '/standard/list',
+ name: 'Standard',
+ meta: {
+ title: '标准装置',
+ icon: 'ep:key',
+ auth: '/standardEquipment',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'standardList',
+ component: () => import('@/views/device/standardEquipment/standardList.vue'),
+ meta: {
+ title: '标准装置列表',
+ icon: 'ep:key',
+ auth: '/standard/list',
+ },
+ },
+ {
+ path: 'expirationRemind',
+ name: 'expirationRemind',
+ component: () => import('@/views/device/standardEquipment/expirationRemind.vue'),
+ meta: {
+ title: '到期提醒',
+ icon: 'ep:key',
+ auth: '/standard/expirationRemind',
+ },
+ },
+ {
+ path: 'changeApply',
+ name: 'changeApply',
+ component: () => import('@/views/device/standardEquipment/changeApply.vue'),
+ meta: {
+ title: '更换申请',
+ icon: 'ep:key',
+ auth: '/standard/changeApply',
+ },
+ },
+ {
+ path: 'pauseApply',
+ name: 'pauseApply',
+ component: () => import('@/views/device/standardEquipment/pauseApply.vue'),
+ meta: {
+ title: '暂停申请',
+ icon: 'ep:key',
+ auth: '/standard/pauseApply',
+ },
+ },
+ {
+ path: 'cancelApply',
+ name: 'cancelApply',
+ component: () => import('@/views/device/standardEquipment/cancelApply.vue'),
+ meta: {
+ title: '撤销申请',
+ icon: 'ep:key',
+ auth: '/standard/cancelApply',
+ },
+ },
+ {
+ path: 'resumeApply',
+ name: 'resumeApply',
+ component: () => import('@/views/device/standardEquipment/resumeApply.vue'),
+ meta: {
+ title: '恢复申请',
+ icon: 'ep:key',
+ auth: '/standard/resumeApply',
+ },
+ },
+ {
+ path: 'checkApply',
+ name: 'checkApply',
+ component: () => import('@/views/device/standardEquipment/checkApply.vue'),
+ meta: {
+ title: '复查申请',
+ icon: 'ep:key',
+ auth: '/standard/checkApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/stateManage',
+ component: Layout,
+ redirect: '/stateManage/unusedApply',
+ name: 'stateManage',
+ meta: {
+ title: '状态管理',
+ icon: 'ep:key',
+ auth: '/device/stateManage',
+ },
+ children: [
+ {
+ path: 'unusedApply',
+ name: 'unusedApply',
+ component: () => import('@/views/device/stateManage/unusedApply.vue'),
+ meta: {
+ title: '设备闲置申请',
+ icon: 'ep:key',
+ auth: '/device/unusedApply',
+ },
+ },
+ {
+ path: 'sealupApply',
+ name: 'sealupApply',
+ component: () => import('@/views/device/stateManage/sealupApply.vue'),
+ meta: {
+ title: '设备封存申请',
+ icon: 'ep:key',
+ auth: '/device/sealupApply',
+ },
+ },
+ {
+ path: 'openApply',
+ name: 'openApply',
+ component: () => import('@/views/device/stateManage/openApply.vue'),
+ meta: {
+ title: '设备启封申请',
+ icon: 'ep:key',
+ auth: '/device/openApply',
+ },
+ },
+ {
+ path: 'scrapApply',
+ name: 'scrapApply',
+ component: () => import('@/views/device/stateManage/scrapApply.vue'),
+ meta: {
+ title: '设备报废申请',
+ icon: 'ep:key',
+ auth: '/device/scrapApply',
+ },
+ },
+ {
+ path: 'handleApply',
+ name: 'handleApply',
+ component: () => import('@/views/device/stateManage/handleApply.vue'),
+ meta: {
+ title: '设备处置申请',
+ icon: 'ep:key',
+ auth: '/device/handleApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/maintenance',
+ component: Layout,
+ redirect: '/maintenance/maintenanceList',
+ name: 'MaintenanceManage',
+ meta: {
+ title: '设备维护',
+ icon: 'ep:key',
+ auth: '/device/maintenance',
+ },
+ children: [
+ {
+ path: 'maintenanceList',
+ name: 'maintenanceList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceList.vue'),
+ meta: {
+ title: '设备维护列表',
+ icon: 'ep:key',
+ auth: '/device/maintenanceList',
+ },
+ },
+ {
+ path: 'maintenanceCheckList',
+ name: 'maintenanceCheckList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceCheckList.vue'),
+ meta: {
+ title: '设备检修保养验收单',
+ icon: 'ep:key',
+ auth: '/device/maintenance/checkList',
+ },
+ },
+ {
+ path: 'manageCheckList',
+ name: 'manageCheckList',
+ component: () => import('@/views/device/deviceMaintenance/manageCheckList.vue'),
+ meta: {
+ title: '设备管理点检查表',
+ icon: 'ep:key',
+ auth: '/device/manage/checkList',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index fbbf7a4..4153ab5 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -4,6 +4,7 @@
import BreadcrumbExample from './modules/breadcrumb.example'
import systemRoute from './modules/system'
import measureRoute from './modules/measure'
+import deviceRoute from './modules/device'
import type { Route } from '@/global'
import useSettingsStore from '@/store/modules/settings'
@@ -132,11 +133,10 @@
meta: {
title: '测量设备',
icon: '',
- auth: 'clsb',
+ auth: '/device',
},
children: [
- MultilevelMenuExample,
- BreadcrumbExample,
+ ...deviceRoute,
],
},
{
diff --git a/src/settings.ts b/src/settings.ts
index f89a3ab..ae5c3f5 100644
--- a/src/settings.ts
+++ b/src/settings.ts
@@ -16,6 +16,7 @@
menu: {
baseOn: 'backend',
menuMode: 'head',
+ showIcon: true,
enableSubMenuCollapseButton: true,
},
toolbar: {
diff --git a/src/views/device/bench/deviceBench.vue b/src/views/device/bench/deviceBench.vue
new file mode 100644
index 0000000..9206576
--- /dev/null
+++ b/src/views/device/bench/deviceBench.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 工作台
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceCheckList.vue b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
new file mode 100644
index 0000000..84224db
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备检修保养验收单
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue
new file mode 100644
index 0000000..3c91abd
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备维护列表
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/manageCheckList.vue b/src/views/device/deviceMaintenance/manageCheckList.vue
new file mode 100644
index 0000000..a4ace73
--- /dev/null
+++ b/src/views/device/deviceMaintenance/manageCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备管理点检查表
+
+
+
+
diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue
new file mode 100644
index 0000000..c093520
--- /dev/null
+++ b/src/views/device/standardEquipment/cancelApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 撤销申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/changeApply.vue b/src/views/device/standardEquipment/changeApply.vue
new file mode 100644
index 0000000..0762330
--- /dev/null
+++ b/src/views/device/standardEquipment/changeApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 更换申请
+
+
+
+
diff --git a/src/App.vue b/src/App.vue
index 8624b4c..52ccd6e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,7 +27,7 @@
actualWidth = 0
}
else if (settingsStore.menu.subMenuCollapse) {
- actualWidth = 64
+ actualWidth = 55
}
return `${actualWidth}px`
})
diff --git a/src/assets/icons/icon-setting.svg b/src/assets/icons/icon-setting.svg
new file mode 100644
index 0000000..33353f0
--- /dev/null
+++ b/src/assets/icons/icon-setting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/next_level.png b/src/assets/images/next_level.png
new file mode 100644
index 0000000..53d2837
--- /dev/null
+++ b/src/assets/images/next_level.png
Binary files differ
diff --git a/src/assets/images/next_level_active.png b/src/assets/images/next_level_active.png
new file mode 100644
index 0000000..1a52ae8
--- /dev/null
+++ b/src/assets/images/next_level_active.png
Binary files differ
diff --git a/src/assets/styles/element-plus/index.scss b/src/assets/styles/element-plus/index.scss
index 3b53223..6dc95ed 100644
--- a/src/assets/styles/element-plus/index.scss
+++ b/src/assets/styles/element-plus/index.scss
@@ -7,6 +7,10 @@
$table:(
"header-bg-color":#f2f6ff,
"header-text-color":#444c59
+ ),
+ $menu:(
+ "base-level-padding": 15px,
+ "level-padding": 10px
)
);
@use "element-plus/theme-chalk/src/index.scss" as *;
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 4565a0f..938efd4 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -6,7 +6,7 @@
// 头部宽度(默认自适应宽度,可固定宽度,固定宽度后为居中显示)
--g-header-width: 100%;
// 头部高度
- --g-header-height: 67px;
+ --g-header-height: 60px;
// 侧边栏宽度
--g-main-sidebar-width: 70px;
--g-sub-sidebar-width: 180px;
@@ -91,3 +91,20 @@
.el-cascader.full-width-input {
width: 100% !important;
}
+
+.el-menu--popup {
+ color: var(--g-sub-sidebar-popmenu-bg);
+
+ .sidebar-item {
+ .el-menu-item,
+ .el-sub-menu__title {
+ color: var(--g-sub-sidebar-popmenu-color) !important;
+ }
+
+ .el-menu-item:hover,
+ .el-sub-menu__title:hover {
+ color: var(--g-sub-sidebar-popmenu-active-color) !important;
+ background-color: var(--g-sub-sidebar-popmenu-hover-color) !important;
+ }
+ }
+}
diff --git a/src/assets/styles/themes.scss b/src/assets/styles/themes.scss
index 47da1fb..418dc62 100644
--- a/src/assets/styles/themes.scss
+++ b/src/assets/styles/themes.scss
@@ -52,6 +52,14 @@
--g-sub-sidebar-menu-active-color: #3d7eff;
// 菜单选中背景色
--g-sub-sidebar-menu-active-bg: #dae9fe;
+ // 弹出菜单背景色
+ --g-sub-sidebar-popmenu-bg: #fff;
+ // 弹出菜单文字颜色
+ --g-sub-sidebar-popmenu-color: rgb(92 92 92);
+ // 弹出菜单鼠标悬浮文字颜色
+ --g-sub-sidebar-popmenu-hover-color: #dae9fe;
+ // 弹出菜单选中文字颜色
+ --g-sub-sidebar-popmenu-active-color: rgb(92 92 92);
/* ----- 顶栏 ----- */
--g-toolbar-bg: var(--el-bg-color);
diff --git a/src/layouts/components/Header/index.vue b/src/layouts/components/Header/index.vue
index 4a98f23..83ad8cd 100644
--- a/src/layouts/components/Header/index.vue
+++ b/src/layouts/components/Header/index.vue
@@ -31,7 +31,7 @@
-
+
{{ item.meta.title }}
@@ -136,8 +136,7 @@
display: flex;
align-items: center;
justify-content: center;
- flex-direction: column;
- padding: 10px;
+ padding: 5px;
height: auto;
cursor: pointer;
color: var(--g-header-menu-color);
@@ -150,7 +149,7 @@
}
.el-icon {
- font-size: 24px;
+ font-size: 18px;
vertical-align: middle;
}
@@ -161,6 +160,14 @@
@include text-overflow(1, false);
}
+
+ .el-icon + span {
+ margin-left: 5px;
+ }
+ }
+
+ .item + .item {
+ margin-left: 5px;
}
.round-item {
diff --git a/src/layouts/components/SidebarItem/index.vue b/src/layouts/components/SidebarItem/index.vue
index b930871..540d253 100644
--- a/src/layouts/components/SidebarItem/index.vue
+++ b/src/layouts/components/SidebarItem/index.vue
@@ -85,15 +85,15 @@
:deep(.el-sub-menu),
:deep(.el-menu-item) {
.title-icon {
- width: 20px;
- font-size: 20px;
+ width: 16px;
+ font-size: 16px;
vertical-align: -0.25em;
transition: transform 0.3s;
color: unset;
}
.title-icon + .title {
- margin-left: 10px;
+ margin-left: 5px;
}
&:hover > .title-icon,
diff --git a/src/layouts/components/SubSidebar/index.vue b/src/layouts/components/SubSidebar/index.vue
index 9fc8a18..5928469 100644
--- a/src/layouts/components/SubSidebar/index.vue
+++ b/src/layouts/components/SubSidebar/index.vue
@@ -62,7 +62,7 @@
transition: background-color 0.3s, var(--el-transition-box-shadow), left 0.3s, width 0.3s;
&.is-collapse {
- width: 64px;
+ width: 55px;
.sidebar-logo {
&:not(.sidebar-logo-bg) {
@@ -96,7 +96,7 @@
.el-menu {
border-right: 0;
- padding: 0 10px;
+ padding: 0 5px;
padding-top: var(--g-sidebar-logo-height);
padding-top: 16px !important;
transition: border-color 0.3s, background-color 0.3s, color 0.3s, padding-top 0.3s;
diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts
new file mode 100644
index 0000000..55b4d14
--- /dev/null
+++ b/src/router/modules/device.ts
@@ -0,0 +1,286 @@
+// 测量设备
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/device',
+ component: Layout,
+ redirect: '/device/bench',
+ name: 'DBench',
+ meta: {
+ title: '工作台',
+ icon: 'ep:key',
+ auth: '/device/bench',
+ },
+ children: [
+ {
+ path: '/device/bench',
+ name: 'DeviceBench',
+ component: () => import('@/views/device/bench/deviceBench.vue'),
+ meta: {
+ title: '工作台',
+ auth: '/device/bench',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/device',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standingBook',
+ component: Layout,
+ redirect: '/standingBook/measureDevice',
+ name: 'standingBook',
+ meta: {
+ title: '设备台账',
+ icon: 'ep:key',
+ auth: '/device/standingBook',
+ },
+ children: [
+ {
+ path: 'measureDevice',
+ name: 'measureDevice',
+ component: () => import('@/views/device/standingBook/measureDevice.vue'),
+ meta: {
+ title: '测量设备',
+ icon: 'ep:key',
+ auth: '/device/measureDevice',
+ },
+ },
+ {
+ path: 'adjustDevice',
+ name: 'adjustDevice',
+ component: () => import('@/views/device/standingBook/adjustDevice.vue'),
+ meta: {
+ title: '校准/检定设备',
+ icon: 'ep:key',
+ auth: '/device/adjustDevice',
+ },
+ },
+ {
+ path: 'standardMatchDevice',
+ name: 'standardMatchDevice',
+ component: () => import('@/views/device/standingBook/standardMatchDevice.vue'),
+ meta: {
+ title: '标准配套设备',
+ icon: 'ep:key',
+ auth: '/device/standardMatchDevice',
+ },
+ },
+ {
+ path: 'measureTool',
+ name: 'measureTool',
+ component: () => import('@/views/device/standingBook/measureTool.vue'),
+ meta: {
+ title: '测量工装',
+ icon: 'ep:key',
+ auth: '/device/measureTool',
+ },
+ },
+ {
+ path: 'fixedAssets',
+ name: 'fixedAssets',
+ component: () => import('@/views/device/standingBook/fixedAssets.vue'),
+ meta: {
+ title: '固定资产',
+ icon: 'ep:key',
+ auth: '/device/fixedAssets',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standard',
+ component: Layout,
+ redirect: '/standard/list',
+ name: 'Standard',
+ meta: {
+ title: '标准装置',
+ icon: 'ep:key',
+ auth: '/standardEquipment',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'standardList',
+ component: () => import('@/views/device/standardEquipment/standardList.vue'),
+ meta: {
+ title: '标准装置列表',
+ icon: 'ep:key',
+ auth: '/standard/list',
+ },
+ },
+ {
+ path: 'expirationRemind',
+ name: 'expirationRemind',
+ component: () => import('@/views/device/standardEquipment/expirationRemind.vue'),
+ meta: {
+ title: '到期提醒',
+ icon: 'ep:key',
+ auth: '/standard/expirationRemind',
+ },
+ },
+ {
+ path: 'changeApply',
+ name: 'changeApply',
+ component: () => import('@/views/device/standardEquipment/changeApply.vue'),
+ meta: {
+ title: '更换申请',
+ icon: 'ep:key',
+ auth: '/standard/changeApply',
+ },
+ },
+ {
+ path: 'pauseApply',
+ name: 'pauseApply',
+ component: () => import('@/views/device/standardEquipment/pauseApply.vue'),
+ meta: {
+ title: '暂停申请',
+ icon: 'ep:key',
+ auth: '/standard/pauseApply',
+ },
+ },
+ {
+ path: 'cancelApply',
+ name: 'cancelApply',
+ component: () => import('@/views/device/standardEquipment/cancelApply.vue'),
+ meta: {
+ title: '撤销申请',
+ icon: 'ep:key',
+ auth: '/standard/cancelApply',
+ },
+ },
+ {
+ path: 'resumeApply',
+ name: 'resumeApply',
+ component: () => import('@/views/device/standardEquipment/resumeApply.vue'),
+ meta: {
+ title: '恢复申请',
+ icon: 'ep:key',
+ auth: '/standard/resumeApply',
+ },
+ },
+ {
+ path: 'checkApply',
+ name: 'checkApply',
+ component: () => import('@/views/device/standardEquipment/checkApply.vue'),
+ meta: {
+ title: '复查申请',
+ icon: 'ep:key',
+ auth: '/standard/checkApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/stateManage',
+ component: Layout,
+ redirect: '/stateManage/unusedApply',
+ name: 'stateManage',
+ meta: {
+ title: '状态管理',
+ icon: 'ep:key',
+ auth: '/device/stateManage',
+ },
+ children: [
+ {
+ path: 'unusedApply',
+ name: 'unusedApply',
+ component: () => import('@/views/device/stateManage/unusedApply.vue'),
+ meta: {
+ title: '设备闲置申请',
+ icon: 'ep:key',
+ auth: '/device/unusedApply',
+ },
+ },
+ {
+ path: 'sealupApply',
+ name: 'sealupApply',
+ component: () => import('@/views/device/stateManage/sealupApply.vue'),
+ meta: {
+ title: '设备封存申请',
+ icon: 'ep:key',
+ auth: '/device/sealupApply',
+ },
+ },
+ {
+ path: 'openApply',
+ name: 'openApply',
+ component: () => import('@/views/device/stateManage/openApply.vue'),
+ meta: {
+ title: '设备启封申请',
+ icon: 'ep:key',
+ auth: '/device/openApply',
+ },
+ },
+ {
+ path: 'scrapApply',
+ name: 'scrapApply',
+ component: () => import('@/views/device/stateManage/scrapApply.vue'),
+ meta: {
+ title: '设备报废申请',
+ icon: 'ep:key',
+ auth: '/device/scrapApply',
+ },
+ },
+ {
+ path: 'handleApply',
+ name: 'handleApply',
+ component: () => import('@/views/device/stateManage/handleApply.vue'),
+ meta: {
+ title: '设备处置申请',
+ icon: 'ep:key',
+ auth: '/device/handleApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/maintenance',
+ component: Layout,
+ redirect: '/maintenance/maintenanceList',
+ name: 'MaintenanceManage',
+ meta: {
+ title: '设备维护',
+ icon: 'ep:key',
+ auth: '/device/maintenance',
+ },
+ children: [
+ {
+ path: 'maintenanceList',
+ name: 'maintenanceList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceList.vue'),
+ meta: {
+ title: '设备维护列表',
+ icon: 'ep:key',
+ auth: '/device/maintenanceList',
+ },
+ },
+ {
+ path: 'maintenanceCheckList',
+ name: 'maintenanceCheckList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceCheckList.vue'),
+ meta: {
+ title: '设备检修保养验收单',
+ icon: 'ep:key',
+ auth: '/device/maintenance/checkList',
+ },
+ },
+ {
+ path: 'manageCheckList',
+ name: 'manageCheckList',
+ component: () => import('@/views/device/deviceMaintenance/manageCheckList.vue'),
+ meta: {
+ title: '设备管理点检查表',
+ icon: 'ep:key',
+ auth: '/device/manage/checkList',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index fbbf7a4..4153ab5 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -4,6 +4,7 @@
import BreadcrumbExample from './modules/breadcrumb.example'
import systemRoute from './modules/system'
import measureRoute from './modules/measure'
+import deviceRoute from './modules/device'
import type { Route } from '@/global'
import useSettingsStore from '@/store/modules/settings'
@@ -132,11 +133,10 @@
meta: {
title: '测量设备',
icon: '',
- auth: 'clsb',
+ auth: '/device',
},
children: [
- MultilevelMenuExample,
- BreadcrumbExample,
+ ...deviceRoute,
],
},
{
diff --git a/src/settings.ts b/src/settings.ts
index f89a3ab..ae5c3f5 100644
--- a/src/settings.ts
+++ b/src/settings.ts
@@ -16,6 +16,7 @@
menu: {
baseOn: 'backend',
menuMode: 'head',
+ showIcon: true,
enableSubMenuCollapseButton: true,
},
toolbar: {
diff --git a/src/views/device/bench/deviceBench.vue b/src/views/device/bench/deviceBench.vue
new file mode 100644
index 0000000..9206576
--- /dev/null
+++ b/src/views/device/bench/deviceBench.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 工作台
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceCheckList.vue b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
new file mode 100644
index 0000000..84224db
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备检修保养验收单
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue
new file mode 100644
index 0000000..3c91abd
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备维护列表
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/manageCheckList.vue b/src/views/device/deviceMaintenance/manageCheckList.vue
new file mode 100644
index 0000000..a4ace73
--- /dev/null
+++ b/src/views/device/deviceMaintenance/manageCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备管理点检查表
+
+
+
+
diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue
new file mode 100644
index 0000000..c093520
--- /dev/null
+++ b/src/views/device/standardEquipment/cancelApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 撤销申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/changeApply.vue b/src/views/device/standardEquipment/changeApply.vue
new file mode 100644
index 0000000..0762330
--- /dev/null
+++ b/src/views/device/standardEquipment/changeApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 更换申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/checkApply.vue b/src/views/device/standardEquipment/checkApply.vue
new file mode 100644
index 0000000..9cadc01
--- /dev/null
+++ b/src/views/device/standardEquipment/checkApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 复查申请
+
+
+
+
diff --git a/src/App.vue b/src/App.vue
index 8624b4c..52ccd6e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,7 +27,7 @@
actualWidth = 0
}
else if (settingsStore.menu.subMenuCollapse) {
- actualWidth = 64
+ actualWidth = 55
}
return `${actualWidth}px`
})
diff --git a/src/assets/icons/icon-setting.svg b/src/assets/icons/icon-setting.svg
new file mode 100644
index 0000000..33353f0
--- /dev/null
+++ b/src/assets/icons/icon-setting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/next_level.png b/src/assets/images/next_level.png
new file mode 100644
index 0000000..53d2837
--- /dev/null
+++ b/src/assets/images/next_level.png
Binary files differ
diff --git a/src/assets/images/next_level_active.png b/src/assets/images/next_level_active.png
new file mode 100644
index 0000000..1a52ae8
--- /dev/null
+++ b/src/assets/images/next_level_active.png
Binary files differ
diff --git a/src/assets/styles/element-plus/index.scss b/src/assets/styles/element-plus/index.scss
index 3b53223..6dc95ed 100644
--- a/src/assets/styles/element-plus/index.scss
+++ b/src/assets/styles/element-plus/index.scss
@@ -7,6 +7,10 @@
$table:(
"header-bg-color":#f2f6ff,
"header-text-color":#444c59
+ ),
+ $menu:(
+ "base-level-padding": 15px,
+ "level-padding": 10px
)
);
@use "element-plus/theme-chalk/src/index.scss" as *;
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 4565a0f..938efd4 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -6,7 +6,7 @@
// 头部宽度(默认自适应宽度,可固定宽度,固定宽度后为居中显示)
--g-header-width: 100%;
// 头部高度
- --g-header-height: 67px;
+ --g-header-height: 60px;
// 侧边栏宽度
--g-main-sidebar-width: 70px;
--g-sub-sidebar-width: 180px;
@@ -91,3 +91,20 @@
.el-cascader.full-width-input {
width: 100% !important;
}
+
+.el-menu--popup {
+ color: var(--g-sub-sidebar-popmenu-bg);
+
+ .sidebar-item {
+ .el-menu-item,
+ .el-sub-menu__title {
+ color: var(--g-sub-sidebar-popmenu-color) !important;
+ }
+
+ .el-menu-item:hover,
+ .el-sub-menu__title:hover {
+ color: var(--g-sub-sidebar-popmenu-active-color) !important;
+ background-color: var(--g-sub-sidebar-popmenu-hover-color) !important;
+ }
+ }
+}
diff --git a/src/assets/styles/themes.scss b/src/assets/styles/themes.scss
index 47da1fb..418dc62 100644
--- a/src/assets/styles/themes.scss
+++ b/src/assets/styles/themes.scss
@@ -52,6 +52,14 @@
--g-sub-sidebar-menu-active-color: #3d7eff;
// 菜单选中背景色
--g-sub-sidebar-menu-active-bg: #dae9fe;
+ // 弹出菜单背景色
+ --g-sub-sidebar-popmenu-bg: #fff;
+ // 弹出菜单文字颜色
+ --g-sub-sidebar-popmenu-color: rgb(92 92 92);
+ // 弹出菜单鼠标悬浮文字颜色
+ --g-sub-sidebar-popmenu-hover-color: #dae9fe;
+ // 弹出菜单选中文字颜色
+ --g-sub-sidebar-popmenu-active-color: rgb(92 92 92);
/* ----- 顶栏 ----- */
--g-toolbar-bg: var(--el-bg-color);
diff --git a/src/layouts/components/Header/index.vue b/src/layouts/components/Header/index.vue
index 4a98f23..83ad8cd 100644
--- a/src/layouts/components/Header/index.vue
+++ b/src/layouts/components/Header/index.vue
@@ -31,7 +31,7 @@
-
+
{{ item.meta.title }}
@@ -136,8 +136,7 @@
display: flex;
align-items: center;
justify-content: center;
- flex-direction: column;
- padding: 10px;
+ padding: 5px;
height: auto;
cursor: pointer;
color: var(--g-header-menu-color);
@@ -150,7 +149,7 @@
}
.el-icon {
- font-size: 24px;
+ font-size: 18px;
vertical-align: middle;
}
@@ -161,6 +160,14 @@
@include text-overflow(1, false);
}
+
+ .el-icon + span {
+ margin-left: 5px;
+ }
+ }
+
+ .item + .item {
+ margin-left: 5px;
}
.round-item {
diff --git a/src/layouts/components/SidebarItem/index.vue b/src/layouts/components/SidebarItem/index.vue
index b930871..540d253 100644
--- a/src/layouts/components/SidebarItem/index.vue
+++ b/src/layouts/components/SidebarItem/index.vue
@@ -85,15 +85,15 @@
:deep(.el-sub-menu),
:deep(.el-menu-item) {
.title-icon {
- width: 20px;
- font-size: 20px;
+ width: 16px;
+ font-size: 16px;
vertical-align: -0.25em;
transition: transform 0.3s;
color: unset;
}
.title-icon + .title {
- margin-left: 10px;
+ margin-left: 5px;
}
&:hover > .title-icon,
diff --git a/src/layouts/components/SubSidebar/index.vue b/src/layouts/components/SubSidebar/index.vue
index 9fc8a18..5928469 100644
--- a/src/layouts/components/SubSidebar/index.vue
+++ b/src/layouts/components/SubSidebar/index.vue
@@ -62,7 +62,7 @@
transition: background-color 0.3s, var(--el-transition-box-shadow), left 0.3s, width 0.3s;
&.is-collapse {
- width: 64px;
+ width: 55px;
.sidebar-logo {
&:not(.sidebar-logo-bg) {
@@ -96,7 +96,7 @@
.el-menu {
border-right: 0;
- padding: 0 10px;
+ padding: 0 5px;
padding-top: var(--g-sidebar-logo-height);
padding-top: 16px !important;
transition: border-color 0.3s, background-color 0.3s, color 0.3s, padding-top 0.3s;
diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts
new file mode 100644
index 0000000..55b4d14
--- /dev/null
+++ b/src/router/modules/device.ts
@@ -0,0 +1,286 @@
+// 测量设备
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/device',
+ component: Layout,
+ redirect: '/device/bench',
+ name: 'DBench',
+ meta: {
+ title: '工作台',
+ icon: 'ep:key',
+ auth: '/device/bench',
+ },
+ children: [
+ {
+ path: '/device/bench',
+ name: 'DeviceBench',
+ component: () => import('@/views/device/bench/deviceBench.vue'),
+ meta: {
+ title: '工作台',
+ auth: '/device/bench',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/device',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standingBook',
+ component: Layout,
+ redirect: '/standingBook/measureDevice',
+ name: 'standingBook',
+ meta: {
+ title: '设备台账',
+ icon: 'ep:key',
+ auth: '/device/standingBook',
+ },
+ children: [
+ {
+ path: 'measureDevice',
+ name: 'measureDevice',
+ component: () => import('@/views/device/standingBook/measureDevice.vue'),
+ meta: {
+ title: '测量设备',
+ icon: 'ep:key',
+ auth: '/device/measureDevice',
+ },
+ },
+ {
+ path: 'adjustDevice',
+ name: 'adjustDevice',
+ component: () => import('@/views/device/standingBook/adjustDevice.vue'),
+ meta: {
+ title: '校准/检定设备',
+ icon: 'ep:key',
+ auth: '/device/adjustDevice',
+ },
+ },
+ {
+ path: 'standardMatchDevice',
+ name: 'standardMatchDevice',
+ component: () => import('@/views/device/standingBook/standardMatchDevice.vue'),
+ meta: {
+ title: '标准配套设备',
+ icon: 'ep:key',
+ auth: '/device/standardMatchDevice',
+ },
+ },
+ {
+ path: 'measureTool',
+ name: 'measureTool',
+ component: () => import('@/views/device/standingBook/measureTool.vue'),
+ meta: {
+ title: '测量工装',
+ icon: 'ep:key',
+ auth: '/device/measureTool',
+ },
+ },
+ {
+ path: 'fixedAssets',
+ name: 'fixedAssets',
+ component: () => import('@/views/device/standingBook/fixedAssets.vue'),
+ meta: {
+ title: '固定资产',
+ icon: 'ep:key',
+ auth: '/device/fixedAssets',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standard',
+ component: Layout,
+ redirect: '/standard/list',
+ name: 'Standard',
+ meta: {
+ title: '标准装置',
+ icon: 'ep:key',
+ auth: '/standardEquipment',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'standardList',
+ component: () => import('@/views/device/standardEquipment/standardList.vue'),
+ meta: {
+ title: '标准装置列表',
+ icon: 'ep:key',
+ auth: '/standard/list',
+ },
+ },
+ {
+ path: 'expirationRemind',
+ name: 'expirationRemind',
+ component: () => import('@/views/device/standardEquipment/expirationRemind.vue'),
+ meta: {
+ title: '到期提醒',
+ icon: 'ep:key',
+ auth: '/standard/expirationRemind',
+ },
+ },
+ {
+ path: 'changeApply',
+ name: 'changeApply',
+ component: () => import('@/views/device/standardEquipment/changeApply.vue'),
+ meta: {
+ title: '更换申请',
+ icon: 'ep:key',
+ auth: '/standard/changeApply',
+ },
+ },
+ {
+ path: 'pauseApply',
+ name: 'pauseApply',
+ component: () => import('@/views/device/standardEquipment/pauseApply.vue'),
+ meta: {
+ title: '暂停申请',
+ icon: 'ep:key',
+ auth: '/standard/pauseApply',
+ },
+ },
+ {
+ path: 'cancelApply',
+ name: 'cancelApply',
+ component: () => import('@/views/device/standardEquipment/cancelApply.vue'),
+ meta: {
+ title: '撤销申请',
+ icon: 'ep:key',
+ auth: '/standard/cancelApply',
+ },
+ },
+ {
+ path: 'resumeApply',
+ name: 'resumeApply',
+ component: () => import('@/views/device/standardEquipment/resumeApply.vue'),
+ meta: {
+ title: '恢复申请',
+ icon: 'ep:key',
+ auth: '/standard/resumeApply',
+ },
+ },
+ {
+ path: 'checkApply',
+ name: 'checkApply',
+ component: () => import('@/views/device/standardEquipment/checkApply.vue'),
+ meta: {
+ title: '复查申请',
+ icon: 'ep:key',
+ auth: '/standard/checkApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/stateManage',
+ component: Layout,
+ redirect: '/stateManage/unusedApply',
+ name: 'stateManage',
+ meta: {
+ title: '状态管理',
+ icon: 'ep:key',
+ auth: '/device/stateManage',
+ },
+ children: [
+ {
+ path: 'unusedApply',
+ name: 'unusedApply',
+ component: () => import('@/views/device/stateManage/unusedApply.vue'),
+ meta: {
+ title: '设备闲置申请',
+ icon: 'ep:key',
+ auth: '/device/unusedApply',
+ },
+ },
+ {
+ path: 'sealupApply',
+ name: 'sealupApply',
+ component: () => import('@/views/device/stateManage/sealupApply.vue'),
+ meta: {
+ title: '设备封存申请',
+ icon: 'ep:key',
+ auth: '/device/sealupApply',
+ },
+ },
+ {
+ path: 'openApply',
+ name: 'openApply',
+ component: () => import('@/views/device/stateManage/openApply.vue'),
+ meta: {
+ title: '设备启封申请',
+ icon: 'ep:key',
+ auth: '/device/openApply',
+ },
+ },
+ {
+ path: 'scrapApply',
+ name: 'scrapApply',
+ component: () => import('@/views/device/stateManage/scrapApply.vue'),
+ meta: {
+ title: '设备报废申请',
+ icon: 'ep:key',
+ auth: '/device/scrapApply',
+ },
+ },
+ {
+ path: 'handleApply',
+ name: 'handleApply',
+ component: () => import('@/views/device/stateManage/handleApply.vue'),
+ meta: {
+ title: '设备处置申请',
+ icon: 'ep:key',
+ auth: '/device/handleApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/maintenance',
+ component: Layout,
+ redirect: '/maintenance/maintenanceList',
+ name: 'MaintenanceManage',
+ meta: {
+ title: '设备维护',
+ icon: 'ep:key',
+ auth: '/device/maintenance',
+ },
+ children: [
+ {
+ path: 'maintenanceList',
+ name: 'maintenanceList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceList.vue'),
+ meta: {
+ title: '设备维护列表',
+ icon: 'ep:key',
+ auth: '/device/maintenanceList',
+ },
+ },
+ {
+ path: 'maintenanceCheckList',
+ name: 'maintenanceCheckList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceCheckList.vue'),
+ meta: {
+ title: '设备检修保养验收单',
+ icon: 'ep:key',
+ auth: '/device/maintenance/checkList',
+ },
+ },
+ {
+ path: 'manageCheckList',
+ name: 'manageCheckList',
+ component: () => import('@/views/device/deviceMaintenance/manageCheckList.vue'),
+ meta: {
+ title: '设备管理点检查表',
+ icon: 'ep:key',
+ auth: '/device/manage/checkList',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index fbbf7a4..4153ab5 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -4,6 +4,7 @@
import BreadcrumbExample from './modules/breadcrumb.example'
import systemRoute from './modules/system'
import measureRoute from './modules/measure'
+import deviceRoute from './modules/device'
import type { Route } from '@/global'
import useSettingsStore from '@/store/modules/settings'
@@ -132,11 +133,10 @@
meta: {
title: '测量设备',
icon: '',
- auth: 'clsb',
+ auth: '/device',
},
children: [
- MultilevelMenuExample,
- BreadcrumbExample,
+ ...deviceRoute,
],
},
{
diff --git a/src/settings.ts b/src/settings.ts
index f89a3ab..ae5c3f5 100644
--- a/src/settings.ts
+++ b/src/settings.ts
@@ -16,6 +16,7 @@
menu: {
baseOn: 'backend',
menuMode: 'head',
+ showIcon: true,
enableSubMenuCollapseButton: true,
},
toolbar: {
diff --git a/src/views/device/bench/deviceBench.vue b/src/views/device/bench/deviceBench.vue
new file mode 100644
index 0000000..9206576
--- /dev/null
+++ b/src/views/device/bench/deviceBench.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 工作台
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceCheckList.vue b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
new file mode 100644
index 0000000..84224db
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备检修保养验收单
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue
new file mode 100644
index 0000000..3c91abd
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备维护列表
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/manageCheckList.vue b/src/views/device/deviceMaintenance/manageCheckList.vue
new file mode 100644
index 0000000..a4ace73
--- /dev/null
+++ b/src/views/device/deviceMaintenance/manageCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备管理点检查表
+
+
+
+
diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue
new file mode 100644
index 0000000..c093520
--- /dev/null
+++ b/src/views/device/standardEquipment/cancelApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 撤销申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/changeApply.vue b/src/views/device/standardEquipment/changeApply.vue
new file mode 100644
index 0000000..0762330
--- /dev/null
+++ b/src/views/device/standardEquipment/changeApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 更换申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/checkApply.vue b/src/views/device/standardEquipment/checkApply.vue
new file mode 100644
index 0000000..9cadc01
--- /dev/null
+++ b/src/views/device/standardEquipment/checkApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 复查申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/expirationRemind.vue b/src/views/device/standardEquipment/expirationRemind.vue
new file mode 100644
index 0000000..e3ec8d3
--- /dev/null
+++ b/src/views/device/standardEquipment/expirationRemind.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 到期提醒
+
+
+
+
diff --git a/src/App.vue b/src/App.vue
index 8624b4c..52ccd6e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,7 +27,7 @@
actualWidth = 0
}
else if (settingsStore.menu.subMenuCollapse) {
- actualWidth = 64
+ actualWidth = 55
}
return `${actualWidth}px`
})
diff --git a/src/assets/icons/icon-setting.svg b/src/assets/icons/icon-setting.svg
new file mode 100644
index 0000000..33353f0
--- /dev/null
+++ b/src/assets/icons/icon-setting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/next_level.png b/src/assets/images/next_level.png
new file mode 100644
index 0000000..53d2837
--- /dev/null
+++ b/src/assets/images/next_level.png
Binary files differ
diff --git a/src/assets/images/next_level_active.png b/src/assets/images/next_level_active.png
new file mode 100644
index 0000000..1a52ae8
--- /dev/null
+++ b/src/assets/images/next_level_active.png
Binary files differ
diff --git a/src/assets/styles/element-plus/index.scss b/src/assets/styles/element-plus/index.scss
index 3b53223..6dc95ed 100644
--- a/src/assets/styles/element-plus/index.scss
+++ b/src/assets/styles/element-plus/index.scss
@@ -7,6 +7,10 @@
$table:(
"header-bg-color":#f2f6ff,
"header-text-color":#444c59
+ ),
+ $menu:(
+ "base-level-padding": 15px,
+ "level-padding": 10px
)
);
@use "element-plus/theme-chalk/src/index.scss" as *;
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 4565a0f..938efd4 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -6,7 +6,7 @@
// 头部宽度(默认自适应宽度,可固定宽度,固定宽度后为居中显示)
--g-header-width: 100%;
// 头部高度
- --g-header-height: 67px;
+ --g-header-height: 60px;
// 侧边栏宽度
--g-main-sidebar-width: 70px;
--g-sub-sidebar-width: 180px;
@@ -91,3 +91,20 @@
.el-cascader.full-width-input {
width: 100% !important;
}
+
+.el-menu--popup {
+ color: var(--g-sub-sidebar-popmenu-bg);
+
+ .sidebar-item {
+ .el-menu-item,
+ .el-sub-menu__title {
+ color: var(--g-sub-sidebar-popmenu-color) !important;
+ }
+
+ .el-menu-item:hover,
+ .el-sub-menu__title:hover {
+ color: var(--g-sub-sidebar-popmenu-active-color) !important;
+ background-color: var(--g-sub-sidebar-popmenu-hover-color) !important;
+ }
+ }
+}
diff --git a/src/assets/styles/themes.scss b/src/assets/styles/themes.scss
index 47da1fb..418dc62 100644
--- a/src/assets/styles/themes.scss
+++ b/src/assets/styles/themes.scss
@@ -52,6 +52,14 @@
--g-sub-sidebar-menu-active-color: #3d7eff;
// 菜单选中背景色
--g-sub-sidebar-menu-active-bg: #dae9fe;
+ // 弹出菜单背景色
+ --g-sub-sidebar-popmenu-bg: #fff;
+ // 弹出菜单文字颜色
+ --g-sub-sidebar-popmenu-color: rgb(92 92 92);
+ // 弹出菜单鼠标悬浮文字颜色
+ --g-sub-sidebar-popmenu-hover-color: #dae9fe;
+ // 弹出菜单选中文字颜色
+ --g-sub-sidebar-popmenu-active-color: rgb(92 92 92);
/* ----- 顶栏 ----- */
--g-toolbar-bg: var(--el-bg-color);
diff --git a/src/layouts/components/Header/index.vue b/src/layouts/components/Header/index.vue
index 4a98f23..83ad8cd 100644
--- a/src/layouts/components/Header/index.vue
+++ b/src/layouts/components/Header/index.vue
@@ -31,7 +31,7 @@
-
+
{{ item.meta.title }}
@@ -136,8 +136,7 @@
display: flex;
align-items: center;
justify-content: center;
- flex-direction: column;
- padding: 10px;
+ padding: 5px;
height: auto;
cursor: pointer;
color: var(--g-header-menu-color);
@@ -150,7 +149,7 @@
}
.el-icon {
- font-size: 24px;
+ font-size: 18px;
vertical-align: middle;
}
@@ -161,6 +160,14 @@
@include text-overflow(1, false);
}
+
+ .el-icon + span {
+ margin-left: 5px;
+ }
+ }
+
+ .item + .item {
+ margin-left: 5px;
}
.round-item {
diff --git a/src/layouts/components/SidebarItem/index.vue b/src/layouts/components/SidebarItem/index.vue
index b930871..540d253 100644
--- a/src/layouts/components/SidebarItem/index.vue
+++ b/src/layouts/components/SidebarItem/index.vue
@@ -85,15 +85,15 @@
:deep(.el-sub-menu),
:deep(.el-menu-item) {
.title-icon {
- width: 20px;
- font-size: 20px;
+ width: 16px;
+ font-size: 16px;
vertical-align: -0.25em;
transition: transform 0.3s;
color: unset;
}
.title-icon + .title {
- margin-left: 10px;
+ margin-left: 5px;
}
&:hover > .title-icon,
diff --git a/src/layouts/components/SubSidebar/index.vue b/src/layouts/components/SubSidebar/index.vue
index 9fc8a18..5928469 100644
--- a/src/layouts/components/SubSidebar/index.vue
+++ b/src/layouts/components/SubSidebar/index.vue
@@ -62,7 +62,7 @@
transition: background-color 0.3s, var(--el-transition-box-shadow), left 0.3s, width 0.3s;
&.is-collapse {
- width: 64px;
+ width: 55px;
.sidebar-logo {
&:not(.sidebar-logo-bg) {
@@ -96,7 +96,7 @@
.el-menu {
border-right: 0;
- padding: 0 10px;
+ padding: 0 5px;
padding-top: var(--g-sidebar-logo-height);
padding-top: 16px !important;
transition: border-color 0.3s, background-color 0.3s, color 0.3s, padding-top 0.3s;
diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts
new file mode 100644
index 0000000..55b4d14
--- /dev/null
+++ b/src/router/modules/device.ts
@@ -0,0 +1,286 @@
+// 测量设备
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/device',
+ component: Layout,
+ redirect: '/device/bench',
+ name: 'DBench',
+ meta: {
+ title: '工作台',
+ icon: 'ep:key',
+ auth: '/device/bench',
+ },
+ children: [
+ {
+ path: '/device/bench',
+ name: 'DeviceBench',
+ component: () => import('@/views/device/bench/deviceBench.vue'),
+ meta: {
+ title: '工作台',
+ auth: '/device/bench',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/device',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standingBook',
+ component: Layout,
+ redirect: '/standingBook/measureDevice',
+ name: 'standingBook',
+ meta: {
+ title: '设备台账',
+ icon: 'ep:key',
+ auth: '/device/standingBook',
+ },
+ children: [
+ {
+ path: 'measureDevice',
+ name: 'measureDevice',
+ component: () => import('@/views/device/standingBook/measureDevice.vue'),
+ meta: {
+ title: '测量设备',
+ icon: 'ep:key',
+ auth: '/device/measureDevice',
+ },
+ },
+ {
+ path: 'adjustDevice',
+ name: 'adjustDevice',
+ component: () => import('@/views/device/standingBook/adjustDevice.vue'),
+ meta: {
+ title: '校准/检定设备',
+ icon: 'ep:key',
+ auth: '/device/adjustDevice',
+ },
+ },
+ {
+ path: 'standardMatchDevice',
+ name: 'standardMatchDevice',
+ component: () => import('@/views/device/standingBook/standardMatchDevice.vue'),
+ meta: {
+ title: '标准配套设备',
+ icon: 'ep:key',
+ auth: '/device/standardMatchDevice',
+ },
+ },
+ {
+ path: 'measureTool',
+ name: 'measureTool',
+ component: () => import('@/views/device/standingBook/measureTool.vue'),
+ meta: {
+ title: '测量工装',
+ icon: 'ep:key',
+ auth: '/device/measureTool',
+ },
+ },
+ {
+ path: 'fixedAssets',
+ name: 'fixedAssets',
+ component: () => import('@/views/device/standingBook/fixedAssets.vue'),
+ meta: {
+ title: '固定资产',
+ icon: 'ep:key',
+ auth: '/device/fixedAssets',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standard',
+ component: Layout,
+ redirect: '/standard/list',
+ name: 'Standard',
+ meta: {
+ title: '标准装置',
+ icon: 'ep:key',
+ auth: '/standardEquipment',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'standardList',
+ component: () => import('@/views/device/standardEquipment/standardList.vue'),
+ meta: {
+ title: '标准装置列表',
+ icon: 'ep:key',
+ auth: '/standard/list',
+ },
+ },
+ {
+ path: 'expirationRemind',
+ name: 'expirationRemind',
+ component: () => import('@/views/device/standardEquipment/expirationRemind.vue'),
+ meta: {
+ title: '到期提醒',
+ icon: 'ep:key',
+ auth: '/standard/expirationRemind',
+ },
+ },
+ {
+ path: 'changeApply',
+ name: 'changeApply',
+ component: () => import('@/views/device/standardEquipment/changeApply.vue'),
+ meta: {
+ title: '更换申请',
+ icon: 'ep:key',
+ auth: '/standard/changeApply',
+ },
+ },
+ {
+ path: 'pauseApply',
+ name: 'pauseApply',
+ component: () => import('@/views/device/standardEquipment/pauseApply.vue'),
+ meta: {
+ title: '暂停申请',
+ icon: 'ep:key',
+ auth: '/standard/pauseApply',
+ },
+ },
+ {
+ path: 'cancelApply',
+ name: 'cancelApply',
+ component: () => import('@/views/device/standardEquipment/cancelApply.vue'),
+ meta: {
+ title: '撤销申请',
+ icon: 'ep:key',
+ auth: '/standard/cancelApply',
+ },
+ },
+ {
+ path: 'resumeApply',
+ name: 'resumeApply',
+ component: () => import('@/views/device/standardEquipment/resumeApply.vue'),
+ meta: {
+ title: '恢复申请',
+ icon: 'ep:key',
+ auth: '/standard/resumeApply',
+ },
+ },
+ {
+ path: 'checkApply',
+ name: 'checkApply',
+ component: () => import('@/views/device/standardEquipment/checkApply.vue'),
+ meta: {
+ title: '复查申请',
+ icon: 'ep:key',
+ auth: '/standard/checkApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/stateManage',
+ component: Layout,
+ redirect: '/stateManage/unusedApply',
+ name: 'stateManage',
+ meta: {
+ title: '状态管理',
+ icon: 'ep:key',
+ auth: '/device/stateManage',
+ },
+ children: [
+ {
+ path: 'unusedApply',
+ name: 'unusedApply',
+ component: () => import('@/views/device/stateManage/unusedApply.vue'),
+ meta: {
+ title: '设备闲置申请',
+ icon: 'ep:key',
+ auth: '/device/unusedApply',
+ },
+ },
+ {
+ path: 'sealupApply',
+ name: 'sealupApply',
+ component: () => import('@/views/device/stateManage/sealupApply.vue'),
+ meta: {
+ title: '设备封存申请',
+ icon: 'ep:key',
+ auth: '/device/sealupApply',
+ },
+ },
+ {
+ path: 'openApply',
+ name: 'openApply',
+ component: () => import('@/views/device/stateManage/openApply.vue'),
+ meta: {
+ title: '设备启封申请',
+ icon: 'ep:key',
+ auth: '/device/openApply',
+ },
+ },
+ {
+ path: 'scrapApply',
+ name: 'scrapApply',
+ component: () => import('@/views/device/stateManage/scrapApply.vue'),
+ meta: {
+ title: '设备报废申请',
+ icon: 'ep:key',
+ auth: '/device/scrapApply',
+ },
+ },
+ {
+ path: 'handleApply',
+ name: 'handleApply',
+ component: () => import('@/views/device/stateManage/handleApply.vue'),
+ meta: {
+ title: '设备处置申请',
+ icon: 'ep:key',
+ auth: '/device/handleApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/maintenance',
+ component: Layout,
+ redirect: '/maintenance/maintenanceList',
+ name: 'MaintenanceManage',
+ meta: {
+ title: '设备维护',
+ icon: 'ep:key',
+ auth: '/device/maintenance',
+ },
+ children: [
+ {
+ path: 'maintenanceList',
+ name: 'maintenanceList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceList.vue'),
+ meta: {
+ title: '设备维护列表',
+ icon: 'ep:key',
+ auth: '/device/maintenanceList',
+ },
+ },
+ {
+ path: 'maintenanceCheckList',
+ name: 'maintenanceCheckList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceCheckList.vue'),
+ meta: {
+ title: '设备检修保养验收单',
+ icon: 'ep:key',
+ auth: '/device/maintenance/checkList',
+ },
+ },
+ {
+ path: 'manageCheckList',
+ name: 'manageCheckList',
+ component: () => import('@/views/device/deviceMaintenance/manageCheckList.vue'),
+ meta: {
+ title: '设备管理点检查表',
+ icon: 'ep:key',
+ auth: '/device/manage/checkList',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index fbbf7a4..4153ab5 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -4,6 +4,7 @@
import BreadcrumbExample from './modules/breadcrumb.example'
import systemRoute from './modules/system'
import measureRoute from './modules/measure'
+import deviceRoute from './modules/device'
import type { Route } from '@/global'
import useSettingsStore from '@/store/modules/settings'
@@ -132,11 +133,10 @@
meta: {
title: '测量设备',
icon: '',
- auth: 'clsb',
+ auth: '/device',
},
children: [
- MultilevelMenuExample,
- BreadcrumbExample,
+ ...deviceRoute,
],
},
{
diff --git a/src/settings.ts b/src/settings.ts
index f89a3ab..ae5c3f5 100644
--- a/src/settings.ts
+++ b/src/settings.ts
@@ -16,6 +16,7 @@
menu: {
baseOn: 'backend',
menuMode: 'head',
+ showIcon: true,
enableSubMenuCollapseButton: true,
},
toolbar: {
diff --git a/src/views/device/bench/deviceBench.vue b/src/views/device/bench/deviceBench.vue
new file mode 100644
index 0000000..9206576
--- /dev/null
+++ b/src/views/device/bench/deviceBench.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 工作台
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceCheckList.vue b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
new file mode 100644
index 0000000..84224db
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备检修保养验收单
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue
new file mode 100644
index 0000000..3c91abd
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备维护列表
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/manageCheckList.vue b/src/views/device/deviceMaintenance/manageCheckList.vue
new file mode 100644
index 0000000..a4ace73
--- /dev/null
+++ b/src/views/device/deviceMaintenance/manageCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备管理点检查表
+
+
+
+
diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue
new file mode 100644
index 0000000..c093520
--- /dev/null
+++ b/src/views/device/standardEquipment/cancelApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 撤销申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/changeApply.vue b/src/views/device/standardEquipment/changeApply.vue
new file mode 100644
index 0000000..0762330
--- /dev/null
+++ b/src/views/device/standardEquipment/changeApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 更换申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/checkApply.vue b/src/views/device/standardEquipment/checkApply.vue
new file mode 100644
index 0000000..9cadc01
--- /dev/null
+++ b/src/views/device/standardEquipment/checkApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 复查申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/expirationRemind.vue b/src/views/device/standardEquipment/expirationRemind.vue
new file mode 100644
index 0000000..e3ec8d3
--- /dev/null
+++ b/src/views/device/standardEquipment/expirationRemind.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 到期提醒
+
+
+
+
diff --git a/src/views/device/standardEquipment/pauseApply.vue b/src/views/device/standardEquipment/pauseApply.vue
new file mode 100644
index 0000000..6f2c437
--- /dev/null
+++ b/src/views/device/standardEquipment/pauseApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 暂停申请
+
+
+
+
diff --git a/src/App.vue b/src/App.vue
index 8624b4c..52ccd6e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,7 +27,7 @@
actualWidth = 0
}
else if (settingsStore.menu.subMenuCollapse) {
- actualWidth = 64
+ actualWidth = 55
}
return `${actualWidth}px`
})
diff --git a/src/assets/icons/icon-setting.svg b/src/assets/icons/icon-setting.svg
new file mode 100644
index 0000000..33353f0
--- /dev/null
+++ b/src/assets/icons/icon-setting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/next_level.png b/src/assets/images/next_level.png
new file mode 100644
index 0000000..53d2837
--- /dev/null
+++ b/src/assets/images/next_level.png
Binary files differ
diff --git a/src/assets/images/next_level_active.png b/src/assets/images/next_level_active.png
new file mode 100644
index 0000000..1a52ae8
--- /dev/null
+++ b/src/assets/images/next_level_active.png
Binary files differ
diff --git a/src/assets/styles/element-plus/index.scss b/src/assets/styles/element-plus/index.scss
index 3b53223..6dc95ed 100644
--- a/src/assets/styles/element-plus/index.scss
+++ b/src/assets/styles/element-plus/index.scss
@@ -7,6 +7,10 @@
$table:(
"header-bg-color":#f2f6ff,
"header-text-color":#444c59
+ ),
+ $menu:(
+ "base-level-padding": 15px,
+ "level-padding": 10px
)
);
@use "element-plus/theme-chalk/src/index.scss" as *;
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 4565a0f..938efd4 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -6,7 +6,7 @@
// 头部宽度(默认自适应宽度,可固定宽度,固定宽度后为居中显示)
--g-header-width: 100%;
// 头部高度
- --g-header-height: 67px;
+ --g-header-height: 60px;
// 侧边栏宽度
--g-main-sidebar-width: 70px;
--g-sub-sidebar-width: 180px;
@@ -91,3 +91,20 @@
.el-cascader.full-width-input {
width: 100% !important;
}
+
+.el-menu--popup {
+ color: var(--g-sub-sidebar-popmenu-bg);
+
+ .sidebar-item {
+ .el-menu-item,
+ .el-sub-menu__title {
+ color: var(--g-sub-sidebar-popmenu-color) !important;
+ }
+
+ .el-menu-item:hover,
+ .el-sub-menu__title:hover {
+ color: var(--g-sub-sidebar-popmenu-active-color) !important;
+ background-color: var(--g-sub-sidebar-popmenu-hover-color) !important;
+ }
+ }
+}
diff --git a/src/assets/styles/themes.scss b/src/assets/styles/themes.scss
index 47da1fb..418dc62 100644
--- a/src/assets/styles/themes.scss
+++ b/src/assets/styles/themes.scss
@@ -52,6 +52,14 @@
--g-sub-sidebar-menu-active-color: #3d7eff;
// 菜单选中背景色
--g-sub-sidebar-menu-active-bg: #dae9fe;
+ // 弹出菜单背景色
+ --g-sub-sidebar-popmenu-bg: #fff;
+ // 弹出菜单文字颜色
+ --g-sub-sidebar-popmenu-color: rgb(92 92 92);
+ // 弹出菜单鼠标悬浮文字颜色
+ --g-sub-sidebar-popmenu-hover-color: #dae9fe;
+ // 弹出菜单选中文字颜色
+ --g-sub-sidebar-popmenu-active-color: rgb(92 92 92);
/* ----- 顶栏 ----- */
--g-toolbar-bg: var(--el-bg-color);
diff --git a/src/layouts/components/Header/index.vue b/src/layouts/components/Header/index.vue
index 4a98f23..83ad8cd 100644
--- a/src/layouts/components/Header/index.vue
+++ b/src/layouts/components/Header/index.vue
@@ -31,7 +31,7 @@
-
+
{{ item.meta.title }}
@@ -136,8 +136,7 @@
display: flex;
align-items: center;
justify-content: center;
- flex-direction: column;
- padding: 10px;
+ padding: 5px;
height: auto;
cursor: pointer;
color: var(--g-header-menu-color);
@@ -150,7 +149,7 @@
}
.el-icon {
- font-size: 24px;
+ font-size: 18px;
vertical-align: middle;
}
@@ -161,6 +160,14 @@
@include text-overflow(1, false);
}
+
+ .el-icon + span {
+ margin-left: 5px;
+ }
+ }
+
+ .item + .item {
+ margin-left: 5px;
}
.round-item {
diff --git a/src/layouts/components/SidebarItem/index.vue b/src/layouts/components/SidebarItem/index.vue
index b930871..540d253 100644
--- a/src/layouts/components/SidebarItem/index.vue
+++ b/src/layouts/components/SidebarItem/index.vue
@@ -85,15 +85,15 @@
:deep(.el-sub-menu),
:deep(.el-menu-item) {
.title-icon {
- width: 20px;
- font-size: 20px;
+ width: 16px;
+ font-size: 16px;
vertical-align: -0.25em;
transition: transform 0.3s;
color: unset;
}
.title-icon + .title {
- margin-left: 10px;
+ margin-left: 5px;
}
&:hover > .title-icon,
diff --git a/src/layouts/components/SubSidebar/index.vue b/src/layouts/components/SubSidebar/index.vue
index 9fc8a18..5928469 100644
--- a/src/layouts/components/SubSidebar/index.vue
+++ b/src/layouts/components/SubSidebar/index.vue
@@ -62,7 +62,7 @@
transition: background-color 0.3s, var(--el-transition-box-shadow), left 0.3s, width 0.3s;
&.is-collapse {
- width: 64px;
+ width: 55px;
.sidebar-logo {
&:not(.sidebar-logo-bg) {
@@ -96,7 +96,7 @@
.el-menu {
border-right: 0;
- padding: 0 10px;
+ padding: 0 5px;
padding-top: var(--g-sidebar-logo-height);
padding-top: 16px !important;
transition: border-color 0.3s, background-color 0.3s, color 0.3s, padding-top 0.3s;
diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts
new file mode 100644
index 0000000..55b4d14
--- /dev/null
+++ b/src/router/modules/device.ts
@@ -0,0 +1,286 @@
+// 测量设备
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/device',
+ component: Layout,
+ redirect: '/device/bench',
+ name: 'DBench',
+ meta: {
+ title: '工作台',
+ icon: 'ep:key',
+ auth: '/device/bench',
+ },
+ children: [
+ {
+ path: '/device/bench',
+ name: 'DeviceBench',
+ component: () => import('@/views/device/bench/deviceBench.vue'),
+ meta: {
+ title: '工作台',
+ auth: '/device/bench',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/device',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standingBook',
+ component: Layout,
+ redirect: '/standingBook/measureDevice',
+ name: 'standingBook',
+ meta: {
+ title: '设备台账',
+ icon: 'ep:key',
+ auth: '/device/standingBook',
+ },
+ children: [
+ {
+ path: 'measureDevice',
+ name: 'measureDevice',
+ component: () => import('@/views/device/standingBook/measureDevice.vue'),
+ meta: {
+ title: '测量设备',
+ icon: 'ep:key',
+ auth: '/device/measureDevice',
+ },
+ },
+ {
+ path: 'adjustDevice',
+ name: 'adjustDevice',
+ component: () => import('@/views/device/standingBook/adjustDevice.vue'),
+ meta: {
+ title: '校准/检定设备',
+ icon: 'ep:key',
+ auth: '/device/adjustDevice',
+ },
+ },
+ {
+ path: 'standardMatchDevice',
+ name: 'standardMatchDevice',
+ component: () => import('@/views/device/standingBook/standardMatchDevice.vue'),
+ meta: {
+ title: '标准配套设备',
+ icon: 'ep:key',
+ auth: '/device/standardMatchDevice',
+ },
+ },
+ {
+ path: 'measureTool',
+ name: 'measureTool',
+ component: () => import('@/views/device/standingBook/measureTool.vue'),
+ meta: {
+ title: '测量工装',
+ icon: 'ep:key',
+ auth: '/device/measureTool',
+ },
+ },
+ {
+ path: 'fixedAssets',
+ name: 'fixedAssets',
+ component: () => import('@/views/device/standingBook/fixedAssets.vue'),
+ meta: {
+ title: '固定资产',
+ icon: 'ep:key',
+ auth: '/device/fixedAssets',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standard',
+ component: Layout,
+ redirect: '/standard/list',
+ name: 'Standard',
+ meta: {
+ title: '标准装置',
+ icon: 'ep:key',
+ auth: '/standardEquipment',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'standardList',
+ component: () => import('@/views/device/standardEquipment/standardList.vue'),
+ meta: {
+ title: '标准装置列表',
+ icon: 'ep:key',
+ auth: '/standard/list',
+ },
+ },
+ {
+ path: 'expirationRemind',
+ name: 'expirationRemind',
+ component: () => import('@/views/device/standardEquipment/expirationRemind.vue'),
+ meta: {
+ title: '到期提醒',
+ icon: 'ep:key',
+ auth: '/standard/expirationRemind',
+ },
+ },
+ {
+ path: 'changeApply',
+ name: 'changeApply',
+ component: () => import('@/views/device/standardEquipment/changeApply.vue'),
+ meta: {
+ title: '更换申请',
+ icon: 'ep:key',
+ auth: '/standard/changeApply',
+ },
+ },
+ {
+ path: 'pauseApply',
+ name: 'pauseApply',
+ component: () => import('@/views/device/standardEquipment/pauseApply.vue'),
+ meta: {
+ title: '暂停申请',
+ icon: 'ep:key',
+ auth: '/standard/pauseApply',
+ },
+ },
+ {
+ path: 'cancelApply',
+ name: 'cancelApply',
+ component: () => import('@/views/device/standardEquipment/cancelApply.vue'),
+ meta: {
+ title: '撤销申请',
+ icon: 'ep:key',
+ auth: '/standard/cancelApply',
+ },
+ },
+ {
+ path: 'resumeApply',
+ name: 'resumeApply',
+ component: () => import('@/views/device/standardEquipment/resumeApply.vue'),
+ meta: {
+ title: '恢复申请',
+ icon: 'ep:key',
+ auth: '/standard/resumeApply',
+ },
+ },
+ {
+ path: 'checkApply',
+ name: 'checkApply',
+ component: () => import('@/views/device/standardEquipment/checkApply.vue'),
+ meta: {
+ title: '复查申请',
+ icon: 'ep:key',
+ auth: '/standard/checkApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/stateManage',
+ component: Layout,
+ redirect: '/stateManage/unusedApply',
+ name: 'stateManage',
+ meta: {
+ title: '状态管理',
+ icon: 'ep:key',
+ auth: '/device/stateManage',
+ },
+ children: [
+ {
+ path: 'unusedApply',
+ name: 'unusedApply',
+ component: () => import('@/views/device/stateManage/unusedApply.vue'),
+ meta: {
+ title: '设备闲置申请',
+ icon: 'ep:key',
+ auth: '/device/unusedApply',
+ },
+ },
+ {
+ path: 'sealupApply',
+ name: 'sealupApply',
+ component: () => import('@/views/device/stateManage/sealupApply.vue'),
+ meta: {
+ title: '设备封存申请',
+ icon: 'ep:key',
+ auth: '/device/sealupApply',
+ },
+ },
+ {
+ path: 'openApply',
+ name: 'openApply',
+ component: () => import('@/views/device/stateManage/openApply.vue'),
+ meta: {
+ title: '设备启封申请',
+ icon: 'ep:key',
+ auth: '/device/openApply',
+ },
+ },
+ {
+ path: 'scrapApply',
+ name: 'scrapApply',
+ component: () => import('@/views/device/stateManage/scrapApply.vue'),
+ meta: {
+ title: '设备报废申请',
+ icon: 'ep:key',
+ auth: '/device/scrapApply',
+ },
+ },
+ {
+ path: 'handleApply',
+ name: 'handleApply',
+ component: () => import('@/views/device/stateManage/handleApply.vue'),
+ meta: {
+ title: '设备处置申请',
+ icon: 'ep:key',
+ auth: '/device/handleApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/maintenance',
+ component: Layout,
+ redirect: '/maintenance/maintenanceList',
+ name: 'MaintenanceManage',
+ meta: {
+ title: '设备维护',
+ icon: 'ep:key',
+ auth: '/device/maintenance',
+ },
+ children: [
+ {
+ path: 'maintenanceList',
+ name: 'maintenanceList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceList.vue'),
+ meta: {
+ title: '设备维护列表',
+ icon: 'ep:key',
+ auth: '/device/maintenanceList',
+ },
+ },
+ {
+ path: 'maintenanceCheckList',
+ name: 'maintenanceCheckList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceCheckList.vue'),
+ meta: {
+ title: '设备检修保养验收单',
+ icon: 'ep:key',
+ auth: '/device/maintenance/checkList',
+ },
+ },
+ {
+ path: 'manageCheckList',
+ name: 'manageCheckList',
+ component: () => import('@/views/device/deviceMaintenance/manageCheckList.vue'),
+ meta: {
+ title: '设备管理点检查表',
+ icon: 'ep:key',
+ auth: '/device/manage/checkList',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index fbbf7a4..4153ab5 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -4,6 +4,7 @@
import BreadcrumbExample from './modules/breadcrumb.example'
import systemRoute from './modules/system'
import measureRoute from './modules/measure'
+import deviceRoute from './modules/device'
import type { Route } from '@/global'
import useSettingsStore from '@/store/modules/settings'
@@ -132,11 +133,10 @@
meta: {
title: '测量设备',
icon: '',
- auth: 'clsb',
+ auth: '/device',
},
children: [
- MultilevelMenuExample,
- BreadcrumbExample,
+ ...deviceRoute,
],
},
{
diff --git a/src/settings.ts b/src/settings.ts
index f89a3ab..ae5c3f5 100644
--- a/src/settings.ts
+++ b/src/settings.ts
@@ -16,6 +16,7 @@
menu: {
baseOn: 'backend',
menuMode: 'head',
+ showIcon: true,
enableSubMenuCollapseButton: true,
},
toolbar: {
diff --git a/src/views/device/bench/deviceBench.vue b/src/views/device/bench/deviceBench.vue
new file mode 100644
index 0000000..9206576
--- /dev/null
+++ b/src/views/device/bench/deviceBench.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 工作台
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceCheckList.vue b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
new file mode 100644
index 0000000..84224db
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备检修保养验收单
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue
new file mode 100644
index 0000000..3c91abd
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备维护列表
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/manageCheckList.vue b/src/views/device/deviceMaintenance/manageCheckList.vue
new file mode 100644
index 0000000..a4ace73
--- /dev/null
+++ b/src/views/device/deviceMaintenance/manageCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备管理点检查表
+
+
+
+
diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue
new file mode 100644
index 0000000..c093520
--- /dev/null
+++ b/src/views/device/standardEquipment/cancelApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 撤销申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/changeApply.vue b/src/views/device/standardEquipment/changeApply.vue
new file mode 100644
index 0000000..0762330
--- /dev/null
+++ b/src/views/device/standardEquipment/changeApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 更换申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/checkApply.vue b/src/views/device/standardEquipment/checkApply.vue
new file mode 100644
index 0000000..9cadc01
--- /dev/null
+++ b/src/views/device/standardEquipment/checkApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 复查申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/expirationRemind.vue b/src/views/device/standardEquipment/expirationRemind.vue
new file mode 100644
index 0000000..e3ec8d3
--- /dev/null
+++ b/src/views/device/standardEquipment/expirationRemind.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 到期提醒
+
+
+
+
diff --git a/src/views/device/standardEquipment/pauseApply.vue b/src/views/device/standardEquipment/pauseApply.vue
new file mode 100644
index 0000000..6f2c437
--- /dev/null
+++ b/src/views/device/standardEquipment/pauseApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 暂停申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/resumeApply.vue b/src/views/device/standardEquipment/resumeApply.vue
new file mode 100644
index 0000000..d4a80e8
--- /dev/null
+++ b/src/views/device/standardEquipment/resumeApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 恢复申请
+
+
+
+
diff --git a/src/App.vue b/src/App.vue
index 8624b4c..52ccd6e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,7 +27,7 @@
actualWidth = 0
}
else if (settingsStore.menu.subMenuCollapse) {
- actualWidth = 64
+ actualWidth = 55
}
return `${actualWidth}px`
})
diff --git a/src/assets/icons/icon-setting.svg b/src/assets/icons/icon-setting.svg
new file mode 100644
index 0000000..33353f0
--- /dev/null
+++ b/src/assets/icons/icon-setting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/next_level.png b/src/assets/images/next_level.png
new file mode 100644
index 0000000..53d2837
--- /dev/null
+++ b/src/assets/images/next_level.png
Binary files differ
diff --git a/src/assets/images/next_level_active.png b/src/assets/images/next_level_active.png
new file mode 100644
index 0000000..1a52ae8
--- /dev/null
+++ b/src/assets/images/next_level_active.png
Binary files differ
diff --git a/src/assets/styles/element-plus/index.scss b/src/assets/styles/element-plus/index.scss
index 3b53223..6dc95ed 100644
--- a/src/assets/styles/element-plus/index.scss
+++ b/src/assets/styles/element-plus/index.scss
@@ -7,6 +7,10 @@
$table:(
"header-bg-color":#f2f6ff,
"header-text-color":#444c59
+ ),
+ $menu:(
+ "base-level-padding": 15px,
+ "level-padding": 10px
)
);
@use "element-plus/theme-chalk/src/index.scss" as *;
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 4565a0f..938efd4 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -6,7 +6,7 @@
// 头部宽度(默认自适应宽度,可固定宽度,固定宽度后为居中显示)
--g-header-width: 100%;
// 头部高度
- --g-header-height: 67px;
+ --g-header-height: 60px;
// 侧边栏宽度
--g-main-sidebar-width: 70px;
--g-sub-sidebar-width: 180px;
@@ -91,3 +91,20 @@
.el-cascader.full-width-input {
width: 100% !important;
}
+
+.el-menu--popup {
+ color: var(--g-sub-sidebar-popmenu-bg);
+
+ .sidebar-item {
+ .el-menu-item,
+ .el-sub-menu__title {
+ color: var(--g-sub-sidebar-popmenu-color) !important;
+ }
+
+ .el-menu-item:hover,
+ .el-sub-menu__title:hover {
+ color: var(--g-sub-sidebar-popmenu-active-color) !important;
+ background-color: var(--g-sub-sidebar-popmenu-hover-color) !important;
+ }
+ }
+}
diff --git a/src/assets/styles/themes.scss b/src/assets/styles/themes.scss
index 47da1fb..418dc62 100644
--- a/src/assets/styles/themes.scss
+++ b/src/assets/styles/themes.scss
@@ -52,6 +52,14 @@
--g-sub-sidebar-menu-active-color: #3d7eff;
// 菜单选中背景色
--g-sub-sidebar-menu-active-bg: #dae9fe;
+ // 弹出菜单背景色
+ --g-sub-sidebar-popmenu-bg: #fff;
+ // 弹出菜单文字颜色
+ --g-sub-sidebar-popmenu-color: rgb(92 92 92);
+ // 弹出菜单鼠标悬浮文字颜色
+ --g-sub-sidebar-popmenu-hover-color: #dae9fe;
+ // 弹出菜单选中文字颜色
+ --g-sub-sidebar-popmenu-active-color: rgb(92 92 92);
/* ----- 顶栏 ----- */
--g-toolbar-bg: var(--el-bg-color);
diff --git a/src/layouts/components/Header/index.vue b/src/layouts/components/Header/index.vue
index 4a98f23..83ad8cd 100644
--- a/src/layouts/components/Header/index.vue
+++ b/src/layouts/components/Header/index.vue
@@ -31,7 +31,7 @@
-
+
{{ item.meta.title }}
@@ -136,8 +136,7 @@
display: flex;
align-items: center;
justify-content: center;
- flex-direction: column;
- padding: 10px;
+ padding: 5px;
height: auto;
cursor: pointer;
color: var(--g-header-menu-color);
@@ -150,7 +149,7 @@
}
.el-icon {
- font-size: 24px;
+ font-size: 18px;
vertical-align: middle;
}
@@ -161,6 +160,14 @@
@include text-overflow(1, false);
}
+
+ .el-icon + span {
+ margin-left: 5px;
+ }
+ }
+
+ .item + .item {
+ margin-left: 5px;
}
.round-item {
diff --git a/src/layouts/components/SidebarItem/index.vue b/src/layouts/components/SidebarItem/index.vue
index b930871..540d253 100644
--- a/src/layouts/components/SidebarItem/index.vue
+++ b/src/layouts/components/SidebarItem/index.vue
@@ -85,15 +85,15 @@
:deep(.el-sub-menu),
:deep(.el-menu-item) {
.title-icon {
- width: 20px;
- font-size: 20px;
+ width: 16px;
+ font-size: 16px;
vertical-align: -0.25em;
transition: transform 0.3s;
color: unset;
}
.title-icon + .title {
- margin-left: 10px;
+ margin-left: 5px;
}
&:hover > .title-icon,
diff --git a/src/layouts/components/SubSidebar/index.vue b/src/layouts/components/SubSidebar/index.vue
index 9fc8a18..5928469 100644
--- a/src/layouts/components/SubSidebar/index.vue
+++ b/src/layouts/components/SubSidebar/index.vue
@@ -62,7 +62,7 @@
transition: background-color 0.3s, var(--el-transition-box-shadow), left 0.3s, width 0.3s;
&.is-collapse {
- width: 64px;
+ width: 55px;
.sidebar-logo {
&:not(.sidebar-logo-bg) {
@@ -96,7 +96,7 @@
.el-menu {
border-right: 0;
- padding: 0 10px;
+ padding: 0 5px;
padding-top: var(--g-sidebar-logo-height);
padding-top: 16px !important;
transition: border-color 0.3s, background-color 0.3s, color 0.3s, padding-top 0.3s;
diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts
new file mode 100644
index 0000000..55b4d14
--- /dev/null
+++ b/src/router/modules/device.ts
@@ -0,0 +1,286 @@
+// 测量设备
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/device',
+ component: Layout,
+ redirect: '/device/bench',
+ name: 'DBench',
+ meta: {
+ title: '工作台',
+ icon: 'ep:key',
+ auth: '/device/bench',
+ },
+ children: [
+ {
+ path: '/device/bench',
+ name: 'DeviceBench',
+ component: () => import('@/views/device/bench/deviceBench.vue'),
+ meta: {
+ title: '工作台',
+ auth: '/device/bench',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/device',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standingBook',
+ component: Layout,
+ redirect: '/standingBook/measureDevice',
+ name: 'standingBook',
+ meta: {
+ title: '设备台账',
+ icon: 'ep:key',
+ auth: '/device/standingBook',
+ },
+ children: [
+ {
+ path: 'measureDevice',
+ name: 'measureDevice',
+ component: () => import('@/views/device/standingBook/measureDevice.vue'),
+ meta: {
+ title: '测量设备',
+ icon: 'ep:key',
+ auth: '/device/measureDevice',
+ },
+ },
+ {
+ path: 'adjustDevice',
+ name: 'adjustDevice',
+ component: () => import('@/views/device/standingBook/adjustDevice.vue'),
+ meta: {
+ title: '校准/检定设备',
+ icon: 'ep:key',
+ auth: '/device/adjustDevice',
+ },
+ },
+ {
+ path: 'standardMatchDevice',
+ name: 'standardMatchDevice',
+ component: () => import('@/views/device/standingBook/standardMatchDevice.vue'),
+ meta: {
+ title: '标准配套设备',
+ icon: 'ep:key',
+ auth: '/device/standardMatchDevice',
+ },
+ },
+ {
+ path: 'measureTool',
+ name: 'measureTool',
+ component: () => import('@/views/device/standingBook/measureTool.vue'),
+ meta: {
+ title: '测量工装',
+ icon: 'ep:key',
+ auth: '/device/measureTool',
+ },
+ },
+ {
+ path: 'fixedAssets',
+ name: 'fixedAssets',
+ component: () => import('@/views/device/standingBook/fixedAssets.vue'),
+ meta: {
+ title: '固定资产',
+ icon: 'ep:key',
+ auth: '/device/fixedAssets',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standard',
+ component: Layout,
+ redirect: '/standard/list',
+ name: 'Standard',
+ meta: {
+ title: '标准装置',
+ icon: 'ep:key',
+ auth: '/standardEquipment',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'standardList',
+ component: () => import('@/views/device/standardEquipment/standardList.vue'),
+ meta: {
+ title: '标准装置列表',
+ icon: 'ep:key',
+ auth: '/standard/list',
+ },
+ },
+ {
+ path: 'expirationRemind',
+ name: 'expirationRemind',
+ component: () => import('@/views/device/standardEquipment/expirationRemind.vue'),
+ meta: {
+ title: '到期提醒',
+ icon: 'ep:key',
+ auth: '/standard/expirationRemind',
+ },
+ },
+ {
+ path: 'changeApply',
+ name: 'changeApply',
+ component: () => import('@/views/device/standardEquipment/changeApply.vue'),
+ meta: {
+ title: '更换申请',
+ icon: 'ep:key',
+ auth: '/standard/changeApply',
+ },
+ },
+ {
+ path: 'pauseApply',
+ name: 'pauseApply',
+ component: () => import('@/views/device/standardEquipment/pauseApply.vue'),
+ meta: {
+ title: '暂停申请',
+ icon: 'ep:key',
+ auth: '/standard/pauseApply',
+ },
+ },
+ {
+ path: 'cancelApply',
+ name: 'cancelApply',
+ component: () => import('@/views/device/standardEquipment/cancelApply.vue'),
+ meta: {
+ title: '撤销申请',
+ icon: 'ep:key',
+ auth: '/standard/cancelApply',
+ },
+ },
+ {
+ path: 'resumeApply',
+ name: 'resumeApply',
+ component: () => import('@/views/device/standardEquipment/resumeApply.vue'),
+ meta: {
+ title: '恢复申请',
+ icon: 'ep:key',
+ auth: '/standard/resumeApply',
+ },
+ },
+ {
+ path: 'checkApply',
+ name: 'checkApply',
+ component: () => import('@/views/device/standardEquipment/checkApply.vue'),
+ meta: {
+ title: '复查申请',
+ icon: 'ep:key',
+ auth: '/standard/checkApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/stateManage',
+ component: Layout,
+ redirect: '/stateManage/unusedApply',
+ name: 'stateManage',
+ meta: {
+ title: '状态管理',
+ icon: 'ep:key',
+ auth: '/device/stateManage',
+ },
+ children: [
+ {
+ path: 'unusedApply',
+ name: 'unusedApply',
+ component: () => import('@/views/device/stateManage/unusedApply.vue'),
+ meta: {
+ title: '设备闲置申请',
+ icon: 'ep:key',
+ auth: '/device/unusedApply',
+ },
+ },
+ {
+ path: 'sealupApply',
+ name: 'sealupApply',
+ component: () => import('@/views/device/stateManage/sealupApply.vue'),
+ meta: {
+ title: '设备封存申请',
+ icon: 'ep:key',
+ auth: '/device/sealupApply',
+ },
+ },
+ {
+ path: 'openApply',
+ name: 'openApply',
+ component: () => import('@/views/device/stateManage/openApply.vue'),
+ meta: {
+ title: '设备启封申请',
+ icon: 'ep:key',
+ auth: '/device/openApply',
+ },
+ },
+ {
+ path: 'scrapApply',
+ name: 'scrapApply',
+ component: () => import('@/views/device/stateManage/scrapApply.vue'),
+ meta: {
+ title: '设备报废申请',
+ icon: 'ep:key',
+ auth: '/device/scrapApply',
+ },
+ },
+ {
+ path: 'handleApply',
+ name: 'handleApply',
+ component: () => import('@/views/device/stateManage/handleApply.vue'),
+ meta: {
+ title: '设备处置申请',
+ icon: 'ep:key',
+ auth: '/device/handleApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/maintenance',
+ component: Layout,
+ redirect: '/maintenance/maintenanceList',
+ name: 'MaintenanceManage',
+ meta: {
+ title: '设备维护',
+ icon: 'ep:key',
+ auth: '/device/maintenance',
+ },
+ children: [
+ {
+ path: 'maintenanceList',
+ name: 'maintenanceList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceList.vue'),
+ meta: {
+ title: '设备维护列表',
+ icon: 'ep:key',
+ auth: '/device/maintenanceList',
+ },
+ },
+ {
+ path: 'maintenanceCheckList',
+ name: 'maintenanceCheckList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceCheckList.vue'),
+ meta: {
+ title: '设备检修保养验收单',
+ icon: 'ep:key',
+ auth: '/device/maintenance/checkList',
+ },
+ },
+ {
+ path: 'manageCheckList',
+ name: 'manageCheckList',
+ component: () => import('@/views/device/deviceMaintenance/manageCheckList.vue'),
+ meta: {
+ title: '设备管理点检查表',
+ icon: 'ep:key',
+ auth: '/device/manage/checkList',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index fbbf7a4..4153ab5 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -4,6 +4,7 @@
import BreadcrumbExample from './modules/breadcrumb.example'
import systemRoute from './modules/system'
import measureRoute from './modules/measure'
+import deviceRoute from './modules/device'
import type { Route } from '@/global'
import useSettingsStore from '@/store/modules/settings'
@@ -132,11 +133,10 @@
meta: {
title: '测量设备',
icon: '',
- auth: 'clsb',
+ auth: '/device',
},
children: [
- MultilevelMenuExample,
- BreadcrumbExample,
+ ...deviceRoute,
],
},
{
diff --git a/src/settings.ts b/src/settings.ts
index f89a3ab..ae5c3f5 100644
--- a/src/settings.ts
+++ b/src/settings.ts
@@ -16,6 +16,7 @@
menu: {
baseOn: 'backend',
menuMode: 'head',
+ showIcon: true,
enableSubMenuCollapseButton: true,
},
toolbar: {
diff --git a/src/views/device/bench/deviceBench.vue b/src/views/device/bench/deviceBench.vue
new file mode 100644
index 0000000..9206576
--- /dev/null
+++ b/src/views/device/bench/deviceBench.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 工作台
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceCheckList.vue b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
new file mode 100644
index 0000000..84224db
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备检修保养验收单
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue
new file mode 100644
index 0000000..3c91abd
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备维护列表
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/manageCheckList.vue b/src/views/device/deviceMaintenance/manageCheckList.vue
new file mode 100644
index 0000000..a4ace73
--- /dev/null
+++ b/src/views/device/deviceMaintenance/manageCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备管理点检查表
+
+
+
+
diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue
new file mode 100644
index 0000000..c093520
--- /dev/null
+++ b/src/views/device/standardEquipment/cancelApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 撤销申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/changeApply.vue b/src/views/device/standardEquipment/changeApply.vue
new file mode 100644
index 0000000..0762330
--- /dev/null
+++ b/src/views/device/standardEquipment/changeApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 更换申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/checkApply.vue b/src/views/device/standardEquipment/checkApply.vue
new file mode 100644
index 0000000..9cadc01
--- /dev/null
+++ b/src/views/device/standardEquipment/checkApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 复查申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/expirationRemind.vue b/src/views/device/standardEquipment/expirationRemind.vue
new file mode 100644
index 0000000..e3ec8d3
--- /dev/null
+++ b/src/views/device/standardEquipment/expirationRemind.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 到期提醒
+
+
+
+
diff --git a/src/views/device/standardEquipment/pauseApply.vue b/src/views/device/standardEquipment/pauseApply.vue
new file mode 100644
index 0000000..6f2c437
--- /dev/null
+++ b/src/views/device/standardEquipment/pauseApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 暂停申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/resumeApply.vue b/src/views/device/standardEquipment/resumeApply.vue
new file mode 100644
index 0000000..d4a80e8
--- /dev/null
+++ b/src/views/device/standardEquipment/resumeApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 恢复申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/standardList.vue b/src/views/device/standardEquipment/standardList.vue
new file mode 100644
index 0000000..55e7402
--- /dev/null
+++ b/src/views/device/standardEquipment/standardList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 标准装置列表
+
+
+
+
diff --git a/src/App.vue b/src/App.vue
index 8624b4c..52ccd6e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,7 +27,7 @@
actualWidth = 0
}
else if (settingsStore.menu.subMenuCollapse) {
- actualWidth = 64
+ actualWidth = 55
}
return `${actualWidth}px`
})
diff --git a/src/assets/icons/icon-setting.svg b/src/assets/icons/icon-setting.svg
new file mode 100644
index 0000000..33353f0
--- /dev/null
+++ b/src/assets/icons/icon-setting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/next_level.png b/src/assets/images/next_level.png
new file mode 100644
index 0000000..53d2837
--- /dev/null
+++ b/src/assets/images/next_level.png
Binary files differ
diff --git a/src/assets/images/next_level_active.png b/src/assets/images/next_level_active.png
new file mode 100644
index 0000000..1a52ae8
--- /dev/null
+++ b/src/assets/images/next_level_active.png
Binary files differ
diff --git a/src/assets/styles/element-plus/index.scss b/src/assets/styles/element-plus/index.scss
index 3b53223..6dc95ed 100644
--- a/src/assets/styles/element-plus/index.scss
+++ b/src/assets/styles/element-plus/index.scss
@@ -7,6 +7,10 @@
$table:(
"header-bg-color":#f2f6ff,
"header-text-color":#444c59
+ ),
+ $menu:(
+ "base-level-padding": 15px,
+ "level-padding": 10px
)
);
@use "element-plus/theme-chalk/src/index.scss" as *;
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 4565a0f..938efd4 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -6,7 +6,7 @@
// 头部宽度(默认自适应宽度,可固定宽度,固定宽度后为居中显示)
--g-header-width: 100%;
// 头部高度
- --g-header-height: 67px;
+ --g-header-height: 60px;
// 侧边栏宽度
--g-main-sidebar-width: 70px;
--g-sub-sidebar-width: 180px;
@@ -91,3 +91,20 @@
.el-cascader.full-width-input {
width: 100% !important;
}
+
+.el-menu--popup {
+ color: var(--g-sub-sidebar-popmenu-bg);
+
+ .sidebar-item {
+ .el-menu-item,
+ .el-sub-menu__title {
+ color: var(--g-sub-sidebar-popmenu-color) !important;
+ }
+
+ .el-menu-item:hover,
+ .el-sub-menu__title:hover {
+ color: var(--g-sub-sidebar-popmenu-active-color) !important;
+ background-color: var(--g-sub-sidebar-popmenu-hover-color) !important;
+ }
+ }
+}
diff --git a/src/assets/styles/themes.scss b/src/assets/styles/themes.scss
index 47da1fb..418dc62 100644
--- a/src/assets/styles/themes.scss
+++ b/src/assets/styles/themes.scss
@@ -52,6 +52,14 @@
--g-sub-sidebar-menu-active-color: #3d7eff;
// 菜单选中背景色
--g-sub-sidebar-menu-active-bg: #dae9fe;
+ // 弹出菜单背景色
+ --g-sub-sidebar-popmenu-bg: #fff;
+ // 弹出菜单文字颜色
+ --g-sub-sidebar-popmenu-color: rgb(92 92 92);
+ // 弹出菜单鼠标悬浮文字颜色
+ --g-sub-sidebar-popmenu-hover-color: #dae9fe;
+ // 弹出菜单选中文字颜色
+ --g-sub-sidebar-popmenu-active-color: rgb(92 92 92);
/* ----- 顶栏 ----- */
--g-toolbar-bg: var(--el-bg-color);
diff --git a/src/layouts/components/Header/index.vue b/src/layouts/components/Header/index.vue
index 4a98f23..83ad8cd 100644
--- a/src/layouts/components/Header/index.vue
+++ b/src/layouts/components/Header/index.vue
@@ -31,7 +31,7 @@
-
+
{{ item.meta.title }}
@@ -136,8 +136,7 @@
display: flex;
align-items: center;
justify-content: center;
- flex-direction: column;
- padding: 10px;
+ padding: 5px;
height: auto;
cursor: pointer;
color: var(--g-header-menu-color);
@@ -150,7 +149,7 @@
}
.el-icon {
- font-size: 24px;
+ font-size: 18px;
vertical-align: middle;
}
@@ -161,6 +160,14 @@
@include text-overflow(1, false);
}
+
+ .el-icon + span {
+ margin-left: 5px;
+ }
+ }
+
+ .item + .item {
+ margin-left: 5px;
}
.round-item {
diff --git a/src/layouts/components/SidebarItem/index.vue b/src/layouts/components/SidebarItem/index.vue
index b930871..540d253 100644
--- a/src/layouts/components/SidebarItem/index.vue
+++ b/src/layouts/components/SidebarItem/index.vue
@@ -85,15 +85,15 @@
:deep(.el-sub-menu),
:deep(.el-menu-item) {
.title-icon {
- width: 20px;
- font-size: 20px;
+ width: 16px;
+ font-size: 16px;
vertical-align: -0.25em;
transition: transform 0.3s;
color: unset;
}
.title-icon + .title {
- margin-left: 10px;
+ margin-left: 5px;
}
&:hover > .title-icon,
diff --git a/src/layouts/components/SubSidebar/index.vue b/src/layouts/components/SubSidebar/index.vue
index 9fc8a18..5928469 100644
--- a/src/layouts/components/SubSidebar/index.vue
+++ b/src/layouts/components/SubSidebar/index.vue
@@ -62,7 +62,7 @@
transition: background-color 0.3s, var(--el-transition-box-shadow), left 0.3s, width 0.3s;
&.is-collapse {
- width: 64px;
+ width: 55px;
.sidebar-logo {
&:not(.sidebar-logo-bg) {
@@ -96,7 +96,7 @@
.el-menu {
border-right: 0;
- padding: 0 10px;
+ padding: 0 5px;
padding-top: var(--g-sidebar-logo-height);
padding-top: 16px !important;
transition: border-color 0.3s, background-color 0.3s, color 0.3s, padding-top 0.3s;
diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts
new file mode 100644
index 0000000..55b4d14
--- /dev/null
+++ b/src/router/modules/device.ts
@@ -0,0 +1,286 @@
+// 测量设备
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/device',
+ component: Layout,
+ redirect: '/device/bench',
+ name: 'DBench',
+ meta: {
+ title: '工作台',
+ icon: 'ep:key',
+ auth: '/device/bench',
+ },
+ children: [
+ {
+ path: '/device/bench',
+ name: 'DeviceBench',
+ component: () => import('@/views/device/bench/deviceBench.vue'),
+ meta: {
+ title: '工作台',
+ auth: '/device/bench',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/device',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standingBook',
+ component: Layout,
+ redirect: '/standingBook/measureDevice',
+ name: 'standingBook',
+ meta: {
+ title: '设备台账',
+ icon: 'ep:key',
+ auth: '/device/standingBook',
+ },
+ children: [
+ {
+ path: 'measureDevice',
+ name: 'measureDevice',
+ component: () => import('@/views/device/standingBook/measureDevice.vue'),
+ meta: {
+ title: '测量设备',
+ icon: 'ep:key',
+ auth: '/device/measureDevice',
+ },
+ },
+ {
+ path: 'adjustDevice',
+ name: 'adjustDevice',
+ component: () => import('@/views/device/standingBook/adjustDevice.vue'),
+ meta: {
+ title: '校准/检定设备',
+ icon: 'ep:key',
+ auth: '/device/adjustDevice',
+ },
+ },
+ {
+ path: 'standardMatchDevice',
+ name: 'standardMatchDevice',
+ component: () => import('@/views/device/standingBook/standardMatchDevice.vue'),
+ meta: {
+ title: '标准配套设备',
+ icon: 'ep:key',
+ auth: '/device/standardMatchDevice',
+ },
+ },
+ {
+ path: 'measureTool',
+ name: 'measureTool',
+ component: () => import('@/views/device/standingBook/measureTool.vue'),
+ meta: {
+ title: '测量工装',
+ icon: 'ep:key',
+ auth: '/device/measureTool',
+ },
+ },
+ {
+ path: 'fixedAssets',
+ name: 'fixedAssets',
+ component: () => import('@/views/device/standingBook/fixedAssets.vue'),
+ meta: {
+ title: '固定资产',
+ icon: 'ep:key',
+ auth: '/device/fixedAssets',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standard',
+ component: Layout,
+ redirect: '/standard/list',
+ name: 'Standard',
+ meta: {
+ title: '标准装置',
+ icon: 'ep:key',
+ auth: '/standardEquipment',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'standardList',
+ component: () => import('@/views/device/standardEquipment/standardList.vue'),
+ meta: {
+ title: '标准装置列表',
+ icon: 'ep:key',
+ auth: '/standard/list',
+ },
+ },
+ {
+ path: 'expirationRemind',
+ name: 'expirationRemind',
+ component: () => import('@/views/device/standardEquipment/expirationRemind.vue'),
+ meta: {
+ title: '到期提醒',
+ icon: 'ep:key',
+ auth: '/standard/expirationRemind',
+ },
+ },
+ {
+ path: 'changeApply',
+ name: 'changeApply',
+ component: () => import('@/views/device/standardEquipment/changeApply.vue'),
+ meta: {
+ title: '更换申请',
+ icon: 'ep:key',
+ auth: '/standard/changeApply',
+ },
+ },
+ {
+ path: 'pauseApply',
+ name: 'pauseApply',
+ component: () => import('@/views/device/standardEquipment/pauseApply.vue'),
+ meta: {
+ title: '暂停申请',
+ icon: 'ep:key',
+ auth: '/standard/pauseApply',
+ },
+ },
+ {
+ path: 'cancelApply',
+ name: 'cancelApply',
+ component: () => import('@/views/device/standardEquipment/cancelApply.vue'),
+ meta: {
+ title: '撤销申请',
+ icon: 'ep:key',
+ auth: '/standard/cancelApply',
+ },
+ },
+ {
+ path: 'resumeApply',
+ name: 'resumeApply',
+ component: () => import('@/views/device/standardEquipment/resumeApply.vue'),
+ meta: {
+ title: '恢复申请',
+ icon: 'ep:key',
+ auth: '/standard/resumeApply',
+ },
+ },
+ {
+ path: 'checkApply',
+ name: 'checkApply',
+ component: () => import('@/views/device/standardEquipment/checkApply.vue'),
+ meta: {
+ title: '复查申请',
+ icon: 'ep:key',
+ auth: '/standard/checkApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/stateManage',
+ component: Layout,
+ redirect: '/stateManage/unusedApply',
+ name: 'stateManage',
+ meta: {
+ title: '状态管理',
+ icon: 'ep:key',
+ auth: '/device/stateManage',
+ },
+ children: [
+ {
+ path: 'unusedApply',
+ name: 'unusedApply',
+ component: () => import('@/views/device/stateManage/unusedApply.vue'),
+ meta: {
+ title: '设备闲置申请',
+ icon: 'ep:key',
+ auth: '/device/unusedApply',
+ },
+ },
+ {
+ path: 'sealupApply',
+ name: 'sealupApply',
+ component: () => import('@/views/device/stateManage/sealupApply.vue'),
+ meta: {
+ title: '设备封存申请',
+ icon: 'ep:key',
+ auth: '/device/sealupApply',
+ },
+ },
+ {
+ path: 'openApply',
+ name: 'openApply',
+ component: () => import('@/views/device/stateManage/openApply.vue'),
+ meta: {
+ title: '设备启封申请',
+ icon: 'ep:key',
+ auth: '/device/openApply',
+ },
+ },
+ {
+ path: 'scrapApply',
+ name: 'scrapApply',
+ component: () => import('@/views/device/stateManage/scrapApply.vue'),
+ meta: {
+ title: '设备报废申请',
+ icon: 'ep:key',
+ auth: '/device/scrapApply',
+ },
+ },
+ {
+ path: 'handleApply',
+ name: 'handleApply',
+ component: () => import('@/views/device/stateManage/handleApply.vue'),
+ meta: {
+ title: '设备处置申请',
+ icon: 'ep:key',
+ auth: '/device/handleApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/maintenance',
+ component: Layout,
+ redirect: '/maintenance/maintenanceList',
+ name: 'MaintenanceManage',
+ meta: {
+ title: '设备维护',
+ icon: 'ep:key',
+ auth: '/device/maintenance',
+ },
+ children: [
+ {
+ path: 'maintenanceList',
+ name: 'maintenanceList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceList.vue'),
+ meta: {
+ title: '设备维护列表',
+ icon: 'ep:key',
+ auth: '/device/maintenanceList',
+ },
+ },
+ {
+ path: 'maintenanceCheckList',
+ name: 'maintenanceCheckList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceCheckList.vue'),
+ meta: {
+ title: '设备检修保养验收单',
+ icon: 'ep:key',
+ auth: '/device/maintenance/checkList',
+ },
+ },
+ {
+ path: 'manageCheckList',
+ name: 'manageCheckList',
+ component: () => import('@/views/device/deviceMaintenance/manageCheckList.vue'),
+ meta: {
+ title: '设备管理点检查表',
+ icon: 'ep:key',
+ auth: '/device/manage/checkList',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index fbbf7a4..4153ab5 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -4,6 +4,7 @@
import BreadcrumbExample from './modules/breadcrumb.example'
import systemRoute from './modules/system'
import measureRoute from './modules/measure'
+import deviceRoute from './modules/device'
import type { Route } from '@/global'
import useSettingsStore from '@/store/modules/settings'
@@ -132,11 +133,10 @@
meta: {
title: '测量设备',
icon: '',
- auth: 'clsb',
+ auth: '/device',
},
children: [
- MultilevelMenuExample,
- BreadcrumbExample,
+ ...deviceRoute,
],
},
{
diff --git a/src/settings.ts b/src/settings.ts
index f89a3ab..ae5c3f5 100644
--- a/src/settings.ts
+++ b/src/settings.ts
@@ -16,6 +16,7 @@
menu: {
baseOn: 'backend',
menuMode: 'head',
+ showIcon: true,
enableSubMenuCollapseButton: true,
},
toolbar: {
diff --git a/src/views/device/bench/deviceBench.vue b/src/views/device/bench/deviceBench.vue
new file mode 100644
index 0000000..9206576
--- /dev/null
+++ b/src/views/device/bench/deviceBench.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 工作台
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceCheckList.vue b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
new file mode 100644
index 0000000..84224db
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备检修保养验收单
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue
new file mode 100644
index 0000000..3c91abd
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备维护列表
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/manageCheckList.vue b/src/views/device/deviceMaintenance/manageCheckList.vue
new file mode 100644
index 0000000..a4ace73
--- /dev/null
+++ b/src/views/device/deviceMaintenance/manageCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备管理点检查表
+
+
+
+
diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue
new file mode 100644
index 0000000..c093520
--- /dev/null
+++ b/src/views/device/standardEquipment/cancelApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 撤销申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/changeApply.vue b/src/views/device/standardEquipment/changeApply.vue
new file mode 100644
index 0000000..0762330
--- /dev/null
+++ b/src/views/device/standardEquipment/changeApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 更换申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/checkApply.vue b/src/views/device/standardEquipment/checkApply.vue
new file mode 100644
index 0000000..9cadc01
--- /dev/null
+++ b/src/views/device/standardEquipment/checkApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 复查申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/expirationRemind.vue b/src/views/device/standardEquipment/expirationRemind.vue
new file mode 100644
index 0000000..e3ec8d3
--- /dev/null
+++ b/src/views/device/standardEquipment/expirationRemind.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 到期提醒
+
+
+
+
diff --git a/src/views/device/standardEquipment/pauseApply.vue b/src/views/device/standardEquipment/pauseApply.vue
new file mode 100644
index 0000000..6f2c437
--- /dev/null
+++ b/src/views/device/standardEquipment/pauseApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 暂停申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/resumeApply.vue b/src/views/device/standardEquipment/resumeApply.vue
new file mode 100644
index 0000000..d4a80e8
--- /dev/null
+++ b/src/views/device/standardEquipment/resumeApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 恢复申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/standardList.vue b/src/views/device/standardEquipment/standardList.vue
new file mode 100644
index 0000000..55e7402
--- /dev/null
+++ b/src/views/device/standardEquipment/standardList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 标准装置列表
+
+
+
+
diff --git a/src/views/device/standingBook/adjustDevice.vue b/src/views/device/standingBook/adjustDevice.vue
new file mode 100644
index 0000000..a6e1b54
--- /dev/null
+++ b/src/views/device/standingBook/adjustDevice.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 校准检定设备
+
+
+
+
diff --git a/src/App.vue b/src/App.vue
index 8624b4c..52ccd6e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,7 +27,7 @@
actualWidth = 0
}
else if (settingsStore.menu.subMenuCollapse) {
- actualWidth = 64
+ actualWidth = 55
}
return `${actualWidth}px`
})
diff --git a/src/assets/icons/icon-setting.svg b/src/assets/icons/icon-setting.svg
new file mode 100644
index 0000000..33353f0
--- /dev/null
+++ b/src/assets/icons/icon-setting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/next_level.png b/src/assets/images/next_level.png
new file mode 100644
index 0000000..53d2837
--- /dev/null
+++ b/src/assets/images/next_level.png
Binary files differ
diff --git a/src/assets/images/next_level_active.png b/src/assets/images/next_level_active.png
new file mode 100644
index 0000000..1a52ae8
--- /dev/null
+++ b/src/assets/images/next_level_active.png
Binary files differ
diff --git a/src/assets/styles/element-plus/index.scss b/src/assets/styles/element-plus/index.scss
index 3b53223..6dc95ed 100644
--- a/src/assets/styles/element-plus/index.scss
+++ b/src/assets/styles/element-plus/index.scss
@@ -7,6 +7,10 @@
$table:(
"header-bg-color":#f2f6ff,
"header-text-color":#444c59
+ ),
+ $menu:(
+ "base-level-padding": 15px,
+ "level-padding": 10px
)
);
@use "element-plus/theme-chalk/src/index.scss" as *;
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 4565a0f..938efd4 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -6,7 +6,7 @@
// 头部宽度(默认自适应宽度,可固定宽度,固定宽度后为居中显示)
--g-header-width: 100%;
// 头部高度
- --g-header-height: 67px;
+ --g-header-height: 60px;
// 侧边栏宽度
--g-main-sidebar-width: 70px;
--g-sub-sidebar-width: 180px;
@@ -91,3 +91,20 @@
.el-cascader.full-width-input {
width: 100% !important;
}
+
+.el-menu--popup {
+ color: var(--g-sub-sidebar-popmenu-bg);
+
+ .sidebar-item {
+ .el-menu-item,
+ .el-sub-menu__title {
+ color: var(--g-sub-sidebar-popmenu-color) !important;
+ }
+
+ .el-menu-item:hover,
+ .el-sub-menu__title:hover {
+ color: var(--g-sub-sidebar-popmenu-active-color) !important;
+ background-color: var(--g-sub-sidebar-popmenu-hover-color) !important;
+ }
+ }
+}
diff --git a/src/assets/styles/themes.scss b/src/assets/styles/themes.scss
index 47da1fb..418dc62 100644
--- a/src/assets/styles/themes.scss
+++ b/src/assets/styles/themes.scss
@@ -52,6 +52,14 @@
--g-sub-sidebar-menu-active-color: #3d7eff;
// 菜单选中背景色
--g-sub-sidebar-menu-active-bg: #dae9fe;
+ // 弹出菜单背景色
+ --g-sub-sidebar-popmenu-bg: #fff;
+ // 弹出菜单文字颜色
+ --g-sub-sidebar-popmenu-color: rgb(92 92 92);
+ // 弹出菜单鼠标悬浮文字颜色
+ --g-sub-sidebar-popmenu-hover-color: #dae9fe;
+ // 弹出菜单选中文字颜色
+ --g-sub-sidebar-popmenu-active-color: rgb(92 92 92);
/* ----- 顶栏 ----- */
--g-toolbar-bg: var(--el-bg-color);
diff --git a/src/layouts/components/Header/index.vue b/src/layouts/components/Header/index.vue
index 4a98f23..83ad8cd 100644
--- a/src/layouts/components/Header/index.vue
+++ b/src/layouts/components/Header/index.vue
@@ -31,7 +31,7 @@
-
+
{{ item.meta.title }}
@@ -136,8 +136,7 @@
display: flex;
align-items: center;
justify-content: center;
- flex-direction: column;
- padding: 10px;
+ padding: 5px;
height: auto;
cursor: pointer;
color: var(--g-header-menu-color);
@@ -150,7 +149,7 @@
}
.el-icon {
- font-size: 24px;
+ font-size: 18px;
vertical-align: middle;
}
@@ -161,6 +160,14 @@
@include text-overflow(1, false);
}
+
+ .el-icon + span {
+ margin-left: 5px;
+ }
+ }
+
+ .item + .item {
+ margin-left: 5px;
}
.round-item {
diff --git a/src/layouts/components/SidebarItem/index.vue b/src/layouts/components/SidebarItem/index.vue
index b930871..540d253 100644
--- a/src/layouts/components/SidebarItem/index.vue
+++ b/src/layouts/components/SidebarItem/index.vue
@@ -85,15 +85,15 @@
:deep(.el-sub-menu),
:deep(.el-menu-item) {
.title-icon {
- width: 20px;
- font-size: 20px;
+ width: 16px;
+ font-size: 16px;
vertical-align: -0.25em;
transition: transform 0.3s;
color: unset;
}
.title-icon + .title {
- margin-left: 10px;
+ margin-left: 5px;
}
&:hover > .title-icon,
diff --git a/src/layouts/components/SubSidebar/index.vue b/src/layouts/components/SubSidebar/index.vue
index 9fc8a18..5928469 100644
--- a/src/layouts/components/SubSidebar/index.vue
+++ b/src/layouts/components/SubSidebar/index.vue
@@ -62,7 +62,7 @@
transition: background-color 0.3s, var(--el-transition-box-shadow), left 0.3s, width 0.3s;
&.is-collapse {
- width: 64px;
+ width: 55px;
.sidebar-logo {
&:not(.sidebar-logo-bg) {
@@ -96,7 +96,7 @@
.el-menu {
border-right: 0;
- padding: 0 10px;
+ padding: 0 5px;
padding-top: var(--g-sidebar-logo-height);
padding-top: 16px !important;
transition: border-color 0.3s, background-color 0.3s, color 0.3s, padding-top 0.3s;
diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts
new file mode 100644
index 0000000..55b4d14
--- /dev/null
+++ b/src/router/modules/device.ts
@@ -0,0 +1,286 @@
+// 测量设备
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/device',
+ component: Layout,
+ redirect: '/device/bench',
+ name: 'DBench',
+ meta: {
+ title: '工作台',
+ icon: 'ep:key',
+ auth: '/device/bench',
+ },
+ children: [
+ {
+ path: '/device/bench',
+ name: 'DeviceBench',
+ component: () => import('@/views/device/bench/deviceBench.vue'),
+ meta: {
+ title: '工作台',
+ auth: '/device/bench',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/device',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standingBook',
+ component: Layout,
+ redirect: '/standingBook/measureDevice',
+ name: 'standingBook',
+ meta: {
+ title: '设备台账',
+ icon: 'ep:key',
+ auth: '/device/standingBook',
+ },
+ children: [
+ {
+ path: 'measureDevice',
+ name: 'measureDevice',
+ component: () => import('@/views/device/standingBook/measureDevice.vue'),
+ meta: {
+ title: '测量设备',
+ icon: 'ep:key',
+ auth: '/device/measureDevice',
+ },
+ },
+ {
+ path: 'adjustDevice',
+ name: 'adjustDevice',
+ component: () => import('@/views/device/standingBook/adjustDevice.vue'),
+ meta: {
+ title: '校准/检定设备',
+ icon: 'ep:key',
+ auth: '/device/adjustDevice',
+ },
+ },
+ {
+ path: 'standardMatchDevice',
+ name: 'standardMatchDevice',
+ component: () => import('@/views/device/standingBook/standardMatchDevice.vue'),
+ meta: {
+ title: '标准配套设备',
+ icon: 'ep:key',
+ auth: '/device/standardMatchDevice',
+ },
+ },
+ {
+ path: 'measureTool',
+ name: 'measureTool',
+ component: () => import('@/views/device/standingBook/measureTool.vue'),
+ meta: {
+ title: '测量工装',
+ icon: 'ep:key',
+ auth: '/device/measureTool',
+ },
+ },
+ {
+ path: 'fixedAssets',
+ name: 'fixedAssets',
+ component: () => import('@/views/device/standingBook/fixedAssets.vue'),
+ meta: {
+ title: '固定资产',
+ icon: 'ep:key',
+ auth: '/device/fixedAssets',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standard',
+ component: Layout,
+ redirect: '/standard/list',
+ name: 'Standard',
+ meta: {
+ title: '标准装置',
+ icon: 'ep:key',
+ auth: '/standardEquipment',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'standardList',
+ component: () => import('@/views/device/standardEquipment/standardList.vue'),
+ meta: {
+ title: '标准装置列表',
+ icon: 'ep:key',
+ auth: '/standard/list',
+ },
+ },
+ {
+ path: 'expirationRemind',
+ name: 'expirationRemind',
+ component: () => import('@/views/device/standardEquipment/expirationRemind.vue'),
+ meta: {
+ title: '到期提醒',
+ icon: 'ep:key',
+ auth: '/standard/expirationRemind',
+ },
+ },
+ {
+ path: 'changeApply',
+ name: 'changeApply',
+ component: () => import('@/views/device/standardEquipment/changeApply.vue'),
+ meta: {
+ title: '更换申请',
+ icon: 'ep:key',
+ auth: '/standard/changeApply',
+ },
+ },
+ {
+ path: 'pauseApply',
+ name: 'pauseApply',
+ component: () => import('@/views/device/standardEquipment/pauseApply.vue'),
+ meta: {
+ title: '暂停申请',
+ icon: 'ep:key',
+ auth: '/standard/pauseApply',
+ },
+ },
+ {
+ path: 'cancelApply',
+ name: 'cancelApply',
+ component: () => import('@/views/device/standardEquipment/cancelApply.vue'),
+ meta: {
+ title: '撤销申请',
+ icon: 'ep:key',
+ auth: '/standard/cancelApply',
+ },
+ },
+ {
+ path: 'resumeApply',
+ name: 'resumeApply',
+ component: () => import('@/views/device/standardEquipment/resumeApply.vue'),
+ meta: {
+ title: '恢复申请',
+ icon: 'ep:key',
+ auth: '/standard/resumeApply',
+ },
+ },
+ {
+ path: 'checkApply',
+ name: 'checkApply',
+ component: () => import('@/views/device/standardEquipment/checkApply.vue'),
+ meta: {
+ title: '复查申请',
+ icon: 'ep:key',
+ auth: '/standard/checkApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/stateManage',
+ component: Layout,
+ redirect: '/stateManage/unusedApply',
+ name: 'stateManage',
+ meta: {
+ title: '状态管理',
+ icon: 'ep:key',
+ auth: '/device/stateManage',
+ },
+ children: [
+ {
+ path: 'unusedApply',
+ name: 'unusedApply',
+ component: () => import('@/views/device/stateManage/unusedApply.vue'),
+ meta: {
+ title: '设备闲置申请',
+ icon: 'ep:key',
+ auth: '/device/unusedApply',
+ },
+ },
+ {
+ path: 'sealupApply',
+ name: 'sealupApply',
+ component: () => import('@/views/device/stateManage/sealupApply.vue'),
+ meta: {
+ title: '设备封存申请',
+ icon: 'ep:key',
+ auth: '/device/sealupApply',
+ },
+ },
+ {
+ path: 'openApply',
+ name: 'openApply',
+ component: () => import('@/views/device/stateManage/openApply.vue'),
+ meta: {
+ title: '设备启封申请',
+ icon: 'ep:key',
+ auth: '/device/openApply',
+ },
+ },
+ {
+ path: 'scrapApply',
+ name: 'scrapApply',
+ component: () => import('@/views/device/stateManage/scrapApply.vue'),
+ meta: {
+ title: '设备报废申请',
+ icon: 'ep:key',
+ auth: '/device/scrapApply',
+ },
+ },
+ {
+ path: 'handleApply',
+ name: 'handleApply',
+ component: () => import('@/views/device/stateManage/handleApply.vue'),
+ meta: {
+ title: '设备处置申请',
+ icon: 'ep:key',
+ auth: '/device/handleApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/maintenance',
+ component: Layout,
+ redirect: '/maintenance/maintenanceList',
+ name: 'MaintenanceManage',
+ meta: {
+ title: '设备维护',
+ icon: 'ep:key',
+ auth: '/device/maintenance',
+ },
+ children: [
+ {
+ path: 'maintenanceList',
+ name: 'maintenanceList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceList.vue'),
+ meta: {
+ title: '设备维护列表',
+ icon: 'ep:key',
+ auth: '/device/maintenanceList',
+ },
+ },
+ {
+ path: 'maintenanceCheckList',
+ name: 'maintenanceCheckList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceCheckList.vue'),
+ meta: {
+ title: '设备检修保养验收单',
+ icon: 'ep:key',
+ auth: '/device/maintenance/checkList',
+ },
+ },
+ {
+ path: 'manageCheckList',
+ name: 'manageCheckList',
+ component: () => import('@/views/device/deviceMaintenance/manageCheckList.vue'),
+ meta: {
+ title: '设备管理点检查表',
+ icon: 'ep:key',
+ auth: '/device/manage/checkList',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index fbbf7a4..4153ab5 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -4,6 +4,7 @@
import BreadcrumbExample from './modules/breadcrumb.example'
import systemRoute from './modules/system'
import measureRoute from './modules/measure'
+import deviceRoute from './modules/device'
import type { Route } from '@/global'
import useSettingsStore from '@/store/modules/settings'
@@ -132,11 +133,10 @@
meta: {
title: '测量设备',
icon: '',
- auth: 'clsb',
+ auth: '/device',
},
children: [
- MultilevelMenuExample,
- BreadcrumbExample,
+ ...deviceRoute,
],
},
{
diff --git a/src/settings.ts b/src/settings.ts
index f89a3ab..ae5c3f5 100644
--- a/src/settings.ts
+++ b/src/settings.ts
@@ -16,6 +16,7 @@
menu: {
baseOn: 'backend',
menuMode: 'head',
+ showIcon: true,
enableSubMenuCollapseButton: true,
},
toolbar: {
diff --git a/src/views/device/bench/deviceBench.vue b/src/views/device/bench/deviceBench.vue
new file mode 100644
index 0000000..9206576
--- /dev/null
+++ b/src/views/device/bench/deviceBench.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 工作台
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceCheckList.vue b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
new file mode 100644
index 0000000..84224db
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备检修保养验收单
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue
new file mode 100644
index 0000000..3c91abd
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备维护列表
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/manageCheckList.vue b/src/views/device/deviceMaintenance/manageCheckList.vue
new file mode 100644
index 0000000..a4ace73
--- /dev/null
+++ b/src/views/device/deviceMaintenance/manageCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备管理点检查表
+
+
+
+
diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue
new file mode 100644
index 0000000..c093520
--- /dev/null
+++ b/src/views/device/standardEquipment/cancelApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 撤销申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/changeApply.vue b/src/views/device/standardEquipment/changeApply.vue
new file mode 100644
index 0000000..0762330
--- /dev/null
+++ b/src/views/device/standardEquipment/changeApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 更换申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/checkApply.vue b/src/views/device/standardEquipment/checkApply.vue
new file mode 100644
index 0000000..9cadc01
--- /dev/null
+++ b/src/views/device/standardEquipment/checkApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 复查申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/expirationRemind.vue b/src/views/device/standardEquipment/expirationRemind.vue
new file mode 100644
index 0000000..e3ec8d3
--- /dev/null
+++ b/src/views/device/standardEquipment/expirationRemind.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 到期提醒
+
+
+
+
diff --git a/src/views/device/standardEquipment/pauseApply.vue b/src/views/device/standardEquipment/pauseApply.vue
new file mode 100644
index 0000000..6f2c437
--- /dev/null
+++ b/src/views/device/standardEquipment/pauseApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 暂停申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/resumeApply.vue b/src/views/device/standardEquipment/resumeApply.vue
new file mode 100644
index 0000000..d4a80e8
--- /dev/null
+++ b/src/views/device/standardEquipment/resumeApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 恢复申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/standardList.vue b/src/views/device/standardEquipment/standardList.vue
new file mode 100644
index 0000000..55e7402
--- /dev/null
+++ b/src/views/device/standardEquipment/standardList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 标准装置列表
+
+
+
+
diff --git a/src/views/device/standingBook/adjustDevice.vue b/src/views/device/standingBook/adjustDevice.vue
new file mode 100644
index 0000000..a6e1b54
--- /dev/null
+++ b/src/views/device/standingBook/adjustDevice.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 校准检定设备
+
+
+
+
diff --git a/src/views/device/standingBook/fixedAssets.vue b/src/views/device/standingBook/fixedAssets.vue
new file mode 100644
index 0000000..b9845d9
--- /dev/null
+++ b/src/views/device/standingBook/fixedAssets.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 固定资产
+
+
+
+
diff --git a/src/App.vue b/src/App.vue
index 8624b4c..52ccd6e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,7 +27,7 @@
actualWidth = 0
}
else if (settingsStore.menu.subMenuCollapse) {
- actualWidth = 64
+ actualWidth = 55
}
return `${actualWidth}px`
})
diff --git a/src/assets/icons/icon-setting.svg b/src/assets/icons/icon-setting.svg
new file mode 100644
index 0000000..33353f0
--- /dev/null
+++ b/src/assets/icons/icon-setting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/next_level.png b/src/assets/images/next_level.png
new file mode 100644
index 0000000..53d2837
--- /dev/null
+++ b/src/assets/images/next_level.png
Binary files differ
diff --git a/src/assets/images/next_level_active.png b/src/assets/images/next_level_active.png
new file mode 100644
index 0000000..1a52ae8
--- /dev/null
+++ b/src/assets/images/next_level_active.png
Binary files differ
diff --git a/src/assets/styles/element-plus/index.scss b/src/assets/styles/element-plus/index.scss
index 3b53223..6dc95ed 100644
--- a/src/assets/styles/element-plus/index.scss
+++ b/src/assets/styles/element-plus/index.scss
@@ -7,6 +7,10 @@
$table:(
"header-bg-color":#f2f6ff,
"header-text-color":#444c59
+ ),
+ $menu:(
+ "base-level-padding": 15px,
+ "level-padding": 10px
)
);
@use "element-plus/theme-chalk/src/index.scss" as *;
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 4565a0f..938efd4 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -6,7 +6,7 @@
// 头部宽度(默认自适应宽度,可固定宽度,固定宽度后为居中显示)
--g-header-width: 100%;
// 头部高度
- --g-header-height: 67px;
+ --g-header-height: 60px;
// 侧边栏宽度
--g-main-sidebar-width: 70px;
--g-sub-sidebar-width: 180px;
@@ -91,3 +91,20 @@
.el-cascader.full-width-input {
width: 100% !important;
}
+
+.el-menu--popup {
+ color: var(--g-sub-sidebar-popmenu-bg);
+
+ .sidebar-item {
+ .el-menu-item,
+ .el-sub-menu__title {
+ color: var(--g-sub-sidebar-popmenu-color) !important;
+ }
+
+ .el-menu-item:hover,
+ .el-sub-menu__title:hover {
+ color: var(--g-sub-sidebar-popmenu-active-color) !important;
+ background-color: var(--g-sub-sidebar-popmenu-hover-color) !important;
+ }
+ }
+}
diff --git a/src/assets/styles/themes.scss b/src/assets/styles/themes.scss
index 47da1fb..418dc62 100644
--- a/src/assets/styles/themes.scss
+++ b/src/assets/styles/themes.scss
@@ -52,6 +52,14 @@
--g-sub-sidebar-menu-active-color: #3d7eff;
// 菜单选中背景色
--g-sub-sidebar-menu-active-bg: #dae9fe;
+ // 弹出菜单背景色
+ --g-sub-sidebar-popmenu-bg: #fff;
+ // 弹出菜单文字颜色
+ --g-sub-sidebar-popmenu-color: rgb(92 92 92);
+ // 弹出菜单鼠标悬浮文字颜色
+ --g-sub-sidebar-popmenu-hover-color: #dae9fe;
+ // 弹出菜单选中文字颜色
+ --g-sub-sidebar-popmenu-active-color: rgb(92 92 92);
/* ----- 顶栏 ----- */
--g-toolbar-bg: var(--el-bg-color);
diff --git a/src/layouts/components/Header/index.vue b/src/layouts/components/Header/index.vue
index 4a98f23..83ad8cd 100644
--- a/src/layouts/components/Header/index.vue
+++ b/src/layouts/components/Header/index.vue
@@ -31,7 +31,7 @@
-
+
{{ item.meta.title }}
@@ -136,8 +136,7 @@
display: flex;
align-items: center;
justify-content: center;
- flex-direction: column;
- padding: 10px;
+ padding: 5px;
height: auto;
cursor: pointer;
color: var(--g-header-menu-color);
@@ -150,7 +149,7 @@
}
.el-icon {
- font-size: 24px;
+ font-size: 18px;
vertical-align: middle;
}
@@ -161,6 +160,14 @@
@include text-overflow(1, false);
}
+
+ .el-icon + span {
+ margin-left: 5px;
+ }
+ }
+
+ .item + .item {
+ margin-left: 5px;
}
.round-item {
diff --git a/src/layouts/components/SidebarItem/index.vue b/src/layouts/components/SidebarItem/index.vue
index b930871..540d253 100644
--- a/src/layouts/components/SidebarItem/index.vue
+++ b/src/layouts/components/SidebarItem/index.vue
@@ -85,15 +85,15 @@
:deep(.el-sub-menu),
:deep(.el-menu-item) {
.title-icon {
- width: 20px;
- font-size: 20px;
+ width: 16px;
+ font-size: 16px;
vertical-align: -0.25em;
transition: transform 0.3s;
color: unset;
}
.title-icon + .title {
- margin-left: 10px;
+ margin-left: 5px;
}
&:hover > .title-icon,
diff --git a/src/layouts/components/SubSidebar/index.vue b/src/layouts/components/SubSidebar/index.vue
index 9fc8a18..5928469 100644
--- a/src/layouts/components/SubSidebar/index.vue
+++ b/src/layouts/components/SubSidebar/index.vue
@@ -62,7 +62,7 @@
transition: background-color 0.3s, var(--el-transition-box-shadow), left 0.3s, width 0.3s;
&.is-collapse {
- width: 64px;
+ width: 55px;
.sidebar-logo {
&:not(.sidebar-logo-bg) {
@@ -96,7 +96,7 @@
.el-menu {
border-right: 0;
- padding: 0 10px;
+ padding: 0 5px;
padding-top: var(--g-sidebar-logo-height);
padding-top: 16px !important;
transition: border-color 0.3s, background-color 0.3s, color 0.3s, padding-top 0.3s;
diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts
new file mode 100644
index 0000000..55b4d14
--- /dev/null
+++ b/src/router/modules/device.ts
@@ -0,0 +1,286 @@
+// 测量设备
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/device',
+ component: Layout,
+ redirect: '/device/bench',
+ name: 'DBench',
+ meta: {
+ title: '工作台',
+ icon: 'ep:key',
+ auth: '/device/bench',
+ },
+ children: [
+ {
+ path: '/device/bench',
+ name: 'DeviceBench',
+ component: () => import('@/views/device/bench/deviceBench.vue'),
+ meta: {
+ title: '工作台',
+ auth: '/device/bench',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/device',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standingBook',
+ component: Layout,
+ redirect: '/standingBook/measureDevice',
+ name: 'standingBook',
+ meta: {
+ title: '设备台账',
+ icon: 'ep:key',
+ auth: '/device/standingBook',
+ },
+ children: [
+ {
+ path: 'measureDevice',
+ name: 'measureDevice',
+ component: () => import('@/views/device/standingBook/measureDevice.vue'),
+ meta: {
+ title: '测量设备',
+ icon: 'ep:key',
+ auth: '/device/measureDevice',
+ },
+ },
+ {
+ path: 'adjustDevice',
+ name: 'adjustDevice',
+ component: () => import('@/views/device/standingBook/adjustDevice.vue'),
+ meta: {
+ title: '校准/检定设备',
+ icon: 'ep:key',
+ auth: '/device/adjustDevice',
+ },
+ },
+ {
+ path: 'standardMatchDevice',
+ name: 'standardMatchDevice',
+ component: () => import('@/views/device/standingBook/standardMatchDevice.vue'),
+ meta: {
+ title: '标准配套设备',
+ icon: 'ep:key',
+ auth: '/device/standardMatchDevice',
+ },
+ },
+ {
+ path: 'measureTool',
+ name: 'measureTool',
+ component: () => import('@/views/device/standingBook/measureTool.vue'),
+ meta: {
+ title: '测量工装',
+ icon: 'ep:key',
+ auth: '/device/measureTool',
+ },
+ },
+ {
+ path: 'fixedAssets',
+ name: 'fixedAssets',
+ component: () => import('@/views/device/standingBook/fixedAssets.vue'),
+ meta: {
+ title: '固定资产',
+ icon: 'ep:key',
+ auth: '/device/fixedAssets',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standard',
+ component: Layout,
+ redirect: '/standard/list',
+ name: 'Standard',
+ meta: {
+ title: '标准装置',
+ icon: 'ep:key',
+ auth: '/standardEquipment',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'standardList',
+ component: () => import('@/views/device/standardEquipment/standardList.vue'),
+ meta: {
+ title: '标准装置列表',
+ icon: 'ep:key',
+ auth: '/standard/list',
+ },
+ },
+ {
+ path: 'expirationRemind',
+ name: 'expirationRemind',
+ component: () => import('@/views/device/standardEquipment/expirationRemind.vue'),
+ meta: {
+ title: '到期提醒',
+ icon: 'ep:key',
+ auth: '/standard/expirationRemind',
+ },
+ },
+ {
+ path: 'changeApply',
+ name: 'changeApply',
+ component: () => import('@/views/device/standardEquipment/changeApply.vue'),
+ meta: {
+ title: '更换申请',
+ icon: 'ep:key',
+ auth: '/standard/changeApply',
+ },
+ },
+ {
+ path: 'pauseApply',
+ name: 'pauseApply',
+ component: () => import('@/views/device/standardEquipment/pauseApply.vue'),
+ meta: {
+ title: '暂停申请',
+ icon: 'ep:key',
+ auth: '/standard/pauseApply',
+ },
+ },
+ {
+ path: 'cancelApply',
+ name: 'cancelApply',
+ component: () => import('@/views/device/standardEquipment/cancelApply.vue'),
+ meta: {
+ title: '撤销申请',
+ icon: 'ep:key',
+ auth: '/standard/cancelApply',
+ },
+ },
+ {
+ path: 'resumeApply',
+ name: 'resumeApply',
+ component: () => import('@/views/device/standardEquipment/resumeApply.vue'),
+ meta: {
+ title: '恢复申请',
+ icon: 'ep:key',
+ auth: '/standard/resumeApply',
+ },
+ },
+ {
+ path: 'checkApply',
+ name: 'checkApply',
+ component: () => import('@/views/device/standardEquipment/checkApply.vue'),
+ meta: {
+ title: '复查申请',
+ icon: 'ep:key',
+ auth: '/standard/checkApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/stateManage',
+ component: Layout,
+ redirect: '/stateManage/unusedApply',
+ name: 'stateManage',
+ meta: {
+ title: '状态管理',
+ icon: 'ep:key',
+ auth: '/device/stateManage',
+ },
+ children: [
+ {
+ path: 'unusedApply',
+ name: 'unusedApply',
+ component: () => import('@/views/device/stateManage/unusedApply.vue'),
+ meta: {
+ title: '设备闲置申请',
+ icon: 'ep:key',
+ auth: '/device/unusedApply',
+ },
+ },
+ {
+ path: 'sealupApply',
+ name: 'sealupApply',
+ component: () => import('@/views/device/stateManage/sealupApply.vue'),
+ meta: {
+ title: '设备封存申请',
+ icon: 'ep:key',
+ auth: '/device/sealupApply',
+ },
+ },
+ {
+ path: 'openApply',
+ name: 'openApply',
+ component: () => import('@/views/device/stateManage/openApply.vue'),
+ meta: {
+ title: '设备启封申请',
+ icon: 'ep:key',
+ auth: '/device/openApply',
+ },
+ },
+ {
+ path: 'scrapApply',
+ name: 'scrapApply',
+ component: () => import('@/views/device/stateManage/scrapApply.vue'),
+ meta: {
+ title: '设备报废申请',
+ icon: 'ep:key',
+ auth: '/device/scrapApply',
+ },
+ },
+ {
+ path: 'handleApply',
+ name: 'handleApply',
+ component: () => import('@/views/device/stateManage/handleApply.vue'),
+ meta: {
+ title: '设备处置申请',
+ icon: 'ep:key',
+ auth: '/device/handleApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/maintenance',
+ component: Layout,
+ redirect: '/maintenance/maintenanceList',
+ name: 'MaintenanceManage',
+ meta: {
+ title: '设备维护',
+ icon: 'ep:key',
+ auth: '/device/maintenance',
+ },
+ children: [
+ {
+ path: 'maintenanceList',
+ name: 'maintenanceList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceList.vue'),
+ meta: {
+ title: '设备维护列表',
+ icon: 'ep:key',
+ auth: '/device/maintenanceList',
+ },
+ },
+ {
+ path: 'maintenanceCheckList',
+ name: 'maintenanceCheckList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceCheckList.vue'),
+ meta: {
+ title: '设备检修保养验收单',
+ icon: 'ep:key',
+ auth: '/device/maintenance/checkList',
+ },
+ },
+ {
+ path: 'manageCheckList',
+ name: 'manageCheckList',
+ component: () => import('@/views/device/deviceMaintenance/manageCheckList.vue'),
+ meta: {
+ title: '设备管理点检查表',
+ icon: 'ep:key',
+ auth: '/device/manage/checkList',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index fbbf7a4..4153ab5 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -4,6 +4,7 @@
import BreadcrumbExample from './modules/breadcrumb.example'
import systemRoute from './modules/system'
import measureRoute from './modules/measure'
+import deviceRoute from './modules/device'
import type { Route } from '@/global'
import useSettingsStore from '@/store/modules/settings'
@@ -132,11 +133,10 @@
meta: {
title: '测量设备',
icon: '',
- auth: 'clsb',
+ auth: '/device',
},
children: [
- MultilevelMenuExample,
- BreadcrumbExample,
+ ...deviceRoute,
],
},
{
diff --git a/src/settings.ts b/src/settings.ts
index f89a3ab..ae5c3f5 100644
--- a/src/settings.ts
+++ b/src/settings.ts
@@ -16,6 +16,7 @@
menu: {
baseOn: 'backend',
menuMode: 'head',
+ showIcon: true,
enableSubMenuCollapseButton: true,
},
toolbar: {
diff --git a/src/views/device/bench/deviceBench.vue b/src/views/device/bench/deviceBench.vue
new file mode 100644
index 0000000..9206576
--- /dev/null
+++ b/src/views/device/bench/deviceBench.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 工作台
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceCheckList.vue b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
new file mode 100644
index 0000000..84224db
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备检修保养验收单
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue
new file mode 100644
index 0000000..3c91abd
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备维护列表
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/manageCheckList.vue b/src/views/device/deviceMaintenance/manageCheckList.vue
new file mode 100644
index 0000000..a4ace73
--- /dev/null
+++ b/src/views/device/deviceMaintenance/manageCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备管理点检查表
+
+
+
+
diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue
new file mode 100644
index 0000000..c093520
--- /dev/null
+++ b/src/views/device/standardEquipment/cancelApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 撤销申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/changeApply.vue b/src/views/device/standardEquipment/changeApply.vue
new file mode 100644
index 0000000..0762330
--- /dev/null
+++ b/src/views/device/standardEquipment/changeApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 更换申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/checkApply.vue b/src/views/device/standardEquipment/checkApply.vue
new file mode 100644
index 0000000..9cadc01
--- /dev/null
+++ b/src/views/device/standardEquipment/checkApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 复查申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/expirationRemind.vue b/src/views/device/standardEquipment/expirationRemind.vue
new file mode 100644
index 0000000..e3ec8d3
--- /dev/null
+++ b/src/views/device/standardEquipment/expirationRemind.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 到期提醒
+
+
+
+
diff --git a/src/views/device/standardEquipment/pauseApply.vue b/src/views/device/standardEquipment/pauseApply.vue
new file mode 100644
index 0000000..6f2c437
--- /dev/null
+++ b/src/views/device/standardEquipment/pauseApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 暂停申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/resumeApply.vue b/src/views/device/standardEquipment/resumeApply.vue
new file mode 100644
index 0000000..d4a80e8
--- /dev/null
+++ b/src/views/device/standardEquipment/resumeApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 恢复申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/standardList.vue b/src/views/device/standardEquipment/standardList.vue
new file mode 100644
index 0000000..55e7402
--- /dev/null
+++ b/src/views/device/standardEquipment/standardList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 标准装置列表
+
+
+
+
diff --git a/src/views/device/standingBook/adjustDevice.vue b/src/views/device/standingBook/adjustDevice.vue
new file mode 100644
index 0000000..a6e1b54
--- /dev/null
+++ b/src/views/device/standingBook/adjustDevice.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 校准检定设备
+
+
+
+
diff --git a/src/views/device/standingBook/fixedAssets.vue b/src/views/device/standingBook/fixedAssets.vue
new file mode 100644
index 0000000..b9845d9
--- /dev/null
+++ b/src/views/device/standingBook/fixedAssets.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 固定资产
+
+
+
+
diff --git a/src/views/device/standingBook/measureDevice.vue b/src/views/device/standingBook/measureDevice.vue
new file mode 100644
index 0000000..3f74e89
--- /dev/null
+++ b/src/views/device/standingBook/measureDevice.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 测量设备
+
+
+
+
diff --git a/src/App.vue b/src/App.vue
index 8624b4c..52ccd6e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,7 +27,7 @@
actualWidth = 0
}
else if (settingsStore.menu.subMenuCollapse) {
- actualWidth = 64
+ actualWidth = 55
}
return `${actualWidth}px`
})
diff --git a/src/assets/icons/icon-setting.svg b/src/assets/icons/icon-setting.svg
new file mode 100644
index 0000000..33353f0
--- /dev/null
+++ b/src/assets/icons/icon-setting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/next_level.png b/src/assets/images/next_level.png
new file mode 100644
index 0000000..53d2837
--- /dev/null
+++ b/src/assets/images/next_level.png
Binary files differ
diff --git a/src/assets/images/next_level_active.png b/src/assets/images/next_level_active.png
new file mode 100644
index 0000000..1a52ae8
--- /dev/null
+++ b/src/assets/images/next_level_active.png
Binary files differ
diff --git a/src/assets/styles/element-plus/index.scss b/src/assets/styles/element-plus/index.scss
index 3b53223..6dc95ed 100644
--- a/src/assets/styles/element-plus/index.scss
+++ b/src/assets/styles/element-plus/index.scss
@@ -7,6 +7,10 @@
$table:(
"header-bg-color":#f2f6ff,
"header-text-color":#444c59
+ ),
+ $menu:(
+ "base-level-padding": 15px,
+ "level-padding": 10px
)
);
@use "element-plus/theme-chalk/src/index.scss" as *;
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 4565a0f..938efd4 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -6,7 +6,7 @@
// 头部宽度(默认自适应宽度,可固定宽度,固定宽度后为居中显示)
--g-header-width: 100%;
// 头部高度
- --g-header-height: 67px;
+ --g-header-height: 60px;
// 侧边栏宽度
--g-main-sidebar-width: 70px;
--g-sub-sidebar-width: 180px;
@@ -91,3 +91,20 @@
.el-cascader.full-width-input {
width: 100% !important;
}
+
+.el-menu--popup {
+ color: var(--g-sub-sidebar-popmenu-bg);
+
+ .sidebar-item {
+ .el-menu-item,
+ .el-sub-menu__title {
+ color: var(--g-sub-sidebar-popmenu-color) !important;
+ }
+
+ .el-menu-item:hover,
+ .el-sub-menu__title:hover {
+ color: var(--g-sub-sidebar-popmenu-active-color) !important;
+ background-color: var(--g-sub-sidebar-popmenu-hover-color) !important;
+ }
+ }
+}
diff --git a/src/assets/styles/themes.scss b/src/assets/styles/themes.scss
index 47da1fb..418dc62 100644
--- a/src/assets/styles/themes.scss
+++ b/src/assets/styles/themes.scss
@@ -52,6 +52,14 @@
--g-sub-sidebar-menu-active-color: #3d7eff;
// 菜单选中背景色
--g-sub-sidebar-menu-active-bg: #dae9fe;
+ // 弹出菜单背景色
+ --g-sub-sidebar-popmenu-bg: #fff;
+ // 弹出菜单文字颜色
+ --g-sub-sidebar-popmenu-color: rgb(92 92 92);
+ // 弹出菜单鼠标悬浮文字颜色
+ --g-sub-sidebar-popmenu-hover-color: #dae9fe;
+ // 弹出菜单选中文字颜色
+ --g-sub-sidebar-popmenu-active-color: rgb(92 92 92);
/* ----- 顶栏 ----- */
--g-toolbar-bg: var(--el-bg-color);
diff --git a/src/layouts/components/Header/index.vue b/src/layouts/components/Header/index.vue
index 4a98f23..83ad8cd 100644
--- a/src/layouts/components/Header/index.vue
+++ b/src/layouts/components/Header/index.vue
@@ -31,7 +31,7 @@
-
+
{{ item.meta.title }}
@@ -136,8 +136,7 @@
display: flex;
align-items: center;
justify-content: center;
- flex-direction: column;
- padding: 10px;
+ padding: 5px;
height: auto;
cursor: pointer;
color: var(--g-header-menu-color);
@@ -150,7 +149,7 @@
}
.el-icon {
- font-size: 24px;
+ font-size: 18px;
vertical-align: middle;
}
@@ -161,6 +160,14 @@
@include text-overflow(1, false);
}
+
+ .el-icon + span {
+ margin-left: 5px;
+ }
+ }
+
+ .item + .item {
+ margin-left: 5px;
}
.round-item {
diff --git a/src/layouts/components/SidebarItem/index.vue b/src/layouts/components/SidebarItem/index.vue
index b930871..540d253 100644
--- a/src/layouts/components/SidebarItem/index.vue
+++ b/src/layouts/components/SidebarItem/index.vue
@@ -85,15 +85,15 @@
:deep(.el-sub-menu),
:deep(.el-menu-item) {
.title-icon {
- width: 20px;
- font-size: 20px;
+ width: 16px;
+ font-size: 16px;
vertical-align: -0.25em;
transition: transform 0.3s;
color: unset;
}
.title-icon + .title {
- margin-left: 10px;
+ margin-left: 5px;
}
&:hover > .title-icon,
diff --git a/src/layouts/components/SubSidebar/index.vue b/src/layouts/components/SubSidebar/index.vue
index 9fc8a18..5928469 100644
--- a/src/layouts/components/SubSidebar/index.vue
+++ b/src/layouts/components/SubSidebar/index.vue
@@ -62,7 +62,7 @@
transition: background-color 0.3s, var(--el-transition-box-shadow), left 0.3s, width 0.3s;
&.is-collapse {
- width: 64px;
+ width: 55px;
.sidebar-logo {
&:not(.sidebar-logo-bg) {
@@ -96,7 +96,7 @@
.el-menu {
border-right: 0;
- padding: 0 10px;
+ padding: 0 5px;
padding-top: var(--g-sidebar-logo-height);
padding-top: 16px !important;
transition: border-color 0.3s, background-color 0.3s, color 0.3s, padding-top 0.3s;
diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts
new file mode 100644
index 0000000..55b4d14
--- /dev/null
+++ b/src/router/modules/device.ts
@@ -0,0 +1,286 @@
+// 测量设备
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/device',
+ component: Layout,
+ redirect: '/device/bench',
+ name: 'DBench',
+ meta: {
+ title: '工作台',
+ icon: 'ep:key',
+ auth: '/device/bench',
+ },
+ children: [
+ {
+ path: '/device/bench',
+ name: 'DeviceBench',
+ component: () => import('@/views/device/bench/deviceBench.vue'),
+ meta: {
+ title: '工作台',
+ auth: '/device/bench',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/device',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standingBook',
+ component: Layout,
+ redirect: '/standingBook/measureDevice',
+ name: 'standingBook',
+ meta: {
+ title: '设备台账',
+ icon: 'ep:key',
+ auth: '/device/standingBook',
+ },
+ children: [
+ {
+ path: 'measureDevice',
+ name: 'measureDevice',
+ component: () => import('@/views/device/standingBook/measureDevice.vue'),
+ meta: {
+ title: '测量设备',
+ icon: 'ep:key',
+ auth: '/device/measureDevice',
+ },
+ },
+ {
+ path: 'adjustDevice',
+ name: 'adjustDevice',
+ component: () => import('@/views/device/standingBook/adjustDevice.vue'),
+ meta: {
+ title: '校准/检定设备',
+ icon: 'ep:key',
+ auth: '/device/adjustDevice',
+ },
+ },
+ {
+ path: 'standardMatchDevice',
+ name: 'standardMatchDevice',
+ component: () => import('@/views/device/standingBook/standardMatchDevice.vue'),
+ meta: {
+ title: '标准配套设备',
+ icon: 'ep:key',
+ auth: '/device/standardMatchDevice',
+ },
+ },
+ {
+ path: 'measureTool',
+ name: 'measureTool',
+ component: () => import('@/views/device/standingBook/measureTool.vue'),
+ meta: {
+ title: '测量工装',
+ icon: 'ep:key',
+ auth: '/device/measureTool',
+ },
+ },
+ {
+ path: 'fixedAssets',
+ name: 'fixedAssets',
+ component: () => import('@/views/device/standingBook/fixedAssets.vue'),
+ meta: {
+ title: '固定资产',
+ icon: 'ep:key',
+ auth: '/device/fixedAssets',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standard',
+ component: Layout,
+ redirect: '/standard/list',
+ name: 'Standard',
+ meta: {
+ title: '标准装置',
+ icon: 'ep:key',
+ auth: '/standardEquipment',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'standardList',
+ component: () => import('@/views/device/standardEquipment/standardList.vue'),
+ meta: {
+ title: '标准装置列表',
+ icon: 'ep:key',
+ auth: '/standard/list',
+ },
+ },
+ {
+ path: 'expirationRemind',
+ name: 'expirationRemind',
+ component: () => import('@/views/device/standardEquipment/expirationRemind.vue'),
+ meta: {
+ title: '到期提醒',
+ icon: 'ep:key',
+ auth: '/standard/expirationRemind',
+ },
+ },
+ {
+ path: 'changeApply',
+ name: 'changeApply',
+ component: () => import('@/views/device/standardEquipment/changeApply.vue'),
+ meta: {
+ title: '更换申请',
+ icon: 'ep:key',
+ auth: '/standard/changeApply',
+ },
+ },
+ {
+ path: 'pauseApply',
+ name: 'pauseApply',
+ component: () => import('@/views/device/standardEquipment/pauseApply.vue'),
+ meta: {
+ title: '暂停申请',
+ icon: 'ep:key',
+ auth: '/standard/pauseApply',
+ },
+ },
+ {
+ path: 'cancelApply',
+ name: 'cancelApply',
+ component: () => import('@/views/device/standardEquipment/cancelApply.vue'),
+ meta: {
+ title: '撤销申请',
+ icon: 'ep:key',
+ auth: '/standard/cancelApply',
+ },
+ },
+ {
+ path: 'resumeApply',
+ name: 'resumeApply',
+ component: () => import('@/views/device/standardEquipment/resumeApply.vue'),
+ meta: {
+ title: '恢复申请',
+ icon: 'ep:key',
+ auth: '/standard/resumeApply',
+ },
+ },
+ {
+ path: 'checkApply',
+ name: 'checkApply',
+ component: () => import('@/views/device/standardEquipment/checkApply.vue'),
+ meta: {
+ title: '复查申请',
+ icon: 'ep:key',
+ auth: '/standard/checkApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/stateManage',
+ component: Layout,
+ redirect: '/stateManage/unusedApply',
+ name: 'stateManage',
+ meta: {
+ title: '状态管理',
+ icon: 'ep:key',
+ auth: '/device/stateManage',
+ },
+ children: [
+ {
+ path: 'unusedApply',
+ name: 'unusedApply',
+ component: () => import('@/views/device/stateManage/unusedApply.vue'),
+ meta: {
+ title: '设备闲置申请',
+ icon: 'ep:key',
+ auth: '/device/unusedApply',
+ },
+ },
+ {
+ path: 'sealupApply',
+ name: 'sealupApply',
+ component: () => import('@/views/device/stateManage/sealupApply.vue'),
+ meta: {
+ title: '设备封存申请',
+ icon: 'ep:key',
+ auth: '/device/sealupApply',
+ },
+ },
+ {
+ path: 'openApply',
+ name: 'openApply',
+ component: () => import('@/views/device/stateManage/openApply.vue'),
+ meta: {
+ title: '设备启封申请',
+ icon: 'ep:key',
+ auth: '/device/openApply',
+ },
+ },
+ {
+ path: 'scrapApply',
+ name: 'scrapApply',
+ component: () => import('@/views/device/stateManage/scrapApply.vue'),
+ meta: {
+ title: '设备报废申请',
+ icon: 'ep:key',
+ auth: '/device/scrapApply',
+ },
+ },
+ {
+ path: 'handleApply',
+ name: 'handleApply',
+ component: () => import('@/views/device/stateManage/handleApply.vue'),
+ meta: {
+ title: '设备处置申请',
+ icon: 'ep:key',
+ auth: '/device/handleApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/maintenance',
+ component: Layout,
+ redirect: '/maintenance/maintenanceList',
+ name: 'MaintenanceManage',
+ meta: {
+ title: '设备维护',
+ icon: 'ep:key',
+ auth: '/device/maintenance',
+ },
+ children: [
+ {
+ path: 'maintenanceList',
+ name: 'maintenanceList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceList.vue'),
+ meta: {
+ title: '设备维护列表',
+ icon: 'ep:key',
+ auth: '/device/maintenanceList',
+ },
+ },
+ {
+ path: 'maintenanceCheckList',
+ name: 'maintenanceCheckList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceCheckList.vue'),
+ meta: {
+ title: '设备检修保养验收单',
+ icon: 'ep:key',
+ auth: '/device/maintenance/checkList',
+ },
+ },
+ {
+ path: 'manageCheckList',
+ name: 'manageCheckList',
+ component: () => import('@/views/device/deviceMaintenance/manageCheckList.vue'),
+ meta: {
+ title: '设备管理点检查表',
+ icon: 'ep:key',
+ auth: '/device/manage/checkList',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index fbbf7a4..4153ab5 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -4,6 +4,7 @@
import BreadcrumbExample from './modules/breadcrumb.example'
import systemRoute from './modules/system'
import measureRoute from './modules/measure'
+import deviceRoute from './modules/device'
import type { Route } from '@/global'
import useSettingsStore from '@/store/modules/settings'
@@ -132,11 +133,10 @@
meta: {
title: '测量设备',
icon: '',
- auth: 'clsb',
+ auth: '/device',
},
children: [
- MultilevelMenuExample,
- BreadcrumbExample,
+ ...deviceRoute,
],
},
{
diff --git a/src/settings.ts b/src/settings.ts
index f89a3ab..ae5c3f5 100644
--- a/src/settings.ts
+++ b/src/settings.ts
@@ -16,6 +16,7 @@
menu: {
baseOn: 'backend',
menuMode: 'head',
+ showIcon: true,
enableSubMenuCollapseButton: true,
},
toolbar: {
diff --git a/src/views/device/bench/deviceBench.vue b/src/views/device/bench/deviceBench.vue
new file mode 100644
index 0000000..9206576
--- /dev/null
+++ b/src/views/device/bench/deviceBench.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 工作台
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceCheckList.vue b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
new file mode 100644
index 0000000..84224db
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备检修保养验收单
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue
new file mode 100644
index 0000000..3c91abd
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备维护列表
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/manageCheckList.vue b/src/views/device/deviceMaintenance/manageCheckList.vue
new file mode 100644
index 0000000..a4ace73
--- /dev/null
+++ b/src/views/device/deviceMaintenance/manageCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备管理点检查表
+
+
+
+
diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue
new file mode 100644
index 0000000..c093520
--- /dev/null
+++ b/src/views/device/standardEquipment/cancelApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 撤销申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/changeApply.vue b/src/views/device/standardEquipment/changeApply.vue
new file mode 100644
index 0000000..0762330
--- /dev/null
+++ b/src/views/device/standardEquipment/changeApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 更换申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/checkApply.vue b/src/views/device/standardEquipment/checkApply.vue
new file mode 100644
index 0000000..9cadc01
--- /dev/null
+++ b/src/views/device/standardEquipment/checkApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 复查申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/expirationRemind.vue b/src/views/device/standardEquipment/expirationRemind.vue
new file mode 100644
index 0000000..e3ec8d3
--- /dev/null
+++ b/src/views/device/standardEquipment/expirationRemind.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 到期提醒
+
+
+
+
diff --git a/src/views/device/standardEquipment/pauseApply.vue b/src/views/device/standardEquipment/pauseApply.vue
new file mode 100644
index 0000000..6f2c437
--- /dev/null
+++ b/src/views/device/standardEquipment/pauseApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 暂停申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/resumeApply.vue b/src/views/device/standardEquipment/resumeApply.vue
new file mode 100644
index 0000000..d4a80e8
--- /dev/null
+++ b/src/views/device/standardEquipment/resumeApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 恢复申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/standardList.vue b/src/views/device/standardEquipment/standardList.vue
new file mode 100644
index 0000000..55e7402
--- /dev/null
+++ b/src/views/device/standardEquipment/standardList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 标准装置列表
+
+
+
+
diff --git a/src/views/device/standingBook/adjustDevice.vue b/src/views/device/standingBook/adjustDevice.vue
new file mode 100644
index 0000000..a6e1b54
--- /dev/null
+++ b/src/views/device/standingBook/adjustDevice.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 校准检定设备
+
+
+
+
diff --git a/src/views/device/standingBook/fixedAssets.vue b/src/views/device/standingBook/fixedAssets.vue
new file mode 100644
index 0000000..b9845d9
--- /dev/null
+++ b/src/views/device/standingBook/fixedAssets.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 固定资产
+
+
+
+
diff --git a/src/views/device/standingBook/measureDevice.vue b/src/views/device/standingBook/measureDevice.vue
new file mode 100644
index 0000000..3f74e89
--- /dev/null
+++ b/src/views/device/standingBook/measureDevice.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 测量设备
+
+
+
+
diff --git a/src/views/device/standingBook/measureTool.vue b/src/views/device/standingBook/measureTool.vue
new file mode 100644
index 0000000..5a2f8d3
--- /dev/null
+++ b/src/views/device/standingBook/measureTool.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 测量工装
+
+
+
+
diff --git a/src/App.vue b/src/App.vue
index 8624b4c..52ccd6e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,7 +27,7 @@
actualWidth = 0
}
else if (settingsStore.menu.subMenuCollapse) {
- actualWidth = 64
+ actualWidth = 55
}
return `${actualWidth}px`
})
diff --git a/src/assets/icons/icon-setting.svg b/src/assets/icons/icon-setting.svg
new file mode 100644
index 0000000..33353f0
--- /dev/null
+++ b/src/assets/icons/icon-setting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/next_level.png b/src/assets/images/next_level.png
new file mode 100644
index 0000000..53d2837
--- /dev/null
+++ b/src/assets/images/next_level.png
Binary files differ
diff --git a/src/assets/images/next_level_active.png b/src/assets/images/next_level_active.png
new file mode 100644
index 0000000..1a52ae8
--- /dev/null
+++ b/src/assets/images/next_level_active.png
Binary files differ
diff --git a/src/assets/styles/element-plus/index.scss b/src/assets/styles/element-plus/index.scss
index 3b53223..6dc95ed 100644
--- a/src/assets/styles/element-plus/index.scss
+++ b/src/assets/styles/element-plus/index.scss
@@ -7,6 +7,10 @@
$table:(
"header-bg-color":#f2f6ff,
"header-text-color":#444c59
+ ),
+ $menu:(
+ "base-level-padding": 15px,
+ "level-padding": 10px
)
);
@use "element-plus/theme-chalk/src/index.scss" as *;
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 4565a0f..938efd4 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -6,7 +6,7 @@
// 头部宽度(默认自适应宽度,可固定宽度,固定宽度后为居中显示)
--g-header-width: 100%;
// 头部高度
- --g-header-height: 67px;
+ --g-header-height: 60px;
// 侧边栏宽度
--g-main-sidebar-width: 70px;
--g-sub-sidebar-width: 180px;
@@ -91,3 +91,20 @@
.el-cascader.full-width-input {
width: 100% !important;
}
+
+.el-menu--popup {
+ color: var(--g-sub-sidebar-popmenu-bg);
+
+ .sidebar-item {
+ .el-menu-item,
+ .el-sub-menu__title {
+ color: var(--g-sub-sidebar-popmenu-color) !important;
+ }
+
+ .el-menu-item:hover,
+ .el-sub-menu__title:hover {
+ color: var(--g-sub-sidebar-popmenu-active-color) !important;
+ background-color: var(--g-sub-sidebar-popmenu-hover-color) !important;
+ }
+ }
+}
diff --git a/src/assets/styles/themes.scss b/src/assets/styles/themes.scss
index 47da1fb..418dc62 100644
--- a/src/assets/styles/themes.scss
+++ b/src/assets/styles/themes.scss
@@ -52,6 +52,14 @@
--g-sub-sidebar-menu-active-color: #3d7eff;
// 菜单选中背景色
--g-sub-sidebar-menu-active-bg: #dae9fe;
+ // 弹出菜单背景色
+ --g-sub-sidebar-popmenu-bg: #fff;
+ // 弹出菜单文字颜色
+ --g-sub-sidebar-popmenu-color: rgb(92 92 92);
+ // 弹出菜单鼠标悬浮文字颜色
+ --g-sub-sidebar-popmenu-hover-color: #dae9fe;
+ // 弹出菜单选中文字颜色
+ --g-sub-sidebar-popmenu-active-color: rgb(92 92 92);
/* ----- 顶栏 ----- */
--g-toolbar-bg: var(--el-bg-color);
diff --git a/src/layouts/components/Header/index.vue b/src/layouts/components/Header/index.vue
index 4a98f23..83ad8cd 100644
--- a/src/layouts/components/Header/index.vue
+++ b/src/layouts/components/Header/index.vue
@@ -31,7 +31,7 @@
-
+
{{ item.meta.title }}
@@ -136,8 +136,7 @@
display: flex;
align-items: center;
justify-content: center;
- flex-direction: column;
- padding: 10px;
+ padding: 5px;
height: auto;
cursor: pointer;
color: var(--g-header-menu-color);
@@ -150,7 +149,7 @@
}
.el-icon {
- font-size: 24px;
+ font-size: 18px;
vertical-align: middle;
}
@@ -161,6 +160,14 @@
@include text-overflow(1, false);
}
+
+ .el-icon + span {
+ margin-left: 5px;
+ }
+ }
+
+ .item + .item {
+ margin-left: 5px;
}
.round-item {
diff --git a/src/layouts/components/SidebarItem/index.vue b/src/layouts/components/SidebarItem/index.vue
index b930871..540d253 100644
--- a/src/layouts/components/SidebarItem/index.vue
+++ b/src/layouts/components/SidebarItem/index.vue
@@ -85,15 +85,15 @@
:deep(.el-sub-menu),
:deep(.el-menu-item) {
.title-icon {
- width: 20px;
- font-size: 20px;
+ width: 16px;
+ font-size: 16px;
vertical-align: -0.25em;
transition: transform 0.3s;
color: unset;
}
.title-icon + .title {
- margin-left: 10px;
+ margin-left: 5px;
}
&:hover > .title-icon,
diff --git a/src/layouts/components/SubSidebar/index.vue b/src/layouts/components/SubSidebar/index.vue
index 9fc8a18..5928469 100644
--- a/src/layouts/components/SubSidebar/index.vue
+++ b/src/layouts/components/SubSidebar/index.vue
@@ -62,7 +62,7 @@
transition: background-color 0.3s, var(--el-transition-box-shadow), left 0.3s, width 0.3s;
&.is-collapse {
- width: 64px;
+ width: 55px;
.sidebar-logo {
&:not(.sidebar-logo-bg) {
@@ -96,7 +96,7 @@
.el-menu {
border-right: 0;
- padding: 0 10px;
+ padding: 0 5px;
padding-top: var(--g-sidebar-logo-height);
padding-top: 16px !important;
transition: border-color 0.3s, background-color 0.3s, color 0.3s, padding-top 0.3s;
diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts
new file mode 100644
index 0000000..55b4d14
--- /dev/null
+++ b/src/router/modules/device.ts
@@ -0,0 +1,286 @@
+// 测量设备
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/device',
+ component: Layout,
+ redirect: '/device/bench',
+ name: 'DBench',
+ meta: {
+ title: '工作台',
+ icon: 'ep:key',
+ auth: '/device/bench',
+ },
+ children: [
+ {
+ path: '/device/bench',
+ name: 'DeviceBench',
+ component: () => import('@/views/device/bench/deviceBench.vue'),
+ meta: {
+ title: '工作台',
+ auth: '/device/bench',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/device',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standingBook',
+ component: Layout,
+ redirect: '/standingBook/measureDevice',
+ name: 'standingBook',
+ meta: {
+ title: '设备台账',
+ icon: 'ep:key',
+ auth: '/device/standingBook',
+ },
+ children: [
+ {
+ path: 'measureDevice',
+ name: 'measureDevice',
+ component: () => import('@/views/device/standingBook/measureDevice.vue'),
+ meta: {
+ title: '测量设备',
+ icon: 'ep:key',
+ auth: '/device/measureDevice',
+ },
+ },
+ {
+ path: 'adjustDevice',
+ name: 'adjustDevice',
+ component: () => import('@/views/device/standingBook/adjustDevice.vue'),
+ meta: {
+ title: '校准/检定设备',
+ icon: 'ep:key',
+ auth: '/device/adjustDevice',
+ },
+ },
+ {
+ path: 'standardMatchDevice',
+ name: 'standardMatchDevice',
+ component: () => import('@/views/device/standingBook/standardMatchDevice.vue'),
+ meta: {
+ title: '标准配套设备',
+ icon: 'ep:key',
+ auth: '/device/standardMatchDevice',
+ },
+ },
+ {
+ path: 'measureTool',
+ name: 'measureTool',
+ component: () => import('@/views/device/standingBook/measureTool.vue'),
+ meta: {
+ title: '测量工装',
+ icon: 'ep:key',
+ auth: '/device/measureTool',
+ },
+ },
+ {
+ path: 'fixedAssets',
+ name: 'fixedAssets',
+ component: () => import('@/views/device/standingBook/fixedAssets.vue'),
+ meta: {
+ title: '固定资产',
+ icon: 'ep:key',
+ auth: '/device/fixedAssets',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standard',
+ component: Layout,
+ redirect: '/standard/list',
+ name: 'Standard',
+ meta: {
+ title: '标准装置',
+ icon: 'ep:key',
+ auth: '/standardEquipment',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'standardList',
+ component: () => import('@/views/device/standardEquipment/standardList.vue'),
+ meta: {
+ title: '标准装置列表',
+ icon: 'ep:key',
+ auth: '/standard/list',
+ },
+ },
+ {
+ path: 'expirationRemind',
+ name: 'expirationRemind',
+ component: () => import('@/views/device/standardEquipment/expirationRemind.vue'),
+ meta: {
+ title: '到期提醒',
+ icon: 'ep:key',
+ auth: '/standard/expirationRemind',
+ },
+ },
+ {
+ path: 'changeApply',
+ name: 'changeApply',
+ component: () => import('@/views/device/standardEquipment/changeApply.vue'),
+ meta: {
+ title: '更换申请',
+ icon: 'ep:key',
+ auth: '/standard/changeApply',
+ },
+ },
+ {
+ path: 'pauseApply',
+ name: 'pauseApply',
+ component: () => import('@/views/device/standardEquipment/pauseApply.vue'),
+ meta: {
+ title: '暂停申请',
+ icon: 'ep:key',
+ auth: '/standard/pauseApply',
+ },
+ },
+ {
+ path: 'cancelApply',
+ name: 'cancelApply',
+ component: () => import('@/views/device/standardEquipment/cancelApply.vue'),
+ meta: {
+ title: '撤销申请',
+ icon: 'ep:key',
+ auth: '/standard/cancelApply',
+ },
+ },
+ {
+ path: 'resumeApply',
+ name: 'resumeApply',
+ component: () => import('@/views/device/standardEquipment/resumeApply.vue'),
+ meta: {
+ title: '恢复申请',
+ icon: 'ep:key',
+ auth: '/standard/resumeApply',
+ },
+ },
+ {
+ path: 'checkApply',
+ name: 'checkApply',
+ component: () => import('@/views/device/standardEquipment/checkApply.vue'),
+ meta: {
+ title: '复查申请',
+ icon: 'ep:key',
+ auth: '/standard/checkApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/stateManage',
+ component: Layout,
+ redirect: '/stateManage/unusedApply',
+ name: 'stateManage',
+ meta: {
+ title: '状态管理',
+ icon: 'ep:key',
+ auth: '/device/stateManage',
+ },
+ children: [
+ {
+ path: 'unusedApply',
+ name: 'unusedApply',
+ component: () => import('@/views/device/stateManage/unusedApply.vue'),
+ meta: {
+ title: '设备闲置申请',
+ icon: 'ep:key',
+ auth: '/device/unusedApply',
+ },
+ },
+ {
+ path: 'sealupApply',
+ name: 'sealupApply',
+ component: () => import('@/views/device/stateManage/sealupApply.vue'),
+ meta: {
+ title: '设备封存申请',
+ icon: 'ep:key',
+ auth: '/device/sealupApply',
+ },
+ },
+ {
+ path: 'openApply',
+ name: 'openApply',
+ component: () => import('@/views/device/stateManage/openApply.vue'),
+ meta: {
+ title: '设备启封申请',
+ icon: 'ep:key',
+ auth: '/device/openApply',
+ },
+ },
+ {
+ path: 'scrapApply',
+ name: 'scrapApply',
+ component: () => import('@/views/device/stateManage/scrapApply.vue'),
+ meta: {
+ title: '设备报废申请',
+ icon: 'ep:key',
+ auth: '/device/scrapApply',
+ },
+ },
+ {
+ path: 'handleApply',
+ name: 'handleApply',
+ component: () => import('@/views/device/stateManage/handleApply.vue'),
+ meta: {
+ title: '设备处置申请',
+ icon: 'ep:key',
+ auth: '/device/handleApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/maintenance',
+ component: Layout,
+ redirect: '/maintenance/maintenanceList',
+ name: 'MaintenanceManage',
+ meta: {
+ title: '设备维护',
+ icon: 'ep:key',
+ auth: '/device/maintenance',
+ },
+ children: [
+ {
+ path: 'maintenanceList',
+ name: 'maintenanceList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceList.vue'),
+ meta: {
+ title: '设备维护列表',
+ icon: 'ep:key',
+ auth: '/device/maintenanceList',
+ },
+ },
+ {
+ path: 'maintenanceCheckList',
+ name: 'maintenanceCheckList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceCheckList.vue'),
+ meta: {
+ title: '设备检修保养验收单',
+ icon: 'ep:key',
+ auth: '/device/maintenance/checkList',
+ },
+ },
+ {
+ path: 'manageCheckList',
+ name: 'manageCheckList',
+ component: () => import('@/views/device/deviceMaintenance/manageCheckList.vue'),
+ meta: {
+ title: '设备管理点检查表',
+ icon: 'ep:key',
+ auth: '/device/manage/checkList',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index fbbf7a4..4153ab5 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -4,6 +4,7 @@
import BreadcrumbExample from './modules/breadcrumb.example'
import systemRoute from './modules/system'
import measureRoute from './modules/measure'
+import deviceRoute from './modules/device'
import type { Route } from '@/global'
import useSettingsStore from '@/store/modules/settings'
@@ -132,11 +133,10 @@
meta: {
title: '测量设备',
icon: '',
- auth: 'clsb',
+ auth: '/device',
},
children: [
- MultilevelMenuExample,
- BreadcrumbExample,
+ ...deviceRoute,
],
},
{
diff --git a/src/settings.ts b/src/settings.ts
index f89a3ab..ae5c3f5 100644
--- a/src/settings.ts
+++ b/src/settings.ts
@@ -16,6 +16,7 @@
menu: {
baseOn: 'backend',
menuMode: 'head',
+ showIcon: true,
enableSubMenuCollapseButton: true,
},
toolbar: {
diff --git a/src/views/device/bench/deviceBench.vue b/src/views/device/bench/deviceBench.vue
new file mode 100644
index 0000000..9206576
--- /dev/null
+++ b/src/views/device/bench/deviceBench.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 工作台
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceCheckList.vue b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
new file mode 100644
index 0000000..84224db
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备检修保养验收单
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue
new file mode 100644
index 0000000..3c91abd
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备维护列表
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/manageCheckList.vue b/src/views/device/deviceMaintenance/manageCheckList.vue
new file mode 100644
index 0000000..a4ace73
--- /dev/null
+++ b/src/views/device/deviceMaintenance/manageCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备管理点检查表
+
+
+
+
diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue
new file mode 100644
index 0000000..c093520
--- /dev/null
+++ b/src/views/device/standardEquipment/cancelApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 撤销申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/changeApply.vue b/src/views/device/standardEquipment/changeApply.vue
new file mode 100644
index 0000000..0762330
--- /dev/null
+++ b/src/views/device/standardEquipment/changeApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 更换申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/checkApply.vue b/src/views/device/standardEquipment/checkApply.vue
new file mode 100644
index 0000000..9cadc01
--- /dev/null
+++ b/src/views/device/standardEquipment/checkApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 复查申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/expirationRemind.vue b/src/views/device/standardEquipment/expirationRemind.vue
new file mode 100644
index 0000000..e3ec8d3
--- /dev/null
+++ b/src/views/device/standardEquipment/expirationRemind.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 到期提醒
+
+
+
+
diff --git a/src/views/device/standardEquipment/pauseApply.vue b/src/views/device/standardEquipment/pauseApply.vue
new file mode 100644
index 0000000..6f2c437
--- /dev/null
+++ b/src/views/device/standardEquipment/pauseApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 暂停申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/resumeApply.vue b/src/views/device/standardEquipment/resumeApply.vue
new file mode 100644
index 0000000..d4a80e8
--- /dev/null
+++ b/src/views/device/standardEquipment/resumeApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 恢复申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/standardList.vue b/src/views/device/standardEquipment/standardList.vue
new file mode 100644
index 0000000..55e7402
--- /dev/null
+++ b/src/views/device/standardEquipment/standardList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 标准装置列表
+
+
+
+
diff --git a/src/views/device/standingBook/adjustDevice.vue b/src/views/device/standingBook/adjustDevice.vue
new file mode 100644
index 0000000..a6e1b54
--- /dev/null
+++ b/src/views/device/standingBook/adjustDevice.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 校准检定设备
+
+
+
+
diff --git a/src/views/device/standingBook/fixedAssets.vue b/src/views/device/standingBook/fixedAssets.vue
new file mode 100644
index 0000000..b9845d9
--- /dev/null
+++ b/src/views/device/standingBook/fixedAssets.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 固定资产
+
+
+
+
diff --git a/src/views/device/standingBook/measureDevice.vue b/src/views/device/standingBook/measureDevice.vue
new file mode 100644
index 0000000..3f74e89
--- /dev/null
+++ b/src/views/device/standingBook/measureDevice.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 测量设备
+
+
+
+
diff --git a/src/views/device/standingBook/measureTool.vue b/src/views/device/standingBook/measureTool.vue
new file mode 100644
index 0000000..5a2f8d3
--- /dev/null
+++ b/src/views/device/standingBook/measureTool.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 测量工装
+
+
+
+
diff --git a/src/views/device/standingBook/standardMatchDevice.vue b/src/views/device/standingBook/standardMatchDevice.vue
new file mode 100644
index 0000000..8faef3a
--- /dev/null
+++ b/src/views/device/standingBook/standardMatchDevice.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 标准配套设备
+
+
+
+
diff --git a/src/App.vue b/src/App.vue
index 8624b4c..52ccd6e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,7 +27,7 @@
actualWidth = 0
}
else if (settingsStore.menu.subMenuCollapse) {
- actualWidth = 64
+ actualWidth = 55
}
return `${actualWidth}px`
})
diff --git a/src/assets/icons/icon-setting.svg b/src/assets/icons/icon-setting.svg
new file mode 100644
index 0000000..33353f0
--- /dev/null
+++ b/src/assets/icons/icon-setting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/next_level.png b/src/assets/images/next_level.png
new file mode 100644
index 0000000..53d2837
--- /dev/null
+++ b/src/assets/images/next_level.png
Binary files differ
diff --git a/src/assets/images/next_level_active.png b/src/assets/images/next_level_active.png
new file mode 100644
index 0000000..1a52ae8
--- /dev/null
+++ b/src/assets/images/next_level_active.png
Binary files differ
diff --git a/src/assets/styles/element-plus/index.scss b/src/assets/styles/element-plus/index.scss
index 3b53223..6dc95ed 100644
--- a/src/assets/styles/element-plus/index.scss
+++ b/src/assets/styles/element-plus/index.scss
@@ -7,6 +7,10 @@
$table:(
"header-bg-color":#f2f6ff,
"header-text-color":#444c59
+ ),
+ $menu:(
+ "base-level-padding": 15px,
+ "level-padding": 10px
)
);
@use "element-plus/theme-chalk/src/index.scss" as *;
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 4565a0f..938efd4 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -6,7 +6,7 @@
// 头部宽度(默认自适应宽度,可固定宽度,固定宽度后为居中显示)
--g-header-width: 100%;
// 头部高度
- --g-header-height: 67px;
+ --g-header-height: 60px;
// 侧边栏宽度
--g-main-sidebar-width: 70px;
--g-sub-sidebar-width: 180px;
@@ -91,3 +91,20 @@
.el-cascader.full-width-input {
width: 100% !important;
}
+
+.el-menu--popup {
+ color: var(--g-sub-sidebar-popmenu-bg);
+
+ .sidebar-item {
+ .el-menu-item,
+ .el-sub-menu__title {
+ color: var(--g-sub-sidebar-popmenu-color) !important;
+ }
+
+ .el-menu-item:hover,
+ .el-sub-menu__title:hover {
+ color: var(--g-sub-sidebar-popmenu-active-color) !important;
+ background-color: var(--g-sub-sidebar-popmenu-hover-color) !important;
+ }
+ }
+}
diff --git a/src/assets/styles/themes.scss b/src/assets/styles/themes.scss
index 47da1fb..418dc62 100644
--- a/src/assets/styles/themes.scss
+++ b/src/assets/styles/themes.scss
@@ -52,6 +52,14 @@
--g-sub-sidebar-menu-active-color: #3d7eff;
// 菜单选中背景色
--g-sub-sidebar-menu-active-bg: #dae9fe;
+ // 弹出菜单背景色
+ --g-sub-sidebar-popmenu-bg: #fff;
+ // 弹出菜单文字颜色
+ --g-sub-sidebar-popmenu-color: rgb(92 92 92);
+ // 弹出菜单鼠标悬浮文字颜色
+ --g-sub-sidebar-popmenu-hover-color: #dae9fe;
+ // 弹出菜单选中文字颜色
+ --g-sub-sidebar-popmenu-active-color: rgb(92 92 92);
/* ----- 顶栏 ----- */
--g-toolbar-bg: var(--el-bg-color);
diff --git a/src/layouts/components/Header/index.vue b/src/layouts/components/Header/index.vue
index 4a98f23..83ad8cd 100644
--- a/src/layouts/components/Header/index.vue
+++ b/src/layouts/components/Header/index.vue
@@ -31,7 +31,7 @@
-
+
{{ item.meta.title }}
@@ -136,8 +136,7 @@
display: flex;
align-items: center;
justify-content: center;
- flex-direction: column;
- padding: 10px;
+ padding: 5px;
height: auto;
cursor: pointer;
color: var(--g-header-menu-color);
@@ -150,7 +149,7 @@
}
.el-icon {
- font-size: 24px;
+ font-size: 18px;
vertical-align: middle;
}
@@ -161,6 +160,14 @@
@include text-overflow(1, false);
}
+
+ .el-icon + span {
+ margin-left: 5px;
+ }
+ }
+
+ .item + .item {
+ margin-left: 5px;
}
.round-item {
diff --git a/src/layouts/components/SidebarItem/index.vue b/src/layouts/components/SidebarItem/index.vue
index b930871..540d253 100644
--- a/src/layouts/components/SidebarItem/index.vue
+++ b/src/layouts/components/SidebarItem/index.vue
@@ -85,15 +85,15 @@
:deep(.el-sub-menu),
:deep(.el-menu-item) {
.title-icon {
- width: 20px;
- font-size: 20px;
+ width: 16px;
+ font-size: 16px;
vertical-align: -0.25em;
transition: transform 0.3s;
color: unset;
}
.title-icon + .title {
- margin-left: 10px;
+ margin-left: 5px;
}
&:hover > .title-icon,
diff --git a/src/layouts/components/SubSidebar/index.vue b/src/layouts/components/SubSidebar/index.vue
index 9fc8a18..5928469 100644
--- a/src/layouts/components/SubSidebar/index.vue
+++ b/src/layouts/components/SubSidebar/index.vue
@@ -62,7 +62,7 @@
transition: background-color 0.3s, var(--el-transition-box-shadow), left 0.3s, width 0.3s;
&.is-collapse {
- width: 64px;
+ width: 55px;
.sidebar-logo {
&:not(.sidebar-logo-bg) {
@@ -96,7 +96,7 @@
.el-menu {
border-right: 0;
- padding: 0 10px;
+ padding: 0 5px;
padding-top: var(--g-sidebar-logo-height);
padding-top: 16px !important;
transition: border-color 0.3s, background-color 0.3s, color 0.3s, padding-top 0.3s;
diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts
new file mode 100644
index 0000000..55b4d14
--- /dev/null
+++ b/src/router/modules/device.ts
@@ -0,0 +1,286 @@
+// 测量设备
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/device',
+ component: Layout,
+ redirect: '/device/bench',
+ name: 'DBench',
+ meta: {
+ title: '工作台',
+ icon: 'ep:key',
+ auth: '/device/bench',
+ },
+ children: [
+ {
+ path: '/device/bench',
+ name: 'DeviceBench',
+ component: () => import('@/views/device/bench/deviceBench.vue'),
+ meta: {
+ title: '工作台',
+ auth: '/device/bench',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/device',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standingBook',
+ component: Layout,
+ redirect: '/standingBook/measureDevice',
+ name: 'standingBook',
+ meta: {
+ title: '设备台账',
+ icon: 'ep:key',
+ auth: '/device/standingBook',
+ },
+ children: [
+ {
+ path: 'measureDevice',
+ name: 'measureDevice',
+ component: () => import('@/views/device/standingBook/measureDevice.vue'),
+ meta: {
+ title: '测量设备',
+ icon: 'ep:key',
+ auth: '/device/measureDevice',
+ },
+ },
+ {
+ path: 'adjustDevice',
+ name: 'adjustDevice',
+ component: () => import('@/views/device/standingBook/adjustDevice.vue'),
+ meta: {
+ title: '校准/检定设备',
+ icon: 'ep:key',
+ auth: '/device/adjustDevice',
+ },
+ },
+ {
+ path: 'standardMatchDevice',
+ name: 'standardMatchDevice',
+ component: () => import('@/views/device/standingBook/standardMatchDevice.vue'),
+ meta: {
+ title: '标准配套设备',
+ icon: 'ep:key',
+ auth: '/device/standardMatchDevice',
+ },
+ },
+ {
+ path: 'measureTool',
+ name: 'measureTool',
+ component: () => import('@/views/device/standingBook/measureTool.vue'),
+ meta: {
+ title: '测量工装',
+ icon: 'ep:key',
+ auth: '/device/measureTool',
+ },
+ },
+ {
+ path: 'fixedAssets',
+ name: 'fixedAssets',
+ component: () => import('@/views/device/standingBook/fixedAssets.vue'),
+ meta: {
+ title: '固定资产',
+ icon: 'ep:key',
+ auth: '/device/fixedAssets',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standard',
+ component: Layout,
+ redirect: '/standard/list',
+ name: 'Standard',
+ meta: {
+ title: '标准装置',
+ icon: 'ep:key',
+ auth: '/standardEquipment',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'standardList',
+ component: () => import('@/views/device/standardEquipment/standardList.vue'),
+ meta: {
+ title: '标准装置列表',
+ icon: 'ep:key',
+ auth: '/standard/list',
+ },
+ },
+ {
+ path: 'expirationRemind',
+ name: 'expirationRemind',
+ component: () => import('@/views/device/standardEquipment/expirationRemind.vue'),
+ meta: {
+ title: '到期提醒',
+ icon: 'ep:key',
+ auth: '/standard/expirationRemind',
+ },
+ },
+ {
+ path: 'changeApply',
+ name: 'changeApply',
+ component: () => import('@/views/device/standardEquipment/changeApply.vue'),
+ meta: {
+ title: '更换申请',
+ icon: 'ep:key',
+ auth: '/standard/changeApply',
+ },
+ },
+ {
+ path: 'pauseApply',
+ name: 'pauseApply',
+ component: () => import('@/views/device/standardEquipment/pauseApply.vue'),
+ meta: {
+ title: '暂停申请',
+ icon: 'ep:key',
+ auth: '/standard/pauseApply',
+ },
+ },
+ {
+ path: 'cancelApply',
+ name: 'cancelApply',
+ component: () => import('@/views/device/standardEquipment/cancelApply.vue'),
+ meta: {
+ title: '撤销申请',
+ icon: 'ep:key',
+ auth: '/standard/cancelApply',
+ },
+ },
+ {
+ path: 'resumeApply',
+ name: 'resumeApply',
+ component: () => import('@/views/device/standardEquipment/resumeApply.vue'),
+ meta: {
+ title: '恢复申请',
+ icon: 'ep:key',
+ auth: '/standard/resumeApply',
+ },
+ },
+ {
+ path: 'checkApply',
+ name: 'checkApply',
+ component: () => import('@/views/device/standardEquipment/checkApply.vue'),
+ meta: {
+ title: '复查申请',
+ icon: 'ep:key',
+ auth: '/standard/checkApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/stateManage',
+ component: Layout,
+ redirect: '/stateManage/unusedApply',
+ name: 'stateManage',
+ meta: {
+ title: '状态管理',
+ icon: 'ep:key',
+ auth: '/device/stateManage',
+ },
+ children: [
+ {
+ path: 'unusedApply',
+ name: 'unusedApply',
+ component: () => import('@/views/device/stateManage/unusedApply.vue'),
+ meta: {
+ title: '设备闲置申请',
+ icon: 'ep:key',
+ auth: '/device/unusedApply',
+ },
+ },
+ {
+ path: 'sealupApply',
+ name: 'sealupApply',
+ component: () => import('@/views/device/stateManage/sealupApply.vue'),
+ meta: {
+ title: '设备封存申请',
+ icon: 'ep:key',
+ auth: '/device/sealupApply',
+ },
+ },
+ {
+ path: 'openApply',
+ name: 'openApply',
+ component: () => import('@/views/device/stateManage/openApply.vue'),
+ meta: {
+ title: '设备启封申请',
+ icon: 'ep:key',
+ auth: '/device/openApply',
+ },
+ },
+ {
+ path: 'scrapApply',
+ name: 'scrapApply',
+ component: () => import('@/views/device/stateManage/scrapApply.vue'),
+ meta: {
+ title: '设备报废申请',
+ icon: 'ep:key',
+ auth: '/device/scrapApply',
+ },
+ },
+ {
+ path: 'handleApply',
+ name: 'handleApply',
+ component: () => import('@/views/device/stateManage/handleApply.vue'),
+ meta: {
+ title: '设备处置申请',
+ icon: 'ep:key',
+ auth: '/device/handleApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/maintenance',
+ component: Layout,
+ redirect: '/maintenance/maintenanceList',
+ name: 'MaintenanceManage',
+ meta: {
+ title: '设备维护',
+ icon: 'ep:key',
+ auth: '/device/maintenance',
+ },
+ children: [
+ {
+ path: 'maintenanceList',
+ name: 'maintenanceList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceList.vue'),
+ meta: {
+ title: '设备维护列表',
+ icon: 'ep:key',
+ auth: '/device/maintenanceList',
+ },
+ },
+ {
+ path: 'maintenanceCheckList',
+ name: 'maintenanceCheckList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceCheckList.vue'),
+ meta: {
+ title: '设备检修保养验收单',
+ icon: 'ep:key',
+ auth: '/device/maintenance/checkList',
+ },
+ },
+ {
+ path: 'manageCheckList',
+ name: 'manageCheckList',
+ component: () => import('@/views/device/deviceMaintenance/manageCheckList.vue'),
+ meta: {
+ title: '设备管理点检查表',
+ icon: 'ep:key',
+ auth: '/device/manage/checkList',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index fbbf7a4..4153ab5 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -4,6 +4,7 @@
import BreadcrumbExample from './modules/breadcrumb.example'
import systemRoute from './modules/system'
import measureRoute from './modules/measure'
+import deviceRoute from './modules/device'
import type { Route } from '@/global'
import useSettingsStore from '@/store/modules/settings'
@@ -132,11 +133,10 @@
meta: {
title: '测量设备',
icon: '',
- auth: 'clsb',
+ auth: '/device',
},
children: [
- MultilevelMenuExample,
- BreadcrumbExample,
+ ...deviceRoute,
],
},
{
diff --git a/src/settings.ts b/src/settings.ts
index f89a3ab..ae5c3f5 100644
--- a/src/settings.ts
+++ b/src/settings.ts
@@ -16,6 +16,7 @@
menu: {
baseOn: 'backend',
menuMode: 'head',
+ showIcon: true,
enableSubMenuCollapseButton: true,
},
toolbar: {
diff --git a/src/views/device/bench/deviceBench.vue b/src/views/device/bench/deviceBench.vue
new file mode 100644
index 0000000..9206576
--- /dev/null
+++ b/src/views/device/bench/deviceBench.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 工作台
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceCheckList.vue b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
new file mode 100644
index 0000000..84224db
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备检修保养验收单
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue
new file mode 100644
index 0000000..3c91abd
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备维护列表
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/manageCheckList.vue b/src/views/device/deviceMaintenance/manageCheckList.vue
new file mode 100644
index 0000000..a4ace73
--- /dev/null
+++ b/src/views/device/deviceMaintenance/manageCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备管理点检查表
+
+
+
+
diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue
new file mode 100644
index 0000000..c093520
--- /dev/null
+++ b/src/views/device/standardEquipment/cancelApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 撤销申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/changeApply.vue b/src/views/device/standardEquipment/changeApply.vue
new file mode 100644
index 0000000..0762330
--- /dev/null
+++ b/src/views/device/standardEquipment/changeApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 更换申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/checkApply.vue b/src/views/device/standardEquipment/checkApply.vue
new file mode 100644
index 0000000..9cadc01
--- /dev/null
+++ b/src/views/device/standardEquipment/checkApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 复查申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/expirationRemind.vue b/src/views/device/standardEquipment/expirationRemind.vue
new file mode 100644
index 0000000..e3ec8d3
--- /dev/null
+++ b/src/views/device/standardEquipment/expirationRemind.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 到期提醒
+
+
+
+
diff --git a/src/views/device/standardEquipment/pauseApply.vue b/src/views/device/standardEquipment/pauseApply.vue
new file mode 100644
index 0000000..6f2c437
--- /dev/null
+++ b/src/views/device/standardEquipment/pauseApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 暂停申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/resumeApply.vue b/src/views/device/standardEquipment/resumeApply.vue
new file mode 100644
index 0000000..d4a80e8
--- /dev/null
+++ b/src/views/device/standardEquipment/resumeApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 恢复申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/standardList.vue b/src/views/device/standardEquipment/standardList.vue
new file mode 100644
index 0000000..55e7402
--- /dev/null
+++ b/src/views/device/standardEquipment/standardList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 标准装置列表
+
+
+
+
diff --git a/src/views/device/standingBook/adjustDevice.vue b/src/views/device/standingBook/adjustDevice.vue
new file mode 100644
index 0000000..a6e1b54
--- /dev/null
+++ b/src/views/device/standingBook/adjustDevice.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 校准检定设备
+
+
+
+
diff --git a/src/views/device/standingBook/fixedAssets.vue b/src/views/device/standingBook/fixedAssets.vue
new file mode 100644
index 0000000..b9845d9
--- /dev/null
+++ b/src/views/device/standingBook/fixedAssets.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 固定资产
+
+
+
+
diff --git a/src/views/device/standingBook/measureDevice.vue b/src/views/device/standingBook/measureDevice.vue
new file mode 100644
index 0000000..3f74e89
--- /dev/null
+++ b/src/views/device/standingBook/measureDevice.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 测量设备
+
+
+
+
diff --git a/src/views/device/standingBook/measureTool.vue b/src/views/device/standingBook/measureTool.vue
new file mode 100644
index 0000000..5a2f8d3
--- /dev/null
+++ b/src/views/device/standingBook/measureTool.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 测量工装
+
+
+
+
diff --git a/src/views/device/standingBook/standardMatchDevice.vue b/src/views/device/standingBook/standardMatchDevice.vue
new file mode 100644
index 0000000..8faef3a
--- /dev/null
+++ b/src/views/device/standingBook/standardMatchDevice.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 标准配套设备
+
+
+
+
diff --git a/src/views/device/stateManage/handleApply.vue b/src/views/device/stateManage/handleApply.vue
new file mode 100644
index 0000000..fb5897e
--- /dev/null
+++ b/src/views/device/stateManage/handleApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备处置申请
+
+
+
+
diff --git a/src/App.vue b/src/App.vue
index 8624b4c..52ccd6e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,7 +27,7 @@
actualWidth = 0
}
else if (settingsStore.menu.subMenuCollapse) {
- actualWidth = 64
+ actualWidth = 55
}
return `${actualWidth}px`
})
diff --git a/src/assets/icons/icon-setting.svg b/src/assets/icons/icon-setting.svg
new file mode 100644
index 0000000..33353f0
--- /dev/null
+++ b/src/assets/icons/icon-setting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/next_level.png b/src/assets/images/next_level.png
new file mode 100644
index 0000000..53d2837
--- /dev/null
+++ b/src/assets/images/next_level.png
Binary files differ
diff --git a/src/assets/images/next_level_active.png b/src/assets/images/next_level_active.png
new file mode 100644
index 0000000..1a52ae8
--- /dev/null
+++ b/src/assets/images/next_level_active.png
Binary files differ
diff --git a/src/assets/styles/element-plus/index.scss b/src/assets/styles/element-plus/index.scss
index 3b53223..6dc95ed 100644
--- a/src/assets/styles/element-plus/index.scss
+++ b/src/assets/styles/element-plus/index.scss
@@ -7,6 +7,10 @@
$table:(
"header-bg-color":#f2f6ff,
"header-text-color":#444c59
+ ),
+ $menu:(
+ "base-level-padding": 15px,
+ "level-padding": 10px
)
);
@use "element-plus/theme-chalk/src/index.scss" as *;
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 4565a0f..938efd4 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -6,7 +6,7 @@
// 头部宽度(默认自适应宽度,可固定宽度,固定宽度后为居中显示)
--g-header-width: 100%;
// 头部高度
- --g-header-height: 67px;
+ --g-header-height: 60px;
// 侧边栏宽度
--g-main-sidebar-width: 70px;
--g-sub-sidebar-width: 180px;
@@ -91,3 +91,20 @@
.el-cascader.full-width-input {
width: 100% !important;
}
+
+.el-menu--popup {
+ color: var(--g-sub-sidebar-popmenu-bg);
+
+ .sidebar-item {
+ .el-menu-item,
+ .el-sub-menu__title {
+ color: var(--g-sub-sidebar-popmenu-color) !important;
+ }
+
+ .el-menu-item:hover,
+ .el-sub-menu__title:hover {
+ color: var(--g-sub-sidebar-popmenu-active-color) !important;
+ background-color: var(--g-sub-sidebar-popmenu-hover-color) !important;
+ }
+ }
+}
diff --git a/src/assets/styles/themes.scss b/src/assets/styles/themes.scss
index 47da1fb..418dc62 100644
--- a/src/assets/styles/themes.scss
+++ b/src/assets/styles/themes.scss
@@ -52,6 +52,14 @@
--g-sub-sidebar-menu-active-color: #3d7eff;
// 菜单选中背景色
--g-sub-sidebar-menu-active-bg: #dae9fe;
+ // 弹出菜单背景色
+ --g-sub-sidebar-popmenu-bg: #fff;
+ // 弹出菜单文字颜色
+ --g-sub-sidebar-popmenu-color: rgb(92 92 92);
+ // 弹出菜单鼠标悬浮文字颜色
+ --g-sub-sidebar-popmenu-hover-color: #dae9fe;
+ // 弹出菜单选中文字颜色
+ --g-sub-sidebar-popmenu-active-color: rgb(92 92 92);
/* ----- 顶栏 ----- */
--g-toolbar-bg: var(--el-bg-color);
diff --git a/src/layouts/components/Header/index.vue b/src/layouts/components/Header/index.vue
index 4a98f23..83ad8cd 100644
--- a/src/layouts/components/Header/index.vue
+++ b/src/layouts/components/Header/index.vue
@@ -31,7 +31,7 @@
-
+
{{ item.meta.title }}
@@ -136,8 +136,7 @@
display: flex;
align-items: center;
justify-content: center;
- flex-direction: column;
- padding: 10px;
+ padding: 5px;
height: auto;
cursor: pointer;
color: var(--g-header-menu-color);
@@ -150,7 +149,7 @@
}
.el-icon {
- font-size: 24px;
+ font-size: 18px;
vertical-align: middle;
}
@@ -161,6 +160,14 @@
@include text-overflow(1, false);
}
+
+ .el-icon + span {
+ margin-left: 5px;
+ }
+ }
+
+ .item + .item {
+ margin-left: 5px;
}
.round-item {
diff --git a/src/layouts/components/SidebarItem/index.vue b/src/layouts/components/SidebarItem/index.vue
index b930871..540d253 100644
--- a/src/layouts/components/SidebarItem/index.vue
+++ b/src/layouts/components/SidebarItem/index.vue
@@ -85,15 +85,15 @@
:deep(.el-sub-menu),
:deep(.el-menu-item) {
.title-icon {
- width: 20px;
- font-size: 20px;
+ width: 16px;
+ font-size: 16px;
vertical-align: -0.25em;
transition: transform 0.3s;
color: unset;
}
.title-icon + .title {
- margin-left: 10px;
+ margin-left: 5px;
}
&:hover > .title-icon,
diff --git a/src/layouts/components/SubSidebar/index.vue b/src/layouts/components/SubSidebar/index.vue
index 9fc8a18..5928469 100644
--- a/src/layouts/components/SubSidebar/index.vue
+++ b/src/layouts/components/SubSidebar/index.vue
@@ -62,7 +62,7 @@
transition: background-color 0.3s, var(--el-transition-box-shadow), left 0.3s, width 0.3s;
&.is-collapse {
- width: 64px;
+ width: 55px;
.sidebar-logo {
&:not(.sidebar-logo-bg) {
@@ -96,7 +96,7 @@
.el-menu {
border-right: 0;
- padding: 0 10px;
+ padding: 0 5px;
padding-top: var(--g-sidebar-logo-height);
padding-top: 16px !important;
transition: border-color 0.3s, background-color 0.3s, color 0.3s, padding-top 0.3s;
diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts
new file mode 100644
index 0000000..55b4d14
--- /dev/null
+++ b/src/router/modules/device.ts
@@ -0,0 +1,286 @@
+// 测量设备
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/device',
+ component: Layout,
+ redirect: '/device/bench',
+ name: 'DBench',
+ meta: {
+ title: '工作台',
+ icon: 'ep:key',
+ auth: '/device/bench',
+ },
+ children: [
+ {
+ path: '/device/bench',
+ name: 'DeviceBench',
+ component: () => import('@/views/device/bench/deviceBench.vue'),
+ meta: {
+ title: '工作台',
+ auth: '/device/bench',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/device',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standingBook',
+ component: Layout,
+ redirect: '/standingBook/measureDevice',
+ name: 'standingBook',
+ meta: {
+ title: '设备台账',
+ icon: 'ep:key',
+ auth: '/device/standingBook',
+ },
+ children: [
+ {
+ path: 'measureDevice',
+ name: 'measureDevice',
+ component: () => import('@/views/device/standingBook/measureDevice.vue'),
+ meta: {
+ title: '测量设备',
+ icon: 'ep:key',
+ auth: '/device/measureDevice',
+ },
+ },
+ {
+ path: 'adjustDevice',
+ name: 'adjustDevice',
+ component: () => import('@/views/device/standingBook/adjustDevice.vue'),
+ meta: {
+ title: '校准/检定设备',
+ icon: 'ep:key',
+ auth: '/device/adjustDevice',
+ },
+ },
+ {
+ path: 'standardMatchDevice',
+ name: 'standardMatchDevice',
+ component: () => import('@/views/device/standingBook/standardMatchDevice.vue'),
+ meta: {
+ title: '标准配套设备',
+ icon: 'ep:key',
+ auth: '/device/standardMatchDevice',
+ },
+ },
+ {
+ path: 'measureTool',
+ name: 'measureTool',
+ component: () => import('@/views/device/standingBook/measureTool.vue'),
+ meta: {
+ title: '测量工装',
+ icon: 'ep:key',
+ auth: '/device/measureTool',
+ },
+ },
+ {
+ path: 'fixedAssets',
+ name: 'fixedAssets',
+ component: () => import('@/views/device/standingBook/fixedAssets.vue'),
+ meta: {
+ title: '固定资产',
+ icon: 'ep:key',
+ auth: '/device/fixedAssets',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standard',
+ component: Layout,
+ redirect: '/standard/list',
+ name: 'Standard',
+ meta: {
+ title: '标准装置',
+ icon: 'ep:key',
+ auth: '/standardEquipment',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'standardList',
+ component: () => import('@/views/device/standardEquipment/standardList.vue'),
+ meta: {
+ title: '标准装置列表',
+ icon: 'ep:key',
+ auth: '/standard/list',
+ },
+ },
+ {
+ path: 'expirationRemind',
+ name: 'expirationRemind',
+ component: () => import('@/views/device/standardEquipment/expirationRemind.vue'),
+ meta: {
+ title: '到期提醒',
+ icon: 'ep:key',
+ auth: '/standard/expirationRemind',
+ },
+ },
+ {
+ path: 'changeApply',
+ name: 'changeApply',
+ component: () => import('@/views/device/standardEquipment/changeApply.vue'),
+ meta: {
+ title: '更换申请',
+ icon: 'ep:key',
+ auth: '/standard/changeApply',
+ },
+ },
+ {
+ path: 'pauseApply',
+ name: 'pauseApply',
+ component: () => import('@/views/device/standardEquipment/pauseApply.vue'),
+ meta: {
+ title: '暂停申请',
+ icon: 'ep:key',
+ auth: '/standard/pauseApply',
+ },
+ },
+ {
+ path: 'cancelApply',
+ name: 'cancelApply',
+ component: () => import('@/views/device/standardEquipment/cancelApply.vue'),
+ meta: {
+ title: '撤销申请',
+ icon: 'ep:key',
+ auth: '/standard/cancelApply',
+ },
+ },
+ {
+ path: 'resumeApply',
+ name: 'resumeApply',
+ component: () => import('@/views/device/standardEquipment/resumeApply.vue'),
+ meta: {
+ title: '恢复申请',
+ icon: 'ep:key',
+ auth: '/standard/resumeApply',
+ },
+ },
+ {
+ path: 'checkApply',
+ name: 'checkApply',
+ component: () => import('@/views/device/standardEquipment/checkApply.vue'),
+ meta: {
+ title: '复查申请',
+ icon: 'ep:key',
+ auth: '/standard/checkApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/stateManage',
+ component: Layout,
+ redirect: '/stateManage/unusedApply',
+ name: 'stateManage',
+ meta: {
+ title: '状态管理',
+ icon: 'ep:key',
+ auth: '/device/stateManage',
+ },
+ children: [
+ {
+ path: 'unusedApply',
+ name: 'unusedApply',
+ component: () => import('@/views/device/stateManage/unusedApply.vue'),
+ meta: {
+ title: '设备闲置申请',
+ icon: 'ep:key',
+ auth: '/device/unusedApply',
+ },
+ },
+ {
+ path: 'sealupApply',
+ name: 'sealupApply',
+ component: () => import('@/views/device/stateManage/sealupApply.vue'),
+ meta: {
+ title: '设备封存申请',
+ icon: 'ep:key',
+ auth: '/device/sealupApply',
+ },
+ },
+ {
+ path: 'openApply',
+ name: 'openApply',
+ component: () => import('@/views/device/stateManage/openApply.vue'),
+ meta: {
+ title: '设备启封申请',
+ icon: 'ep:key',
+ auth: '/device/openApply',
+ },
+ },
+ {
+ path: 'scrapApply',
+ name: 'scrapApply',
+ component: () => import('@/views/device/stateManage/scrapApply.vue'),
+ meta: {
+ title: '设备报废申请',
+ icon: 'ep:key',
+ auth: '/device/scrapApply',
+ },
+ },
+ {
+ path: 'handleApply',
+ name: 'handleApply',
+ component: () => import('@/views/device/stateManage/handleApply.vue'),
+ meta: {
+ title: '设备处置申请',
+ icon: 'ep:key',
+ auth: '/device/handleApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/maintenance',
+ component: Layout,
+ redirect: '/maintenance/maintenanceList',
+ name: 'MaintenanceManage',
+ meta: {
+ title: '设备维护',
+ icon: 'ep:key',
+ auth: '/device/maintenance',
+ },
+ children: [
+ {
+ path: 'maintenanceList',
+ name: 'maintenanceList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceList.vue'),
+ meta: {
+ title: '设备维护列表',
+ icon: 'ep:key',
+ auth: '/device/maintenanceList',
+ },
+ },
+ {
+ path: 'maintenanceCheckList',
+ name: 'maintenanceCheckList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceCheckList.vue'),
+ meta: {
+ title: '设备检修保养验收单',
+ icon: 'ep:key',
+ auth: '/device/maintenance/checkList',
+ },
+ },
+ {
+ path: 'manageCheckList',
+ name: 'manageCheckList',
+ component: () => import('@/views/device/deviceMaintenance/manageCheckList.vue'),
+ meta: {
+ title: '设备管理点检查表',
+ icon: 'ep:key',
+ auth: '/device/manage/checkList',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index fbbf7a4..4153ab5 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -4,6 +4,7 @@
import BreadcrumbExample from './modules/breadcrumb.example'
import systemRoute from './modules/system'
import measureRoute from './modules/measure'
+import deviceRoute from './modules/device'
import type { Route } from '@/global'
import useSettingsStore from '@/store/modules/settings'
@@ -132,11 +133,10 @@
meta: {
title: '测量设备',
icon: '',
- auth: 'clsb',
+ auth: '/device',
},
children: [
- MultilevelMenuExample,
- BreadcrumbExample,
+ ...deviceRoute,
],
},
{
diff --git a/src/settings.ts b/src/settings.ts
index f89a3ab..ae5c3f5 100644
--- a/src/settings.ts
+++ b/src/settings.ts
@@ -16,6 +16,7 @@
menu: {
baseOn: 'backend',
menuMode: 'head',
+ showIcon: true,
enableSubMenuCollapseButton: true,
},
toolbar: {
diff --git a/src/views/device/bench/deviceBench.vue b/src/views/device/bench/deviceBench.vue
new file mode 100644
index 0000000..9206576
--- /dev/null
+++ b/src/views/device/bench/deviceBench.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 工作台
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceCheckList.vue b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
new file mode 100644
index 0000000..84224db
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备检修保养验收单
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue
new file mode 100644
index 0000000..3c91abd
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备维护列表
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/manageCheckList.vue b/src/views/device/deviceMaintenance/manageCheckList.vue
new file mode 100644
index 0000000..a4ace73
--- /dev/null
+++ b/src/views/device/deviceMaintenance/manageCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备管理点检查表
+
+
+
+
diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue
new file mode 100644
index 0000000..c093520
--- /dev/null
+++ b/src/views/device/standardEquipment/cancelApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 撤销申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/changeApply.vue b/src/views/device/standardEquipment/changeApply.vue
new file mode 100644
index 0000000..0762330
--- /dev/null
+++ b/src/views/device/standardEquipment/changeApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 更换申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/checkApply.vue b/src/views/device/standardEquipment/checkApply.vue
new file mode 100644
index 0000000..9cadc01
--- /dev/null
+++ b/src/views/device/standardEquipment/checkApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 复查申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/expirationRemind.vue b/src/views/device/standardEquipment/expirationRemind.vue
new file mode 100644
index 0000000..e3ec8d3
--- /dev/null
+++ b/src/views/device/standardEquipment/expirationRemind.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 到期提醒
+
+
+
+
diff --git a/src/views/device/standardEquipment/pauseApply.vue b/src/views/device/standardEquipment/pauseApply.vue
new file mode 100644
index 0000000..6f2c437
--- /dev/null
+++ b/src/views/device/standardEquipment/pauseApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 暂停申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/resumeApply.vue b/src/views/device/standardEquipment/resumeApply.vue
new file mode 100644
index 0000000..d4a80e8
--- /dev/null
+++ b/src/views/device/standardEquipment/resumeApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 恢复申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/standardList.vue b/src/views/device/standardEquipment/standardList.vue
new file mode 100644
index 0000000..55e7402
--- /dev/null
+++ b/src/views/device/standardEquipment/standardList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 标准装置列表
+
+
+
+
diff --git a/src/views/device/standingBook/adjustDevice.vue b/src/views/device/standingBook/adjustDevice.vue
new file mode 100644
index 0000000..a6e1b54
--- /dev/null
+++ b/src/views/device/standingBook/adjustDevice.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 校准检定设备
+
+
+
+
diff --git a/src/views/device/standingBook/fixedAssets.vue b/src/views/device/standingBook/fixedAssets.vue
new file mode 100644
index 0000000..b9845d9
--- /dev/null
+++ b/src/views/device/standingBook/fixedAssets.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 固定资产
+
+
+
+
diff --git a/src/views/device/standingBook/measureDevice.vue b/src/views/device/standingBook/measureDevice.vue
new file mode 100644
index 0000000..3f74e89
--- /dev/null
+++ b/src/views/device/standingBook/measureDevice.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 测量设备
+
+
+
+
diff --git a/src/views/device/standingBook/measureTool.vue b/src/views/device/standingBook/measureTool.vue
new file mode 100644
index 0000000..5a2f8d3
--- /dev/null
+++ b/src/views/device/standingBook/measureTool.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 测量工装
+
+
+
+
diff --git a/src/views/device/standingBook/standardMatchDevice.vue b/src/views/device/standingBook/standardMatchDevice.vue
new file mode 100644
index 0000000..8faef3a
--- /dev/null
+++ b/src/views/device/standingBook/standardMatchDevice.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 标准配套设备
+
+
+
+
diff --git a/src/views/device/stateManage/handleApply.vue b/src/views/device/stateManage/handleApply.vue
new file mode 100644
index 0000000..fb5897e
--- /dev/null
+++ b/src/views/device/stateManage/handleApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备处置申请
+
+
+
+
diff --git a/src/views/device/stateManage/openApply.vue b/src/views/device/stateManage/openApply.vue
new file mode 100644
index 0000000..3c43781
--- /dev/null
+++ b/src/views/device/stateManage/openApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备启封申请
+
+
+
+
diff --git a/src/App.vue b/src/App.vue
index 8624b4c..52ccd6e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,7 +27,7 @@
actualWidth = 0
}
else if (settingsStore.menu.subMenuCollapse) {
- actualWidth = 64
+ actualWidth = 55
}
return `${actualWidth}px`
})
diff --git a/src/assets/icons/icon-setting.svg b/src/assets/icons/icon-setting.svg
new file mode 100644
index 0000000..33353f0
--- /dev/null
+++ b/src/assets/icons/icon-setting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/next_level.png b/src/assets/images/next_level.png
new file mode 100644
index 0000000..53d2837
--- /dev/null
+++ b/src/assets/images/next_level.png
Binary files differ
diff --git a/src/assets/images/next_level_active.png b/src/assets/images/next_level_active.png
new file mode 100644
index 0000000..1a52ae8
--- /dev/null
+++ b/src/assets/images/next_level_active.png
Binary files differ
diff --git a/src/assets/styles/element-plus/index.scss b/src/assets/styles/element-plus/index.scss
index 3b53223..6dc95ed 100644
--- a/src/assets/styles/element-plus/index.scss
+++ b/src/assets/styles/element-plus/index.scss
@@ -7,6 +7,10 @@
$table:(
"header-bg-color":#f2f6ff,
"header-text-color":#444c59
+ ),
+ $menu:(
+ "base-level-padding": 15px,
+ "level-padding": 10px
)
);
@use "element-plus/theme-chalk/src/index.scss" as *;
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 4565a0f..938efd4 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -6,7 +6,7 @@
// 头部宽度(默认自适应宽度,可固定宽度,固定宽度后为居中显示)
--g-header-width: 100%;
// 头部高度
- --g-header-height: 67px;
+ --g-header-height: 60px;
// 侧边栏宽度
--g-main-sidebar-width: 70px;
--g-sub-sidebar-width: 180px;
@@ -91,3 +91,20 @@
.el-cascader.full-width-input {
width: 100% !important;
}
+
+.el-menu--popup {
+ color: var(--g-sub-sidebar-popmenu-bg);
+
+ .sidebar-item {
+ .el-menu-item,
+ .el-sub-menu__title {
+ color: var(--g-sub-sidebar-popmenu-color) !important;
+ }
+
+ .el-menu-item:hover,
+ .el-sub-menu__title:hover {
+ color: var(--g-sub-sidebar-popmenu-active-color) !important;
+ background-color: var(--g-sub-sidebar-popmenu-hover-color) !important;
+ }
+ }
+}
diff --git a/src/assets/styles/themes.scss b/src/assets/styles/themes.scss
index 47da1fb..418dc62 100644
--- a/src/assets/styles/themes.scss
+++ b/src/assets/styles/themes.scss
@@ -52,6 +52,14 @@
--g-sub-sidebar-menu-active-color: #3d7eff;
// 菜单选中背景色
--g-sub-sidebar-menu-active-bg: #dae9fe;
+ // 弹出菜单背景色
+ --g-sub-sidebar-popmenu-bg: #fff;
+ // 弹出菜单文字颜色
+ --g-sub-sidebar-popmenu-color: rgb(92 92 92);
+ // 弹出菜单鼠标悬浮文字颜色
+ --g-sub-sidebar-popmenu-hover-color: #dae9fe;
+ // 弹出菜单选中文字颜色
+ --g-sub-sidebar-popmenu-active-color: rgb(92 92 92);
/* ----- 顶栏 ----- */
--g-toolbar-bg: var(--el-bg-color);
diff --git a/src/layouts/components/Header/index.vue b/src/layouts/components/Header/index.vue
index 4a98f23..83ad8cd 100644
--- a/src/layouts/components/Header/index.vue
+++ b/src/layouts/components/Header/index.vue
@@ -31,7 +31,7 @@
-
+
{{ item.meta.title }}
@@ -136,8 +136,7 @@
display: flex;
align-items: center;
justify-content: center;
- flex-direction: column;
- padding: 10px;
+ padding: 5px;
height: auto;
cursor: pointer;
color: var(--g-header-menu-color);
@@ -150,7 +149,7 @@
}
.el-icon {
- font-size: 24px;
+ font-size: 18px;
vertical-align: middle;
}
@@ -161,6 +160,14 @@
@include text-overflow(1, false);
}
+
+ .el-icon + span {
+ margin-left: 5px;
+ }
+ }
+
+ .item + .item {
+ margin-left: 5px;
}
.round-item {
diff --git a/src/layouts/components/SidebarItem/index.vue b/src/layouts/components/SidebarItem/index.vue
index b930871..540d253 100644
--- a/src/layouts/components/SidebarItem/index.vue
+++ b/src/layouts/components/SidebarItem/index.vue
@@ -85,15 +85,15 @@
:deep(.el-sub-menu),
:deep(.el-menu-item) {
.title-icon {
- width: 20px;
- font-size: 20px;
+ width: 16px;
+ font-size: 16px;
vertical-align: -0.25em;
transition: transform 0.3s;
color: unset;
}
.title-icon + .title {
- margin-left: 10px;
+ margin-left: 5px;
}
&:hover > .title-icon,
diff --git a/src/layouts/components/SubSidebar/index.vue b/src/layouts/components/SubSidebar/index.vue
index 9fc8a18..5928469 100644
--- a/src/layouts/components/SubSidebar/index.vue
+++ b/src/layouts/components/SubSidebar/index.vue
@@ -62,7 +62,7 @@
transition: background-color 0.3s, var(--el-transition-box-shadow), left 0.3s, width 0.3s;
&.is-collapse {
- width: 64px;
+ width: 55px;
.sidebar-logo {
&:not(.sidebar-logo-bg) {
@@ -96,7 +96,7 @@
.el-menu {
border-right: 0;
- padding: 0 10px;
+ padding: 0 5px;
padding-top: var(--g-sidebar-logo-height);
padding-top: 16px !important;
transition: border-color 0.3s, background-color 0.3s, color 0.3s, padding-top 0.3s;
diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts
new file mode 100644
index 0000000..55b4d14
--- /dev/null
+++ b/src/router/modules/device.ts
@@ -0,0 +1,286 @@
+// 测量设备
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/device',
+ component: Layout,
+ redirect: '/device/bench',
+ name: 'DBench',
+ meta: {
+ title: '工作台',
+ icon: 'ep:key',
+ auth: '/device/bench',
+ },
+ children: [
+ {
+ path: '/device/bench',
+ name: 'DeviceBench',
+ component: () => import('@/views/device/bench/deviceBench.vue'),
+ meta: {
+ title: '工作台',
+ auth: '/device/bench',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/device',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standingBook',
+ component: Layout,
+ redirect: '/standingBook/measureDevice',
+ name: 'standingBook',
+ meta: {
+ title: '设备台账',
+ icon: 'ep:key',
+ auth: '/device/standingBook',
+ },
+ children: [
+ {
+ path: 'measureDevice',
+ name: 'measureDevice',
+ component: () => import('@/views/device/standingBook/measureDevice.vue'),
+ meta: {
+ title: '测量设备',
+ icon: 'ep:key',
+ auth: '/device/measureDevice',
+ },
+ },
+ {
+ path: 'adjustDevice',
+ name: 'adjustDevice',
+ component: () => import('@/views/device/standingBook/adjustDevice.vue'),
+ meta: {
+ title: '校准/检定设备',
+ icon: 'ep:key',
+ auth: '/device/adjustDevice',
+ },
+ },
+ {
+ path: 'standardMatchDevice',
+ name: 'standardMatchDevice',
+ component: () => import('@/views/device/standingBook/standardMatchDevice.vue'),
+ meta: {
+ title: '标准配套设备',
+ icon: 'ep:key',
+ auth: '/device/standardMatchDevice',
+ },
+ },
+ {
+ path: 'measureTool',
+ name: 'measureTool',
+ component: () => import('@/views/device/standingBook/measureTool.vue'),
+ meta: {
+ title: '测量工装',
+ icon: 'ep:key',
+ auth: '/device/measureTool',
+ },
+ },
+ {
+ path: 'fixedAssets',
+ name: 'fixedAssets',
+ component: () => import('@/views/device/standingBook/fixedAssets.vue'),
+ meta: {
+ title: '固定资产',
+ icon: 'ep:key',
+ auth: '/device/fixedAssets',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standard',
+ component: Layout,
+ redirect: '/standard/list',
+ name: 'Standard',
+ meta: {
+ title: '标准装置',
+ icon: 'ep:key',
+ auth: '/standardEquipment',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'standardList',
+ component: () => import('@/views/device/standardEquipment/standardList.vue'),
+ meta: {
+ title: '标准装置列表',
+ icon: 'ep:key',
+ auth: '/standard/list',
+ },
+ },
+ {
+ path: 'expirationRemind',
+ name: 'expirationRemind',
+ component: () => import('@/views/device/standardEquipment/expirationRemind.vue'),
+ meta: {
+ title: '到期提醒',
+ icon: 'ep:key',
+ auth: '/standard/expirationRemind',
+ },
+ },
+ {
+ path: 'changeApply',
+ name: 'changeApply',
+ component: () => import('@/views/device/standardEquipment/changeApply.vue'),
+ meta: {
+ title: '更换申请',
+ icon: 'ep:key',
+ auth: '/standard/changeApply',
+ },
+ },
+ {
+ path: 'pauseApply',
+ name: 'pauseApply',
+ component: () => import('@/views/device/standardEquipment/pauseApply.vue'),
+ meta: {
+ title: '暂停申请',
+ icon: 'ep:key',
+ auth: '/standard/pauseApply',
+ },
+ },
+ {
+ path: 'cancelApply',
+ name: 'cancelApply',
+ component: () => import('@/views/device/standardEquipment/cancelApply.vue'),
+ meta: {
+ title: '撤销申请',
+ icon: 'ep:key',
+ auth: '/standard/cancelApply',
+ },
+ },
+ {
+ path: 'resumeApply',
+ name: 'resumeApply',
+ component: () => import('@/views/device/standardEquipment/resumeApply.vue'),
+ meta: {
+ title: '恢复申请',
+ icon: 'ep:key',
+ auth: '/standard/resumeApply',
+ },
+ },
+ {
+ path: 'checkApply',
+ name: 'checkApply',
+ component: () => import('@/views/device/standardEquipment/checkApply.vue'),
+ meta: {
+ title: '复查申请',
+ icon: 'ep:key',
+ auth: '/standard/checkApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/stateManage',
+ component: Layout,
+ redirect: '/stateManage/unusedApply',
+ name: 'stateManage',
+ meta: {
+ title: '状态管理',
+ icon: 'ep:key',
+ auth: '/device/stateManage',
+ },
+ children: [
+ {
+ path: 'unusedApply',
+ name: 'unusedApply',
+ component: () => import('@/views/device/stateManage/unusedApply.vue'),
+ meta: {
+ title: '设备闲置申请',
+ icon: 'ep:key',
+ auth: '/device/unusedApply',
+ },
+ },
+ {
+ path: 'sealupApply',
+ name: 'sealupApply',
+ component: () => import('@/views/device/stateManage/sealupApply.vue'),
+ meta: {
+ title: '设备封存申请',
+ icon: 'ep:key',
+ auth: '/device/sealupApply',
+ },
+ },
+ {
+ path: 'openApply',
+ name: 'openApply',
+ component: () => import('@/views/device/stateManage/openApply.vue'),
+ meta: {
+ title: '设备启封申请',
+ icon: 'ep:key',
+ auth: '/device/openApply',
+ },
+ },
+ {
+ path: 'scrapApply',
+ name: 'scrapApply',
+ component: () => import('@/views/device/stateManage/scrapApply.vue'),
+ meta: {
+ title: '设备报废申请',
+ icon: 'ep:key',
+ auth: '/device/scrapApply',
+ },
+ },
+ {
+ path: 'handleApply',
+ name: 'handleApply',
+ component: () => import('@/views/device/stateManage/handleApply.vue'),
+ meta: {
+ title: '设备处置申请',
+ icon: 'ep:key',
+ auth: '/device/handleApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/maintenance',
+ component: Layout,
+ redirect: '/maintenance/maintenanceList',
+ name: 'MaintenanceManage',
+ meta: {
+ title: '设备维护',
+ icon: 'ep:key',
+ auth: '/device/maintenance',
+ },
+ children: [
+ {
+ path: 'maintenanceList',
+ name: 'maintenanceList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceList.vue'),
+ meta: {
+ title: '设备维护列表',
+ icon: 'ep:key',
+ auth: '/device/maintenanceList',
+ },
+ },
+ {
+ path: 'maintenanceCheckList',
+ name: 'maintenanceCheckList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceCheckList.vue'),
+ meta: {
+ title: '设备检修保养验收单',
+ icon: 'ep:key',
+ auth: '/device/maintenance/checkList',
+ },
+ },
+ {
+ path: 'manageCheckList',
+ name: 'manageCheckList',
+ component: () => import('@/views/device/deviceMaintenance/manageCheckList.vue'),
+ meta: {
+ title: '设备管理点检查表',
+ icon: 'ep:key',
+ auth: '/device/manage/checkList',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index fbbf7a4..4153ab5 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -4,6 +4,7 @@
import BreadcrumbExample from './modules/breadcrumb.example'
import systemRoute from './modules/system'
import measureRoute from './modules/measure'
+import deviceRoute from './modules/device'
import type { Route } from '@/global'
import useSettingsStore from '@/store/modules/settings'
@@ -132,11 +133,10 @@
meta: {
title: '测量设备',
icon: '',
- auth: 'clsb',
+ auth: '/device',
},
children: [
- MultilevelMenuExample,
- BreadcrumbExample,
+ ...deviceRoute,
],
},
{
diff --git a/src/settings.ts b/src/settings.ts
index f89a3ab..ae5c3f5 100644
--- a/src/settings.ts
+++ b/src/settings.ts
@@ -16,6 +16,7 @@
menu: {
baseOn: 'backend',
menuMode: 'head',
+ showIcon: true,
enableSubMenuCollapseButton: true,
},
toolbar: {
diff --git a/src/views/device/bench/deviceBench.vue b/src/views/device/bench/deviceBench.vue
new file mode 100644
index 0000000..9206576
--- /dev/null
+++ b/src/views/device/bench/deviceBench.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 工作台
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceCheckList.vue b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
new file mode 100644
index 0000000..84224db
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备检修保养验收单
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue
new file mode 100644
index 0000000..3c91abd
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备维护列表
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/manageCheckList.vue b/src/views/device/deviceMaintenance/manageCheckList.vue
new file mode 100644
index 0000000..a4ace73
--- /dev/null
+++ b/src/views/device/deviceMaintenance/manageCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备管理点检查表
+
+
+
+
diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue
new file mode 100644
index 0000000..c093520
--- /dev/null
+++ b/src/views/device/standardEquipment/cancelApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 撤销申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/changeApply.vue b/src/views/device/standardEquipment/changeApply.vue
new file mode 100644
index 0000000..0762330
--- /dev/null
+++ b/src/views/device/standardEquipment/changeApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 更换申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/checkApply.vue b/src/views/device/standardEquipment/checkApply.vue
new file mode 100644
index 0000000..9cadc01
--- /dev/null
+++ b/src/views/device/standardEquipment/checkApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 复查申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/expirationRemind.vue b/src/views/device/standardEquipment/expirationRemind.vue
new file mode 100644
index 0000000..e3ec8d3
--- /dev/null
+++ b/src/views/device/standardEquipment/expirationRemind.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 到期提醒
+
+
+
+
diff --git a/src/views/device/standardEquipment/pauseApply.vue b/src/views/device/standardEquipment/pauseApply.vue
new file mode 100644
index 0000000..6f2c437
--- /dev/null
+++ b/src/views/device/standardEquipment/pauseApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 暂停申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/resumeApply.vue b/src/views/device/standardEquipment/resumeApply.vue
new file mode 100644
index 0000000..d4a80e8
--- /dev/null
+++ b/src/views/device/standardEquipment/resumeApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 恢复申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/standardList.vue b/src/views/device/standardEquipment/standardList.vue
new file mode 100644
index 0000000..55e7402
--- /dev/null
+++ b/src/views/device/standardEquipment/standardList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 标准装置列表
+
+
+
+
diff --git a/src/views/device/standingBook/adjustDevice.vue b/src/views/device/standingBook/adjustDevice.vue
new file mode 100644
index 0000000..a6e1b54
--- /dev/null
+++ b/src/views/device/standingBook/adjustDevice.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 校准检定设备
+
+
+
+
diff --git a/src/views/device/standingBook/fixedAssets.vue b/src/views/device/standingBook/fixedAssets.vue
new file mode 100644
index 0000000..b9845d9
--- /dev/null
+++ b/src/views/device/standingBook/fixedAssets.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 固定资产
+
+
+
+
diff --git a/src/views/device/standingBook/measureDevice.vue b/src/views/device/standingBook/measureDevice.vue
new file mode 100644
index 0000000..3f74e89
--- /dev/null
+++ b/src/views/device/standingBook/measureDevice.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 测量设备
+
+
+
+
diff --git a/src/views/device/standingBook/measureTool.vue b/src/views/device/standingBook/measureTool.vue
new file mode 100644
index 0000000..5a2f8d3
--- /dev/null
+++ b/src/views/device/standingBook/measureTool.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 测量工装
+
+
+
+
diff --git a/src/views/device/standingBook/standardMatchDevice.vue b/src/views/device/standingBook/standardMatchDevice.vue
new file mode 100644
index 0000000..8faef3a
--- /dev/null
+++ b/src/views/device/standingBook/standardMatchDevice.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 标准配套设备
+
+
+
+
diff --git a/src/views/device/stateManage/handleApply.vue b/src/views/device/stateManage/handleApply.vue
new file mode 100644
index 0000000..fb5897e
--- /dev/null
+++ b/src/views/device/stateManage/handleApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备处置申请
+
+
+
+
diff --git a/src/views/device/stateManage/openApply.vue b/src/views/device/stateManage/openApply.vue
new file mode 100644
index 0000000..3c43781
--- /dev/null
+++ b/src/views/device/stateManage/openApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备启封申请
+
+
+
+
diff --git a/src/views/device/stateManage/scrapApply.vue b/src/views/device/stateManage/scrapApply.vue
new file mode 100644
index 0000000..7bd1a98
--- /dev/null
+++ b/src/views/device/stateManage/scrapApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备报废申请
+
+
+
+
diff --git a/src/App.vue b/src/App.vue
index 8624b4c..52ccd6e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,7 +27,7 @@
actualWidth = 0
}
else if (settingsStore.menu.subMenuCollapse) {
- actualWidth = 64
+ actualWidth = 55
}
return `${actualWidth}px`
})
diff --git a/src/assets/icons/icon-setting.svg b/src/assets/icons/icon-setting.svg
new file mode 100644
index 0000000..33353f0
--- /dev/null
+++ b/src/assets/icons/icon-setting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/next_level.png b/src/assets/images/next_level.png
new file mode 100644
index 0000000..53d2837
--- /dev/null
+++ b/src/assets/images/next_level.png
Binary files differ
diff --git a/src/assets/images/next_level_active.png b/src/assets/images/next_level_active.png
new file mode 100644
index 0000000..1a52ae8
--- /dev/null
+++ b/src/assets/images/next_level_active.png
Binary files differ
diff --git a/src/assets/styles/element-plus/index.scss b/src/assets/styles/element-plus/index.scss
index 3b53223..6dc95ed 100644
--- a/src/assets/styles/element-plus/index.scss
+++ b/src/assets/styles/element-plus/index.scss
@@ -7,6 +7,10 @@
$table:(
"header-bg-color":#f2f6ff,
"header-text-color":#444c59
+ ),
+ $menu:(
+ "base-level-padding": 15px,
+ "level-padding": 10px
)
);
@use "element-plus/theme-chalk/src/index.scss" as *;
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 4565a0f..938efd4 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -6,7 +6,7 @@
// 头部宽度(默认自适应宽度,可固定宽度,固定宽度后为居中显示)
--g-header-width: 100%;
// 头部高度
- --g-header-height: 67px;
+ --g-header-height: 60px;
// 侧边栏宽度
--g-main-sidebar-width: 70px;
--g-sub-sidebar-width: 180px;
@@ -91,3 +91,20 @@
.el-cascader.full-width-input {
width: 100% !important;
}
+
+.el-menu--popup {
+ color: var(--g-sub-sidebar-popmenu-bg);
+
+ .sidebar-item {
+ .el-menu-item,
+ .el-sub-menu__title {
+ color: var(--g-sub-sidebar-popmenu-color) !important;
+ }
+
+ .el-menu-item:hover,
+ .el-sub-menu__title:hover {
+ color: var(--g-sub-sidebar-popmenu-active-color) !important;
+ background-color: var(--g-sub-sidebar-popmenu-hover-color) !important;
+ }
+ }
+}
diff --git a/src/assets/styles/themes.scss b/src/assets/styles/themes.scss
index 47da1fb..418dc62 100644
--- a/src/assets/styles/themes.scss
+++ b/src/assets/styles/themes.scss
@@ -52,6 +52,14 @@
--g-sub-sidebar-menu-active-color: #3d7eff;
// 菜单选中背景色
--g-sub-sidebar-menu-active-bg: #dae9fe;
+ // 弹出菜单背景色
+ --g-sub-sidebar-popmenu-bg: #fff;
+ // 弹出菜单文字颜色
+ --g-sub-sidebar-popmenu-color: rgb(92 92 92);
+ // 弹出菜单鼠标悬浮文字颜色
+ --g-sub-sidebar-popmenu-hover-color: #dae9fe;
+ // 弹出菜单选中文字颜色
+ --g-sub-sidebar-popmenu-active-color: rgb(92 92 92);
/* ----- 顶栏 ----- */
--g-toolbar-bg: var(--el-bg-color);
diff --git a/src/layouts/components/Header/index.vue b/src/layouts/components/Header/index.vue
index 4a98f23..83ad8cd 100644
--- a/src/layouts/components/Header/index.vue
+++ b/src/layouts/components/Header/index.vue
@@ -31,7 +31,7 @@
-
+
{{ item.meta.title }}
@@ -136,8 +136,7 @@
display: flex;
align-items: center;
justify-content: center;
- flex-direction: column;
- padding: 10px;
+ padding: 5px;
height: auto;
cursor: pointer;
color: var(--g-header-menu-color);
@@ -150,7 +149,7 @@
}
.el-icon {
- font-size: 24px;
+ font-size: 18px;
vertical-align: middle;
}
@@ -161,6 +160,14 @@
@include text-overflow(1, false);
}
+
+ .el-icon + span {
+ margin-left: 5px;
+ }
+ }
+
+ .item + .item {
+ margin-left: 5px;
}
.round-item {
diff --git a/src/layouts/components/SidebarItem/index.vue b/src/layouts/components/SidebarItem/index.vue
index b930871..540d253 100644
--- a/src/layouts/components/SidebarItem/index.vue
+++ b/src/layouts/components/SidebarItem/index.vue
@@ -85,15 +85,15 @@
:deep(.el-sub-menu),
:deep(.el-menu-item) {
.title-icon {
- width: 20px;
- font-size: 20px;
+ width: 16px;
+ font-size: 16px;
vertical-align: -0.25em;
transition: transform 0.3s;
color: unset;
}
.title-icon + .title {
- margin-left: 10px;
+ margin-left: 5px;
}
&:hover > .title-icon,
diff --git a/src/layouts/components/SubSidebar/index.vue b/src/layouts/components/SubSidebar/index.vue
index 9fc8a18..5928469 100644
--- a/src/layouts/components/SubSidebar/index.vue
+++ b/src/layouts/components/SubSidebar/index.vue
@@ -62,7 +62,7 @@
transition: background-color 0.3s, var(--el-transition-box-shadow), left 0.3s, width 0.3s;
&.is-collapse {
- width: 64px;
+ width: 55px;
.sidebar-logo {
&:not(.sidebar-logo-bg) {
@@ -96,7 +96,7 @@
.el-menu {
border-right: 0;
- padding: 0 10px;
+ padding: 0 5px;
padding-top: var(--g-sidebar-logo-height);
padding-top: 16px !important;
transition: border-color 0.3s, background-color 0.3s, color 0.3s, padding-top 0.3s;
diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts
new file mode 100644
index 0000000..55b4d14
--- /dev/null
+++ b/src/router/modules/device.ts
@@ -0,0 +1,286 @@
+// 测量设备
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/device',
+ component: Layout,
+ redirect: '/device/bench',
+ name: 'DBench',
+ meta: {
+ title: '工作台',
+ icon: 'ep:key',
+ auth: '/device/bench',
+ },
+ children: [
+ {
+ path: '/device/bench',
+ name: 'DeviceBench',
+ component: () => import('@/views/device/bench/deviceBench.vue'),
+ meta: {
+ title: '工作台',
+ auth: '/device/bench',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/device',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standingBook',
+ component: Layout,
+ redirect: '/standingBook/measureDevice',
+ name: 'standingBook',
+ meta: {
+ title: '设备台账',
+ icon: 'ep:key',
+ auth: '/device/standingBook',
+ },
+ children: [
+ {
+ path: 'measureDevice',
+ name: 'measureDevice',
+ component: () => import('@/views/device/standingBook/measureDevice.vue'),
+ meta: {
+ title: '测量设备',
+ icon: 'ep:key',
+ auth: '/device/measureDevice',
+ },
+ },
+ {
+ path: 'adjustDevice',
+ name: 'adjustDevice',
+ component: () => import('@/views/device/standingBook/adjustDevice.vue'),
+ meta: {
+ title: '校准/检定设备',
+ icon: 'ep:key',
+ auth: '/device/adjustDevice',
+ },
+ },
+ {
+ path: 'standardMatchDevice',
+ name: 'standardMatchDevice',
+ component: () => import('@/views/device/standingBook/standardMatchDevice.vue'),
+ meta: {
+ title: '标准配套设备',
+ icon: 'ep:key',
+ auth: '/device/standardMatchDevice',
+ },
+ },
+ {
+ path: 'measureTool',
+ name: 'measureTool',
+ component: () => import('@/views/device/standingBook/measureTool.vue'),
+ meta: {
+ title: '测量工装',
+ icon: 'ep:key',
+ auth: '/device/measureTool',
+ },
+ },
+ {
+ path: 'fixedAssets',
+ name: 'fixedAssets',
+ component: () => import('@/views/device/standingBook/fixedAssets.vue'),
+ meta: {
+ title: '固定资产',
+ icon: 'ep:key',
+ auth: '/device/fixedAssets',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standard',
+ component: Layout,
+ redirect: '/standard/list',
+ name: 'Standard',
+ meta: {
+ title: '标准装置',
+ icon: 'ep:key',
+ auth: '/standardEquipment',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'standardList',
+ component: () => import('@/views/device/standardEquipment/standardList.vue'),
+ meta: {
+ title: '标准装置列表',
+ icon: 'ep:key',
+ auth: '/standard/list',
+ },
+ },
+ {
+ path: 'expirationRemind',
+ name: 'expirationRemind',
+ component: () => import('@/views/device/standardEquipment/expirationRemind.vue'),
+ meta: {
+ title: '到期提醒',
+ icon: 'ep:key',
+ auth: '/standard/expirationRemind',
+ },
+ },
+ {
+ path: 'changeApply',
+ name: 'changeApply',
+ component: () => import('@/views/device/standardEquipment/changeApply.vue'),
+ meta: {
+ title: '更换申请',
+ icon: 'ep:key',
+ auth: '/standard/changeApply',
+ },
+ },
+ {
+ path: 'pauseApply',
+ name: 'pauseApply',
+ component: () => import('@/views/device/standardEquipment/pauseApply.vue'),
+ meta: {
+ title: '暂停申请',
+ icon: 'ep:key',
+ auth: '/standard/pauseApply',
+ },
+ },
+ {
+ path: 'cancelApply',
+ name: 'cancelApply',
+ component: () => import('@/views/device/standardEquipment/cancelApply.vue'),
+ meta: {
+ title: '撤销申请',
+ icon: 'ep:key',
+ auth: '/standard/cancelApply',
+ },
+ },
+ {
+ path: 'resumeApply',
+ name: 'resumeApply',
+ component: () => import('@/views/device/standardEquipment/resumeApply.vue'),
+ meta: {
+ title: '恢复申请',
+ icon: 'ep:key',
+ auth: '/standard/resumeApply',
+ },
+ },
+ {
+ path: 'checkApply',
+ name: 'checkApply',
+ component: () => import('@/views/device/standardEquipment/checkApply.vue'),
+ meta: {
+ title: '复查申请',
+ icon: 'ep:key',
+ auth: '/standard/checkApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/stateManage',
+ component: Layout,
+ redirect: '/stateManage/unusedApply',
+ name: 'stateManage',
+ meta: {
+ title: '状态管理',
+ icon: 'ep:key',
+ auth: '/device/stateManage',
+ },
+ children: [
+ {
+ path: 'unusedApply',
+ name: 'unusedApply',
+ component: () => import('@/views/device/stateManage/unusedApply.vue'),
+ meta: {
+ title: '设备闲置申请',
+ icon: 'ep:key',
+ auth: '/device/unusedApply',
+ },
+ },
+ {
+ path: 'sealupApply',
+ name: 'sealupApply',
+ component: () => import('@/views/device/stateManage/sealupApply.vue'),
+ meta: {
+ title: '设备封存申请',
+ icon: 'ep:key',
+ auth: '/device/sealupApply',
+ },
+ },
+ {
+ path: 'openApply',
+ name: 'openApply',
+ component: () => import('@/views/device/stateManage/openApply.vue'),
+ meta: {
+ title: '设备启封申请',
+ icon: 'ep:key',
+ auth: '/device/openApply',
+ },
+ },
+ {
+ path: 'scrapApply',
+ name: 'scrapApply',
+ component: () => import('@/views/device/stateManage/scrapApply.vue'),
+ meta: {
+ title: '设备报废申请',
+ icon: 'ep:key',
+ auth: '/device/scrapApply',
+ },
+ },
+ {
+ path: 'handleApply',
+ name: 'handleApply',
+ component: () => import('@/views/device/stateManage/handleApply.vue'),
+ meta: {
+ title: '设备处置申请',
+ icon: 'ep:key',
+ auth: '/device/handleApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/maintenance',
+ component: Layout,
+ redirect: '/maintenance/maintenanceList',
+ name: 'MaintenanceManage',
+ meta: {
+ title: '设备维护',
+ icon: 'ep:key',
+ auth: '/device/maintenance',
+ },
+ children: [
+ {
+ path: 'maintenanceList',
+ name: 'maintenanceList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceList.vue'),
+ meta: {
+ title: '设备维护列表',
+ icon: 'ep:key',
+ auth: '/device/maintenanceList',
+ },
+ },
+ {
+ path: 'maintenanceCheckList',
+ name: 'maintenanceCheckList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceCheckList.vue'),
+ meta: {
+ title: '设备检修保养验收单',
+ icon: 'ep:key',
+ auth: '/device/maintenance/checkList',
+ },
+ },
+ {
+ path: 'manageCheckList',
+ name: 'manageCheckList',
+ component: () => import('@/views/device/deviceMaintenance/manageCheckList.vue'),
+ meta: {
+ title: '设备管理点检查表',
+ icon: 'ep:key',
+ auth: '/device/manage/checkList',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index fbbf7a4..4153ab5 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -4,6 +4,7 @@
import BreadcrumbExample from './modules/breadcrumb.example'
import systemRoute from './modules/system'
import measureRoute from './modules/measure'
+import deviceRoute from './modules/device'
import type { Route } from '@/global'
import useSettingsStore from '@/store/modules/settings'
@@ -132,11 +133,10 @@
meta: {
title: '测量设备',
icon: '',
- auth: 'clsb',
+ auth: '/device',
},
children: [
- MultilevelMenuExample,
- BreadcrumbExample,
+ ...deviceRoute,
],
},
{
diff --git a/src/settings.ts b/src/settings.ts
index f89a3ab..ae5c3f5 100644
--- a/src/settings.ts
+++ b/src/settings.ts
@@ -16,6 +16,7 @@
menu: {
baseOn: 'backend',
menuMode: 'head',
+ showIcon: true,
enableSubMenuCollapseButton: true,
},
toolbar: {
diff --git a/src/views/device/bench/deviceBench.vue b/src/views/device/bench/deviceBench.vue
new file mode 100644
index 0000000..9206576
--- /dev/null
+++ b/src/views/device/bench/deviceBench.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 工作台
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceCheckList.vue b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
new file mode 100644
index 0000000..84224db
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备检修保养验收单
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue
new file mode 100644
index 0000000..3c91abd
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备维护列表
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/manageCheckList.vue b/src/views/device/deviceMaintenance/manageCheckList.vue
new file mode 100644
index 0000000..a4ace73
--- /dev/null
+++ b/src/views/device/deviceMaintenance/manageCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备管理点检查表
+
+
+
+
diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue
new file mode 100644
index 0000000..c093520
--- /dev/null
+++ b/src/views/device/standardEquipment/cancelApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 撤销申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/changeApply.vue b/src/views/device/standardEquipment/changeApply.vue
new file mode 100644
index 0000000..0762330
--- /dev/null
+++ b/src/views/device/standardEquipment/changeApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 更换申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/checkApply.vue b/src/views/device/standardEquipment/checkApply.vue
new file mode 100644
index 0000000..9cadc01
--- /dev/null
+++ b/src/views/device/standardEquipment/checkApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 复查申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/expirationRemind.vue b/src/views/device/standardEquipment/expirationRemind.vue
new file mode 100644
index 0000000..e3ec8d3
--- /dev/null
+++ b/src/views/device/standardEquipment/expirationRemind.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 到期提醒
+
+
+
+
diff --git a/src/views/device/standardEquipment/pauseApply.vue b/src/views/device/standardEquipment/pauseApply.vue
new file mode 100644
index 0000000..6f2c437
--- /dev/null
+++ b/src/views/device/standardEquipment/pauseApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 暂停申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/resumeApply.vue b/src/views/device/standardEquipment/resumeApply.vue
new file mode 100644
index 0000000..d4a80e8
--- /dev/null
+++ b/src/views/device/standardEquipment/resumeApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 恢复申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/standardList.vue b/src/views/device/standardEquipment/standardList.vue
new file mode 100644
index 0000000..55e7402
--- /dev/null
+++ b/src/views/device/standardEquipment/standardList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 标准装置列表
+
+
+
+
diff --git a/src/views/device/standingBook/adjustDevice.vue b/src/views/device/standingBook/adjustDevice.vue
new file mode 100644
index 0000000..a6e1b54
--- /dev/null
+++ b/src/views/device/standingBook/adjustDevice.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 校准检定设备
+
+
+
+
diff --git a/src/views/device/standingBook/fixedAssets.vue b/src/views/device/standingBook/fixedAssets.vue
new file mode 100644
index 0000000..b9845d9
--- /dev/null
+++ b/src/views/device/standingBook/fixedAssets.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 固定资产
+
+
+
+
diff --git a/src/views/device/standingBook/measureDevice.vue b/src/views/device/standingBook/measureDevice.vue
new file mode 100644
index 0000000..3f74e89
--- /dev/null
+++ b/src/views/device/standingBook/measureDevice.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 测量设备
+
+
+
+
diff --git a/src/views/device/standingBook/measureTool.vue b/src/views/device/standingBook/measureTool.vue
new file mode 100644
index 0000000..5a2f8d3
--- /dev/null
+++ b/src/views/device/standingBook/measureTool.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 测量工装
+
+
+
+
diff --git a/src/views/device/standingBook/standardMatchDevice.vue b/src/views/device/standingBook/standardMatchDevice.vue
new file mode 100644
index 0000000..8faef3a
--- /dev/null
+++ b/src/views/device/standingBook/standardMatchDevice.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 标准配套设备
+
+
+
+
diff --git a/src/views/device/stateManage/handleApply.vue b/src/views/device/stateManage/handleApply.vue
new file mode 100644
index 0000000..fb5897e
--- /dev/null
+++ b/src/views/device/stateManage/handleApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备处置申请
+
+
+
+
diff --git a/src/views/device/stateManage/openApply.vue b/src/views/device/stateManage/openApply.vue
new file mode 100644
index 0000000..3c43781
--- /dev/null
+++ b/src/views/device/stateManage/openApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备启封申请
+
+
+
+
diff --git a/src/views/device/stateManage/scrapApply.vue b/src/views/device/stateManage/scrapApply.vue
new file mode 100644
index 0000000..7bd1a98
--- /dev/null
+++ b/src/views/device/stateManage/scrapApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备报废申请
+
+
+
+
diff --git a/src/views/device/stateManage/sealupApply.vue b/src/views/device/stateManage/sealupApply.vue
new file mode 100644
index 0000000..ec6320b
--- /dev/null
+++ b/src/views/device/stateManage/sealupApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备封存申请
+
+
+
+
diff --git a/src/App.vue b/src/App.vue
index 8624b4c..52ccd6e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,7 +27,7 @@
actualWidth = 0
}
else if (settingsStore.menu.subMenuCollapse) {
- actualWidth = 64
+ actualWidth = 55
}
return `${actualWidth}px`
})
diff --git a/src/assets/icons/icon-setting.svg b/src/assets/icons/icon-setting.svg
new file mode 100644
index 0000000..33353f0
--- /dev/null
+++ b/src/assets/icons/icon-setting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/next_level.png b/src/assets/images/next_level.png
new file mode 100644
index 0000000..53d2837
--- /dev/null
+++ b/src/assets/images/next_level.png
Binary files differ
diff --git a/src/assets/images/next_level_active.png b/src/assets/images/next_level_active.png
new file mode 100644
index 0000000..1a52ae8
--- /dev/null
+++ b/src/assets/images/next_level_active.png
Binary files differ
diff --git a/src/assets/styles/element-plus/index.scss b/src/assets/styles/element-plus/index.scss
index 3b53223..6dc95ed 100644
--- a/src/assets/styles/element-plus/index.scss
+++ b/src/assets/styles/element-plus/index.scss
@@ -7,6 +7,10 @@
$table:(
"header-bg-color":#f2f6ff,
"header-text-color":#444c59
+ ),
+ $menu:(
+ "base-level-padding": 15px,
+ "level-padding": 10px
)
);
@use "element-plus/theme-chalk/src/index.scss" as *;
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 4565a0f..938efd4 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -6,7 +6,7 @@
// 头部宽度(默认自适应宽度,可固定宽度,固定宽度后为居中显示)
--g-header-width: 100%;
// 头部高度
- --g-header-height: 67px;
+ --g-header-height: 60px;
// 侧边栏宽度
--g-main-sidebar-width: 70px;
--g-sub-sidebar-width: 180px;
@@ -91,3 +91,20 @@
.el-cascader.full-width-input {
width: 100% !important;
}
+
+.el-menu--popup {
+ color: var(--g-sub-sidebar-popmenu-bg);
+
+ .sidebar-item {
+ .el-menu-item,
+ .el-sub-menu__title {
+ color: var(--g-sub-sidebar-popmenu-color) !important;
+ }
+
+ .el-menu-item:hover,
+ .el-sub-menu__title:hover {
+ color: var(--g-sub-sidebar-popmenu-active-color) !important;
+ background-color: var(--g-sub-sidebar-popmenu-hover-color) !important;
+ }
+ }
+}
diff --git a/src/assets/styles/themes.scss b/src/assets/styles/themes.scss
index 47da1fb..418dc62 100644
--- a/src/assets/styles/themes.scss
+++ b/src/assets/styles/themes.scss
@@ -52,6 +52,14 @@
--g-sub-sidebar-menu-active-color: #3d7eff;
// 菜单选中背景色
--g-sub-sidebar-menu-active-bg: #dae9fe;
+ // 弹出菜单背景色
+ --g-sub-sidebar-popmenu-bg: #fff;
+ // 弹出菜单文字颜色
+ --g-sub-sidebar-popmenu-color: rgb(92 92 92);
+ // 弹出菜单鼠标悬浮文字颜色
+ --g-sub-sidebar-popmenu-hover-color: #dae9fe;
+ // 弹出菜单选中文字颜色
+ --g-sub-sidebar-popmenu-active-color: rgb(92 92 92);
/* ----- 顶栏 ----- */
--g-toolbar-bg: var(--el-bg-color);
diff --git a/src/layouts/components/Header/index.vue b/src/layouts/components/Header/index.vue
index 4a98f23..83ad8cd 100644
--- a/src/layouts/components/Header/index.vue
+++ b/src/layouts/components/Header/index.vue
@@ -31,7 +31,7 @@
-
+
{{ item.meta.title }}
@@ -136,8 +136,7 @@
display: flex;
align-items: center;
justify-content: center;
- flex-direction: column;
- padding: 10px;
+ padding: 5px;
height: auto;
cursor: pointer;
color: var(--g-header-menu-color);
@@ -150,7 +149,7 @@
}
.el-icon {
- font-size: 24px;
+ font-size: 18px;
vertical-align: middle;
}
@@ -161,6 +160,14 @@
@include text-overflow(1, false);
}
+
+ .el-icon + span {
+ margin-left: 5px;
+ }
+ }
+
+ .item + .item {
+ margin-left: 5px;
}
.round-item {
diff --git a/src/layouts/components/SidebarItem/index.vue b/src/layouts/components/SidebarItem/index.vue
index b930871..540d253 100644
--- a/src/layouts/components/SidebarItem/index.vue
+++ b/src/layouts/components/SidebarItem/index.vue
@@ -85,15 +85,15 @@
:deep(.el-sub-menu),
:deep(.el-menu-item) {
.title-icon {
- width: 20px;
- font-size: 20px;
+ width: 16px;
+ font-size: 16px;
vertical-align: -0.25em;
transition: transform 0.3s;
color: unset;
}
.title-icon + .title {
- margin-left: 10px;
+ margin-left: 5px;
}
&:hover > .title-icon,
diff --git a/src/layouts/components/SubSidebar/index.vue b/src/layouts/components/SubSidebar/index.vue
index 9fc8a18..5928469 100644
--- a/src/layouts/components/SubSidebar/index.vue
+++ b/src/layouts/components/SubSidebar/index.vue
@@ -62,7 +62,7 @@
transition: background-color 0.3s, var(--el-transition-box-shadow), left 0.3s, width 0.3s;
&.is-collapse {
- width: 64px;
+ width: 55px;
.sidebar-logo {
&:not(.sidebar-logo-bg) {
@@ -96,7 +96,7 @@
.el-menu {
border-right: 0;
- padding: 0 10px;
+ padding: 0 5px;
padding-top: var(--g-sidebar-logo-height);
padding-top: 16px !important;
transition: border-color 0.3s, background-color 0.3s, color 0.3s, padding-top 0.3s;
diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts
new file mode 100644
index 0000000..55b4d14
--- /dev/null
+++ b/src/router/modules/device.ts
@@ -0,0 +1,286 @@
+// 测量设备
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/device',
+ component: Layout,
+ redirect: '/device/bench',
+ name: 'DBench',
+ meta: {
+ title: '工作台',
+ icon: 'ep:key',
+ auth: '/device/bench',
+ },
+ children: [
+ {
+ path: '/device/bench',
+ name: 'DeviceBench',
+ component: () => import('@/views/device/bench/deviceBench.vue'),
+ meta: {
+ title: '工作台',
+ auth: '/device/bench',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/device',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standingBook',
+ component: Layout,
+ redirect: '/standingBook/measureDevice',
+ name: 'standingBook',
+ meta: {
+ title: '设备台账',
+ icon: 'ep:key',
+ auth: '/device/standingBook',
+ },
+ children: [
+ {
+ path: 'measureDevice',
+ name: 'measureDevice',
+ component: () => import('@/views/device/standingBook/measureDevice.vue'),
+ meta: {
+ title: '测量设备',
+ icon: 'ep:key',
+ auth: '/device/measureDevice',
+ },
+ },
+ {
+ path: 'adjustDevice',
+ name: 'adjustDevice',
+ component: () => import('@/views/device/standingBook/adjustDevice.vue'),
+ meta: {
+ title: '校准/检定设备',
+ icon: 'ep:key',
+ auth: '/device/adjustDevice',
+ },
+ },
+ {
+ path: 'standardMatchDevice',
+ name: 'standardMatchDevice',
+ component: () => import('@/views/device/standingBook/standardMatchDevice.vue'),
+ meta: {
+ title: '标准配套设备',
+ icon: 'ep:key',
+ auth: '/device/standardMatchDevice',
+ },
+ },
+ {
+ path: 'measureTool',
+ name: 'measureTool',
+ component: () => import('@/views/device/standingBook/measureTool.vue'),
+ meta: {
+ title: '测量工装',
+ icon: 'ep:key',
+ auth: '/device/measureTool',
+ },
+ },
+ {
+ path: 'fixedAssets',
+ name: 'fixedAssets',
+ component: () => import('@/views/device/standingBook/fixedAssets.vue'),
+ meta: {
+ title: '固定资产',
+ icon: 'ep:key',
+ auth: '/device/fixedAssets',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standard',
+ component: Layout,
+ redirect: '/standard/list',
+ name: 'Standard',
+ meta: {
+ title: '标准装置',
+ icon: 'ep:key',
+ auth: '/standardEquipment',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'standardList',
+ component: () => import('@/views/device/standardEquipment/standardList.vue'),
+ meta: {
+ title: '标准装置列表',
+ icon: 'ep:key',
+ auth: '/standard/list',
+ },
+ },
+ {
+ path: 'expirationRemind',
+ name: 'expirationRemind',
+ component: () => import('@/views/device/standardEquipment/expirationRemind.vue'),
+ meta: {
+ title: '到期提醒',
+ icon: 'ep:key',
+ auth: '/standard/expirationRemind',
+ },
+ },
+ {
+ path: 'changeApply',
+ name: 'changeApply',
+ component: () => import('@/views/device/standardEquipment/changeApply.vue'),
+ meta: {
+ title: '更换申请',
+ icon: 'ep:key',
+ auth: '/standard/changeApply',
+ },
+ },
+ {
+ path: 'pauseApply',
+ name: 'pauseApply',
+ component: () => import('@/views/device/standardEquipment/pauseApply.vue'),
+ meta: {
+ title: '暂停申请',
+ icon: 'ep:key',
+ auth: '/standard/pauseApply',
+ },
+ },
+ {
+ path: 'cancelApply',
+ name: 'cancelApply',
+ component: () => import('@/views/device/standardEquipment/cancelApply.vue'),
+ meta: {
+ title: '撤销申请',
+ icon: 'ep:key',
+ auth: '/standard/cancelApply',
+ },
+ },
+ {
+ path: 'resumeApply',
+ name: 'resumeApply',
+ component: () => import('@/views/device/standardEquipment/resumeApply.vue'),
+ meta: {
+ title: '恢复申请',
+ icon: 'ep:key',
+ auth: '/standard/resumeApply',
+ },
+ },
+ {
+ path: 'checkApply',
+ name: 'checkApply',
+ component: () => import('@/views/device/standardEquipment/checkApply.vue'),
+ meta: {
+ title: '复查申请',
+ icon: 'ep:key',
+ auth: '/standard/checkApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/stateManage',
+ component: Layout,
+ redirect: '/stateManage/unusedApply',
+ name: 'stateManage',
+ meta: {
+ title: '状态管理',
+ icon: 'ep:key',
+ auth: '/device/stateManage',
+ },
+ children: [
+ {
+ path: 'unusedApply',
+ name: 'unusedApply',
+ component: () => import('@/views/device/stateManage/unusedApply.vue'),
+ meta: {
+ title: '设备闲置申请',
+ icon: 'ep:key',
+ auth: '/device/unusedApply',
+ },
+ },
+ {
+ path: 'sealupApply',
+ name: 'sealupApply',
+ component: () => import('@/views/device/stateManage/sealupApply.vue'),
+ meta: {
+ title: '设备封存申请',
+ icon: 'ep:key',
+ auth: '/device/sealupApply',
+ },
+ },
+ {
+ path: 'openApply',
+ name: 'openApply',
+ component: () => import('@/views/device/stateManage/openApply.vue'),
+ meta: {
+ title: '设备启封申请',
+ icon: 'ep:key',
+ auth: '/device/openApply',
+ },
+ },
+ {
+ path: 'scrapApply',
+ name: 'scrapApply',
+ component: () => import('@/views/device/stateManage/scrapApply.vue'),
+ meta: {
+ title: '设备报废申请',
+ icon: 'ep:key',
+ auth: '/device/scrapApply',
+ },
+ },
+ {
+ path: 'handleApply',
+ name: 'handleApply',
+ component: () => import('@/views/device/stateManage/handleApply.vue'),
+ meta: {
+ title: '设备处置申请',
+ icon: 'ep:key',
+ auth: '/device/handleApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/maintenance',
+ component: Layout,
+ redirect: '/maintenance/maintenanceList',
+ name: 'MaintenanceManage',
+ meta: {
+ title: '设备维护',
+ icon: 'ep:key',
+ auth: '/device/maintenance',
+ },
+ children: [
+ {
+ path: 'maintenanceList',
+ name: 'maintenanceList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceList.vue'),
+ meta: {
+ title: '设备维护列表',
+ icon: 'ep:key',
+ auth: '/device/maintenanceList',
+ },
+ },
+ {
+ path: 'maintenanceCheckList',
+ name: 'maintenanceCheckList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceCheckList.vue'),
+ meta: {
+ title: '设备检修保养验收单',
+ icon: 'ep:key',
+ auth: '/device/maintenance/checkList',
+ },
+ },
+ {
+ path: 'manageCheckList',
+ name: 'manageCheckList',
+ component: () => import('@/views/device/deviceMaintenance/manageCheckList.vue'),
+ meta: {
+ title: '设备管理点检查表',
+ icon: 'ep:key',
+ auth: '/device/manage/checkList',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index fbbf7a4..4153ab5 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -4,6 +4,7 @@
import BreadcrumbExample from './modules/breadcrumb.example'
import systemRoute from './modules/system'
import measureRoute from './modules/measure'
+import deviceRoute from './modules/device'
import type { Route } from '@/global'
import useSettingsStore from '@/store/modules/settings'
@@ -132,11 +133,10 @@
meta: {
title: '测量设备',
icon: '',
- auth: 'clsb',
+ auth: '/device',
},
children: [
- MultilevelMenuExample,
- BreadcrumbExample,
+ ...deviceRoute,
],
},
{
diff --git a/src/settings.ts b/src/settings.ts
index f89a3ab..ae5c3f5 100644
--- a/src/settings.ts
+++ b/src/settings.ts
@@ -16,6 +16,7 @@
menu: {
baseOn: 'backend',
menuMode: 'head',
+ showIcon: true,
enableSubMenuCollapseButton: true,
},
toolbar: {
diff --git a/src/views/device/bench/deviceBench.vue b/src/views/device/bench/deviceBench.vue
new file mode 100644
index 0000000..9206576
--- /dev/null
+++ b/src/views/device/bench/deviceBench.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 工作台
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceCheckList.vue b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
new file mode 100644
index 0000000..84224db
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备检修保养验收单
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue
new file mode 100644
index 0000000..3c91abd
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备维护列表
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/manageCheckList.vue b/src/views/device/deviceMaintenance/manageCheckList.vue
new file mode 100644
index 0000000..a4ace73
--- /dev/null
+++ b/src/views/device/deviceMaintenance/manageCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备管理点检查表
+
+
+
+
diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue
new file mode 100644
index 0000000..c093520
--- /dev/null
+++ b/src/views/device/standardEquipment/cancelApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 撤销申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/changeApply.vue b/src/views/device/standardEquipment/changeApply.vue
new file mode 100644
index 0000000..0762330
--- /dev/null
+++ b/src/views/device/standardEquipment/changeApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 更换申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/checkApply.vue b/src/views/device/standardEquipment/checkApply.vue
new file mode 100644
index 0000000..9cadc01
--- /dev/null
+++ b/src/views/device/standardEquipment/checkApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 复查申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/expirationRemind.vue b/src/views/device/standardEquipment/expirationRemind.vue
new file mode 100644
index 0000000..e3ec8d3
--- /dev/null
+++ b/src/views/device/standardEquipment/expirationRemind.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 到期提醒
+
+
+
+
diff --git a/src/views/device/standardEquipment/pauseApply.vue b/src/views/device/standardEquipment/pauseApply.vue
new file mode 100644
index 0000000..6f2c437
--- /dev/null
+++ b/src/views/device/standardEquipment/pauseApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 暂停申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/resumeApply.vue b/src/views/device/standardEquipment/resumeApply.vue
new file mode 100644
index 0000000..d4a80e8
--- /dev/null
+++ b/src/views/device/standardEquipment/resumeApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 恢复申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/standardList.vue b/src/views/device/standardEquipment/standardList.vue
new file mode 100644
index 0000000..55e7402
--- /dev/null
+++ b/src/views/device/standardEquipment/standardList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 标准装置列表
+
+
+
+
diff --git a/src/views/device/standingBook/adjustDevice.vue b/src/views/device/standingBook/adjustDevice.vue
new file mode 100644
index 0000000..a6e1b54
--- /dev/null
+++ b/src/views/device/standingBook/adjustDevice.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 校准检定设备
+
+
+
+
diff --git a/src/views/device/standingBook/fixedAssets.vue b/src/views/device/standingBook/fixedAssets.vue
new file mode 100644
index 0000000..b9845d9
--- /dev/null
+++ b/src/views/device/standingBook/fixedAssets.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 固定资产
+
+
+
+
diff --git a/src/views/device/standingBook/measureDevice.vue b/src/views/device/standingBook/measureDevice.vue
new file mode 100644
index 0000000..3f74e89
--- /dev/null
+++ b/src/views/device/standingBook/measureDevice.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 测量设备
+
+
+
+
diff --git a/src/views/device/standingBook/measureTool.vue b/src/views/device/standingBook/measureTool.vue
new file mode 100644
index 0000000..5a2f8d3
--- /dev/null
+++ b/src/views/device/standingBook/measureTool.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 测量工装
+
+
+
+
diff --git a/src/views/device/standingBook/standardMatchDevice.vue b/src/views/device/standingBook/standardMatchDevice.vue
new file mode 100644
index 0000000..8faef3a
--- /dev/null
+++ b/src/views/device/standingBook/standardMatchDevice.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 标准配套设备
+
+
+
+
diff --git a/src/views/device/stateManage/handleApply.vue b/src/views/device/stateManage/handleApply.vue
new file mode 100644
index 0000000..fb5897e
--- /dev/null
+++ b/src/views/device/stateManage/handleApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备处置申请
+
+
+
+
diff --git a/src/views/device/stateManage/openApply.vue b/src/views/device/stateManage/openApply.vue
new file mode 100644
index 0000000..3c43781
--- /dev/null
+++ b/src/views/device/stateManage/openApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备启封申请
+
+
+
+
diff --git a/src/views/device/stateManage/scrapApply.vue b/src/views/device/stateManage/scrapApply.vue
new file mode 100644
index 0000000..7bd1a98
--- /dev/null
+++ b/src/views/device/stateManage/scrapApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备报废申请
+
+
+
+
diff --git a/src/views/device/stateManage/sealupApply.vue b/src/views/device/stateManage/sealupApply.vue
new file mode 100644
index 0000000..ec6320b
--- /dev/null
+++ b/src/views/device/stateManage/sealupApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备封存申请
+
+
+
+
diff --git a/src/views/device/stateManage/unusedApply.vue b/src/views/device/stateManage/unusedApply.vue
new file mode 100644
index 0000000..fb2cffa
--- /dev/null
+++ b/src/views/device/stateManage/unusedApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备闲置申请
+
+
+
+
diff --git a/src/App.vue b/src/App.vue
index 8624b4c..52ccd6e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,7 +27,7 @@
actualWidth = 0
}
else if (settingsStore.menu.subMenuCollapse) {
- actualWidth = 64
+ actualWidth = 55
}
return `${actualWidth}px`
})
diff --git a/src/assets/icons/icon-setting.svg b/src/assets/icons/icon-setting.svg
new file mode 100644
index 0000000..33353f0
--- /dev/null
+++ b/src/assets/icons/icon-setting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/next_level.png b/src/assets/images/next_level.png
new file mode 100644
index 0000000..53d2837
--- /dev/null
+++ b/src/assets/images/next_level.png
Binary files differ
diff --git a/src/assets/images/next_level_active.png b/src/assets/images/next_level_active.png
new file mode 100644
index 0000000..1a52ae8
--- /dev/null
+++ b/src/assets/images/next_level_active.png
Binary files differ
diff --git a/src/assets/styles/element-plus/index.scss b/src/assets/styles/element-plus/index.scss
index 3b53223..6dc95ed 100644
--- a/src/assets/styles/element-plus/index.scss
+++ b/src/assets/styles/element-plus/index.scss
@@ -7,6 +7,10 @@
$table:(
"header-bg-color":#f2f6ff,
"header-text-color":#444c59
+ ),
+ $menu:(
+ "base-level-padding": 15px,
+ "level-padding": 10px
)
);
@use "element-plus/theme-chalk/src/index.scss" as *;
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 4565a0f..938efd4 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -6,7 +6,7 @@
// 头部宽度(默认自适应宽度,可固定宽度,固定宽度后为居中显示)
--g-header-width: 100%;
// 头部高度
- --g-header-height: 67px;
+ --g-header-height: 60px;
// 侧边栏宽度
--g-main-sidebar-width: 70px;
--g-sub-sidebar-width: 180px;
@@ -91,3 +91,20 @@
.el-cascader.full-width-input {
width: 100% !important;
}
+
+.el-menu--popup {
+ color: var(--g-sub-sidebar-popmenu-bg);
+
+ .sidebar-item {
+ .el-menu-item,
+ .el-sub-menu__title {
+ color: var(--g-sub-sidebar-popmenu-color) !important;
+ }
+
+ .el-menu-item:hover,
+ .el-sub-menu__title:hover {
+ color: var(--g-sub-sidebar-popmenu-active-color) !important;
+ background-color: var(--g-sub-sidebar-popmenu-hover-color) !important;
+ }
+ }
+}
diff --git a/src/assets/styles/themes.scss b/src/assets/styles/themes.scss
index 47da1fb..418dc62 100644
--- a/src/assets/styles/themes.scss
+++ b/src/assets/styles/themes.scss
@@ -52,6 +52,14 @@
--g-sub-sidebar-menu-active-color: #3d7eff;
// 菜单选中背景色
--g-sub-sidebar-menu-active-bg: #dae9fe;
+ // 弹出菜单背景色
+ --g-sub-sidebar-popmenu-bg: #fff;
+ // 弹出菜单文字颜色
+ --g-sub-sidebar-popmenu-color: rgb(92 92 92);
+ // 弹出菜单鼠标悬浮文字颜色
+ --g-sub-sidebar-popmenu-hover-color: #dae9fe;
+ // 弹出菜单选中文字颜色
+ --g-sub-sidebar-popmenu-active-color: rgb(92 92 92);
/* ----- 顶栏 ----- */
--g-toolbar-bg: var(--el-bg-color);
diff --git a/src/layouts/components/Header/index.vue b/src/layouts/components/Header/index.vue
index 4a98f23..83ad8cd 100644
--- a/src/layouts/components/Header/index.vue
+++ b/src/layouts/components/Header/index.vue
@@ -31,7 +31,7 @@
-
+
{{ item.meta.title }}
@@ -136,8 +136,7 @@
display: flex;
align-items: center;
justify-content: center;
- flex-direction: column;
- padding: 10px;
+ padding: 5px;
height: auto;
cursor: pointer;
color: var(--g-header-menu-color);
@@ -150,7 +149,7 @@
}
.el-icon {
- font-size: 24px;
+ font-size: 18px;
vertical-align: middle;
}
@@ -161,6 +160,14 @@
@include text-overflow(1, false);
}
+
+ .el-icon + span {
+ margin-left: 5px;
+ }
+ }
+
+ .item + .item {
+ margin-left: 5px;
}
.round-item {
diff --git a/src/layouts/components/SidebarItem/index.vue b/src/layouts/components/SidebarItem/index.vue
index b930871..540d253 100644
--- a/src/layouts/components/SidebarItem/index.vue
+++ b/src/layouts/components/SidebarItem/index.vue
@@ -85,15 +85,15 @@
:deep(.el-sub-menu),
:deep(.el-menu-item) {
.title-icon {
- width: 20px;
- font-size: 20px;
+ width: 16px;
+ font-size: 16px;
vertical-align: -0.25em;
transition: transform 0.3s;
color: unset;
}
.title-icon + .title {
- margin-left: 10px;
+ margin-left: 5px;
}
&:hover > .title-icon,
diff --git a/src/layouts/components/SubSidebar/index.vue b/src/layouts/components/SubSidebar/index.vue
index 9fc8a18..5928469 100644
--- a/src/layouts/components/SubSidebar/index.vue
+++ b/src/layouts/components/SubSidebar/index.vue
@@ -62,7 +62,7 @@
transition: background-color 0.3s, var(--el-transition-box-shadow), left 0.3s, width 0.3s;
&.is-collapse {
- width: 64px;
+ width: 55px;
.sidebar-logo {
&:not(.sidebar-logo-bg) {
@@ -96,7 +96,7 @@
.el-menu {
border-right: 0;
- padding: 0 10px;
+ padding: 0 5px;
padding-top: var(--g-sidebar-logo-height);
padding-top: 16px !important;
transition: border-color 0.3s, background-color 0.3s, color 0.3s, padding-top 0.3s;
diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts
new file mode 100644
index 0000000..55b4d14
--- /dev/null
+++ b/src/router/modules/device.ts
@@ -0,0 +1,286 @@
+// 测量设备
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/device',
+ component: Layout,
+ redirect: '/device/bench',
+ name: 'DBench',
+ meta: {
+ title: '工作台',
+ icon: 'ep:key',
+ auth: '/device/bench',
+ },
+ children: [
+ {
+ path: '/device/bench',
+ name: 'DeviceBench',
+ component: () => import('@/views/device/bench/deviceBench.vue'),
+ meta: {
+ title: '工作台',
+ auth: '/device/bench',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/device',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standingBook',
+ component: Layout,
+ redirect: '/standingBook/measureDevice',
+ name: 'standingBook',
+ meta: {
+ title: '设备台账',
+ icon: 'ep:key',
+ auth: '/device/standingBook',
+ },
+ children: [
+ {
+ path: 'measureDevice',
+ name: 'measureDevice',
+ component: () => import('@/views/device/standingBook/measureDevice.vue'),
+ meta: {
+ title: '测量设备',
+ icon: 'ep:key',
+ auth: '/device/measureDevice',
+ },
+ },
+ {
+ path: 'adjustDevice',
+ name: 'adjustDevice',
+ component: () => import('@/views/device/standingBook/adjustDevice.vue'),
+ meta: {
+ title: '校准/检定设备',
+ icon: 'ep:key',
+ auth: '/device/adjustDevice',
+ },
+ },
+ {
+ path: 'standardMatchDevice',
+ name: 'standardMatchDevice',
+ component: () => import('@/views/device/standingBook/standardMatchDevice.vue'),
+ meta: {
+ title: '标准配套设备',
+ icon: 'ep:key',
+ auth: '/device/standardMatchDevice',
+ },
+ },
+ {
+ path: 'measureTool',
+ name: 'measureTool',
+ component: () => import('@/views/device/standingBook/measureTool.vue'),
+ meta: {
+ title: '测量工装',
+ icon: 'ep:key',
+ auth: '/device/measureTool',
+ },
+ },
+ {
+ path: 'fixedAssets',
+ name: 'fixedAssets',
+ component: () => import('@/views/device/standingBook/fixedAssets.vue'),
+ meta: {
+ title: '固定资产',
+ icon: 'ep:key',
+ auth: '/device/fixedAssets',
+ },
+ },
+ ],
+ },
+ {
+ path: '/standard',
+ component: Layout,
+ redirect: '/standard/list',
+ name: 'Standard',
+ meta: {
+ title: '标准装置',
+ icon: 'ep:key',
+ auth: '/standardEquipment',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'standardList',
+ component: () => import('@/views/device/standardEquipment/standardList.vue'),
+ meta: {
+ title: '标准装置列表',
+ icon: 'ep:key',
+ auth: '/standard/list',
+ },
+ },
+ {
+ path: 'expirationRemind',
+ name: 'expirationRemind',
+ component: () => import('@/views/device/standardEquipment/expirationRemind.vue'),
+ meta: {
+ title: '到期提醒',
+ icon: 'ep:key',
+ auth: '/standard/expirationRemind',
+ },
+ },
+ {
+ path: 'changeApply',
+ name: 'changeApply',
+ component: () => import('@/views/device/standardEquipment/changeApply.vue'),
+ meta: {
+ title: '更换申请',
+ icon: 'ep:key',
+ auth: '/standard/changeApply',
+ },
+ },
+ {
+ path: 'pauseApply',
+ name: 'pauseApply',
+ component: () => import('@/views/device/standardEquipment/pauseApply.vue'),
+ meta: {
+ title: '暂停申请',
+ icon: 'ep:key',
+ auth: '/standard/pauseApply',
+ },
+ },
+ {
+ path: 'cancelApply',
+ name: 'cancelApply',
+ component: () => import('@/views/device/standardEquipment/cancelApply.vue'),
+ meta: {
+ title: '撤销申请',
+ icon: 'ep:key',
+ auth: '/standard/cancelApply',
+ },
+ },
+ {
+ path: 'resumeApply',
+ name: 'resumeApply',
+ component: () => import('@/views/device/standardEquipment/resumeApply.vue'),
+ meta: {
+ title: '恢复申请',
+ icon: 'ep:key',
+ auth: '/standard/resumeApply',
+ },
+ },
+ {
+ path: 'checkApply',
+ name: 'checkApply',
+ component: () => import('@/views/device/standardEquipment/checkApply.vue'),
+ meta: {
+ title: '复查申请',
+ icon: 'ep:key',
+ auth: '/standard/checkApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/stateManage',
+ component: Layout,
+ redirect: '/stateManage/unusedApply',
+ name: 'stateManage',
+ meta: {
+ title: '状态管理',
+ icon: 'ep:key',
+ auth: '/device/stateManage',
+ },
+ children: [
+ {
+ path: 'unusedApply',
+ name: 'unusedApply',
+ component: () => import('@/views/device/stateManage/unusedApply.vue'),
+ meta: {
+ title: '设备闲置申请',
+ icon: 'ep:key',
+ auth: '/device/unusedApply',
+ },
+ },
+ {
+ path: 'sealupApply',
+ name: 'sealupApply',
+ component: () => import('@/views/device/stateManage/sealupApply.vue'),
+ meta: {
+ title: '设备封存申请',
+ icon: 'ep:key',
+ auth: '/device/sealupApply',
+ },
+ },
+ {
+ path: 'openApply',
+ name: 'openApply',
+ component: () => import('@/views/device/stateManage/openApply.vue'),
+ meta: {
+ title: '设备启封申请',
+ icon: 'ep:key',
+ auth: '/device/openApply',
+ },
+ },
+ {
+ path: 'scrapApply',
+ name: 'scrapApply',
+ component: () => import('@/views/device/stateManage/scrapApply.vue'),
+ meta: {
+ title: '设备报废申请',
+ icon: 'ep:key',
+ auth: '/device/scrapApply',
+ },
+ },
+ {
+ path: 'handleApply',
+ name: 'handleApply',
+ component: () => import('@/views/device/stateManage/handleApply.vue'),
+ meta: {
+ title: '设备处置申请',
+ icon: 'ep:key',
+ auth: '/device/handleApply',
+ },
+ },
+ ],
+ },
+ {
+ path: '/maintenance',
+ component: Layout,
+ redirect: '/maintenance/maintenanceList',
+ name: 'MaintenanceManage',
+ meta: {
+ title: '设备维护',
+ icon: 'ep:key',
+ auth: '/device/maintenance',
+ },
+ children: [
+ {
+ path: 'maintenanceList',
+ name: 'maintenanceList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceList.vue'),
+ meta: {
+ title: '设备维护列表',
+ icon: 'ep:key',
+ auth: '/device/maintenanceList',
+ },
+ },
+ {
+ path: 'maintenanceCheckList',
+ name: 'maintenanceCheckList',
+ component: () => import('@/views/device/deviceMaintenance/maintenanceCheckList.vue'),
+ meta: {
+ title: '设备检修保养验收单',
+ icon: 'ep:key',
+ auth: '/device/maintenance/checkList',
+ },
+ },
+ {
+ path: 'manageCheckList',
+ name: 'manageCheckList',
+ component: () => import('@/views/device/deviceMaintenance/manageCheckList.vue'),
+ meta: {
+ title: '设备管理点检查表',
+ icon: 'ep:key',
+ auth: '/device/manage/checkList',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index fbbf7a4..4153ab5 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -4,6 +4,7 @@
import BreadcrumbExample from './modules/breadcrumb.example'
import systemRoute from './modules/system'
import measureRoute from './modules/measure'
+import deviceRoute from './modules/device'
import type { Route } from '@/global'
import useSettingsStore from '@/store/modules/settings'
@@ -132,11 +133,10 @@
meta: {
title: '测量设备',
icon: '',
- auth: 'clsb',
+ auth: '/device',
},
children: [
- MultilevelMenuExample,
- BreadcrumbExample,
+ ...deviceRoute,
],
},
{
diff --git a/src/settings.ts b/src/settings.ts
index f89a3ab..ae5c3f5 100644
--- a/src/settings.ts
+++ b/src/settings.ts
@@ -16,6 +16,7 @@
menu: {
baseOn: 'backend',
menuMode: 'head',
+ showIcon: true,
enableSubMenuCollapseButton: true,
},
toolbar: {
diff --git a/src/views/device/bench/deviceBench.vue b/src/views/device/bench/deviceBench.vue
new file mode 100644
index 0000000..9206576
--- /dev/null
+++ b/src/views/device/bench/deviceBench.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 工作台
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceCheckList.vue b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
new file mode 100644
index 0000000..84224db
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备检修保养验收单
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue
new file mode 100644
index 0000000..3c91abd
--- /dev/null
+++ b/src/views/device/deviceMaintenance/maintenanceList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备维护列表
+
+
+
+
diff --git a/src/views/device/deviceMaintenance/manageCheckList.vue b/src/views/device/deviceMaintenance/manageCheckList.vue
new file mode 100644
index 0000000..a4ace73
--- /dev/null
+++ b/src/views/device/deviceMaintenance/manageCheckList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备管理点检查表
+
+
+
+
diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue
new file mode 100644
index 0000000..c093520
--- /dev/null
+++ b/src/views/device/standardEquipment/cancelApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 撤销申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/changeApply.vue b/src/views/device/standardEquipment/changeApply.vue
new file mode 100644
index 0000000..0762330
--- /dev/null
+++ b/src/views/device/standardEquipment/changeApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 更换申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/checkApply.vue b/src/views/device/standardEquipment/checkApply.vue
new file mode 100644
index 0000000..9cadc01
--- /dev/null
+++ b/src/views/device/standardEquipment/checkApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 复查申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/expirationRemind.vue b/src/views/device/standardEquipment/expirationRemind.vue
new file mode 100644
index 0000000..e3ec8d3
--- /dev/null
+++ b/src/views/device/standardEquipment/expirationRemind.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 到期提醒
+
+
+
+
diff --git a/src/views/device/standardEquipment/pauseApply.vue b/src/views/device/standardEquipment/pauseApply.vue
new file mode 100644
index 0000000..6f2c437
--- /dev/null
+++ b/src/views/device/standardEquipment/pauseApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 暂停申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/resumeApply.vue b/src/views/device/standardEquipment/resumeApply.vue
new file mode 100644
index 0000000..d4a80e8
--- /dev/null
+++ b/src/views/device/standardEquipment/resumeApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 恢复申请
+
+
+
+
diff --git a/src/views/device/standardEquipment/standardList.vue b/src/views/device/standardEquipment/standardList.vue
new file mode 100644
index 0000000..55e7402
--- /dev/null
+++ b/src/views/device/standardEquipment/standardList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 标准装置列表
+
+
+
+
diff --git a/src/views/device/standingBook/adjustDevice.vue b/src/views/device/standingBook/adjustDevice.vue
new file mode 100644
index 0000000..a6e1b54
--- /dev/null
+++ b/src/views/device/standingBook/adjustDevice.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 校准检定设备
+
+
+
+
diff --git a/src/views/device/standingBook/fixedAssets.vue b/src/views/device/standingBook/fixedAssets.vue
new file mode 100644
index 0000000..b9845d9
--- /dev/null
+++ b/src/views/device/standingBook/fixedAssets.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 固定资产
+
+
+
+
diff --git a/src/views/device/standingBook/measureDevice.vue b/src/views/device/standingBook/measureDevice.vue
new file mode 100644
index 0000000..3f74e89
--- /dev/null
+++ b/src/views/device/standingBook/measureDevice.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 测量设备
+
+
+
+
diff --git a/src/views/device/standingBook/measureTool.vue b/src/views/device/standingBook/measureTool.vue
new file mode 100644
index 0000000..5a2f8d3
--- /dev/null
+++ b/src/views/device/standingBook/measureTool.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 测量工装
+
+
+
+
diff --git a/src/views/device/standingBook/standardMatchDevice.vue b/src/views/device/standingBook/standardMatchDevice.vue
new file mode 100644
index 0000000..8faef3a
--- /dev/null
+++ b/src/views/device/standingBook/standardMatchDevice.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 标准配套设备
+
+
+
+
diff --git a/src/views/device/stateManage/handleApply.vue b/src/views/device/stateManage/handleApply.vue
new file mode 100644
index 0000000..fb5897e
--- /dev/null
+++ b/src/views/device/stateManage/handleApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备处置申请
+
+
+
+
diff --git a/src/views/device/stateManage/openApply.vue b/src/views/device/stateManage/openApply.vue
new file mode 100644
index 0000000..3c43781
--- /dev/null
+++ b/src/views/device/stateManage/openApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备启封申请
+
+
+
+
diff --git a/src/views/device/stateManage/scrapApply.vue b/src/views/device/stateManage/scrapApply.vue
new file mode 100644
index 0000000..7bd1a98
--- /dev/null
+++ b/src/views/device/stateManage/scrapApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备报废申请
+
+
+
+
diff --git a/src/views/device/stateManage/sealupApply.vue b/src/views/device/stateManage/sealupApply.vue
new file mode 100644
index 0000000..ec6320b
--- /dev/null
+++ b/src/views/device/stateManage/sealupApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备封存申请
+
+
+
+
diff --git a/src/views/device/stateManage/unusedApply.vue b/src/views/device/stateManage/unusedApply.vue
new file mode 100644
index 0000000..fb2cffa
--- /dev/null
+++ b/src/views/device/stateManage/unusedApply.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 设备闲置申请
+
+
+
+
diff --git a/src/views/system/resource/editResource.vue b/src/views/system/resource/editResource.vue
index 59a8a6b..25955f1 100644
--- a/src/views/system/resource/editResource.vue
+++ b/src/views/system/resource/editResource.vue
@@ -81,6 +81,11 @@
},
).then(() => {
resetForm()
+ nextTick(() => {
+ console.log('clearValidate')
+ dataFormRef.value?.clearValidate(['name', 'url'])
+ fetchResourceTree()
+ })
}).catch(() => {
closeRefresh()
})
@@ -94,6 +99,7 @@
function updateData() {
updateResource(formData.value).then((res) => {
ElMessage.success('修改成功')
+ fetchResourceTree()
btnLoading.value = false
closeRefresh()
}).catch((_) => { // 异常情况,loading置为false
@@ -113,6 +119,10 @@
num: 0,
icon: '',
}
+ console.log('resetForm')
+ nextTick(() => {
+ dataFormRef.value?.clearValidate()
+ })
}
// 树列表配置