Files
shanxia2.0/miniprogram/styles/mp-shell.scss
T

425 lines
8.1 KiB
SCSS

// 山峡小程序壳层样式(对齐 mobile-ui/shanxia-mp-base.css 工作台 / Header / 占位)
page {
--mp-brand-green: #0a9f6d;
--mp-brand-green-dark: #087f57;
--mp-brand-green-soft: #e9f9f2;
--mp-barley: #d6a343;
--mp-bg: #f5f8f7;
--mp-surface: #ffffff;
--mp-text: #1f2a26;
--mp-muted: #6b7b74;
--mp-border: #dcebe4;
--mp-border-light: #edf5f1;
--mp-danger: #d14343;
--mp-radius-lg: 32rpx;
--mp-radius-xl: 44rpx;
--mp-header-gradient: linear-gradient(145deg, #087f57 0%, #0a9f6d 72%, #d6a343 165%);
background-color: var(--mp-bg);
color: var(--mp-text);
}
.mp-page {
min-height: 100vh;
background: var(--mp-bg);
box-sizing: border-box;
}
.mp-page--tab {
padding-bottom: calc(24rpx + env(safe-area-inset-bottom, 0px));
}
.mp-header {
background: var(--mp-header-gradient);
color: #fff;
padding:
calc(28rpx + var(--sq-safe-top, env(safe-area-inset-top, 0px)))
calc(32rpx + var(--sq-capsule-right-safe, 96px))
32rpx
32rpx;
border-bottom-left-radius: var(--mp-radius-xl);
border-bottom-right-radius: var(--mp-radius-xl);
box-shadow: 0 16rpx 40rpx rgba(10, 159, 109, 0.12);
box-sizing: border-box;
}
.mp-header--home {
padding-top: calc(40rpx + var(--sq-safe-top, env(safe-area-inset-top, 0px)));
padding-bottom: 48rpx;
}
/* 工作台:绿色渐变;左右两列上下居中;右侧用户区不受胶囊列挤压 */
.mp-header--workbench {
padding-top: calc(100rpx + var(--sq-safe-top, env(safe-area-inset-top, 0px)));
padding-right: 32rpx;
padding-bottom: 56rpx;
padding-left: 32rpx;
min-height: calc(260rpx + var(--sq-safe-top, 0px));
box-sizing: border-box;
}
.mp-header__body {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
gap: 24rpx;
width: 100%;
box-sizing: border-box;
}
.mp-header__titles {
flex: 1;
min-width: 0;
padding-right: var(--sq-capsule-right-safe, 96px);
box-sizing: border-box;
}
.mp-header__main {
flex: 1;
min-width: 0;
text-align: left;
}
.mp-header__title {
display: block;
font-size: 36rpx;
font-weight: 700;
line-height: 1.3;
text-align: left;
}
.mp-header__meta {
display: block;
margin-top: 8rpx;
font-size: 24rpx;
opacity: 0.9;
line-height: 1.4;
text-align: left;
}
.mp-header__user-stack {
display: flex;
flex-direction: column;
align-items: flex-end;
justify-content: center;
gap: 12rpx;
flex-shrink: 0;
max-width: 48%;
text-align: right;
}
.mp-header__user-line {
font-size: 26rpx;
font-weight: 600;
line-height: 1.3;
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
text-align: right;
}
.mp-header__logout {
font-size: 22rpx;
line-height: 1.3;
padding: 6rpx 16rpx;
border-radius: 999rpx;
border: 1rpx solid rgba(255, 255, 255, 0.45);
color: #fff;
opacity: 0.95;
flex-shrink: 0;
}
.mp-header__logout:active {
background: rgba(255, 255, 255, 0.12);
}
.mp-header__logout--disabled {
opacity: 0.55;
pointer-events: none;
}
.mp-section {
padding: 24rpx 32rpx;
}
.mp-module-block {
background: var(--mp-surface);
border: 1rpx solid var(--mp-border);
border-radius: var(--mp-radius-lg);
overflow: hidden;
box-shadow: 0 8rpx 24rpx rgba(10, 159, 109, 0.06);
}
.mp-module-block + .mp-module-block {
margin-top: 24rpx;
}
.mp-module-block__head {
display: flex;
align-items: center;
gap: 20rpx;
padding: 24rpx 28rpx;
border-bottom: 1rpx solid var(--mp-border-light);
background: #fafcfb;
}
.mp-module-block__icon {
width: 64rpx;
height: 64rpx;
border-radius: 16rpx;
color: #fff;
font-size: 20rpx;
font-weight: 700;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
.mp-module-block--crm .mp-module-block__icon {
background: linear-gradient(145deg, #0a9f6d, #11b37a);
}
.mp-module-block--bx .mp-module-block__icon {
background: linear-gradient(145deg, #c9922f, #d6a343);
}
.mp-module-block--db .mp-module-block__icon {
background: linear-gradient(145deg, #247a70, #2b8a7e);
}
.mp-module-block--pl .mp-module-block__icon {
background: linear-gradient(145deg, #066b49, #087f57);
}
.mp-module-block__title-wrap {
flex: 1;
min-width: 0;
}
.mp-module-block__title {
display: block;
font-size: 30rpx;
font-weight: 700;
color: var(--mp-text);
}
.mp-module-block__desc {
display: block;
margin-top: 4rpx;
font-size: 22rpx;
color: var(--mp-muted);
}
.mp-menu-grid {
display: flex;
flex-wrap: wrap;
background: var(--mp-border-light);
}
.mp-menu-card {
width: 33.333%;
box-sizing: border-box;
min-height: 156rpx;
background: var(--mp-surface);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 12rpx;
padding: 20rpx 12rpx;
text-align: center;
border-right: 1rpx solid var(--mp-border-light);
border-bottom: 1rpx solid var(--mp-border-light);
}
.mp-menu-card:nth-child(3n) {
border-right: none;
}
.mp-menu-card:active {
background: #f4fbf8;
}
.mp-menu-card__icon {
width: 60rpx;
height: 60rpx;
border-radius: 16rpx;
background: linear-gradient(145deg, #e8f5ef, #d9efe5);
display: flex;
align-items: center;
justify-content: center;
font-size: 32rpx;
line-height: 1;
}
.mp-module-block--bx .mp-menu-card__icon {
background: linear-gradient(145deg, #faf0dc, #f3e4c4);
}
.mp-module-block--db .mp-menu-card__icon {
background: linear-gradient(145deg, #dff0ee, #cce5e2);
}
.mp-module-block--pl .mp-menu-card__icon {
background: linear-gradient(145deg, #dff1e8, #c8e8d8);
}
.mp-menu-card__name {
font-size: 22rpx;
color: #3f4f48;
line-height: 1.35;
}
.mp-menu-card--disabled {
opacity: 0.45;
pointer-events: none;
}
.mp-menu-card--pad {
pointer-events: none;
}
.mp-placeholder {
min-height: 60vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 80rpx 48rpx;
text-align: center;
}
.mp-placeholder__icon {
width: 176rpx;
height: 176rpx;
border-radius: 50%;
background: linear-gradient(145deg, #edf5f1, #dcebe4);
margin-bottom: 32rpx;
}
.mp-placeholder__title {
font-size: 32rpx;
font-weight: 600;
color: var(--mp-text);
margin-bottom: 12rpx;
}
.mp-placeholder__desc {
font-size: 26rpx;
color: var(--mp-muted);
line-height: 1.6;
}
.mp-profile-hero {
background: var(--mp-header-gradient);
color: #fff;
padding: calc(40rpx + env(safe-area-inset-top, 0px)) 32rpx 48rpx;
border-bottom-left-radius: var(--mp-radius-xl);
border-bottom-right-radius: var(--mp-radius-xl);
}
.mp-profile-hero__user {
display: flex;
align-items: center;
gap: 24rpx;
}
.mp-profile-hero__avatar {
width: 112rpx;
height: 112rpx;
border-radius: 50%;
background: rgba(255, 255, 255, 0.22);
border: 4rpx solid rgba(255, 255, 255, 0.35);
flex-shrink: 0;
overflow: hidden;
}
.mp-profile-hero__avatar image {
width: 100%;
height: 100%;
}
.mp-profile-hero__name {
font-size: 36rpx;
font-weight: 700;
}
.mp-profile-hero__dept {
margin-top: 8rpx;
font-size: 24rpx;
opacity: 0.9;
}
.mp-profile-panel {
margin: 24rpx 32rpx;
background: var(--mp-surface);
border: 1rpx solid var(--mp-border);
border-radius: var(--mp-radius-lg);
overflow: hidden;
}
.mp-form-item {
display: flex;
align-items: center;
justify-content: space-between;
gap: 24rpx;
padding: 28rpx 32rpx;
border-bottom: 1rpx solid var(--mp-border-light);
}
.mp-form-item:last-child {
border-bottom: none;
}
.mp-form-item__label {
font-size: 28rpx;
color: var(--mp-muted);
flex-shrink: 0;
}
.mp-form-item__value {
font-size: 28rpx;
color: var(--mp-text);
text-align: right;
flex: 1;
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.mp-profile-actions {
padding: 8rpx 32rpx 48rpx;
display: flex;
flex-direction: column;
gap: 20rpx;
}
.mp-btn {
height: 88rpx;
line-height: 88rpx;
border-radius: 16rpx;
font-size: 30rpx;
text-align: center;
}
.mp-btn--primary {
background: var(--mp-brand-green);
color: #fff;
}
.mp-btn--ghost {
background: #fff;
color: var(--mp-danger);
border: 1rpx solid #fecaca;
}
.mp-btn--block {
width: 100%;
}
.mp-hint {
margin: 0 32rpx 24rpx;
font-size: 22rpx;
color: var(--mp-muted);
text-align: center;
}