commit 9a07a81e9702db782097f2d2ebaaf0eabedf3d4f
Author: linbin <495561397@qq.com>
Date:   Thu Jul 31 09:20:15 2025 +0800
    1
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..f650315
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,27 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+
+# next.js
+/.next/
+/out/
+
+# production
+/build
+
+# debug
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+.pnpm-debug.log*
+
+# env files
+.env*
+
+# vercel
+.vercel
+
+# typescript
+*.tsbuildinfo
+next-env.d.ts
\ No newline at end of file
diff --git a/merchant/CLAUDE.md b/merchant/CLAUDE.md
new file mode 100644
index 0000000..8ad834f
--- /dev/null
+++ b/merchant/CLAUDE.md
@@ -0,0 +1,91 @@
+# 大数集市商户端 - DEMO项目文档
+
+## 🚨 重要实现约束(大模型必读)
+
+### DEMO项目核心原则
+1. **这是一个纯展示性DEMO项目** - 只需要实现UI展示和基础交互效果,无需真实数据处理
+2. **占位功能实现原则** - 所有功能只需要实现交互效果和UI反馈,不需要实现真实的数据联动和业务逻辑
+3. **视觉完整性优先** - 重点在于元素摆放位置准确、交互反馈完整,不强调样式美观性
+4. **前端纯静态实现** - 使用原生JavaScript实现,无后端交互,无真实数据存储
+
+### 功能实现约束
+- **筛选功能**: 只需要实现UI交互(下拉框、选择、按钮点击),筛选结果可以是模拟的视觉反馈
+- **表单提交**: 只需要显示成功提示,无需真实提交数据
+- **数据展示**: 使用硬编码的模拟数据,无需动态数据加载
+- **状态管理**: 只需要维护页面内的UI状态,无需持久化存储
+
+### 技术实现要求
+- 使用原生HTML/CSS/JavaScript,无外部框架依赖
+- 实现Tab系统的完整交互体验
+- 保持代码清晰简洁,便于理解和演示
+- 确保所有UI元素位置准确,符合设计要求
+
+---
+
+## 项目概述
+**这是一个DEMO项目,主要用于展示页面元素布局和交互功能,不强调样式美观性,重点在于元素摆放位置的准确性和功能完整性。**
+
+这是一个中文商户后台管理系统的演示项目,采用了现代化的前端设计和Tab标签页架构。项目采用左中布局,左侧固定侧边栏,中央区域使用Tab系统展示会员管理功能。
+
+## 项目架构说明
+
+### 文件结构 (2025-07-30 最新更新)
+```
+chinese-merchant-dashboard/
+├── index.html                    # 主页面(导航入口)
+├── css/
+│   └── styles.css               # 全局样式文件(包含Tab样式)
+├── js/
+│   ├── main.js                  # 主页面逻辑(简化版)
+│   ├── common.js               # 通用工具函数和组件
+│   ├── sidebar.js              # 侧边栏通用逻辑
+│   ├── member-tabs.js          # 会员管理Tab系统核心逻辑
+│   └── pages/                  # 页面专用JS文件目录
+│       ├── level-settings.js   # 等级设置Tab页面逻辑
+│       ├── data-center.js      # 数据中心页面逻辑
+│       └── coupon-marketing.js # 优惠券营销页面逻辑
+└── pages/
+    ├── data-center.html        # 数据中心页面
+    ├── coupon-marketing.html   # 优惠券营销工具管理页面
+    └── member/                 # 会员管理模块
+        ├── level-settings.html # 等级设置页面(Tab容器)
+        ├── level-detail.html   # 等级详情页面(已弃用)
+        └── level-edit.html     # 等级编辑页面(已弃用)
+```
+
+### 设计原则
+1. **功能展示优先**: 重点展示功能完整性而非视觉效果
+2. **元素位置准确**: 严格按照需求放置UI元素
+3. **Tab系统架构**: 会员管理采用Tab标签页,提升用户体验
+4. **演示友好**: 便于展示不同功能模块的交互效果
+
+## 实现约束追加说明
+
+### 项目实验性约束
+- **演示优先原则**: 所有功能仅作为交互和UI展示的占位实现
+- **极简主义设计**: 代码和功能追求最小必要实现
+- **可视化交互重点**: 重点关注用户交互流程和界面响应
+- **模拟数据填充**: 所有数据均为硬编码模拟数据,无真实业务逻辑
+
+### 代码与功能约束
+- 所有JS交互仅模拟实际效果,不涉及真实数据处理
+- 表单提交、筛选功能均为本地模拟交互
+- 开关、弹窗等组件仅展示交互流程
+- 代码保持高可读性和最小依赖原则
+
+### 功能模拟策略
+- UI交互全部通过JavaScript模拟实现
+- 数据展示使用静态、可预测的模拟数据
+- 表单验证仅展示交互流程,不进行实质性数据校验
+- 状态管理仅维持页面内临时状态
+
+### 技术限制
+- 严格使用原生Web技术栈
+- 禁止引入任何外部框架和类库
+- 代码实现追求极简和直观
+- 所有功能通过原生JavaScript实现用户交互
+
+---
+*文档更新时间: 2025-07-30*
+*项目状态: 完成DEMO项目实现约束补充说明*
+*最新特性: 详细阐述项目的实验性约束和功能模拟策略*
\ No newline at end of file
diff --git a/merchant/README.md b/merchant/README.md
new file mode 100644
index 0000000..01cd2b0
--- /dev/null
+++ b/merchant/README.md
@@ -0,0 +1,116 @@
+# 大数集市商户端 Demo
+
+这是一个纯HTML版本的中文商户后台管理系统演示项目,基于原始的Next.js项目转换而来。
+
+## 项目结构
+
+```
+demo/
+├── index.html          # 主页面文件
+├── css/
+│   └── styles.css      # 样式文件
+├── js/
+│   └── main.js         # JavaScript交互逻辑
+├── images/             # 静态资源文件
+│   ├── placeholder.svg
+│   ├── placeholder.png
+│   └── ...
+└── README.md           # 说明文档
+```
+
+## 功能特性
+
+### ✅ 已实现功能
+
+1. **完整的页面布局**
+   - 绿色主题的顶部导航栏
+   - 左侧折叠式菜单
+   - 右侧主内容区域
+
+2. **交互功能**
+   - 菜单展开/收起动画
+   - 页面内容切换(如等级设置页面)
+   - 开关按钮的切换效果
+   - 搜索菜单功能
+
+3. **响应式设计**
+   - 支持桌面端和移动端布局
+   - 自适应屏幕大小
+
+4. **用户体验**
+   - 平滑的动画过渡效果
+   - 键盘快捷键支持(ESC回首页,Ctrl+F搜索)
+   - 通知提示系统
+
+### 🎯 主要页面
+
+- **首页**: 默认欢迎页面
+- **等级设置**: 会员等级管理表格,包含开关切换功能
+
+### 🔧 菜单项
+
+- 首页
+- 运营管理(可展开)
+- 数据中心
+- 优惠券营销工具管理
+- 预售营销工具管理
+- 会员管理(可展开,包含等级设置等子菜单)
+- 钱包管理(可展开)
+- 运费管理(可展开)
+
+## 使用方法
+
+1. **直接打开**
+   ```bash
+   # 在浏览器中打开
+   open index.html
+   # 或者
+   double-click index.html
+   ```
+
+2. **本地服务器运行**(推荐)
+   ```bash
+   # 使用Python
+   python -m http.server 8000
+   # 或使用Node.js
+   npx serve .
+   # 然后访问 http://localhost:8000
+   ```
+
+## 技术实现
+
+- **HTML5**: 语义化标签结构
+- **CSS3**: 基于Tailwind CSS的样式系统,包含自定义动画
+- **JavaScript ES6+**: 原生JS实现所有交互功能
+- **响应式设计**: 适配不同设备屏幕
+
+## 浏览器兼容性
+
+- Chrome 60+
+- Firefox 55+
+- Safari 12+
+- Edge 79+
+
+## 快捷键
+
+- `ESC`: 返回首页
+- `Ctrl+F`: 聚焦搜索框
+
+## 定制说明
+
+如需修改样式或功能,可以编辑以下文件:
+- `css/styles.css`: 修改样式
+- `js/main.js`: 修改交互逻辑
+- `index.html`: 修改页面结构
+
+## 注意事项
+
+1. 这是一个静态演示版本,所有数据都是模拟数据
+2. 开关切换、按钮点击等操作只有视觉反馈,不会实际提交数据
+3. 为了演示效果,保留了完整的交互逻辑和动画效果
+
+## 原项目信息
+
+- 原技术栈: Next.js + React + Tailwind CSS + shadcn/ui
+- 转换时间: 2025年
+- 转换方式: 手动转换为纯HTML/CSS/JS
\ No newline at end of file
diff --git a/merchant/css/styles.css b/merchant/css/styles.css
new file mode 100644
index 0000000..8054eb1
--- /dev/null
+++ b/merchant/css/styles.css
@@ -0,0 +1,1073 @@
+/* Reset and Base Styles */
+* {
+    margin: 0;
+    padding: 0;
+    box-sizing: border-box;
+}
+
+body {
+    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
+    line-height: 1.5;
+    color: #111827;
+    background-color: #f9fafb;
+}
+
+/* Utility Classes */
+.min-h-screen {
+    min-height: 100vh;
+}
+
+.bg-gray-50 {
+    background-color: #f9fafb;
+}
+
+.bg-green-700 {
+    background-color: #15803d;
+}
+
+.bg-green-600 {
+    background-color: #16a34a;
+}
+
+.bg-white {
+    background-color: #ffffff;
+}
+
+.bg-gray-100 {
+    background-color: #f3f4f6;
+}
+
+.bg-gray-200 {
+    background-color: #e5e7eb;
+}
+
+.bg-gray-300 {
+    background-color: #d1d5db;
+}
+
+.text-white {
+    color: #ffffff;
+}
+
+.text-gray-500 {
+    color: #6b7280;
+}
+
+.text-gray-600 {
+    color: #4b5563;
+}
+
+.text-gray-700 {
+    color: #374151;
+}
+
+.text-gray-900 {
+    color: #111827;
+}
+
+.text-blue-500 {
+    color: #3b82f6;
+}
+
+.text-green-600 {
+    color: #16a34a;
+}
+
+.text-green-900 {
+    color: #14532d;
+}
+
+.px-4 {
+    padding-left: 1rem;
+    padding-right: 1rem;
+}
+
+.py-3 {
+    padding-top: 0.75rem;
+    padding-bottom: 0.75rem;
+}
+
+.py-2 {
+    padding-top: 0.5rem;
+    padding-bottom: 0.5rem;
+}
+
+.py-2\.5 {
+    padding-top: 0.625rem;
+    padding-bottom: 0.625rem;
+}
+
+.py-4 {
+    padding-top: 1rem;
+    padding-bottom: 1rem;
+}
+
+.py-6 {
+    padding-top: 1.5rem;
+    padding-bottom: 1.5rem;
+}
+
+.px-3 {
+    padding-left: 0.75rem;
+    padding-right: 0.75rem;
+}
+
+.px-6 {
+    padding-left: 1.5rem;
+    padding-right: 1.5rem;
+}
+
+.p-2 {
+    padding: 0.5rem;
+}
+
+.p-3 {
+    padding: 0.75rem;
+}
+
+.p-6 {
+    padding: 1.5rem;
+}
+
+.flex {
+    display: flex;
+}
+
+.items-center {
+    align-items: center;
+}
+
+.justify-between {
+    justify-content: space-between;
+}
+
+.justify-center {
+    justify-content: center;
+}
+
+.gap-2 {
+    gap: 0.5rem;
+}
+
+.gap-3 {
+    gap: 0.75rem;
+}
+
+.gap-4 {
+    gap: 1rem;
+}
+
+.text-lg {
+    font-size: 1.125rem;
+    line-height: 1.75rem;
+}
+
+.text-sm {
+    font-size: 0.875rem;
+    line-height: 1.25rem;
+}
+
+.text-xs {
+    font-size: 0.75rem;
+    line-height: 1rem;
+}
+
+.font-medium {
+    font-weight: 500;
+}
+
+.h-4 {
+    height: 1rem;
+}
+
+.w-4 {
+    width: 1rem;
+}
+
+.h-3 {
+    height: 0.75rem;
+}
+
+.w-3 {
+    width: 0.75rem;
+}
+
+.h-8 {
+    height: 2rem;
+}
+
+.w-8 {
+    width: 2rem;
+}
+
+.h-16 {
+    height: 4rem;
+}
+
+.w-9 {
+    width: 2.25rem;
+}
+
+.h-4 {
+    height: 1rem;
+}
+
+.w-4 {
+    width: 1rem;
+}
+
+.after\:h-4::after {
+    height: 1rem;
+}
+
+.after\:w-4::after {
+    width: 1rem;
+}
+
+.peer-focus\:ring-2:focus ~ .peer-focus\:ring-2 {
+    box-shadow: 0 0 0 2px;
+}
+
+.peer-focus\:ring-green-300:focus ~ .peer-focus\:ring-green-300 {
+    box-shadow: 0 0 0 2px rgba(134, 239, 172, 0.5);
+}
+
+.w-16 {
+    width: 4rem;
+}
+
+.bg-gray-100 {
+    background-color: #f3f4f6;
+}
+
+.h-96 {
+    height: 24rem;
+}
+
+.h-full {
+    height: 100%;
+}
+
+.w-full {
+    width: 100%;
+}
+
+.w-48 {
+    width: 12rem;
+}
+
+.w-11 {
+    width: 2.75rem;
+}
+
+.h-6 {
+    height: 1.5rem;
+}
+
+.h-5 {
+    height: 1.25rem;
+}
+
+.w-5 {
+    width: 1.25rem;
+}
+
+.rounded-md {
+    border-radius: 0.375rem;
+}
+
+.rounded-lg {
+    border-radius: 0.5rem;
+}
+
+.rounded-full {
+    border-radius: 9999px;
+}
+
+.border {
+    border-width: 1px;
+}
+
+.border-r {
+    border-right-width: 1px;
+}
+
+.border-b {
+    border-bottom-width: 1px;
+}
+
+.border-l-2 {
+    border-left-width: 2px;
+}
+
+.border-gray-200 {
+    border-color: #e5e7eb;
+}
+
+.border-gray-100 {
+    border-color: #f3f4f6;
+}
+
+.border-gray-300 {
+    border-color: #d1d5db;
+}
+
+.border-green-500 {
+    border-color: #22c55e;
+}
+
+.shadow-sm {
+    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
+}
+
+.cursor-pointer {
+    cursor: pointer;
+}
+
+.select-none {
+    user-select: none;
+}
+
+.space-y-1 > * + * {
+    margin-top: 0.25rem;
+}
+
+.flex-1 {
+    flex: 1 1 0%;
+}
+
+.transition-transform {
+    transition-property: transform;
+    transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
+    transition-duration: 150ms;
+}
+
+.transition-colors {
+    transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
+    transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
+    transition-duration: 150ms;
+}
+
+.rotate-180 {
+    transform: rotate(180deg);
+}
+
+.ml-4 {
+    margin-left: 1rem;
+}
+
+.mt-2 {
+    margin-top: 0.5rem;
+}
+
+.mb-4 {
+    margin-bottom: 1rem;
+}
+
+.mx-auto {
+    margin-left: auto;
+    margin-right: auto;
+}
+
+.text-center {
+    text-align: center;
+}
+
+.text-left {
+    text-align: left;
+}
+
+.uppercase {
+    text-transform: uppercase;
+}
+
+.tracking-wider {
+    letter-spacing: 0.05em;
+}
+
+.whitespace-nowrap {
+    white-space: nowrap;
+}
+
+.overflow-x-auto {
+    overflow-x: auto;
+}
+
+.divide-y > * + * {
+    border-top-width: 1px;
+}
+
+.divide-gray-200 > * + * {
+    border-color: #e5e7eb;
+}
+
+.sr-only {
+    position: absolute;
+    width: 1px;
+    height: 1px;
+    padding: 0;
+    margin: -1px;
+    overflow: hidden;
+    clip: rect(0, 0, 0, 0);
+    white-space: nowrap;
+    border: 0;
+}
+
+.peer:checked ~ .peer-checked\:bg-green-600 {
+    background-color: #16a34a;
+}
+
+.peer-checked\:after\:translate-x-full {
+    content: '';
+}
+
+.peer:checked ~ .peer-checked\:after\:translate-x-full::after {
+    transform: translateX(100%);
+}
+
+.peer-checked\:after\:border-white::after {
+    border-color: #ffffff;
+}
+
+.after\:content-\[\'\'\]::after {
+    content: '';
+}
+
+.after\:absolute::after {
+    position: absolute;
+}
+
+.after\:top-\[2px\]::after {
+    top: 2px;
+}
+
+.after\:left-\[2px\]::after {
+    left: 2px;
+}
+
+.after\:bg-white::after {
+    background-color: #ffffff;
+}
+
+.after\:border-gray-300::after {
+    border-color: #d1d5db;
+}
+
+.after\:border::after {
+    border-width: 1px;
+}
+
+.after\:rounded-full::after {
+    border-radius: 9999px;
+}
+
+.after\:h-5::after {
+    height: 1.25rem;
+}
+
+.after\:w-5::after {
+    width: 1.25rem;
+}
+
+.after\:transition-all::after {
+    transition-property: all;
+    transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
+    transition-duration: 150ms;
+}
+
+.peer-focus\:outline-none:focus ~ .peer-focus\:outline-none {
+    outline: 2px solid transparent;
+    outline-offset: 2px;
+}
+
+.peer-focus\:ring-4:focus ~ .peer-focus\:ring-4 {
+    box-shadow: 0 0 0 4px;
+}
+
+.peer-focus\:ring-green-300:focus ~ .peer-focus\:ring-green-300 {
+    box-shadow: 0 0 0 4px rgba(134, 239, 172, 0.5);
+}
+
+.min-h-\[calc\(100vh-60px\)\] {
+    min-height: calc(100vh - 60px);
+}
+
+.relative {
+    position: relative;
+}
+
+.inline-flex {
+    display: inline-flex;
+}
+
+.absolute {
+    position: absolute;
+}
+
+.top-\[2px\] {
+    top: 2px;
+}
+
+.left-\[2px\] {
+    left: 2px;
+}
+
+.hidden {
+    display: none;
+}
+
+/* Hover Effects */
+.hover\:bg-gray-50:hover {
+    background-color: #f9fafb;
+}
+
+.hover\:bg-gray-100:hover {
+    background-color: #f3f4f6;
+}
+
+.bg-red-600 {
+    background-color: #dc2626;
+}
+
+.hover\:bg-red-700:hover {
+    background-color: #b91c1c;
+}
+
+.hover\:bg-green-700:hover {
+    background-color: #15803d;
+}
+
+.hover\:text-green-900:hover {
+    color: #14532d;
+}
+
+/* Focus Effects */
+.focus\:border-green-500:focus {
+    border-color: #22c55e;
+}
+
+.focus\:outline-none:focus {
+    outline: 2px solid transparent;
+    outline-offset: 2px;
+}
+
+/* Custom Toggle Switch Styles */
+.toggle-switch {
+    position: relative;
+    display: inline-block;
+    width: 44px;
+    height: 24px;
+}
+
+.toggle-switch input {
+    opacity: 0;
+    width: 0;
+    height: 0;
+}
+
+.toggle-slider {
+    position: absolute;
+    cursor: pointer;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    background-color: #e5e7eb;
+    transition: .4s;
+    border-radius: 24px;
+}
+
+.toggle-slider:before {
+    position: absolute;
+    content: "";
+    height: 20px;
+    width: 20px;
+    left: 2px;
+    top: 2px;
+    background-color: white;
+    transition: .4s;
+    border-radius: 50%;
+    border: 1px solid #d1d5db;
+}
+
+input:checked + .toggle-slider {
+    background-color: #16a34a;
+}
+
+input:focus + .toggle-slider {
+    box-shadow: 0 0 0 4px rgba(134, 239, 172, 0.3);
+}
+
+input:checked + .toggle-slider:before {
+    transform: translateX(20px);
+    border-color: white;
+}
+
+/* Table Styles */
+table {
+    border-collapse: collapse;
+}
+
+thead th {
+    background-color: #f9fafb;
+    font-weight: 500;
+    text-transform: uppercase;
+    letter-spacing: 0.05em;
+    font-size: 0.75rem;
+    color: #6b7280;
+    padding: 0.75rem 1.5rem;
+    text-align: left;
+}
+
+tbody td {
+    padding: 1rem 1.5rem;
+    border-top: 1px solid #e5e7eb;
+    font-size: 0.875rem;
+}
+
+tbody tr:hover {
+    background-color: #f9fafb;
+}
+
+/* Button Styles */
+button {
+    border: none;
+    background: none;
+    cursor: pointer;
+    font-family: inherit;
+}
+
+/* Input Styles */
+input[type="text"] {
+    border: 1px solid #e5e7eb;
+    border-radius: 0.375rem;
+    padding: 0.5rem 0.75rem;
+    font-size: 0.875rem;
+    width: 100%;
+    transition: border-color 0.15s ease;
+}
+
+input[type="text"]:focus {
+    outline: none;
+    border-color: #22c55e;
+}
+
+/* Animation */
+@keyframes fadeIn {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+
+.fade-in {
+    animation: fadeIn 0.3s ease-in;
+}
+
+/* 小开关样式 - 用于等级编辑页面 */
+.small-toggle input[type="checkbox"]:checked + div {
+    background-color: #16a34a !important;
+}
+
+.small-toggle input[type="checkbox"]:checked + div:after {
+    transform: translateX(1rem) !important;
+    border-color: white !important;
+}
+
+.small-toggle div {
+    background-color: #e5e7eb;
+    transition: all 0.3s ease;
+}
+
+.small-toggle div:after {
+    content: '';
+    position: absolute;
+    top: 2px;
+    left: 2px;
+    background-color: white;
+    border: 1px solid #d1d5db;
+    border-radius: 50%;
+    height: 1rem;
+    width: 1rem;
+    transition: all 0.3s ease;
+}
+
+/* Tab样式 */
+.tab-item {
+    border-bottom: 2px solid transparent;
+    transition: all 0.2s ease;
+}
+
+.tab-item:hover {
+    color: #374151;
+    background-color: #f9fafb;
+}
+
+.tab-item.active {
+    border-bottom-color: #22c55e;
+    color: #16a34a;
+}
+
+/* 输入框样式 */
+input[type="number"] {
+    border: 1px solid #d1d5db;
+    border-radius: 0.25rem;
+    padding: 0.25rem 0.5rem;
+    font-size: 0.875rem;
+    line-height: 1.25rem;
+    transition: border-color 0.15s ease;
+}
+
+input[type="number"]:focus {
+    outline: none;
+    border-color: #22c55e;
+    box-shadow: 0 0 0 1px #22c55e;
+}
+
+input[type="number"]:disabled {
+    background-color: #f3f4f6;
+    color: #9ca3af;
+    cursor: not-allowed;
+}
+
+/* 按钮样式 */
+.btn-green {
+    background-color: #16a34a;
+    color: white;
+    padding: 0.5rem 1rem;
+    border-radius: 0.375rem;
+    font-size: 0.875rem;
+    font-weight: 500;
+    transition: background-color 0.15s ease;
+    border: none;
+    cursor: pointer;
+}
+
+.btn-green:hover {
+    background-color: #15803d;
+}
+
+.btn-gray {
+    background-color: #6b7280;
+    color: white;
+    padding: 0.5rem 1rem;
+    border-radius: 0.375rem;
+    font-size: 0.875rem;
+    font-weight: 500;
+    transition: background-color 0.15s ease;
+    border: none;
+    cursor: pointer;
+}
+
+.btn-gray:hover {
+    background-color: #4b5563;
+}
+@media (max-width: 768px) {
+    .w-48 {
+        width: 100%;
+    }
+    
+    .flex {
+        flex-direction: column;
+    }
+    
+    .min-h-\[calc\(100vh-60px\)\] {
+        min-height: auto;
+    }
+}
+
+/* 弹窗样式 */
+.fixed {
+    position: fixed;
+}
+
+.inset-0 {
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+}
+
+.bg-black {
+    background-color: #000000;
+}
+
+.bg-opacity-50 {
+    background-color: rgba(0, 0, 0, 0.5);
+}
+
+.z-50 {
+    z-index: 50;
+}
+
+.w-96 {
+    width: 24rem;
+}
+
+.max-w-md {
+    max-width: 28rem;
+}
+
+.mx-4 {
+    margin-left: 1rem;
+    margin-right: 1rem;
+}
+
+.space-y-4 > * + * {
+    margin-top: 1rem;
+}
+
+.mb-1 {
+    margin-bottom: 0.25rem;
+}
+
+.ml-2 {
+    margin-left: 0.5rem;
+}
+
+.border-t-0 {
+    border-top-width: 0;
+}
+
+.rounded-t {
+    border-top-left-radius: 0.25rem;
+    border-top-right-radius: 0.25rem;
+}
+
+.rounded-b {
+    border-bottom-left-radius: 0.25rem;
+    border-bottom-right-radius: 0.25rem;
+}
+
+.text-red-500 {
+    color: #ef4444;
+}
+
+.bg-blue-600 {
+    background-color: #2563eb;
+}
+
+.hover\:bg-blue-700:hover {
+    background-color: #1d4ed8;
+}
+
+.hover\:bg-gray-200:hover {
+    background-color: #e5e7eb;
+}
+
+.text-gray-400 {
+    color: #9ca3af;
+}
+
+.hover\:text-gray-600:hover {
+    color: #4b5563;
+}
+
+.focus\:ring-2:focus {
+    box-shadow: 0 0 0 2px;
+}
+
+.focus\:ring-green-500:focus {
+    box-shadow: 0 0 0 2px rgba(34, 197, 94, 0.5);
+}
+
+.focus\:border-green-500:focus {
+    border-color: #22c55e;
+}
+
+/* 弹窗动画 */
+@keyframes modalFadeIn {
+    from {
+        opacity: 0;
+        transform: scale(0.95);
+    }
+    to {
+        opacity: 1;
+        transform: scale(1);
+    }
+}
+
+.modal-content {
+    animation: modalFadeIn 0.2s ease-out;
+}
+
+/* 数字输入框调节按钮 */
+.number-adjuster {
+    display: flex;
+    flex-direction: column;
+}
+
+.number-adjuster button {
+    padding: 0.25rem 0.5rem;
+    font-size: 0.75rem;
+    line-height: 1rem;
+    background-color: #f3f4f6;
+    border: 1px solid #d1d5db;
+    transition: background-color 0.15s ease;
+}
+
+.number-adjuster button:hover {
+    background-color: #e5e7eb;
+}
+
+.number-adjuster button:first-child {
+    border-top-left-radius: 0.25rem;
+    border-top-right-radius: 0.25rem;
+}
+
+.number-adjuster button:last-child {
+    border-bottom-left-radius: 0.25rem;
+    border-bottom-right-radius: 0.25rem;
+    border-top-width: 0;
+}
+
+/* 网格布局 */
+.grid {
+    display: grid;
+}
+
+.grid-cols-1 {
+    grid-template-columns: repeat(1, minmax(0, 1fr));
+}
+
+.grid-cols-2 {
+    grid-template-columns: repeat(2, minmax(0, 1fr));
+}
+
+.grid-cols-4 {
+    grid-template-columns: repeat(4, minmax(0, 1fr));
+}
+
+@media (min-width: 768px) {
+    .md\:grid-cols-2 {
+        grid-template-columns: repeat(2, minmax(0, 1fr));
+    }
+    
+    .md\:grid-cols-4 {
+        grid-template-columns: repeat(4, minmax(0, 1fr));
+    }
+}
+
+/* 间距工具 */
+.space-x-2 > * + * {
+    margin-left: 0.5rem;
+}
+
+.space-x-4 > * + * {
+    margin-left: 1rem;
+}
+
+/* 徽章样式 */
+.bg-blue-100 {
+    background-color: #dbeafe;
+}
+
+.text-blue-800 {
+    color: #1e40af;
+}
+
+.bg-purple-100 {
+    background-color: #ede9fe;
+}
+
+.text-purple-800 {
+    color: #5b21b6;
+}
+
+.bg-blue-50 {
+    background-color: #eff6ff;
+}
+
+.text-blue-600 {
+    color: #2563eb;
+}
+
+.text-blue-900 {
+    color: #1e3a8a;
+}
+
+.border-blue-200 {
+    border-color: #bfdbfe;
+}
+
+.bg-green-50 {
+    background-color: #f0fdf4;
+}
+
+.border-green-200 {
+    border-color: #bbf7d0;
+}
+
+.text-green-900 {
+    color: #14532d;
+}
+
+.text-2xl {
+    font-size: 1.5rem;
+    line-height: 2rem;
+}
+
+.font-bold {
+    font-weight: 700;
+}
+
+.flex-shrink-0 {
+    flex-shrink: 0;
+}
+
+.rounded-full {
+    border-radius: 9999px;
+}
+
+.px-2\.5 {
+    padding-left: 0.625rem;
+    padding-right: 0.625rem;
+}
+
+.py-0\.5 {
+    padding-top: 0.125rem;
+    padding-bottom: 0.125rem;
+}
+
+.font-mono {
+    font-family: ui-monospace, SFMono-Regular, "SF Mono", Consolas, "Liberation Mono", Menlo, monospace;
+}
+
+.inline-block {
+    display: inline-block;
+}
+
+.ml-1 {
+    margin-left: 0.25rem;
+}
+
+.w-12 {
+    width: 3rem;
+}
+
+.text-center {
+    text-align: center;
+}
+
+.sm\:px-6 {
+    padding-left: 1.5rem;
+    padding-right: 1.5rem;
+}
+
+.border-t {
+    border-top-width: 1px;
+}
+
+.overflow-hidden {
+    overflow: hidden;
+}
+
+.shadow-sm {
+    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
+}
+
+.focus\:border-green-500:focus {
+    border-color: #22c55e;
+}
+
+.focus\:ring-green-500:focus {
+    box-shadow: 0 0 0 1px #22c55e;
+}
\ No newline at end of file
diff --git a/merchant/demo/README.md b/merchant/demo/README.md
new file mode 100644
index 0000000..01cd2b0
--- /dev/null
+++ b/merchant/demo/README.md
@@ -0,0 +1,116 @@
+# 大数集市商户端 Demo
+
+这是一个纯HTML版本的中文商户后台管理系统演示项目,基于原始的Next.js项目转换而来。
+
+## 项目结构
+
+```
+demo/
+├── index.html          # 主页面文件
+├── css/
+│   └── styles.css      # 样式文件
+├── js/
+│   └── main.js         # JavaScript交互逻辑
+├── images/             # 静态资源文件
+│   ├── placeholder.svg
+│   ├── placeholder.png
+│   └── ...
+└── README.md           # 说明文档
+```
+
+## 功能特性
+
+### ✅ 已实现功能
+
+1. **完整的页面布局**
+   - 绿色主题的顶部导航栏
+   - 左侧折叠式菜单
+   - 右侧主内容区域
+
+2. **交互功能**
+   - 菜单展开/收起动画
+   - 页面内容切换(如等级设置页面)
+   - 开关按钮的切换效果
+   - 搜索菜单功能
+
+3. **响应式设计**
+   - 支持桌面端和移动端布局
+   - 自适应屏幕大小
+
+4. **用户体验**
+   - 平滑的动画过渡效果
+   - 键盘快捷键支持(ESC回首页,Ctrl+F搜索)
+   - 通知提示系统
+
+### 🎯 主要页面
+
+- **首页**: 默认欢迎页面
+- **等级设置**: 会员等级管理表格,包含开关切换功能
+
+### 🔧 菜单项
+
+- 首页
+- 运营管理(可展开)
+- 数据中心
+- 优惠券营销工具管理
+- 预售营销工具管理
+- 会员管理(可展开,包含等级设置等子菜单)
+- 钱包管理(可展开)
+- 运费管理(可展开)
+
+## 使用方法
+
+1. **直接打开**
+   ```bash
+   # 在浏览器中打开
+   open index.html
+   # 或者
+   double-click index.html
+   ```
+
+2. **本地服务器运行**(推荐)
+   ```bash
+   # 使用Python
+   python -m http.server 8000
+   # 或使用Node.js
+   npx serve .
+   # 然后访问 http://localhost:8000
+   ```
+
+## 技术实现
+
+- **HTML5**: 语义化标签结构
+- **CSS3**: 基于Tailwind CSS的样式系统,包含自定义动画
+- **JavaScript ES6+**: 原生JS实现所有交互功能
+- **响应式设计**: 适配不同设备屏幕
+
+## 浏览器兼容性
+
+- Chrome 60+
+- Firefox 55+
+- Safari 12+
+- Edge 79+
+
+## 快捷键
+
+- `ESC`: 返回首页
+- `Ctrl+F`: 聚焦搜索框
+
+## 定制说明
+
+如需修改样式或功能,可以编辑以下文件:
+- `css/styles.css`: 修改样式
+- `js/main.js`: 修改交互逻辑
+- `index.html`: 修改页面结构
+
+## 注意事项
+
+1. 这是一个静态演示版本,所有数据都是模拟数据
+2. 开关切换、按钮点击等操作只有视觉反馈,不会实际提交数据
+3. 为了演示效果,保留了完整的交互逻辑和动画效果
+
+## 原项目信息
+
+- 原技术栈: Next.js + React + Tailwind CSS + shadcn/ui
+- 转换时间: 2025年
+- 转换方式: 手动转换为纯HTML/CSS/JS
\ No newline at end of file
diff --git a/merchant/demo/css/styles.css b/merchant/demo/css/styles.css
new file mode 100644
index 0000000..7175439
--- /dev/null
+++ b/merchant/demo/css/styles.css
@@ -0,0 +1,638 @@
+/* Reset and Base Styles */
+* {
+    margin: 0;
+    padding: 0;
+    box-sizing: border-box;
+}
+
+body {
+    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
+    line-height: 1.5;
+    color: #111827;
+    background-color: #f9fafb;
+}
+
+/* Utility Classes */
+.min-h-screen {
+    min-height: 100vh;
+}
+
+.bg-gray-50 {
+    background-color: #f9fafb;
+}
+
+.bg-green-700 {
+    background-color: #15803d;
+}
+
+.bg-green-600 {
+    background-color: #16a34a;
+}
+
+.bg-white {
+    background-color: #ffffff;
+}
+
+.bg-gray-100 {
+    background-color: #f3f4f6;
+}
+
+.bg-gray-200 {
+    background-color: #e5e7eb;
+}
+
+.bg-gray-300 {
+    background-color: #d1d5db;
+}
+
+.text-white {
+    color: #ffffff;
+}
+
+.text-gray-500 {
+    color: #6b7280;
+}
+
+.text-gray-600 {
+    color: #4b5563;
+}
+
+.text-gray-700 {
+    color: #374151;
+}
+
+.text-gray-900 {
+    color: #111827;
+}
+
+.text-blue-500 {
+    color: #3b82f6;
+}
+
+.text-green-600 {
+    color: #16a34a;
+}
+
+.text-green-900 {
+    color: #14532d;
+}
+
+.px-4 {
+    padding-left: 1rem;
+    padding-right: 1rem;
+}
+
+.py-3 {
+    padding-top: 0.75rem;
+    padding-bottom: 0.75rem;
+}
+
+.py-2 {
+    padding-top: 0.5rem;
+    padding-bottom: 0.5rem;
+}
+
+.py-2\.5 {
+    padding-top: 0.625rem;
+    padding-bottom: 0.625rem;
+}
+
+.py-4 {
+    padding-top: 1rem;
+    padding-bottom: 1rem;
+}
+
+.py-6 {
+    padding-top: 1.5rem;
+    padding-bottom: 1.5rem;
+}
+
+.px-3 {
+    padding-left: 0.75rem;
+    padding-right: 0.75rem;
+}
+
+.px-6 {
+    padding-left: 1.5rem;
+    padding-right: 1.5rem;
+}
+
+.p-2 {
+    padding: 0.5rem;
+}
+
+.p-3 {
+    padding: 0.75rem;
+}
+
+.p-6 {
+    padding: 1.5rem;
+}
+
+.flex {
+    display: flex;
+}
+
+.items-center {
+    align-items: center;
+}
+
+.justify-between {
+    justify-content: space-between;
+}
+
+.justify-center {
+    justify-content: center;
+}
+
+.gap-2 {
+    gap: 0.5rem;
+}
+
+.gap-3 {
+    gap: 0.75rem;
+}
+
+.gap-4 {
+    gap: 1rem;
+}
+
+.text-lg {
+    font-size: 1.125rem;
+    line-height: 1.75rem;
+}
+
+.text-sm {
+    font-size: 0.875rem;
+    line-height: 1.25rem;
+}
+
+.text-xs {
+    font-size: 0.75rem;
+    line-height: 1rem;
+}
+
+.font-medium {
+    font-weight: 500;
+}
+
+.h-4 {
+    height: 1rem;
+}
+
+.w-4 {
+    width: 1rem;
+}
+
+.h-3 {
+    height: 0.75rem;
+}
+
+.w-3 {
+    width: 0.75rem;
+}
+
+.h-8 {
+    height: 2rem;
+}
+
+.w-8 {
+    width: 2rem;
+}
+
+.h-16 {
+    height: 4rem;
+}
+
+.w-16 {
+    width: 4rem;
+}
+
+.h-96 {
+    height: 24rem;
+}
+
+.h-full {
+    height: 100%;
+}
+
+.w-full {
+    width: 100%;
+}
+
+.w-48 {
+    width: 12rem;
+}
+
+.w-11 {
+    width: 2.75rem;
+}
+
+.h-6 {
+    height: 1.5rem;
+}
+
+.h-5 {
+    height: 1.25rem;
+}
+
+.w-5 {
+    width: 1.25rem;
+}
+
+.rounded-md {
+    border-radius: 0.375rem;
+}
+
+.rounded-lg {
+    border-radius: 0.5rem;
+}
+
+.rounded-full {
+    border-radius: 9999px;
+}
+
+.border {
+    border-width: 1px;
+}
+
+.border-r {
+    border-right-width: 1px;
+}
+
+.border-b {
+    border-bottom-width: 1px;
+}
+
+.border-l-2 {
+    border-left-width: 2px;
+}
+
+.border-gray-200 {
+    border-color: #e5e7eb;
+}
+
+.border-gray-100 {
+    border-color: #f3f4f6;
+}
+
+.border-gray-300 {
+    border-color: #d1d5db;
+}
+
+.border-green-500 {
+    border-color: #22c55e;
+}
+
+.shadow-sm {
+    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
+}
+
+.cursor-pointer {
+    cursor: pointer;
+}
+
+.select-none {
+    user-select: none;
+}
+
+.space-y-1 > * + * {
+    margin-top: 0.25rem;
+}
+
+.flex-1 {
+    flex: 1 1 0%;
+}
+
+.transition-transform {
+    transition-property: transform;
+    transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
+    transition-duration: 150ms;
+}
+
+.transition-colors {
+    transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
+    transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
+    transition-duration: 150ms;
+}
+
+.rotate-180 {
+    transform: rotate(180deg);
+}
+
+.ml-4 {
+    margin-left: 1rem;
+}
+
+.mt-2 {
+    margin-top: 0.5rem;
+}
+
+.mb-4 {
+    margin-bottom: 1rem;
+}
+
+.mx-auto {
+    margin-left: auto;
+    margin-right: auto;
+}
+
+.text-center {
+    text-align: center;
+}
+
+.text-left {
+    text-align: left;
+}
+
+.uppercase {
+    text-transform: uppercase;
+}
+
+.tracking-wider {
+    letter-spacing: 0.05em;
+}
+
+.whitespace-nowrap {
+    white-space: nowrap;
+}
+
+.overflow-x-auto {
+    overflow-x: auto;
+}
+
+.divide-y > * + * {
+    border-top-width: 1px;
+}
+
+.divide-gray-200 > * + * {
+    border-color: #e5e7eb;
+}
+
+.sr-only {
+    position: absolute;
+    width: 1px;
+    height: 1px;
+    padding: 0;
+    margin: -1px;
+    overflow: hidden;
+    clip: rect(0, 0, 0, 0);
+    white-space: nowrap;
+    border: 0;
+}
+
+.peer:checked ~ .peer-checked\:bg-green-600 {
+    background-color: #16a34a;
+}
+
+.peer-checked\:after\:translate-x-full {
+    content: '';
+}
+
+.peer:checked ~ .peer-checked\:after\:translate-x-full::after {
+    transform: translateX(100%);
+}
+
+.peer-checked\:after\:border-white::after {
+    border-color: #ffffff;
+}
+
+.after\:content-\[\'\'\]::after {
+    content: '';
+}
+
+.after\:absolute::after {
+    position: absolute;
+}
+
+.after\:top-\[2px\]::after {
+    top: 2px;
+}
+
+.after\:left-\[2px\]::after {
+    left: 2px;
+}
+
+.after\:bg-white::after {
+    background-color: #ffffff;
+}
+
+.after\:border-gray-300::after {
+    border-color: #d1d5db;
+}
+
+.after\:border::after {
+    border-width: 1px;
+}
+
+.after\:rounded-full::after {
+    border-radius: 9999px;
+}
+
+.after\:h-5::after {
+    height: 1.25rem;
+}
+
+.after\:w-5::after {
+    width: 1.25rem;
+}
+
+.after\:transition-all::after {
+    transition-property: all;
+    transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
+    transition-duration: 150ms;
+}
+
+.peer-focus\:outline-none:focus ~ .peer-focus\:outline-none {
+    outline: 2px solid transparent;
+    outline-offset: 2px;
+}
+
+.peer-focus\:ring-4:focus ~ .peer-focus\:ring-4 {
+    box-shadow: 0 0 0 4px;
+}
+
+.peer-focus\:ring-green-300:focus ~ .peer-focus\:ring-green-300 {
+    box-shadow: 0 0 0 4px rgba(134, 239, 172, 0.5);
+}
+
+.min-h-\[calc\(100vh-60px\)\] {
+    min-height: calc(100vh - 60px);
+}
+
+.relative {
+    position: relative;
+}
+
+.inline-flex {
+    display: inline-flex;
+}
+
+.absolute {
+    position: absolute;
+}
+
+.top-\[2px\] {
+    top: 2px;
+}
+
+.left-\[2px\] {
+    left: 2px;
+}
+
+.hidden {
+    display: none;
+}
+
+/* Hover Effects */
+.hover\:bg-gray-50:hover {
+    background-color: #f9fafb;
+}
+
+.hover\:bg-gray-100:hover {
+    background-color: #f3f4f6;
+}
+
+.hover\:bg-green-600:hover {
+    background-color: #16a34a;
+}
+
+.hover\:text-green-900:hover {
+    color: #14532d;
+}
+
+/* Focus Effects */
+.focus\:border-green-500:focus {
+    border-color: #22c55e;
+}
+
+.focus\:outline-none:focus {
+    outline: 2px solid transparent;
+    outline-offset: 2px;
+}
+
+/* Custom Toggle Switch Styles */
+.toggle-switch {
+    position: relative;
+    display: inline-block;
+    width: 44px;
+    height: 24px;
+}
+
+.toggle-switch input {
+    opacity: 0;
+    width: 0;
+    height: 0;
+}
+
+.toggle-slider {
+    position: absolute;
+    cursor: pointer;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    background-color: #e5e7eb;
+    transition: .4s;
+    border-radius: 24px;
+}
+
+.toggle-slider:before {
+    position: absolute;
+    content: "";
+    height: 20px;
+    width: 20px;
+    left: 2px;
+    top: 2px;
+    background-color: white;
+    transition: .4s;
+    border-radius: 50%;
+    border: 1px solid #d1d5db;
+}
+
+input:checked + .toggle-slider {
+    background-color: #16a34a;
+}
+
+input:focus + .toggle-slider {
+    box-shadow: 0 0 0 4px rgba(134, 239, 172, 0.3);
+}
+
+input:checked + .toggle-slider:before {
+    transform: translateX(20px);
+    border-color: white;
+}
+
+/* Table Styles */
+table {
+    border-collapse: collapse;
+}
+
+thead th {
+    background-color: #f9fafb;
+    font-weight: 500;
+    text-transform: uppercase;
+    letter-spacing: 0.05em;
+    font-size: 0.75rem;
+    color: #6b7280;
+    padding: 0.75rem 1.5rem;
+    text-align: left;
+}
+
+tbody td {
+    padding: 1rem 1.5rem;
+    border-top: 1px solid #e5e7eb;
+    font-size: 0.875rem;
+}
+
+tbody tr:hover {
+    background-color: #f9fafb;
+}
+
+/* Button Styles */
+button {
+    border: none;
+    background: none;
+    cursor: pointer;
+    font-family: inherit;
+}
+
+/* Input Styles */
+input[type="text"] {
+    border: 1px solid #e5e7eb;
+    border-radius: 0.375rem;
+    padding: 0.5rem 0.75rem;
+    font-size: 0.875rem;
+    width: 100%;
+    transition: border-color 0.15s ease;
+}
+
+input[type="text"]:focus {
+    outline: none;
+    border-color: #22c55e;
+}
+
+/* Animation */
+@keyframes fadeIn {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+
+.fade-in {
+    animation: fadeIn 0.3s ease-in;
+}
+
+/* Responsive */
+@media (max-width: 768px) {
+    .w-48 {
+        width: 100%;
+    }
+    
+    .flex {
+        flex-direction: column;
+    }
+    
+    .min-h-\[calc\(100vh-60px\)\] {
+        min-height: auto;
+    }
+}
\ No newline at end of file
diff --git a/merchant/demo/images/placeholder-logo.png b/merchant/demo/images/placeholder-logo.png
new file mode 100644
index 0000000..8a792ac
Binary files /dev/null and b/merchant/demo/images/placeholder-logo.png differ
diff --git a/merchant/demo/images/placeholder-logo.svg b/merchant/demo/images/placeholder-logo.svg
new file mode 100644
index 0000000..b1695aa
--- /dev/null
+++ b/merchant/demo/images/placeholder-logo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/merchant/demo/images/placeholder-user.jpg b/merchant/demo/images/placeholder-user.jpg
new file mode 100644
index 0000000..6fa7543
Binary files /dev/null and b/merchant/demo/images/placeholder-user.jpg differ
diff --git a/merchant/demo/images/placeholder.jpg b/merchant/demo/images/placeholder.jpg
new file mode 100644
index 0000000..6bfe963
Binary files /dev/null and b/merchant/demo/images/placeholder.jpg differ
diff --git a/merchant/demo/images/placeholder.svg b/merchant/demo/images/placeholder.svg
new file mode 100644
index 0000000..e763910
--- /dev/null
+++ b/merchant/demo/images/placeholder.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/merchant/demo/index.html b/merchant/demo/index.html
new file mode 100644
index 0000000..1ef5645
--- /dev/null
+++ b/merchant/demo/index.html
@@ -0,0 +1,305 @@
+
+
+
+    
+    
+    大数集市商户端
+    
+
+
+    
+        
+        
+            
+                
大数集市商户端
+            
+
+            
+                
+                
+                
+                
+                
+                    用户
+                
+            
+
+        
+            
+            
+
+            
+            
+                
+                
+                    
+                        
+                            
+                            
欢迎使用大数集市商户端
+                            
请从左侧菜单选择功能
+                        
+                    
+                
+                    
+                        
等级设置
+                    
+                    
+                        
+                            
+                                
+                                    | +                                        店铺名称
++ | +                                        是否启用会员
++ | +                                        会员等级
++ | +                                        操作
++ | 
+                            
+                            
+                                
+                                    | 时尚服装店+ | +                                        
++ | lv1, lv2, lv3, lv4+ | +                                        
++ | 
+                                
+                                    | 数码电子城+ | +                                        
++ | lv1, lv2, lv3+ | +                                        
++ | 
+                                
+                                    | 美食餐厅+ | +                                        
++ | lv1, lv2, lv3, lv4+ | +                                        
++ | 
+                                
+                                    | 家居生活馆+ | +                                        
++ | lv1, lv2+ | +                                        
++ | 
+                                
+                                    | 运动健身店+ | +                                        
++ | lv1, lv2, lv3, lv4+ | +                                        
++ | 
+                            
+                        
+                    
+                
+        
+    
+        
+        
+            
+                
大数集市商户端
+            
+
+            
+                
+                
+                
+                
+                
+                    用户
+                
+            
+
+        
+            
+            
+
+            
+            
+                
+                
+                    
+                        
+                            
+                            
欢迎使用大数集市商户端
+                            
请从左侧菜单选择功能
+                        
+                    
+                
+        
+    
+                        
+                            
+                            
会员管理
+                            
请从左侧菜单选择功能
+                        
+                    
+            
+                
等级设置
+            
+            
+            
+            
+                
+                    
+                    
+                        
+                        
+                    
+                
+                
+                    
+                    
+                
+            
+            
+            
+                
+                    
+                        
+                            | +                                摊位名称
++ | +                                是否启用会员
++ | +                                会员等级
++ | +                                操作
++ | 
+                    
+                    
+                        
+                            | 时尚服装店+ | +                                
++ | lv1, lv2, lv3, lv4+ | +                                
++ | 
+                        
+                            | 数码电子城+ | +                                
++ | lv1, lv2, lv3+ | +                                
++ | 
+                        
+                            | 美食餐厅+ | +                                
++ | lv1, lv2, lv3, lv4+ | +                                
++ | 
+                        
+                            | 家居生活馆+ | +                                
++ | lv1, lv2+ | +                                
++ | 
+                        
+                            | 运动健身店+ | +                                
++ | lv1, lv2, lv3, lv4+ | +                                
++ | 
+                    
+                
+            
+        
+            
+                
${shopName} - 等级设置明细
+                
+                    
+                    
+                
+            
+            
+            
+                
+                    
+                        
+                            | 等级名称+ | 所需成长值+ | 会员人数+ | 会员权益+ | 
+                    
+                    
+                        ${mockLevels.map(level => `
+                            
+                                | ${level.name}+ | ${level.growth}+ | ${level.members}+ | ${level.benefits}+ | 
+                        `).join('')}
+                    
+                
+            
+        
+            
+                
${shopName} - 等级编辑
+                
+                    
+                    
+                
+            
+            
+            
+        
+            
+                
批量会员等级编辑
+                
+                    
+                    
+                
+            
+            
+            
+            
+                
+                    
+                    
+                        
+                        
+                            ${stallOptions.map(stall => `
+                                
+                            `).join('')}
+                        
+                        
+                    
+                
+                
+                    
+                
+            
+            
+            
+            
+        
+            
+                
会员列表
+            
+            
+            
+            
+                
+                    
+                        
+                        
+                    
+                    
+                        
+                        
+                    
+                    
+                        
+                        
+                    
+                    
+                        
+                        
+                    
+                
+                
+                    
+                    
+                
+            
+            
+            
+            
+            
+            
+            
+                
+                
+                
+                
+                    
+                        
+                            显示
+                            
+                            条记录,共 1,247 条
+                        
+                        
+                            
+                            
+                            
+                                第  页,共 63 页
+                            
+                            
+                            
+                        
+                    
+                
+            
+        
+            
+                
${tabTitle}
+                
+            
+            
+            
+            
+                
会员信息
+                
+                    
+                        会员名称
+                        ${memberData.name}
+                    
+                    
+                        会员手机号
+                        ${memberData.phone}
+                    
+                    
+                        会员注册日期
+                        ${memberData.registerDate}
+                    
+                    
+                        会员生日
+                        ${memberData.birthday}
+                    
+                
+            
+            
+            
+            
+                
会员资产
+                
+                    
+                        
+                            
+                            
+                                
会员成长值
+                                
${memberData.growth}
+                            
+                        
+                    
+                    
+                        
+                            
+                            
+                                
会员积分
+                                
${memberData.points}
+                            
+                        
+                    
+                    
+                        
+                            
+                            
+                                
会员优惠券
+                                
${memberData.coupons}
+                            
+                        
+                    
+                
+            
+            
+            
+            
+                
+                    
+                
+                
+                
+                
+                    
+                    
+                        
+                            
+                                
+                                    
+                                        | 变化时间+ | 成长值增加+ | 关联订单+ | 详情+ | 
+                                
+                                
+                                    ${growthDetailData.map(item => `
+                                        
+                                            | ${item.time}+ | +${item.growth}+ | ${item.orderId || '无'}+ | +                                                
++ | 
+                                    `).join('')}
+                                
+                            
+                        
+                        
+                        
+                        
+                            
+                                共 ${growthDetailData.length} 条记录
+                            
+                            
+                                
+                                第 1 页,共 1 页
+                                
+                            
+                        
+                    
+                    
+                    
+                    
+                        
+                            
+                                
+                                    
+                                        | 变化时间+ | 积分变化+ | 关联订单+ | 详情+ | 
+                                
+                                
+                                    ${pointDetailData.map(item => `
+                                        
+                                            | ${item.time}+ | ${item.change > 0 ? '+' : ''}${item.change}+ | ${item.orderId || '无'}+ | +                                                
++ | 
+                                    `).join('')}
+                                
+                            
+                        
+                        
+                        
+                        
+                            
+                                共 ${pointDetailData.length} 条记录
+                            
+                            
+                                
+                                第 1 页,共 1 页
+                                
+                            
+                        
+                    
+                
+            
+        
+            
+                
+                    
${memberData.name} - 优惠券列表
+                    
+                
+                
+                
+                    
+                        
+                            
+                                | 优惠券名称+ | 发放日期+ | 有效期+ | 优惠券内容+ | 
+                        
+                        
+                            ${coupons.map(coupon => `
+                                
+                                    | ${coupon.name}+ | ${coupon.issueDate}+ | ${coupon.expiryDate}+ | ${coupon.content}+ | 
+                            `).join('')}
+                        
+                    
+                
+                
+                
+                    
+                
+            
+        
订单详情
+            
+                
+                    订单编号:
+                    ${data.orderId}
+                
+                
+                    订单总金额:
+                    ¥${(Math.random() * 1000 + 100).toFixed(2)}
+                
+                
+                    订单时间:
+                    ${data.time}
+                
+                
+                    订单归属摊位:
+                    ${['时尚服装店', '数码电子城', '美食餐厅', '家居生活馆'][Math.floor(Math.random() * 4)]}
+                
+                
+                    成长值变化:
+                    +${data.growth}
+                
+            
成长值变化详情
+            
+                
+                    变化原因:
+                    ${data.reason}
+                
+                
+                    变化时间:
+                    ${data.time}
+                
+                
+                    成长值增加:
+                    +${data.growth}
+                
+                
+                    ${getGrowthReasonDescription(data.type)}
+                
+            
订单详情
+            
+                
+                    订单编号:
+                    ${data.orderId}
+                
+                
+                    订单总金额:
+                    ¥${(Math.random() * 1000 + 100).toFixed(2)}
+                
+                
+                    订单时间:
+                    ${data.time}
+                
+                
+                    订单归属摊位:
+                    ${['时尚服装店', '数码电子城', '美食餐厅', '家居生活馆'][Math.floor(Math.random() * 4)]}
+                
+                
+                    积分变化:
+                    ${data.change > 0 ? '+' : ''}${data.change}
+                
+                
+                    ${data.change > 0 ? '订单消费获得积分奖励' : '使用积分抵扣订单金额'}
+                
+            
积分变化详情
+            
+                
+                    变化原因:
+                    ${data.reason}
+                
+                
+                    变化时间:
+                    ${data.time}
+                
+                
+                    积分变化:
+                    ${data.change > 0 ? '+' : ''}${data.change}
+                
+                
+                    ${getPointReasonDescription(data.type)}
+                
+            
+            
+                
+                
+                
+                    ${content}
+                
+                
+                
+                    
+                
+            
+        
+            | ${level.name}+ | ${level.growth}+ | ${level.members}+ | ${level.benefits}+ | 
+    `).join('');
+}
+
+// 打开等级编辑页面
+function openLevelEdit() {
+    const encodedShopName = encodeURIComponent(currentShopName);
+    window.location.href = `level-edit.html?shop=${encodedShopName}`;
+}
+
+// 提交等级明细
+function submitLevelDetail() {
+    showNotification(`${currentShopName} 等级明细已提交`, 'success');
+    console.log('提交等级明细:', currentShopName);
+}
+
+// 导出函数
+window.openLevelEdit = openLevelEdit;
+window.submitLevelDetail = submitLevelDetail;
\ No newline at end of file
diff --git a/merchant/js/pages/level-edit.js b/merchant/js/pages/level-edit.js
new file mode 100644
index 0000000..f68d6c3
--- /dev/null
+++ b/merchant/js/pages/level-edit.js
@@ -0,0 +1,323 @@
+// 等级编辑页面的JavaScript逻辑
+
+let currentShopName = '';
+let currentLevels = [];
+
+// 获取URL参数
+function getUrlParameter(name) {
+    name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
+    const regex = new RegExp('[\\?&]' + name + '=([^]*)');
+    const results = regex.exec(location.search);
+    return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
+}
+
+// 页面初始化
+document.addEventListener('DOMContentLoaded', function() {
+    currentShopName = getUrlParameter('shop');
+    if (currentShopName) {
+        document.getElementById('page-title').textContent = `${currentShopName} - 等级编辑`;
+        loadLevelEditData();
+    }
+});
+
+// 加载等级编辑数据
+function loadLevelEditData() {
+    // 模拟等级编辑数据
+    currentLevels = [
+        { 
+            level: 'LV1', 
+            name: '铜牌会员', 
+            growthMin: 0, 
+            growthMax: 100, 
+            memberDiscount: true, 
+            discountRate: 5, 
+            pointExchange: false, 
+            birthdayCoupon: false, 
+            birthdayDoublePoints: false 
+        },
+        { 
+            level: 'LV2', 
+            name: '银牌会员', 
+            growthMin: 101, 
+            growthMax: 500, 
+            memberDiscount: true, 
+            discountRate: 10, 
+            pointExchange: true, 
+            birthdayCoupon: true, 
+            birthdayDoublePoints: true 
+        },
+        { 
+            level: 'LV3', 
+            name: '金牌会员', 
+            growthMin: 501, 
+            growthMax: 1200, 
+            memberDiscount: true, 
+            discountRate: 15, 
+            pointExchange: true, 
+            birthdayCoupon: true, 
+            birthdayDoublePoints: true 
+        },
+        { 
+            level: 'LV4', 
+            name: '钻石会员', 
+            growthMin: 1201, 
+            growthMax: 9999, 
+            memberDiscount: true, 
+            discountRate: 20, 
+            pointExchange: true, 
+            birthdayCoupon: true, 
+            birthdayDoublePoints: true 
+        }
+    ];
+
+    renderLevelEditTable();
+}
+
+// 渲染等级编辑表格
+function renderLevelEditTable() {
+    const tableBody = document.getElementById('level-edit-table-body');
+    tableBody.innerHTML = currentLevels.map((level, index) => `
+        
+            | ${level.level}+ | +                
++ | + +
+                    
+                    -
+                    
+                + | +                
++ | +                
++ | +                
++ | +                
++ | +                
++ | +                
++ | + +
+                    ${index === currentLevels.length - 1 ? `
+                        
+                    ` : ''}
+                    
+                + | 
+    `).join('');
+}
+
+// 切换折扣率输入框状态
+function toggleDiscountRate(index) {
+    const checkbox = document.getElementById(`memberDiscount_${index}`);
+    const discountInput = document.getElementById(`discountRate_${index}`);
+    
+    if (checkbox && discountInput) {
+        if (checkbox.checked) {
+            discountInput.disabled = false;
+            discountInput.classList.remove('bg-gray-100');
+        } else {
+            discountInput.disabled = true;
+            discountInput.classList.add('bg-gray-100');
+        }
+    }
+}
+
+// 切换优惠券按钮显示
+function toggleCouponButton(index) {
+    const checkbox = document.getElementById(`birthdayCoupon_${index}`);
+    const addButton = document.getElementById(`addCouponBtn_${index}`);
+    
+    if (checkbox && addButton) {
+        if (checkbox.checked) {
+            addButton.classList.remove('hidden');
+        } else {
+            addButton.classList.add('hidden');
+        }
+    }
+}
+
+// 添加生日优惠券
+function addBirthdayCoupon(index) {
+    // 显示弹窗
+    const modal = document.getElementById('coupon-modal');
+    if (modal) {
+        modal.classList.remove('hidden');
+        resetCouponForm();
+        console.log('显示添加生日优惠券弹窗,等级索引:', index);
+    }
+}
+
+// 关闭优惠券弹窗
+function closeCouponModal(event) {
+    // 如果点击的是弹窗背景,则关闭弹窗
+    if (event && event.target !== event.currentTarget) {
+        return;
+    }
+    
+    const modal = document.getElementById('coupon-modal');
+    if (modal) {
+        modal.classList.add('hidden');
+        console.log('关闭优惠券弹窗');
+    }
+}
+
+// 重置优惠券表单
+function resetCouponForm() {
+    const form = document.getElementById('coupon-form');
+    if (form) {
+        // 重置为默认值
+        document.getElementById('coupon-name').value = '生日优惠券';
+        document.getElementById('coupon-threshold').value = '10';
+        document.getElementById('coupon-discount').value = '1';
+        document.getElementById('coupon-validity').value = '1';
+    }
+}
+
+// 调整门槛金额
+function adjustThreshold(delta) {
+    const input = document.getElementById('coupon-threshold');
+    if (input) {
+        const currentValue = parseInt(input.value) || 0;
+        const newValue = Math.max(0, currentValue + delta);
+        input.value = newValue;
+    }
+}
+
+// 调整减免金额
+function adjustDiscount(delta) {
+    const input = document.getElementById('coupon-discount');
+    if (input) {
+        const currentValue = parseInt(input.value) || 0;
+        const newValue = Math.max(0, currentValue + delta);
+        input.value = newValue;
+    }
+}
+
+// 提交优惠券
+function submitCoupon() {
+    const form = document.getElementById('coupon-form');
+    if (!form) return;
+    
+    // 获取表单数据
+    const couponData = {
+        name: document.getElementById('coupon-name').value,
+        threshold: document.getElementById('coupon-threshold').value,
+        discount: document.getElementById('coupon-discount').value,
+        validity: document.getElementById('coupon-validity').value
+    };
+    
+    // 验证表单
+    if (!couponData.name.trim()) {
+        showNotification('请输入优惠券名称', 'error');
+        return;
+    }
+    
+    if (!couponData.threshold || couponData.threshold < 0) {
+        showNotification('请输入有效的门槛金额', 'error');
+        return;
+    }
+    
+    if (!couponData.discount || couponData.discount < 0) {
+        showNotification('请输入有效的减免金额', 'error');
+        return;
+    }
+    
+    if (parseInt(couponData.discount) >= parseInt(couponData.threshold)) {
+        showNotification('减免金额不能大于或等于门槛金额', 'error');
+        return;
+    }
+    
+    // 提交成功
+    console.log('提交优惠券数据:', couponData);
+    showNotification(`成功添加优惠券:${couponData.name}`, 'success');
+    
+    // 关闭弹窗
+    closeCouponModal();
+}
+
+// 删除等级行
+function deleteLevel(index) {
+    if (currentLevels.length <= 1) {
+        showNotification('至少需要保留一个等级', 'warning');
+        return;
+    }
+    
+    currentLevels.splice(index, 1);
+    
+    // 重新编号等级
+    currentLevels.forEach((level, i) => {
+        level.level = `LV${i + 1}`;
+    });
+    
+    renderLevelEditTable();
+    showNotification(`删除等级 ${index + 1}`, 'success');
+    console.log('删除等级:', index);
+}
+
+// 添加新等级
+function addNewLevel() {
+    const newLevelNum = currentLevels.length + 1;
+    const lastLevel = currentLevels[currentLevels.length - 1];
+    
+    const newLevel = {
+        level: `LV${newLevelNum}`,
+        name: `${getLevelName(newLevelNum)}会员`,
+        growthMin: lastLevel.growthMax + 1,
+        growthMax: lastLevel.growthMax + 1000,
+        memberDiscount: true,
+        discountRate: Math.min(lastLevel.discountRate + 5, 50),
+        pointExchange: true,
+        birthdayCoupon: true,
+        birthdayDoublePoints: true
+    };
+    
+    currentLevels.push(newLevel);
+    renderLevelEditTable();
+    showNotification(`添加新等级 LV${newLevelNum}`, 'success');
+    console.log('添加新等级:', newLevel);
+}
+
+// 获取等级名称
+function getLevelName(levelNum) {
+    const names = ['铜牌', '银牌', '金牌', '钻石', '黑钻', '至尊', '王者', '传奇'];
+    return names[levelNum - 1] || `LV${levelNum}`;
+}
+
+// 提交等级编辑
+function submitLevelEdit() {
+    showNotification(`${currentShopName} 等级编辑已提交`, 'success');
+    console.log('提交等级编辑:', currentShopName);
+}
+
+// 导出函数
+window.toggleDiscountRate = toggleDiscountRate;
+window.toggleCouponButton = toggleCouponButton;
+window.addBirthdayCoupon = addBirthdayCoupon;
+window.closeCouponModal = closeCouponModal;
+window.resetCouponForm = resetCouponForm;
+window.adjustThreshold = adjustThreshold;
+window.adjustDiscount = adjustDiscount;
+window.addCouponThreshold = addCouponThreshold;
+window.submitCoupon = submitCoupon;
+window.deleteLevel = deleteLevel;
+window.addNewLevel = addNewLevel;
+window.submitLevelEdit = submitLevelEdit;
\ No newline at end of file
diff --git a/merchant/js/pages/level-settings.js b/merchant/js/pages/level-settings.js
new file mode 100644
index 0000000..3317842
--- /dev/null
+++ b/merchant/js/pages/level-settings.js
@@ -0,0 +1,308 @@
+// 等级设置页面的Tab系统JavaScript逻辑
+
+// 初始化页面
+document.addEventListener('DOMContentLoaded', function() {
+    initializeSidebar();
+    initializeSidebarSearch();
+    // 默认打开等级设置Tab
+    openLevelSettingsTab();
+});
+
+// 打开等级设置Tab(从member-tabs.js调用)
+function openLevelSettingsTab() {
+    if (typeof memberTabManager !== 'undefined') {
+        memberTabManager.showDefaultContent();
+        // 创建等级设置tab
+        const content = generateLevelSettingsContent();
+        memberTabManager.createTab('level-settings', '等级设置', content, false);
+    }
+}
+
+// 生成等级设置表格内容
+function generateLevelSettingsContent() {
+    return `
+        
+            
+                
等级设置
+            
+            
+            
+            
+                
+                
+                    
+                    
+                
+            
+            
+            
+                
+                    
+                        
+                            | +                                摊位名称
++ | +                                是否启用会员
++ | +                                会员等级
++ | +                                操作
++ | 
+                    
+                    
+                        
+                            | 时尚服装店+ | +                                
++ | lv1, lv2, lv3, lv4+ | +                                
++ | 
+                        
+                            | 数码电子城+ | +                                
++ | lv1, lv2, lv3+ | +                                
++ | 
+                        
+                            | 美食餐厅+ | +                                
++ | lv1, lv2, lv3, lv4+ | +                                
++ | 
+                        
+                            | 家居生活馆+ | +                                
++ | lv1, lv2+ | +                                
++ | 
+                        
+                            | 运动健身店+ | +                                
++ | lv1, lv2, lv3, lv4+ | +                                
++ | 
+                    
+                
+            
+        
+        
+        
+            
+
+            
+                
+                
+                
+                
+                
+                    用户
+                
+            
+
+        
+            
+            
+
+            
+            
+            
+                
+                    
+                        
+                        
优惠券营销工具管理
+                        
优惠券管理功能开发中...
+                    
+                
+            
+        
+    
+        
+        
+            
+
+            
+                
+                
+                
+                
+                
+                    用户
+                
+            
+
+        
+            
+            
+
+            
+            
+            
+                
+                    
+                        
+                        
数据中心
+                        
数据分析功能开发中...
+                    
+                
+            
+        
+    
+        
+        
+            
+
+            
+                
+                
+                
+                
+                
+                    用户
+                
+            
+
+        
+            
+            
+
+            
+            
+            
+                
+                    
等级设置明细
+                    
+                        
+                        
+                    
+                
+                
+                
+                    
+                        
+                            
+                                | 等级名称+ | 所需成长值+ | 会员人数+ | 会员权益+ | 
+                        
+                        
+                            
+                        
+                    
+                
+            
+        
+    
+        
+        
+            
+
+            
+                
+                
+                
+                
+                
+                    用户
+                
+            
+
+        
+            
+            
+
+            
+            
+            
+                
+                    
等级编辑
+                    
+                        
+                        
+                    
+                
+                
+                
+                    
+                        
+                            
+                                | 等级+ | 等级名称+ | 成长值范围+ | 开启会员折扣+ | 折扣率(%)+ | 开启积分兑换+ | 开启生日优惠券+ | 生日优惠券操作+ | 开启生日双倍积分+ | 操作+ | 
+                        
+                        
+                            
+                        
+                    
+                
+            
+        
+    
+        
+            
+            
+            
+            
+            
+                
+                
+            
+        
+    
+        
+        
+            
+
+            
+                
+                
+                
+                
+                
+                    用户
+                
+            
+
+        
+            
+            
+
+            
+            
+                
+                
+            
+        
+    
+        
+            
+            
+            
+            
+            
+                
+                
+            
+        
+