diff --git a/public/image/logo.png b/public/image/logo.png new file mode 100644 index 0000000..531d2f1 Binary files /dev/null and b/public/image/logo.png differ diff --git a/src/components/Aside.vue b/src/components/Aside.vue index 58d46f1..408a4f7 100644 --- a/src/components/Aside.vue +++ b/src/components/Aside.vue @@ -14,13 +14,12 @@ - + - 待办订单 - 退款管理 + 待办订单 @@ -49,18 +48,6 @@ 门店信息 - - - - - 每日收益 - 收支管理 - 财务下载 - 收款账号 -
diff --git a/src/components/Footer.vue b/src/components/Footer.vue index 3f9aa11..1b371f7 100644 --- a/src/components/Footer.vue +++ b/src/components/Footer.vue @@ -3,11 +3,6 @@ - + +.dashboard-container::before { + content: ''; + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: + radial-gradient(circle at 20% 50%, rgba(37, 99, 235, 0.03) 0%, transparent 50%), + radial-gradient(circle at 80% 20%, rgba(37, 99, 235, 0.02) 0%, transparent 50%), + radial-gradient(circle at 40% 80%, rgba(37, 99, 235, 0.015) 0%, transparent 50%); + pointer-events: none; + z-index: -1; +} + +/* 页面头部 */ +.page-header { + display: flex; + justify-content: space-between; + align-items: flex-start; + margin-bottom: 32px; + position: relative; + z-index: 1; + padding: 24px; + background: linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%); + border-radius: 20px; + color: white; + box-shadow: 0 8px 32px rgba(37, 99, 235, 0.15); +} + +.header-content { + flex: 1; +} + +.page-title { + margin: 0 0 8px 0; + font-size: 32px; + font-weight: 700; + color: white; + letter-spacing: -0.5px; +} + +.page-subtitle { + margin: 0; + color: rgba(255, 255, 255, 0.8); + font-size: 16px; + font-weight: 400; +} + +.header-extra { + margin-left: 24px; +} + +/* 现代化日期选择器 */ +.modern-date-picker :deep(.el-input__wrapper) { + background: rgba(255, 255, 255, 0.95); + border: 1px solid rgba(255, 255, 255, 0.2); + border-radius: 12px; + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1); + backdrop-filter: blur(10px); + transition: all 0.3s ease; +} + +.modern-date-picker :deep(.el-input__wrapper):hover { + background: rgba(255, 255, 255, 1); + border-color: rgba(255, 255, 255, 0.4); + box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15); +} + +/* 统计卡片网格 */ +.stat-cards { + margin-bottom: 32px; +} + +/* 统计卡片样式 */ +.stat-card { + height: 100%; + border: 1px solid #e5e7eb; + border-radius: 16px; + background: white; + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + position: relative; + overflow: hidden; +} + +.stat-card::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + height: 4px; + background: linear-gradient(90deg, #2563eb, #1d4ed8); + transition: all 0.3s ease; +} + +.stat-card:hover { + transform: translateY(-4px); + box-shadow: 0 12px 40px rgba(37, 99, 235, 0.15); + border-color: #2563eb; +} + +.stat-card:hover::before { + height: 6px; +} + +/* 不同卡片的蓝色渐变 */ +.revenue-card::before { + background: linear-gradient(90deg, #2563eb, #3b82f6); +} + +.orders-card::before { + background: linear-gradient(90deg, #1d4ed8, #2563eb); +} + +.rating-card::before { + background: linear-gradient(90deg, #1e40af, #1d4ed8); +} + +.value-card::before { + background: linear-gradient(90deg, #1e3a8a, #1e40af); +} + +/* 统计标题样式 */ +.stat-title { + display: flex; + align-items: center; + gap: 12px; + color: #6b7280; + font-size: 14px; + font-weight: 500; + margin-bottom: 8px; +} + +.stat-icon { + width: 40px; + height: 40px; + border-radius: 12px; + display: flex; + align-items: center; + justify-content: center; + font-size: 18px; + color: white; + transition: all 0.3s ease; +} + +.revenue-icon { + background: linear-gradient(135deg, #2563eb, #3b82f6); +} + +.orders-icon { + background: linear-gradient(135deg, #1d4ed8, #2563eb); +} + +.rating-icon { + background: linear-gradient(135deg, #1e40af, #1d4ed8); +} + +.value-icon { + background: linear-gradient(135deg, #1e3a8a, #1e40af); +} + +/* 现代化卡片样式 */ +.modern-card { + border: 1px solid #e5e7eb; + border-radius: 16px; + background: white; + transition: all 0.3s ease; + margin-bottom: 24px; +} + +.modern-card:hover { + transform: translateY(-2px); + box-shadow: 0 12px 40px rgba(37, 99, 235, 0.1); + border-color: #2563eb; +} + +/* 卡片头部 */ +.card-header { + display: flex; + align-items: center; + gap: 12px; + font-size: 18px; + font-weight: 600; + color: #1f2937; +} + +.header-icon { + width: 36px; + height: 36px; + border-radius: 10px; + background: linear-gradient(135deg, #2563eb, #1d4ed8); + display: flex; + align-items: center; + justify-content: center; + color: white; + font-size: 16px; +} + +/* 店铺信息内容 */ +.info-content { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + gap: 24px; +} + +.info-item { + display: flex; + flex-direction: column; + gap: 6px; + padding: 20px; + background: #f8fafc; + border-radius: 12px; + border: 1px solid #e2e8f0; + transition: all 0.3s ease; +} + +.info-item:hover { + background: #ffffff; + border-color: #2563eb; + transform: translateY(-2px); + box-shadow: 0 4px 16px rgba(37, 99, 235, 0.1); +} + +.info-item .label { + color: #64748b; + font-size: 14px; + font-weight: 500; +} + +.info-item .value { + color: #1e293b; + font-size: 18px; + font-weight: 600; +} + +/* 图表容器 */ +.chart-container { + margin-top: 24px; +} + +.revenue-chart { + width: 100%; + height: 450px; + border-radius: 12px; +} + +/* 响应式设计 */ +@media (max-width: 768px) { + .dashboard-container { + padding: 20px; + } + + .page-header { + flex-direction: column; + align-items: stretch; + gap: 20px; + padding: 20px; + } + + .page-title { + font-size: 24px; + } + + .header-extra { + margin-left: 0; + } + + .header-extra :deep(.el-date-editor) { + width: 100%; + } + + .info-content { + grid-template-columns: 1fr; + gap: 16px; + } + + .revenue-chart { + height: 320px; + } + + .stat-card:hover { + transform: translateY(-2px); + } +} + +/* Element Plus 组件样式覆盖 */ +:deep(.el-statistic__content) { + font-size: 28px; + font-weight: 700; + color: #1f2937; +} + +:deep(.el-card__body) { + padding: 24px; +} + +:deep(.el-card__header) { + padding: 20px 24px; + border-bottom: 1px solid #e5e7eb; + background: #f8fafc; +} + +/* 加载状态样式 */ +:deep(.el-loading-mask) { + background-color: rgba(255, 255, 255, 0.9); + backdrop-filter: blur(4px); +} + +/* 滚动条样式 */ +::-webkit-scrollbar { + width: 8px; +} + +::-webkit-scrollbar-track { + background: #f1f5f9; + border-radius: 4px; +} + +::-webkit-scrollbar-thumb { + background: #cbd5e1; + border-radius: 4px; +} + +::-webkit-scrollbar-thumb:hover { + background: #94a3b8; +} + \ No newline at end of file diff --git a/src/views/merchant/Finance/AccountCollection.vue b/src/views/merchant/Finance/AccountCollection.vue deleted file mode 100644 index b74995d..0000000 --- a/src/views/merchant/Finance/AccountCollection.vue +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/src/views/merchant/Finance/DailyRevenue.vue b/src/views/merchant/Finance/DailyRevenue.vue deleted file mode 100644 index 6d11f46..0000000 --- a/src/views/merchant/Finance/DailyRevenue.vue +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/src/views/merchant/Finance/FinanceDownload.vue b/src/views/merchant/Finance/FinanceDownload.vue deleted file mode 100644 index 98fe055..0000000 --- a/src/views/merchant/Finance/FinanceDownload.vue +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/src/views/merchant/Finance/RevenueManagement.vue b/src/views/merchant/Finance/RevenueManagement.vue deleted file mode 100644 index 57af60f..0000000 --- a/src/views/merchant/Finance/RevenueManagement.vue +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/src/views/merchant/Finance/index.vue b/src/views/merchant/Finance/index.vue deleted file mode 100644 index 231f89b..0000000 --- a/src/views/merchant/Finance/index.vue +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/src/views/merchant/Orders/Pending.vue b/src/views/merchant/Orders/Pending.vue deleted file mode 100644 index c9ce757..0000000 --- a/src/views/merchant/Orders/Pending.vue +++ /dev/null @@ -1,448 +0,0 @@ - - - - - diff --git a/src/views/merchant/Orders/Refund.vue b/src/views/merchant/Orders/Refund.vue deleted file mode 100644 index 8a00ae7..0000000 --- a/src/views/merchant/Orders/Refund.vue +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/src/views/merchant/Products/ProductList.vue b/src/views/merchant/Products/ProductList.vue index 755670b..a4228d7 100644 --- a/src/views/merchant/Products/ProductList.vue +++ b/src/views/merchant/Products/ProductList.vue @@ -1,137 +1,392 @@ + + - - + +.el-input-number { + width: 100%; +} + +.el-select { + width: 100%; +} + +.el-table .cell { + word-break: break-all; +} + +.el-button + .el-button { + margin-left: 10px; +} + \ No newline at end of file diff --git a/src/views/merchant/Reviews/ReplyManagement.vue b/src/views/merchant/Reviews/ReplyManagement.vue deleted file mode 100644 index 78f000d..0000000 --- a/src/views/merchant/Reviews/ReplyManagement.vue +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/src/views/merchant/Reviews/StoreReviews.vue b/src/views/merchant/Reviews/StoreReviews.vue index 3406ba3..75618c8 100644 --- a/src/views/merchant/Reviews/StoreReviews.vue +++ b/src/views/merchant/Reviews/StoreReviews.vue @@ -1,353 +1,170 @@ - - + + + +.reply-username { + font-weight: 500; + color: #303133; + font-size: 13px; +} + +.reply-time { + color: #909399; + font-size: 12px; +} + +.reply-content { + color: #303133; + line-height: 1.5; + margin-bottom: 8px; + font-size: 14px; +} + +.reply-actions { + display: flex; + justify-content: flex-end; +} + +.pagination-wrapper { + display: flex; + justify-content: center; + margin-top: 20px; + padding-top: 20px; + border-top: 1px solid #ebeef5; +} + +.reply-dialog-content { + space-y: 16px; +} + +.original-comment { + background-color: #f8f9fa; + border-radius: 6px; + padding: 12px; + margin-bottom: 20px; +} + +.original-comment-header { + display: flex; + align-items: center; + gap: 8px; + margin-bottom: 8px; +} + +.label { + font-weight: 600; + color: #606266; + font-size: 13px; +} + +.dish-name { + color: #409eff; + font-size: 13px; +} + +.original-comment-text { + color: #303133; + line-height: 1.5; + font-size: 14px; +} + +.dialog-footer { + display: flex; + justify-content: flex-end; + gap: 8px; +} + \ No newline at end of file diff --git a/src/views/merchant/Stores/StoreInfo.vue b/src/views/merchant/Stores/StoreInfo.vue index 5dd3c2d..066d63f 100644 --- a/src/views/merchant/Stores/StoreInfo.vue +++ b/src/views/merchant/Stores/StoreInfo.vue @@ -1,718 +1,743 @@ diff --git a/src/views/merchant/order/OrderManager.vue b/src/views/merchant/order/OrderManager.vue new file mode 100644 index 0000000..c6ca24e --- /dev/null +++ b/src/views/merchant/order/OrderManager.vue @@ -0,0 +1,579 @@ + + + + + \ No newline at end of file diff --git a/src/views/merchant/Orders/index.vue b/src/views/merchant/order/index.vue similarity index 100% rename from src/views/merchant/Orders/index.vue rename to src/views/merchant/order/index.vue