Browse Source

feat(workflowTrade): 新增国际化文案和UI优化

refactor: 重构工作流需求发布页面样式和结构
docs: 添加UI重构计划书和前端重构计划书
ext.zhangbin71 2 weeks ago
parent
commit
3878406e87

+ 4 - 1
.env.development

@@ -6,9 +6,12 @@
 # VITE_API_BASE_URL=http://192.168.100.89:8080/api
 # VITE_API_BASE_URL=http://192.168.101.12:8080/api
 
+# 韩朝龙
+VITE_API_BASE_URL=http://192.168.100.92:8080/api
+
 
 # 线上环境
 # VITE_API_BASE_URL=http://47.104.167.40/prod-api/api
-VITE_API_BASE_URL=http://www.baomiai.com/prod-api/api
+# VITE_API_BASE_URL=http://www.baomiai.com/prod-api/api
 
 

+ 100 - 0
refactoring_plan.md

@@ -0,0 +1,100 @@
+# 前端项目重构计划书
+
+## 1. 项目概述
+
+### 1.1. 项目现状分析
+
+经过对现有前端项目的全面分析,我们总结出以下几点:
+
+*   **技术栈**: 项目采用 Vue 3 作为核心框架,Vite 作为构建工具,并整合了 Element Plus UI 组件库、Pinia 状态管理库以及 Vue Router 路由管理器。此外,项目中还通过 `veaury` 实现了 Vue 与 React 组件的混合使用,并采用 SCSS 进行样式的预处理。
+*   **功能模块**: 项目核心功能涵盖了首页、工作流搜索平台、工作流详情、在线学习系统、个人中心、会员体系、工作流交易市场以及米币商城等多个模块,功能较为完善。
+*   **代码与UI**: 目前的UI主要基于 Element Plus 构建,但存在大量自定义样式,导致整体风格不统一。样式代码散布于全局 SCSS 文件、组件的 scoped 样式以及内联样式中,维护性较差。同时,应用的响应式布局支持不完善,部分组件的复用性不高,UI/UX 整体表现有较大的提升空间。
+
+### 1.2. 重构目标
+
+本次重构的核心目标是**在保留现有全部功能和内容的基础上,对前端界面进行全面的重新设计和实现**,旨在:
+
+*   **提升用户体验 (UX)**: 优化交互流程,提升界面的美观度和易用性,打造现代化、专业化的产品形象。
+*   **统一设计语言 (UI)**: 建立一套完整、统一的设计规范,涵盖色彩、字体、布局、组件等,确保产品视觉风格的一致性。
+*   **提高代码质量与可维护性**: 采用更先进的技术方案和代码规范,优化项目结构,提升代码的可读性、可维护性和可扩展性。
+*   **增强项目性能**: 优化资源加载、渲染性能和响应速度,为用户提供更流畅的使用体验。
+
+## 2. 重构方案详解
+
+### 2.1. 技术选型与项目基础架构
+
+为了实现重构目标,我们建议对现有技术栈进行升级和优化,并引入新的工具来提升开发效率和代码质量。
+
+| 技术领域 | 建议方案 | 优势与说明 |
+| --- | --- | --- |
+| **UI框架** | **Tailwind CSS** | 替换现有混乱的样式方案。Tailwind CSS 是一个功能类优先的 CSS 框架,能够极大地提升开发效率,保证样式的一致性,并能轻松实现复杂的响应式设计。 |
+| **代码规范** | **ESLint + Prettier + Stylelint** | 建立严格的代码规范体系,自动格式化代码,统一代码风格,减少低级错误,提升团队协作效率。 |
+| **组件库** | **Headless UI (可选) + 自定义组件** | 结合 Tailwind CSS,使用 Headless UI 提供的无样式、功能完备的组件,可以轻松地构建完全自定义且符合新设计规范的UI组件。 |
+| **依赖管理** | **pnpm** | 采用 pnpm 代替 npm 或 yarn,能够更快地安装依赖,并有效节省磁盘空间。 |
+| **版本升级** | **全面升级核心依赖** | 将 Vue、Vite、Element Plus 等核心依赖升级至最新稳定版本,以获得更好的性能、更多的功能和更及时的安全更新。 |
+
+### 2.2. UI/UX 重新设计
+
+我们将为项目设计一套全新的、现代化的设计系统。
+
+*   **设计风格**: 采用简洁、扁平化的现代设计风格,注重信息的清晰传达和操作的直观性。
+*   **色彩体系**: 重新定义主色、辅助色、中性色和功能色,形成和谐、专业的色彩搭配方案。
+*   **字体规范**: 统一字体、字号、行高和字重,保证文本内容的可读性和层次感。
+*   **布局系统**: 基于 Tailwind CSS 的响应式网格系统,构建灵活、一致的页面布局,适配不同尺寸的设备屏幕。
+*   **组件设计**: 重新设计所有UI组件,包括按钮、表单、卡片、弹窗等,确保其视觉风格和交互行为的统一。
+
+### 2.3. 核心模块重构策略
+
+我们将按照模块化的方式,分阶段对各个页面和组件进行重构。
+
+#### 2.3.1. 全局组件与布局
+
+*   **Layout 组件**: 重构 `Layout.vue`,设计新的顶部导航栏、侧边栏和页脚,并集成面包屑导航。新的布局将全面支持响应式设计。
+*   **基础组件**: 基于新的设计规范和 Tailwind CSS,重构所有基础UI组件,例如 `Button`, `Input`, `Card`, `Dialog` 等,将它们封装成高度可复用的组件。
+*   **图标系统**: 引入 `Iconify` 或类似的图标库,统一管理和使用图标,支持按需加载。
+
+#### 2.3.2. 页面重构
+
+| 页面模块 | 现存问题 | 重构策略与优化建议 |
+| --- | --- | --- |
+| **首页 (Home)** | 布局较为拥挤,视觉焦点不突出,轮播图效果一般。 | 1. 重新设计 Banner 区域,突出核心价值主张。<br>2. 优化平台分类的展示方式,使其更具吸引力。<br>3. 重新设计工作流卡片 (`course-card.vue`),优化信息布局和交互效果。 |
+| **搜索平台 (SearchPlatform)** | 筛选功能交互可以优化,搜索结果展示不够直观。 | 1. 重新设计筛选器,提供更友好的交互体验。<br>2. 优化搜索结果列表的布局,突出关键信息。<br>3. 增加更丰富的排序选项。 |
+| **工作流详情 (WorkflowDetail)** | 页面布局较为松散,信息组织可以更紧凑,右侧操作区功能单一。 | 1. 采用多栏布局,更有效地组织页面内容。<br>2. 重新设计作者信息、价格和操作按钮区域,使其更醒目。<br>3. 优化富文本内容的展示样式。 |
+| **学习系统 (LearningSystem)** | 课程列表和筛选区域设计较为传统,缺乏吸引力。 | 1. 重新设计课程卡片,增加学习进度等状态显示。<br>2. 优化课程筛选和分类的交互方式。<br>3. 重新设计课程详情页,优化视频播放体验和章节目录的导航。 |
+| **个人中心 (PersonalCenter)** | 布局混乱,信息层级不清,功能入口不够直观。 | 1. 采用更清晰的仪表盘式布局,整合用户信息、资产和常用功能入口。<br>2. 重新设计左侧导航菜单,使其更简洁明了。<br>3. 优化钱包、订单、收藏等子页面的信息展示和交互流程。 |
+| **会员页 (Member)** | 页面设计较为简单,会员权益展示不够吸引人。 | 1. 重新设计会员套餐的展示卡片,突出不同等级会员的核心权益。<br>2. 增加更具吸引力的视觉元素和营销文案。 |
+| **工作流交易 (WorkflowTrade)** | 需求列表和发布流程的UI/UX有较大提升空间。 | 1. 优化需求列表的展示,增加预算、报名人数等关键信息的可见性。<br>2. 重新设计需求发布表单,简化填写流程,提供更清晰的指引。 |
+| **米币商城 (MibiShop)** | 商品展示效果一般,缺乏购物氛围。 | 1. 重新设计商品卡片,突出商品图片和价格。<br>2. 优化兑换流程,提供更顺畅的购物体验。 |
+| **登录/注册 (LoginDialog)** | 弹窗式登录体验可以优化,表单校验和提示不够友好。 | 1. 重新设计登录/注册弹窗,使其更现代化。<br>2. 优化表单的交互和校验提示,提供更友好的用户引导。 |
+
+### 2.4. 状态管理与数据流
+
+*   **Pinia Store 优化**: 梳理现有的 `appStore`,根据功能模块拆分出更细粒度的 Store,例如 `userStore`, `workflowStore`, `courseStore` 等,使状态管理更清晰、更易于维护。
+*   **API 请求封装**: 统一封装 `axios` 请求,建立标准的请求/响应拦截器,处理全局的 Loading 状态、错误提示和 Token 刷新逻辑。
+
+### 2.5. 国际化 (i18n)
+
+*   **文案管理**: 梳理并完善中英文文案,确保所有界面元素都支持国际化。
+*   **动态加载**: 实现语言包的按需加载,减少首屏加载体积。
+
+## 3. 重构实施计划
+
+我们建议将重构过程分为以下几个阶段:
+
+| 阶段 | 主要任务 | 预计产出 |
+| --- | --- | --- |
+| **第一阶段:准备与基础建设** | 1. 搭建新的项目脚手架,集成 Tailwind CSS、ESLint 等工具。<br>2. 完成新设计系统的核心元素设计(色彩、字体等)。<br>3. 升级所有核心依赖至最新版本。<br>4. 封装基础网络请求和 Pinia Store 结构。 | - 一个配置完善的、可用于开发的新项目骨架。<br>- 完整的设计规范文档。<br>- 基础的 API 和 Store 模块。 |
+| **第二阶段:核心组件与布局重构** | 1. 开发全局 Layout 组件。<br>2. 基于新设计规范,开发一套可复用的基础UI组件。<br>3. 重构登录/注册模块。 | - 全新的应用整体布局。<br>- 一套高质量的基础组件库。<br>- 可用的用户认证流程。 |
+| **第三阶段:核心页面重构** | 1. 逐个重构首页、搜索平台、工作流详情等核心页面。<br>2. 将旧页面的逻辑迁移至新页面,并替换为新的UI组件。 | - 完成核心功能的界面重构,并可进行功能测试。 |
+| **第四阶段:其他页面与功能完善** | 1. 重构个人中心、会员、商城等其余页面。<br>2. 全面测试所有功能,修复 Bug。<br>3. 优化性能,进行代码审查。 | - 一个功能完整、UI统一、性能优良的全新前端应用。 |
+| **第五阶段:部署与上线** | 1. 配置生产环境的构建和部署流程。<br>2. 制定详细的上线计划,进行灰度发布或A/B测试。<br>3. 监控上线后的应用表现,及时响应和处理问题。 | - 成功上线的重构后项目。 |
+
+## 4. 风险评估与应对
+
+*   **业务中断风险**: 在重构期间,需要保证现有业务的正常运行。我们可以采用新旧系统并行的方式,逐步将流量切换到新系统。
+*   **时间与资源风险**: 全面重构需要投入大量的时间和人力。需要制定详细的排期,并确保有足够的资源支持。
+*   **技术风险**: 引入新技术可能带来未知的技术难题。需要在项目初期进行充分的技术预研和验证。
+
+## 5. 总结
+
+本次重构是一项系统性工程,旨在全面提升产品的用户体验、代码质量和长期可维护性。通过采用现代化的技术栈和设计理念,我们有信心将项目提升到一个新的高度。希望这份计划能为您提供清晰的指引,期待与您共同完成这次重要的升级。

