From c8ffd7d3b1d5363e6a95ebfba18c2752fc2c5043 Mon Sep 17 00:00:00 2001 From: ltx <1006158920@qq.com> Date: Fri, 3 Jul 2026 17:14:10 +0800 Subject: [PATCH] =?UTF-8?q?update=EF=BC=9A=E6=95=B4=E4=BD=93=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/basic/RouterLoading.vue | 198 ++++++++++++-------- src/components/commonManage/index.vue | 247 ++++++++++++++++++++++++- src/components/commonTable/index.vue | 129 ++++++++----- src/views/index.vue | 130 +++++++++---- src/views/index/index.less | 187 +++++++++++-------- 5 files changed, 652 insertions(+), 239 deletions(-) diff --git a/src/components/basic/RouterLoading.vue b/src/components/basic/RouterLoading.vue index 134a454..fbbf75e 100644 --- a/src/components/basic/RouterLoading.vue +++ b/src/components/basic/RouterLoading.vue @@ -1,14 +1,16 @@ @@ -27,79 +29,129 @@ export default { left: 0; width: 100%; height: 100%; - font-size: 100px; - text-align: center; - padding-top: 200px; - color: #808080; + display: flex; + align-items: center; + justify-content: center; + color: #17233d; + background: rgba(247, 250, 255, 0.88); z-index: 9999; + animation: loading-fade-in 0.16s ease both; } -.spanner { - width: 100px; - height: 100px; + +.loading-panel { + width: 160px; + min-height: 142px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 20px 22px 18px; + box-sizing: border-box; + border: 1px solid #e6eef8; + border-radius: 12px; + background: #ffffff; + box-shadow: 0 12px 28px rgba(29, 68, 130, 0.1); + animation: panel-in 0.24s ease-out both; +} + +.loader-mark { + width: 46px; + height: 46px; position: relative; - margin: 0 auto; -} -.router-loading span { - display: inline-block; - width: 20px; - height: 20px; border-radius: 50%; - background: #66b1ff; - position: absolute; - animation: r_load 1.04s ease infinite; + border: 3px solid #dce9fb; + border-top-color: #2487f0; + animation: loader-spin 0.78s linear infinite; } -@keyframes r_load { - 0% { - transform: scale(1.2); + +.loader-mark span { + position: absolute; + inset: 8px; + border-radius: inherit; + border: 2px solid #eef5ff; + border-bottom-color: #7db5f5; +} + +.loading-copy { + margin-top: 14px; + text-align: center; +} + +.loading-copy p { + margin: 0; + color: #17233d; + font-size: 14px; + font-weight: 600; + line-height: 20px; +} + +.loading-copy span { + display: block; + margin-top: 3px; + color: #8a96a8; + font-size: 12px; + line-height: 17px; +} + +.loading-bar { + width: 96px; + height: 3px; + margin-top: 14px; + overflow: hidden; + border-radius: 999px; + background: #edf3fb; +} + +.loading-bar span { + display: block; + width: 38%; + height: 100%; + border-radius: inherit; + background: #2487f0; + animation: loading-sweep 1.05s ease-in-out infinite; +} + +@keyframes loading-fade-in { + from { + opacity: 0; + } + to { opacity: 1; } - 100% { - transform: scale(0.3); - opacity: 0.5; +} + +@keyframes panel-in { + from { + opacity: 0; + transform: translate3d(0, 6px, 0); + } + to { + opacity: 1; + transform: translate3d(0, 0, 0); } } -.router-loading span:nth-child(1) { - left: 0; - top: 50%; - margin-top: -10px; - animation-delay: 0.13s; + +@keyframes loader-spin { + to { + transform: rotate(360deg); + } } -.router-loading span:nth-child(2) { - left: 14px; - top: 14px; - animation-delay: 0.26s; + +@keyframes loading-sweep { + 0% { + transform: translateX(-105%); + } + 100% { + transform: translateX(270%); + } } -.router-loading span:nth-child(3) { - left: 50%; - top: 0; - margin-left: -10px; - animation-delay: 0.39s; -} -.router-loading span:nth-child(4) { - top: 14px; - right: 14px; - animation-delay: 0.52s; -} -.router-loading span:nth-child(5) { - right: 0; - top: 50%; - margin-top: -10px; - animation-delay: 0.65s; -} -.router-loading span:nth-child(6) { - right: 14px; - bottom: 14px; - animation-delay: 0.78s; -} -.router-loading span:nth-child(7) { - bottom: 0; - left: 50%; - margin-left: -10px; - animation-delay: 0.91s; -} -.router-loading span:nth-child(8) { - bottom: 14px; - left: 14px; - animation-delay: 1.04s; + +@media (prefers-reduced-motion: reduce) { + .router-loading, + .loading-panel, + .loader-mark, + .loading-bar span { + animation: none; + } } diff --git a/src/components/commonManage/index.vue b/src/components/commonManage/index.vue index bb0753f..1be4792 100644 --- a/src/components/commonManage/index.vue +++ b/src/components/commonManage/index.vue @@ -7,13 +7,248 @@ \ No newline at end of file +.commonManage :deep(.head .right) { + margin-left: auto; + padding: 0; +} + +.commonManage :deep(.Search), +.commonManage :deep(.Add), +.commonManage :deep(.addTeacher), +.commonManage :deep(.Import), +.commonManage :deep(.Export), +.commonManage :deep(.Audit), +.commonManage :deep(.Upload) { + min-width: 82px !important; + width: auto !important; + height: 34px !important; + margin: 0 !important; + padding: 0 16px !important; + display: inline-flex !important; + align-items: center; + justify-content: center; + border-radius: 8px !important; + border: 1px solid transparent !important; + font-size: 14px !important; + font-weight: 500 !important; + line-height: 34px !important; + cursor: pointer; + user-select: none; + transition: transform 0.18s ease, box-shadow 0.18s ease, background 0.18s ease, color 0.18s ease; +} + +.commonManage :deep(.Search), +.commonManage :deep(.Add), +.commonManage :deep(.addTeacher), +.commonManage :deep(.Import), +.commonManage :deep(.Export) { + color: #fff !important; + background: linear-gradient(135deg, #2f8dff 0%, #176be7 100%) !important; + box-shadow: 0 6px 14px rgba(47, 141, 255, 0.2); +} + +.commonManage :deep(.Audit), +.commonManage :deep(.Upload) { + color: #475467 !important; + background: #fff !important; + border-color: #d9e1ee !important; + box-shadow: 0 4px 10px rgba(31, 52, 88, 0.05); +} + +.commonManage :deep(.Search:hover), +.commonManage :deep(.Add:hover), +.commonManage :deep(.addTeacher:hover), +.commonManage :deep(.Import:hover), +.commonManage :deep(.Export:hover), +.commonManage :deep(.Audit:hover), +.commonManage :deep(.Upload:hover) { + transform: translateY(-1px); + box-shadow: 0 8px 18px rgba(47, 141, 255, 0.24); +} + +.commonManage :deep(.cont) { + padding: 0 0 16px; + box-sizing: border-box; +} + +.commonManage :deep(.el-input__wrapper), +.commonManage :deep(.el-select__wrapper) { + min-height: 34px; + border-radius: 8px; + box-shadow: 0 0 0 1px #dce4f0 inset; + transition: box-shadow 0.18s ease, background 0.18s ease; +} + +.commonManage :deep(.el-input__wrapper:hover), +.commonManage :deep(.el-select__wrapper:hover), +.commonManage :deep(.el-input__wrapper.is-focus), +.commonManage :deep(.el-select__wrapper.is-focused) { + box-shadow: 0 0 0 1px #2f8dff inset, 0 0 0 3px rgba(47, 141, 255, 0.1); +} + +.commonManage :deep(.el-table) { + width: calc(100% - 36px) !important; + margin: 16px 18px 0 !important; + border-radius: 10px; + border: 1px solid #edf1f7; + box-shadow: 0 8px 20px rgba(31, 52, 88, 0.05); + overflow: hidden; +} + +.commonManage :deep(.el-table::before), +.commonManage :deep(.el-table__inner-wrapper::before) { + display: none; +} + +.commonManage :deep(.el-table th.el-table__cell) { + height: 46px !important; + padding: 0 !important; + background: #f6f9fd !important; + color: #344054 !important; + font-size: 13px !important; + font-weight: 600 !important; +} + +.commonManage :deep(.el-table td.el-table__cell) { + height: 46px !important; + padding: 6px 0 !important; + color: #475467 !important; + border-bottom-color: #edf1f7 !important; +} + +.commonManage :deep(.el-table__row:hover > td.el-table__cell) { + background: #f4f8ff !important; +} + +.commonManage :deep(.el-pagination) { + margin: 14px 18px 0 !important; +} + +.commonManage :deep(.operate) { + min-height: 24px !important; + display: flex !important; + align-items: center; + justify-content: center; + gap: 8px; + flex-wrap: wrap; +} + +.commonManage :deep(.operate .edit), +.commonManage :deep(.operate .view), +.commonManage :deep(.operate .delete), +.commonManage :deep(.operate .toView), +.commonManage :deep(.operate .editPassWord) { + width: auto !important; + min-width: 42px !important; + height: 24px !important; + padding: 0 8px !important; + margin: 0 !important; + border-radius: 6px; + font-size: 14px !important; + font-weight: 500 !important; + line-height: 24px !important; + transition: background 0.18s ease, color 0.18s ease; +} + +.commonManage :deep(.operate .edit), +.commonManage :deep(.operate .view), +.commonManage :deep(.operate .toView) { + color: #176be7 !important; +} + +.commonManage :deep(.operate .delete) { + color: #f04438 !important; +} + +.commonManage :deep(.operate .editPassWord) { + color: #12a87f !important; +} + +.commonManage :deep(.operate .edit:hover), +.commonManage :deep(.operate .view:hover), +.commonManage :deep(.operate .toView:hover) { + background: #eaf3ff; +} + +.commonManage :deep(.operate .delete:hover) { + background: #fff1f0; +} + +.commonManage :deep(.addTeacherDrawer .title) { + color: #1d2939 !important; + font-size: 16px !important; + font-weight: 600 !important; +} + +.commonManage :deep(.footer .cancle), +.commonManage :deep(.footer .confirm) { + height: 38px !important; + border-radius: 8px !important; + line-height: 38px !important; + font-weight: 500 !important; +} + diff --git a/src/components/commonTable/index.vue b/src/components/commonTable/index.vue index 06f8d75..07bcafa 100644 --- a/src/components/commonTable/index.vue +++ b/src/components/commonTable/index.vue @@ -1,6 +1,6 @@