diff --git a/src/App.vue b/src/App.vue index 6b82631..43cc1cb 100644 --- a/src/App.vue +++ b/src/App.vue @@ -21,4 +21,213 @@ html, body { #app { height: 100%; } + +/* 全局主题色覆盖 */ +:root { + --primary-color: #1a1a1a; + --primary-hover-color: #333333; + --primary-active-color: #444444; + --primary-text-color: #ffffff; + --primary-light-color: #f5f5f5; + --primary-border-color: #d9d9d9; + --primary-shadow-color: rgba(0, 0, 0, 0.15); +} + +/* 覆盖Ant Design Vue的主题色 */ +/* 按钮相关 */ +.ant-btn-primary { + background-color: var(--primary-color) !important; + border-color: var(--primary-color) !important; +} + +.ant-btn-primary:hover, +.ant-btn-primary:focus { + background-color: var(--primary-hover-color) !important; + border-color: var(--primary-hover-color) !important; +} + +.ant-btn-primary:active { + background-color: var(--primary-active-color) !important; + border-color: var(--primary-active-color) !important; +} + +.ant-btn-link { + color: var(--primary-color) !important; +} + +.ant-btn-link:hover { + color: var(--primary-hover-color) !important; +} + +/* 表单相关 */ +.ant-checkbox-checked .ant-checkbox-inner { + background-color: var(--primary-color) !important; + border-color: var(--primary-color) !important; +} + +.ant-radio-checked .ant-radio-inner { + border-color: var(--primary-color) !important; +} + +.ant-radio-inner::after { + background-color: var(--primary-color) !important; +} + +.ant-switch-checked { + background-color: var(--primary-color) !important; +} + +.ant-slider-track { + background-color: var(--primary-color) !important; +} + +.ant-slider-handle { + border-color: var(--primary-color) !important; +} + +.ant-input:focus, +.ant-input-focused, +.ant-input:hover { + border-color: var(--primary-hover-color) !important; +} + +.ant-input-affix-wrapper:focus, +.ant-input-affix-wrapper-focused, +.ant-input-affix-wrapper:hover { + border-color: var(--primary-hover-color) !important; +} + +.ant-select-focused .ant-select-selector, +.ant-select-selector:hover, +.ant-select-item-option-selected:not(.ant-select-item-option-disabled) { + border-color: var(--primary-hover-color) !important; +} + +.ant-select-item-option-selected:not(.ant-select-item-option-disabled) { + background-color: rgba(26, 26, 26, 0.1) !important; +} + +.ant-select-focused:not(.ant-select-disabled).ant-select:not(.ant-select-customize-input) .ant-select-selector { + border-color: var(--primary-hover-color) !important; + box-shadow: 0 0 0 2px rgba(26, 26, 26, 0.2) !important; +} + +/* 菜单相关 */ +.ant-menu-dark.ant-menu-dark:not(.ant-menu-horizontal) .ant-menu-item-selected { + background-color: var(--primary-hover-color) !important; +} + +.ant-menu-dark .ant-menu-item:hover { + background-color: var(--primary-hover-color) !important; +} + +.ant-layout-sider-trigger { + background: var(--primary-color) !important; +} + +/* 表格相关 */ +.ant-table-thead > tr > th { + background: var(--primary-light-color) !important; +} + +.ant-pagination-item-active { + border-color: var(--primary-color) !important; +} + +.ant-pagination-item-active a { + color: var(--primary-color) !important; +} + +.ant-pagination-item:hover { + border-color: var(--primary-hover-color) !important; +} + +.ant-pagination-item:hover a { + color: var(--primary-hover-color) !important; +} + +.ant-pagination-prev:hover .ant-pagination-item-link, +.ant-pagination-next:hover .ant-pagination-item-link { + color: var(--primary-hover-color) !important; + border-color: var(--primary-hover-color) !important; +} + +/* 标签页相关 */ +.ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn { + color: var(--primary-color) !important; +} + +.ant-tabs-ink-bar { + background-color: var(--primary-color) !important; +} + +.ant-tabs-tab:hover { + color: var(--primary-hover-color) !important; +} + +/* 卡片相关 */ +.ant-card-head { + border-bottom: 1px solid var(--primary-border-color) !important; +} + +/* 抽屉和模态框相关 */ +.ant-drawer-title, +.ant-modal-title { + color: var(--primary-color) !important; +} + +/* 通知和消息相关 */ +.ant-notification-notice-icon-success { + color: var(--primary-color) !important; +} + +.ant-message-success .anticon { + color: var(--primary-color) !important; +} + +/* 日期选择器相关 */ +.ant-picker-cell-in-view.ant-picker-cell-selected .ant-picker-cell-inner { + background-color: var(--primary-color) !important; +} + +.ant-picker-cell-in-view.ant-picker-cell-today .ant-picker-cell-inner::before { + border-color: var(--primary-color) !important; +} + +.ant-picker:hover, +.ant-picker-focused { + border-color: var(--primary-hover-color) !important; +} + +/* 下拉菜单相关 */ +.ant-dropdown-menu-item:hover { + background-color: rgba(26, 26, 26, 0.1) !important; +} + +/* 树形控件相关 */ +.ant-tree-checkbox-checked .ant-tree-checkbox-inner { + background-color: var(--primary-color) !important; + border-color: var(--primary-color) !important; +} + +.ant-tree-node-selected { + background-color: rgba(26, 26, 26, 0.1) !important; +} + +/* 链接相关 */ +a { + color: var(--primary-color) !important; +} + +a:hover { + color: var(--primary-hover-color) !important; +} + +.ant-table a { + color: var(--primary-color) !important; +} + +.ant-table a:hover { + color: var(--primary-hover-color) !important; +} \ No newline at end of file diff --git a/src/layouts/AdminLayout.vue b/src/layouts/AdminLayout.vue index af96641..7a8cf85 100644 --- a/src/layouts/AdminLayout.vue +++ b/src/layouts/AdminLayout.vue @@ -1,7 +1,7 @@