JhHardwareWRS/pages/index/index.wxss
2026-06-24 15:19:14 +08:00

807 lines
16 KiB
Plaintext

.index-shell {
min-height: 100vh;
background: #f2f5f9;
}
.index-page {
padding-bottom: calc(env(safe-area-inset-bottom) + 150rpx);
}
.header-row {
position: relative;
z-index: 2;
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 18rpx;
padding-top: 8rpx;
}
.index-page .header::after {
left: 18rpx;
right: auto;
top: 128rpx;
width: 150rpx;
height: 46rpx;
opacity: 0.06;
transform: rotate(14deg);
}
.brand-block {
min-width: 0;
flex: 1;
}
.location-status {
display: block;
margin-top: 8rpx;
color: #1f2937;
font-size: 23rpx;
font-weight: 800;
line-height: 1.35;
}
.location-refresh-tip {
display: block;
margin-top: 2rpx;
color: #7a8798;
font-size: 20rpx;
line-height: 1.3;
}
.location-not-entered {
color: #c5221f;
font-weight: 900;
}
.location-point-name {
color: #087443;
font-weight: 900;
}
.metallic-title {
display: inline-block;
color: #4b5563;
font-weight: 900;
background:
linear-gradient(90deg, #38414d 0%, #dfe6ec 7%, #7f8b97 14%, #f8fbfd 22%, #59636f 31%, #eef3f6 41%, #3f4853 52%, #c4cdd6 64%, #ffffff 73%, #626c78 84%, #2f3741 100%),
linear-gradient(180deg, #f9fbfc 0%, #a7b0bb 18%, #ffffff 34%, #5b6470 54%, #d3dae2 74%, #3b4450 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
-webkit-text-stroke: 1rpx rgba(47, 55, 65, 0.42);
text-shadow:
0 1rpx 0 rgba(255, 255, 255, 0.92),
0 3rpx 0 rgba(87, 96, 108, 0.78),
0 6rpx 0 rgba(38, 45, 54, 0.62),
0 12rpx 16rpx rgba(15, 23, 42, 0.28),
0 20rpx 28rpx rgba(15, 23, 42, 0.16);
}
.header-user {
display: flex;
align-items: center;
gap: 12rpx;
flex: 0 0 auto;
max-width: 300rpx;
padding: 10rpx 12rpx;
border: 1rpx solid #e1e7f0;
border-radius: 16rpx;
background: #ffffff;
box-shadow:
0 8rpx 0 rgba(205, 216, 229, 0.54),
0 14rpx 22rpx rgba(22, 34, 50, 0.08),
inset 0 2rpx 0 rgba(255, 255, 255, 0.96);
}
.header-user-text {
min-width: 0;
text-align: right;
}
.header-name {
display: block;
color: #1f2933;
font-size: 26rpx;
font-weight: 700;
line-height: 1.25;
}
.role-line {
display: flex;
align-items: center;
justify-content: flex-end;
gap: 4rpx;
margin-top: 6rpx;
color: #667085;
font-size: 22rpx;
line-height: 1.2;
}
.role-arrow {
color: #1463ff;
font-size: 24rpx;
line-height: 1;
}
.avatar {
overflow: hidden;
display: flex;
align-items: center;
justify-content: center;
flex: 0 0 auto;
border-radius: 50%;
background: #e8f1ff;
color: #1456c2;
font-weight: 700;
}
.small-avatar {
width: 66rpx;
height: 66rpx;
font-size: 24rpx;
}
.large-avatar {
width: 112rpx;
height: 112rpx;
font-size: 34rpx;
}
.avatar-image {
width: 100%;
height: 100%;
}
.avatar-text {
display: block;
line-height: 1;
}
.large-avatar-text {
font-size: 34rpx;
}
.scan-btn {
width: 100%;
height: 112rpx;
line-height: 112rpx;
margin: 0 0 28rpx;
padding: 0;
border-radius: 18rpx;
background: linear-gradient(180deg, #2876ff 0%, #1456c2 100%);
color: #ffffff;
font-size: 36rpx;
font-weight: 700;
box-shadow:
0 12rpx 0 #0d3f93,
0 20rpx 30rpx rgba(20, 86, 194, 0.28),
inset 0 2rpx 0 rgba(255, 255, 255, 0.26);
}
.scan-btn:active {
transform: translateY(5rpx);
box-shadow:
0 7rpx 0 #0d3f93,
0 14rpx 22rpx rgba(20, 86, 194, 0.22),
inset 0 2rpx 0 rgba(255, 255, 255, 0.2);
}
.scan-btn::after {
border: 0;
}
.notice-card {
position: relative;
overflow: hidden;
margin-bottom: 28rpx;
border: 1rpx solid #dce5f2;
border-radius: 18rpx;
background: #ffffff;
box-shadow:
0 14rpx 0 rgba(205, 216, 229, 0.62),
0 22rpx 34rpx rgba(22, 34, 50, 0.12),
inset 0 2rpx 0 rgba(255, 255, 255, 0.96);
}
.notice-card::before,
.workbench-panel::before {
content: "";
position: absolute;
right: 18rpx;
top: 18rpx;
z-index: 1;
width: 24rpx;
height: 24rpx;
border-radius: 50%;
opacity: 0.54;
pointer-events: none;
background:
linear-gradient(90deg, transparent 42%, rgba(47, 55, 65, 0.78) 43%, rgba(47, 55, 65, 0.78) 57%, transparent 58%),
radial-gradient(circle at 32% 28%, #ffffff 0, #dfe6ec 19%, #97a3af 58%, #475467 100%);
box-shadow:
0 3rpx 0 rgba(72, 83, 97, 0.38),
0 6rpx 10rpx rgba(22, 34, 50, 0.14),
inset 0 2rpx 0 rgba(255, 255, 255, 0.85);
transform: rotate(28deg);
}
.notice-hero {
position: relative;
min-height: 178rpx;
padding: 24rpx 28rpx;
background: linear-gradient(135deg, #1456c2 0%, #15847c 100%);
box-sizing: border-box;
}
.notice-hero::after {
content: "";
position: absolute;
right: -14rpx;
bottom: 14rpx;
width: 180rpx;
height: 48rpx;
opacity: 0.14;
transform: rotate(-20deg);
pointer-events: none;
background:
radial-gradient(circle at 18% 50%, transparent 0rpx, transparent 12rpx, #ffffff 13rpx, #ffffff 20rpx, transparent 21rpx),
radial-gradient(circle at 86% 50%, #ffffff 0rpx, #ffffff 16rpx, transparent 17rpx),
linear-gradient(90deg, transparent 0rpx, transparent 30rpx, #ffffff 31rpx, #ffffff 142rpx, transparent 143rpx);
}
.notice-badge {
display: inline-flex;
align-items: center;
height: 42rpx;
padding: 0 16rpx;
border-radius: 999rpx;
background: rgba(255, 255, 255, 0.18);
color: #ffffff;
font-size: 22rpx;
font-weight: 700;
}
.notice-swiper {
height: 106rpx;
margin-top: 12rpx;
}
.notice-slide,
.notice-empty {
display: flex;
flex-direction: column;
justify-content: center;
height: 100%;
}
.notice-title {
display: block;
overflow: hidden;
color: #ffffff;
font-size: 32rpx;
font-weight: 700;
line-height: 1.3;
text-overflow: ellipsis;
white-space: nowrap;
}
.notice-content {
display: -webkit-box;
overflow: hidden;
margin-top: 8rpx;
color: rgba(255, 255, 255, 0.86);
font-size: 24rpx;
line-height: 1.45;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
}
.notice-list {
padding: 16rpx 26rpx 18rpx;
}
.notice-list-row {
display: flex;
align-items: center;
gap: 12rpx;
min-height: 46rpx;
}
.notice-dot {
width: 10rpx;
height: 10rpx;
border-radius: 50%;
background: #12a375;
}
.notice-list-title {
overflow: hidden;
min-width: 0;
color: #344054;
font-size: 24rpx;
font-weight: 600;
text-overflow: ellipsis;
white-space: nowrap;
}
.trend-card {
padding-bottom: 14rpx;
border-left: 6rpx solid #12a375;
}
.trend-head {
margin-bottom: 12rpx;
}
.trend-plot {
position: relative;
height: 360rpx;
padding: 18rpx 8rpx 0 58rpx;
box-sizing: border-box;
}
.trend-axis {
position: absolute;
left: 0;
width: 48rpx;
color: #667085;
font-size: 20rpx;
line-height: 1;
text-align: right;
}
.trend-axis-top {
top: 24rpx;
}
.trend-axis-bottom {
bottom: 56rpx;
}
.trend-plot-body {
position: relative;
height: 244rpx;
margin-right: 10rpx;
}
.trend-grid-line {
position: absolute;
left: 0;
right: 0;
height: 1rpx;
background: #e6eaf0;
}
.trend-grid-line.top {
top: 14%;
}
.trend-grid-line.middle {
top: 48%;
}
.trend-grid-line.bottom {
top: 82%;
}
.trend-segment {
position: absolute;
z-index: 2;
height: 6rpx;
border-radius: 999rpx;
background: linear-gradient(180deg, #6aa1ff 0%, #1463ff 100%);
box-shadow: 0 5rpx 10rpx rgba(20, 99, 255, 0.22);
transform-origin: 0 50%;
}
.trend-point-wrap {
position: absolute;
z-index: 3;
width: 1rpx;
height: 1rpx;
}
.trend-point {
position: absolute;
left: -11rpx;
top: -11rpx;
width: 22rpx;
height: 22rpx;
border: 5rpx solid #1463ff;
border-radius: 50%;
background: #ffffff;
box-shadow:
0 7rpx 12rpx rgba(20, 99, 255, 0.2),
inset 0 2rpx 0 rgba(255, 255, 255, 0.9);
box-sizing: border-box;
}
.trend-point-value {
position: absolute;
left: -44rpx;
bottom: 18rpx;
width: 88rpx;
color: #1f2933;
font-size: 21rpx;
font-weight: 700;
line-height: 1;
text-align: center;
}
.trend-label-row {
position: relative;
height: 40rpx;
margin-top: 24rpx;
margin-right: 10rpx;
}
.trend-date-label {
position: absolute;
top: 0;
width: 78rpx;
color: #667085;
font-size: 20rpx;
line-height: 1;
text-align: center;
transform: translateX(-50%);
}
.tappable-stat {
position: relative;
transition: background 0.15s ease;
}
.tappable-stat:active {
background: #f3f6fb;
}
.stat-products {
border-left-color: #1463ff;
}
.stat-people {
border-left-color: #12a375;
}
.stat-pending {
border-left-color: #d9822b;
}
.stat-alert {
border-color: #ffb4a8;
border-left-color: #d92d20;
background:
linear-gradient(135deg, rgba(217, 45, 32, 0.13), rgba(255, 255, 255, 0.92) 48%),
#fff7f5;
box-shadow:
0 14rpx 0 rgba(244, 179, 169, 0.7),
0 22rpx 34rpx rgba(180, 35, 24, 0.14),
inset 0 2rpx 0 rgba(255, 255, 255, 0.96);
}
.stat-alert .stat-number,
.stat-alert .stat-link {
color: #b42318;
}
.stat-approved {
border-left-color: #7c3aed;
}
.stat-link {
display: block;
margin-top: 12rpx;
color: #6b778c;
font-size: 22rpx;
font-weight: 600;
}
.profile-card {
padding-bottom: 28rpx;
border-left: 6rpx solid #12a375;
}
.profile-head {
display: flex;
align-items: center;
gap: 20rpx;
}
.profile-main {
min-width: 0;
flex: 1;
}
.profile-name {
display: block;
color: #1f2933;
font-size: 36rpx;
font-weight: 700;
line-height: 1.3;
}
.info-row {
display: flex;
align-items: center;
justify-content: space-between;
min-height: 72rpx;
gap: 20rpx;
}
.inline-label {
margin-bottom: 0;
}
.info-value {
display: flex;
align-items: center;
gap: 6rpx;
color: #1f2933;
font-weight: 600;
}
.role-list {
margin-top: 22rpx;
}
.role-btn {
margin-top: 12rpx;
height: 72rpx;
line-height: 72rpx;
border-radius: 14rpx;
background: linear-gradient(180deg, #f6faff 0%, #e4efff 100%);
color: #1463ff;
font-size: 26rpx;
box-shadow:
0 7rpx 0 rgba(144, 178, 235, 0.62),
0 12rpx 18rpx rgba(20, 86, 194, 0.1),
inset 0 2rpx 0 rgba(255, 255, 255, 0.84);
}
.role-btn::after {
border: 0;
}
.workbench-panel {
position: relative;
overflow: hidden;
padding: 24rpx 18rpx 10rpx;
border: 1rpx solid #e4e9f1;
border-radius: 18rpx;
background: #ffffff;
box-shadow:
0 14rpx 0 rgba(205, 216, 229, 0.62),
0 22rpx 34rpx rgba(22, 34, 50, 0.12),
inset 0 2rpx 0 rgba(255, 255, 255, 0.96);
}
.app-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 18rpx 12rpx;
}
.app-item {
display: flex;
flex-direction: column;
align-items: center;
min-height: 178rpx;
padding: 16rpx 8rpx;
border-radius: 16rpx;
box-sizing: border-box;
}
.app-item:active {
background: #f3f6fb;
}
.app-item:active .app-icon {
transform: translateY(4rpx);
box-shadow:
0 5rpx 0 rgba(74, 91, 115, 0.42),
0 8rpx 14rpx rgba(22, 34, 50, 0.12),
inset 0 2rpx 0 rgba(255, 255, 255, 0.56),
inset 0 -8rpx 12rpx rgba(15, 23, 42, 0.12);
}
.app-icon {
position: relative;
overflow: hidden;
display: flex;
align-items: center;
justify-content: center;
width: 78rpx;
height: 78rpx;
border-radius: 22rpx;
border: 1rpx solid rgba(255, 255, 255, 0.62);
background: linear-gradient(160deg, #ffffff 0%, #dbe8ff 28%, #8bb7ff 58%, #1456c2 100%);
color: #1456c2;
font-size: 34rpx;
font-weight: 800;
line-height: 1;
text-shadow:
0 2rpx 0 rgba(255, 255, 255, 0.82),
0 4rpx 8rpx rgba(15, 23, 42, 0.18);
box-shadow:
0 10rpx 0 rgba(77, 103, 145, 0.42),
0 16rpx 22rpx rgba(22, 34, 50, 0.16),
inset 0 3rpx 0 rgba(255, 255, 255, 0.82),
inset 0 -10rpx 14rpx rgba(15, 23, 42, 0.14);
}
.app-icon::before,
.app-icon::after {
content: "";
position: absolute;
width: 14rpx;
height: 14rpx;
border-radius: 50%;
pointer-events: none;
background:
linear-gradient(90deg, transparent 40%, rgba(47, 55, 65, 0.72) 41%, rgba(47, 55, 65, 0.72) 59%, transparent 60%),
radial-gradient(circle at 32% 28%, rgba(255, 255, 255, 0.96) 0, rgba(226, 232, 240, 0.96) 20%, rgba(132, 146, 164, 0.88) 62%, rgba(59, 70, 84, 0.86) 100%);
box-shadow:
0 2rpx 0 rgba(49, 61, 77, 0.36),
inset 0 1rpx 0 rgba(255, 255, 255, 0.9);
}
.app-icon::before {
left: 10rpx;
top: 10rpx;
transform: rotate(24deg);
}
.app-icon::after {
right: 10rpx;
bottom: 10rpx;
transform: rotate(-28deg);
}
.app-icon-products,
.app-icon-device,
.app-icon-moldQr,
.app-icon-equipment {
background: linear-gradient(160deg, #ffffff 0%, #dbe8ff 28%, #8bb7ff 58%, #1456c2 100%);
color: #1456c2;
}
.app-icon-review,
.app-icon-audit {
background: linear-gradient(160deg, #fffdf7 0%, #ffe2aa 34%, #f0a23a 68%, #a95605 100%);
color: #a95605;
box-shadow:
0 10rpx 0 rgba(143, 84, 16, 0.38),
0 16rpx 22rpx rgba(104, 62, 17, 0.14),
inset 0 3rpx 0 rgba(255, 255, 255, 0.82),
inset 0 -10rpx 14rpx rgba(94, 47, 0, 0.14);
}
.app-icon-people,
.app-icon-dashboard,
.app-icon-schedule {
background: linear-gradient(160deg, #ffffff 0%, #c9f2df 32%, #5fd19d 64%, #087443 100%);
color: #087443;
box-shadow:
0 10rpx 0 rgba(24, 117, 77, 0.38),
0 16rpx 22rpx rgba(20, 92, 63, 0.14),
inset 0 3rpx 0 rgba(255, 255, 255, 0.82),
inset 0 -10rpx 14rpx rgba(0, 81, 49, 0.14);
}
.app-icon-records,
.app-icon-notices {
background: linear-gradient(160deg, #ffffff 0%, #e6d8ff 32%, #b68dff 64%, #6d35c7 100%);
color: #6d35c7;
box-shadow:
0 10rpx 0 rgba(98, 67, 151, 0.38),
0 16rpx 22rpx rgba(81, 54, 125, 0.14),
inset 0 3rpx 0 rgba(255, 255, 255, 0.82),
inset 0 -10rpx 14rpx rgba(65, 29, 122, 0.14);
}
.app-title {
display: block;
margin-top: 12rpx;
color: #162232;
font-size: 25rpx;
font-weight: 700;
line-height: 1.25;
text-align: center;
}
.app-desc {
display: -webkit-box;
overflow: hidden;
margin-top: 6rpx;
color: #7a8699;
font-size: 20rpx;
line-height: 1.35;
text-align: center;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
}
.bottom-bar {
position: fixed;
left: 0;
right: 0;
bottom: 0;
z-index: 20;
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
padding: 10rpx 22rpx calc(env(safe-area-inset-bottom) + 10rpx);
border-top: 1rpx solid #e4e9f1;
background: linear-gradient(180deg, #ffffff 0%, #f6f9fd 100%);
box-shadow:
0 -8rpx 0 rgba(205, 216, 229, 0.42),
0 -14rpx 28rpx rgba(22, 34, 50, 0.1),
inset 0 2rpx 0 rgba(255, 255, 255, 0.96);
}
.bottom-item {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
min-height: 94rpx;
color: #8a94a6;
font-size: 22rpx;
font-weight: 600;
border-radius: 18rpx;
}
.bottom-item.active {
background: linear-gradient(180deg, #eef5ff 0%, #dceaff 100%);
color: #1463ff;
box-shadow:
inset 0 2rpx 0 rgba(255, 255, 255, 0.95),
0 7rpx 0 rgba(144, 178, 235, 0.46),
0 12rpx 20rpx rgba(20, 86, 194, 0.14);
}
.bottom-item.active text:not(.bottom-icon) {
color: #1463ff;
font-size: 24rpx;
font-weight: 800;
}
.bottom-item text:not(.bottom-icon) {
color: #7a8699;
}
.bottom-icon {
display: flex;
align-items: center;
justify-content: center;
width: 46rpx;
height: 46rpx;
margin-bottom: 6rpx;
border: 1rpx solid #c8d2df;
border-radius: 16rpx;
background: linear-gradient(180deg, #ffffff 0%, #e7edf5 100%);
color: #8b96a8;
font-size: 28rpx;
font-weight: 800;
line-height: 1;
box-shadow:
0 5rpx 0 rgba(157, 170, 188, 0.4),
0 8rpx 12rpx rgba(22, 34, 50, 0.08),
inset 0 2rpx 0 rgba(255, 255, 255, 0.88);
}
.bottom-item.active .bottom-icon {
width: 58rpx;
height: 58rpx;
margin-bottom: 4rpx;
border-color: rgba(255, 255, 255, 0.72);
background: linear-gradient(160deg, #ffffff 0%, #dbe8ff 28%, #72a9ff 58%, #1456c2 100%);
color: #ffffff;
font-size: 34rpx;
text-shadow: 0 2rpx 4rpx rgba(15, 23, 42, 0.28);
box-shadow:
0 8rpx 0 #0d3f93,
0 14rpx 20rpx rgba(20, 86, 194, 0.24),
inset 0 3rpx 0 rgba(255, 255, 255, 0.78),
inset 0 -8rpx 14rpx rgba(15, 23, 42, 0.16);
}