123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551 |
- /* 调试样式文件 - 增强版本,确保布局正确显示 */
- @use '../ios-theme.scss' as *;
- /* 重置所有可能冲突的样式 - 使用最高优先级 */
- * {
- box-sizing: border-box !important;
- }
- /* 重置主内容区域样式 */
- .main-content {
- width: 100% !important;
- margin: 0 !important;
- padding: 0 !important;
- }
- /* 重置内容包装器样式 */
- .content-wrapper {
- width: 100% !important;
- margin: 0 !important;
- padding: 0 !important;
- }
- /* 重置项目详情容器 */
- .project-detail-container {
- padding: 20px !important;
- width: 100% !important;
- margin: 0 !important;
- }
- /* 重置标签页内容容器 */
- .tab-content {
- width: 100% !important;
- padding: 0 !important;
- margin: 0 !important;
- }
- /* 重置项目进度标签页内容 */
- .progress-tab-content {
- width: 100% !important;
- padding: 0 !important;
- margin: 0 !important;
- }
- /* 上传区域样式优化 - 确保在并排显示时内容清晰可读 */
- .upload-section {
- /* 基础样式保持不变 */
- margin-bottom: 16px !important;
-
- /* 针对四个卡片并排时的特殊优化 */
- .stage-progress-container:has(.vertical-stage-block:nth-child(4):last-child) & {
- /* 笔记本端和PC端的上传区域优化 */
- @media (min-width: 1366px) {
- margin-bottom: 12px !important;
-
- .upload-dropzone {
- min-height: 120px !important;
- padding: 12px !important;
-
- .upload-text {
- font-size: 12px !important;
- line-height: 1.4 !important;
- }
-
- .upload-hint {
- font-size: 11px !important;
- margin-top: 4px !important;
- }
- }
- }
-
- /* 24寸PC端的上传区域优化 */
- @media (min-width: 1920px) {
- margin-bottom: 16px !important;
-
- .upload-dropzone {
- min-height: 140px !important;
- padding: 16px !important;
-
- .upload-text {
- font-size: 13px !important;
- line-height: 1.4 !important;
- }
-
- .upload-hint {
- font-size: 12px !important;
- margin-top: 6px !important;
- }
- }
- }
-
- /* 较小屏幕时保持紧凑布局 */
- @media (max-width: 1365px) {
- margin-bottom: 10px !important;
-
- .upload-dropzone {
- min-height: 100px !important;
- padding: 10px !important;
-
- .upload-text {
- font-size: 11px !important;
- line-height: 1.3 !important;
- }
-
- .upload-hint {
- font-size: 10px !important;
- margin-top: 3px !important;
- }
- }
- }
- }
- }
- /* 阶段标题样式优化 */
- .vertical-stage-header {
- /* 针对四个卡片并排时的标题优化 */
- .stage-progress-container:has(.vertical-stage-block:nth-child(4):last-child) & {
- margin-bottom: 12px !important;
-
- h4 {
- font-size: 14px !important;
- line-height: 1.3 !important;
- margin: 0 !important;
-
- /* 笔记本端和PC端的标题优化 */
- @media (min-width: 1366px) {
- font-size: 15px !important;
- }
-
- /* 24寸PC端的标题优化 */
- @media (min-width: 1920px) {
- font-size: 16px !important;
- }
- }
- }
- }
- /* 强制覆盖主内容布局样式 - 使用最高优先级 */
- .progress-tab-content > .main-content-layout {
- display: flex !important;
- flex-wrap: nowrap !important;
- gap: 20px !important;
- margin-top: 20px !important;
- width: 100% !important;
- background-color: transparent !important; /* 去除调试底色 */
- padding: 20px !important;
- border-radius: 8px !important;
- }
- /* 强制覆盖左侧列样式 - 使用最高优先级 */
- .progress-tab-content > .main-content-layout > .left-column {
- width: 28% !important;
- min-width: 28% !important;
- max-width: 28% !important;
- display: flex !important;
- flex-direction: column !important;
- gap: 16px !important;
- background-color: transparent !important; // 去除左侧粉色底色
- padding: 8px !important;
- border-radius: 6px !important;
- }
- /* 强制覆盖右侧列样式 - 使用最高优先级 */
- .progress-tab-content > .main-content-layout > .right-column {
- width: 72% !important;
- min-width: 72% !important;
- max-width: 72% !important;
- display: flex !important;
- flex-direction: column !important;
- gap: 16px !important;
- background-color: transparent !important; // 去除右侧调试底色
- padding: 8px !important;
- border-radius: 6px !important;
- }
- /* 优化卡片样式 */
- .left-column .card,
- .right-column .card {
- background-color: white !important;
- border-radius: 8px !important;
- padding: 16px !important;
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1) !important;
- border: 1px solid #eaeaea !important;
- }
- /* 客户信息卡片内部元素优化 */
- .left-column .project-info-card .info-grid {
- display: grid !important;
- grid-template-columns: 1fr 1fr !important;
- gap: 8px !important;
- margin-bottom: 12px !important;
- }
- .left-column .project-info-card .info-item {
- display: flex !important;
- flex-direction: column !important;
- padding: 8px !important;
- background: #f8f9fa !important;
- border-radius: 6px !important;
- border: 1px solid #e9ecef !important;
- font-size: 12px !important;
- }
- .left-column .project-info-card .info-item label {
- font-weight: 500 !important;
- color: #6c757d !important;
- margin-bottom: 4px !important;
- font-size: 11px !important;
- }
- .left-column .project-info-card .info-item span {
- color: #212529 !important;
- font-weight: 600 !important;
- font-size: 12px !important;
- }
- .left-column .project-info-card .tags-container {
- margin-top: 8px !important;
- }
- .left-column .project-info-card .tag-section {
- margin-bottom: 8px !important;
- }
- .left-column .project-info-card .tag-section h3 {
- font-size: 12px !important;
- font-weight: 600 !important;
- color: #495057 !important;
- margin-bottom: 6px !important;
- }
- .left-column .project-info-card .tags .tag {
- font-size: 10px !important;
- padding: 4px 8px !important;
- margin: 2px 4px 2px 0 !important;
- background-color: rgba(24, 144, 255, 0.08) !important;
- color: #1890ff !important;
- border-radius: 4px !important;
- }
- .left-column .project-info-card .need-list {
- margin: 0 !important;
- padding-left: 12px !important;
- }
- .left-column .project-info-card .need-list li {
- font-size: 11px !important;
- color: #495057 !important;
- margin-bottom: 3px !important;
- }
- .left-column .project-info-card .requirement-sync-info {
- margin-top: 8px !important;
- padding: 8px !important;
- background: #f1f3f4 !important;
- border-radius: 6px !important;
- }
- .left-column .project-info-card .requirement-sync-info h4 {
- font-size: 11px !important;
- font-weight: 600 !important;
- color: #495057 !important;
- margin-bottom: 6px !important;
- }
- /* 确保响应式布局正常工作 */
- @media (max-width: 1024px) {
- .progress-tab-content > .main-content-layout {
- flex-direction: column !important;
- }
-
- .progress-tab-content > .main-content-layout > .left-column,
- .progress-tab-content > .main-content-layout > .right-column {
- width: 100% !important;
- min-width: 100% !important;
- max-width: 100% !important;
- }
- }
- /* ===================== 四大板块:工具条与内容样式(调试版) ===================== */
- .sections-toolbar {
- display: flex;
- gap: $ios-spacing-md;
- padding: $ios-spacing-sm;
- background: $ios-background-secondary;
- border-radius: $ios-radius-lg;
- border: 1px solid $ios-border;
- margin: $ios-spacing-md 0 $ios-spacing-lg;
- }
- .section-btn {
- appearance: none;
- border: 1px solid $ios-border;
- background: $ios-background;
- color: $ios-text-primary;
- padding: $ios-spacing-sm $ios-spacing-lg;
- border-radius: $ios-radius-md;
- font-size: $ios-font-size-sm;
- font-weight: $ios-font-weight-medium;
- cursor: pointer;
- transition: all 0.15s ease;
- }
- .section-btn:hover { transform: translateY(-1px); box-shadow: 0 2px 8px rgba(0,0,0,0.05); }
- .section-btn.completed { background: #e6f7e6; color: $ios-success; border-color: rgba(0,0,0,0.06); }
- .section-btn.active { background: #fff2f0; color: #ff4d4f; border-color: #ff4d4f; }
- .section-btn.pending { background: $ios-background; color: $ios-text-secondary; }
- .sections-content { margin-top: $ios-spacing-md; }
- .section-panel {
- background: $ios-background;
- border: 1px solid $ios-border;
- border-radius: $ios-radius-lg;
- padding: $ios-spacing-lg;
- }
- /* 交付执行:三列布局 */
- .delivery-grid {
- display: grid;
- grid-template-columns: repeat(3, 1fr);
- gap: $ios-spacing-lg;
- }
- @media (max-width: 1024px) {
- .delivery-grid { grid-template-columns: 1fr; }
- }
- .delivery-col {
- background: $ios-background-secondary;
- border: 1px solid $ios-border;
- border-radius: $ios-radius-md;
- padding: $ios-spacing-md;
- display: flex;
- flex-direction: column;
- gap: $ios-spacing-md;
- }
- .delivery-stage-header {
- display: flex;
- align-items: center;
- gap: $ios-spacing-sm;
- }
- .delivery-stage-header .dot {
- width: 10px; height: 10px; border-radius: 50%; background: $ios-border;
- }
- .delivery-stage-header .dot.completed { background: $ios-success; }
- .delivery-stage-header .dot.active { background: $ios-primary; }
- .delivery-stage-body { display: flex; flex-direction: column; gap: $ios-spacing-md; }
- /* 统一纵向内容容器 */
- .section-vertical { display: flex; flex-direction: column; gap: $ios-spacing-lg; }
- .vertical-stage-block {
- background: $ios-background-secondary;
- border: 1px solid $ios-border;
- border-radius: $ios-radius-md;
- padding: $ios-spacing-md;
- }
- .vertical-stage-header { display: flex; align-items: center; gap: $ios-spacing-sm; margin-bottom: $ios-spacing-sm; }
- .vertical-stage-header .dot { width: 10px; height: 10px; border-radius: 50%; background: $ios-border; }
- .vertical-stage-header .dot.completed { background: $ios-success; }
- .vertical-stage-header .dot.active { background: $ios-primary; }
- .vertical-stage-body { display: flex; flex-direction: column; gap: $ios-spacing-md; }
- /* 缩略图列表适配到新容器 */
- .section-panel .thumb-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: $ios-spacing-md; }
- .section-panel .thumb-item { background: white; border: 1px solid $ios-border; border-radius: $ios-radius-sm; overflow: hidden; display: flex; flex-direction: column; }
- .section-panel .thumb-item img { width: 100%; height: 120px; object-fit: cover; }
- .section-panel .thumb-meta { display: flex; justify-content: space-between; padding: $ios-spacing-xs $ios-spacing-sm; font-size: $ios-font-size-xs; color: $ios-text-secondary; }
- /* 上传区小幅适配 */
- .section-panel .upload-header {
- display: flex;
- align-items: center;
- justify-content: space-between;
- gap: $ios-spacing-sm;
- padding: $ios-spacing-sm $ios-spacing-md;
- background: $ios-background;
- border: 1px dashed $ios-border;
- border-radius: $ios-radius-sm;
- }
- /* 强调版:客户信息卡片更突出、边缘更清晰 */
- /* 顶部强调条、圆角与阴影调整,以及关键信息高亮 */
- .left-column .project-info-card.card {
- border: 1px solid $ios-border !important;
- border-radius: 12px !important; /* 圆角加大 */
- box-shadow: 0 10px 24px rgba(0,0,0,0.06), 0 2px 6px rgba(0,0,0,0.05) !important; /* 阴影减弱些 */
- position: relative;
- }
- .left-column .project-info-card.card::before {
- content: "";
- position: absolute;
- top: 0; left: 0; right: 0;
- height: 4px; /* 顶部强调条 */
- background: $ios-primary;
- border-top-left-radius: 12px;
- border-top-right-radius: 12px;
- }
- /* 关键信息轻微高亮:客户姓名 */
- .left-column .project-info-card .info-item.key-info span {
- font-weight: $ios-font-weight-semibold;
- color: $ios-text-primary;
- }
- .left-column .project-info-card .info-item.key-info label {
- color: $ios-primary;
- }
- /* 标签轻微高亮:提升标签显著性但不过度 */
- .left-column .project-info-card .tags .tag {
- background-color: rgba(24, 144, 255, 0.08); /* 以主色系的淡背景形成层级 */
- color: $ios-primary;
- }
- .left-column .project-info-card.card h2 {
- color: $ios-primary !important; /* 标题与强调条呼应 */
- }
- /* 客户信息卡片头部和同步状态 */
- .left-column .project-info-card .card-header {
- display: flex !important;
- justify-content: space-between !important;
- align-items: center !important;
- margin-bottom: 16px !important;
- padding-bottom: 12px !important;
- border-bottom: 1px solid #f0f0f0 !important;
- transition: all 0.3s ease !important;
- }
- .left-column .project-info-card .card-header:hover {
- background-color: rgba(0, 0, 0, 0.02) !important;
- }
- .left-column .project-info-card .card-header h2 {
- margin: 0 !important;
- font-size: 18px !important;
- font-weight: 600 !important;
- color: #262626 !important;
- }
- .left-column .project-info-card .card-header .header-actions {
- display: flex !important;
- align-items: center !important;
- gap: 12px !important;
- }
- .left-column .project-info-card .sync-status {
- display: flex !important;
- align-items: center !important;
- font-size: 12px !important;
- color: #8c8c8c !important;
- }
- .left-column .project-info-card .sync-status.syncing {
- color: #1890ff !important;
- }
- .left-column .project-info-card .sync-indicator {
- display: flex !important;
- align-items: center !important;
- gap: 4px !important;
- }
- .left-column .project-info-card .sync-spinner {
- width: 12px !important;
- height: 12px !important;
- border: 2px solid #f0f0f0 !important;
- border-top: 2px solid #1890ff !important;
- border-radius: 50% !important;
- animation: spin 1s linear infinite !important;
- }
- .left-column .project-info-card .sync-time {
- display: flex !important;
- align-items: center !important;
- gap: 4px !important;
- }
- .left-column .project-info-card .icon-sync {
- width: 12px !important;
- height: 12px !important;
- background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%238c8c8c'%3E%3Cpath d='M12 6v3l4-4-4-4v3c-4.42 0-8 3.58-8 8 0 1.57.46 3.03 1.24 4.26L6.7 14.8c-.45-.83-.7-1.79-.7-2.8 0-3.31 2.69-6 6-6zm6.76 1.74L17.3 9.2c.44.84.7 1.79.7 2.8 0 3.31-2.69 6-6 6v-3l-4 4 4 4v-3c4.42 0 8-3.58 8-8 0-1.57-.46-3.03-1.24-4.26z'/%3E%3C/svg%3E") no-repeat center !important;
- background-size: contain !important;
- }
- /* 展开/收起图标样式 */
- .left-column .project-info-card .toggle-icon {
- display: flex !important;
- align-items: center !important;
- justify-content: center !important;
- width: 24px !important;
- height: 24px !important;
- border-radius: 50% !important;
- background-color: rgba(0, 0, 0, 0.04) !important;
- transition: all 0.3s ease !important;
- cursor: pointer !important;
- }
- .left-column .project-info-card .toggle-icon:hover {
- background-color: rgba(0, 0, 0, 0.08) !important;
- }
- .left-column .project-info-card .toggle-icon svg {
- transition: transform 0.3s ease !important;
- color: #666 !important;
- }
- .left-column .project-info-card .toggle-icon.expanded svg {
- transform: rotate(180deg) !important;
- }
- /* 折叠展开动画效果 */
- .left-column .project-info-card .info-grid {
- max-height: 1000px !important;
- overflow: hidden !important;
- transition: max-height 0.3s ease, opacity 0.3s ease !important;
- opacity: 1 !important;
- }
- .left-column .project-info-card .info-grid.collapsed {
- max-height: 0 !important;
- opacity: 0 !important;
- }
- .left-column .project-info-card .tags-container {
- max-height: 1000px !important;
- overflow: hidden !important;
- transition: max-height 0.3s ease, opacity 0.3s ease !important;
- opacity: 1 !important;
- }
- .left-column .project-info-card .tags-container.collapsed {
- max-height: 0 !important;
- opacity: 0 !important;
- margin-top: 0 !important;
- }
- @keyframes spin {
- 0% { transform: rotate(0deg); }
- 100% { transform: rotate(360deg); }
- }
- /* 方案展示相关样式 */
- .proposal-confirm-card {
- .analysis-progress {
- padding: 24px;
- background: linear-gradient(135deg, #f8f9ff 0%, #e8f2ff 100%);
- border-radius: 12px;
- margin-bottom: 20px;
- border: 1px solid #e1e8ff;
- .progress-header {
- display: flex;
- justify-content: space-between;
- align-items: center;
- margin-bottom: 16px;
- h4 {
- margin: 0;
- color: #2c3e50;
- font-size: 16px;
- font-weight: 600;
- }
- .progress-percentage {
- font-size: 18px;
- font-weight: 700;
- color: #3498db;
- }
- }
- .progress-bar {
- width: 100%;
- height: 8px;
- background: #e9ecef;
- border-radius: 4px;
- overflow: hidden;
- margin-bottom: 12px;
- .progress-fill {
- height: 100%;
- background: linear-gradient(90deg, #3498db 0%, #2ecc71 100%);
- border-radius: 4px;
- transition: width 0.3s ease;
- }
- }
- .progress-description {
- margin: 0;
- color: #6c757d;
- font-size: 14px;
- text-align: center;
- }
- }
- .proposal-display {
- .proposal-overview {
- background: linear-gradient(135deg, #fff 0%, #f8f9fa 100%);
- border-radius: 12px;
- padding: 24px;
- margin-bottom: 24px;
- border: 1px solid #e9ecef;
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
- .overview-header {
- display: flex;
- justify-content: space-between;
- align-items: flex-start;
- margin-bottom: 20px;
- h3 {
- margin: 0;
- color: #2c3e50;
- font-size: 20px;
- font-weight: 700;
- }
- .proposal-meta {
- display: flex;
- gap: 12px;
- align-items: center;
- .version {
- background: #e3f2fd;
- color: #1976d2;
- padding: 4px 12px;
- border-radius: 16px;
- font-size: 12px;
- font-weight: 600;
- }
- .feasibility-score {
- background: #e8f5e8;
- color: #2e7d32;
- padding: 4px 12px;
- border-radius: 16px;
- font-size: 12px;
- font-weight: 600;
- }
- }
- }
- .quick-summary {
- display: grid;
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
- gap: 16px;
- .summary-item {
- display: flex;
- flex-direction: column;
- gap: 4px;
- .label {
- font-size: 12px;
- color: #6c757d;
- font-weight: 600;
- text-transform: uppercase;
- letter-spacing: 0.5px;
- }
- .value {
- font-size: 14px;
- color: #2c3e50;
- font-weight: 500;
- line-height: 1.4;
- }
- }
- }
- }
- .proposal-details {
- .detail-section {
- background: #fff;
- border-radius: 12px;
- padding: 24px;
- margin-bottom: 20px;
- border: 1px solid #e9ecef;
- box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04);
- .section-header {
- display: flex;
- justify-content: space-between;
- align-items: center;
- margin-bottom: 20px;
- padding-bottom: 12px;
- border-bottom: 2px solid #f8f9fa;
- h4 {
- margin: 0;
- color: #2c3e50;
- font-size: 18px;
- font-weight: 700;
- }
- .section-count,
- .style-name,
- .harmony-type,
- .total-area,
- .total-budget {
- background: #f8f9fa;
- color: #495057;
- padding: 6px 12px;
- border-radius: 20px;
- font-size: 13px;
- font-weight: 600;
- }
- }
- // 材质网格样式
- .materials-grid {
- display: grid;
- grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
- gap: 16px;
- .material-card {
- background: #f8f9fa;
- border-radius: 8px;
- padding: 16px;
- border-left: 4px solid #dee2e6;
- transition: all 0.3s ease;
- &.primary {
- border-left-color: #28a745;
- background: linear-gradient(135deg, #f8fff9 0%, #e8f5e8 100%);
- }
- &.secondary {
- border-left-color: #ffc107;
- background: linear-gradient(135deg, #fffdf8 0%, #fff3cd 100%);
- }
- &:hover {
- transform: translateY(-2px);
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
- }
- .material-header {
- display: flex;
- justify-content: space-between;
- align-items: center;
- margin-bottom: 12px;
- h5 {
- margin: 0;
- color: #2c3e50;
- font-size: 16px;
- font-weight: 600;
- }
- .usage-percentage {
- background: #007bff;
- color: white;
- padding: 4px 8px;
- border-radius: 12px;
- font-size: 12px;
- font-weight: 700;
- }
- }
- .material-specs {
- margin-bottom: 12px;
- .spec-item {
- display: flex;
- justify-content: space-between;
- margin-bottom: 6px;
- .spec-label {
- color: #6c757d;
- font-size: 13px;
- font-weight: 500;
- }
- .spec-value {
- color: #2c3e50;
- font-size: 13px;
- font-weight: 600;
- }
- }
- }
- .material-properties {
- display: flex;
- gap: 8px;
- flex-wrap: wrap;
- .property-tag {
- background: #e9ecef;
- color: #495057;
- padding: 4px 8px;
- border-radius: 12px;
- font-size: 11px;
- font-weight: 500;
- }
- }
- }
- }
- // 设计风格样式
- .style-elements {
- margin-bottom: 20px;
- .style-element {
- background: #f8f9fa;
- border-radius: 8px;
- padding: 16px;
- margin-bottom: 12px;
- .element-header {
- display: flex;
- justify-content: space-between;
- align-items: center;
- margin-bottom: 8px;
- .element-name {
- font-weight: 600;
- color: #2c3e50;
- font-size: 14px;
- }
- .influence-score {
- background: #007bff;
- color: white;
- padding: 2px 8px;
- border-radius: 10px;
- font-size: 12px;
- font-weight: 600;
- }
- }
- .element-description {
- color: #6c757d;
- font-size: 13px;
- margin-bottom: 8px;
- line-height: 1.4;
- }
- .influence-bar {
- width: 100%;
- height: 4px;
- background: #e9ecef;
- border-radius: 2px;
- overflow: hidden;
- .influence-fill {
- height: 100%;
- background: linear-gradient(90deg, #007bff 0%, #28a745 100%);
- border-radius: 2px;
- transition: width 0.3s ease;
- }
- }
- }
- }
- .style-characteristics {
- display: grid;
- grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
- gap: 12px;
- .characteristic-item {
- background: #f8f9fa;
- padding: 12px;
- border-radius: 8px;
- text-align: center;
- border: 2px solid transparent;
- &.high {
- border-color: #28a745;
- background: linear-gradient(135deg, #f8fff9 0%, #e8f5e8 100%);
- }
- &.medium {
- border-color: #ffc107;
- background: linear-gradient(135deg, #fffdf8 0%, #fff3cd 100%);
- }
- .char-feature {
- display: block;
- font-size: 12px;
- color: #6c757d;
- font-weight: 600;
- margin-bottom: 4px;
- }
- .char-value {
- display: block;
- font-size: 14px;
- color: #2c3e50;
- font-weight: 700;
- }
- }
- }
- // 色彩方案样式
- .color-palette {
- display: grid;
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
- gap: 16px;
- margin-bottom: 20px;
- .color-item {
- background: #fff;
- border-radius: 8px;
- padding: 16px;
- border: 1px solid #e9ecef;
- transition: all 0.3s ease;
- &.dominant {
- border-color: #007bff;
- box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.1);
- }
- &.accent {
- border-color: #28a745;
- box-shadow: 0 0 0 2px rgba(40, 167, 69, 0.1);
- }
- &:hover {
- transform: translateY(-2px);
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
- }
- .color-swatch {
- width: 100%;
- height: 60px;
- border-radius: 6px;
- margin-bottom: 12px;
- border: 1px solid rgba(0, 0, 0, 0.1);
- }
- .color-info {
- text-align: center;
- margin-bottom: 8px;
- .color-name {
- font-weight: 600;
- color: #2c3e50;
- font-size: 14px;
- margin-bottom: 4px;
- }
- .color-percentage {
- font-size: 18px;
- font-weight: 700;
- color: #007bff;
- margin-bottom: 4px;
- }
- .color-role {
- font-size: 11px;
- color: #6c757d;
- text-transform: uppercase;
- letter-spacing: 0.5px;
- }
- }
- .color-codes {
- display: flex;
- flex-direction: column;
- gap: 2px;
- .hex-code,
- .rgb-code {
- font-family: 'Courier New', monospace;
- font-size: 11px;
- color: #6c757d;
- text-align: center;
- }
- }
- }
- }
- .color-psychology {
- display: grid;
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
- gap: 16px;
- .psychology-item {
- background: #f8f9fa;
- padding: 12px;
- border-radius: 8px;
- display: flex;
- flex-direction: column;
- gap: 4px;
- .label {
- font-size: 12px;
- color: #6c757d;
- font-weight: 600;
- }
- .value {
- font-size: 14px;
- color: #2c3e50;
- font-weight: 600;
- }
- }
- }
- // 空间布局样式
- .space-dimensions {
- display: grid;
- grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
- gap: 12px;
- margin-bottom: 20px;
- .dimension-item {
- background: #f8f9fa;
- padding: 12px;
- border-radius: 8px;
- text-align: center;
- .dim-label {
- display: block;
- font-size: 12px;
- color: #6c757d;
- font-weight: 600;
- margin-bottom: 4px;
- }
- .dim-value {
- display: block;
- font-size: 16px;
- color: #2c3e50;
- font-weight: 700;
- }
- }
- }
- .functional-zones {
- display: grid;
- grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
- gap: 16px;
- .zone-card {
- background: #f8f9fa;
- border-radius: 8px;
- padding: 16px;
- border-left: 4px solid #007bff;
- .zone-header {
- display: flex;
- justify-content: space-between;
- align-items: center;
- margin-bottom: 12px;
- h5 {
- margin: 0;
- color: #2c3e50;
- font-size: 16px;
- font-weight: 600;
- }
- .zone-stats {
- display: flex;
- gap: 8px;
- .zone-area {
- background: #007bff;
- color: white;
- padding: 4px 8px;
- border-radius: 12px;
- font-size: 12px;
- font-weight: 600;
- }
- .zone-percentage {
- background: #28a745;
- color: white;
- padding: 4px 8px;
- border-radius: 12px;
- font-size: 12px;
- font-weight: 600;
- }
- }
- }
- .zone-requirements,
- .zone-furniture {
- margin-bottom: 12px;
- .requirements-label,
- .furniture-label {
- font-size: 12px;
- color: #6c757d;
- font-weight: 600;
- margin-bottom: 6px;
- }
- .requirements-tags {
- display: flex;
- gap: 6px;
- flex-wrap: wrap;
- .requirement-tag {
- background: #e9ecef;
- color: #495057;
- padding: 4px 8px;
- border-radius: 12px;
- font-size: 11px;
- font-weight: 500;
- }
- }
- .furniture-list {
- color: #2c3e50;
- font-size: 13px;
- line-height: 1.4;
- }
- }
- }
- }
- // 预算与时间线样式
- .budget-breakdown {
- margin-bottom: 20px;
- .budget-item {
- background: #f8f9fa;
- border-radius: 8px;
- padding: 16px;
- margin-bottom: 12px;
- display: grid;
- grid-template-columns: 1fr auto auto;
- gap: 16px;
- align-items: center;
- .budget-category {
- font-weight: 600;
- color: #2c3e50;
- font-size: 14px;
- }
- .budget-amount {
- font-weight: 700;
- color: #28a745;
- font-size: 16px;
- }
- .budget-percentage {
- background: #007bff;
- color: white;
- padding: 4px 8px;
- border-radius: 12px;
- font-size: 12px;
- font-weight: 600;
- }
- .budget-bar {
- grid-column: 1 / -1;
- width: 100%;
- height: 6px;
- background: #e9ecef;
- border-radius: 3px;
- overflow: hidden;
- margin-top: 8px;
- .budget-fill {
- height: 100%;
- background: linear-gradient(90deg, #28a745 0%, #20c997 100%);
- border-radius: 3px;
- transition: width 0.3s ease;
- }
- }
- }
- }
- .timeline {
- display: flex;
- gap: 12px;
- flex-wrap: wrap;
- .timeline-item {
- background: #f8f9fa;
- padding: 12px 16px;
- border-radius: 8px;
- text-align: center;
- flex: 1;
- min-width: 120px;
- .phase-name {
- font-size: 13px;
- color: #2c3e50;
- font-weight: 600;
- margin-bottom: 4px;
- }
- .phase-duration {
- font-size: 14px;
- color: #007bff;
- font-weight: 700;
- }
- }
- }
- }
- }
- .proposal-actions {
- display: flex;
- gap: 12px;
- justify-content: center;
- padding: 20px 0;
- .confirm-btn,
- .adjust-btn {
- padding: 12px 24px;
- border-radius: 8px;
- font-weight: 600;
- font-size: 14px;
- border: none;
- cursor: pointer;
- transition: all 0.3s ease;
- &.primary {
- background: linear-gradient(135deg, #28a745 0%, #20c997 100%);
- color: white;
- &:hover {
- transform: translateY(-2px);
- box-shadow: 0 4px 12px rgba(40, 167, 69, 0.3);
- }
- }
- &.secondary {
- background: #f8f9fa;
- color: #6c757d;
- border: 1px solid #dee2e6;
- &:hover {
- background: #e9ecef;
- color: #495057;
- }
- }
- }
- }
- }
- }
- /* 活动阶段卡片:浅红底色突显(更显眼版) */
- .delivery-col.active,
- .vertical-stage-block.active {
- background: #ffeaea; /* 比 #fff2f0 更显眼 */
- border-color: #ffccc7; /* 维持柔和的红系边框 */
- box-shadow: 0 8px 22px rgba(255, 85, 62, 0.12), 0 2px 8px rgba(255, 85, 62, 0.10);
- position: relative; /* 提供定位上下文给badge */
- padding-right: $ios-spacing-lg; /* 让出badge空间,避免内容压贴 */
- }
- /* 活动阶段标题与圆点颜色呼应 */
- .delivery-col.active .delivery-stage-header h3,
- .vertical-stage-block.active .vertical-stage-header h3 { color: #ff4d4f; }
- .delivery-col.active .dot,
- .vertical-stage-block.active .dot { background: #ff4d4f; }
- /* 右上角状态badge:进行中 */
- .delivery-col.active::after,
- .vertical-stage-block.active::after {
- content: '进行中';
- position: absolute;
- top: 8px;
- right: 8px;
- padding: 2px 8px;
- background: #ff4d4f;
- color: #fff;
- border-radius: 999px;
- font-size: 12px;
- line-height: 1.4;
- font-weight: 600;
- box-shadow: 0 4px 10px rgba(255, 77, 79, 0.25);
- }
- /* 阶段卡片横向排列(按板块的阶段数量自适应列数) */
- .stage-progress-container {
- display: grid !important;
- gap: 12px !important;
- align-items: stretch !important; // 保证同一行的卡片等高
- margin-top: 0 !important; // 删除标题后,移除上边距以优化空间利用
-
- /* 针对交付执行阶段的四个卡片进行特殊处理 */
- &:has(.vertical-stage-block:nth-child(4):last-child) {
- /* 当有且仅有4个卡片时,强制并排显示 */
- grid-template-columns: repeat(4, 1fr) !important;
-
- /* 笔记本端适配(1366px及以上) */
- @media (min-width: 1366px) {
- grid-template-columns: repeat(4, 1fr) !important;
- gap: 16px !important;
- }
-
- /* 24寸PC端适配(1920px及以上) */
- @media (min-width: 1920px) {
- grid-template-columns: repeat(4, 1fr) !important;
- gap: 20px !important;
- }
-
- /* 较小屏幕的降级处理(小于1366px) */
- @media (max-width: 1365px) {
- grid-template-columns: repeat(2, 1fr) !important;
- gap: 12px !important;
- }
- }
-
- /* 其他情况保持原有的自适应布局 */
- &:not(:has(.vertical-stage-block:nth-child(4):last-child)) {
- grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)) !important;
- }
- }
- .vertical-stage-block {
- display: flex !important;
- flex-direction: column !important;
- height: 100% !important;
- padding: 12px !important;
- background: white !important;
- border-radius: 8px !important;
- border: 1px solid #e9ecef !important;
- box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08) !important;
-
- /* 确保卡片内容在并排显示时保持可读性 */
- min-width: 0 !important; /* 防止内容溢出 */
-
- /* 针对四个卡片并排时的特殊样式 */
- .stage-progress-container:has(.vertical-stage-block:nth-child(4):last-child) & {
- /* 笔记本端和PC端的内容优化 */
- @media (min-width: 1366px) {
- padding: 16px !important;
- min-height: 300px !important; /* 确保卡片有足够高度 */
- }
-
- /* 24寸PC端的内容优化 */
- @media (min-width: 1920px) {
- padding: 20px !important;
- min-height: 320px !important;
- }
-
- /* 较小屏幕时保持紧凑布局 */
- @media (max-width: 1365px) {
- padding: 12px !important;
- min-height: 280px !important;
- }
- }
- }
- .vertical-stage-header {
- display: flex !important;
- align-items: center !important;
- gap: 8px !important;
- margin-bottom: 8px !important;
- padding-bottom: 6px !important;
- border-bottom: 1px solid #f1f3f4 !important;
- }
- .vertical-stage-header h3 {
- font-size: 13px !important;
- font-weight: 600 !important;
- color: #495057 !important;
- margin: 0 !important;
- }
- .vertical-stage-header .dot {
- width: 8px !important;
- height: 8px !important;
- border-radius: 50% !important;
- background: #dee2e6 !important;
- flex-shrink: 0 !important;
- }
- .vertical-stage-header .dot.completed {
- background: #28a745 !important;
- }
- .vertical-stage-header .dot.active {
- background: #ff4d4f !important;
- }
- .vertical-stage-body {
- display: flex !important;
- flex-direction: column !important;
- gap: 8px !important;
- flex: 1 1 auto !important;
- }
- /* 活动阶段卡片优化 */
- .vertical-stage-block.active {
- background: #fff2f0 !important;
- border-color: #ffccc7 !important;
- box-shadow: 0 2px 8px rgba(255, 77, 79, 0.2) !important;
- }
- .vertical-stage-block.active .vertical-stage-header h3 {
- color: #ff4d4f !important;
- }
- .vertical-stage-block.active .dot {
- background: #ff4d4f !important;
- }
- /* 订单创建阶段完成后的绿色高亮 */
- .vertical-stage-block.completed {
- background: #f6ffed !important;
- border-color: #b7eb8f !important;
- box-shadow: 0 2px 8px rgba(183, 235, 143, 0.3) !important;
- }
- .vertical-stage-block.completed .vertical-stage-header h3 {
- color: #389e0d !important;
- font-weight: 600 !important;
- }
- .vertical-stage-block.completed .dot {
- background: #52c41a !important;
- }
- /* 需求沟通阶段激活时的高亮 */
- .vertical-stage-block[id="stage-requirements-talk"].active {
- background: linear-gradient(135deg, #fff2f0 0%, #ffe6e6 100%) !important;
- border-color: #ff7875 !important;
- box-shadow: 0 4px 16px rgba(255, 77, 79, 0.2) !important;
- transform: translateY(-2px) !important;
- transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1) !important;
- }
- .vertical-stage-block[id="stage-requirements-talk"].active .vertical-stage-header h3 {
- color: #ff4d4f !important;
- font-weight: 700 !important;
- }
- .vertical-stage-block[id="stage-requirements-talk"].active .dot {
- background: #ff4d4f !important;
- box-shadow: 0 0 0 4px rgba(255, 77, 79, 0.2) !important;
- }
- /* 方案确认卡片样式 - 与客户信息卡片保持一致 */
- .left-column .proposal-confirm-card {
- background-color: white !important;
- border-radius: 8px !important;
- padding: 16px !important;
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1) !important;
- border: 1px solid #eaeaea !important;
- margin-top: 16px !important;
- }
- .left-column .proposal-confirm-card .card-header {
- display: flex !important;
- justify-content: space-between !important;
- align-items: center !important;
- margin-bottom: 16px !important;
- padding-bottom: 12px !important;
- border-bottom: 1px solid #f0f0f0 !important;
- }
- .left-column .proposal-confirm-card .card-header h2 {
- margin: 0 !important;
- font-size: 18px !important;
- font-weight: 600 !important;
- color: #262626 !important;
- }
- .left-column .proposal-confirm-card .sync-status {
- display: flex !important;
- align-items: center !important;
- font-size: 12px !important;
- color: #8c8c8c !important;
- }
- .left-column .proposal-confirm-card .info-grid {
- display: grid !important;
- grid-template-columns: 1fr 1fr !important;
- gap: 8px !important;
- margin-bottom: 16px !important;
- }
- .left-column .proposal-confirm-card .info-item {
- display: flex !important;
- flex-direction: column !important;
- padding: 8px !important;
- background: #f8f9fa !important;
- border-radius: 6px !important;
- border: 1px solid #e9ecef !important;
- font-size: 12px !important;
- }
- .left-column .proposal-confirm-card .info-item label {
- font-weight: 500 !important;
- color: #6c757d !important;
- margin-bottom: 4px !important;
- font-size: 11px !important;
- }
- .left-column .proposal-confirm-card .info-item span {
- color: #212529 !important;
- font-weight: 600 !important;
- font-size: 12px !important;
- }
- .left-column .proposal-confirm-card .color-preview {
- width: 16px !important;
- height: 16px !important;
- border-radius: 4px !important;
- border: 1px solid #ddd !important;
- margin-top: 4px !important;
- }
- .left-column .proposal-confirm-card .proposal-actions {
- margin-top: 16px !important;
- padding-top: 12px !important;
- border-top: 1px solid #f0f0f0 !important;
- text-align: center !important;
- }
- .left-column .proposal-confirm-card .confirm-btn {
- background: #1890ff !important;
- color: white !important;
- border: none !important;
- padding: 8px 24px !important;
- border-radius: 6px !important;
- font-size: 14px !important;
- font-weight: 500 !important;
- cursor: pointer !important;
- transition: background-color 0.3s ease !important;
- }
- .left-column .proposal-confirm-card .confirm-btn:hover {
- background: #40a9ff !important;
- }
- .left-column .proposal-confirm-card .waiting-state {
- text-align: center !important;
- padding: 24px 16px !important;
- color: #8c8c8c !important;
- }
- .left-column .proposal-confirm-card .waiting-content h5 {
- margin: 0 0 8px 0 !important;
- font-size: 16px !important;
- font-weight: 600 !important;
- color: #595959 !important;
- }
- .left-column .proposal-confirm-card .waiting-content p {
- margin: 0 0 12px 0 !important;
- font-size: 14px !important;
- line-height: 1.4 !important;
- }
- .left-column .proposal-confirm-card .progress-info {
- font-size: 12px !important;
- color: #1890ff !important;
- font-weight: 500 !important;
- }
|