diff --git a/supply.html b/supply.html index 029ba3a..7499c28 100644 --- a/supply.html +++ b/supply.html @@ -25,15 +25,16 @@ /* 顶部标题栏样式优化 */ .title-bar { - background-color: #1677ff; + background: linear-gradient(135deg, #1677ff 0%, #096dd9 100%); color: white; - padding: 15px; + padding: 20px; position: sticky; top: 0; z-index: 100; display: flex; flex-direction: column; - gap: 10px; + gap: 15px; + box-shadow: 0 4px 12px rgba(22, 119, 255, 0.3); } .title-bar-top { @@ -44,8 +45,9 @@ .title-bar h1 { margin: 0; - font-size: 18px; - font-weight: 500; + font-size: 20px; + font-weight: 600; + text-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); } .title-bar-bottom { @@ -53,24 +55,42 @@ justify-content: space-between; align-items: center; flex-wrap: nowrap; - gap: 10px; + gap: 12px; } .title-bar-left { display: flex; align-items: center; - gap: 10px; + gap: 12px; } .title-bar-right { display: flex; align-items: center; - gap: 10px; + gap: 12px; + } + + /* 标题栏按钮样式 */ + .title-bar button { + background-color: rgba(255, 255, 255, 0.2); + color: white; + border: 1px solid rgba(255, 255, 255, 0.3); + padding: 8px 16px; + border-radius: 20px; + font-size: 14px; + font-weight: 500; + cursor: pointer; + transition: all 0.3s ease; + backdrop-filter: blur(10px); + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); + flex-shrink: 0; } /* 按钮悬停效果 */ .title-bar button:hover { background-color: rgba(255, 255, 255, 0.3); + transform: translateY(-1px); + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); } /* 登录用户信息样式 */ @@ -104,37 +124,51 @@ /* 搜索框样式优化 */ .search-container { - padding: 15px; + padding: 20px; background-color: white; border-bottom: 1px solid #f0f0f0; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05); } /* 创建货源按钮样式优化 */ .create-supply-btn { - margin: 20px 15px; + margin: 24px 15px; text-align: center; } .create-supply-btn button { - background-color: #07c160; + background: linear-gradient(135deg, #07c160 0%, #06ad54 100%); color: white; border: none; - padding: 14px 40px; - border-radius: 25px; + padding: 16px 48px; + border-radius: 30px; font-size: 16px; + font-weight: 600; cursor: pointer; - transition: background-color 0.3s; + transition: all 0.3s ease; width: 100%; - max-width: 300px; + max-width: 320px; + box-shadow: 0 4px 12px rgba(7, 193, 96, 0.3); + } + + .create-supply-btn button:hover { + background: linear-gradient(135deg, #06ad54 0%, #059b4a 100%); + transform: translateY(-2px); + box-shadow: 0 6px 16px rgba(7, 193, 96, 0.4); } /* 货源列表样式优化 */ .supply-section { - margin: 15px; + margin: 20px 15px; background-color: white; - border-radius: 12px; - box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1); + border-radius: 16px; + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08); overflow: hidden; + transition: all 0.3s ease; + } + + .supply-section:hover { + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.12); } /* 响应式样式 */ @@ -311,18 +345,26 @@ /* 搜索框 */ .search-box { position: relative; - background-color: #f5f5f5; - border-radius: 20px; - padding: 0 15px; + background-color: #fafafa; + border-radius: 25px; + padding: 0 20px; + transition: all 0.3s ease; + border: 1px solid #e8e8e8; + } + + .search-box:hover { + border-color: #1677ff; + box-shadow: 0 2px 8px rgba(22, 119, 255, 0.1); } .search-input { width: 100%; - height: 40px; + height: 48px; border: none; background: transparent; font-size: 14px; - padding-right: 30px; + padding-right: 40px; + transition: all 0.3s ease; } .search-input:focus { @@ -331,43 +373,71 @@ .clear-icon { position: absolute; - right: 15px; + right: 20px; top: 50%; transform: translateY(-50%); color: #999; cursor: pointer; + font-size: 16px; + transition: all 0.3s ease; + width: 24px; + height: 24px; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + } + + .clear-icon:hover { + background-color: #e8e8e8; + color: #333; } .section-header { - padding: 16px 20px; + padding: 20px 24px; display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid #f0f0f0; cursor: pointer; background-color: #fafafa; - transition: background-color 0.3s; + transition: all 0.3s ease; } .section-header:hover { background-color: #f5f5f5; + transform: translateY(-1px); } .section-title { font-size: 16px; font-weight: 600; color: #333; + display: flex; + align-items: center; + gap: 8px; } .section-toggle { - font-size: 18px; + font-size: 20px; color: #999; - transition: transform 0.3s; + transition: all 0.3s ease; + width: 24px; + height: 24px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 50%; + } + + .section-toggle:hover { + background-color: #e8e8e8; } .section-toggle.expanded { transform: rotate(180deg); color: #1677ff; + background-color: #e6f7ff; } .supply-list { @@ -382,16 +452,19 @@ } .supply-item { - padding: 20px; + padding: 24px; border-bottom: 1px solid #f0f0f0; display: flex; - gap: 20px; + gap: 24px; align-items: flex-start; - transition: all 0.3s; + transition: all 0.3s ease; + background-color: white; } .supply-item:hover { background-color: #fafafa; + transform: translateY(-2px); + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08); } .supply-item:last-child { @@ -400,14 +473,19 @@ /* 图片区域 */ .supply-images { - width: 120px; - height: 120px; + width: 140px; + height: 140px; position: relative; - background-color: #f5f5f5; - border-radius: 8px; + background-color: #fafafa; + border-radius: 12px; overflow: hidden; flex-shrink: 0; - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); + transition: all 0.3s ease; + } + + .supply-images:hover { + box-shadow: 0 6px 16px rgba(0, 0, 0, 0.15); } .image-slider { @@ -420,22 +498,24 @@ width: 100%; height: 100%; object-fit: cover; - transition: transform 0.3s; + transition: transform 0.3s ease; } .supply-images:hover .image-slider img { - transform: scale(1.05); + transform: scale(1.1); } .image-indicator { position: absolute; - bottom: 6px; - right: 6px; - background-color: rgba(0, 0, 0, 0.6); + bottom: 8px; + right: 8px; + background-color: rgba(0, 0, 0, 0.7); color: white; - padding: 4px 8px; - border-radius: 12px; - font-size: 11px; + padding: 6px 12px; + border-radius: 16px; + font-size: 12px; + font-weight: 500; + backdrop-filter: blur(4px); } /* 信息区域 */ @@ -443,63 +523,70 @@ flex: 1; display: flex; flex-direction: column; - gap: 12px; + gap: 16px; } .supply-name { - font-size: 16px; + font-size: 18px; font-weight: 600; display: flex; align-items: center; - gap: 10px; + gap: 12px; color: #333; + line-height: 1.4; } .supply-status { font-size: 12px; - padding: 4px 12px; - border-radius: 12px; + padding: 6px 16px; + border-radius: 16px; color: white; - font-weight: 500; + font-weight: 600; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } .status-published { - background-color: #52c41a; + background: linear-gradient(135deg, #52c41a 0%, #47af17 100%); } .status-pending { - background-color: #faad14; + background: linear-gradient(135deg, #faad14 0%, #f59e0b 100%); } .status-rejected { - background-color: #f5222d; + background: linear-gradient(135deg, #f5222d 0%, #e01e26 100%); } .status-draft { - background-color: #8c8c8c; + background: linear-gradient(135deg, #8c8c8c 0%, #737373 100%); } .copy-supply-btn { display: inline-block; - padding: 4px 12px; + padding: 6px 16px; border: 1px solid #d9d9d9; - border-radius: 4px; + border-radius: 16px; font-size: 12px; background-color: #fff; color: #333; cursor: pointer; - margin-left: 8px; + margin-left: 12px; + transition: all 0.3s ease; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05); } .copy-supply-btn:hover { border-color: #1677ff; color: #1677ff; + background-color: #f0f8ff; + transform: translateY(-1px); + box-shadow: 0 4px 8px rgba(22, 119, 255, 0.1); } .supply-details { display: grid; grid-template-columns: repeat(2, 1fr); - gap: 10px; + gap: 12px; } .detail-item { @@ -507,27 +594,47 @@ color: #666; display: flex; align-items: center; - gap: 6px; + gap: 8px; + padding: 8px 12px; + background-color: #fafafa; + border-radius: 8px; + transition: all 0.3s ease; + } + + .detail-item:hover { + background-color: #f0f8ff; + transform: translateY(-1px); } .detail-item::before { content: "•"; color: #1677ff; font-size: 16px; + font-weight: bold; } .supply-actions { display: flex; - gap: 10px; + gap: 12px; + flex-wrap: wrap; } .supply-actions button { - padding: 6px 15px; + padding: 8px 18px; border: none; - border-radius: 4px; + border-radius: 16px; font-size: 12px; + font-weight: 500; cursor: pointer; - transition: all 0.3s; + transition: all 0.3s ease; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + min-width: 80px; + text-align: center; + } + + .supply-actions button:hover { + transform: translateY(-2px); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); } .btn-primary { @@ -638,18 +745,19 @@ } .modal-header { - padding: 20px; + padding: 24px; border-bottom: 1px solid #f0f0f0; display: flex; justify-content: space-between; align-items: center; background-color: white; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05); } .modal-title { margin: 0; - font-size: 18px; - font-weight: 500; + font-size: 20px; + font-weight: 600; color: #333; } @@ -659,11 +767,19 @@ font-size: 24px; cursor: pointer; color: #999; - transition: color 0.3s; + transition: all 0.3s ease; + width: 32px; + height: 32px; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; } .close-btn:hover { color: #333; + background-color: #f0f0f0; + transform: rotate(90deg); } .modal-body { @@ -681,33 +797,37 @@ /* 表单样式 */ .form-group { - margin-bottom: 20px; + margin-bottom: 24px; + position: relative; } .form-label { display: block; - margin-bottom: 8px; - font-weight: 500; + margin-bottom: 10px; + font-weight: 600; font-size: 14px; color: #333; + line-height: 1.4; } .form-input, .form-select { width: 100%; - padding: 12px 16px; - border: 1px solid #d9d9d9; - border-radius: 8px; + padding: 14px 18px; + border: 1px solid #e8e8e8; + border-radius: 12px; font-size: 14px; box-sizing: border-box; - transition: all 0.3s; - background-color: #fafafa; - caret-color: #333; + transition: all 0.3s ease; + background-color: white; + caret-color: #1677ff; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05); } .form-input:hover, .form-select:hover { border-color: #1677ff; + box-shadow: 0 2px 8px rgba(22, 119, 255, 0.1); } .form-input:focus, @@ -716,9 +836,36 @@ .form-select:active { outline: none; border-color: #1677ff; - box-shadow: 0 0 0 2px rgba(22, 119, 255, 0.2); - background-color: #fafafa; - caret-color: #333; + box-shadow: 0 0 0 3px rgba(22, 119, 255, 0.2); + background-color: white; + caret-color: #1677ff; + } + + /* 状态按钮样式 */ + .status-button { + flex: 1; + padding: 12px 24px; + border: 2px solid #e8e8e8; + background-color: white; + color: #666; + border-radius: 12px; + cursor: pointer; + font-size: 14px; + font-weight: 500; + transition: all 0.3s ease; + text-align: center; + } + + .status-button:hover { + border-color: #1677ff; + color: #1677ff; + } + + .status-button.active { + background-color: #1677ff; + border-color: #1677ff; + color: white; + box-shadow: 0 4px 12px rgba(22, 119, 255, 0.3); } /* 日历图标样式 */ @@ -881,179 +1028,132 @@ /* 图片上传 */ .upload-area { - border: 2px dashed #d9d9d9; - border-radius: 8px; - padding: 20px; + border: 2px dashed #e8e8e8; + border-radius: 16px; + padding: 24px; text-align: center; - transition: all 0.3s; + transition: all 0.3s ease; + background-color: #fafafa; } .upload-area:hover { border-color: #1677ff; background-color: #f0f8ff; + box-shadow: 0 4px 16px rgba(22, 119, 255, 0.1); } .upload-images { display: flex; - gap: 10px; + gap: 12px; flex-wrap: wrap; - margin-bottom: 15px; + margin-bottom: 20px; + justify-content: center; } .upload-image { position: relative; - width: 100px; - height: 100px; - border-radius: 8px; + width: 120px; + height: 120px; + border-radius: 12px; overflow: hidden; - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); - transition: all 0.3s; - } - - .delete-image-btn { - position: absolute; - top: 5px; - right: 5px; - width: 24px; - height: 24px; - background-color: rgba(245, 34, 45, 0.9); - color: white; - border: none; - border-radius: 50%; - font-size: 16px; - line-height: 20px; - text-align: center; - cursor: pointer; - display: flex; - align-items: center; - justify-content: center; - } - - .delete-image-btn:hover { - background-color: #f5222d; - } - - .upload-image:hover { - transform: scale(1.05); - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); - } - - .upload-image img { - width: 100%; - height: 100%; - object-fit: cover; - outline: none; - } - - /* 移除可能导致红点的伪元素 */ - .upload-image::before, - .upload-image::after, - .upload-area::before, - .upload-area::after, - .add-image::before, - .add-image::after { - content: none !important; - } - - /* 确保没有意外的背景或边框 */ - .upload-image, - .upload-area, - .add-image { - outline: none !important; - box-shadow: none !important; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); + transition: all 0.3s ease; + background-color: white; } - /* 隐藏删除按钮,移除红色背景 */ .delete-image { position: absolute; top: 8px; right: 8px; - width: 24px; - height: 24px; - background-color: rgba(0, 0, 0, 0.6); + width: 28px; + height: 28px; + background-color: rgba(245, 34, 45, 0.9); color: white; border-radius: 50%; display: flex; align-items: center; justify-content: center; cursor: pointer; - font-size: 14px; + font-size: 16px; font-weight: bold; - transition: background-color 0.3s; + transition: all 0.3s ease; + box-shadow: 0 2px 8px rgba(245, 34, 45, 0.3); } .delete-image:hover { - background-color: rgba(255, 0, 0, 0.8); + background-color: #f5222d; + transform: scale(1.1); + box-shadow: 0 4px 12px rgba(245, 34, 45, 0.4); } .delete-image::before { content: '×'; } - .upload-image { - position: relative; - display: inline-block; - margin: 10px; - } - .upload-image img { - width: 100px; - height: 100px; + width: 100%; + height: 100%; object-fit: cover; - border-radius: 8px; + border-radius: 12px; cursor: pointer; - transition: transform 0.3s; + transition: transform 0.3s ease; } - .upload-image img:hover { + .upload-image:hover { transform: scale(1.05); + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15); } .add-image { - width: 100px; - height: 100px; + width: 120px; + height: 120px; border: 2px dashed #1677ff; - border-radius: 8px; + border-radius: 12px; display: flex; align-items: center; justify-content: center; background-color: #f0f8ff; color: #1677ff; cursor: pointer; - font-size: 30px; - transition: all 0.3s; + font-size: 36px; + transition: all 0.3s ease; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05); } .add-image:hover { background-color: #e6f7ff; transform: scale(1.05); + border-width: 3px; + box-shadow: 0 4px 16px rgba(22, 119, 255, 0.2); } /* 模态框底部按钮 */ .modal-footer { - padding: 16px 20px; + padding: 20px 24px; border-top: 1px solid #f0f0f0; display: flex; justify-content: flex-end; - gap: 10px; - background-color: #fafafa; + gap: 12px; + background-color: white; + box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.05); } /* 按钮样式优化 */ .supply-actions button { - padding: 8px 16px; + padding: 10px 20px; border: none; - border-radius: 6px; + border-radius: 12px; font-size: 14px; - font-weight: 500; + font-weight: 600; cursor: pointer; - transition: all 0.3s; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + transition: all 0.3s ease; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); + min-width: 90px; } .supply-actions button:hover { - transform: translateY(-1px); - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); + transform: translateY(-2px); + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15); } .btn-primary { @@ -1094,59 +1194,80 @@ /* 禁用按钮样式 */ .btn-disabled { - background-color: #d9d9d9; + background-color: #f0f0f0; color: #999; cursor: not-allowed; pointer-events: none; } .btn-disabled:hover { - background-color: #d9d9d9; + background-color: #f0f0f0; } /* 模态框按钮样式 */ .modal-btn { - padding: 10px 24px; + padding: 12px 28px; border: none; - border-radius: 8px; + border-radius: 12px; font-size: 14px; - font-weight: 500; + font-weight: 600; cursor: pointer; - transition: all 0.3s; - min-width: 80px; + transition: all 0.3s ease; + min-width: 100px; text-align: center; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); } .modal-btn-cancel { background-color: #f5f5f5; color: #666; - border: 1px solid #d9d9d9; + border: 1px solid #e8e8e8; } .modal-btn-cancel:hover { background-color: #e8e8e8; - border-color: #bfbfbf; + border-color: #d9d9d9; + transform: translateY(-1px); + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); } .modal-btn-primary { - background-color: #1890ff; + background-color: #1677ff; color: white; } .modal-btn-primary:hover { - background-color: #40a9ff; - box-shadow: 0 2px 8px rgba(24, 144, 255, 0.3); + background-color: #4096ff; + transform: translateY(-1px); + box-shadow: 0 4px 16px rgba(22, 119, 255, 0.3); } - /* 确保模态框底部按钮区域不会被遮挡 */ - .modal-footer { - position: sticky; - bottom: 0; + /* 添加规格按钮样式 */ + .add-spec-quantity-btn, + .add-quantity-btn { + align-self: flex-start; + padding: 10px 20px; + border: 2px dashed #1677ff; background-color: white; - z-index: 10; - border-top: 1px solid #f0f0f0; + color: #1677ff; + border-radius: 12px; + cursor: pointer; + font-size: 14px; + font-weight: 500; + transition: all 0.3s ease; + margin-top: 10px; } + .add-spec-quantity-btn:hover, + .add-quantity-btn:hover { + background-color: #e6f7ff; + border-width: 2px; + transform: translateY(-1px); + box-shadow: 0 4px 12px rgba(22, 119, 255, 0.2); + } + + + /* 搜索结果为空 */ .empty-state { padding: 40px; @@ -1633,28 +1754,48 @@ #editSpecQuantityContainer { display: flex; flex-direction: column; - gap: 10px; + gap: 16px; } .spec-quantity-pair { display: flex; flex-wrap: wrap; - gap: 10px; - background-color: #fafafa; - padding: 10px; - border-radius: 8px; - border: 1px solid #f0f0f0; + gap: 12px; + background-color: white; + padding: 20px; + border-radius: 16px; + border: 1px solid #e8e8e8; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05); + transition: all 0.3s ease; + } + + .spec-quantity-pair:hover { + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1); + border-color: #1677ff; } .spec-value { flex: 1; min-width: 100%; + padding: 14px 18px; + border: 1px solid #e8e8e8; + border-radius: 12px; + font-size: 14px; + box-sizing: border-box; + background-color: white; + cursor: pointer; + transition: all 0.3s ease; + } + + .spec-value:hover { + border-color: #1677ff; + box-shadow: 0 2px 8px rgba(22, 119, 255, 0.1); } /* 件数和采购价的容器 */ .quantity-cost-container { display: flex; - gap: 10px; + gap: 12px; width: 100%; } @@ -1664,25 +1805,6 @@ width: 50%; } - .spec-value { - flex: 1; - padding: 10px; - border: 1px solid #d9d9d9; - border-radius: 8px; - font-size: 14px; - box-sizing: border-box; - background-color: white; - cursor: pointer; - } - - .quantity-input, - .costprice-input { - width: calc(50% - 5px); - background-color: white; - height: 40px; - box-sizing: border-box; - } - .add-spec-quantity-btn { align-self: flex-start; padding: 8px 16px; @@ -1844,12 +1966,12 @@