+ 27 - 0
src/locales/en.js

@@ -240,11 +240,18 @@ export default {
     freeSettingTip:"Free (All users can use for free)",
     placeholderPrice:"Please input boom MiBi quantity",
     placeholderWorkflowContent:"Please input workflow content",
+    heroBadge: 'AI Workflow Demand Plaza',
+    heroTitle: 'Explore 200K+ Workflows',
+    heroDesc: 'Search, filter, and use with one click to find the AI workflow that best suits your scenario',
+    statPublished: 'Published Demands',
+    statSuccess: 'Successful Matches',
+    statRate: 'Satisfaction Rate',
   },
   workflowTradeAdd:{
     publishDemand:"Publish Workflow Demand",
     publishDemandTip:"Fill in the following information to let more professional people know your needs",
     basicInfo:"Basic Info",
+    basicInfoSubtitle:"Fill in basic information about your demand to attract more professional talents",
     demandTitle:"Demand Title",
     demandTitleTip:"A good title can attract more professional people to pay attention",
     placeholderDemandTitle:"Please input workflow demand title",
@@ -252,6 +259,7 @@ export default {
     workflowTypeTip:"Select the most fitting workflow category",
     placeholderWorkflowType:"Please select workflow type",
     detailInfo:"Detail Info",
+    detailInfoSubtitle:"Describe the background and specific requirements in detail to improve matching accuracy",
     background:"Demand Background",
     placeholderBackground:"Please input demand background",
     requirements:"Specific Requirements",
@@ -259,6 +267,7 @@ export default {
     requirementsTip:"Detailed description of functional requirements, technical requirements, etc. (50-2000 words)",
     requirementsTip1:"Suggested points of description: 1.functional requirements 2.technical requirements 3.Experience requirements 4.other instructions",
     projectInfo:"Project Info",
+    projectInfoSubtitle:"Set budget range and deadline to help match suitable service providers",
     budgetLowerLimit:"Budget Lower Limit ",
     budgetUpperLimit:"Budget Upper Limit ",
     budgetLowerLimitTip:"Optional, helps attract suitable service providers",
@@ -266,6 +275,7 @@ export default {
     placeholderBudgetUpperLimit:"Please input maximum budget",
     selectSignUpDeadline:"Select Sign Up Deadline",
     contactInfo:"Contact Info",
+    contactInfoSubtitle:"Leave contact information to facilitate communication with service providers",
     phoneNumber:"Phone Number",
     placeholderPhoneNumber:"Please input phone number",
     wechat:"Wechat",
@@ -277,6 +287,23 @@ export default {
     pleaseInputRightBudgetLowerLimit:"Please input right budget lower limit (up to 2 decimal places)",
     pleaseInputRightBudgetUpperLimit:"Please input right budget upper limit (up to 2 decimal places)",
     publishDemandNum:"Publish Number",
+    stepBasicInfo:"Basic Info",
+    stepDetailDesc:"Detailed Description",
+    stepProjectBudget:"Project Budget",
+    stepContactInfo:"Contact Info",
+    stepConfirmPublish:"Confirm Publish",
+    writingTip1:"Functional Requirements",
+    writingTip2:"Technical Requirements",
+    writingTip3:"Delivery Standards",
+    writingTip4:"Acceptance Method",
+    privacyTip:"Your contact information will be strictly protected and only visible to the matched party",
+    publishing:"Publishing...",
+    serviceAgreement:"Service Agreement",
+    platformGuarantee:"Platform Guarantee",
+    guarantee1:"Information Security Protection",
+    guarantee2:"Professional Talent Matching",
+    guarantee3:"Transaction Dispute Arbitration",
+    guarantee4:"Fund Security Escrow",
   },
   personalCenter:{
     personalCenter: 'Personal Center',

+ 27 - 0
src/locales/zh-CN.js

@@ -243,11 +243,18 @@ export default {
     freeSettingTip:"免费(所有用户可免费使用)",
     placeholderPrice:"请输入暴米币数量",
     placeholderWorkflowContent:"请输入工作流详情内容",
+    heroBadge: 'AI 工作流需求广场',
+    heroTitle: '探索 200K+ 工作流',
+    heroDesc: '搜索、筛选、一键使用,找到最适合你场景的 AI 工作流',
+    statPublished: '已发布需求',
+    statSuccess: '成功对接',
+    statRate: '好评率',
   },
   workflowTradeAdd:{
     publishDemand:"发布工作流需求",
     publishDemandTip:"填写以下信息,让更多专业人士了解您的需求",
     basicInfo:"基本信息",
+    basicInfoSubtitle:"填写需求的基本信息,吸引更多专业人才关注",
     demandTitle:"需求标题",
     demandTitleTip:"一个好的标题能吸引更多专业人士关注",
     placeholderDemandTitle:"请输入工作流标题",
@@ -255,6 +262,7 @@ export default {
     workflowTypeTip:"选择最贴合的工作流分类",
     placeholderWorkflowType:"请选择工作流类型",
     detailInfo:"详细内容",
+    detailInfoSubtitle:"详细描述需求背景和具体要求,提高匹配精准度",
     background:"需求背景",
     placeholderBackground:"请输入需求背景",
     requirements:"具体要求",
@@ -262,6 +270,7 @@ export default {
     requirementsTip:"详细描述功能要求、技术要求等(50-2000字)",
     requirementsTip1:"建议分点说明:1.功能需求 2.技术要求 3.经验要求 4.其他说明",
     projectInfo:"项目信息",
+    projectInfoSubtitle:"设置预算范围和截止日期,帮助匹配合适的服务商",
     budgetLowerLimit:"预算下限",
     budgetUpperLimit:"预算上限",
     budgetLowerLimitTip:"选填,有助于吸引合适的服务者",
@@ -269,6 +278,7 @@ export default {
     placeholderBudgetUpperLimit:"请输入最高预算",
     selectSignUpDeadline:"选择报名截止时间",
     contactInfo:"联系方式",
+    contactInfoSubtitle:"留下联系方式,方便服务商与您沟通",
     phoneNumber:"手机号",
     placeholderPhoneNumber:"请输入手机号",
     wechat:"微信号",
@@ -280,6 +290,23 @@ export default {
     pleaseInputRightBudgetLowerLimit:"请输入正确的预算下限(最多两位小数)",
     pleaseInputRightBudgetUpperLimit:"请输入正确的预算上限(最多两位小数)",
     publishDemandNum:"发布需求数",
+    stepBasicInfo:"基本信息",
+    stepDetailDesc:"详细描述",
+    stepProjectBudget:"项目预算",
+    stepContactInfo:"联系方式",
+    stepConfirmPublish:"确认发布",
+    writingTip1:"功能需求",
+    writingTip2:"技术要求",
+    writingTip3:"交付标准",
+    writingTip4:"验收方式",
+    privacyTip:"您的联系方式将受到严格保护,仅对接单方可见",
+    publishing:"发布中...",
+    serviceAgreement:"服务协议",
+    platformGuarantee:"平台保障",
+    guarantee1:"信息安全保护",
+    guarantee2:"专业人才匹配",
+    guarantee3:"交易纠纷仲裁",
+    guarantee4:"资金安全托管",
   },
   personalCenter:{
     personalCenter: '个人中心',

File diff suppressed because it is too large
+ 1204 - 253
src/pages/workflowTrade/workflowTrade.vue


+ 27 - 19
src/pages/workflowTrade/workflowTradeAdd.vue

@@ -23,7 +23,7 @@
       <div class="container wta-hero__content">
         <div class="wta-hero__badge">
           <span class="wta-hero__badge-dot"></span>
-          <span>AI 工作流需求广场</span>
+          <span>{{ $t('workflowTrade.heroBadge') }}</span>
         </div>
         <h1 class="wta-hero__title">{{ t('workflowTradeAdd.publishDemand') }}</h1>
         <p class="wta-hero__subtitle">{{ t('workflowTradeAdd.publishDemandTip') }}</p>
@@ -32,17 +32,17 @@
         <div class="wta-hero__stats">
           <div class="wta-hero__stat">
             <span class="wta-hero__stat-num">12,847</span>
-            <span class="wta-hero__stat-label">已发布需求</span>
+            <span class="wta-hero__stat-label">{{ $t('workflowTrade.statPublished') }}</span>
           </div>
           <div class="wta-hero__stat-divider"></div>
           <div class="wta-hero__stat">
             <span class="wta-hero__stat-num">9,632</span>
-            <span class="wta-hero__stat-label">成功对接</span>
+            <span class="wta-hero__stat-label">{{ $t('workflowTrade.statSuccess') }}</span>
           </div>
           <div class="wta-hero__stat-divider"></div>
           <div class="wta-hero__stat">
             <span class="wta-hero__stat-num">98.6%</span>
-            <span class="wta-hero__stat-label">好评率</span>
+            <span class="wta-hero__stat-label">{{ $t('workflowTrade.statRate') }}</span>
           </div>
         </div>
       </div>
@@ -91,7 +91,7 @@
                 </div>
                 <div>
                   <div class="wta-card__title">{{ t('workflowTradeAdd.basicInfo') }}</div>
-                  <div class="wta-card__subtitle">填写需求的基本信息,吸引更多专业人才关注</div>
+                  <div class="wta-card__subtitle">{{ t('workflowTradeAdd.basicInfoSubtitle') }}</div>
                 </div>
                 <div class="wta-card__step-badge">Step 1</div>
               </div>
@@ -166,7 +166,7 @@
                 </div>
                 <div>
                   <div class="wta-card__title">{{ t('workflowTradeAdd.detailInfo') }}</div>
-                  <div class="wta-card__subtitle">详细描述需求背景和具体要求,提高匹配精准度</div>
+                  <div class="wta-card__subtitle">{{ t('workflowTradeAdd.detailInfoSubtitle') }}</div>
                 </div>
                 <div class="wta-card__step-badge wta-card__step-badge--purple">Step 2</div>
               </div>
@@ -246,7 +246,7 @@
                 </div>
                 <div>
                   <div class="wta-card__title">{{ $t('workflowTradeAdd.projectInfo') }}</div>
-                  <div class="wta-card__subtitle">设置预算范围和截止日期,帮助匹配合适的服务商</div>
+                  <div class="wta-card__subtitle">{{ t('workflowTradeAdd.projectInfoSubtitle') }}</div>
                 </div>
                 <div class="wta-card__step-badge wta-card__step-badge--green">Step 3</div>
               </div>
@@ -325,7 +325,7 @@
                 </div>
                 <div>
                   <div class="wta-card__title">{{ $t('workflowTradeAdd.contactInfo') }}</div>
-                  <div class="wta-card__subtitle">留下联系方式,方便服务商与您沟通</div>
+                  <div class="wta-card__subtitle">{{ t('workflowTradeAdd.contactInfoSubtitle') }}</div>
                 </div>
                 <div class="wta-card__step-badge wta-card__step-badge--pink">Step 4</div>
               </div>
@@ -381,7 +381,7 @@
                 <!-- 隐私提示 -->
                 <div class="wta-privacy-tip">
                   <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="#6366f1" stroke-width="2"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>
-                  <span>您的联系方式将受到严格保护,仅对接单方可见</span>
+                  <span>{{ t('workflowTradeAdd.privacyTip') }}</span>
                 </div>
               </div>
             </div>
@@ -396,13 +396,13 @@
               >
                 <span v-if="isSubmiting" class="wta-btn-spinner"></span>
                 <el-icon v-else><Promotion /></el-icon>
-                <span>{{ isSubmiting ? '发布中...' : $t('common.fabuxuqiu') }}</span>
+                <span>{{ isSubmiting ? t('workflowTradeAdd.publishing') : $t('common.fabuxuqiu') }}</span>
               </button>
               <button class="wta-btn-cancel" @click="goBack">
                 <el-icon><Back /></el-icon>
                 <span>{{ $t('common.back') }}</span>
               </button>
-              <span class="wta-actions__tip">提交即表示同意 <a href="#" class="wta-link">服务协议</a></span>
+              <span class="wta-actions__tip">提交即表示同意 <a href="#" class="wta-link">{{ t('workflowTradeAdd.serviceAgreement') }}</a></span>
             </div>
 
           </el-form>
@@ -450,7 +450,7 @@
                 <div class="wta-sidebar-card__icon-wrap wta-sidebar-card__icon-wrap--guarantee">
                   <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>
                 </div>
-                <span class="wta-sidebar-card__title">平台保障</span>
+                <span class="wta-sidebar-card__title">{{ t('workflowTradeAdd.platformGuarantee') }}</span>
               </div>
               <div class="wta-guarantee-list">
                 <div class="wta-guarantee-item" v-for="g in guarantees" :key="g.text">
@@ -495,15 +495,15 @@ const isSticky = ref(false)
 const waveCanvasRef = ref(null)
 const stepsSentinelRef = ref(null)
 
-const steps = ['基本信息', '详细描述', '项目预算', '联系方式', '确认发布']
+const steps = [t('workflowTradeAdd.stepBasicInfo'), t('workflowTradeAdd.stepDetailDesc'), t('workflowTradeAdd.stepProjectBudget'), t('workflowTradeAdd.stepContactInfo'), t('workflowTradeAdd.stepConfirmPublish')]
 
-const writingTips = ['功能需求', '技术要求', '交付标准', '验收方式']
+const writingTips = [t('workflowTradeAdd.writingTip1'), t('workflowTradeAdd.writingTip2'), t('workflowTradeAdd.writingTip3'), t('workflowTradeAdd.writingTip4')]
 
 const guarantees = [
-  { text: '信息安全保护', bg: '#ede9fe', color: '#7c3aed' },
-  { text: '专业人才匹配', bg: '#dbeafe', color: '#2563eb' },
-  { text: '交易纠纷仲裁', bg: '#d1fae5', color: '#059669' },
-  { text: '资金安全托管', bg: '#fef3c7', color: '#d97706' },
+  { text: t('workflowTradeAdd.guarantee1'), bg: '#ede9fe', color: '#7c3aed' },
+  { text: t('workflowTradeAdd.guarantee2'), bg: '#dbeafe', color: '#2563eb' },
+  { text: t('workflowTradeAdd.guarantee3'), bg: '#d1fae5', color: '#059669' },
+  { text: t('workflowTradeAdd.guarantee4'), bg: '#fef3c7', color: '#d97706' },
 ]
 
 const ruleForm = reactive({
@@ -563,7 +563,7 @@ function initWaveCanvas() {
   const waves = [
     { amp: 40, freq: 0.004, speed: 0.0012, phase: 0,   color: 'rgba(99,102,241,0.28)' },
     { amp: 28, freq: 0.006, speed: 0.0025, phase: 2.1, color: 'rgba(167,139,250,0.22)' },
-    { amp: 18, freq: 0.008, speed: 0.004,  phase: 4.3, color: 'rgba(244,244,255,1)' },
+    { amp: 18, freq: 0.008, speed: 0.004,  phase: 4.3, color: 'rgba(255,255,255,1)' },
   ]
 
   function draw() {
@@ -709,6 +709,14 @@ const getAgreementTypeFn = () => {
 </script>
 
 <style scoped lang="scss">
+.container {
+  // max-width: 1200px;
+  width: 100%;
+  min-width: auto;
+  margin: 0 auto;
+  padding: 0 24px;
+  position: relative; z-index: 1;
+}
 /* ══════════════════════════════════════
    CSS 变量
 ══════════════════════════════════════ */

+ 68 - 0
ui_refactoring_plan.md

@@ -0,0 +1,68 @@
+# 前端UI焕新重构计划书
+
+## 1. 引言:从“能用”到“好用、爱用”
+
+在深入分析您现有前端项目并充分理解您对**UI美观性**的核心诉求后,我们为您量身打造了这份聚焦于视觉和交互体验升级的UI焕新重构计划。当前项目功能完善,基础扎实,但视觉表现和交互体验存在较大提升空间,未能完全匹配AI科技产品应有的现代感与专业度。
+
+本次重构的核心目标是:**在保留现有功能的基础上,通过引入前沿的设计语言和技术,对产品UI进行一次彻底的、惊艳的视觉革命,实现从“能用”到“好用、爱用”的跨越。**
+
+## 2. 视觉诊断:现有UI的主要问题
+
+| 视觉维度 | 存在问题 | 负面影响 |
+| :--- | :--- | :--- |
+| **整体风格** | 设计语言陈旧,色彩与布局方案偏向传统Web应用,缺乏统一的视觉主题。 | 无法体现AI产品的科技感与前瞻性,难以在同类产品中脱颖而出。 |
+| **色彩与背景** | 背景采用模糊的静态渐变图片,色彩运用较为保守,缺乏活力与层次感。 | 页面显得平淡、过时,无法营造沉浸式的用户体验。 |
+| **布局与间距** | 页面布局多为固定宽度,间距控制不够统一和精准,信息密度不均衡。 | 视觉流程不够顺畅,缺乏呼吸感,响应式体验不佳。 |
+| **组件与质感** | 组件多为基础样式,缺乏精致的细节和现代化的质感,如光影、透明度等。 | 界面显得“塑料感”强,不够精致,缺乏品质感。 |
+| **图标与动效** | 图标风格不统一,动效应用较少且效果单一。 | 视觉引导性弱,操作反馈不明确,缺乏愉悦的交互体验。 |
+
+## 3. 设计革新:拥抱未来感——暗黑模式 + 玻璃拟态 + 极光渐变
+
+为了彻底颠覆现有视觉体验,我们建议采用当前顶级AI与SaaS产品中广受欢迎的设计语言,构建一个全新的、令人印象深刻的视觉体系。
+
+### 3.1. 核心设计语言
+
+*   **暗黑模式 (Dark Mode) 优先**: 以深邃的暗色调作为主背景,不仅能有效降低视觉疲劳,更能凸显内容焦点,营造出一种专注、沉浸的科技氛围。同时,我们也会提供与之匹配的、优化过的亮色模式供用户选择。
+*   **玻璃拟态 (Glassmorphism)**: 在关键UI元素(如卡片、侧边栏、弹窗)上应用“毛玻璃”效果。这种半透明、带有模糊和微妙光泽的质感,能够创造出丰富的视觉层次和空间感,赋予界面轻盈、通透的现代美学。
+*   **动态极光渐变 (Aurora Gradient)**: 摒弃静态背景图,采用代码实现的、流光溢彩的动态渐变背景。这种模拟极光的视觉效果,色彩柔和过渡、动态变化,为产品注入生命力与未来感。
+
+### 3.2. 全新设计系统 (Design System)
+
+我们将建立一套严格的设计规范,确保视觉的统一性与精致度。
+
+| 设计元素 | 具体规范 |
+| :--- | :--- |
+| **色彩体系** | **暗黑模式**: 主背景`#111827` (深邃灰蓝),主色调`#4F46E5` (靛蓝),辅助色`#7C3AED` (紫罗兰),点缀色`#EC4899` (亮粉)。<br>**亮色模式**: 主背景`#F9FAFB` (淡灰),主色调`#3B82F6` (活力蓝)。 |
+| **字体规范** | 采用现代无衬线字体 **Inter**,并建立严格的字号、字重和行高规范,提升信息的可读性与层次感。 |
+| **布局与间距** | 全面采用 **Tailwind CSS**,利用其原子化的特性和预设的间距系统,构建像素级精准、响应式体验一流的栅格布局。 |
+| **图标系统** | 引入 **Heroicons** 或 **Iconify**,确保所有图标风格统一、线条利落,并支持按需加载。 |
+| **阴影与边框** | 重新定义组件的阴影系统,使用更柔和、更具层次感的阴影效果。边框将更细致,或用渐变色、发光效果替代。 |
+
+## 4. 页面焕新:重点模块UI重构详解
+
+以下是针对核心页面的具体UI重构策略,我们将通过前后对比的方式,让您直观感受视觉上的巨大飞跃。
+
+| 页面模块 | 焕新策略与视觉效果预览 |
+| :--- | :--- |
+| **全局导航栏 & 布局** | **旧**: 静态渐变背景,传统菜单样式。<br>**新**: 采用**玻璃拟态**效果,使其悬浮于动态极光背景之上。当页面滚动时,导航栏背景模糊效果加深,提供清晰的视觉反馈。用户头像和菜单项增加精致的微动效。 |
+| **首页 (Home)** | **旧**: 布局拥挤,轮播图生硬。<br>**新**: Banner区域采用全屏沉浸式设计,动态极光背景作为视觉中心。工作流卡片(`course-card.vue`)将采用**玻璃拟态**设计,鼠标悬浮时卡片边缘泛起辉光,并带有平滑的浮动效果,按钮则采用流光渐变效果。 |
+| **工作流/课程卡片** | **旧**: 白底卡片,信息罗列。<br>**新**: 采用**玻璃拟态**卡片设计,背景是模糊的极光渐变。卡片顶部是高清封面图,底部信息区域半透明。悬浮时,卡片轻微上浮并出现与主色调一致的边缘辉光,交互感十足。 |
+| **个人中心 (PersonalCenter)** | **旧**: 信息布局分散,缺乏中心。<br>**新**: 重新设计为现代化的**仪表盘 (Dashboard)** 布局。左侧是玻璃拟态的导航栏,右侧主体区域用卡片化设计分别展示用户信息、资产(米币/暴米币)、常用功能入口等。数据可视化图表将采用与新设计系统匹配的配色。 |
+| **会员页 (Member)** | **旧**: 简单的并排卡片,缺乏吸引力。<br>**新**: 重新设计价格表,采用对比强烈的卡片设计。推荐套餐将使用更醒目的渐变色边框和“推荐”角标。每个套餐的权益列表将使用统一的图标进行视觉增强,整体更具营销吸引力。 |
+| **工作流详情 (WorkflowDetail)** | **旧**: 左右布局,信息松散。<br>**新**: 页面顶部展示高清预览图或视频,并覆盖一层渐变蒙版,标题信息叠加其上。页面主体采用玻璃拟态卡片承载详细信息,富文本内容将根据暗黑/亮色模式进行样式优化,保证阅读舒适性。 |
+
+## 5. 实施路径
+
+我们将采用现代化的前端工程体系,确保重构过程高效、可控。
+
+1.  **环境搭建**: 引入 **Tailwind CSS** 并根据新的设计系统完成主题配置。
+2.  **基础重构**: 首先重构 `App.vue` 的全局布局和顶部导航栏,实现全新的背景和导航栏效果。
+3.  **组件先行**: 开发一套全新的基础组件,如按钮、卡片、输入框等,它们将自带玻璃拟态、渐变等新风格。
+4.  **逐页替换**: 按照 **个人中心 -> 首页 -> 详情页 -> 列表页** 的顺序,逐个页面进行重构。在每个页面中,用新的布局和基础组件替换旧的元素,并进行精细的视觉调整。
+5.  **联调与优化**: 在完成所有页面重构后,进行全面的功能和视觉测试,优化性能和交互细节。
+
+## 6. 结语
+
+我们相信,通过这次聚焦于UI美学和前沿设计语言的重构,您的产品将不仅仅是功能的集合,更将成为一个视觉上引人入胜、交互上充满愉悦的艺术品。这不仅能极大地提升现有用户的满意度和留存率,也将在市场中建立起鲜明、高端的品牌形象。
+
+请审阅这份计划。我们期待与您一同开启这段激动人心的视觉焕新之旅!