|
@@ -1,44 +1,44 @@
|
|
|
-@import '../../../shared/styles/ios-theme';
|
|
|
-@import '../ios-theme.scss';
|
|
|
+@use '../../../shared/styles/ios-theme' as ios;
|
|
|
+@use '../ios-theme.scss' as local;
|
|
|
|
|
|
:host {
|
|
|
display: block;
|
|
|
- background-color: $ios-background-secondary;
|
|
|
+ background-color: ios.$ios-background-secondary;
|
|
|
min-height: 100vh;
|
|
|
- padding: $ios-spacing-lg;
|
|
|
+ padding: ios.$ios-spacing-lg;
|
|
|
}
|
|
|
|
|
|
.dashboard-header {
|
|
|
- margin-bottom: $ios-spacing-xxl;
|
|
|
+ margin-bottom: local.$ios-spacing-xxl;
|
|
|
h1 {
|
|
|
- font-size: $ios-font-size-xl;
|
|
|
- font-weight: $ios-font-weight-bold;
|
|
|
- color: $ios-text-primary;
|
|
|
- margin: 0 0 $ios-spacing-lg 0;
|
|
|
+ font-size: local.$ios-font-size-xl;
|
|
|
+ font-weight: local.$ios-font-weight-bold;
|
|
|
+ color: local.$ios-text-primary;
|
|
|
+ margin: 0 0 local.$ios-spacing-lg 0;
|
|
|
}
|
|
|
|
|
|
// �詨��唳旿����∠��瑕�
|
|
|
.dashboard-metrics {
|
|
|
display: grid;
|
|
|
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
|
|
|
- gap: $ios-spacing-lg;
|
|
|
- margin-top: $ios-spacing-lg;
|
|
|
+ gap: local.$ios-spacing-lg;
|
|
|
+ margin-top: local.$ios-spacing-lg;
|
|
|
|
|
|
.metric-card {
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
- gap: $ios-spacing-md;
|
|
|
- background: linear-gradient(135deg, $ios-card-background, #f8f9fa);
|
|
|
- border-radius: $ios-radius-lg;
|
|
|
- padding: $ios-spacing-lg;
|
|
|
- border: 1px solid $ios-border;
|
|
|
- box-shadow: $ios-shadow-sm;
|
|
|
+ gap: local.$ios-spacing-md;
|
|
|
+ background: linear-gradient(135deg, local.$ios-card-background, #f8f9fa);
|
|
|
+ border-radius: local.$ios-radius-lg;
|
|
|
+ padding: local.$ios-spacing-lg;
|
|
|
+ border: 1px solid local.$ios-border;
|
|
|
+ box-shadow: local.$ios-shadow-sm;
|
|
|
cursor: pointer;
|
|
|
transition: all 0.3s ease;
|
|
|
|
|
|
&:hover {
|
|
|
transform: translateY(-2px);
|
|
|
- box-shadow: $ios-shadow-card;
|
|
|
+ box-shadow: local.$ios-shadow-card;
|
|
|
}
|
|
|
|
|
|
.metric-icon {
|
|
@@ -48,8 +48,8 @@
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
justify-content: center;
|
|
|
- border-radius: $ios-radius-full;
|
|
|
- background-color: $ios-background;
|
|
|
+ border-radius: local.$ios-radius-full;
|
|
|
+ background-color: local.$ios-background;
|
|
|
}
|
|
|
|
|
|
.metric-icon.warning { background-color: rgba(255, 149, 0, 0.1); }
|
|
@@ -60,14 +60,14 @@
|
|
|
|
|
|
.metric-count {
|
|
|
font-size: 2rem;
|
|
|
- font-weight: $ios-font-weight-bold;
|
|
|
- color: $ios-text-primary;
|
|
|
+ font-weight: local.$ios-font-weight-bold;
|
|
|
+ color: local.$ios-text-primary;
|
|
|
line-height: 1.2;
|
|
|
}
|
|
|
|
|
|
.metric-label {
|
|
|
- font-size: $ios-font-size-sm;
|
|
|
- color: $ios-text-secondary;
|
|
|
+ font-size: local.$ios-font-size-sm;
|
|
|
+ color: local.$ios-text-secondary;
|
|
|
text-transform: uppercase;
|
|
|
letter-spacing: 0.5px;
|
|
|
}
|
|
@@ -75,12 +75,12 @@
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-/* ���撅𤩺甅撘譍��吔��誩��烾𡢿頝苷��堒捐嚗䔶�霂�虾閫��摨� */
|
|
|
+/* ���撅𤩺甅撘譍��吔��誩��烾𡢿頝苷��堒捐嚗䔶�霂�虾閫��嚙?*/
|
|
|
@media (max-width: 640px) {
|
|
|
.project-kanban {
|
|
|
- .kanban-header { gap: $ios-spacing-sm; }
|
|
|
+ .kanban-header { gap: local.$ios-spacing-sm; }
|
|
|
.kanban-body {
|
|
|
- gap: $ios-spacing-sm;
|
|
|
+ gap: local.$ios-spacing-sm;
|
|
|
.kanban-column {
|
|
|
min-width: 160px;
|
|
|
max-width: 160px;
|
|
@@ -109,11 +109,11 @@
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
|
align-items: center;
|
|
|
- margin-bottom: $ios-spacing-lg;
|
|
|
+ margin-bottom: local.$ios-spacing-lg;
|
|
|
h2 {
|
|
|
- font-size: $ios-font-size-lg;
|
|
|
- font-weight: $ios-font-weight-semibold;
|
|
|
- color: $ios-text-primary;
|
|
|
+ font-size: local.$ios-font-size-lg;
|
|
|
+ font-weight: local.$ios-font-weight-semibold;
|
|
|
+ color: local.$ios-text-primary;
|
|
|
margin: 0;
|
|
|
}
|
|
|
.section-actions {
|
|
@@ -132,51 +132,51 @@
|
|
|
}
|
|
|
|
|
|
.btn-toggle-view {
|
|
|
- padding: $ios-spacing-sm $ios-spacing-md;
|
|
|
- border-radius: $ios-radius-md;
|
|
|
- border: 1px solid $ios-border;
|
|
|
+ padding: local.$ios-spacing-sm local.$ios-spacing-md;
|
|
|
+ border-radius: local.$ios-radius-md;
|
|
|
+ border: 1px solid local.$ios-border;
|
|
|
background: linear-gradient(180deg, #fff, #f8fafc);
|
|
|
- color: $ios-text-primary;
|
|
|
- font-size: $ios-font-size-sm;
|
|
|
+ color: local.$ios-text-primary;
|
|
|
+ font-size: local.$ios-font-size-sm;
|
|
|
cursor: pointer;
|
|
|
- box-shadow: $ios-shadow-sm;
|
|
|
+ box-shadow: local.$ios-shadow-sm;
|
|
|
transition: all .2s ease;
|
|
|
&:hover {
|
|
|
transform: translateY(-1px);
|
|
|
- box-shadow: $ios-shadow-card;
|
|
|
+ box-shadow: local.$ios-shadow-card;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
.gantt-card {
|
|
|
- background: $ios-card-background;
|
|
|
- border: 1px solid $ios-border;
|
|
|
- border-radius: $ios-radius-lg;
|
|
|
- box-shadow: $ios-shadow-card;
|
|
|
- padding: $ios-spacing-lg;
|
|
|
- margin-bottom: $ios-spacing-xl;
|
|
|
- position: relative; // 蝖桐����蝏嘥笆摰帋�銝𧢲��箔�霂亙捆��
|
|
|
+ background: local.$ios-card-background;
|
|
|
+ border: 1px solid local.$ios-border;
|
|
|
+ border-radius: local.$ios-radius-lg;
|
|
|
+ box-shadow: local.$ios-shadow-card;
|
|
|
+ padding: local.$ios-spacing-lg;
|
|
|
+ margin-bottom: local.$ios-spacing-xl;
|
|
|
+ position: relative; // 蝖桐����蝏嘥笆摰帋�銝𧢲��箔�霂亙捆嚙?
|
|
|
|
|
|
.gantt-header {
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
|
align-items: center;
|
|
|
- margin-bottom: $ios-spacing-md;
|
|
|
+ margin-bottom: local.$ios-spacing-md;
|
|
|
overflow: visible; // �踹�憭湧��箏�鋆��銝𧢲�
|
|
|
|
|
|
.title {
|
|
|
- font-size: $ios-font-size-md;
|
|
|
- font-weight: $ios-font-weight-semibold;
|
|
|
- color: $ios-text-primary;
|
|
|
+ font-size: local.$ios-font-size-md;
|
|
|
+ font-weight: local.$ios-font-weight-semibold;
|
|
|
+ color: local.$ios-text-primary;
|
|
|
}
|
|
|
.hint {
|
|
|
- font-size: $ios-font-size-xs;
|
|
|
- color: $ios-text-secondary;
|
|
|
+ font-size: local.$ios-font-size-xs;
|
|
|
+ color: local.$ios-text-secondary;
|
|
|
}
|
|
|
- // 撣��靚�㟲嚗𡁏�蝝X��曉銁���蝥扳��唾器嚗峕芋撘誩��W銁�嗅椰靘�
|
|
|
+ // 撣��靚�㟲嚗𡁏�蝝X��曉銁���蝥扳��唾器嚗峕芋撘誩��W銁�嗅椰嚙?
|
|
|
.scale-switch { margin-left: 0; }
|
|
|
.mode-switch { order: 3; margin-left: 8px; }
|
|
|
.search-box { order: 4; margin-left: auto; position: relative; }
|
|
|
- // �条鸌憭湧�銝剔��𦦵揣撱箄悅銝𧢲�銝箸�瘚桀�嚗䔶��䭾旿��﹝瘚�
|
|
|
+ // �条鸌憭湧�銝剔��𦦵揣撱箄悅銝𧢲�銝箸�瘚桀�嚗䔶��䭾旿��﹝嚙?
|
|
|
.search-box {
|
|
|
.suggestion-panel {
|
|
|
position: absolute;
|
|
@@ -221,18 +221,18 @@
|
|
|
|
|
|
.section-filters {
|
|
|
display: flex;
|
|
|
- gap: $ios-spacing-md;
|
|
|
+ gap: local.$ios-spacing-md;
|
|
|
flex-wrap: wrap;
|
|
|
align-items: center;
|
|
|
- overflow: visible; // �踹��𧢲踎蝑偦�匧躹�𦦵揣撱箄悅鋡怨���
|
|
|
+ overflow: visible; // �踹��𧢲踎蝑偦�匧躹�𦦵揣撱箄悅鋡怨�嚙?
|
|
|
|
|
|
.custom-select {
|
|
|
- padding: $ios-spacing-sm $ios-spacing-md;
|
|
|
- border: 1px solid $ios-border;
|
|
|
- border-radius: $ios-radius-md;
|
|
|
- background-color: $ios-background;
|
|
|
- font-size: $ios-font-size-sm;
|
|
|
- color: $ios-text-primary;
|
|
|
+ padding: local.$ios-spacing-sm local.$ios-spacing-md;
|
|
|
+ border: 1px solid local.$ios-border;
|
|
|
+ border-radius: local.$ios-radius-md;
|
|
|
+ background-color: local.$ios-background;
|
|
|
+ font-size: local.$ios-font-size-sm;
|
|
|
+ color: local.$ios-text-primary;
|
|
|
cursor: pointer;
|
|
|
transition: all 0.2s ease;
|
|
|
min-width: 140px;
|
|
@@ -240,7 +240,7 @@
|
|
|
|
|
|
.search-box {
|
|
|
margin-right: 8px;
|
|
|
- position: relative; // 雿靝蛹銝𧢲�摰帋�����
|
|
|
+ position: relative; // 雿靝蛹銝𧢲�摰帋���蕭?
|
|
|
.input-search {
|
|
|
width: 260px;
|
|
|
padding: 8px 12px;
|
|
@@ -290,7 +290,7 @@
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// 憿寧𤌍�∠�銝𡒊��踵甅撘�
|
|
|
+// 憿寧𤌍�∠�銝𡒊��踵甅嚙?
|
|
|
.project-kanban {
|
|
|
position: relative;
|
|
|
z-index: 1;
|
|
@@ -298,33 +298,33 @@
|
|
|
// �砍�璅芸�皛𡁜𢆡摰孵膥
|
|
|
.kanban-scroll {
|
|
|
overflow-x: auto;
|
|
|
- padding-bottom: $ios-spacing-md;
|
|
|
+ padding-bottom: local.$ios-spacing-md;
|
|
|
-webkit-overflow-scrolling: touch;
|
|
|
|
|
|
&::-webkit-scrollbar { height: 6px; }
|
|
|
&::-webkit-scrollbar-track {
|
|
|
- background: $ios-background;
|
|
|
- border-radius: $ios-radius-full;
|
|
|
+ background: local.$ios-background;
|
|
|
+ border-radius: local.$ios-radius-full;
|
|
|
}
|
|
|
&::-webkit-scrollbar-thumb {
|
|
|
- background: $ios-border;
|
|
|
- border-radius: $ios-radius-full;
|
|
|
+ background: local.$ios-border;
|
|
|
+ border-radius: local.$ios-radius-full;
|
|
|
}
|
|
|
- &::-webkit-scrollbar-thumb:hover { background: $ios-text-tertiary; }
|
|
|
+ &::-webkit-scrollbar-thumb:hover { background: local.$ios-text-tertiary; }
|
|
|
|
|
|
.kanban-header, .kanban-body { width: max-content; }
|
|
|
}
|
|
|
|
|
|
- // �𧢲踎���銵�
|
|
|
+ // �𧢲踎���嚙?
|
|
|
.kanban-header {
|
|
|
position: sticky;
|
|
|
top: 0;
|
|
|
z-index: 2;
|
|
|
- background: $ios-card-background;
|
|
|
- border-bottom: 1px solid $ios-border;
|
|
|
+ background: local.$ios-card-background;
|
|
|
+ border-bottom: 1px solid local.$ios-border;
|
|
|
display: flex;
|
|
|
- gap: $ios-spacing-md;
|
|
|
- margin-bottom: $ios-spacing-md;
|
|
|
+ gap: local.$ios-spacing-md;
|
|
|
+ margin-bottom: local.$ios-spacing-md;
|
|
|
|
|
|
.kanban-column-header {
|
|
|
flex: 0 0 180px;
|
|
@@ -333,25 +333,25 @@
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
|
align-items: center;
|
|
|
- padding: $ios-spacing-sm $ios-spacing-md;
|
|
|
- background-color: $ios-background;
|
|
|
- border-radius: $ios-radius-md;
|
|
|
- border: 1px solid $ios-border;
|
|
|
+ padding: local.$ios-spacing-sm local.$ios-spacing-md;
|
|
|
+ background-color: local.$ios-background;
|
|
|
+ border-radius: local.$ios-radius-md;
|
|
|
+ border: 1px solid local.$ios-border;
|
|
|
|
|
|
h3 {
|
|
|
- font-size: $ios-font-size-sm;
|
|
|
- font-weight: $ios-font-weight-medium;
|
|
|
- color: $ios-text-primary;
|
|
|
+ font-size: local.$ios-font-size-sm;
|
|
|
+ font-weight: local.$ios-font-weight-medium;
|
|
|
+ color: local.$ios-text-primary;
|
|
|
margin: 0;
|
|
|
}
|
|
|
|
|
|
.stage-count {
|
|
|
- font-size: $ios-font-size-xs;
|
|
|
- background-color: $ios-primary;
|
|
|
- color: $ios-background;
|
|
|
+ font-size: local.$ios-font-size-xs;
|
|
|
+ background-color: local.$ios-primary;
|
|
|
+ color: local.$ios-background;
|
|
|
padding: 2px 8px;
|
|
|
- border-radius: $ios-radius-full;
|
|
|
- font-weight: $ios-font-weight-medium;
|
|
|
+ border-radius: local.$ios-radius-full;
|
|
|
+ font-weight: local.$ios-font-weight-medium;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -359,34 +359,34 @@
|
|
|
// �𧢲踎銝颱���捆
|
|
|
.kanban-body {
|
|
|
display: flex;
|
|
|
- gap: $ios-spacing-md;
|
|
|
+ gap: local.$ios-spacing-md;
|
|
|
|
|
|
.kanban-column {
|
|
|
flex: 1;
|
|
|
min-width: 180px;
|
|
|
max-width: 180px;
|
|
|
height: 400px;
|
|
|
- background-color: $ios-background;
|
|
|
- border-radius: $ios-radius-md;
|
|
|
- border: 1px solid $ios-border;
|
|
|
- padding: $ios-spacing-sm;
|
|
|
+ background-color: local.$ios-background;
|
|
|
+ border-radius: local.$ios-radius-md;
|
|
|
+ border: 1px solid local.$ios-border;
|
|
|
+ padding: local.$ios-spacing-sm;
|
|
|
overflow-y: auto;
|
|
|
-webkit-overflow-scrolling: touch;
|
|
|
|
|
|
&::-webkit-scrollbar { width: 4px; }
|
|
|
&::-webkit-scrollbar-track { background: transparent; }
|
|
|
&::-webkit-scrollbar-thumb {
|
|
|
- background: $ios-border;
|
|
|
- border-radius: $ios-radius-full;
|
|
|
+ background: local.$ios-border;
|
|
|
+ border-radius: local.$ios-radius-full;
|
|
|
}
|
|
|
|
|
|
.project-card {
|
|
|
- background-color: $ios-card-background;
|
|
|
- border-radius: $ios-radius-md;
|
|
|
- padding: $ios-spacing-md;
|
|
|
- margin-bottom: $ios-spacing-sm;
|
|
|
- border: 1px solid $ios-border;
|
|
|
- box-shadow: $ios-shadow-sm;
|
|
|
+ background-color: local.$ios-card-background;
|
|
|
+ border-radius: local.$ios-radius-md;
|
|
|
+ padding: local.$ios-spacing-md;
|
|
|
+ margin-bottom: local.$ios-spacing-sm;
|
|
|
+ border: 1px solid local.$ios-border;
|
|
|
+ box-shadow: local.$ios-shadow-sm;
|
|
|
transition: all 0.2s ease;
|
|
|
cursor: pointer;
|
|
|
user-select: none;
|
|
@@ -397,20 +397,20 @@
|
|
|
}
|
|
|
|
|
|
&:active { transform: translateY(-1px); opacity: 0.98; }
|
|
|
- &.overdue { border-left: 4px solid $ios-danger; }
|
|
|
- &.high-urgency { border-left: 4px solid $ios-warning; }
|
|
|
- &.due-soon { border-left: 4px solid $ios-warning; }
|
|
|
+ &.overdue { border-left: 4px solid local.$ios-danger; }
|
|
|
+ &.high-urgency { border-left: 4px solid local.$ios-warning; }
|
|
|
+ &.due-soon { border-left: 4px solid local.$ios-warning; }
|
|
|
|
|
|
.project-card-header {
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
|
align-items: flex-start;
|
|
|
- margin-bottom: $ios-spacing-sm;
|
|
|
+ margin-bottom: local.$ios-spacing-sm;
|
|
|
|
|
|
h4 {
|
|
|
- font-size: $ios-font-size-sm;
|
|
|
- font-weight: $ios-font-weight-medium;
|
|
|
- color: $ios-primary;
|
|
|
+ font-size: local.$ios-font-size-sm;
|
|
|
+ font-weight: local.$ios-font-weight-medium;
|
|
|
+ color: local.$ios-primary;
|
|
|
margin: 0;
|
|
|
cursor: pointer;
|
|
|
&:hover { text-decoration: underline; }
|
|
@@ -419,25 +419,25 @@
|
|
|
.project-urgency {
|
|
|
font-size: 10px;
|
|
|
padding: 2px 6px;
|
|
|
- border-radius: $ios-radius-full;
|
|
|
- font-weight: $ios-font-weight-medium;
|
|
|
+ border-radius: local.$ios-radius-full;
|
|
|
+ font-weight: local.$ios-font-weight-medium;
|
|
|
}
|
|
|
|
|
|
- .urgency-high { background-color: rgba(239, 68, 68, 0.1); color: $ios-danger; }
|
|
|
- .urgency-medium { background-color: rgba(255, 149, 0, 0.1); color: $ios-warning; }
|
|
|
- .urgency-low { background-color: rgba(59, 130, 246, 0.1); color: $ios-info; }
|
|
|
+ .urgency-high { background-color: rgba(239, 68, 68, 0.1); color: local.$ios-danger; }
|
|
|
+ .urgency-medium { background-color: rgba(255, 149, 0, 0.1); color: local.$ios-warning; }
|
|
|
+ .urgency-low { background-color: rgba(59, 130, 246, 0.1); color: local.$ios-info; }
|
|
|
}
|
|
|
|
|
|
.project-card-content {
|
|
|
- margin-bottom: $ios-spacing-sm;
|
|
|
+ margin-bottom: local.$ios-spacing-sm;
|
|
|
|
|
|
p {
|
|
|
font-size: 11px;
|
|
|
- color: $ios-text-secondary;
|
|
|
+ color: local.$ios-text-secondary;
|
|
|
margin: 0 0 4px 0;
|
|
|
}
|
|
|
|
|
|
- .deadline { font-size: 10px; color: $ios-text-tertiary; }
|
|
|
+ .deadline { font-size: 10px; color: local.$ios-text-tertiary; }
|
|
|
}
|
|
|
|
|
|
.project-card-footer {
|
|
@@ -449,13 +449,13 @@
|
|
|
font-size: 10px;
|
|
|
padding: 4px 6px;
|
|
|
border: none;
|
|
|
- border-radius: $ios-radius-sm;
|
|
|
+ border-radius: local.$ios-radius-sm;
|
|
|
cursor: pointer;
|
|
|
transition: all 0.2s ease;
|
|
|
}
|
|
|
|
|
|
- .btn-view { background-color: $ios-primary; color: $ios-background; }
|
|
|
- .btn-assign { background-color: $ios-success; color: $ios-background; }
|
|
|
+ .btn-view { background-color: local.$ios-primary; color: local.$ios-background; }
|
|
|
+ .btn-assign { background-color: local.$ios-success; color: local.$ios-background; }
|
|
|
button:hover { opacity: 0.9; }
|
|
|
}
|
|
|
|
|
@@ -467,13 +467,13 @@
|
|
|
.member-badge {
|
|
|
font-size: 10px;
|
|
|
padding: 2px 6px;
|
|
|
- border-radius: $ios-radius-full;
|
|
|
+ border-radius: local.$ios-radius-full;
|
|
|
background-color: rgba(59, 130, 246, 0.08);
|
|
|
- color: $ios-info;
|
|
|
+ color: local.$ios-info;
|
|
|
&.vip {
|
|
|
background-color: rgba(124, 58, 237, 0.12);
|
|
|
- color: $ios-primary;
|
|
|
- font-weight: $ios-font-weight-semibold;
|
|
|
+ color: local.$ios-primary;
|
|
|
+ font-weight: local.$ios-font-weight-semibold;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -487,13 +487,13 @@
|
|
|
|
|
|
.empty-icon {
|
|
|
font-size: 2rem;
|
|
|
- margin-bottom: $ios-spacing-sm;
|
|
|
+ margin-bottom: local.$ios-spacing-sm;
|
|
|
opacity: 0.3;
|
|
|
}
|
|
|
|
|
|
p {
|
|
|
- font-size: $ios-font-size-sm;
|
|
|
- color: $ios-text-tertiary;
|
|
|
+ font-size: local.$ios-font-size-sm;
|
|
|
+ color: local.$ios-text-tertiary;
|
|
|
margin: 0;
|
|
|
}
|
|
|
}
|
|
@@ -503,11 +503,11 @@
|
|
|
|
|
|
/* 憿寧𤌍�烐綉憭抒��瑕� */
|
|
|
.monitoring-section {
|
|
|
- background-color: $ios-card-background;
|
|
|
- border-radius: $ios-radius-lg;
|
|
|
- padding: $ios-spacing-xl;
|
|
|
- margin-bottom: $ios-spacing-xl;
|
|
|
- box-shadow: $ios-shadow-card;
|
|
|
+ background-color: local.$ios-card-background;
|
|
|
+ border-radius: local.$ios-radius-lg;
|
|
|
+ padding: local.$ios-spacing-xl;
|
|
|
+ margin-bottom: local.$ios-spacing-xl;
|
|
|
+ box-shadow: local.$ios-shadow-card;
|
|
|
position: relative;
|
|
|
overflow: visible; // ��捂�𦦵揣撱箄悅銝𧢲��X踎銝滩◤鋆��
|
|
|
|
|
@@ -528,24 +528,24 @@
|
|
|
.gantt-card { position: relative; z-index: 1; }
|
|
|
}
|
|
|
|
|
|
-/* 敹恍���雿𣈯𢒰�踵甅撘� */
|
|
|
+/* 敹恍���雿𣈯𢒰�踵甅嚙?*/
|
|
|
.quick-actions-section {
|
|
|
- background-color: $ios-card-background;
|
|
|
- border-radius: $ios-radius-lg;
|
|
|
- padding: $ios-spacing-xl;
|
|
|
- margin-bottom: $ios-spacing-xl;
|
|
|
- box-shadow: $ios-shadow-card;
|
|
|
+ background-color: local.$ios-card-background;
|
|
|
+ border-radius: local.$ios-radius-lg;
|
|
|
+ padding: local.$ios-spacing-xl;
|
|
|
+ margin-bottom: local.$ios-spacing-xl;
|
|
|
+ box-shadow: local.$ios-shadow-card;
|
|
|
|
|
|
.quick-actions-grid {
|
|
|
display: grid;
|
|
|
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
|
|
- gap: $ios-spacing-lg;
|
|
|
+ gap: local.$ios-spacing-lg;
|
|
|
|
|
|
.action-card {
|
|
|
- background: linear-gradient(135deg, $ios-background, #f8f9fa);
|
|
|
- border-radius: $ios-radius-lg;
|
|
|
- padding: $ios-spacing-xl;
|
|
|
- border: 1px solid $ios-border;
|
|
|
+ background: linear-gradient(135deg, local.$ios-background, #f8f9fa);
|
|
|
+ border-radius: local.$ios-radius-lg;
|
|
|
+ padding: local.$ios-spacing-xl;
|
|
|
+ border: 1px solid local.$ios-border;
|
|
|
text-align: center;
|
|
|
cursor: pointer;
|
|
|
transition: all 0.3s ease;
|
|
@@ -553,25 +553,25 @@
|
|
|
&:hover {
|
|
|
transform: translateY(-3px);
|
|
|
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
|
|
|
- border-color: $ios-primary-light;
|
|
|
+ border-color: local.$ios-primary-light;
|
|
|
}
|
|
|
|
|
|
.action-icon {
|
|
|
font-size: 2.5rem;
|
|
|
- margin-bottom: $ios-spacing-md;
|
|
|
+ margin-bottom: local.$ios-spacing-md;
|
|
|
opacity: 0.8;
|
|
|
}
|
|
|
|
|
|
h3 {
|
|
|
- font-size: $ios-font-size-base;
|
|
|
- font-weight: $ios-font-weight-medium;
|
|
|
- color: $ios-text-primary;
|
|
|
- margin: 0 0 $ios-spacing-xs 0;
|
|
|
+ font-size: local.$ios-font-size-base;
|
|
|
+ font-weight: local.$ios-font-weight-medium;
|
|
|
+ color: local.$ios-text-primary;
|
|
|
+ margin: 0 0 local.$ios-spacing-xs 0;
|
|
|
}
|
|
|
|
|
|
p {
|
|
|
- font-size: $ios-font-size-sm;
|
|
|
- color: $ios-text-secondary;
|
|
|
+ font-size: local.$ios-font-size-sm;
|
|
|
+ color: local.$ios-text-secondary;
|
|
|
margin: 0;
|
|
|
}
|
|
|
}
|
|
@@ -580,76 +580,76 @@
|
|
|
|
|
|
/* 敺��隞餃𦛚�瑕� */
|
|
|
.todo-section {
|
|
|
- background-color: $ios-card-background;
|
|
|
- border-radius: $ios-radius-lg;
|
|
|
- padding: $ios-spacing-xl;
|
|
|
- margin-bottom: $ios-spacing-xl;
|
|
|
- box-shadow: $ios-shadow-card;
|
|
|
+ background-color: local.$ios-card-background;
|
|
|
+ border-radius: local.$ios-radius-lg;
|
|
|
+ padding: local.$ios-spacing-xl;
|
|
|
+ margin-bottom: local.$ios-spacing-xl;
|
|
|
+ box-shadow: local.$ios-shadow-card;
|
|
|
}
|
|
|
|
|
|
.todo-list {
|
|
|
.todo-item {
|
|
|
- padding: $ios-spacing-lg;
|
|
|
- border-radius: $ios-radius-md;
|
|
|
- margin-bottom: $ios-spacing-md;
|
|
|
- background-color: $ios-background;
|
|
|
- border: 1px solid $ios-border;
|
|
|
- transition: $ios-feedback-hover;
|
|
|
+ padding: local.$ios-spacing-lg;
|
|
|
+ border-radius: local.$ios-radius-md;
|
|
|
+ margin-bottom: local.$ios-spacing-md;
|
|
|
+ background-color: local.$ios-background;
|
|
|
+ border: 1px solid local.$ios-border;
|
|
|
+ transition: local.$ios-feedback-hover;
|
|
|
|
|
|
&:last-child { margin-bottom: 0; }
|
|
|
|
|
|
- &.priority-high { border-left: 4px solid $ios-danger; }
|
|
|
- &.priority-medium { border-left: 4px solid $ios-warning; }
|
|
|
- &.priority-low { border-left: 4px solid $ios-info; }
|
|
|
+ &.priority-high { border-left: 4px solid local.$ios-danger; }
|
|
|
+ &.priority-medium { border-left: 4px solid local.$ios-warning; }
|
|
|
+ &.priority-low { border-left: 4px solid local.$ios-info; }
|
|
|
|
|
|
- &:hover { transform: translateY(-1px); box-shadow: $ios-shadow-sm; }
|
|
|
+ &:hover { transform: translateY(-1px); box-shadow: local.$ios-shadow-sm; }
|
|
|
|
|
|
.todo-header {
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
|
align-items: center;
|
|
|
- margin-bottom: $ios-spacing-md;
|
|
|
+ margin-bottom: local.$ios-spacing-md;
|
|
|
|
|
|
h3 {
|
|
|
- font-size: $ios-font-size-base;
|
|
|
- font-weight: $ios-font-weight-medium;
|
|
|
- color: $ios-text-primary;
|
|
|
+ font-size: local.$ios-font-size-base;
|
|
|
+ font-weight: local.$ios-font-weight-medium;
|
|
|
+ color: local.$ios-text-primary;
|
|
|
margin: 0;
|
|
|
}
|
|
|
|
|
|
.task-priority {
|
|
|
- font-size: $ios-font-size-xs;
|
|
|
- padding: $ios-spacing-xs $ios-spacing-sm;
|
|
|
- border-radius: $ios-radius-full;
|
|
|
- font-weight: $ios-font-weight-medium;
|
|
|
+ font-size: local.$ios-font-size-xs;
|
|
|
+ padding: local.$ios-spacing-xs local.$ios-spacing-sm;
|
|
|
+ border-radius: local.$ios-radius-full;
|
|
|
+ font-weight: local.$ios-font-weight-medium;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
.todo-info {
|
|
|
- margin-bottom: $ios-spacing-md;
|
|
|
+ margin-bottom: local.$ios-spacing-md;
|
|
|
|
|
|
p {
|
|
|
- margin: 0 0 $ios-spacing-xs 0;
|
|
|
- font-size: $ios-font-size-sm;
|
|
|
- color: $ios-text-secondary;
|
|
|
+ margin: 0 0 local.$ios-spacing-xs 0;
|
|
|
+ font-size: local.$ios-font-size-sm;
|
|
|
+ color: local.$ios-text-secondary;
|
|
|
}
|
|
|
|
|
|
- .task-deadline { font-size: $ios-font-size-xs; color: $ios-text-tertiary; }
|
|
|
+ .task-deadline { font-size: local.$ios-font-size-xs; color: local.$ios-text-tertiary; }
|
|
|
}
|
|
|
|
|
|
.todo-actions {
|
|
|
.btn-handle {
|
|
|
- background-color: $ios-primary;
|
|
|
- color: $ios-background;
|
|
|
+ background-color: local.$ios-primary;
|
|
|
+ color: local.$ios-background;
|
|
|
border: none;
|
|
|
- border-radius: $ios-radius-md;
|
|
|
- padding: $ios-spacing-sm $ios-spacing-lg;
|
|
|
- font-size: $ios-font-size-sm;
|
|
|
- font-weight: $ios-font-weight-medium;
|
|
|
+ border-radius: local.$ios-radius-md;
|
|
|
+ padding: local.$ios-spacing-sm local.$ios-spacing-lg;
|
|
|
+ font-size: local.$ios-font-size-sm;
|
|
|
+ font-weight: local.$ios-font-weight-medium;
|
|
|
cursor: pointer;
|
|
|
- transition: $ios-feedback-tap;
|
|
|
+ transition: local.$ios-feedback-tap;
|
|
|
|
|
|
- &:hover { background-color: $ios-primary-light; }
|
|
|
+ &:hover { background-color: local.$ios-primary-light; }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -661,9 +661,9 @@
|
|
|
top: 50%;
|
|
|
left: 50%;
|
|
|
transform: translate(-50%, -50%);
|
|
|
- background-color: $ios-card-background;
|
|
|
- border-radius: $ios-radius-lg;
|
|
|
- padding: $ios-spacing-xl;
|
|
|
+ background-color: local.$ios-card-background;
|
|
|
+ border-radius: local.$ios-radius-lg;
|
|
|
+ padding: local.$ios-spacing-xl;
|
|
|
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.15);
|
|
|
z-index: 1000;
|
|
|
min-width: 400px;
|
|
@@ -676,23 +676,23 @@
|
|
|
|
|
|
.alert-content {
|
|
|
h3 {
|
|
|
- font-size: $ios-font-size-lg;
|
|
|
- font-weight: $ios-font-weight-semibold;
|
|
|
- color: $ios-danger;
|
|
|
- margin: 0 0 $ios-spacing-lg 0;
|
|
|
+ font-size: local.$ios-font-size-lg;
|
|
|
+ font-weight: local.$ios-font-weight-semibold;
|
|
|
+ color: local.$ios-danger;
|
|
|
+ margin: 0 0 local.$ios-spacing-lg 0;
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
- gap: $ios-spacing-sm;
|
|
|
+ gap: local.$ios-spacing-sm;
|
|
|
}
|
|
|
|
|
|
ul {
|
|
|
- margin: 0 0 $ios-spacing-lg 0;
|
|
|
- padding-left: $ios-spacing-xl;
|
|
|
+ margin: 0 0 local.$ios-spacing-lg 0;
|
|
|
+ padding-left: local.$ios-spacing-xl;
|
|
|
|
|
|
li {
|
|
|
- font-size: $ios-font-size-base;
|
|
|
- color: $ios-text-primary;
|
|
|
- margin-bottom: $ios-spacing-sm;
|
|
|
+ font-size: local.$ios-font-size-base;
|
|
|
+ color: local.$ios-text-primary;
|
|
|
+ margin-bottom: local.$ios-spacing-sm;
|
|
|
|
|
|
&:last-child { margin-bottom: 0; }
|
|
|
}
|
|
@@ -700,35 +700,35 @@
|
|
|
|
|
|
.alert-actions {
|
|
|
display: flex;
|
|
|
- gap: $ios-spacing-md;
|
|
|
+ gap: local.$ios-spacing-md;
|
|
|
justify-content: flex-end;
|
|
|
|
|
|
.btn-view-all {
|
|
|
- background-color: $ios-primary;
|
|
|
- color: $ios-background;
|
|
|
+ background-color: local.$ios-primary;
|
|
|
+ color: local.$ios-background;
|
|
|
border: none;
|
|
|
- border-radius: $ios-radius-md;
|
|
|
- padding: $ios-spacing-sm $ios-spacing-lg;
|
|
|
- font-size: $ios-font-size-sm;
|
|
|
- font-weight: $ios-font-weight-medium;
|
|
|
+ border-radius: local.$ios-radius-md;
|
|
|
+ padding: local.$ios-spacing-sm local.$ios-spacing-lg;
|
|
|
+ font-size: local.$ios-font-size-sm;
|
|
|
+ font-weight: local.$ios-font-weight-medium;
|
|
|
cursor: pointer;
|
|
|
- transition: $ios-feedback-tap;
|
|
|
+ transition: local.$ios-feedback-tap;
|
|
|
|
|
|
- &:hover { background-color: $ios-primary-light; }
|
|
|
+ &:hover { background-color: local.$ios-primary-light; }
|
|
|
}
|
|
|
|
|
|
.btn-close {
|
|
|
- background-color: $ios-text-tertiary;
|
|
|
- color: $ios-text-primary;
|
|
|
+ background-color: local.$ios-text-tertiary;
|
|
|
+ color: local.$ios-text-primary;
|
|
|
border: none;
|
|
|
- border-radius: $ios-radius-md;
|
|
|
- padding: $ios-spacing-sm $ios-spacing-lg;
|
|
|
- font-size: $ios-font-size-sm;
|
|
|
- font-weight: $ios-font-weight-medium;
|
|
|
+ border-radius: local.$ios-radius-md;
|
|
|
+ padding: local.$ios-spacing-sm local.$ios-spacing-lg;
|
|
|
+ font-size: local.$ios-font-size-sm;
|
|
|
+ font-weight: local.$ios-font-weight-medium;
|
|
|
cursor: pointer;
|
|
|
- transition: $ios-feedback-tap;
|
|
|
+ transition: local.$ios-feedback-tap;
|
|
|
|
|
|
- &:hover { background-color: $ios-text-secondary; color: $ios-background; }
|
|
|
+ &:hover { background-color: local.$ios-text-secondary; color: local.$ios-background; }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -811,7 +811,7 @@
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-/* �典��条鸌憭湧�撌亙��∴�蝵烐聢撣��嚗�鉄蝻拇𦆮/�𦦵揣/璅∪���揢嚗� */
|
|
|
+/* �典��条鸌憭湧�撌亙��∴�蝵烐聢撣��嚗�鉄蝻拇𦆮/�𦦵揣/璅∪���揢嚙?*/
|
|
|
.gantt-header {
|
|
|
position: relative;
|
|
|
z-index: 2;
|
|
@@ -839,23 +839,23 @@
|
|
|
.scale-switch {
|
|
|
margin-left: auto;
|
|
|
display: inline-flex;
|
|
|
- border: 1px solid $ios-border;
|
|
|
+ border: 1px solid local.$ios-border;
|
|
|
border-radius: 8px;
|
|
|
overflow: hidden;
|
|
|
button {
|
|
|
background: #fff;
|
|
|
- color: $ios-text-secondary;
|
|
|
+ color: local.$ios-text-secondary;
|
|
|
padding: 6px 10px;
|
|
|
border: none;
|
|
|
outline: none;
|
|
|
cursor: pointer;
|
|
|
- font-size: $ios-font-size-sm;
|
|
|
- &:hover { background: $ios-background-secondary; }
|
|
|
+ font-size: local.$ios-font-size-sm;
|
|
|
+ &:hover { background: local.$ios-background-secondary; }
|
|
|
&.active {
|
|
|
- background: $ios-primary-light;
|
|
|
+ background: local.$ios-primary-light;
|
|
|
color: #fff;
|
|
|
}
|
|
|
- & + button { border-left: 1px solid $ios-border; }
|
|
|
+ & + button { border-left: 1px solid local.$ios-border; }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -863,14 +863,14 @@
|
|
|
position: relative;
|
|
|
display: inline-flex;
|
|
|
align-items: center;
|
|
|
- background: $ios-background;
|
|
|
- border: 1px solid $ios-border;
|
|
|
+ background: local.$ios-background;
|
|
|
+ border: 1px solid local.$ios-border;
|
|
|
border-radius: 999px;
|
|
|
padding: 2px;
|
|
|
overflow: hidden;
|
|
|
box-shadow: 0 1px 2px rgba(0,0,0,.04);
|
|
|
|
|
|
- // 皛穃�撘誯�鈭株���
|
|
|
+ // 皛穃�撘誯�鈭株�嚙?
|
|
|
&::before {
|
|
|
content: '';
|
|
|
position: absolute;
|
|
@@ -878,7 +878,7 @@
|
|
|
left: 2px;
|
|
|
bottom: 2px;
|
|
|
width: calc(50% - 2px);
|
|
|
- background: linear-gradient(180deg, $ios-primary-light 0%, darken($ios-primary-light, 4%) 100%);
|
|
|
+ background: linear-gradient(180deg, local.$ios-primary-light 0%, darken(local.$ios-primary-light, 4%) 100%);
|
|
|
border-radius: 999px;
|
|
|
box-shadow: 0 6px 14px rgba(99,102,241,.22);
|
|
|
transform: translateX(0%);
|
|
@@ -893,10 +893,10 @@
|
|
|
background: transparent;
|
|
|
border: none;
|
|
|
outline: none;
|
|
|
- color: $ios-text-secondary;
|
|
|
+ color: local.$ios-text-secondary;
|
|
|
padding: 10px 16px 10px 14px;
|
|
|
- font-size: $ios-font-size-sm;
|
|
|
- font-weight: $ios-font-weight-semibold;
|
|
|
+ font-size: local.$ios-font-size-sm;
|
|
|
+ font-weight: local.$ios-font-weight-semibold;
|
|
|
letter-spacing: .2px;
|
|
|
border-radius: 999px;
|
|
|
cursor: pointer;
|
|
@@ -904,7 +904,7 @@
|
|
|
display: inline-flex;
|
|
|
align-items: center;
|
|
|
gap: 6px;
|
|
|
- &:hover { color: $ios-text-primary; }
|
|
|
+ &:hover { color: local.$ios-text-primary; }
|
|
|
&:active { transform: translateY(0.5px); }
|
|
|
&:focus-visible { box-shadow: 0 0 0 3px rgba(99,102,241,.25); }
|
|
|
&.active {
|
|
@@ -959,9 +959,9 @@
|
|
|
.workload-summary {
|
|
|
margin: 12px 0 16px;
|
|
|
padding: 12px 14px;
|
|
|
- background: $ios-background;
|
|
|
- border: 1px solid $ios-border;
|
|
|
- border-radius: $ios-radius-lg;
|
|
|
+ background: local.$ios-background;
|
|
|
+ border: 1px solid local.$ios-border;
|
|
|
+ border-radius: local.$ios-radius-lg;
|
|
|
box-shadow: 0 1px 2px rgba(0,0,0,.04);
|
|
|
|
|
|
.summary-header {
|
|
@@ -969,26 +969,26 @@
|
|
|
align-items: center;
|
|
|
justify-content: space-between;
|
|
|
margin-bottom: 8px;
|
|
|
- h3 { font-size: $ios-font-size-md; margin: 0; color: $ios-text-primary; }
|
|
|
+ h3 { font-size: local.$ios-font-size-md; margin: 0; color: local.$ios-text-primary; }
|
|
|
.summary-actions {
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
gap: 8px;
|
|
|
.dimension-switch {
|
|
|
display: inline-flex;
|
|
|
- border: 1px solid $ios-border;
|
|
|
+ border: 1px solid local.$ios-border;
|
|
|
border-radius: 999px;
|
|
|
overflow: hidden;
|
|
|
button {
|
|
|
background: #fff;
|
|
|
- color: $ios-text-secondary;
|
|
|
+ color: local.$ios-text-secondary;
|
|
|
padding: 6px 10px;
|
|
|
border: none;
|
|
|
cursor: pointer;
|
|
|
- font-size: $ios-font-size-sm;
|
|
|
- &:hover { background: $ios-background-secondary; }
|
|
|
- &.active { background: $ios-primary-light; color: #fff; }
|
|
|
- & + button { border-left: 1px solid $ios-border; }
|
|
|
+ font-size: local.$ios-font-size-sm;
|
|
|
+ &:hover { background: local.$ios-background-secondary; }
|
|
|
+ &.active { background: local.$ios-primary-light; color: #fff; }
|
|
|
+ & + button { border-left: 1px solid local.$ios-border; }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1000,9 +1000,9 @@
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// �冽�隞嗆錰撠曇蕭�㰘��𡝗甅撘𧶏�霈拚★�桃��批之�睃��㛖����皛∪㨃���摰�
|
|
|
+// �冽�隞嗆錰撠曇蕭�㰘��𡝗甅撘𧶏�霈拚★�桃��批之�睃��㛖����皛∪㨃���嚙?
|
|
|
.project-kanban {
|
|
|
- // 霈拙仍�其�銝颱�摰孵膥雿輻鍂�舐鍂摰賢漲�屸�max-content嚗屸��滢�敹����赤�烐���
|
|
|
+ // 霈拙仍�其�銝颱�摰孵膥雿輻鍂�舐鍂摰賢漲�屸�max-content嚗屸��滢�敹����赤�烐�嚙?
|
|
|
.kanban-scroll {
|
|
|
.kanban-header, .kanban-body { width: 100%; }
|
|
|
}
|
|
@@ -1011,7 +1011,7 @@
|
|
|
.kanban-header {
|
|
|
display: grid;
|
|
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
|
- gap: $ios-spacing-md;
|
|
|
+ gap: local.$ios-spacing-md;
|
|
|
|
|
|
.kanban-column-header {
|
|
|
// �𡝗��箏�180px嚗��霈貉䌊���
|
|
@@ -1024,7 +1024,7 @@
|
|
|
.kanban-body {
|
|
|
display: grid;
|
|
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
|
- gap: $ios-spacing-md;
|
|
|
+ gap: local.$ios-spacing-md;
|
|
|
|
|
|
.kanban-column {
|
|
|
// �𡝗��箏�180px嚗��霈貉䌊���
|
|
@@ -1364,7 +1364,7 @@
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// �滚�撘讛挽霈�
|
|
|
+// �滚�撘讛挽嚙?
|
|
|
@media (max-width: 768px) {
|
|
|
.employee-detail-overlay {
|
|
|
padding: 10px;
|
|
@@ -1402,4 +1402,4 @@
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-}
|
|
|
+}
|