Files
ReelShortWeb/src/styles/business/drama-management.css
T

852 lines
17 KiB
CSS

.library-toolbar {
justify-content: flex-start;
gap: 16px;
min-height: 64px;
padding: 12px 0 !important;
flex-wrap: wrap;
}
.drama-filters {
display: flex;
align-items: center;
gap: 10px;
/* 允许收缩并换行:窄窗口下筛选控件排到第二行,而不是被挤出可视区 */
flex: 1 1 auto;
min-width: 0;
flex-wrap: wrap;
}
.drama-filters > .el-date-editor {
width: 360px;
max-width: 100%;
}
.drama-filters > .el-input {
width: 300px !important;
flex: 0 0 300px !important;
}
.drama-filters > .el-select {
width: 160px !important;
flex: 0 0 160px !important;
}
.table-result-count {
margin-left: auto;
color: #858b95;
font-size: 13px;
white-space: nowrap;
}
.table-actions {
display: flex;
align-items: center;
gap: 8px;
white-space: nowrap;
flex-wrap: nowrap;
}
.table-actions .el-button {
/* 统一尺寸:高度固定、水平内边距,靠行高垂直居中,避免文字被压扁 */
height: 28px !important;
min-height: 28px !important;
padding: 0 10px !important;
font-size: 13px !important;
font-weight: 500 !important;
border-radius: var(--app-radius-sm);
}
/* Element Plus 默认给相邻按钮加 12px 外边距,会和这里的 gap 叠加导致换行 */
.table-actions .el-button + .el-button {
margin-left: 0 !important;
}
.drama-cell .drama-cover,
.drama-cell .drama-cover-image {
width: 44px;
height: 56px;
flex: 0 0 44px;
border-radius: var(--app-radius-sm);
object-fit: cover;
}
.drama-cell .drama-cover {
display: grid;
place-content: center;
text-align: center;
font-size: 10px;
line-height: 1.3;
color: #7e8791;
background: #f0f2f4 !important;
}
/* 名称列只放封面 + 标题,长标题在格子里换行,不撑破单元格 */
.drama-cell > div {
min-width: 0;
}
.drama-cell b {
overflow-wrap: anywhere;
}
/* 空值占位,弱化显示 */
.table-empty-text {
color: #a8aeb8;
font-size: 13px;
}
/* 短剧编辑弹窗:固定宽度、内容区滚动、底部操作固定。 */
.drama-editor-dialog {
display: flex;
max-height: calc(100vh - 40px);
overflow: hidden;
flex-direction: column;
border-radius: var(--app-radius-lg) !important;
}
.drama-editor-dialog .el-dialog__body {
flex: 1 1 auto;
padding: 8px 24px 0;
overflow-y: auto;
}
.drama-editor-dialog .el-dialog__footer {
flex: 0 0 auto;
padding: 14px 24px;
background: var(--el-bg-color-overlay);
border-top: 1px solid var(--el-border-color-lighter);
}
.drama-editor-dialog .el-dialog__footer .el-button {
min-width: 88px;
height: 36px;
}
.editor-section {
padding: 4px 0 18px;
border-bottom: 1px solid var(--el-border-color-lighter);
}
.editor-section + .editor-section {
padding-top: 18px;
}
.editor-section:last-child {
padding-bottom: 4px;
border-bottom: 0;
}
.editor-section-title {
margin: 0 0 14px;
color: var(--el-text-color-primary);
font-size: 15px;
font-weight: 650;
line-height: 1.4;
}
.editor-grid {
display: grid;
gap: 0 16px;
}
.editor-grid--two {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.editor-number {
width: 180px !important;
}
.readonly-stat {
min-width: 180px;
height: 32px;
padding: 0 12px;
color: var(--el-text-color-secondary);
line-height: 32px;
background: var(--el-fill-color-lighter);
border: 1px solid var(--el-border-color-lighter);
border-radius: var(--el-border-radius-base);
}
.readonly-stat-hint {
margin: 4px 0 0;
color: var(--el-text-color-placeholder);
font-size: 12px;
line-height: 1.4;
}
.cover-editor {
display: flex;
gap: 18px;
align-items: flex-start;
}
.cover-preview-card {
position: relative;
display: grid;
flex: 0 0 96px;
width: 96px;
height: 128px;
overflow: hidden;
border: 1px solid var(--el-border-color);
border-radius: 8px;
background: var(--el-fill-color-lighter);
}
.cover-preview-card img {
position: absolute;
inset: 0;
display: block;
width: 100%;
height: 100%;
max-height: 100%;
object-fit: cover;
}
.cover-preview-empty {
display: flex;
height: 100%;
color: var(--el-text-color-placeholder);
font-size: 12px;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 8px;
border: 1px dashed var(--el-border-color);
border-radius: 8px;
}
.cover-upload-mask {
position: absolute;
inset: 0;
display: flex;
color: #fff;
font-size: 12px;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 4px;
background: color-mix(in srgb, var(--el-color-primary) 78%, transparent);
}
.cover-upload-mask b {
font-size: 16px;
}
.cover-editor-meta {
display: flex;
flex: 1 1 auto;
min-width: 0;
flex-direction: column;
gap: 10px;
}
.cover-status-line {
display: flex;
align-items: center;
gap: 10px;
min-width: 0;
}
.cover-filename {
overflow: hidden;
color: var(--el-text-color-regular);
font-size: 13px;
text-overflow: ellipsis;
white-space: nowrap;
}
.cover-hint {
margin: 0;
color: var(--el-text-color-secondary);
font-size: 12px;
}
.cover-actions {
display: flex;
align-items: center;
gap: 10px;
flex-wrap: wrap;
}
.cover-actions .el-button {
height: 36px;
}
.cover-original-link {
color: var(--el-color-primary);
font-size: 13px;
text-decoration: none;
}
.cover-original-link:hover {
text-decoration: underline;
}
@media (max-width: 600px) {
.drama-editor-dialog {
width: calc(100vw - 24px) !important;
margin: 12px auto !important;
}
.drama-editor-dialog .el-dialog__body {
padding-right: 18px;
padding-left: 18px;
}
.editor-grid--two {
grid-template-columns: 1fr;
}
.cover-editor {
flex-direction: column;
align-items: center;
}
.cover-preview-card {
flex-basis: 128px;
}
.cover-editor-meta {
width: 100%;
}
}
html.dark .cover-preview-card,
html.dark .cover-preview-empty {
background: var(--el-fill-color-light);
}
/* 剧集编辑弹窗 */
.episode-editor-dialog {
display: flex;
max-height: calc(100vh - 40px);
overflow: hidden;
flex-direction: column;
border-radius: var(--app-radius-lg) !important;
}
.episode-editor-dialog .el-dialog__body {
flex: 1 1 auto;
padding: 8px 24px 0;
overflow-y: auto;
}
.episode-editor-dialog .el-dialog__footer {
flex: 0 0 auto;
padding: 14px 24px;
background: var(--el-bg-color-overlay);
border-top: 1px solid var(--el-border-color-lighter);
}
.episode-editor-dialog .el-dialog__footer .el-button {
min-width: 88px;
height: 36px;
}
.episode-editor-section {
padding: 4px 0 18px;
border-bottom: 1px solid var(--el-border-color-lighter);
}
.episode-editor-section + .episode-editor-section {
padding-top: 18px;
}
.episode-editor-section:last-child {
padding-bottom: 4px;
border-bottom: 0;
}
.episode-editor-section-title {
margin: 0 0 14px;
color: var(--el-text-color-primary);
font-size: 15px;
font-weight: 650;
line-height: 1.4;
}
.episode-editor-grid {
display: grid;
gap: 0 16px;
}
.episode-editor-grid--two {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.episode-editor-grid--three {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.episode-editor-number {
width: 180px !important;
}
.episode-video-editor {
display: flex;
gap: 18px;
width: 100%;
align-items: flex-start;
}
.episode-video-preview-card {
position: relative;
flex: 0 0 240px;
width: 240px;
aspect-ratio: 16 / 9;
overflow: hidden;
border: 1px solid var(--el-border-color);
border-radius: 10px;
background: #000;
}
.episode-editor-video {
display: block;
width: 100%;
height: 100%;
object-fit: contain;
background: #000;
}
.episode-video-empty-upload,
.episode-video-empty-upload .el-upload {
width: 100%;
height: 100%;
}
.episode-video-empty-upload .el-upload-dragger {
display: flex;
width: 100%;
height: 100%;
padding: 0;
color: var(--el-text-color-secondary);
background: var(--el-fill-color-lighter);
border: 1px dashed var(--el-border-color);
border-radius: 9px;
align-items: center;
justify-content: center;
}
.episode-video-empty-copy {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 5px;
color: var(--el-text-color-secondary);
}
.episode-video-empty-copy b {
color: var(--el-text-color-regular);
font-size: 13px;
}
.episode-video-empty-copy span {
font-size: 11px;
}
.episode-video-upload-mask {
position: absolute;
inset: 0;
display: flex;
color: #fff;
font-size: 12px;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 4px;
background: color-mix(in srgb, var(--el-color-primary) 78%, transparent);
}
.episode-video-upload-mask b {
font-size: 16px;
}
.episode-video-meta {
display: flex;
flex: 1 1 auto;
min-width: 0;
flex-direction: column;
gap: 10px;
}
.episode-video-status {
display: flex;
align-items: center;
gap: 10px;
min-width: 0;
}
.episode-video-filename {
overflow: hidden;
color: var(--el-text-color-regular);
font-size: 13px;
text-overflow: ellipsis;
white-space: nowrap;
}
.episode-video-hint {
margin: 0;
color: var(--el-text-color-secondary);
font-size: 12px;
}
.episode-video-actions {
display: flex;
align-items: center;
gap: 10px;
flex-wrap: wrap;
}
.episode-video-actions .el-button {
height: 36px;
}
.episode-video-link {
color: var(--el-color-primary);
font-size: 13px;
text-decoration: none;
}
.episode-video-link:hover {
text-decoration: underline;
}
.episode-video-empty-upload {
cursor: pointer;
}
@media (max-width: 600px) {
.episode-editor-dialog {
width: calc(100vw - 24px) !important;
margin: 12px auto !important;
}
.episode-editor-dialog .el-dialog__body {
padding-right: 18px;
padding-left: 18px;
}
.episode-editor-grid--two,
.episode-editor-grid--three {
grid-template-columns: 1fr;
}
.episode-video-editor {
flex-direction: column;
align-items: center;
}
.episode-video-preview-card {
flex-basis: 135px;
}
.episode-video-meta {
width: 100%;
}
}
html.dark .episode-video-preview-card,
html.dark .episode-video-empty-upload .el-upload-dragger {
background: var(--el-fill-color-light);
}
/* 剧集预览弹窗里的播放器 */
.episode-video-player {
display: block;
width: 100%;
max-height: 60vh;
object-fit: contain;
border-radius: var(--app-radius-md);
background: #000 !important;
}
/* 剧集列表里的视频缩略播放器:默认显示首帧,鼠标移入即播放 */
.episode-video-thumb {
display: block;
width: 120px;
height: 68px;
object-fit: contain;
cursor: pointer;
border: 1px solid var(--el-border-color-lighter);
border-radius: var(--app-radius-sm);
background: #000 !important;
}
/* 列表里点视频即放大播放,给个悬停反馈 */
.episode-video-thumb:hover {
border-color: var(--el-color-primary);
box-shadow: 0 0 0 2px color-mix(in srgb, var(--el-color-primary) 25%, transparent);
}
.dark .table-result-count {
color: #a6aeb9;
}
.dark .drama-cell .drama-cover {
background: #353b45 !important;
color: #b9c1cb;
}
@media (max-width: 800px) {
.drama-filters > .el-input {
width: min(300px, 45vw) !important;
flex-basis: min(300px, 45vw) !important;
}
.drama-filters > .el-select {
width: 150px !important;
flex-basis: 150px !important;
}
.table-result-count {
display: none;
}
}
.drama-el-table,
.dashboard-el-table {
width: 100%;
font-size: 13px;
--el-table-header-bg-color: #f7f8fa;
--el-table-border-color: #eaecf0;
--el-table-row-hover-bg-color: #f8fafc;
}
.drama-el-table .el-table__cell,
.dashboard-el-table .el-table__cell {
padding: 14px 0;
}
.drama-el-table th.el-table__cell,
.dashboard-el-table th.el-table__cell {
font-size: 12px;
font-weight: 600;
color: #737b85;
}
.drama-el-table td.el-table__cell,
.dashboard-el-table td.el-table__cell {
font-size: 13px;
color: #505862;
}
.drama-el-table .cell,
.dashboard-el-table .cell {
line-height: 1.5;
}
.drama-el-table .el-table__inner-wrapper:before,
.dashboard-el-table .el-table__inner-wrapper:before {
height: 0;
}
.dark .drama-el-table,
.dark .dashboard-el-table {
--el-table-header-bg-color: #2b3038;
--el-table-tr-bg-color: #242830;
--el-table-bg-color: #242830;
--el-table-border-color: #3b414b;
--el-table-row-hover-bg-color: #2e3540;
--el-table-text-color: #c0c6cf;
--el-table-header-text-color: #b1b8c2;
}
.dark .drama-el-table td.el-table__cell,
.dark .dashboard-el-table td.el-table__cell {
color: #c0c6cf;
}
.table-actions .el-button--primary {
--el-button-bg-color: var(--el-color-primary);
--el-button-border-color: var(--el-color-primary);
--el-button-hover-bg-color: var(--el-color-primary-dark-2);
--el-button-hover-border-color: var(--el-color-primary-dark-2);
}
.table-actions .el-button--success {
--el-button-bg-color: #4d866a;
--el-button-border-color: #4d866a;
--el-button-hover-bg-color: #3c7358;
--el-button-hover-border-color: #3c7358;
}
.table-actions .el-button--danger {
--el-button-bg-color: var(--el-color-danger);
--el-button-border-color: var(--el-color-danger);
--el-button-hover-bg-color: var(--el-color-danger-dark-2);
--el-button-hover-border-color: var(--el-color-danger-dark-2);
}
.pagination {
display: flex;
justify-content: flex-end;
align-items: center;
padding: 18px 0 4px !important;
overflow-x: auto;
}
.pagination .el-pagination {
font-size: 13px !important;
--el-pagination-font-size: 13px;
--el-pagination-button-bg-color: #f1f3f6;
--el-pagination-hover-color: var(--el-color-primary);
--el-pagination-button-color: #4c5561;
gap: 5px;
}
.pagination .el-pagination__sizes {
margin-right: 8px;
}
.pagination .el-select {
width: 112px;
}
.pagination .el-pagination__jump {
margin-left: 8px;
white-space: nowrap;
}
.dark .pagination .el-pagination {
--el-pagination-button-bg-color: #353b45;
--el-pagination-button-color: #c3cad3;
}
.drama-el-table td.el-table__cell,
.drama-el-table th.el-table__cell {
font-size: 14px;
}
.drama-cell b {
font-size: 15px;
}
.drama-cell small {
font-size: 13px;
}
.table-result-count {
font-size: 14px;
}
.library-toolbar .el-input__inner,
.library-toolbar .el-select__placeholder {
font-size: 14px;
}
.pagination .el-pagination {
font-size: 14px !important;
--el-pagination-font-size: 14px;
}
.el-message-box__title,
.el-message-box__message {
font-size: 15px;
}
.el-message-box__btns .el-button {
font-size: 14px;
}
.episode-toolbar {
margin-bottom: 16px;
}
.episode-el-table {
margin-top: 4px;
}
.episode-table-title b,
.episode-table-title small {
display: block;
}
.episode-table-title b {
font-size: 14px;
color: #343a43;
}
.episode-table-title small {
margin-top: 4px;
font-size: 13px;
color: #858b95;
}
.dark .episode-table-title b {
color: #e5e8ed;
}
.dark .episode-table-title small {
color: #a6aeb9;
}
.menu-management-panel {
margin-top: 20px;
}
.menu-management-panel .panel-heading {
display: flex;
align-items: center;
justify-content: space-between;
gap: 16px;
}
.menu-management-panel .el-alert {
margin-top: 4px;
}
.menu-management-panel .el-select {
width: 100%;
}
.admin-user-search {
width: min(440px, 65vw);
}
.muted-text {
font-size: 13px;
color: #9298a1;
}
.role-permission-layout {
display: grid;
grid-template-columns: minmax(520px, 1.25fr) minmax(340px, 0.9fr);
gap: 18px;
align-items: start;
}
.role-table-panel,
.permission-tree-panel {
min-width: 0;
}
.role-config-table .el-table__row {
cursor: pointer;
}
.permission-tree-panel .el-tree {
max-height: 68vh;
overflow: auto;
padding: 5px 8px;
}
.permission-tree-panel .el-tree-node__label {
font-size: 14px;
}
.permission-warning {
color: #d66b4f !important;
}
.admin-users-panel {
overflow: hidden;
}
.admin-user-toolbar {
display: flex;
align-items: center;
gap: 10px;
flex-wrap: wrap;
padding: 0 0 16px;
}
.admin-user-toolbar > .el-input {
width: 230px;
}
.admin-user-toolbar > .el-select {
width: 190px;
}
/* 管理员表格不设最小宽度:列宽超出容器时由 el-table 自行横向滚动,
否则会把固定列顶到可视区之外 */
.menu-editor-layout {
display: grid;
grid-template-columns: minmax(270px, 0.7fr) minmax(520px, 1.5fr);
gap: 18px;
align-items: start;
}
.menu-tree-panel,
.menu-form-panel {
min-width: 0;
}
.menu-tree-panel .el-tree {
max-height: 70vh;
overflow: auto;
}
.menu-form-panel .panel-heading {
display: flex;
justify-content: space-between;
align-items: center;
}
.menu-editor-form {
max-width: 680px;
padding: 16px 12px 0;
}
.menu-editor-form .el-input,
.menu-editor-form .el-select {
max-width: 360px;
width: 100%;
}
.menu-editor-form .el-textarea {
max-width: 360px;
}
.menu-editor-form .el-input-number {
width: 180px;
}
.menu-form-footer {
padding: 12px 0 4px 122px;
border-top: 1px solid #eceef0;
}
.dark .menu-form-footer {
border-color: #3b414b;
}
@media (max-width: 1150px) {
.role-permission-layout,
.menu-editor-layout {
grid-template-columns: 1fr;
}
.permission-tree-panel .el-tree,
.menu-tree-panel .el-tree {
max-height: 45vh;
}
}