Spaces:
Running
Running
<html lang="zh-CN"> | |
<head> | |
<meta charset="UTF-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
<title>仓储管理系统</title> | |
<script src="https://cdn.tailwindcss.com"></script> | |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> | |
<style> | |
/* 自定义滚动条样式 */ | |
.custom-scrollbar::-webkit-scrollbar { | |
width: 6px; | |
} | |
.custom-scrollbar::-webkit-scrollbar-track { | |
background: #f1f1f1; | |
border-radius: 10px; | |
} | |
.custom-scrollbar::-webkit-scrollbar-thumb { | |
background: #cbd5e0; | |
border-radius: 10px; | |
} | |
.custom-scrollbar::-webkit-scrollbar-thumb:hover { | |
background: #a0aec0; | |
} | |
/* 菜单项动画效果 */ | |
.menu-item { | |
transition: all 0.2s ease; | |
} | |
.menu-item:hover { | |
background-color: #edf2f7; | |
transform: translateX(4px); | |
} | |
.menu-item.active { | |
background-color: #ebf4ff; | |
border-left: 4px solid #4299e1; | |
color: #2b6cb0; | |
} | |
/* 主内容区过渡效果 */ | |
.main-content { | |
transition: margin-left 0.3s ease; | |
} | |
/* 移动端响应式样式 */ | |
@media (max-width: 768px) { | |
.sidebar { | |
transform: translateX(-100%); | |
position: absolute; | |
z-index: 50; | |
height: 100%; | |
} | |
.sidebar.active { | |
transform: translateX(0); | |
} | |
.main-content { | |
margin-left: 0 ; | |
} | |
.mobile-menu-btn { | |
display: block; | |
} | |
} | |
/* 图标动画效果 */ | |
@keyframes iconPulse { | |
0% { transform: scale(1); } | |
50% { transform: scale(1.1); } | |
100% { transform: scale(1); } | |
} | |
.menu-item:hover .menu-icon { | |
animation: iconPulse 0.5s ease; | |
} | |
/* 仓库下拉菜单样式 */ | |
.warehouse-dropdown { | |
position: relative; | |
display: inline-block; | |
} | |
.warehouse-dropdown-content { | |
display: none; | |
position: absolute; | |
right: 0; | |
background-color: white; | |
min-width: 220px; | |
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.1); | |
z-index: 1; | |
border-radius: 0.5rem; | |
padding: 0.5rem 0; | |
} | |
.warehouse-dropdown:hover .warehouse-dropdown-content { | |
display: block; | |
} | |
.warehouse-item { | |
padding: 0.75rem 1rem; | |
cursor: pointer; | |
transition: all 0.2s; | |
} | |
.warehouse-item:hover { | |
background-color: #f7fafc; | |
} | |
.warehouse-item.active { | |
background-color: #ebf8ff; | |
color: #3182ce; | |
} | |
/* 产品表格样式 */ | |
.product-table th { | |
background-color: #f8fafc; | |
font-weight: 600; | |
color: #4a5568; | |
} | |
.product-table tr:hover { | |
background-color: #f7fafc; | |
} | |
.status-active { | |
background-color: #f0fff4; | |
color: #38a169; | |
} | |
.status-inactive { | |
background-color: #fff5f5; | |
color: #e53e3e; | |
} | |
.status-pending { | |
background-color: #fffff0; | |
color: #d69e2e; | |
} | |
/* 分页按钮样式 */ | |
.pagination-btn { | |
transition: all 0.2s; | |
} | |
.pagination-btn:hover:not(.disabled) { | |
background-color: #ebf4ff; | |
} | |
.pagination-btn.disabled { | |
opacity: 0.5; | |
cursor: not-allowed; | |
} | |
/* 内容容器布局 */ | |
.content-container { | |
display: flex; | |
flex-direction: column; | |
height: calc(100vh - 64px); | |
} | |
.content-wrapper { | |
flex: 1; | |
overflow: hidden; | |
display: flex; | |
flex-direction: column; | |
} | |
.table-container { | |
flex: 1; | |
overflow: auto; | |
} | |
.main-content { | |
margin-left: 0; | |
padding: 0; | |
background-color: #f8fafc; | |
} | |
.product-content { | |
height: 100%; | |
padding: 0; | |
margin: 0; | |
} | |
.product-container { | |
height: 100%; | |
background-color: white; | |
border-left: 1px solid #e2e8f0; | |
border-top: 1px solid #e2e8f0; | |
border-radius: 0; | |
} | |
/* 表格单元格样式 */ | |
.table-cell { | |
vertical-align: middle; | |
padding: 12px 16px; | |
} | |
.table-cell-id { | |
text-align: center; | |
width: 100px; | |
} | |
.table-cell-name { | |
text-align: left; | |
min-width: 220px; | |
} | |
.table-cell-category { | |
text-align: center; | |
width: 120px; | |
} | |
.table-cell-stock { | |
text-align: right; | |
width: 100px; | |
} | |
.table-cell-price { | |
text-align: right; | |
width: 120px; | |
} | |
.table-cell-status { | |
text-align: center; | |
width: 100px; | |
} | |
.table-cell-actions { | |
text-align: center; | |
width: 150px; | |
} | |
/* 产品图片样式 */ | |
.product-image { | |
width: 40px; | |
height: 40px; | |
object-fit: cover; | |
border-radius: 4px; | |
} | |
/* 状态标签样式 */ | |
.status-badge { | |
display: inline-block; | |
padding: 4px 8px; | |
border-radius: 12px; | |
font-size: 12px; | |
font-weight: 600; | |
min-width: 60px; | |
text-align: center; | |
} | |
/* 右侧抽屉样式 */ | |
.drawer-overlay { | |
position: fixed; | |
top: 0; | |
left: 0; | |
right: 0; | |
bottom: 0; | |
background-color: rgba(0, 0, 0, 0.5); | |
z-index: 100; | |
opacity: 0; | |
visibility: hidden; | |
transition: all 0.3s ease; | |
} | |
.drawer-overlay.active { | |
opacity: 1; | |
visibility: visible; | |
} | |
.drawer { | |
position: fixed; | |
top: 0; | |
right: -75%; | |
width: 75%; | |
height: 100%; | |
background-color: white; | |
z-index: 101; | |
transition: all 0.3s ease; | |
box-shadow: -5px 0 15px rgba(0, 0, 0, 0.1); | |
display: flex; | |
flex-direction: column; | |
} | |
.drawer.active { | |
right: 0; | |
} | |
.drawer-header { | |
padding: 1.5rem; | |
border-bottom: 1px solid #e2e8f0; | |
display: flex; | |
justify-content: space-between; | |
align-items: center; | |
} | |
.drawer-body { | |
flex: 1; | |
overflow-y: auto; | |
padding: 1.5rem; | |
} | |
.drawer-footer { | |
padding: 1.5rem; | |
border-top: 1px solid #e2e8f0; | |
display: flex; | |
justify-content: flex-end; | |
gap: 1rem; | |
} | |
/* 二级菜单样式 */ | |
.submenu { | |
padding-left: 2.5rem; | |
overflow: hidden; | |
max-height: 0; | |
transition: max-height 0.3s ease; | |
} | |
.submenu.active { | |
max-height: 500px; | |
} | |
.submenu-item { | |
padding: 0.5rem 1rem 0.5rem 2.5rem; | |
margin-left: 1rem; | |
border-left: 2px solid #e2e8f0; | |
cursor: pointer; | |
transition: all 0.2s; | |
} | |
.submenu-item:hover { | |
background-color: #edf2f7; | |
color: #4299e1; | |
} | |
.submenu-item.active { | |
background-color: #ebf4ff; | |
color: #2b6cb0; | |
border-left-color: #4299e1; | |
} | |
.has-submenu > .menu-item { | |
position: relative; | |
} | |
.has-submenu > .menu-item::after { | |
content: '\f078'; | |
font-family: 'Font Awesome 6 Free'; | |
font-weight: 900; | |
position: absolute; | |
right: 1rem; | |
top: 50%; | |
transform: translateY(-50%); | |
font-size: 0.75rem; | |
transition: transform 0.3s; | |
} | |
.has-submenu.active > .menu-item::after { | |
transform: translateY(-50%) rotate(180deg); | |
} | |
/* 仓库标签样式 */ | |
.warehouse-badge { | |
display: inline-block; | |
padding: 2px 8px; | |
border-radius: 12px; | |
font-size: 12px; | |
font-weight: 600; | |
} | |
.warehouse-domestic { | |
background-color: #ebf8ff; | |
color: #3182ce; | |
} | |
.warehouse-overseas { | |
background-color: #fff5f7; | |
color: #d53f8c; | |
} | |
.warehouse-disabled { | |
background-color: #f7fafc; | |
color: #a0aec0; | |
} | |
/* 标签页样式 */ | |
.tab-item { | |
padding: 0.75rem 1rem; | |
cursor: pointer; | |
border-bottom: 2px solid transparent; | |
transition: all 0.2s; | |
} | |
.tab-item.active { | |
border-bottom-color: #4299e1; | |
color: #4299e1; | |
font-weight: 500; | |
} | |
.tab-item:hover:not(.active) { | |
border-bottom-color: #cbd5e0; | |
} | |
/* 用户标签样式 */ | |
.user-tag { | |
display: inline-flex; | |
align-items: center; | |
padding: 0.25rem 0.5rem; | |
background-color: #ebf4ff; | |
border-radius: 9999px; | |
font-size: 0.75rem; | |
color: #3182ce; | |
margin-right: 0.25rem; | |
margin-bottom: 0.25rem; | |
} | |
.user-tag-remove { | |
margin-left: 0.25rem; | |
cursor: pointer; | |
} | |
/* 用户选择下拉框 */ | |
.user-select-dropdown { | |
position: absolute; | |
width: 100%; | |
max-height: 200px; | |
overflow-y: auto; | |
background-color: white; | |
border: 1px solid #e2e8f0; | |
border-radius: 0.375rem; | |
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); | |
z-index: 10; | |
display: none; | |
} | |
.user-select-item { | |
padding: 0.5rem 1rem; | |
cursor: pointer; | |
} | |
.user-select-item:hover { | |
background-color: #f7fafc; | |
} | |
/* 配置步骤指示器 */ | |
.config-steps { | |
display: flex; | |
justify-content: space-between; | |
margin-bottom: 2rem; | |
position: relative; | |
} | |
.config-steps::before { | |
content: ''; | |
position: absolute; | |
top: 50%; | |
left: 0; | |
right: 0; | |
height: 1px; | |
background-color: #e2e8f0; | |
z-index: 1; | |
} | |
.step-item { | |
display: flex; | |
flex-direction: column; | |
align-items: center; | |
position: relative; | |
z-index: 2; | |
} | |
.step-number { | |
width: 2.5rem; | |
height: 2.5rem; | |
border-radius: 50%; | |
display: flex; | |
align-items: center; | |
justify-content: center; | |
margin-bottom: 0.5rem; | |
font-weight: 600; | |
} | |
.step-number.active { | |
background-color: #4299e1; | |
color: white; | |
} | |
.step-number.completed { | |
background-color: #38a169; | |
color: white; | |
} | |
.step-number.inactive { | |
background-color: #e2e8f0; | |
color: #718096; | |
} | |
.step-label { | |
font-size: 0.875rem; | |
color: 4a5568; | |
text-align: center; | |
} | |
.step-label.active { | |
color: #2b6cb0; | |
font-weight: 500; | |
} | |
.step-label.completed { | |
color: #38a169; | |
} | |
/* 需求工单样式 */ | |
.order-type-tabs { | |
display: flex; | |
border-bottom: 1px solid #e2e8f0; | |
margin-bottom: 1.5rem; | |
} | |
.order-type-tab { | |
padding: 0.75rem 1.5rem; | |
cursor: pointer; | |
border-bottom: 2px solid transparent; | |
transition: all 0.2s; | |
} | |
.order-type-tab.active { | |
border-bottom-color: #4299e1; | |
color: #4299e1; | |
font-weight: 500; | |
} | |
.order-type-tab:hover:not(.active) { | |
border-bottom-color: #cbd5e0; | |
} | |
/* 工单项样式 */ | |
.order-item { | |
padding: 1rem; | |
border: 1px solid #e2e8f0; | |
border-radius: 0.5rem; | |
margin-bottom: 1rem; | |
transition: all 0.2s; | |
} | |
.order-item:hover { | |
border-color: #cbd5e0; | |
box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1); | |
} | |
.order-item-header { | |
display: flex; | |
justify-content: space-between; | |
align-items: center; | |
margin-bottom: 0.5rem; | |
} | |
.order-item-title { | |
font-weight: 500; | |
color: #2d3748; | |
} | |
.order-item-meta { | |
display: flex; | |
gap: 1rem; | |
align-items: center; | |
} | |
.order-item-status { | |
font-size: 0.875rem; | |
padding: 0.25rem 0.5rem; | |
border-radius: 0.25rem; | |
} | |
.order-item-details { | |
display: flex; | |
gap: 2rem; | |
font-size: 0.875rem; | |
color: #4a5568; | |
} | |
.order-item-detail { | |
display: flex; | |
align-items: center; | |
} | |
.order-item-detail i { | |
margin-right: 0.5rem; | |
color: #718096; | |
} | |
.order-item-products { | |
margin-top: 0.75rem; | |
border-top: 1px dashed #e2e8f0; | |
padding-top: 0.75rem; | |
} | |
.product-item { | |
display: flex; | |
align-items: center; | |
padding: 0.5rem 0; | |
border-bottom: 1px solid #f7fafc; | |
} | |
.product-item:last-child { | |
border-bottom: none; | |
} | |
.product-item-image { | |
width: 40px; | |
height: 40px; | |
border-radius: 0.25rem; | |
margin-right: 1rem; | |
object-fit: cover; | |
} | |
.product-item-info { | |
flex: 1; | |
} | |
.product-item-name { | |
font-weight: 500; | |
margin-bottom: 0.25rem; | |
} | |
.product-item-sku { | |
font-size: 0.75rem; | |
color: #718096; | |
} | |
.product-item-quantity { | |
font-weight: 500; | |
color: #2d3748; | |
} | |
/* 审核状态标签 */ | |
.status-pending-review { | |
background-color: #feebc8; | |
color: #b77905; | |
} | |
.status-approved { | |
background-color: #c6f6d5; | |
color: #276749; | |
} | |
.status-rejected { | |
background-color: #fed7d7; | |
color: #9b2c2c; | |
} | |
.status-processing { | |
background-color: #bee3f8; | |
color: #2c5282; | |
} | |
.status-completed { | |
background-color: #e2e8f0; | |
color: #4a5568; | |
} | |
/* 产品选择器 */ | |
.product-selector { | |
position: relative; | |
} | |
.product-selector-dropdown { | |
position: absolute; | |
width: 100%; | |
max-height: 300px; | |
overflow-y: auto; | |
background-color: white; | |
border: 1px solid #e2e8f0; | |
border-radius: 0.375rem; | |
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); | |
z-index: 10; | |
display: none; | |
} | |
.product-selector-item { | |
display: flex; | |
align-items: center; | |
padding: 0.75rem 1rem; | |
cursor: pointer; | |
border-bottom: 1px solid #f7fafc; | |
} | |
.product-selector-item:hover { | |
background-color: #f7fafc; | |
} | |
.product-selector-item-image { | |
width: 40px; | |
height: 40px; | |
border-radius: 0.25rem; | |
margin-right: 1rem; | |
object-fit: cover; | |
} | |
.product-selector-item-info { | |
flex: 1; | |
} | |
.product-selector-item-name { | |
font-weight: 500; | |
margin-bottom: 0.25rem; | |
} | |
.product-selector-item-sku { | |
font-size: 0.75rem; | |
color: #718096; | |
} | |
.product-selector-item-stock { | |
font-size: 0.875rem; | |
color: #4a5568; | |
} | |
/* 工单操作按钮 */ | |
.order-actions { | |
display: flex; | |
gap: 0.5rem; | |
margin-top: 1rem; | |
justify-content: flex-end; | |
} | |
/* 工单详情页样式 */ | |
.order-detail-header { | |
padding-bottom: 1rem; | |
margin-bottom: 1.5rem; | |
border-bottom: 1px solid #e2e8f0; | |
} | |
.order-detail-title { | |
font-size: 1.25rem; | |
font-weight: 600; | |
margin-bottom: 0.5rem; | |
} | |
.order-detail-meta { | |
display: flex; | |
gap: 1.5rem; | |
font-size: 0.875rem; | |
color: #4a5568; | |
} | |
.order-detail-section { | |
margin-bottom: 2rem; | |
} | |
.order-detail-section-title { | |
font-weight: 600; | |
margin-bottom: 1rem; | |
padding-bottom: 0.5rem; | |
border-bottom: 1px solid #e2e8f0; | |
} | |
.order-detail-products { | |
width: 100%; | |
border-collapse: collapse; | |
} | |
.order-detail-products th { | |
text-align: left; | |
padding: 0.75rem 1rem; | |
background-color: #f8fafc; | |
font-weight: 500; | |
color: #4a5568; | |
} | |
.order-detail-products td { | |
padding: 0.75rem 1rem; | |
border-bottom: 1px solid #e2e8f0; | |
} | |
.order-detail-product { | |
display: flex; | |
align-items: center; | |
} | |
.order-detail-product-image { | |
width: 40px; | |
height: 40px; | |
border-radius: 0.25rem; | |
margin-right: 1rem; | |
object-fit: cover; | |
} | |
.order-detail-product-info { | |
flex: 1; | |
} | |
.order-detail-product-name { | |
font-weight: 500; | |
margin-bottom: 0.25rem; | |
} | |
.order-detail-product-sku { | |
font-size: 0.75rem; | |
color: #718096; | |
} | |
/* 审核意见样式 */ | |
.review-comment { | |
padding: 1rem; | |
background-color: #f7fafc; | |
border-radius: 0.5rem; | |
margin-top: 1rem; | |
} | |
.review-comment-title { | |
font-weight: 500; | |
margin-bottom: 0.5rem; | |
} | |
/* 操作历史样式 */ | |
.timeline { | |
position: relative; | |
padding-left: 1.5rem; | |
} | |
.timeline::before { | |
content: ''; | |
position: absolute; | |
top: 0; | |
bottom: 0; | |
left: 0.5rem; | |
width: 2px; | |
background-color: #e2e8f0; | |
} | |
.timeline-item { | |
position: relative; | |
padding-bottom: 1.5rem; | |
} | |
.timeline-item:last-child { | |
padding-bottom: 0; | |
} | |
.timeline-item-dot { | |
position: absolute; | |
left: -1.5rem; | |
top: 0.25rem; | |
width: 1rem; | |
height: 1rem; | |
border-radius: 50%; | |
background-color: #4299e1; | |
} | |
.timeline-item-content { | |
font-size: 0.875rem; | |
} | |
.timeline-item-time { | |
color: #718096; | |
font-size: 0.75rem; | |
margin-bottom: 0.25rem; | |
} | |
/* 入库/出库流程步骤 */ | |
.process-steps { | |
display: flex; | |
justify-content: space-between; | |
margin-bottom: 2rem; | |
} | |
.process-step { | |
flex: 1; | |
text-align: center; | |
position: relative; | |
} | |
.process-step:not(:last-child)::after { | |
content: ''; | |
position: absolute; | |
top: 1rem; | |
left: 50%; | |
right: -50%; | |
height: 2px; | |
background-color: #e2e8f0; | |
z-index: 1; | |
} | |
.process-step.completed:not(:last-child)::after { | |
background-color: #4299e1; | |
} | |
.process-step-icon { | |
width: 2rem; | |
height: 2rem; | |
border-radius: 50%; | |
background-color: #e2e8f0; | |
display: flex; | |
align-items: center; | |
justify-content: center; | |
margin: 0 auto 0.5rem; | |
position: relative; | |
z-index: 2; | |
} | |
.process-step.completed .process-step-icon { | |
background-color: #4299e1; | |
color: white; | |
} | |
.process-step.active .process-step-icon { | |
background-color: #4299e1; | |
color: white; | |
} | |
.process-step-label { | |
font-size: 0.875rem; | |
color: #4a5568; | |
} | |
.process-step.active .process-step-label { | |
font-weight: 500; | |
color: #2b6cb0; | |
} | |
/* 任务分配样式 */ | |
.task-assignee { | |
display: flex; | |
align-items: center; | |
} | |
.task-assignee-avatar { | |
width: 2rem; | |
height: 2rem; | |
border-radius: 50%; | |
margin-right: 0.5rem; | |
background-color: #e2e8f0; | |
display: flex; | |
align-items: center; | |
justify-content: center; | |
color: #718096; | |
} | |
/* 扫描输入样式 */ | |
.scan-input { | |
display: flex; | |
align-items: center; | |
} | |
.scan-input input { | |
flex: 1; | |
margin-right: 0.5rem; | |
} | |
.scan-input-button { | |
padding: 0.5rem; | |
border-radius: 0.25rem; | |
background-color: #f7fafc; | |
cursor: pointer; | |
} | |
.scan-input-button:hover { | |
background-color: #edf2f7; | |
} | |
/* 扫描结果表格 */ | |
.scan-results { | |
width: 100%; | |
border-collapse: collapse; | |
margin-top: 1rem; | |
} | |
.scan-results th { | |
text-align: left; | |
padding: 0.75rem 1rem; | |
background-color: #f8fafc; | |
font-weight: 500; | |
color: #4a5568; | |
} | |
.scan-results td { | |
padding: 0.75rem 1rem; | |
border-bottom: 1px solid #e2e8f0; | |
} | |
.scan-results-product { | |
display: flex; | |
align-items: center; | |
} | |
.scan-results-product-image { | |
width: 40px; | |
height: 40px; | |
border-radius: 0.25rem; | |
margin-right: 1rem; | |
object-fit: cover; | |
} | |
.scan-results-product-info { | |
flex: 1; | |
} | |
.scan-results-product-name { | |
font-weight: 500; | |
margin-bottom: 0.25rem; | |
} | |
.scan-results-product-sku { | |
font-size: 0.75rem; | |
color: #718096; | |
} | |
.scan-results-actions { | |
display: flex; | |
gap: 0.5rem; | |
} | |
/* 确认对话框 */ | |
.confirmation-dialog { | |
position: fixed; | |
top: 0; | |
left: 0; | |
right: 0; | |
bottom: 0; | |
background-color: rgba(0, 0, 0, 0.5); | |
display: flex; | |
align-items: center; | |
justify-content: center; | |
z-index: 1000; | |
opacity: 0; | |
visibility: hidden; | |
transition: all 0.3s ease; | |
} | |
.confirmation-dialog.active { | |
opacity: 1; | |
visibility: visible; | |
} | |
.confirmation-content { | |
background-color: white; | |
border-radius: 0.5rem; | |
width: 100%; | |
max-width: 400px; | |
padding: 1.5rem; | |
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); | |
} | |
.confirmation-title { | |
font-size: 1.125rem; | |
font-weight: 600; | |
margin-bottom: 1rem; | |
} | |
.confirmation-message { | |
margin-bottom: 1.5rem; | |
color: #4a5568; | |
} | |
.confirmation-actions { | |
display: flex; | |
justify-content: flex-end; | |
gap: 0.75rem; | |
} | |
/* 产品管理特定样式 */ | |
.product-tabs { | |
display: flex; | |
border-bottom: 1px solid #e2e8f0; | |
margin-bottom: 1.5rem; | |
} | |
.product-tab { | |
padding: 0.75rem 1.5rem; | |
cursor: pointer; | |
border-bottom: 2px solid transparent; | |
transition: all 0.2s; | |
} | |
.product-tab.active { | |
border-bottom-color: #4299e1; | |
color: #4299e1; | |
font-weight: 500; | |
} | |
.product-tab:hover:not(.active) { | |
border-bottom-color: #cbd5e0; | |
} | |
.product-table { | |
width: 100%; | |
border-collapse: collapse; | |
} | |
.product-table th { | |
text-align: left; | |
padding: 0.75rem 1rem; | |
background-color: #f8fafc; | |
font-weight: 500; | |
color: #4a5568; | |
} | |
.product-table td { | |
padding: 0.75rem 1rem; | |
border-bottom: 1px solid #e2e8f0; | |
} | |
.product-table-row:hover { | |
background-color: #f7fafc; | |
} | |
.product-table-product { | |
display: flex; | |
align-items: center; | |
} | |
.product-table-product-image { | |
width: 40px; | |
height: 40px; | |
border-radius: 0.25rem; | |
margin-right: 1rem; | |
object-fit: cover; | |
} | |
.product-table-product-info { | |
flex: 1; | |
} | |
.product-table-product-name { | |
font-weight: 500; | |
margin-bottom: 0.25rem; | |
} | |
.product-table-product-sku { | |
font-size: 0.75rem; | |
color: #718096; | |
} | |
.product-table-actions { | |
display: flex; | |
gap: 0.5rem; | |
} | |
/* 批量操作区域 */ | |
.bulk-actions { | |
display: flex; | |
align-items: center; | |
gap: 1rem; | |
padding: 0.75rem 1rem; | |
background-color: #f8fafc; | |
border-bottom: 1px solid #e2e8f0; | |
} | |
/* 产品分类树 */ | |
.category-tree { | |
padding: 0.5rem 0; | |
} | |
.category-item { | |
padding: 0.5rem 1rem; | |
cursor: pointer; | |
transition: all 0.2s; | |
} | |
.category-item:hover { | |
background-color: #edf2f7; | |
} | |
.category-item.active { | |
background-color: #ebf4ff; | |
color: #2b6cb0; | |
} | |
.category-item.has-children { | |
position: relative; | |
} | |
.category-item.has-children::after { | |
content: '\f078'; | |
font-family: 'Font Awesome 6 Free'; | |
font-weight: 900; | |
position: absolute; | |
right: 1rem; | |
top: 50%; | |
transform: translateY(-50%); | |
font-size: 0.75rem; | |
transition: transform 0.3s; | |
} | |
.category-item.has-children.active::after { | |
transform: translateY(-50%) rotate(180deg); | |
} | |
.category-children { | |
padding-left: 1rem; | |
overflow: hidden; | |
max-height: 0; | |
transition: max-height 0.3s ease; | |
} | |
.category-children.active { | |
max-height: 1000px; | |
} | |
/* 产品详情卡片 */ | |
.product-card { | |
border: 1px solid #e2e8f0; | |
border-radius: 0.5rem; | |
overflow: hidden; | |
} | |
.product-card-header { | |
padding: 1rem; | |
background-color: #f8fafc; | |
border-bottom: 1px solid #e2e8f0; | |
} | |
.product-card-body { | |
padding: 1.5rem; | |
} | |
.product-card-title { | |
font-size: 1.25rem; | |
font-weight: 600; | |
margin-bottom: 0.5rem; | |
} | |
.product-card-meta { | |
display: flex; | |
gap: 1.5rem; | |
font-size: 0.875rem; | |
color: #4a5568; | |
margin-bottom: 1rem; | |
} | |
.product-card-section { | |
margin-bottom: 1.5rem; | |
} | |
.product-card-section-title { | |
font-weight: 600; | |
margin-bottom: 0.75rem; | |
padding-bottom: 0.5rem; | |
border-bottom: 1px solid #e2e8f0; | |
} | |
/* 库存信息表格 */ | |
.inventory-table { | |
width: 100%; | |
border-collapse: collapse; | |
} | |
.inventory-table th { | |
text-align: left; | |
padding: 0.75rem 1rem; | |
background-color: #f8fafc; | |
font-weight: 500; | |
color: #4a5568; | |
} | |
.inventory-table td { | |
padding: 0.75rem 1rem; | |
border-bottom: 1px solid #e2e8f0; | |
} | |
/* 产品图片库 */ | |
.product-gallery { | |
display: grid; | |
grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); | |
gap: 1rem; | |
} | |
.product-gallery-item { | |
position: relative; | |
border: 1px solid #e2e8f0; | |
border-radius: 0.25rem; | |
overflow: hidden; | |
} | |
.product-gallery-item img { | |
width: 100%; | |
height: 120px; | |
object-fit: cover; | |
} | |
.product-gallery-item-actions { | |
position: absolute; | |
top: 0.25rem; | |
right: 0.25rem; | |
display: flex; | |
gap: 0.25rem; | |
} | |
/* 产品变体标签 */ | |
.variant-tag { | |
display: inline-flex; | |
align-items: center; | |
padding: 0.25rem 0.5rem; | |
background-color: #ebf4ff; | |
border-radius: 9999px; | |
font-size: 0.75rem; | |
color: #3182ce; | |
margin-right: 0.25rem; | |
margin-bottom: 0.25rem; | |
} | |
/* 产品规格表格 */ | |
.specs-table { | |
width: 100%; | |
border-collapse: collapse; | |
} | |
.specs-table th { | |
text-align: left; | |
padding: 0.75rem 1rem; | |
background-color: #f8fafc; | |
font-weight: 500; | |
color: #4a5568; | |
width: 30%; | |
} | |
.specs-table td { | |
padding: 0.75rem 1rem; | |
border-bottom: 1px solid #e2e8f0; | |
} | |
</style> | |
</head> | |
<body class="bg-gray-50 h-screen overflow-hidden"> | |
<!-- 顶部信息展示栏 --> | |
<header class="bg-white shadow-sm"> | |
<div class="flex items-center justify-between px-6 py-3"> | |
<!-- 左侧:系统名称/logo --> | |
<div class="flex items-center space-x-4"> | |
<button class="mobile-menu-btn hidden text-gray-600 hover:text-gray-900" onclick="toggleSidebar()"> | |
<i class="fas fa-bars text-xl"></i> | |
</button> | |
<h1 class="text-xl font-semibold text-gray-800">仓储管理系统</h1> | |
</div> | |
<!-- 中间:仓库信息展示区 --> | |
<div class="warehouse-info flex-1 mx-8"> | |
<div class="warehouse-dropdown"> | |
<button class="flex items-center space-x-2 px-4 py-2 bg-gray-100 hover:bg-gray-200 rounded-lg transition-colors"> | |
<i class="fas fa-warehouse text-blue-500"></i> | |
<span class="font-medium">上海中心仓库</span> | |
<i class="fas fa-chevron-down text-gray-500 text-xs"></i> | |
</button> | |
<div class="warehouse-dropdown-content"> | |
<div class="warehouse-item active flex items-center"> | |
<i class="fas fa-check-circle mr-2 text-blue-500"></i> | |
<div> | |
<div class="font-medium">上海中心仓库</div> | |
<div class="text-xs text-gray-500">库存: 12,450件</div> | |
</div> | |
</div> | |
<div class="warehouse-item flex items-center"> | |
<i class="fas fa-warehouse mr-2 text-gray-400"></i> | |
<div> | |
<div class="font-medium">北京分仓</div> | |
<div class="text-xs text-gray-500">库存: 8,732件</div> | |
</div> | |
</div> | |
<div class="warehouse-item flex items-center"> | |
<i class="fas fa-warehouse mr-2 text-gray-400"></i> | |
<div> | |
<div class="font-medium">广州分仓</div> | |
<div class="text-xs text-gray-500">库存: 5,321件</div> | |
</div> | |
</div> | |
<div class="warehouse-item flex items-center"> | |
<i class="fas fa-warehouse mr-2 text-gray-400"></i> | |
<div> | |
<div class="font-medium">成都分仓</div> | |
<div class="text-xs text-gray-500">库存: 3,987件</div> | |
</div> | |
</div> | |
<div class="border-t border-gray-200 mt-1 pt-1"> | |
<div class="warehouse-item flex items-center text-blue-500"> | |
<i class="fas fa-plus-circle mr-2"></i> | |
<span>添加新仓库</span> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
<!-- 右侧:用户账户信息 --> | |
<div class="account-info flex items-center space-x-4"> | |
<div class="flex items-center space-x-2"> | |
<i class="fas fa-bell text-gray-400 hover:text-gray-600 cursor-pointer"></i> | |
<i class="fas fa-envelope text-gray-400 hover:text-gray-600 cursor-pointer"></i> | |
</div> | |
<div class="flex items-center space-x-2"> | |
<span class="text-sm text-gray-600 hidden md:block">管理员</span> | |
<div class="w-8 h-8 rounded-full bg-blue-100 flex items-center justify-center cursor-pointer"> | |
<i class="fas fa-user text-blue-500"></i> | |
</div> | |
</div> | |
</div> | |
</div> | |
</header> | |
<div class="content-container"> | |
<div class="flex h-full overflow-hidden"> | |
<!-- 左侧菜单栏 --> | |
<aside class="sidebar w-64 bg-white shadow-md flex flex-col"> | |
<!-- 菜单滚动区域 --> | |
<div class="menu-container flex-1 overflow-y-auto custom-scrollbar py-4"> | |
<!-- 自定义菜单内容 --> | |
<div class="menu-item flex items-center px-6 py-3 cursor-pointer rounded-md my-1 mx-2" data-page="dashboard" onclick="showPage('dashboard')"> | |
<i class="menu-icon fas fa-tachometer-alt mr-3 text-blue-500"></i> | |
<span>Dashboard</span> | |
</div> | |
<div class="menu-item flex items-center px-6 py-3 cursor-pointer rounded-md my-1 mx-2 active" data-page="products" onclick="showPage('products')"> | |
<i class="menu-icon fas fa-boxes mr-3 text-green-500"></i> | |
<span>产品管理</span> | |
</div> | |
<!-- 仓储管理菜单(添加二级菜单) --> | |
<div class="has-submenu"> | |
<div class="menu-item flex items-center px-6 py-3 cursor-pointer rounded-md my-1 mx-2" onclick="toggleSubmenu(this)"> | |
<i class="menu-icon fas fa-warehouse mr-3 text-purple-500"></i> | |
<span>仓储管理</span> | |
</div> | |
<div class="submenu"> | |
<div class="submenu-item flex items-center" data-page="warehouses" onclick="showPage('warehouses')"> | |
<i class="fas fa-building mr-3 text-purple-400"></i> | |
<span>仓库管理</span> | |
</div> | |
<div class="submenu-item flex items-center" data-page="zones" onclick="showPage('zones')"> | |
<i class="fas fa-map-marked-alt mr-3 text-purple-400"></i> | |
<span>库区管理</span> | |
</div> | |
<div class="submenu-item flex items-center" data-page="locations" onclick="showPage('locations')"> | |
<i class="fas fa-th mr-3 text-purple-400"></i> | |
<span>库位管理</span> | |
</div> | |
<div class="submenu-item flex items-center" data-page="pallets" onclick="showPage('pallets')"> | |
<i class="fas fa-pallet mr-3 text-purple-400"></i> | |
<span>托盘模版管理</span> | |
</div> | |
</div> | |
</div> | |
<div class="menu-item flex items-center px-6 py-3 cursor-pointer rounded-md my-1 mx-2" data-page="demand-orders" onclick="showPage('demand-orders')"> | |
<i class="menu-icon fas fa-clipboard-list mr-3 text-yellow-500"></i> | |
<span>需求工单</span> | |
</div> | |
<div class="menu-item flex items-center px-6 py-3 cursor-pointer rounded-md my-1 mx-2" data-page="reviews" onclick="showPage('reviews')"> | |
<i class="menu-icon fas fa-check-circle mr-3 text-red-500"></i> | |
<span>审核中心</span> | |
</div> | |
<div class="menu-item flex items-center px-6 py-3 cursor-pointer rounded-md my-1 mx-2" data-page="inbound-orders" onclick="showPage('inbound-orders')"> | |
<i class="menu-icon fas fa-arrow-down mr-3 text-indigo-500"></i> | |
<span>入库工单</span> | |
</div> | |
<div class="menu-item flex items-center px-6 py-3 cursor-pointer rounded-md my-1 mx-2" data-page="outbound-orders" onclick="showPage('outbound-orders')"> | |
<i class="menu-icon fas fa-arrow-up mr-3 text-teal-500"></i> | |
<span>出库工单</span> | |
</div> | |
</div> | |
<!-- 菜单底部固定区域 --> | |
<div class="menu-footer border-t border-gray-200 p-4"> | |
<div class="menu-item flex items-center px-6 py-3 cursor-pointer rounded-md my-1 mx-2" data-page="settings" onclick="showPage('settings')"> | |
<i class="menu-icon fas fa-cog mr-3 text-gray-500"></i> | |
<span>系统设置</span> | |
</div> | |
</div> | |
</aside> | |
<!-- 主内容区 - 动态加载不同页面 --> | |
<main class="main-content flex-1 overflow-hidden"> | |
<!-- Dashboard页面 (默认隐藏) --> | |
<div class="product-content h-full hidden" id="dashboard-page"> | |
<div class="product-container h-full flex flex-col"> | |
<div class="p-6"> | |
<h2 class="text-xl font-semibold text-gray-800">Dashboard</h2> | |
<p class="text-gray-600 mt-2">这里是系统概览页面</p> | |
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 mt-6"> | |
<!-- 统计卡片1 --> | |
<div class="bg-white p-6 rounded-lg shadow-sm border border-gray-100"> | |
<div class="flex items-center justify-between"> | |
<div> | |
<p class="text-gray-500 text-sm">总库存量</p> | |
<p class="text-2xl font-bold mt-2">24,568</p> | |
</div> | |
<div class="w-12 h-12 rounded-full bg-blue-50 flex items-center justify-center text-blue-500"> | |
<i class="fas fa-boxes text-xl"></i> | |
</div> | |
</div> | |
<div class="mt-4 text-sm text-green-500"> | |
<i class="fas fa-arrow-up mr-1"></i> 12.5% 较上月 | |
</div> | |
</div> | |
<!-- 统计卡片2 --> | |
<div class="bg-white p-6 rounded-lg shadow-sm border border-gray-100"> | |
<div class="flex items-center justify-between"> | |
<div> | |
<p class="text-gray-500 text-sm">今日入库</p> | |
<p class="text-2xl font-bold mt-2">1,245</p> | |
</div> | |
<div class="w-12 h-12 rounded-full bg-green-50 flex items-center justify-center text-green-500"> | |
<i class="fas fa-arrow-down text-xl"></i> | |
</div> | |
</div> | |
<div class="mt-4 text-sm text-green-500"> | |
<i class="fas fa-arrow-up mr-1"></i> 8.3% 较昨日 | |
</div> | |
</div> | |
<!-- 统计卡片3 --> | |
<div class="bg-white p-6 rounded-lg shadow-sm border border-gray-100"> | |
<div class="flex items-center justify-between"> | |
<div> | |
<p class="text-gray-500 text-sm">今日出库</p> | |
<p class="text-2xl font-bold mt-2">876</p> | |
</div> | |
<div class="w-12 h-12 rounded-full bg-orange-50 flex items-center justify-center text-orange-500"> | |
<i class="fas fa-arrow-up text-xl"></i> | |
</div> | |
</div> | |
<div class="mt-4 text-sm text-red-500"> | |
<i class="fas fa-arrow-down mr-1"></i> 5.2% 较昨日 | |
</div> | |
</div> | |
<!-- 统计卡片4 --> | |
<div class="bg-white p-6 rounded-lg shadow-sm border border-gray-100"> | |
<div class="flex items-center justify-between"> | |
<div> | |
<p class="text-gray-500 text-sm">待处理工单</p> | |
<p class="text-2xl font-bold mt-2">23</p> | |
</div> | |
<div class="w-12 h-12 rounded-full bg-red-50 flex items-center justify-center text-red-500"> | |
<i class="fas fa-clipboard-list text-xl"></i> | |
</div> | |
</div> | |
<div class="mt-4 text-sm text-red-500"> | |
<i class="fas fa-arrow-up mr-1"></i> 3.2% 较昨日 | |
</div> | |
</div> | |
</div> | |
<!-- 图表区域 --> | |
<div class="grid grid-cols-1 lg:grid-cols-2 gap-6 mt-6"> | |
<div class="bg-white p-6 rounded-lg shadow-sm border border-gray-100"> | |
<div class="flex items-center justify-between mb-4"> | |
<h3 class="font-medium text-gray-800">库存变化趋势</h3> | |
<div class="flex space-x-2"> | |
<button class="px-3 py-1 text-xs bg-blue-50 text-blue-500 rounded">周</button> | |
<button class="px-3 py-1 text-xs bg-blue-500 text-white rounded">月</button> | |
<button class="px-3 py-1 text-xs bg-blue-50 text-blue-500 rounded">年</button> | |
</div> | |
</div> | |
<div class="h-64 bg-gray-50 rounded flex items-center justify-center"> | |
<p class="text-gray-500">库存变化趋势图表</p> | |
</div> | |
</div> | |
<div class="bg-white p-6 rounded-lg shadow-sm border border-gray-100"> | |
<div class="flex items-center justify-between mb-4"> | |
<h3 class="font-medium text-gray-800">工单状态分布</h3> | |
<div class="flex space-x-2"> | |
<button class="px-3 py-1 text-xs bg-blue-50 text-blue-500 rounded">入库</button> | |
<button class="px-3 py-1 text-xs bg-blue-500 text-white rounded">出库</button> | |
</div> | |
</div> | |
<div class="h-64 bg-gray-50 rounded flex items-center justify-center"> | |
<p class="text-gray-500">工单状态分布图表</p> | |
</div> | |
</div> | |
</div> | |
<!-- 最近活动 --> | |
<div class="bg-white p-6 rounded-lg shadow-sm border border-gray-100 mt-6"> | |
<h3 class="font-medium text-gray-800 mb-4">最近活动</h3> | |
<div class="space-y-4"> | |
<div class="flex items-start"> | |
<div class="w-8 h-8 rounded-full bg-blue-100 flex items-center justify-center text-blue-500 mr-3"> | |
<i class="fas fa-arrow-down text-sm"></i> | |
</div> | |
<div> | |
<p class="text-sm"><span class="font-medium">张明</span> 完成了入库工单 #IN-20230045</p> | |
<p class="text-xs text-gray-500 mt-1">10分钟前</p> | |
</div> | |
</div> | |
<div class="flex items-start"> | |
<div class="w-8 h-8 rounded-full bg-green-100 flex items-center justify-center text-green-500 mr-3"> | |
<i class="fas fa-arrow-up text-sm"></i> | |
</div> | |
<div> | |
<p class="text-sm"><span class="font-medium">李华</span> 创建了出库工单 #OUT-20230078</p> | |
<p class="text-xs text-gray-500 mt-1">25分钟前</p> | |
</div> | |
</div> | |
<div class="flex items-start"> | |
<div class="w-8 h-8 rounded-full bg-purple-100 flex items-center justify-center text-purple-500 mr-3"> | |
<i class="fas fa-boxes text-sm"></i> | |
</div> | |
<div> | |
<p class="text-sm"><span class="font-medium">王芳</span> 更新了产品 P-10086 的库存信息</p> | |
<p class="text-xs text-gray-500 mt-1">1小时前</p> | |
</div> | |
</div> | |
<div class="flex items-start"> | |
<div class="w-8 h-8 rounded-full bg-yellow-100 flex items-center justify-center text-yellow-500 mr-3"> | |
<i class="fas fa-clipboard-check text-sm"></i> | |
</div> | |
<div> | |
<p class="text-sm"><span class="font-medium">赵强</span> 审核通过了需求工单 #DEM-20230012</p> | |
<p class="text-xs text-gray-500 mt-1">2小时前</p> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
<!-- 产品管理页面 (默认显示) --> | |
<div class="product-content h-full" id="products-page"> | |
<div class="product-container h-full flex flex-col"> | |
<!-- 产品管理头部 --> | |
<div class="border-b border-gray-200 p-6"> | |
<div class="flex justify-between items-center"> | |
<div> | |
<h2 class="text-xl font-semibold text-gray-800">产品管理</h2> | |
<p class="text-gray-600 mt-1">管理您的所有产品信息</p> | |
</div> | |
<div class="flex space-x-3"> | |
<button class="px-4 py-2 bg-gray-100 hover:bg-gray-200 rounded-md text-gray-700 flex items-center"> | |
<i class="fas fa-filter mr-2"></i> | |
<span>筛选</span> | |
</button> | |
<button class="px-4 py-2 bg-blue-500 hover:bg-blue-600 rounded-md text-white flex items-center" onclick="openProductDrawer('add')"> | |
<i class="fas fa-plus mr-2"></i> | |
<span>添加产品</span> | |
</button> | |
</div> | |
</div> | |
<!-- 产品标签页 --> | |
<div class="product-tabs mt-6"> | |
<div class="product-tab active">全部产品</div> | |
<div class="product-tab">已上架</div> | |
<div class="product-tab">已下架</div> | |
<div class="product-tab">低库存</div> | |
<div class="product-tab">缺货</div> | |
</div> | |
</div> | |
<!-- 产品表格区域 --> | |
<div class="flex-1 overflow-auto"> | |
<div class="bulk-actions"> | |
<div class="flex items-center"> | |
<input type="checkbox" class="mr-3"> | |
<span class="text-sm text-gray-600">全选</span> | |
</div> | |
<div class="flex space-x-2"> | |
<button class="px-3 py-1 text-sm bg-gray-100 hover:bg-gray-200 rounded text-gray-700">批量上架</button> | |
<button class="px-3 py-1 text-sm bg-gray-100 hover:bg-gray-200 rounded text-gray-700">批量下架</button> | |
<button class="px-3 py-1 text-sm bg-gray-100 hover:bg-gray-200 rounded text-gray-700">导出数据</button> | |
</div> | |
</div> | |
<table class="product-table w-full"> | |
<thead> | |
<tr> | |
<th class="p-3"> | |
<input type="checkbox"> | |
</th> | |
<th class="p-3">产品信息</th> | |
<th class="p-3">分类</th> | |
<th class="p-3">库存</th> | |
<th class="p-3">价格</th> | |
<th class="p-3">状态</th> | |
<th class="p-3">操作</th> | |
</tr> | |
</thead> | |
<tbody> | |
<tr class="product-table-row"> | |
<td class="p-3 text-center"> | |
<input type="checkbox"> | |
</td> | |
<td class="p-3"> | |
<div class="product-table-product"> | |
<img src="https://via.placeholder.com/40" alt="产品图片" class="product-table-product-image"> | |
<div class="product-table-product-info"> | |
<div class="product-table-product-name">高端无线蓝牙耳机</div> | |
<div class="product-table-product-sku">SKU: AUD-2023001</div> | |
</div> | |
</div> | |
</td> | |
<td class="p-3 text-gray-600">电子产品</td> | |
<td class="p-3"> | |
<div class="flex items-center justify-between"> | |
<span class="font-medium">156</span> | |
<span class="text-xs text-gray-500">/200</span> | |
</div> | |
</td> | |
<td class="p-3 font-medium">¥599.00</td> | |
<td class="p-3"> | |
<span class="status-badge status-active">已上架</span> | |
</td> | |
<td class="p-3"> | |
<div class="product-table-actions"> | |
<button class="p-1 text-blue-500 hover:text-blue-700" onclick="openProductDrawer('edit')"> | |
<i class="fas fa-edit"></i> | |
</button> | |
<button class="p-1 text-gray-500 hover:text-gray-700"> | |
<i class="fas fa-copy"></i> | |
</button> | |
<button class="p-1 text-red-500 hover:text-red-700" onclick="showDeleteConfirm()"> | |
<i class="fas fa-trash"></i> | |
</button> | |
</div> | |
</td> | |
</tr> | |
<tr class="product-table-row"> | |
<td class="p-3 text-center"> | |
<input type="checkbox"> | |
</td> | |
<td class="p-3"> | |
<div class="product-table-product"> | |
<img src="https://via.placeholder.com/40" alt="产品图片" class="product-table-product-image"> | |
<div class="product-table-product-info"> | |
<div class="product-table-product-name">智能手表Pro</div> | |
<div class="product-table-product-sku">SKU: WAT-2023002</div> | |
</div> | |
</div> | |
</td> | |
<td class="p-3 text-gray-600">电子产品</td> | |
<td class="p-3"> | |
<div class="flex items-center justify-between"> | |
<span class="font-medium">45</span> | |
<span class="text-xs text-gray-500">/100</span> | |
</div> | |
</td> | |
<td class="p-3 font-medium">¥1,299.00</td> | |
<td class="p-3"> | |
<span class="status-badge status-active">已上架</span> | |
</td> | |
<td class="p-3"> | |
<div class="product-table-actions"> | |
<button class="p-1 text-blue-500 hover:text-blue-700" onclick="openProductDrawer('edit')"> | |
<i class="fas fa-edit"></i> | |
</button> | |
<button class="p-1 text-gray-500 hover:text-gray-700"> | |
<i class="fas fa-copy"></i> | |
</button> | |
<button class="p-1 text-red-500 hover:text-red-700" onclick="showDeleteConfirm()"> | |
<i class="fas fa-trash"></i> | |
</button> | |
</div> | |
</td> | |
</tr> | |
<tr class="product-table-row"> | |
<td class="p-3 text-center"> | |
<input type="checkbox"> | |
</td> | |
<td class="p-3"> | |
<div class="product-table-product"> | |
<img src="https://via.placeholder.com/40" alt="产品图片" class="product-table-product-image"> | |
<div class="product-table-product-info"> | |
<div class="product-table-product-name">便携式充电宝</div> | |
<div class="product-table-product-sku">SKU: POW-2023003</div> | |
</div> | |
</div> | |
</td> | |
<td class="p-3 text-gray-600">电子产品</td> | |
<td class="p-3"> | |
<div class="flex items-center justify-between"> | |
<span class="font-medium text-red-500">0</span> | |
<span class="text-xs text-gray-500">/50</span> | |
</div> | |
</td> | |
<td class="p-3 font-medium">¥199.00</td> | |
<td class="p-3"> | |
<span class="status-badge status-inactive">缺货</span> | |
</td> | |
<td class="p-3"> | |
<div class="product-table-actions"> | |
<button class="p-1 text-blue-500 hover:text-blue-700" onclick="openProductDrawer('edit')"> | |
<i class="fas fa-edit"></i> | |
</button> | |
<button class="p-1 text-gray-500 hover:text-gray-700"> | |
<i class="fas fa-copy"></i> | |
</button> | |
<button class="p-1 text-red-500 hover:text-red-700" onclick="showDeleteConfirm()"> | |
<i class="fas fa-trash"></i> | |
</button> | |
</div> | |
</td> | |
</tr> | |
<tr class="product-table-row"> | |
<td class="p-3 text-center"> | |
<input type="checkbox"> | |
</td> | |
<td class="p-3"> | |
<div class="product-table-product"> | |
<img src="https://via.placeholder.com/40" alt="产品图片" class="product-table-product-image"> | |
<div class="product-table-product-info"> | |
<div class="product-table-product-name">运动水壶</div> | |
<div class="product-table-product-sku">SKU: BOT-2023004</div> | |
</div> | |
</div> | |
</td> | |
<td class="p-3 text-gray-600">生活用品</td> | |
<td class="p-3"> | |
<div class="flex items-center justify-between"> | |
<span class="font-medium">12</span> | |
<span class="text-xs text-gray-500">/30</span> | |
</div> | |
</td> | |
<td class="p-3 font-medium">¥89.00</td> | |
<td class="p-3"> | |
<span class="status-badge status-pending">待上架</span> | |
</td> | |
<td class="p-3"> | |
<div class="product-table-actions"> | |
<button class="p-1 text-blue-500 hover:text-blue-700" onclick="openProductDrawer('edit')"> | |
<i class="fas fa-edit"></i> | |
</button> | |
<button class="p-1 text-gray-500 hover:text-gray-700"> | |
<i class="fas fa-copy"></i> | |
</button> | |
<button class="p-1 text-red-500 hover:text-red-700" onclick="showDeleteConfirm()"> | |
<i class="fas fa-trash"></i> | |
</button> | |
</div> | |
</td> | |
</tr> | |
<tr class="product-table-row"> | |
<td class="p-3 text-center"> | |
<input type="checkbox"> | |
</td> | |
<td class="p-3"> | |
<div class="product-table-product"> | |
<img src="https://via.placeholder.com/40" alt="产品图片" class="product-table-product-image"> | |
<div class="product-table-product-info"> | |
<div class="product-table-product-name">无线键盘</div> | |
<div class="product-table-product-sku">SKU: KEY-2023005</div> | |
</div> | |
</div> | |
</td> | |
<td class="p-3 text-gray-600">电子产品</td> | |
<td class="p-3"> | |
<div class="flex items-center justify-between"> | |
<span class="font-medium">78</span> | |
<span class="text-xs text-gray-500">/100</span> | |
</div> | |
</td> | |
<td class="p-3 font-medium">¥299.00</td> | |
<td class="p-3"> | |
<span class="status-badge status-active">已上架</span> | |
</td> | |
<td class="p-3"> | |
<div class="product-table-actions"> | |
<button class="p-1 text-blue-500 hover:text-blue-700" onclick="openProductDrawer('edit')"> | |
<i class="fas fa-edit"></i> | |
</button> | |
<button class="p-1 text-gray-500 hover:text-gray-700"> | |
<i class="fas fa-copy"></i> | |
</button> | |
<button class="p-1 text-red-500 hover:text-red-700" onclick="showDeleteConfirm()"> | |
<i class="fas fa-trash"></i> | |
</button> | |
</div> | |
</td> | |
</tr> | |
</tbody> | |
</table> | |
<!-- 分页控制 --> | |
<div class="flex items-center justify-between px-6 py-4 border-t border-gray-200"> | |
<div class="text-sm text-gray-600"> | |
显示 <span class="font-medium">1</span> 到 <span class="font-medium">5</span> 条,共 <span class="font-medium">24</span> 条记录 | |
</div> | |
<div class="flex space-x-1"> | |
<button class="pagination-btn px-3 py-1 rounded border border-gray-300 text-gray-600 disabled"> | |
<i class="fas fa-chevron-left"></i> | |
</button> | |
<button class="pagination-btn px-3 py-1 rounded border border-blue-500 bg-blue-50 text-blue-500">1</button> | |
<button class="pagination-btn px-3 py-1 rounded border border-gray-300 text-gray-600">2</button> | |
<button class="pagination-btn px-3 py-1 rounded border border-gray-300 text-gray-600">3</button> | |
<button class="pagination-btn px-3 py-1 rounded border border-gray-300 text-gray-600">4</button> | |
<button class="pagination-btn px-3 py-1 rounded border border-gray-300 text-gray-600">5</button> | |
<button class="pagination-btn px-3 py-1 rounded border border-gray-300 text-gray-600"> | |
<i class="fas fa-chevron-right"></i> | |
</button> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
<!-- 仓库管理页面 (默认隐藏) --> | |
<div class="product-content h-full hidden" id="warehouses-page"> | |
<div class="product-container h-full flex flex-col"> | |
<div class="p-6"> | |
<h2 class="text-xl font-semibold text-gray-800">仓库管理</h2> | |
<p class="text-gray-600 mt-2">管理您的仓库信息</p> | |
</div> | |
</div> | |
</div> | |
<!-- 库区管理页面 (默认隐藏) --> | |
<div class="product-content h-full hidden" id="zones-page"> | |
<div class="product-container h-full flex flex-col"> | |
<div class="p-6"> | |
<h2 class="text-xl font-semibold text-gray-800">库区管理</h2> | |
<p class="text-gray-600 mt-2">管理您的库区信息</p> | |
</div> | |
</div> | |
</div> | |
<!-- 库位管理页面 (默认隐藏) --> | |
<div class="product-content h-full hidden" id="locations-page"> | |
<div class="product-container h-full flex flex-col"> | |
<div class="p-6"> | |
<h2 class="text-xl font-semibold text-gray-800">库位管理</h2> | |
<p class="text-gray-600 mt-2">管理您的库位信息</p> | |
</div> | |
</div> | |
</div> | |
<!-- 托盘模版管理页面 (默认隐藏) --> | |
<div class="product-content h-full hidden" id="pallets-page"> | |
<div class="product-container h-full flex flex-col"> | |
<div class="p-6"> | |
<h2 class="text-xl font-semibold text-gray-800">托盘模版管理</h2> | |
<p class="text-gray-600 mt-2">管理您的托盘模版</p> | |
</div> | |
</div> | |
</div> | |
<!-- 需求工单页面 (默认隐藏) --> | |
<div class="product-content h-full hidden" id="demand-orders-page"> | |
<div class="product-container h-full flex flex-col"> | |
<div class="p-6"> | |
<h2 class="text-xl font-semibold text-gray-800">需求工单</h2> | |
<p class="text-gray-600 mt-2">查看和管理您的需求工单</p> | |
</div> | |
</div> | |
</div> | |
<!-- 审核中心页面 (默认隐藏) --> | |
<div class="product-content h-full hidden" id="reviews-page"> | |
<div class="product-container h-full flex flex-col"> | |
<div class="p-6"> | |
<h2 class="text-xl font-semibold text-gray-800">审核中心</h2> | |
<p class="text-gray-600 mt-2">审核待处理的工单</p> | |
</div> | |
</div> | |
</div> | |
<!-- 入库工单页面 (默认隐藏) --> | |
<div class="product-content h-full hidden" id="inbound-orders-page"> | |
<div class="product-container h-full flex flex-col"> | |
<div class="p-6"> | |
<h2 class="text-xl font-semibold text-gray-800">入库工单</h2> | |
<p class="text-gray-600 mt-2">管理您的入库工单</p> | |
</div> | |
</div> | |
</div> | |
<!-- 出库工单页面 (默认隐藏) --> | |
<div class="product-content h-full hidden" id="outbound-orders-page"> | |
<div class="product-container h-full flex flex-col"> | |
<div class="p-6"> | |
<h2 class="text-xl font-semibold text-gray-800">出库工单</h2> | |
<p class="text-gray-600 mt-2">管理您的出库工单</p> | |
</div> | |
</div> | |
</div> | |
<!-- 系统设置页面 (默认隐藏) --> | |
<div class="product-content h-full hidden" id="settings-page"> | |
<div class="product-container h-full flex flex-col"> | |
<div class="p-6"> | |
<h2 class="text-xl font-semibold text-gray-800">系统设置</h2> | |
<p class="text-gray-600 mt-2">配置系统参数</p> | |
</div> | |
</div> | |
</div> | |
</main> | |
</div> | |
</div> | |
<!-- 产品编辑/添加抽屉 --> | |
<div class="drawer-overlay" id="product-drawer-overlay"></div> | |
</html> |