Files
superlink/static/css/style.css
T

779 lines
21 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* style.css - 全局样式(左侧导航 + 内容区自适应) */
* { margin: 0; padding: 0; box-sizing: border-box; }
html, body { height: 100%; }
body {
font-family: "Microsoft YaHei", "PingFang SC", Arial, sans-serif;
background: #f2f4f8;
color: #333;
font-size: 14px;
}
/* ---------- 布局 ---------- */
.layout { display: flex; min-height: 100vh; }
/* 左侧导航 */
.sidebar {
width: 220px;
background: #1e2a3a;
color: #cfd8e3;
flex-shrink: 0;
display: flex;
flex-direction: column;
position: sticky;
top: 0;
height: 100vh;
overflow-y: auto;
}
.sidebar .logo {
display: block;
padding: 20px 18px;
font-size: 18px;
font-weight: bold;
color: #fff;
border-bottom: 1px solid rgba(255,255,255,.08);
letter-spacing: 1px;
text-decoration: none;
cursor: pointer;
}
.sidebar .logo:hover { color: #fff; }
.sidebar .logo .version {
font-size: 11px;
font-weight: normal;
color: #8fa3bd;
margin-left: 6px;
letter-spacing: 0;
}
.sidebar .logo span { color: #4fa3ff; }
.sidebar .menu { flex: 1; padding: 10px 0; }
.sidebar .menu-item {
display: flex;
align-items: center;
gap: 8px;
padding: 12px 20px;
color: #cfd8e3;
text-decoration: none;
font-size: 14px;
cursor: pointer;
border-left: 3px solid transparent;
transition: background .2s;
}
.sidebar .menu-item:hover { background: rgba(255,255,255,.06); color: #fff; }
.sidebar .menu-item.active {
background: rgba(79,163,255,.15);
color: #fff;
border-left-color: #4fa3ff;
}
.sidebar .menu-item .icon { display: inline-flex; flex-shrink: 0; }
.sidebar .menu-item .label { flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sidebar .menu-item .badge {
float: right;
background: #4fa3ff;
color: #fff;
border-radius: 10px;
font-size: 11px;
padding: 1px 7px;
}
/* 分组菜单(一级分组标题 + 二级子菜单) */
.sidebar .menu-group { border-left: 3px solid transparent; }
.sidebar .menu-group.open { border-left-color: #4fa3ff; }
.sidebar .menu-group-title {
display: flex;
align-items: center;
gap: 8px;
padding: 12px 20px;
color: #cfd8e3;
font-size: 14px;
cursor: pointer;
user-select: none;
transition: background .2s;
}
.sidebar .menu-group-title:hover { background: rgba(255,255,255,.06); color: #fff; }
.sidebar .menu-group.open > .menu-group-title { color: #fff; }
.sidebar .menu-group-title .icon { display: inline-flex; flex-shrink: 0; }
.sidebar .menu-group-title .label { flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sidebar .menu-group-title .arrow {
color: #8fa3bd;
font-size: 10px;
transition: transform .2s;
}
.sidebar .menu-group.open > .menu-group-title .arrow { transform: rotate(90deg); }
.sidebar .menu-group-body { display: none; }
.sidebar .menu-item.sub {
padding-left: 40px;
font-size: 13px;
border-left: none;
gap: 0;
}
/* ---------- 侧边栏折叠态(桌面手动折叠 / 移动端自动折叠,仅剩图标) ---------- */
.layout.sidebar-collapsed .sidebar { width: 64px; }
.layout.sidebar-collapsed .sidebar .logo {
padding: 20px 4px;
text-align: center;
font-size: 0;
letter-spacing: 0;
}
.layout.sidebar-collapsed .sidebar .logo .version { display: none; }
.layout.sidebar-collapsed .menu-item,
.layout.sidebar-collapsed .menu-group-title {
padding: 13px 0;
justify-content: center;
gap: 0;
}
.layout.sidebar-collapsed .menu-item .label,
.layout.sidebar-collapsed .menu-group-title .label,
.layout.sidebar-collapsed .menu-group-title .arrow { display: none; }
.layout.sidebar-collapsed .menu-group-body { display: none !important; }
.layout.sidebar-collapsed .menu-item.sub { padding-left: 0; }
.layout.sidebar-collapsed .sidebar .menu { padding: 10px 0; }
.sidebar .user-info {
padding: 14px 18px;
border-top: 1px solid rgba(255,255,255,.08);
font-size: 13px;
}
.sidebar .user-info .name { color: #fff; font-weight: bold; }
.sidebar .user-info .logout {
float: right;
color: #8fa3bd;
cursor: pointer;
text-decoration: none;
}
.sidebar .user-info .logout:hover { color: #ff6b6b; }
/* 内容区 */
.main {
flex: 1;
display: flex;
flex-direction: column;
min-width: 0;
}
.topbar {
height: 54px;
background: #fff;
border-bottom: 1px solid #e5e9f0;
display: flex;
align-items: center;
padding: 0 22px;
position: sticky;
top: 0;
z-index: 100;
}
.topbar .page-title { font-size: 16px; font-weight: bold; color: #1e2a3a; }
.topbar .breadcrumb { margin-left: 14px; font-size: 13px; color: #8a94a6; }
.topbar .topbar-spacer { flex: 1; }
.topbar .sidebar-toggle {
display: inline-flex;
align-items: center;
cursor: pointer;
color: #5a6472;
margin-right: 12px;
padding: 4px;
border-radius: 4px;
}
.topbar .sidebar-toggle:hover { background: #f2f4f8; color: #2a5298; }
/* ---------- 右上角用户菜单(登录/登出、角色、登录状态) ---------- */
.user-menu { position: relative; margin-left: auto; }
.user-menu-trigger {
display: flex;
align-items: center;
gap: 8px;
cursor: pointer;
padding: 5px 10px;
border-radius: 4px;
font-size: 13px;
color: #4a5568;
user-select: none;
-webkit-user-select: none;
}
.user-menu-trigger:hover { background: #f2f4f8; }
.user-menu-trigger .avatar {
width: 28px;
height: 28px;
border-radius: 50%;
background: #2a5298;
color: #fff;
display: inline-flex;
align-items: center;
justify-content: center;
font-size: 14px;
}
.user-menu-trigger .caret { color: #8a94a6; font-size: 10px; }
.user-menu-dropdown {
display: none;
position: absolute;
right: 0;
top: 100%;
min-width: 230px;
background: #fff;
border: 1px solid #e5e9f0;
border-radius: 6px;
box-shadow: 0 8px 24px rgba(0,0,0,.12);
z-index: 1000;
padding: 6px 0;
}
.user-menu.open .user-menu-dropdown { display: block; }
.user-menu-dropdown .um-head {
padding: 10px 14px;
border-bottom: 1px solid #f0f2f6;
}
.user-menu-dropdown .um-head .um-name { font-weight: bold; color: #1e2a3a; font-size: 14px; }
.user-menu-dropdown .um-head .um-sub { font-size: 12px; color: #8a94a6; margin-top: 2px; }
.user-menu-dropdown .um-item {
padding: 8px 14px;
font-size: 13px;
color: #5a6472;
display: flex;
justify-content: space-between;
gap: 12px;
}
.user-menu-dropdown .um-item .um-label { color: #8a94a6; }
.user-menu-dropdown .um-item b { font-weight: 600; }
.user-menu-dropdown .um-ok { color: #27ae60; }
.user-menu-dropdown .um-off { color: #e74c3c; }
.user-menu-dropdown .um-divider { border-top: 1px solid #f0f2f6; margin: 4px 0; }
.user-menu-dropdown .um-action {
display: block;
padding: 9px 14px;
font-size: 13px;
color: #2a5298;
cursor: pointer;
text-decoration: none;
}
.user-menu-dropdown .um-action:hover { background: #f7f9fc; }
.user-menu-dropdown .um-action.um-danger { color: #e74c3c; }
.content {
padding: 20px 22px;
flex: 1;
}
/* ---------- 卡片 ---------- */
.card {
background: #fff;
border-radius: 6px;
border: 1px solid #e5e9f0;
padding: 18px;
margin-bottom: 16px;
}
.card-title {
font-size: 15px;
font-weight: bold;
color: #1e2a3a;
margin-bottom: 14px;
padding-bottom: 10px;
border-bottom: 1px solid #f0f2f6;
}
/* ---------- 工具栏 ---------- */
.toolbar {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 10px;
margin-bottom: 14px;
}
.toolbar input[type="text"],
.toolbar select {
height: 34px;
border: 1px solid #d9dee8;
border-radius: 4px;
padding: 0 10px;
font-size: 13px;
outline: none;
min-width: 130px;
background: #fff;
}
.toolbar input:focus, .toolbar select:focus { border-color: #4fa3ff; }
.toolbar .spacer { flex: 1; }
/* 搜索框:框内左侧字段选择 + 框内右侧搜索图标 */
.toolbar .search-wrap {
display: inline-flex;
align-items: center;
height: 34px;
border: 1px solid #d9dee8;
border-radius: 4px;
background: #fff;
overflow: hidden;
}
.toolbar .search-wrap:focus-within { border-color: #4fa3ff; }
.toolbar .search-wrap select {
border: none;
height: 100%;
min-width: 108px;
max-width: 150px;
border-right: 1px solid #eef0f4;
border-radius: 0;
background: #f7f9fc;
font-size: 12px;
padding: 0 8px;
}
.toolbar .search-wrap input[type="text"] {
border: none;
height: 100%;
min-width: 220px;
border-radius: 0;
box-shadow: none;
outline: none;
}
.toolbar .search-wrap .search-icon {
display: inline-flex;
align-items: center;
justify-content: center;
width: 34px;
height: 100%;
color: #8a94a6;
cursor: pointer;
background: #fff;
}
.toolbar .search-wrap .search-icon:hover { color: #2a5298; }
/* 筛选弹窗条件行 */
.filter-row {
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 8px;
}
/* 渠道效能分析-来源明细:单行显示,过长用…占位(不分行) */
.ana-detail .src-cell {
max-width: 200px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
/* ---------- 按钮 ---------- */
.btn {
display: inline-block;
height: 34px;
line-height: 32px;
padding: 0 16px;
border: 1px solid #d9dee8;
border-radius: 4px;
background: #fff;
color: #333;
font-size: 13px;
cursor: pointer;
text-decoration: none;
transition: all .15s;
}
.btn:hover { border-color: #4fa3ff; color: #2a5298; }
.btn-primary { background: #2a5298; border-color: #2a5298; color: #fff; }
.btn-primary:hover { background: #1e3c72; border-color: #1e3c72; color: #fff; }
.btn-success { background: #27ae60; border-color: #27ae60; color: #fff; }
.btn-success:hover { background: #219150; border-color: #219150; color: #fff; }
.btn-danger { background: #e74c3c; border-color: #e74c3c; color: #fff; }
.btn-danger:hover { background: #c0392b; border-color: #c0392b; color: #fff; }
.btn-warning { background: #f39c12; border-color: #f39c12; color: #fff; }
.btn-warning:hover { background: #d68910; border-color: #d68910; color: #fff; }
.btn-sm { height: 26px; line-height: 24px; padding: 0 10px; font-size: 12px; }
.btn:disabled { opacity: .5; cursor: not-allowed; }
/* ---------- 表格 ---------- */
.table-wrap { overflow-x: auto; }
table.grid {
width: 100%;
border-collapse: collapse;
background: #fff;
font-size: 13px;
}
table.grid th, table.grid td {
border: 1px solid #eef0f4;
padding: 9px 10px;
text-align: left;
white-space: nowrap;
max-width: 320px;
overflow: hidden;
text-overflow: ellipsis;
}
table.grid th {
background: #f7f9fc;
color: #4a5568;
font-weight: bold;
}
table.grid tr:hover td { background: #f7faff; }
table.grid .ops a {
margin-right: 8px;
cursor: pointer;
color: #2a5298;
text-decoration: none;
font-size: 12px;
}
table.grid .ops a.danger { color: #e74c3c; }
table.grid .ops a:hover { text-decoration: underline; }
/* ---------- 分页 ---------- */
.pagination {
display: flex;
align-items: center;
justify-content: flex-end;
margin-top: 14px;
font-size: 13px;
color: #5a6472;
gap: 6px;
}
.pagination a, .pagination span.pg {
display: inline-block;
min-width: 30px;
height: 30px;
line-height: 28px;
text-align: center;
border: 1px solid #d9dee8;
border-radius: 4px;
background: #fff;
cursor: pointer;
color: #333;
text-decoration: none;
padding: 0 6px;
}
.pagination a:hover { border-color: #4fa3ff; color: #2a5298; }
.pagination span.pg.current { background: #2a5298; border-color: #2a5298; color: #fff; }
.pagination span.pg.disabled { color: #b6bfcc; cursor: not-allowed; }
/* ---------- 表单弹窗 ---------- */
.form-grid { display: flex; flex-wrap: wrap; gap: 14px 20px; }
.form-grid .form-item { width: calc(50% - 10px); }
.form-grid .form-item.full { width: 100%; }
.form-item label {
display: block;
font-size: 13px;
color: #5a6472;
margin-bottom: 6px;
}
.form-item label .req { color: #e74c3c; margin-left: 2px; }
.form-item input[type="text"],
.form-item input[type="password"],
.form-item input[type="number"],
.form-item input[type="date"],
.form-item select,
.form-item textarea {
width: 100%;
border: 1px solid #d9dee8;
border-radius: 4px;
padding: 8px 10px;
font-size: 13px;
outline: none;
background: #fff;
font-family: inherit;
}
.form-item textarea { min-height: 70px; resize: vertical; }
.form-item input:focus, .form-item select:focus, .form-item textarea:focus { border-color: #4fa3ff; }
.dialog-footer {
margin-top: 18px;
text-align: right;
display: flex;
justify-content: flex-end;
gap: 10px;
}
/* ---------- 指标卡 ---------- */
.stat-cards {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 14px;
margin-bottom: 16px;
}
/* 碎片处理中心专用:5 张指标卡一行排布(不影响其它页面) */
.stat-cards.stat-cards-5 {
grid-template-columns: repeat(5, 1fr);
}
.stat-card {
background: #fff;
border-radius: 6px;
border: 1px solid #e5e9f0;
border-left: 4px solid #2a5298;
padding: 16px 18px;
}
.stat-card .num { font-size: 26px; font-weight: bold; color: #1e2a3a; }
.stat-card .label { font-size: 13px; color: #8a94a6; margin-top: 4px; }
.stat-card.c-green { border-left-color: #27ae60; }
.stat-card.c-orange { border-left-color: #f39c12; }
.stat-card.c-red { border-left-color: #e74c3c; }
.stat-card.c-blue { border-left-color: #2a5298; }
.stat-card.c-purple { border-left-color: #8e44ad; }
.stat-card.c-teal { border-left-color: #16a085; }
.stat-card.c-cyan { border-left-color: #00a8c5; }
/* ---------- 图表容器 ---------- */
.chart-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.chart-box { background: #fff; border-radius: 6px; border: 1px solid #e5e9f0; padding: 16px; }
.chart-box.full { grid-column: 1 / -1; }
.chart-box .chart-title { font-size: 14px; font-weight: bold; color: #1e2a3a; margin-bottom: 10px; }
.chart-box .chart { height: 320px; }
/* 图表标题内的 Tab 切换 */
.chart-title .tabs { float: right; font-weight: normal; font-size: 12px; }
.chart-title .tabs .tab {
display: inline-block;
padding: 2px 12px;
margin-left: 4px;
border: 1px solid #d9dee8;
border-radius: 3px;
color: #5a6472;
cursor: pointer;
background: #fff;
user-select: none;
}
.chart-title .tabs .tab:hover { border-color: #4fa3ff; color: #2a5298; }
.chart-title .tabs .tab.active {
background: #2a5298;
border-color: #2a5298;
color: #fff;
}
/* ---------- 编辑弹窗 Tab 卡(工商信息/财务信息/资质认证) ---------- */
.edit-tabs { border: 1px solid #e5e9f0; border-radius: 6px; }
.edit-tabs-head {
display: flex;
border-bottom: 1px solid #e5e9f0;
background: #f7f9fc;
border-radius: 6px 6px 0 0;
}
.edit-tabs-head .edit-tab {
padding: 10px 24px;
font-size: 13px;
color: #5a6472;
cursor: pointer;
border-right: 1px solid #e5e9f0;
user-select: none;
background: transparent;
}
.edit-tabs-head .edit-tab:hover { color: #2a5298; }
.edit-tabs-head .edit-tab.active {
background: #fff;
color: #2a5298;
font-weight: bold;
border-bottom: 2px solid #2a5298;
margin-bottom: -1px;
}
.edit-tabs-body {
padding: 14px 16px;
background: #fff;
border-radius: 0 0 6px 6px;
max-height: 62vh;
overflow-y: auto;
}
/* 年度财务明细表格 */
.fin-tbl input {
border: 1px solid #d9dee8;
border-radius: 4px;
padding: 4px 6px;
font-size: 12px;
background: #fff;
width: 78px;
}
.fin-tbl input[name="fin-fiscal_year"],
.fin-tbl input[name="fin-employee_count"] { width: 66px; }
.fin-tbl input[name="fin-financial_report_url"] { width: 150px; }
.fin-tbl input[name="fin-data_source"] { width: 88px; }
.cert-row { display: flex; gap: 8px; margin-bottom: 8px; align-items: center; flex-wrap: wrap; }
.cert-row select, .cert-row input {
border: 1px solid #d9dee8;
border-radius: 4px;
padding: 7px 8px;
font-size: 13px;
background: #fff;
}
.cert-row select { width: 200px; }
.cert-row input[type="text"] { width: 170px; }
.cert-row input[type="date"] { width: 140px; }
/* ---------- 基本信息锚点导航布局(左侧文字锚 + 右侧分区) ---------- */
.form-anchor-layout {
display: flex;
gap: 14px;
align-items: flex-start;
}
.form-anchor-nav {
flex: 0 0 86px;
display: flex;
flex-direction: column;
gap: 2px;
position: sticky;
top: 0;
border-right: 1px solid #eef0f4;
padding-right: 10px;
padding-top: 4px;
}
.form-anchor-nav .anchor-link {
display: block;
padding: 7px 10px;
font-size: 13px;
color: #5a6472;
text-decoration: none;
border-radius: 4px;
white-space: nowrap;
}
.form-anchor-nav .anchor-link:hover { color: #2a5298; background: #f2f6fd; }
.form-anchor-nav .anchor-link.active {
color: #2a5298;
background: #e8f0fe;
font-weight: bold;
}
.form-anchor-body { flex: 1; min-width: 0; }
.form-sec { padding: 4px 2px 14px; border-bottom: 1px dashed #eef0f4; }
.form-sec:last-child { border-bottom: none; }
.form-sec-title {
font-size: 13px;
font-weight: bold;
color: #2a5298;
margin-bottom: 10px;
padding-left: 8px;
border-left: 3px solid #2a5298;
line-height: 1.4;
}
/* 联系方式行(企业 social_accounts) */
.account-row {
display: flex;
gap: 8px;
margin-bottom: 8px;
align-items: center;
flex-wrap: wrap;
}
.account-row select, .account-row input {
border: 1px solid #d9dee8;
border-radius: 4px;
padding: 7px 8px;
font-size: 13px;
background: #fff;
}
.account-row select[name="acc-platform"] { width: 110px; }
.account-row input[name="acc-account"] { width: 150px; }
.account-row input[name="acc-url"] { width: 210px; }
.account-row input[name="acc-remark"] { width: 130px; }
.account-row select[name="acc-active"] { width: 76px; }
/* ---------- 人员工作履历行 ---------- */
.exp-row {
display: flex;
gap: 8px;
margin-bottom: 8px;
align-items: center;
flex-wrap: wrap;
}
.exp-row select, .exp-row input {
border: 1px solid #d9dee8;
border-radius: 4px;
padding: 7px 8px;
font-size: 13px;
background: #fff;
}
.exp-row input[type="text"] { width: 110px; }
.exp-row input[type="date"] { width: 130px; }
/* 家乡置灰(中国/港澳台国籍时不可填) */
.area-disabled select, .area-disabled input {
background: #f2f3f5 !important;
color: #b6bfcc !important;
cursor: not-allowed;
}
/* 人脉弹窗姓名链接 */
.link { color: #2a5298; text-decoration: underline; cursor: pointer; }
.link:hover { color: #4fa3ff; }
/* ---------- 渠道管理:效能分析面板 ---------- */
.ana-panel {
flex: 1 1 46%;
min-width: 340px;
border: 1px solid #e5e9f0;
border-radius: 6px;
overflow: hidden;
}
.ana-head {
display: flex;
justify-content: space-between;
align-items: center;
padding: 10px 14px;
background: #f7f9fc;
border-bottom: 1px solid #e5e9f0;
font-size: 13px;
font-weight: bold;
color: #1e2a3a;
}
.ana-year {
border: 1px solid #d9dee8;
border-radius: 4px;
padding: 4px 8px;
font-size: 12px;
background: #fff;
}
.ana-body { padding: 12px 14px; }
.ana-chart { width: 100%; height: 260px; }
.ana-detail {
margin-top: 10px;
border-top: 1px dashed #eef0f4;
padding-top: 10px;
}
.ana-detail-title {
font-size: 12px;
color: #2a5298;
font-weight: bold;
margin-bottom: 6px;
}
/* ---------- 页脚(版权/备案) ---------- */
.footer {
padding: 14px 22px;
text-align: center;
color: #8a94a6;
font-size: 12px;
border-top: 1px solid #e5e9f0;
background: #fff;
}
/* ---------- 占位图(扁平图标放大) ---------- */
.placeholder-box .big svg { width: 48px; height: 48px; color: #b6bfcc; }
/* ---------- 标签 ---------- */
.tag {
display: inline-block;
padding: 2px 8px;
border-radius: 3px;
font-size: 12px;
background: #eef4ff;
color: #2a5298;
}
.tag-green { background: #eafaf1; color: #27ae60; }
.tag-red { background: #fdecea; color: #e74c3c; }
.tag-orange { background: #fef5e7; color: #f39c12; }
.tag-blue { background: #eaf2fd; color: #2a5298; }
.tag-gray { background: #f0f2f6; color: #8a94a6; }
/* ---------- 空状态 ---------- */
.empty-tip {
text-align: center;
color: #b6bfcc;
padding: 60px 0;
font-size: 14px;
}
.empty-tip .big { font-size: 40px; margin-bottom: 10px; }
/* ---------- 占位说明 ---------- */
.placeholder-box {
text-align: center;
padding: 60px 20px;
color: #8a94a6;
}
.placeholder-box .big { font-size: 46px; margin-bottom: 14px; }
.placeholder-box h3 { color: #4a5568; margin-bottom: 8px; }
/* 滚动条美化 */
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-thumb { background: #c8d0dc; border-radius: 4px; }
::-webkit-scrollbar-track { background: transparent; }
@media (max-width: 900px) {
.sidebar { width: 64px; }
.sidebar .menu-item { text-align: center; padding: 12px 6px; font-size: 12px; }
.sidebar .menu-item .icon { margin-right: 0; }
.sidebar .logo { font-size: 14px; text-align: center; padding: 16px 4px; }
.sidebar .user-info { display: none; }
.stat-cards { grid-template-columns: repeat(2, 1fr); }
.chart-grid { grid-template-columns: 1fr; }
}