From 5c5cddb1c2ee0d19adddebaf3a3a10a6d93fd2ad Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期日, 26 十月 2025 10:52:18 +0800
Subject: [PATCH] feat:优化微信小程序可以运行

---
 app/pages/mine/user-agreement/index.vue                                              |  384 ++++
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java                |    9 
 app/pages/mine/privacy-policy/index.vue                                              |  439 ++++
 app/pages.json                                                                       |   10 
 app/manifest.json                                                                    |    2 
 app/pages/mine/index.vue                                                             |   18 
 app/小程序本地调试配置指南.md                                                                   |  598 ++++++
 app/permission.js                                                                    |    6 
 ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml                      |   26 
 prd/uni-app模板语法修复-class绑定.md                                                         |  279 ++
 app/快速配置清单.md                                                                        |  266 ++
 prd/部门分公司ID获取方法说明.md                                                                 |  231 ++
 prd/隐私政策和用户协议匿名访问配置.md                                                               |  449 ++++
 app/components/map-selector.vue                                                      |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleSyncServiceImpl.java |   18 
 prd/用户协议与隐私政策说明.md                                                                   |  332 +++
 app/pages/task/detail.vue                                                            |    2 
 prd/绑定车辆部门过滤-已实现.md                                                                  |  327 +++
 prd/登录注册协议链接优化说明.md                                                                  |  407 ++++
 app/pages/index.vue                                                                  |    2 
 app/pages/register.vue                                                               |   63 
 ruoyi-ui/src/views/task/general/detail.vue                                           |   70 
 prd/车辆同步部门查询修复说明.md                                                                  |  273 ++
 app/pages/task/index.vue                                                             |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java     |    1 
 prd/车辆查询部门自动匹配功能说明.md                                                                |  347 +++
 app/config.js                                                                        |   51 
 app/pages/login.vue                                                                  |   43 
 ruoyi-ui/src/views/task/general/index.vue                                            |    5 
 prd/后台任务管理-急救转运扩展显示.md                                                               |  387 ++++
 ruoyi-system/src/main/resources/mapper/system/VehicleInfoMapper.xml                  |   20 
 prd/用户协议与隐私政策完善说明.md                                                                 |  552 +++++
 32 files changed, 5,589 insertions(+), 32 deletions(-)

diff --git a/app/components/map-selector.vue b/app/components/map-selector.vue
index 6c5e540..7203b61 100644
--- a/app/components/map-selector.vue
+++ b/app/components/map-selector.vue
@@ -38,7 +38,7 @@
       <view 
         class="address-item" 
         v-for="(item, index) in searchResults" 
-        :key="'search-' + index"
+        :key="index"
         @click="selectAddress(item)"
       >
         <!-- 纭繚浣跨敤鎻掑�艰娉� -->
diff --git a/app/config.js b/app/config.js
index a1d9202..4ca54be 100644
--- a/app/config.js
+++ b/app/config.js
@@ -1,25 +1,62 @@
 // 搴旂敤鍏ㄥ眬閰嶇疆
+
+// 鈿狅笍 閲嶈锛氭湰鍦板紑鍙戞椂锛岃淇敼姝ゅ鐨凩OCAL_IP涓轰綘鐨勭數鑴戝唴缃慖P
+// Windows鏌ョ湅: cmd鎵ц ipconfig
+// Mac/Linux鏌ョ湅: 缁堢鎵ц ifconfig 鎴� ip addr
+const LOCAL_IP = 'localhost'  // 淇敼涓轰綘鐨処P锛屽: '192.168.1.100'
+
+// 鐜閰嶇疆
+const ENV_CONFIG = {
+  // 鏈湴寮�鍙戠幆澧�
+  development: {
+    baseUrl: `http://${LOCAL_IP}:8080`,
+    description: '鏈湴寮�鍙戠幆澧�'
+  },
+  // 娴嬭瘯鐜
+  test: {
+    baseUrl: 'http://test.yourdomain.com',
+    description: '娴嬭瘯鐜'
+  },
+  // 鐢熶骇鐜
+  production: {
+    baseUrl: 'https://api.yourdomain.com',
+    description: '鐢熶骇鐜'
+  }
+}
+
+// 褰撳墠浣跨敤鐨勭幆澧冿紙鎵嬪姩鍒囨崲锛�
+// 鍙�夊��: 'development', 'test', 'production'
+const CURRENT_ENV = 'development'
+
 module.exports = {
-  // baseUrl: 'https://vue.ruoyi.vip/prod-api',
-  baseUrl: 'http://localhost:8080',
+  // API鍩虹鍦板潃
+  baseUrl: ENV_CONFIG[CURRENT_ENV].baseUrl,
+  
   // 搴旂敤淇℃伅
   appInfo: {
     // 搴旂敤鍚嶇О
-    name: "ruoyi-app",
+    name: "姘戣埅璋冨害绯荤粺",
     // 搴旂敤鐗堟湰
     version: "1.1.0",
     // 搴旂敤logo
     logo: "/static/logo.png",
     // 瀹樻柟缃戠珯
     site_url: "http://ruoyi.vip",
-    // 鏀跨瓥鍗忚
-    agreements: [{
+    
+    // 褰撳墠鐜淇℃伅锛堜粎寮�鍙戞椂鏄剧ず锛�
+    env: CURRENT_ENV,
+    envDescription: ENV_CONFIG[CURRENT_ENV].description,
+    showEnv: CURRENT_ENV === 'development',  // 鏄惁鏄剧ず鐜淇℃伅
+    
+    // 鏀跨瓥鍗忚锛堜娇鐢ㄦ湰鍦伴〉闈級
+    agreements: [
+      {
         title: "闅愮鏀跨瓥",
-        url: "https://ruoyi.vip/protocol.html"
+        url: "/pages/mine/privacy-policy/index"
       },
       {
         title: "鐢ㄦ埛鏈嶅姟鍗忚",
-        url: "https://ruoyi.vip/protocol.html"
+        url: "/pages/mine/user-agreement/index"
       }
     ]
   }
diff --git a/app/manifest.json b/app/manifest.json
index 9af21ee..b02e2fa 100644
--- a/app/manifest.json
+++ b/app/manifest.json
@@ -41,7 +41,7 @@
     },
     "quickapp" : {},
     "mp-weixin" : {
-        "appid" : "wxccd7e2a0911b3397",
+        "appid" : "wx40692cc44953a8cb",
         "setting" : {
             "urlCheck" : false,
             "es6" : false,
diff --git a/app/pages.json b/app/pages.json
index 222db46..3b256bc 100644
--- a/app/pages.json
+++ b/app/pages.json
@@ -71,6 +71,16 @@
       "navigationBarTitleText": "鍏充簬鎴戜滑"
     }
   }, {
+    "path": "pages/mine/user-agreement/index",
+    "style": {
+      "navigationBarTitleText": "鐢ㄦ埛鏈嶅姟鍗忚"
+    }
+  }, {
+    "path": "pages/mine/privacy-policy/index",
+    "style": {
+      "navigationBarTitleText": "闅愮鏀跨瓥"
+    }
+  }, {
     "path": "pages/common/webview/index",
     "style": {
       "navigationBarTitleText": "娴忚缃戦〉"
diff --git a/app/pages/index.vue b/app/pages/index.vue
index 14fc8f5..62a019b 100644
--- a/app/pages/index.vue
+++ b/app/pages/index.vue
@@ -55,7 +55,7 @@
             <!-- 浠诲姟澶撮儴锛氭爣棰樺拰鐘舵�佹爣绛� -->
             <view class="task-header">
               <view class="task-title">{{ getTaskTypeText(task.type) }} - {{ task.vehicle }}</view>
-              <view class="task-status" :class="getStatusClass(task.taskStatus)">
+              <view class="task-status" :class="task.taskStatus === 'PENDING' ? 'status-pending' : task.taskStatus === 'DEPARTING' ? 'status-departing' : task.taskStatus === 'ARRIVED' ? 'status-arrived' : task.taskStatus === 'RETURNING' ? 'status-returning' : task.taskStatus === 'COMPLETED' ? 'status-completed' : task.taskStatus === 'CANCELLED' ? 'status-cancelled' : task.taskStatus === 'IN_PROGRESS' ? 'status-in-progress' : 'status-default'">
                 {{ getStatusText(task.status) }}
               </view>
             </view>
diff --git a/app/pages/login.vue b/app/pages/login.vue
index bcfc7d1..4aef7f9 100644
--- a/app/pages/login.vue
+++ b/app/pages/login.vue
@@ -30,14 +30,12 @@
           <text class="wechat-text">寰俊涓�閿櫥褰�</text>
         </view>
       </view>
-      <view class="reg text-center" v-if="register">
-        <text class="text-grey1">娌℃湁璐﹀彿锛�</text>
-        <text @click="handleUserRegister" class="text-blue">绔嬪嵆娉ㄥ唽</text>
-      </view>
+    
       <view class="xieyi text-center">
         <text class="text-grey1">鐧诲綍鍗充唬琛ㄥ悓鎰�</text>
-        <text @click="handleUserAgrement" class="text-blue">銆婄敤鎴峰崗璁��</text>
-        <text @click="handlePrivacy" class="text-blue">銆婇殣绉佸崗璁��</text>
+        <text @click.stop="handleUserAgrement" class="text-blue agreement-link">銆婄敤鎴峰崗璁��</text>
+        <text class="text-grey1">鍜�</text>
+        <text @click.stop="handlePrivacy" class="text-blue agreement-link">銆婇殣绉佸崗璁��</text>
       </view>
     </view>
   </scroll-view>
@@ -55,8 +53,8 @@
         register: false,
         globalConfig: getApp().globalData.config,
         loginForm: {
-          username: "admin",
-          password: "admin123",
+          username: "",
+          password: "",
           code: "",
           uuid: ''
         }
@@ -72,13 +70,11 @@
       },
       // 闅愮鍗忚
       handlePrivacy() {
-        let site = this.globalConfig.appInfo.agreements[0]
-        this.$tab.navigateTo(`/pages/common/webview/index?title=${site.title}&url=${site.url}`)
+        this.$tab.navigateTo('/pages/mine/privacy-policy/index')
       },
       // 鐢ㄦ埛鍗忚
       handleUserAgrement() {
-        let site = this.globalConfig.appInfo.agreements[1]
-        this.$tab.navigateTo(`/pages/common/webview/index?title=${site.title}&url=${site.url}`)
+        this.$tab.navigateTo('/pages/mine/user-agreement/index')
       },
       // 鑾峰彇鍥惧舰楠岃瘉鐮�
       getCode() {
@@ -297,7 +293,7 @@
         }
       }
 
-      .reg, .xieyi {
+      .reg {
         margin: 20rpx 0;
 
         .text-grey1 {
@@ -309,6 +305,27 @@
           color: #007AFF;
         }
       }
+      
+      .xieyi {
+        margin: 50rpx 0 30rpx 0;
+        padding: 20rpx 0;
+        line-height: 2;
+
+        .text-grey1 {
+          color: #888;
+          font-size: 24rpx;
+        }
+
+        .agreement-link {
+          color: #007AFF;
+          font-size: 24rpx;
+          padding: 10rpx 8rpx;
+          margin: 0 5rpx;
+          display: inline-block;
+          position: relative;
+          z-index: 10;
+        }
+      }
     }
   }
 </style>
\ No newline at end of file
diff --git a/app/pages/mine/index.vue b/app/pages/mine/index.vue
index a4d3aba..48b20a6 100644
--- a/app/pages/mine/index.vue
+++ b/app/pages/mine/index.vue
@@ -80,6 +80,18 @@
             <view>缂栬緫璧勬枡</view>
           </view>
         </view>
+        <view class="list-cell list-cell-arrow" @click="handleUserAgreement">
+          <view class="menu-item-box">
+            <view class="iconfont icon-text menu-icon"></view>
+            <view>鐢ㄦ埛鏈嶅姟鍗忚</view>
+          </view>
+        </view>
+        <view class="list-cell list-cell-arrow" @click="handlePrivacyPolicy">
+          <view class="menu-item-box">
+            <view class="iconfont icon-safe menu-icon"></view>
+            <view>闅愮鏀跨瓥</view>
+          </view>
+        </view>
         <view class="list-cell list-cell-arrow" @click="handleHelp">
           <view class="menu-item-box">
             <view class="iconfont icon-help menu-icon"></view>
@@ -227,6 +239,12 @@
       handleAbout() {
         this.$tab.navigateTo('/pages/mine/about/index')
       },
+      handleUserAgreement() {
+        this.$tab.navigateTo('/pages/mine/user-agreement/index')
+      },
+      handlePrivacyPolicy() {
+        this.$tab.navigateTo('/pages/mine/privacy-policy/index')
+      },
       handleJiaoLiuQun() {
         this.$modal.showToast('QQ缇わ細鈶�133713780(婊�)銆佲憽146013835(婊�)銆佲憿189091635')
       },
diff --git a/app/pages/mine/privacy-policy/index.vue b/app/pages/mine/privacy-policy/index.vue
new file mode 100644
index 0000000..cd90520
--- /dev/null
+++ b/app/pages/mine/privacy-policy/index.vue
@@ -0,0 +1,439 @@
+<template>
+  <view class="privacy-container">
+    <view class="header">
+      <view class="back-btn" @click="goBack">
+        <uni-icons type="arrowleft" size="20"></uni-icons>
+      </view>
+      <view class="title">闅愮鏀跨瓥</view>
+    </view>
+    
+    <scroll-view class="content" scroll-y="true">
+      <view class="privacy-content">
+        <view class="update-time">鏇存柊鏃ユ湡锛�2025骞�1鏈�25鏃�</view>
+        <view class="effect-time">鐢熸晥鏃ユ湡锛�2025骞�10鏈�25鏃�</view>
+        
+        <view class="section">
+          <text class="section-title">寮曡█</text>
+          <text class="section-text">
+            鎬ユ晳杞繍璋冨害绯荤粺锛堜互涓嬬畝绉�"鎴戜滑"锛夋繁鐭ヤ釜浜轰俊鎭鎮ㄧ殑閲嶈鎬э紝鎴戜滑灏嗘寜鐓ф硶寰嬫硶瑙勭殑瑕佹眰锛岄噰鍙栫浉搴旂殑瀹夊叏淇濇姢鎺柦锛屽敖鍔涗繚鎶ゆ偍鐨勪釜浜轰俊鎭畨鍏ㄥ彲鎺с��
+          </text>
+          <text class="section-text">
+            鏈�婇殣绉佹斂绛栥�嬮�傜敤浜庢垜浠悜鎮ㄦ彁渚涚殑鎵�鏈夋湇鍔°�傛垜浠笇鏈涢�氳繃鏈斂绛栧悜鎮ㄨ鏄庢垜浠浣曟敹闆嗐�佷娇鐢ㄣ�佸瓨鍌ㄥ拰鍒嗕韩鎮ㄧ殑涓汉淇℃伅锛屼互鍙婃偍浜湁鐨勭浉鍏虫潈鍒┿��
+          </text>
+          <text class="section-text highlight">
+            璇锋偍鍦ㄤ娇鐢ㄦ垜浠殑浜у搧/鏈嶅姟鍓嶏紝浠旂粏闃呰骞跺厖鍒嗙悊瑙f湰鏀跨瓥锛岀壒鍒槸浠ョ矖浣�/涓嬪垝绾挎爣璇嗙殑鏉℃锛屾偍搴旈噸鐐归槄璇汇�傚鎮ㄥ鏈斂绛栨湁浠讳綍鐤戦棶锛屽彲閫氳繃鏈斂绛栨枃鏈彁渚涚殑鑱旂郴鏂瑰紡涓庢垜浠仈绯汇��
+          </text>
+        </view>
+        
+        <view class="section">
+          <text class="section-title">涓�銆佹垜浠浣曟敹闆嗗拰浣跨敤鎮ㄧ殑涓汉淇℃伅</text>
+          <text class="section-text">
+            涓汉淇℃伅鏄寚浠ョ數瀛愭垨鑰呭叾浠栨柟寮忚褰曠殑鑳藉鍗曠嫭鎴栬�呬笌鍏朵粬淇℃伅缁撳悎璇嗗埆鐗瑰畾鑷劧浜鸿韩浠芥垨鑰呭弽鏄犵壒瀹氳嚜鐒朵汉娲诲姩鎯呭喌鐨勫悇绉嶄俊鎭��
+          </text>
+          <text class="section-text">
+            鎴戜滑浠呬細鍑轰簬浠ヤ笅鐩殑锛屾敹闆嗗拰浣跨敤鎮ㄧ殑涓汉淇℃伅锛�
+          </text>
+          
+          <text class="subsection-title">1.1 璐﹀彿娉ㄥ唽涓庣櫥褰�</text>
+          <text class="section-text">
+            褰撴偍娉ㄥ唽鍙婁娇鐢ㄦ湰绯荤粺鏃讹紝鎴戜滑闇�瑕佹敹闆嗭細
+          </text>
+          <text class="section-text indent">
+            路 鎵嬫満鍙风爜锛氱敤浜庤处鍙锋敞鍐屻�佺櫥褰曢獙璇佸拰瀹夊叏淇濋殰
+          </text>
+          <text class="section-text indent">
+            路 濮撳悕锛氱敤浜庤韩浠借瘑鍒拰浠诲姟鍒嗛厤
+          </text>
+          <text class="section-text indent">
+            路 鎵�灞為儴闂�/鏈烘瀯锛氱敤浜庢潈闄愮鐞嗗拰浠诲姟鍗忎綔
+          </text>
+          <text class="section-text indent">
+            路 鑱屼綅/瑙掕壊锛氱敤浜庣‘瀹氱郴缁熶娇鐢ㄦ潈闄�
+          </text>
+          
+          <text class="subsection-title">1.2 浠诲姟璋冨害鏈嶅姟</text>
+          <text class="section-text">
+            涓轰簡鍚戞偍鎻愪緵浠诲姟璋冨害鏈嶅姟锛屾垜浠渶瑕佹敹闆嗭細
+          </text>
+          <text class="section-text indent">
+            路 浣嶇疆淇℃伅锛氳幏鍙栨偍鐨勫疄鏃朵綅缃紝鐢ㄤ簬浠诲姟鍒嗛厤銆佽溅杈嗚皟搴﹀拰璺緞瑙勫垝
+          </text>
+          <text class="section-text indent">
+            路 浠诲姟鐩稿叧淇℃伅锛氬寘鎷偅鑰呬俊鎭紙濮撳悕銆佸勾榫勩�佹�у埆銆佺梾鎯呮弿杩帮級銆佸湴鍧�淇℃伅銆佸尰闄俊鎭瓑
+          </text>
+          <text class="section-text indent">
+            路 杞﹁締淇℃伅锛氳溅鐗屽彿銆佽溅杈嗙被鍨嬨�佽澶囩紪鍙风瓑
+          </text>
+          <text class="section-text highlight">
+            浣嶇疆淇℃伅灞炰簬鏁忔劅涓汉淇℃伅锛屾垜浠粎鍦ㄦ偍涓诲姩寮�鍚畾浣嶆潈闄愬苟浣跨敤鐩稿叧鍔熻兘鏃舵敹闆嗭紝鎮ㄥ彲浠ラ殢鏃跺湪绯荤粺璁剧疆涓叧闂畾浣嶆潈闄愩�傛嫆缁濇彁渚涗綅缃俊鎭彲鑳藉鑷撮儴鍒嗗姛鑳芥棤娉曚娇鐢紝浣嗕笉褰卞搷鍏朵粬鍔熻兘鐨勬甯镐娇鐢ㄣ��
+          </text>
+          
+          <text class="subsection-title">1.3 娑堟伅鎺ㄩ�佹湇鍔�</text>
+          <text class="section-text">
+            涓轰簡鍙婃椂鍚戞偍鎺ㄩ�佷换鍔¢�氱煡銆佺郴缁熸秷鎭瓑淇℃伅锛屾垜浠渶瑕佹敹闆嗭細
+          </text>
+          <text class="section-text indent">
+            路 璁惧淇℃伅锛氳澶囧瀷鍙枫�佹搷浣滅郴缁熺増鏈�佽澶囨爣璇嗙
+          </text>
+          <text class="section-text indent">
+            路 鎺ㄩ�乼oken锛氱敤浜庢秷鎭帹閫�
+          </text>
+          
+          <text class="subsection-title">1.4 绯荤粺瀹夊叏涓庝紭鍖�</text>
+          <text class="section-text">
+            涓轰簡淇濋殰绯荤粺瀹夊叏绋冲畾杩愯骞舵彁鍗囩敤鎴蜂綋楠岋紝鎴戜滑浼氭敹闆嗭細
+          </text>
+          <text class="section-text indent">
+            路 鏃ュ織淇℃伅锛氭搷浣滄棩蹇椼�侀敊璇棩蹇椼�佹�ц兘鏁版嵁
+          </text>
+          <text class="section-text indent">
+            路 缃戠粶淇℃伅锛欼P鍦板潃銆佺綉缁滅被鍨�
+          </text>
+          <text class="section-text indent">
+            路 搴旂敤浣跨敤鎯呭喌锛氶〉闈㈣闂褰曘�佸姛鑳戒娇鐢ㄩ鐜�
+          </text>
+        </view>
+        
+        <view class="section">
+          <text class="section-title">浜屻�佹垜浠浣曚娇鐢–ookie鍜屽悓绫绘妧鏈�</text>
+          <text class="section-text">
+            Cookie鏄竴绉嶇綉缁滄湇鍔″櫒瀛樺偍鍦ㄨ绠楁満鎴栫Щ鍔ㄨ澶囦笂鐨勭函鏂囨湰鏂囦欢銆傛垜浠娇鐢–ookie鍜屽悓绫绘妧鏈富瑕佷负浜嗗疄鐜颁互涓嬪姛鑳斤細
+          </text>
+          <text class="section-text indent">
+            路 璁颁綇鎮ㄧ殑鐧诲綍鐘舵�侊紝閬垮厤閲嶅鐧诲綍
+          </text>
+          <text class="section-text indent">
+            路 鍒嗘瀽鎮ㄤ娇鐢ㄦ垜浠湇鍔$殑鎯呭喌锛屼互渚夸紭鍖栨湇鍔′綋楠�
+          </text>
+          <text class="section-text indent">
+            路 淇濋殰绯荤粺瀹夊叏锛岄槻鑼冨畨鍏ㄩ闄�
+          </text>
+          <text class="section-text">
+            鎮ㄥ彲浠ラ�氳繃娴忚鍣ㄦ垨璁惧璁剧疆鎷掔粷鎴栫鐞咰ookie锛屼絾杩欏彲鑳藉奖鍝嶆偍浣跨敤鎴戜滑鏈嶅姟鐨勯儴鍒嗗姛鑳姐��
+          </text>
+        </view>
+        
+        <view class="section">
+          <text class="section-title">涓夈�佹垜浠浣曞叡浜�佽浆璁┿�佸叕寮�鎶湶鎮ㄧ殑涓汉淇℃伅</text>
+          
+          <text class="subsection-title">3.1 鍏变韩</text>
+          <text class="section-text">
+            鎴戜滑涓嶄細鍚戠涓夋柟鍏变韩鎮ㄧ殑涓汉淇℃伅锛岄櫎闈烇細
+          </text>
+          <text class="section-text indent">
+            路 浜嬪厛鑾峰緱鎮ㄧ殑鏄庣‘鍚屾剰
+          </text>
+          <text class="section-text indent">
+            路 涓庡叧鑱旀満鏋勫叡浜細鍦ㄤ笟鍔¢渶瑕佷笖绗﹀悎娉曞緥瑙勫畾鐨勬儏鍐典笅锛屾垜浠彲鑳戒笌鎮ㄦ墍灞炲尰鐤楁満鏋勩�佹�ユ晳涓績鍏变韩蹇呰淇℃伅
+          </text>
+          <text class="section-text indent">
+            路 娉曞緥娉曡瑙勫畾鐨勫叾浠栨儏褰�
+          </text>
+          
+          <text class="subsection-title">3.2 杞</text>
+          <text class="section-text">
+            鎴戜滑涓嶄細灏嗘偍鐨勪釜浜轰俊鎭浆璁╃粰浠讳綍鍏徃銆佺粍缁囧拰涓汉锛屼絾浠ヤ笅鎯呭喌闄ゅ锛�
+          </text>
+          <text class="section-text indent">
+            路 浜嬪厛鑾峰緱鎮ㄧ殑鏄庣‘鍚屾剰
+          </text>
+          <text class="section-text indent">
+            路 鏍规嵁娉曞緥娉曡鎴栧己鍒舵�х殑琛屾斂鎴栧徃娉曡姹�
+          </text>
+          
+          <text class="subsection-title">3.3 鍏紑鎶湶</text>
+          <text class="section-text">
+            鎴戜滑浠呬細鍦ㄤ互涓嬫儏鍐典笅鍏紑鎶湶鎮ㄧ殑涓汉淇℃伅锛�
+          </text>
+          <text class="section-text indent">
+            路 鑾峰緱鎮ㄧ殑鏄庣‘鍚屾剰
+          </text>
+          <text class="section-text indent">
+            路 鍩轰簬娉曞緥娉曡銆佹硶寰嬬▼搴忋�佽瘔璁兼垨鏀垮簻涓荤閮ㄩ棬寮哄埗鎬ц姹�
+          </text>
+        </view>
+        
+        <view class="section">
+          <text class="section-title">鍥涖�佹垜浠浣曚繚鎶ゆ偍鐨勪釜浜轰俊鎭�</text>
+          <text class="section-text">
+            4.1 鎴戜滑闈炲父閲嶈涓汉淇℃伅瀹夊叏锛屽苟閲囧彇涓�鍒囧悎鐞嗗彲琛岀殑鎺柦淇濇姢鎮ㄧ殑涓汉淇℃伅锛�
+          </text>
+          <text class="section-text indent">
+            路 鏁版嵁鍔犲瘑锛氶噰鐢⊿SL/TLS鍔犲瘑浼犺緭锛屽鏁忔劅鏁版嵁杩涜鍔犲瘑瀛樺偍
+          </text>
+          <text class="section-text indent">
+            路 璁块棶鎺у埗锛氬缓绔嬩弗鏍肩殑鏁版嵁璁块棶鏉冮檺鎺у埗鍜屽鎵规満鍒�
+          </text>
+          <text class="section-text indent">
+            路 瀹夊叏瀹¤锛氬畾鏈熻繘琛屽畨鍏ㄥ璁″拰椋庨櫓璇勪及
+          </text>
+          <text class="section-text indent">
+            路 浜哄憳绠$悊锛氬澶勭悊涓汉淇℃伅鐨勫憳宸ヨ繘琛岃韩浠借璇佸拰鏉冮檺绠$悊
+          </text>
+          <text class="section-text indent">
+            路 搴旀�ュ搷搴旓細鍒跺畾涓汉淇℃伅瀹夊叏浜嬩欢搴旀�ラ妗�
+          </text>
+          <text class="section-text">
+            4.2 鎴戜滑浼氶噰鍙栧悎鐞嗗彲琛岀殑鎺柦锛屽敖鍔涢伩鍏嶆敹闆嗘棤鍏崇殑涓汉淇℃伅銆�
+          </text>
+          <text class="section-text highlight">
+            4.3 浜掕仈缃戝苟闈炵粷瀵瑰畨鍏ㄧ殑鐜锛屾垜浠己鐑堝缓璁偍閲囧彇绉瀬鎺柦淇濇姢涓汉淇℃伅鐨勫畨鍏紝鍖呮嫭浣嗕笉闄愪簬浣跨敤澶嶆潅瀵嗙爜銆佸畾鏈熶慨鏀瑰瘑鐮併�佷笉灏嗚嚜宸辩殑璐﹀彿瀵嗙爜绛変釜浜轰俊鎭�忛湶缁欎粬浜恒��
+          </text>
+          <text class="section-text highlight">
+            4.4 濡傛灉鍙戠敓涓汉淇℃伅瀹夊叏浜嬩欢锛屾垜浠皢鎸夌収娉曞緥娉曡鐨勮姹傦紝鍙婃椂鍚戞偍鍛婄煡锛氬畨鍏ㄤ簨浠剁殑鍩烘湰鎯呭喌鍜屽彲鑳界殑褰卞搷銆佹垜浠凡閲囧彇鎴栧皢瑕侀噰鍙栫殑澶勭疆鎺柦銆佹偍鍙嚜涓婚槻鑼冨拰闄嶄綆椋庨櫓鐨勫缓璁瓑銆�
+          </text>
+        </view>
+        
+        <view class="section">
+          <text class="section-title">浜斻�佹偍濡備綍绠$悊涓汉淇℃伅</text>
+          <text class="section-text">
+            鎸夌収涓浗鐩稿叧鐨勬硶寰嬫硶瑙勶紝鎴戜滑淇濋殰鎮ㄥ鑷繁鐨勪釜浜轰俊鎭浣夸互涓嬫潈鍒╋細
+          </text>
+          
+          <text class="subsection-title">5.1 璁块棶鍜屾洿姝f偍鐨勪釜浜轰俊鎭�</text>
+          <text class="section-text">
+            鎮ㄥ彲浠ラ�氳繃浠ヤ笅鏂瑰紡璁块棶鍜屾洿姝f偍鐨勪釜浜轰俊鎭細
+          </text>
+          <text class="section-text indent">
+            路 閫氳繃"鎴戠殑-涓汉淇℃伅"椤甸潰鏌ョ湅鍜屼慨鏀瑰熀鏈俊鎭�
+          </text>
+          <text class="section-text indent">
+            路 鑱旂郴绯荤粺绠$悊鍛樺崗鍔╀慨鏀�
+          </text>
+          
+          <text class="subsection-title">5.2 鍒犻櫎鎮ㄧ殑涓汉淇℃伅</text>
+          <text class="section-text">
+            鍦ㄤ互涓嬫儏褰腑锛屾偍鍙互鍚戞垜浠彁鍑哄垹闄や釜浜轰俊鎭殑璇锋眰锛�
+          </text>
+          <text class="section-text indent">
+            路 鎴戜滑澶勭悊涓汉淇℃伅鐨勮涓鸿繚鍙嶆硶寰嬫硶瑙�
+          </text>
+          <text class="section-text indent">
+            路 鎴戜滑鏀堕泦銆佷娇鐢ㄦ偍鐨勪釜浜轰俊鎭紝鍗存湭寰佸緱鎮ㄧ殑鍚屾剰
+          </text>
+          <text class="section-text indent">
+            路 鎴戜滑澶勭悊涓汉淇℃伅鐨勮涓鸿繚鍙嶄簡涓庢偍鐨勭害瀹�
+          </text>
+          <text class="section-text indent">
+            路 鎮ㄦ敞閿�浜嗚处鍙�
+          </text>
+          
+          <text class="subsection-title">5.3 娉ㄩ攢璐﹀彿</text>
+          <text class="section-text">
+            鎮ㄥ彲浠ラ�氳繃鑱旂郴绯荤粺绠$悊鍛樼敵璇锋敞閿�璐﹀彿銆傝处鍙锋敞閿�鍚庯紝鎴戜滑灏嗗仠姝负鎮ㄦ彁渚涙湇鍔★紝骞舵牴鎹硶寰嬫硶瑙勮姹傚垹闄ゆ偍鐨勪釜浜轰俊鎭��
+          </text>
+          
+          <text class="subsection-title">5.4 鎾ゅ洖鍚屾剰</text>
+          <text class="section-text">
+            鎮ㄥ彲浠ラ�氳繃璁惧鏉冮檺璁剧疆鎾ゅ洖瀵逛綅缃俊鎭�佹憚鍍忓ご銆佺浉鍐岀瓑鏁忔劅鏉冮檺鐨勬巿鏉冦��
+          </text>
+          <text class="section-text">
+            璇锋偍鐞嗚В锛岀壒瀹氱殑涓氬姟鍔熻兘闇�瑕佹偍鐨勪俊鎭墠鑳藉緱浠ュ畬鎴愶紝褰撴偍鎾ゅ洖鍚屾剰鍚庯紝鎴戜滑鏃犳硶缁х画涓烘偍鎻愪緵鎾ゅ洖鍚屾剰鎵�瀵瑰簲鐨勬湇鍔°��
+          </text>
+        </view>
+        
+        <view class="section">
+          <text class="section-title">鍏�佹垜浠浣曞鐞嗘湭鎴愬勾浜虹殑涓汉淇℃伅</text>
+          <text class="section-text">
+            6.1 鏈郴缁熶富瑕侀潰鍚戝尰鐤楁�ユ晳浠庝笟浜哄憳锛屽師鍒欎笂涓嶅悜鏈垚骞翠汉鎻愪緵鏈嶅姟銆�
+          </text>
+          <text class="section-text">
+            6.2 濡傛灉鎴戜滑鍙戠幇鍦ㄦ湭浜嬪厛鑾峰緱鍙瘉瀹炵殑鐖舵瘝鎴栨硶瀹氱洃鎶や汉鍚屾剰鐨勬儏鍐典笅鏀堕泦浜嗘湭鎴愬勾浜虹殑涓汉淇℃伅锛屾垜浠細璁炬硶灏藉揩鍒犻櫎鐩稿叧鏁版嵁銆�
+          </text>
+        </view>
+        
+        <view class="section">
+          <text class="section-title">涓冦�佹偍鐨勪釜浜轰俊鎭浣曞湪鍏ㄧ悆鑼冨洿鍐呰浆绉�</text>
+          <text class="section-text">
+            鎴戜滑鍦ㄤ腑鍗庝汉姘戝叡鍜屽浗澧冨唴鏀堕泦鍜屼骇鐢熺殑涓汉淇℃伅灏嗗瓨鍌ㄥ湪涓崕浜烘皯鍏卞拰鍥藉鍐呫��
+          </text>
+        </view>
+        
+        <view class="section">
+          <text class="section-title">鍏�佹湰鏀跨瓥濡備綍鏇存柊</text>
+          <text class="section-text">
+            8.1 鎴戜滑鍙兘閫傛椂淇鏈斂绛栧唴瀹广�傚璇ョ瓑鍙樻洿浼氬鑷存偍鍦ㄦ湰鏀跨瓥椤逛笅鏉冨埄鐨勫疄璐ㄥ噺鎹燂紝鎴戜滑灏嗗湪鍙樻洿鐢熸晥鍓嶏紝閫氳繃鍦ㄩ〉闈㈡樉钁椾綅缃彁绀恒�佸悜鎮ㄥ彂閫佹秷鎭瓑鏂瑰紡閫氱煡鎮ㄣ��
+          </text>
+          <text class="section-text highlight">
+            8.2 鍦ㄨ绉嶆儏鍐典笅锛岃嫢鎮ㄧ户缁娇鐢ㄦ垜浠殑鏈嶅姟锛屽嵆琛ㄧず鍚屾剰鍙楃粡淇鐨勬湰鏀跨瓥鐨勭害鏉熴��
+          </text>
+        </view>
+        
+        <view class="section">
+          <text class="section-title">涔濄�佸浣曡仈绯绘垜浠�</text>
+          <text class="section-text">
+            9.1 濡傛偍瀵规湰闅愮鏀跨瓥鎴栨偍涓汉淇℃伅鐨勭浉鍏充簨瀹滄湁浠讳綍闂銆佹剰瑙佹垨寤鸿锛岃閫氳繃浠ヤ笅鏂瑰紡涓庢垜浠仈绯伙細
+          </text>
+          <text class="section-text">
+            鐢靛瓙閭锛歸anglizhong@966120.com.cn
+          </text>
+          <text class="section-text">
+            瀹㈡湇鐢佃瘽锛�020-966120
+          </text>
+          <text class="section-text">
+            宸ヤ綔鏃堕棿锛氬懆涓�鑷冲懆鏃� 24灏忔椂
+          </text>
+          <text class="section-text">
+            9.2 涓�鑸儏鍐典笅锛屾垜浠皢鍦�15涓伐浣滄棩鍐呭洖澶嶆偍鐨勮姹傘��
+          </text>
+        </view>
+        
+        <view class="section">
+          <text class="section-title">鍗併�佸畾涔�</text>
+          <text class="section-text">
+            涓汉淇℃伅锛氭寚浠ョ數瀛愭垨鑰呭叾浠栨柟寮忚褰曠殑鑳藉鍗曠嫭鎴栬�呬笌鍏朵粬淇℃伅缁撳悎璇嗗埆鐗瑰畾鑷劧浜鸿韩浠芥垨鑰呭弽鏄犵壒瀹氳嚜鐒朵汉娲诲姩鎯呭喌鐨勫悇绉嶄俊鎭��
+          </text>
+          <text class="section-text">
+            鏁忔劅涓汉淇℃伅锛氭寚涓�鏃︽硠闇叉垨鑰呴潪娉曚娇鐢紝瀹规槗瀵艰嚧鑷劧浜虹殑浜烘牸灏婁弗鍙楀埌渚靛鎴栬�呬汉韬�佽储浜у畨鍏ㄥ彈鍒板嵄瀹崇殑涓汉淇℃伅锛屽寘鎷敓鐗╄瘑鍒�佸畻鏁欎俊浠般�佺壒瀹氳韩浠姐�佸尰鐤楀仴搴枫�侀噾铻嶈处鎴枫�佽韪建杩圭瓑淇℃伅銆�
+          </text>
+          <text class="section-text">
+            涓汉淇℃伅鍒犻櫎锛氭寚鍦ㄥ疄鐜版棩甯镐笟鍔″姛鑳芥墍娑夊強鐨勭郴缁熶腑鍘婚櫎涓汉淇℃伅鐨勮涓猴紝浣垮叾淇濇寔涓嶅彲琚绱€�佽闂殑鐘舵�併��
+          </text>
+        </view>
+        
+        <view class="footer">
+          <text class="footer-text">鎰熻阿鎮ㄤ俊浠诲苟浣跨敤鎬ユ晳杞繍璋冨害绯荤粺锛�</text>
+        </view>
+      </view>
+    </scroll-view>
+  </view>
+</template>
+
+<script>
+  export default {
+    data() {
+      return {}
+    },
+    methods: {
+      goBack() {
+        uni.navigateBack()
+      }
+    }
+  }
+</script>
+
+<style lang="scss">
+  .privacy-container {
+    height: 100vh;
+    display: flex;
+    flex-direction: column;
+    background-color: #f5f5f5;
+    
+    .header {
+      display: flex;
+      align-items: center;
+      padding: 20rpx;
+      background-color: white;
+      border-bottom: 1rpx solid #f0f0f0;
+      
+      .back-btn {
+        width: 60rpx;
+        height: 60rpx;
+        border-radius: 50%;
+        background-color: #f0f0f0;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        margin-right: 20rpx;
+      }
+      
+      .title {
+        font-size: 36rpx;
+        font-weight: bold;
+        color: #333;
+      }
+    }
+    
+    .content {
+      flex: 1;
+      padding: 30rpx;
+    }
+    
+    .privacy-content {
+      background-color: white;
+      border-radius: 15rpx;
+      padding: 40rpx 30rpx;
+      
+      .update-time,
+      .effect-time {
+        font-size: 24rpx;
+        color: #999;
+        margin-bottom: 10rpx;
+      }
+      
+      .section {
+        margin-top: 40rpx;
+        
+        &:first-child {
+          margin-top: 30rpx;
+        }
+        
+        .section-title {
+          display: block;
+          font-size: 32rpx;
+          font-weight: bold;
+          color: #333;
+          margin-bottom: 20rpx;
+          line-height: 1.5;
+        }
+        
+        .subsection-title {
+          display: block;
+          font-size: 30rpx;
+          font-weight: bold;
+          color: #666;
+          margin: 25rpx 0 15rpx;
+          line-height: 1.5;
+        }
+        
+        .section-text {
+          display: block;
+          font-size: 28rpx;
+          color: #666;
+          line-height: 1.8;
+          margin-bottom: 15rpx;
+          text-align: justify;
+          
+          &.highlight {
+            background-color: #fff8e6;
+            padding: 20rpx;
+            border-left: 4rpx solid #ff9500;
+            border-radius: 8rpx;
+            margin: 20rpx 0;
+            font-weight: bold;
+            color: #333;
+          }
+          
+          &.indent {
+            padding-left: 40rpx;
+            position: relative;
+            
+            &::before {
+              content: '';
+              position: absolute;
+              left: 20rpx;
+              top: 18rpx;
+              width: 8rpx;
+              height: 8rpx;
+              background-color: #666;
+              border-radius: 50%;
+            }
+          }
+        }
+      }
+      
+      .footer {
+        margin-top: 60rpx;
+        padding-top: 40rpx;
+        border-top: 1rpx solid #f0f0f0;
+        text-align: center;
+        
+        .footer-text {
+          font-size: 28rpx;
+          color: #007AFF;
+          font-weight: bold;
+        }
+      }
+    }
+  }
+</style>
diff --git a/app/pages/mine/user-agreement/index.vue b/app/pages/mine/user-agreement/index.vue
new file mode 100644
index 0000000..a3d97e7
--- /dev/null
+++ b/app/pages/mine/user-agreement/index.vue
@@ -0,0 +1,384 @@
+<template>
+  <view class="agreement-container">
+    <view class="header">
+      <view class="back-btn" @click="goBack">
+        <uni-icons type="arrowleft" size="20"></uni-icons>
+      </view>
+      <view class="title">鐢ㄦ埛鏈嶅姟鍗忚</view>
+    </view>
+    
+    <scroll-view class="content" scroll-y="true">
+      <view class="agreement-content">
+        <view class="update-time">鏇存柊鏃ユ湡锛�2025骞�1鏈�25鏃�</view>
+        <view class="effect-time">鐢熸晥鏃ユ湡锛�2025骞�1鏈�25鏃�</view>
+        
+        <view class="section">
+          <text class="section-title">娆㈣繋浣跨敤鎬ユ晳杞繍璋冨害绯荤粺锛�</text>
+          <text class="section-text">
+            鍦ㄦ偍浣跨敤鎬ユ晳杞繍璋冨害绯荤粺锛堜互涓嬬畝绉�"鏈郴缁�"鎴�"鏈湇鍔�"锛変箣鍓嶏紝璇锋偍浠旂粏闃呰骞跺厖鍒嗙悊瑙f湰銆婄敤鎴锋湇鍔″崗璁�嬶紙浠ヤ笅绠�绉�"鏈崗璁�"锛夈��
+          </text>
+          <text class="section-text">
+            鏈崗璁槸鎮ㄤ笌鏈郴缁熻繍钀ユ柟锛堜互涓嬬畝绉�"鎴戜滑"锛変箣闂村氨浣跨敤鏈郴缁熸墍璁㈢珛鐨勫崗璁�傞�氳繃娉ㄥ唽銆佺櫥褰曟垨浣跨敤鏈郴缁燂紝鍗宠〃绀烘偍宸查槄璇汇�佺悊瑙e苟鍚屾剰鎺ュ彈鏈崗璁殑鍏ㄩ儴鍐呭銆�
+          </text>
+        </view>
+        
+        <view class="section">
+          <text class="section-title">涓�銆佹湇鍔¤鏄�</text>
+          <text class="section-text">
+            1.1 鏈郴缁熸槸涓�涓笓涓氱殑鎬ユ晳杞繍璋冨害绠$悊骞冲彴锛屼负鍖荤枟鏈烘瀯銆佹�ユ晳涓績鍙婄浉鍏冲伐浣滀汉鍛樻彁渚涗换鍔¤皟搴︺�佽溅杈嗙鐞嗐�佷汉鍛樺崗璋冪瓑鏈嶅姟銆�
+          </text>
+          <text class="section-text">
+            1.2 鏈郴缁熸敮鎸佺殑鍔熻兘鍖呮嫭浣嗕笉闄愪簬锛�
+          </text>
+          <text class="section-text indent">
+            路 鎬ユ晳杞繍浠诲姟鍒涘缓涓庣鐞�
+          </text>
+          <text class="section-text indent">
+            路 绂忕杞︽湇鍔′换鍔$鐞�
+          </text>
+          <text class="section-text indent">
+            路 杞﹁締璋冨害涓庡畾浣嶈窡韪�
+          </text>
+          <text class="section-text indent">
+            路 浜哄憳鍒嗛厤涓庡崗浣�
+          </text>
+          <text class="section-text indent">
+            路 浠诲姟鐘舵�佸疄鏃舵洿鏂�
+          </text>
+          <text class="section-text indent">
+            路 娑堟伅閫氱煡涓庢彁閱�
+          </text>
+          <text class="section-text">
+            1.3 鎴戜滑灏嗘牴鎹笟鍔″彂灞曢渶瑕侊紝涓嶅畾鏈熷湴瀵规湰绯荤粺鍙婄浉鍏冲姛鑳借繘琛岃皟鏁淬�佸崌绾ф垨浼樺寲銆�
+          </text>
+        </view>
+        
+        <view class="section">
+          <text class="section-title">浜屻�佽处鍙锋敞鍐屼笌浣跨敤</text>
+          <text class="section-text">
+            2.1 鎮ㄩ渶瑕侀�氳繃鍚堟硶閫斿緞娉ㄥ唽骞惰幏寰楁湰绯荤粺璐﹀彿锛岃处鍙风敱绯荤粺绠$悊鍛樼粺涓�鍒嗛厤鍜岀鐞嗐��
+          </text>
+          <text class="section-text">
+            2.2 鎮ㄥ簲褰撳Ε鍠勪繚绠¤处鍙峰強瀵嗙爜锛屼笉寰楀皢璐﹀彿杞銆佸嚭鍊熸垨浠ュ叾浠栨柟寮忔彁渚涚粰浠栦汉浣跨敤銆傚洜鎮ㄤ繚绠′笉鍠勫鑷寸殑璐﹀彿琚洍鐢ㄧ瓑鎹熷け鐢辨偍鑷鎵挎媴銆�
+          </text>
+          <text class="section-text">
+            2.3 鎮ㄦ壙璇烘彁渚涚殑娉ㄥ唽淇℃伅鐪熷疄銆佸噯纭�佸畬鏁达紝骞跺強鏃舵洿鏂扮浉鍏充俊鎭�傚鍥犳彁渚涜櫄鍋囦俊鎭�犳垚鐨勪竴鍒囧悗鏋滅敱鎮ㄨ嚜琛屾壙鎷呫��
+          </text>
+          <text class="section-text">
+            2.4 鎮ㄧ悊瑙e苟鍚屾剰锛屾偍鐨勮处鍙蜂粎闄愭湰浜轰娇鐢紝绂佹璧犱笌銆佸�熺敤銆佺鐢ㄣ�佽浆璁╂垨鍞崠銆�
+          </text>
+        </view>
+        
+        <view class="section">
+          <text class="section-title">涓夈�佺敤鎴疯涓鸿鑼�</text>
+          <text class="section-text">
+            3.1 鎮ㄥ湪浣跨敤鏈郴缁熸椂锛屽簲褰撻伒瀹堜腑鍗庝汉姘戝叡鍜屽浗鐩稿叧娉曞緥娉曡锛屼笉寰楀埄鐢ㄦ湰绯荤粺浠庝簨杩濇硶杩濊娲诲姩銆�
+          </text>
+          <text class="section-text">
+            3.2 鎮ㄤ笉寰楄繘琛屼互涓嬭涓猴細
+          </text>
+          <text class="section-text indent">
+            路 鍙戝竷銆佷紶鎾繚娉曡繚瑙勪俊鎭�
+          </text>
+          <text class="section-text indent">
+            路 渚电姱浠栦汉鐭ヨ瘑浜ф潈銆佸晢涓氱瀵嗘垨鍏朵粬鍚堟硶鏉冪泭
+          </text>
+          <text class="section-text indent">
+            路 鎭舵剰鏀诲嚮銆佺牬鍧忕郴缁熷畨鍏�
+          </text>
+          <text class="section-text indent">
+            路 浼犳挱璁$畻鏈虹梾姣掓垨鍏朵粬鐮村潖鎬х▼搴�
+          </text>
+          <text class="section-text indent">
+            路 鍒╃敤绯荤粺婕忔礊璋嬪彇涓嶆褰撳埄鐩�
+          </text>
+          <text class="section-text indent">
+            路 骞叉壈绯荤粺姝e父杩愯
+          </text>
+          <text class="section-text indent">
+            路 褰曚换鎰忕紪閫犮�佹崗閫犺櫄鍋囦换鍔′俊鎭�
+          </text>
+          <text class="section-text">
+            3.3 鎮ㄥ簲褰撴寜鐓х湡瀹炴儏鍐靛~鍐欎换鍔′俊鎭紝纭繚鎮h�呬俊鎭�佸湴鍧�淇℃伅绛夊噯纭棤璇紝浠ヤ繚闅滄�ユ晳鏈嶅姟鐨勫強鏃舵�у拰鏈夋晥鎬с��
+          </text>
+          <text class="section-text">
+            3.4 浣滀负鎬ユ晳杞繍宸ヤ綔浜哄憳锛屾偍搴斿綋锛�
+          </text>
+          <text class="section-text indent">
+            路 鍙婃椂鍝嶅簲浠诲姟鍒嗛厤
+          </text>
+          <text class="section-text indent">
+            路 鍑嗙‘鏇存柊浠诲姟鐘舵��
+          </text>
+          <text class="section-text indent">
+            路 閬靛畧鑱屼笟閬撳痉鍜屾搷浣滆鑼�
+          </text>
+          <text class="section-text indent">
+            路 淇濇姢鎮h�呴殣绉佸拰涓汉淇℃伅
+          </text>
+        </view>
+        
+        <view class="section">
+          <text class="section-title">鍥涖�侀殣绉佷繚鎶�</text>
+          <text class="section-text">
+            4.1 鎴戜滑闈炲父閲嶈鐢ㄦ埛闅愮淇濇姢锛屽皢鎸夌収銆婇殣绉佹斂绛栥�嬬殑绾﹀畾鏀堕泦銆佷娇鐢ㄣ�佸瓨鍌ㄥ拰淇濇姢鎮ㄧ殑涓汉淇℃伅銆�
+          </text>
+          <text class="section-text">
+            4.2 鍦ㄤ娇鐢ㄦ湰绯荤粺杩囩▼涓紝鎴戜滑鍙兘闇�瑕佹敹闆嗕互涓嬩俊鎭細
+          </text>
+          <text class="section-text indent">
+            路 鍩烘湰淇℃伅锛氬鍚嶃�佹墜鏈哄彿鐮併�佹墍灞為儴闂ㄧ瓑
+          </text>
+          <text class="section-text indent">
+            路 浣嶇疆淇℃伅锛氱敤浜庝换鍔″畾浣嶅拰杞﹁締璺熻釜
+          </text>
+          <text class="section-text indent">
+            路 璁惧淇℃伅锛氱敤浜庣郴缁熶紭鍖栧拰闂鎺掓煡
+          </text>
+          <text class="section-text indent">
+            路 鎿嶄綔鏃ュ織锛氱敤浜庢湇鍔℃敼杩涘拰瀹夊叏淇濋殰
+          </text>
+          <text class="section-text">
+            4.3 鏈粡鎮ㄥ悓鎰忥紝鎴戜滑涓嶄細鍚戠涓夋柟鎻愪緵銆佸嚭鍞�佸嚭绉熴�佸垎浜垨浜ゆ槗鎮ㄧ殑涓汉淇℃伅銆�
+          </text>
+        </view>
+        
+        <view class="section">
+          <text class="section-title">浜斻�佺煡璇嗕骇鏉�</text>
+          <text class="section-text">
+            5.1 鏈郴缁熷強鍏跺寘鍚殑鎵�鏈夊唴瀹癸紙鍖呮嫭浣嗕笉闄愪簬鏂囧瓧銆佸浘鐗囥�佽蒋浠躲�佺▼搴忋�佹暟鎹瓑锛夌殑鐭ヨ瘑浜ф潈鍧囧綊鎴戜滑鎵�鏈夋垨宸茶幏寰楀悎娉曟巿鏉冦��
+          </text>
+          <text class="section-text">
+            5.2 鏈粡鎴戜滑涔﹂潰璁稿彲锛屾偍涓嶅緱浠ヤ换浣曞舰寮忓鍒躲�佷紶鎾�佸睍绀恒�侀暅鍍忋�佷笂浼犮�佷笅杞芥湰绯荤粺鐨勪换浣曞唴瀹广��
+          </text>
+          <text class="section-text">
+            5.3 鎮ㄥ湪浣跨敤鏈郴缁熻繃绋嬩腑鍒涘缓鐨勪换鍔℃暟鎹�佹搷浣滆褰曠瓑锛屽叾浣跨敤鏉冨綊鎮ㄦ墍鏈夛紝浣嗘垜浠湁鏉冨皢鍏剁敤浜庣粺璁″垎鏋愩�佹湇鍔℃敼杩涚瓑鐩殑銆�
+          </text>
+        </view>
+        
+        <view class="section">
+          <text class="section-title">鍏�佹湇鍔′腑鏂垨缁堟</text>
+          <text class="section-text">
+            6.1 鍦ㄤ互涓嬫儏鍐典笅锛屾垜浠湁鏉冧腑鏂垨缁堟鍚戞偍鎻愪緵鏈嶅姟锛�
+          </text>
+          <text class="section-text indent">
+            路 鎮ㄨ繚鍙嶆湰鍗忚鐨勪换浣曠害瀹�
+          </text>
+          <text class="section-text indent">
+            路 绯荤粺缁存姢銆佸崌绾ч渶瑕�
+          </text>
+          <text class="section-text indent">
+            路 涓嶅彲鎶楀姏鎴栧叾浠栦笉鍙帶鍥犵礌
+          </text>
+          <text class="section-text indent">
+            路 鏀垮簻閮ㄩ棬銆佸徃娉曟満鍏崇殑瑕佹眰
+          </text>
+          <text class="section-text">
+            6.2 鍥犵郴缁熺淮鎶ゆ垨鍗囩骇绛夊師鍥犻渶瑕佹殏鍋滄湇鍔$殑锛屾垜浠皢灏藉彲鑳戒簨鍏堥�氱煡鎮ㄣ��
+          </text>
+          <text class="section-text">
+            6.3 濡傛灉鎮ㄤ笉鍐嶄娇鐢ㄦ湰绯荤粺锛屽彲浠ョ敵璇锋敞閿�璐﹀彿銆傝处鍙锋敞閿�鍚庯紝鎮ㄥ皢鏃犳硶鍐嶄娇鐢ㄨ璐﹀彿锛屼笖鏃犳硶鎭㈠鐩稿叧鏁版嵁銆�
+          </text>
+        </view>
+        
+        <view class="section">
+          <text class="section-title">涓冦�佸厤璐e0鏄�</text>
+          <text class="section-text">
+            7.1 鏈郴缁熶粎浣滀负鎬ユ晳杞繍璋冨害绠$悊宸ュ叿锛屾垜浠浠ヤ笅鎯呭喌涓嶆壙鎷呰矗浠伙細
+          </text>
+          <text class="section-text indent">
+            路 鍥犵敤鎴锋搷浣滀笉褰撳鑷寸殑浠讳綍鎹熷け
+          </text>
+          <text class="section-text indent">
+            路 鍥犵綉缁滄晠闅溿�佽澶囨晠闅滅瓑鎶�鏈師鍥犲鑷寸殑鏈嶅姟涓柇
+          </text>
+          <text class="section-text indent">
+            路 鍥犱笉鍙姉鍔涘鑷寸殑鏈嶅姟涓柇鎴栨暟鎹涪澶�
+          </text>
+          <text class="section-text indent">
+            路 鐢ㄦ埛涔嬮棿鍥犱娇鐢ㄦ湰绯荤粺浜х敓鐨勭籂绾�
+          </text>
+          <text class="section-text">
+            7.2 鏈郴缁熸彁渚涚殑瀹氫綅銆佸鑸瓑鍔熻兘浠呬緵鍙傝�冿紝瀹為檯鎵ц浠诲姟鏃惰浠ョ幇鍦哄疄闄呮儏鍐典负鍑嗐��
+          </text>
+          <text class="section-text">
+            7.3 鎴戜滑瀵规湰绯荤粺涓涓夋柟鎻愪緵鐨勬湇鍔℃垨鍐呭涓嶆壙鎷呰矗浠汇��
+          </text>
+        </view>
+        
+        <view class="section">
+          <text class="section-title">鍏�佸崗璁彉鏇�</text>
+          <text class="section-text">
+            8.1 鎴戜滑鏈夋潈鏍规嵁闇�瑕佷慨鏀规湰鍗忚鐨勫唴瀹癸紝淇敼鍚庣殑鍗忚灏嗗湪绯荤粺鍐呭叕甯冦��
+          </text>
+          <text class="section-text">
+            8.2 濡傛灉鎮ㄤ笉鍚屾剰淇敼鍚庣殑鍗忚鍐呭锛屾偍鏈夋潈鍋滄浣跨敤鏈郴缁熴�傚鏋滄偍缁х画浣跨敤鏈郴缁燂紝鍒欒涓烘偍鎺ュ彈淇敼鍚庣殑鍗忚銆�
+          </text>
+        </view>
+        
+        <view class="section">
+          <text class="section-title">涔濄�佷簤璁В鍐�</text>
+          <text class="section-text">
+            9.1 鏈崗璁殑璁㈢珛銆佹墽琛屽拰瑙i噴鍙婁簤璁殑瑙e喅鍧囧簲閫傜敤涓崕浜烘皯鍏卞拰鍥芥硶寰嬨��
+          </text>
+          <text class="section-text">
+            9.2 濡傚弻鏂瑰氨鏈崗璁唴瀹规垨鍏舵墽琛屽彂鐢熶换浣曚簤璁紝鍙屾柟搴斿敖閲忓弸濂藉崗鍟嗚В鍐筹紱鍗忓晢涓嶆垚鏃讹紝浠讳綍涓�鏂瑰潎鍙悜鎴戜滑鎵�鍦ㄥ湴浜烘皯娉曢櫌鎻愯捣璇夎銆�
+          </text>
+        </view>
+        
+        <view class="section">
+          <text class="section-title">鍗併�佸叾浠�</text>
+          <text class="section-text">
+            10.1 鏈崗璁瀯鎴愭偍涓庢垜浠箣闂村叧浜庝娇鐢ㄦ湰绯荤粺鐨勫畬鏁村崗璁紝鍙栦唬鍙屾柟涔嬪墠灏辩浉鍚屼簨椤硅揪鎴愮殑浠讳綍鍙eご鎴栦功闈㈠崗璁��
+          </text>
+          <text class="section-text">
+            10.2 濡傛湰鍗忚鐨勪换浣曟潯娆捐瑙嗕负鏃犳晥鎴栨棤娉曟墽琛岋紝璇ユ潯娆惧簲浜堜互鍒犻櫎锛屽叾浣欐潯娆剧户缁湁鏁堛��
+          </text>
+          <text class="section-text">
+            10.3 鎴戜滑瀵规湰鍗忚鎷ユ湁鏈�缁堣В閲婃潈銆�
+          </text>
+        </view>
+        
+        <view class="section">
+          <text class="section-title">鍗佷竴銆佽仈绯绘垜浠�</text>
+          <text class="section-text">
+            濡傛偍瀵规湰鍗忚鏈変换浣曠枒闂�佹剰瑙佹垨寤鸿锛岃閫氳繃浠ヤ笅鏂瑰紡鑱旂郴鎴戜滑锛�
+          </text>
+          <text class="section-text">
+            鐢靛瓙閭锛歸anglizhong@966129.com.cn
+          </text>
+          <text class="section-text">
+            瀹㈡湇鐢佃瘽锛�966120
+          </text>
+          <text class="section-text">
+            宸ヤ綔鏃堕棿锛氬懆涓�鑷冲懆鏃� 24灏忔椂
+          </text>
+        </view>
+        
+        <view class="footer">
+          <text class="footer-text">鍐嶆鎰熻阿鎮ㄩ�夋嫨浣跨敤骞夸笢姘戣埅璋冨害绯荤粺锛�</text>
+        </view>
+      </view>
+    </scroll-view>
+  </view>
+</template>
+
+<script>
+  export default {
+    data() {
+      return {}
+    },
+    methods: {
+      goBack() {
+        uni.navigateBack()
+      }
+    }
+  }
+</script>
+
+<style lang="scss">
+  .agreement-container {
+    height: 100vh;
+    display: flex;
+    flex-direction: column;
+    background-color: #f5f5f5;
+    
+    .header {
+      display: flex;
+      align-items: center;
+      padding: 20rpx;
+      background-color: white;
+      border-bottom: 1rpx solid #f0f0f0;
+      
+      .back-btn {
+        width: 60rpx;
+        height: 60rpx;
+        border-radius: 50%;
+        background-color: #f0f0f0;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        margin-right: 20rpx;
+      }
+      
+      .title {
+        font-size: 36rpx;
+        font-weight: bold;
+        color: #333;
+      }
+    }
+    
+    .content {
+      flex: 1;
+      padding: 30rpx;
+    }
+    
+    .agreement-content {
+      background-color: white;
+      border-radius: 15rpx;
+      padding: 40rpx 30rpx;
+      
+      .update-time,
+      .effect-time {
+        font-size: 24rpx;
+        color: #999;
+        margin-bottom: 10rpx;
+      }
+      
+      .section {
+        margin-top: 40rpx;
+        
+        &:first-child {
+          margin-top: 30rpx;
+        }
+        
+        .section-title {
+          display: block;
+          font-size: 32rpx;
+          font-weight: bold;
+          color: #333;
+          margin-bottom: 20rpx;
+          line-height: 1.5;
+        }
+        
+        .section-text {
+          display: block;
+          font-size: 28rpx;
+          color: #666;
+          line-height: 1.8;
+          margin-bottom: 15rpx;
+          text-align: justify;
+          
+          &.indent {
+            padding-left: 40rpx;
+            position: relative;
+            
+            &::before {
+              content: '';
+              position: absolute;
+              left: 20rpx;
+              top: 18rpx;
+              width: 8rpx;
+              height: 8rpx;
+              background-color: #666;
+              border-radius: 50%;
+            }
+          }
+        }
+      }
+      
+      .footer {
+        margin-top: 60rpx;
+        padding-top: 40rpx;
+        border-top: 1rpx solid #f0f0f0;
+        text-align: center;
+        
+        .footer-text {
+          font-size: 28rpx;
+          color: #007AFF;
+          font-weight: bold;
+        }
+      }
+    }
+  }
+</style>
diff --git a/app/pages/register.vue b/app/pages/register.vue
index 61e6d5c..c1bf188 100644
--- a/app/pages/register.vue
+++ b/app/pages/register.vue
@@ -25,6 +25,22 @@
           <image :src="codeUrl" @click="getCode" class="login-code-img"></image>
         </view>
       </view>
+      
+      <!-- 鍗忚鍚屾剰 -->
+      <view class="agreement-section">
+        <checkbox-group @change="handleAgreementChange">
+          <label class="agreement-label">
+            <checkbox value="agreed" :checked="agreedToTerms" color="#007AFF" />
+            <text class="agreement-text">
+              鎴戝凡闃呰骞跺悓鎰�
+              <text class="agreement-link" @click.stop="handleUserAgreement">銆婄敤鎴锋湇鍔″崗璁��</text>
+              鍜�
+              <text class="agreement-link" @click.stop="handlePrivacy">銆婇殣绉佹斂绛栥��</text>
+            </text>
+          </label>
+        </checkbox-group>
+      </view>
+      
       <view class="action-btn">
         <button @click="handleRegister()" class="register-btn cu-btn block bg-blue lg round">娉ㄥ唽</button>
       </view>
@@ -43,6 +59,7 @@
       return {
         codeUrl: "",
         captchaEnabled: true,
+        agreedToTerms: false,
         globalConfig: getApp().globalData.config,
         registerForm: {
           username: "",
@@ -60,6 +77,18 @@
       // 鐢ㄦ埛鐧诲綍
       handleUserLogin() {
         this.$tab.navigateTo(`/pages/login`)
+      },
+      // 鍗忚閫夋嫨鍙樻洿
+      handleAgreementChange(e) {
+        this.agreedToTerms = e.detail.value.length > 0
+      },
+      // 鐢ㄦ埛鍗忚
+      handleUserAgreement() {
+        this.$tab.navigateTo('/pages/mine/user-agreement/index')
+      },
+      // 闅愮鏀跨瓥
+      handlePrivacy() {
+        this.$tab.navigateTo('/pages/mine/privacy-policy/index')
       },
       // 鑾峰彇鍥惧舰楠岃瘉鐮�
       getCode() {
@@ -83,6 +112,8 @@
           this.$modal.msgError("涓ゆ杈撳叆鐨勫瘑鐮佷笉涓�鑷�")
         } else if (this.registerForm.code === "" && this.captchaEnabled) {
           this.$modal.msgError("璇疯緭鍏ラ獙璇佺爜")
+        } else if (!this.agreedToTerms) {
+          this.$modal.msgError("璇峰厛闃呰骞跺悓鎰忕敤鎴锋湇鍔″崗璁拰闅愮鏀跨瓥")
         } else {
           this.$modal.loading("娉ㄥ唽涓紝璇疯�愬績绛夊緟...")
           this.register()
@@ -179,6 +210,38 @@
         margin-top: 20px;
       }
       
+      .agreement-section {
+        margin: 30rpx 0;
+        
+        .agreement-label {
+          display: flex;
+          align-items: flex-start;
+          
+          checkbox {
+            margin-right: 15rpx;
+            transform: scale(0.9);
+            flex-shrink: 0;
+          }
+          
+          .agreement-text {
+            flex: 1;
+            font-size: 26rpx;
+            color: #666;
+            line-height: 2;
+            text-align: left;
+            
+            .agreement-link {
+              color: #007AFF;
+              text-decoration: underline;
+              padding: 8rpx 5rpx;
+              display: inline-block;
+              position: relative;
+              z-index: 10;
+            }
+          }
+        }
+      }
+      
       .login-code {
         height: 38px;
         float: right;
diff --git a/app/pages/task/detail.vue b/app/pages/task/detail.vue
index 425a13a..f58d624 100644
--- a/app/pages/task/detail.vue
+++ b/app/pages/task/detail.vue
@@ -20,7 +20,7 @@
         </view>
         <view class="info-item">
           <view class="label">浠诲姟鐘舵��</view>
-          <view class="value status" :class="taskDetail.taskStatus.toLowerCase()">
+          <view class="value status" :class="taskDetail.taskStatus === 'PENDING' ? 'pending' : taskDetail.taskStatus === 'DEPARTING' ? 'in_progress' : taskDetail.taskStatus === 'ARRIVED' ? 'in_progress' : taskDetail.taskStatus === 'RETURNING' ? 'in_progress' : taskDetail.taskStatus === 'IN_PROGRESS' ? 'in_progress' : taskDetail.taskStatus === 'COMPLETED' ? 'completed' : taskDetail.taskStatus === 'CANCELLED' ? 'cancelled' : ''">
             {{ getStatusText(taskDetail.taskStatus) }}
           </view>
         </view>
diff --git a/app/pages/task/index.vue b/app/pages/task/index.vue
index d5b0655..6fa2349 100644
--- a/app/pages/task/index.vue
+++ b/app/pages/task/index.vue
@@ -113,7 +113,7 @@
               <!-- 浠诲姟澶撮儴锛氭爣棰樺拰鐘舵�佹爣绛� -->
               <view class="task-header">
                 <view class="task-title">{{ getTaskTypeText(task.taskType) }} - {{ task.vehicle }}</view>
-                <view class="task-status" :class="getStatusClass(task.taskStatus)">
+                <view class="task-status" :class="task.taskStatus === 'PENDING' ? 'status-pending' : task.taskStatus === 'DEPARTING' ? 'status-departing' : task.taskStatus === 'ARRIVED' ? 'status-arrived' : task.taskStatus === 'RETURNING' ? 'status-returning' : task.taskStatus === 'COMPLETED' ? 'status-completed' : task.taskStatus === 'CANCELLED' ? 'status-cancelled' : task.taskStatus === 'IN_PROGRESS' ? 'status-in-progress' : 'status-default'">
                   {{ getStatusText(task.taskStatus) }}
                 </view>
               </view>
diff --git a/app/permission.js b/app/permission.js
index cbaec53..43daf70 100644
--- a/app/permission.js
+++ b/app/permission.js
@@ -5,7 +5,11 @@
   
 // 椤甸潰鐧藉悕鍗�
 const whiteList = [
-  '/pages/login', '/pages/register', '/pages/common/webview/index'
+  '/pages/login', 
+  '/pages/register', 
+  '/pages/common/webview/index',
+  '/pages/mine/privacy-policy/index',  // 闅愮鏀跨瓥锛堝尶鍚嶈闂級
+  '/pages/mine/user-agreement/index'   // 鐢ㄦ埛鍗忚锛堝尶鍚嶈闂級
 ]
 
 // 妫�鏌ュ湴鍧�鐧藉悕鍗�
diff --git "a/app/\345\260\217\347\250\213\345\272\217\346\234\254\345\234\260\350\260\203\350\257\225\351\205\215\347\275\256\346\214\207\345\215\227.md" "b/app/\345\260\217\347\250\213\345\272\217\346\234\254\345\234\260\350\260\203\350\257\225\351\205\215\347\275\256\346\214\207\345\215\227.md"
new file mode 100644
index 0000000..2e7331f
--- /dev/null
+++ "b/app/\345\260\217\347\250\213\345\272\217\346\234\254\345\234\260\350\260\203\350\257\225\351\205\215\347\275\256\346\214\207\345\215\227.md"
@@ -0,0 +1,598 @@
+# 寰俊灏忕▼搴忔湰鍦版帴鍙h皟璇曢厤缃寚鍗�
+
+## 涓�銆佸綋鍓嶉厤缃姸鎬�
+
+### 1.1 鍚庣鎺ュ彛鍦板潃閰嶇疆
+
+**鏂囦欢浣嶇疆**: `app/config.js`
+
+```javascript
+module.exports = {
+  baseUrl: 'http://localhost:8080',  // 鉁� 宸查厤缃负鏈湴鎺ュ彛
+  // ...鍏朵粬閰嶇疆
+}
+```
+
+### 1.2 闂璇存槑
+
+寰俊灏忕▼搴忛粯璁�**涓嶅厑璁歌闂湰鍦版帴鍙�**锛坙ocalhost 鎴� 127.0.0.1锛夛紝浼氭姤浠ヤ笅閿欒锛�
+
+```
+request:fail url not in domain list
+// 鎴�
+request:fail -104:net::ERR_CONNECTION_FAILED
+```
+
+## 浜屻�佽В鍐虫柟妗堬紙3绉嶆柟娉曪級
+
+### 鏂规1锛氬紑鍙戣�呭伐鍏蜂腑鍏抽棴鍩熷悕鏍¢獙锛堟帹鑽愮敤浜庡紑鍙戣皟璇曪級
+
+杩欐槸鏈�绠�鍗曞揩閫熺殑鏂规硶锛岄�傚悎鏈湴寮�鍙戣皟璇曘��
+
+#### 姝ラ锛�
+
+1. **鎵撳紑寰俊寮�鍙戣�呭伐鍏�**
+   - 纭繚宸插畨瑁呭井淇″紑鍙戣�呭伐鍏�
+   - 瀵煎叆椤圭洰锛氶�夋嫨 `app` 鐩綍
+
+2. **鍏抽棴鍩熷悕鏍¢獙**
+   - 鐐瑰嚮鍙充笂瑙�"璇︽儏"鎸夐挳
+   - 鍒囨崲鍒�"鏈湴璁剧疆"閫夐」鍗�
+   - 鍕鹃�� 鉁� **涓嶆牎楠屽悎娉曞煙鍚嶃�亀eb-view锛堜笟鍔″煙鍚嶏級銆乀LS 鐗堟湰浠ュ強 HTTPS 璇佷功**
+
+3. **纭閰嶇疆鐢熸晥**
+   ```javascript
+   // app/config.js 淇濇寔
+   baseUrl: 'http://localhost:8080'
+   ```
+
+4. **閲嶆柊缂栬瘧**
+   - 鐐瑰嚮"缂栬瘧"鎸夐挳
+   - 鏌ョ湅鎺у埗鍙版槸鍚︽湁缃戠粶璇锋眰
+
+#### 浼樼偣锛�
+- 鉁� 閰嶇疆绠�鍗曪紝绔嬪嵆鐢熸晥
+- 鉁� 閫傚悎寮�鍙戣皟璇�
+- 鉁� 涓嶉渶瑕佷慨鏀逛唬鐮�
+
+#### 缂虹偣锛�
+- 鉂� 浠呭湪寮�鍙戣�呭伐鍏蜂腑鏈夋晥
+- 鉂� 鐪熸満棰勮鏃舵棤鏁�
+- 鉂� 姝e紡鐗堟湰蹇呴』閰嶇疆鍚堟硶鍩熷悕
+
+---
+
+### 鏂规2锛氫娇鐢ㄥ唴缃慖P鍦板潃锛堟帹鑽愮敤浜庣湡鏈鸿皟璇曪級
+
+浣跨敤鐢佃剳鐨勫唴缃慖P鍦板潃鏇夸唬localhost锛屽彲浠ヨ鎵嬫満璁块棶鐢佃剳涓婄殑鍚庣鏈嶅姟銆�
+
+#### 姝ラ锛�
+
+1. **鏌ユ壘鐢佃剳鍐呯綉IP**
+
+   **Windows绯荤粺**锛�
+   ```bash
+   # 鍛戒护琛屾墽琛�
+   ipconfig
+   
+   # 鏌ユ壘绫讳技杩欐牱鐨勫湴鍧�
+   IPv4 鍦板潃 . . . . . . . . . . . . : 192.168.1.100
+   ```
+
+   **Mac/Linux绯荤粺**锛�
+   ```bash
+   # 缁堢鎵ц
+   ifconfig
+   
+   # 鎴�
+   ip addr show
+   
+   # 鏌ユ壘浠� 192.168.x.x 鎴� 10.x.x.x 寮�澶寸殑鍦板潃
+   ```
+
+2. **淇敼閰嶇疆鏂囦欢**
+
+   **鏂规硶A锛氱洿鎺ヤ慨鏀筩onfig.js锛堢畝鍗曚絾涓嶇伒娲伙級**
+   ```javascript
+   // app/config.js
+   module.exports = {
+     baseUrl: 'http://192.168.1.100:8080',  // 鏀逛负浣犵殑鍐呯綉IP
+     // ...
+   }
+   ```
+
+   **鏂规硶B锛氱幆澧冨彉閲忛厤缃紙鎺ㄨ崘锛�**
+   ```javascript
+   // app/config.js
+   module.exports = {
+     // 鏍规嵁杩愯鐜鑷姩閫夋嫨
+     baseUrl: process.env.NODE_ENV === 'development' 
+       ? 'http://192.168.1.100:8080'  // 寮�鍙戠幆澧冿細鍐呯綉IP
+       : 'https://api.yourdomain.com',  // 鐢熶骇鐜锛氱嚎涓婂煙鍚�
+     // ...
+   }
+   ```
+
+3. **纭繚鍚庣鍏佽璺ㄥ煙璁块棶**
+
+   妫�鏌ュ悗绔厤缃紙RuoYi妗嗘灦榛樿宸查厤缃級锛�
+   ```java
+   // ruoyi-framework/src/main/java/com/ruoyi/framework/config/CorsConfig.java
+   @Override
+   public void addCorsMappings(CorsRegistry registry) {
+       registry.addMapping("/**")
+           .allowedOriginPatterns("*")  // 鍏佽鎵�鏈夋潵婧�
+           .allowCredentials(true)
+           .allowedMethods("GET", "POST", "PUT", "DELETE")
+           .maxAge(3600);
+   }
+   ```
+
+4. **纭繚鐢佃剳闃茬伀澧欏厑璁歌闂�**
+
+   **Windows闃茬伀澧�**锛�
+   - 鎺у埗闈㈡澘 鈫� Windows Defender 闃茬伀澧� 鈫� 楂樼骇璁剧疆
+   - 鍏ョ珯瑙勫垯 鈫� 鏂板缓瑙勫垯 鈫� 绔彛 鈫� TCP 鈫� 鐗瑰畾绔彛 8080
+   - 鍏佽杩炴帴
+
+   **涓存椂鍏抽棴闃茬伀澧欐祴璇�**锛�
+   ```bash
+   # Windows锛堢鐞嗗憳鏉冮檺锛�
+   netsh advfirewall set allprofiles state off
+   
+   # 娴嬭瘯瀹屾垚鍚庤寰楁墦寮�
+   netsh advfirewall set allprofiles state on
+   ```
+
+5. **鎵嬫満鍜岀數鑴戣繛鎺ュ悓涓�WiFi**
+   - 纭繚鎵嬫満鍜岀數鑴戝湪鍚屼竴灞�鍩熺綉
+   - 鎵撳紑寰俊寮�鍙戣�呭伐鍏� 鈫� 棰勮 鈫� 鎵爜鐪熸満璋冭瘯
+
+#### 浼樼偣锛�
+- 鉁� 鍙互鐪熸満璋冭瘯
+- 鉁� 鍥㈤槦鎴愬憳鍙互鍏变韩璋冭瘯
+- 鉁� 鎺ヨ繎鐪熷疄鐜
+
+#### 缂虹偣锛�
+- 鉂� IP鍦板潃鍙兘浼氬彉鍖�
+- 鉂� 闇�瑕侀厤缃槻鐏
+- 鉂� 浠呴檺鍚屼竴灞�鍩熺綉
+
+---
+
+### 鏂规3锛氫娇鐢ㄥ唴缃戠┛閫忓伐鍏凤紙鎺ㄨ崘鐢ㄤ簬杩滅▼璋冭瘯锛�
+
+浣跨敤鍐呯綉绌块�忓伐鍏凤紙濡傝姳鐢熷3銆乶grok銆丗RP锛夊皢鏈湴鏈嶅姟鏄犲皠鍒板叕缃戝煙鍚嶃��
+
+#### 3.1 浣跨敤 ngrok锛堝厤璐逛笖绠�鍗曪級
+
+1. **涓嬭浇瀹夎 ngrok**
+   - 瀹樼綉锛歨ttps://ngrok.com/
+   - 涓嬭浇瀵瑰簲绯荤粺鐗堟湰
+   - 娉ㄥ唽璐﹀彿鑾峰彇authtoken
+
+2. **鍚姩鍚庣鏈嶅姟**
+   ```bash
+   # 纭繚鍚庣杩愯鍦�8080绔彛
+   cd RuoYi-Vue-master
+   java -jar ruoyi-admin.jar
+   ```
+
+3. **鍚姩 ngrok**
+   ```bash
+   # Windows
+   ngrok.exe http 8080
+   
+   # Mac/Linux
+   ./ngrok http 8080
+   ```
+
+4. **鑾峰彇鍏綉鍦板潃**
+   ```
+   Session Status    online
+   Forwarding        https://abc123.ngrok.io -> http://localhost:8080
+                     ^^^^^^^^^^^^^^^^^^^^^^^^
+                     杩欏氨鏄綘鐨勫叕缃戝湴鍧�
+   ```
+
+5. **淇敼閰嶇疆**
+   ```javascript
+   // app/config.js
+   module.exports = {
+     baseUrl: 'https://abc123.ngrok.io',  // ngrok鎻愪緵鐨勫湴鍧�
+     // ...
+   }
+   ```
+
+6. **鍦ㄥ井淇″皬绋嬪簭鍚庡彴閰嶇疆鍩熷悕**
+   - 鐧诲綍寰俊鍏紬骞冲彴锛歨ttps://mp.weixin.qq.com
+   - 寮�鍙� 鈫� 寮�鍙戠鐞� 鈫� 寮�鍙戣缃� 鈫� 鏈嶅姟鍣ㄥ煙鍚�
+   - 閰嶇疆 request鍚堟硶鍩熷悕锛歚https://abc123.ngrok.io`
+
+#### 3.2 浣跨敤鑺辩敓澹筹紙鍥藉唴绋冲畾锛�
+
+1. **涓嬭浇瀹夎鑺辩敓澹�**
+   - 瀹樼綉锛歨ttps://hsk.oray.com/
+   - 娉ㄥ唽璐﹀彿
+
+2. **鍒涘缓鍐呯綉绌块�忔槧灏�**
+   - 鍐呯綉涓绘満锛歭ocalhost
+   - 鍐呯綉绔彛锛�8080
+   - 澶栫綉鍩熷悕锛氱郴缁熷垎閰嶏紙濡� xxx.vicp.fun锛�
+
+3. **淇敼閰嶇疆**
+   ```javascript
+   // app/config.js
+   module.exports = {
+     baseUrl: 'http://xxx.vicp.fun',  // 鑺辩敓澹虫彁渚涚殑鍩熷悕
+     // ...
+   }
+   ```
+
+#### 浼樼偣锛�
+- 鉁� 鍙互杩滅▼璁块棶
+- 鉁� 绋冲畾鐨勫煙鍚�
+- 鉁� 鏀寔HTTPS
+
+#### 缂虹偣锛�
+- 鉂� 闇�瑕佺涓夋柟鏈嶅姟
+- 鉂� 鍏嶈垂鐗堟湁闄愬埗
+- 鉂� 鍙兘鏈夊欢杩�
+
+---
+
+## 涓夈�佹帹鑽愰厤缃柟妗�
+
+### 3.1 澶氱幆澧冮厤缃紙鏈�浣冲疄璺碉級
+
+淇敼 `app/config.js`锛屾敮鎸佸鐜鑷姩鍒囨崲锛�
+
+```javascript
+// app/config.js
+
+// 鐜閰嶇疆
+const ENV_CONFIG = {
+  // 寮�鍙戠幆澧�
+  development: {
+    baseUrl: 'http://192.168.1.100:8080',  // 淇敼涓轰綘鐨勫唴缃慖P
+    description: '寮�鍙戠幆澧�'
+  },
+  // 娴嬭瘯鐜
+  test: {
+    baseUrl: 'http://test.yourdomain.com',
+    description: '娴嬭瘯鐜'
+  },
+  // 鐢熶骇鐜
+  production: {
+    baseUrl: 'https://api.yourdomain.com',
+    description: '鐢熶骇鐜'
+  }
+}
+
+// 褰撳墠鐜锛堟墜鍔ㄥ垏鎹級
+const CURRENT_ENV = 'development'  // 鍙��: development, test, production
+
+// 瀵煎嚭閰嶇疆
+module.exports = {
+  baseUrl: ENV_CONFIG[CURRENT_ENV].baseUrl,
+  
+  // 搴旂敤淇℃伅
+  appInfo: {
+    name: "姘戣埅璋冨害绯荤粺",
+    version: "1.1.0",
+    logo: "/static/logo.png",
+    site_url: "http://ruoyi.vip",
+    
+    // 鐜淇℃伅锛堢敤浜庤皟璇曪級
+    env: CURRENT_ENV,
+    envDescription: ENV_CONFIG[CURRENT_ENV].description,
+    
+    // 鍗忚锛堜娇鐢ㄦ湰鍦伴〉闈級
+    agreements: [
+      {
+        title: "闅愮鏀跨瓥",
+        url: "/pages/mine/privacy-policy/index"
+      },
+      {
+        title: "鐢ㄦ埛鏈嶅姟鍗忚",
+        url: "/pages/mine/user-agreement/index"
+      }
+    ]
+  }
+}
+```
+
+### 3.2 鏄剧ず褰撳墠鐜淇℃伅锛堣皟璇曠敤锛�
+
+鍦ㄩ椤垫樉绀哄綋鍓嶄娇鐢ㄧ殑鎺ュ彛鍦板潃锛�
+
+```vue
+<!-- app/pages/index.vue -->
+<template>
+  <view>
+    <!-- 寮�鍙戠幆澧冩彁绀� -->
+    <view v-if="isDev" class="dev-info">
+      <text>{{ envInfo }}</text>
+    </view>
+    
+    <!-- ...鍏朵粬鍐呭 -->
+  </view>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      isDev: process.env.NODE_ENV === 'development',
+      envInfo: ''
+    }
+  },
+  onLoad() {
+    const config = getApp().globalData.config
+    this.envInfo = `鐜锛�${config.appInfo.envDescription}\n鎺ュ彛锛�${config.baseUrl}`
+  }
+}
+</script>
+
+<style>
+.dev-info {
+  position: fixed;
+  bottom: 0;
+  left: 0;
+  right: 0;
+  background: rgba(255, 0, 0, 0.8);
+  color: white;
+  padding: 10rpx;
+  font-size: 20rpx;
+  text-align: center;
+  z-index: 9999;
+}
+</style>
+```
+
+---
+
+## 鍥涖�佸畬鏁撮厤缃楠わ紙鎺ㄨ崘娴佺▼锛�
+
+### 姝ラ1: 鍚姩鍚庣鏈嶅姟
+
+```bash
+# 杩涘叆鍚庣椤圭洰鐩綍
+cd d:\project\鎬ユ晳杞繍\code\Api\RuoYi-Vue-master
+
+# 鍚姩鍚庣锛堢‘淇濈鍙�8080锛�
+# 鏂规硶1: IDEA鐩存帴杩愯 RuoYiApplication.java
+# 鏂规硶2: 鍛戒护琛岃繍琛�
+mvn spring-boot:run
+```
+
+### 姝ラ2: 鏌ユ壘鐢佃剳鍐呯綉IP
+
+```bash
+# Windows
+ipconfig
+
+# 鎵惧埌绫讳技杩欐牱鐨勫湴鍧�
+浠ュお缃戦�傞厤鍣� 浠ュお缃�:
+   IPv4 鍦板潃 . . . . . . . . . . . . : 192.168.1.100
+```
+
+### 姝ラ3: 淇敼閰嶇疆鏂囦欢
+
+```javascript
+// app/config.js
+module.exports = {
+  baseUrl: 'http://192.168.1.100:8080',  // 鏀逛负浣犵殑IP
+  // ...
+}
+```
+
+### 姝ラ4: 寰俊寮�鍙戣�呭伐鍏烽厤缃�
+
+1. **鎵撳紑椤圭洰**
+   - HBuilderX 鈫� 杩愯 鈫� 杩愯鍒板皬绋嬪簭妯℃嫙鍣� 鈫� 寰俊寮�鍙戣�呭伐鍏�
+   - 鎴栫洿鎺ュ湪寰俊寮�鍙戣�呭伐鍏蜂腑瀵煎叆 `app` 鐩綍
+
+2. **鍏抽棴鍩熷悕鏍¢獙**
+   - 璇︽儏 鈫� 鏈湴璁剧疆
+   - 鉁� 鍕鹃��"涓嶆牎楠屽悎娉曞煙鍚�..."
+
+3. **娓呴櫎缂撳瓨閲嶆柊缂栬瘧**
+   - 宸ュ叿 鈫� 娓呴櫎缂撳瓨 鈫� 娓呴櫎鎵�鏈夌紦瀛�
+   - 鐐瑰嚮"缂栬瘧"
+
+### 姝ラ5: 楠岃瘉閰嶇疆
+
+1. **妫�鏌ョ綉缁滆姹�**
+   - 鎵撳紑璋冭瘯鍣� 鈫� Network
+   - 鐧诲綍绯荤粺锛屾煡鐪嬭姹傚湴鍧�鏄惁姝g‘
+
+2. **娴嬭瘯鎺ュ彛**
+   ```javascript
+   // 鍦ㄦ帶鍒跺彴鎵ц
+   console.log(getApp().globalData.config.baseUrl)
+   // 搴旇杈撳嚭: http://192.168.1.100:8080
+   ```
+
+---
+
+## 浜斻�佸父瑙侀棶棰樻帓鏌�
+
+### 闂1: request:fail url not in domain list
+
+**鍘熷洜**: 鍩熷悕鏍¢獙鏈叧闂�
+
+**瑙e喅**:
+- 寰俊寮�鍙戣�呭伐鍏� 鈫� 璇︽儏 鈫� 鏈湴璁剧疆
+- 鉁� 鍕鹃��"涓嶆牎楠屽悎娉曞煙鍚�..."
+
+---
+
+### 闂2: request:fail -104:net::ERR_CONNECTION_FAILED
+
+**鍘熷洜**: 
+1. 鍚庣鏈嶅姟鏈惎鍔�
+2. IP鍦板潃閿欒
+3. 闃茬伀澧欓樆姝�
+
+**瑙e喅**:
+```bash
+# 1. 妫�鏌ュ悗绔槸鍚﹀惎鍔�
+netstat -ano | findstr 8080
+
+# 2. 妫�鏌P鏄惁姝g‘
+ipconfig
+
+# 3. 娴嬭瘯鍚庣鏄惁鍙闂�
+# 娴忚鍣ㄦ墦寮�: http://192.168.1.100:8080
+```
+
+---
+
+### 闂3: 鐪熸満璋冭瘯鏃犳硶璁块棶
+
+**鍘熷洜**: 鎵嬫満鍜岀數鑴戜笉鍦ㄥ悓涓�WiFi
+
+**瑙e喅**:
+1. 纭繚鎵嬫満鍜岀數鑴戣繛鎺ュ悓涓�WiFi
+2. 浣跨敤鍐呯綉IP鑰岄潪localhost
+3. 妫�鏌ラ槻鐏璁剧疆
+
+---
+
+### 闂4: 璺ㄥ煙閿欒
+
+**鍘熷洜**: 鍚庣鏈厤缃法鍩�
+
+**瑙e喅**:
+```java
+// ruoyi-framework/src/main/java/com/ruoyi/framework/config/CorsConfig.java
+// 纭繚宸查厤缃瓹ORS
+```
+
+---
+
+## 鍏�佷笉鍚屽紑鍙戝伐鍏风殑閰嶇疆
+
+### 6.1 HBuilderX
+
+1. **杩愯鍒板井淇″皬绋嬪簭**
+   - 鑿滃崟 鈫� 杩愯 鈫� 杩愯鍒板皬绋嬪簭妯℃嫙鍣� 鈫� 寰俊寮�鍙戣�呭伐鍏�
+
+2. **閰嶇疆寰俊寮�鍙戣�呭伐鍏疯矾寰�**
+   - 宸ュ叿 鈫� 璁剧疆 鈫� 杩愯閰嶇疆
+   - 閰嶇疆"寰俊寮�鍙戣�呭伐鍏疯矾寰�"
+
+3. **manifest.json閰嶇疆**
+   - 婧愮爜瑙嗗浘 鈫� mp-weixin 鈫� appid
+   - 濉啓浣犵殑灏忕▼搴廇ppID
+
+### 6.2 鐩存帴浣跨敤寰俊寮�鍙戣�呭伐鍏�
+
+1. **瀵煎叆椤圭洰**
+   - 鎵撳紑寰俊寮�鍙戣�呭伐鍏�
+   - 閫夋嫨"瀵煎叆椤圭洰"
+   - 椤圭洰鐩綍锛歚app`
+   - AppID锛氫娇鐢ㄦ祴璇曞彿鎴栦綘鐨凙ppID
+
+2. **閰嶇疆**
+   - 璇︽儏 鈫� 鏈湴璁剧疆 鈫� 涓嶆牎楠屽煙鍚�
+
+---
+
+## 涓冦�佹帹鑽愰厤缃紙鏈�缁堢増鏈級
+
+```javascript
+// app/config.js - 瀹屾暣閰嶇疆绀轰緥
+
+// 鑷姩妫�娴嬭繍琛岀幆澧�
+const isDev = process.env.NODE_ENV === 'development'
+const isMP = process.env.VUE_APP_PLATFORM === 'mp-weixin'
+
+// 鑾峰彇鏈湴IP锛堥渶瑕佹墜鍔ㄩ厤缃級
+const LOCAL_IP = '192.168.1.100'  // 鈿狅笍 淇敼涓轰綘鐨勭數鑴慖P
+
+// 鐜閰嶇疆
+const ENV_CONFIG = {
+  // 鏈湴寮�鍙�
+  local: `http://${LOCAL_IP}:8080`,
+  
+  // 娴嬭瘯鐜
+  test: 'http://test.yourdomain.com',
+  
+  // 鐢熶骇鐜
+  prod: 'https://api.yourdomain.com'
+}
+
+// 鑷姩閫夋嫨鐜
+let baseUrl = ENV_CONFIG.local  // 榛樿鏈湴寮�鍙�
+
+// 鏍规嵁涓嶅悓鏉′欢閫夋嫨鐜
+if (process.env.UNI_PLATFORM === 'h5' && !isDev) {
+  // H5鐢熶骇鐜
+  baseUrl = ENV_CONFIG.prod
+}
+
+module.exports = {
+  baseUrl: baseUrl,
+  
+  appInfo: {
+    name: "姘戣埅璋冨害绯荤粺",
+    version: "1.1.0",
+    logo: "/static/logo.png",
+    site_url: "http://ruoyi.vip",
+    
+    // 鏄剧ず褰撳墠鐜锛堝紑鍙戞椂鍙锛�
+    showEnv: isDev,
+    currentEnv: baseUrl,
+    
+    agreements: [
+      {
+        title: "闅愮鏀跨瓥",
+        url: "/pages/mine/privacy-policy/index"
+      },
+      {
+        title: "鐢ㄦ埛鏈嶅姟鍗忚",
+        url: "/pages/mine/user-agreement/index"
+      }
+    ]
+  }
+}
+```
+
+---
+
+## 鍏�佹�荤粨
+
+### 寮�鍙戦樁娈垫帹鑽愭柟妗�
+
+| 鍦烘櫙 | 鎺ㄨ崘鏂规 | 閰嶇疆澶嶆潅搴� |
+|------|----------|-----------|
+| 寰俊寮�鍙戣�呭伐鍏疯皟璇� | 鏂规1 + localhost | 猸� 绠�鍗� |
+| 鐪熸満璋冭瘯 | 鏂规2 + 鍐呯綉IP | 猸愨瓙 涓瓑 |
+| 杩滅▼璋冭瘯/婕旂ず | 鏂规3 + 鍐呯綉绌块�� | 猸愨瓙猸� 澶嶆潅 |
+
+### 蹇�熷紑濮嬶紙鏈�绠�鍗曟柟寮忥級
+
+1. **鍚姩鍚庣**: 杩愯 RuoYiApplication.java
+2. **閰嶇疆鍓嶇**: `config.js` 涓� `baseUrl: 'http://localhost:8080'`
+3. **寰俊宸ュ叿**: 鍕鹃��"涓嶆牎楠屽悎娉曞煙鍚�"
+4. **寮�濮嬭皟璇�**: 鐐瑰嚮"缂栬瘧"
+
+### 娉ㄦ剰浜嬮」
+
+鈿狅笍 **瀹夊叏鎻愰啋**锛�
+- 鐢熶骇鐜蹇呴』浣跨敤HTTPS鍩熷悕
+- 涓嶈灏嗘祴璇曢厤缃彁浜ゅ埌浠g爜浠撳簱
+- 浣跨敤 `.env` 鏂囦欢绠$悊鏁忔劅閰嶇疆
+
+鈿狅笍 **鎬ц兘鎻愰啋**锛�
+- 鍐呯綉绌块�忎細澧炲姞寤惰繜
+- 寤鸿浼樺厛浣跨敤灞�鍩熺綉璋冭瘯
+- 澶ф枃浠朵笂浼犲缓璁娇鐢ㄧ洿杩�
+
+---
+
+濡傛湁鍏朵粬闂锛岃鍙傝�冿細
+- 寰俊灏忕▼搴忓畼鏂规枃妗o細https://developers.weixin.qq.com/miniprogram/dev/
+- uni-app瀹樻柟鏂囨。锛歨ttps://uniapp.dcloud.io/
diff --git "a/app/\345\277\253\351\200\237\351\205\215\347\275\256\346\270\205\345\215\225.md" "b/app/\345\277\253\351\200\237\351\205\215\347\275\256\346\270\205\345\215\225.md"
new file mode 100644
index 0000000..e4ec4de
--- /dev/null
+++ "b/app/\345\277\253\351\200\237\351\205\215\347\275\256\346\270\205\345\215\225.md"
@@ -0,0 +1,266 @@
+# 寰俊灏忕▼搴忔湰鍦拌皟璇� - 蹇�熼厤缃竻鍗�
+
+## 鉁� 閰嶇疆姝ラ锛�5鍒嗛挓瀹屾垚锛�
+
+### 绗�1姝ワ細鏌ユ壘鐢佃剳IP鍦板潃锛�1鍒嗛挓锛�
+
+**Windows绯荤粺**锛�
+```bash
+# 鎵撳紑鍛戒护鎻愮ず绗︼紙Win+R锛岃緭鍏md锛�
+ipconfig
+
+# 鎵惧埌杩欎竴琛岋細
+IPv4 鍦板潃 . . . . . . . . . . . . : 192.168.1.100
+                                    鈫戔啈鈫戔啈鈫戔啈鈫戔啈鈫戔啈鈫戔啈鈫戔啈
+                                    璁颁笅杩欎釜IP鍦板潃
+```
+
+**Mac绯荤粺**锛�
+```bash
+# 鎵撳紑缁堢
+ifconfig
+
+# 鎵惧埌 en0 鎴� en1 涓嬬殑 inet 鍦板潃
+inet 192.168.1.100
+     鈫戔啈鈫戔啈鈫戔啈鈫戔啈鈫戔啈鈫戔啈鈫戔啈
+     璁颁笅杩欎釜IP鍦板潃
+```
+
+---
+
+### 绗�2姝ワ細淇敼閰嶇疆鏂囦欢锛�30绉掞級
+
+鎵撳紑鏂囦欢锛歚app/config.js`
+
+鎵惧埌绗�6琛岋紝淇敼涓轰綘鐨処P锛�
+
+```javascript
+// 淇敼鍓�
+const LOCAL_IP = 'localhost'
+
+// 淇敼鍚庯紙濉叆浣犲垰鎵嶈涓嬬殑IP锛�
+const LOCAL_IP = '192.168.1.100'  // 鈿狅笍 鏀规垚浣犵殑IP
+```
+
+淇濆瓨鏂囦欢銆�
+
+---
+
+### 绗�3姝ワ細鍚姩鍚庣鏈嶅姟锛�1鍒嗛挓锛�
+
+**鏂规硶1锛氫娇鐢↖DEA**
+- 鎵撳紑椤圭洰 `RuoYi-Vue-master`
+- 鎵惧埌 `ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java`
+- 鐐瑰嚮杩愯鎸夐挳 鈻讹笍
+- 绛夊緟鍚姩瀹屾垚锛岀湅鍒� `Application Run Successfully`
+
+**鏂规硶2锛氬懡浠よ**
+```bash
+cd d:\project\鎬ユ晳杞繍\code\Api\RuoYi-Vue-master
+mvn spring-boot:run
+```
+
+**楠岃瘉鍚庣鏄惁鍚姩**锛�
+- 娴忚鍣ㄦ墦寮�锛歨ttp://localhost:8080
+- 搴旇鐪嬪埌鑻ヤ緷绯荤粺鐨勭櫥褰曢〉闈�
+
+---
+
+### 绗�4姝ワ細閰嶇疆寰俊寮�鍙戣�呭伐鍏凤紙2鍒嗛挓锛�
+
+1. **鎵撳紑寰俊寮�鍙戣�呭伐鍏�**
+   - 濡傛灉娌℃湁瀹夎锛屼笅杞藉湴鍧�锛歨ttps://developers.weixin.qq.com/miniprogram/dev/devtools/download.html
+
+2. **瀵煎叆椤圭洰**
+   - 鐐瑰嚮"+"鍙� 鈫� 瀵煎叆椤圭洰
+   - 鐩綍锛歚d:\project\鎬ユ晳杞繍\code\Api\RuoYi-Vue-master\app`
+   - AppID锛氫娇鐢ㄦ祴璇曞彿锛堟垨濉叆浣犵殑AppID锛�
+   - 椤圭洰鍚嶇О锛氭�ユ晳杞繍璋冨害绯荤粺
+
+3. **鍏抽棴鍩熷悕鏍¢獙**锛堥噸瑕侊紒锛�
+   - 鐐瑰嚮鍙充笂瑙�"璇︽儏"
+   - 鍒囨崲鍒�"鏈湴璁剧疆"鏍囩
+   - 鉁� 鍕鹃��"涓嶆牎楠屽悎娉曞煙鍚嶃�亀eb-view锛堜笟鍔″煙鍚嶏級銆乀LS鐗堟湰浠ュ強HTTPS璇佷功"
+
+4. **缂栬瘧杩愯**
+   - 鐐瑰嚮"缂栬瘧"鎸夐挳
+   - 绛夊緟缂栬瘧瀹屾垚
+
+---
+
+### 绗�5姝ワ細娴嬭瘯楠岃瘉锛�1鍒嗛挓锛�
+
+1. **娴嬭瘯鐧诲綍**
+   - 鍦ㄥ皬绋嬪簭妯℃嫙鍣ㄤ腑杈撳叆璐﹀彿瀵嗙爜
+   - 璐﹀彿锛歚admin`
+   - 瀵嗙爜锛歚admin123`
+   - 鐐瑰嚮鐧诲綍
+
+2. **妫�鏌ョ綉缁滆姹�**
+   - 鎵撳紑璋冭瘯鍣� 鈫� Network 鏍囩
+   - 搴旇鑳界湅鍒拌姹傚彂閫佸埌锛歚http://192.168.1.100:8080/...`
+
+3. **濡傛灉鐧诲綍鎴愬姛**
+   - 鉁� 閰嶇疆瀹屾垚锛�
+
+---
+
+## 鉂� 甯歌闂蹇�熻В鍐�
+
+### 闂1锛歳equest:fail -104
+
+**鍘熷洜**锛氬悗绔病鏈夊惎鍔ㄦ垨IP閿欒
+
+**瑙e喅**锛�
+```bash
+# 1. 妫�鏌ュ悗绔槸鍚﹁繍琛�
+娴忚鍣ㄦ墦寮�: http://192.168.1.100:8080
+
+# 2. 濡傛灉鎵撲笉寮�锛屾鏌P鏄惁姝g‘
+鍐嶆鎵ц: ipconfig
+
+# 3. 纭繚绔彛8080娌℃湁琚崰鐢�
+netstat -ano | findstr 8080
+```
+
+---
+
+### 闂2锛歳equest:fail url not in domain list
+
+**鍘熷洜**锛氭病鏈夊叧闂煙鍚嶆牎楠�
+
+**瑙e喅**锛�
+- 寰俊寮�鍙戣�呭伐鍏� 鈫� 璇︽儏 鈫� 鏈湴璁剧疆
+- 鉁� 鍕鹃��"涓嶆牎楠屽悎娉曞煙鍚�..."
+
+---
+
+### 闂3锛氱湡鏈鸿皟璇曟棤娉曡闂�
+
+**鍘熷洜**锛氭墜鏈哄拰鐢佃剳涓嶅湪鍚屼竴WiFi
+
+**瑙e喅**锛�
+1. 纭繚鎵嬫満鍜岀數鑴戣繛鎺ュ悓涓�WiFi
+2. 妫�鏌ョ數鑴戦槻鐏鏄惁闃绘浜�8080绔彛
+3. 涓存椂鍏抽棴闃茬伀澧欐祴璇曪細
+   ```bash
+   # Windows锛堢鐞嗗憳鏉冮檺锛�
+   netsh advfirewall set allprofiles state off
+   
+   # 娴嬭瘯瀹屾垚鍚庤寰楁墦寮�
+   netsh advfirewall set allprofiles state on
+   ```
+
+---
+
+## 馃摫 鐪熸満璋冭瘯閰嶇疆
+
+### 鐪熸満棰勮
+
+1. **寰俊寮�鍙戣�呭伐鍏蜂腑**
+   - 鐐瑰嚮"棰勮"鎸夐挳
+   - 鎵弿浜岀淮鐮�
+
+2. **鎵嬫満杩炴帴鍚屼竴WiFi**
+   - 纭繚鎵嬫満鍜岀數鑴戝湪鍚屼竴缃戠粶
+
+3. **濡傛灉鏃犳硶璁块棶**
+   - 妫�鏌ラ槻鐏璁剧疆
+   - 灏濊瘯涓存椂鍏抽棴闃茬伀澧�
+
+---
+
+## 馃敡 鐜鍒囨崲
+
+### 寮�鍙戠幆澧冿紙鏈湴璋冭瘯锛�
+
+```javascript
+// app/config.js
+const CURRENT_ENV = 'development'  // 浣跨敤鏈湴IP
+```
+
+### 娴嬭瘯鐜
+
+```javascript
+// app/config.js
+const CURRENT_ENV = 'test'  // 浣跨敤娴嬭瘯鏈嶅姟鍣�
+```
+
+闇�瑕佸厛鍦ㄧ13-16琛岄厤缃祴璇曟湇鍔″櫒鍦板潃锛�
+```javascript
+test: {
+  baseUrl: 'http://test.yourdomain.com',  // 鏀逛负瀹為檯鍦板潃
+  description: '娴嬭瘯鐜'
+}
+```
+
+### 鐢熶骇鐜
+
+```javascript
+// app/config.js
+const CURRENT_ENV = 'production'  // 浣跨敤绾夸笂鏈嶅姟鍣�
+```
+
+闇�瑕佸厛鍦ㄧ17-20琛岄厤缃敓浜ф湇鍔″櫒鍦板潃锛�
+```javascript
+production: {
+  baseUrl: 'https://api.yourdomain.com',  // 鏀逛负瀹為檯鍦板潃
+  description: '鐢熶骇鐜'
+}
+```
+
+---
+
+## 馃搵 閰嶇疆妫�鏌ユ竻鍗�
+
+寮�濮嬭皟璇曞墠锛岃纭锛�
+
+- [ ] 鍚庣鏈嶅姟宸插惎鍔紙http://localhost:8080 鍙互璁块棶锛�
+- [ ] 宸叉煡鍒扮數鑴慖P鍦板潃
+- [ ] config.js 涓凡濉啓姝g‘鐨処P鍦板潃
+- [ ] 寰俊寮�鍙戣�呭伐鍏峰凡瀹夎
+- [ ] 宸插叧闂煙鍚嶆牎楠�
+- [ ] 鎵嬫満鍜岀數鑴戝湪鍚屼竴WiFi锛堢湡鏈鸿皟璇曟椂锛�
+
+---
+
+## 馃挕 鎻愮ず
+
+### 鏌ョ湅褰撳墠閰嶇疆
+
+鍦ㄥ皬绋嬪簭涓墦寮�鎺у埗鍙帮紙Console锛夛紝鎵ц锛�
+
+```javascript
+console.log(getApp().globalData.config.baseUrl)
+// 搴旇杈撳嚭: http://192.168.1.100:8080
+```
+
+### 鏌ョ湅褰撳墠鐜
+
+```javascript
+const config = getApp().globalData.config
+console.log('鐜:', config.appInfo.envDescription)
+console.log('鎺ュ彛:', config.baseUrl)
+```
+
+---
+
+## 馃摓 闇�瑕佸府鍔╋紵
+
+濡傛灉鎸夌収浠ヤ笂姝ラ浠嶆棤娉曡В鍐筹紝璇锋彁渚涳細
+
+1. 閿欒鎴浘锛堟帶鍒跺彴 Console 鍜� Network锛�
+2. 閰嶇疆鏂囦欢鍐呭锛坈onfig.js锛�
+3. 鍚庣鍚姩鏃ュ織
+4. 鐢佃剳IP鍦板潃
+
+---
+
+## 鉁� 閰嶇疆鎴愬姛鏍囧織
+
+褰撲綘鐪嬪埌锛�
+- 鉁� 灏忕▼搴忚兘姝e父鐧诲綍
+- 鉁� Network涓兘鐪嬪埌璇锋眰鍙戦�佸埌浣犵殑IP鍦板潃
+- 鉁� 鍚庣鑳芥敹鍒拌姹傚苟杩斿洖鏁版嵁
+
+鎭枩浣狅紝閰嶇疆鎴愬姛锛侌煄�
diff --git "a/prd/uni-app\346\250\241\346\235\277\350\257\255\346\263\225\344\277\256\345\244\215-class\347\273\221\345\256\232.md" "b/prd/uni-app\346\250\241\346\235\277\350\257\255\346\263\225\344\277\256\345\244\215-class\347\273\221\345\256\232.md"
new file mode 100644
index 0000000..fe6f0f7
--- /dev/null
+++ "b/prd/uni-app\346\250\241\346\235\277\350\257\255\346\263\225\344\277\256\345\244\215-class\347\273\221\345\256\232.md"
@@ -0,0 +1,279 @@
+# uni-app 妯℃澘璇硶淇 - :class 鏂规硶璋冪敤闂
+
+## 闂鎻忚堪
+
+缂栬瘧鏃堕亣鍒颁互涓嬮敊璇細
+
+```
+Module Error (from ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js):
+(Emitted value instead of an instance of Error) 
+  Errors compiling template:
+  :class涓嶆敮鎸� getStatusClass(task.taskStatus) 璇硶
+```
+
+## 闂鍘熷洜
+
+鍦� uni-app 鐨勬ā鏉夸腑锛宍:class` 涓嶆敮鎸佺洿鎺ヨ皟鐢ㄦ柟娉曪紝渚嬪锛�
+
+```vue
+<!-- 鉂� 閿欒鍐欐硶 -->
+<view class="task-status" :class="getStatusClass(task.taskStatus)">
+```
+
+杩欐槸 uni-app 鐨勮娉曢檺鍒讹紝涓庢爣鍑� Vue.js 涓嶅悓銆�
+
+## 瑙e喅鏂规
+
+灏嗘柟娉曡皟鐢ㄦ敼涓鸿〃杈惧紡鎷兼帴瀛楃涓茬殑褰㈠紡锛屼娇鐢ㄤ笁鍏冭繍绠楃锛堟潯浠惰〃杈惧紡锛夋潵瀹炵幇锛�
+
+```vue
+<!-- 鉁� 姝g‘鍐欐硶 -->
+<view class="task-status" :class="task.taskStatus === 'PENDING' ? 'status-pending' : task.taskStatus === 'DEPARTING' ? 'status-departing' : task.taskStatus === 'ARRIVED' ? 'status-arrived' : task.taskStatus === 'RETURNING' ? 'status-returning' : task.taskStatus === 'COMPLETED' ? 'status-completed' : task.taskStatus === 'CANCELLED' ? 'status-cancelled' : task.taskStatus === 'IN_PROGRESS' ? 'status-in-progress' : 'status-default'">
+```
+
+## 淇敼鏂囦欢
+
+### 1. app/pages/index.vue
+
+**淇敼鍓嶏細**
+```vue
+<view class="task-status" :class="getStatusClass(task.taskStatus)">
+  {{ getStatusText(task.status) }}
+</view>
+```
+
+**淇敼鍚庯細**
+```vue
+<view class="task-status" :class="task.taskStatus === 'PENDING' ? 'status-pending' : task.taskStatus === 'DEPARTING' ? 'status-departing' : task.taskStatus === 'ARRIVED' ? 'status-arrived' : task.taskStatus === 'RETURNING' ? 'status-returning' : task.taskStatus === 'COMPLETED' ? 'status-completed' : task.taskStatus === 'CANCELLED' ? 'status-cancelled' : task.taskStatus === 'IN_PROGRESS' ? 'status-in-progress' : 'status-default'">
+  {{ getStatusText(task.status) }}
+</view>
+```
+
+### 2. app/pages/task/index.vue
+
+**淇敼鍓嶏細**
+```vue
+<view class="task-status" :class="getStatusClass(task.taskStatus)">
+  {{ getStatusText(task.taskStatus) }}
+</view>
+```
+
+**淇敼鍚庯細**
+```vue
+<view class="task-status" :class="task.taskStatus === 'PENDING' ? 'status-pending' : task.taskStatus === 'DEPARTING' ? 'status-departing' : task.taskStatus === 'ARRIVED' ? 'status-arrived' : task.taskStatus === 'RETURNING' ? 'status-returning' : task.taskStatus === 'COMPLETED' ? 'status-completed' : task.taskStatus === 'CANCELLED' ? 'status-cancelled' : task.taskStatus === 'IN_PROGRESS' ? 'status-in-progress' : 'status-default'">
+  {{ getStatusText(task.taskStatus) }}
+</view>
+```
+
+### 3. app/pages/task/detail.vue
+
+**淇敼鍓嶏細**
+```vue
+<view class="value status" :class="taskDetail.taskStatus.toLowerCase()">
+  {{ getStatusText(taskDetail.taskStatus) }}
+</view>
+```
+
+**淇敼鍚庯細**
+```vue
+<view class="value status" :class="taskDetail.taskStatus === 'PENDING' ? 'pending' : taskDetail.taskStatus === 'DEPARTING' ? 'in_progress' : taskDetail.taskStatus === 'ARRIVED' ? 'in_progress' : taskDetail.taskStatus === 'RETURNING' ? 'in_progress' : taskDetail.taskStatus === 'IN_PROGRESS' ? 'in_progress' : taskDetail.taskStatus === 'COMPLETED' ? 'completed' : taskDetail.taskStatus === 'CANCELLED' ? 'cancelled' : ''">
+  {{ getStatusText(taskDetail.taskStatus) }}
+</view>
+```
+
+**璇存槑锛�**
+- `detail.vue` 涓娇鐢ㄧ殑鏄皬鍐欑殑鐘舵�佺被鍚嶏紙`pending`, `in_progress`, `completed`, `cancelled`锛�
+- 灏嗗涓繘琛屼腑鐨勭姸鎬侊紙`DEPARTING`, `ARRIVED`, `RETURNING`, `IN_PROGRESS`锛夐兘鏄犲皠涓� `in_progress` 绫�
+
+## 鐘舵�佺被鍚嶆槧灏�
+
+鍘� `getStatusClass` 鏂规硶鐨勬槧灏勯�昏緫锛�
+
+```javascript
+getStatusClass(status) {
+  const statusClassMap = {
+    'PENDING': 'status-pending',        // 寰呭鐞�
+    'DEPARTING': 'status-departing',    // 鍑哄彂涓�
+    'ARRIVED': 'status-arrived',        // 宸插埌杈�
+    'RETURNING': 'status-returning',    // 杩旂▼涓�
+    'COMPLETED': 'status-completed',    // 宸插畬鎴�
+    'CANCELLED': 'status-cancelled',    // 宸插彇娑�
+    'IN_PROGRESS': 'status-in-progress' // 澶勭悊涓�
+  }
+  return statusClassMap[status] || 'status-default'
+}
+```
+
+鐜板湪鐩存帴鍦ㄦā鏉夸腑浣跨敤涓夊厓琛ㄨ揪寮忓疄鐜扮浉鍚岀殑鏄犲皠閫昏緫銆�
+
+## uni-app 妯℃澘璇硶闄愬埗
+
+### 涓嶆敮鎸佺殑璇硶
+
+1. **鏂规硶璋冪敤** 鉂�
+   ```vue
+   :class="getStatusClass(task.taskStatus)"
+   ```
+
+2. **澶嶆潅琛ㄨ揪寮�** 鉂�
+   ```vue
+   :style="{ color: getColor(item.type) }"
+   ```
+
+### 鏀寔鐨勮娉�
+
+1. **绠�鍗曞睘鎬ц闂�** 鉁�
+   ```vue
+   :class="task.statusClass"
+   ```
+
+2. **涓夊厓杩愮畻绗�** 鉁�
+   ```vue
+   :class="task.status === 'PENDING' ? 'status-pending' : 'status-default'"
+   ```
+
+3. **鏁扮粍/瀵硅薄瀛楅潰閲�** 鉁�
+   ```vue
+   :class="[task.baseClass, task.statusClass]"
+   :class="{ 'active': task.isActive, 'disabled': task.isDisabled }"
+   ```
+
+4. **璁$畻灞炴��** 鉁�
+   ```vue
+   :class="taskStatusClass"
+   
+   // 鍦� computed 涓畾涔�
+   computed: {
+     taskStatusClass() {
+       return this.getStatusClass(this.task.taskStatus)
+     }
+   }
+   ```
+
+## 鏇夸唬鏂规姣旇緝
+
+### 鏂规1锛氫笁鍏冭繍绠楃锛堝凡閲囩敤锛�
+
+**浼樼偣锛�**
+- 鏃犻渶淇敼 script 閮ㄥ垎
+- 閫昏緫鐩磋锛屽湪妯℃澘涓彲瑙�
+
+**缂虹偣锛�**
+- 琛ㄨ揪寮忚緝闀匡紝浠g爜鍐椾綑
+- 澶氫釜鐘舵�佹椂鍙鎬х◢宸�
+
+### 鏂规2锛氳绠楀睘鎬�
+
+```vue
+<template>
+  <view class="task-status" :class="statusClass">
+</template>
+
+<script>
+export default {
+  computed: {
+    statusClass() {
+      return this.getStatusClass(this.task.taskStatus)
+    }
+  }
+}
+</script>
+```
+
+**浼樼偣锛�**
+- 妯℃澘鏇寸畝娲�
+- 閫昏緫灏佽鍦� script 涓�
+
+**缂虹偣锛�**
+- 闇�瑕佷负鍒楄〃涓瘡涓」鐩畾涔夎绠楀睘鎬�
+- 鍦� `v-for` 涓娇鐢ㄦ椂澶嶆潅搴﹁緝楂�
+
+### 鏂规3锛氶澶勭悊鏁版嵁
+
+```javascript
+loadTasks() {
+  listTask(this.queryParams).then(response => {
+    this.taskList = response.rows.map(task => ({
+      ...task,
+      statusClass: this.getStatusClass(task.taskStatus)
+    }))
+  })
+}
+```
+
+**浼樼偣锛�**
+- 妯℃澘鏈�绠�娲�
+- 鎬ц兘鏈�濂斤紙棰勮绠椾竴娆★級
+
+**缂虹偣锛�**
+- 闇�瑕佸湪鏁版嵁鍔犺浇鏃跺鐞�
+- 澧炲姞浜嗘暟鎹璞$殑瀛楁
+
+## 鏈�浣冲疄璺�
+
+### 瀵逛簬鍒楄〃娓叉煋锛堟帹鑽愭柟妗�1鎴�3锛�
+
+```vue
+<!-- 鏂规1锛氫笁鍏冭繍绠楃 -->
+<view v-for="task in taskList" :key="task.id">
+  <view :class="task.status === 'PENDING' ? 'status-pending' : 'status-default'">
+  </view>
+</view>
+
+<!-- 鏂规3锛氶澶勭悊鏁版嵁 -->
+<view v-for="task in taskList" :key="task.id">
+  <view :class="task.statusClass">
+  </view>
+</view>
+```
+
+### 瀵逛簬鍗曚釜鍏冪礌锛堟帹鑽愭柟妗�2锛�
+
+```vue
+<!-- 鏂规2锛氳绠楀睘鎬� -->
+<template>
+  <view :class="taskStatusClass">
+</template>
+
+<script>
+export default {
+  computed: {
+    taskStatusClass() {
+      return this.getStatusClass(this.currentTask.taskStatus)
+    }
+  }
+}
+</script>
+```
+
+## 娉ㄦ剰浜嬮」
+
+1. **淇濈暀鏂规硶瀹氫箟**
+   - 铏界劧妯℃澘涓笉鑳界洿鎺ヨ皟鐢� `getStatusClass` 鏂规硶
+   - 浣嗚鏂规硶浠嶅彲鐢ㄤ簬鍏朵粬鍦烘櫙锛堝棰勫鐞嗘暟鎹級
+   - 寤鸿淇濈暀鍦ㄤ唬鐮佷腑
+
+2. **琛ㄨ揪寮忛暱搴�**
+   - uni-app 瀵规ā鏉胯〃杈惧紡鏈夐暱搴﹂檺鍒�
+   - 杩囬暱鐨勮〃杈惧紡鍙兘瀵艰嚧缂栬瘧璀﹀憡
+   - 寤鸿浣跨敤棰勫鐞嗘暟鎹柟妗�
+
+3. **鎬ц兘鑰冭檻**
+   - 涓夊厓杩愮畻绗﹀湪姣忔娓叉煋鏃堕兘浼氳绠�
+   - 澶у垪琛ㄥ缓璁娇鐢ㄩ澶勭悊鏂规
+   - 璁$畻灞炴�т細缂撳瓨缁撴灉
+
+## 鐩稿叧鏂囨。
+
+- [uni-app 妯℃澘璇硶闄愬埗](https://uniapp.dcloud.net.cn/tutorial/vue-api.html#%E6%A8%A1%E6%9D%BF%E8%AF%AD%E6%B3%95)
+- [Vue 鏉′欢娓叉煋](https://cn.vuejs.org/guide/essentials/conditional.html)
+- [Vue Class 涓� Style 缁戝畾](https://cn.vuejs.org/guide/essentials/class-and-style.html)
+
+## 鏇存柊鏃ュ織
+
+- **2025-01-25**: 淇 `:class` 鏂规硶璋冪敤璇硶閿欒
+  - 鏂囦欢: `app/pages/index.vue` (绗�57琛�)
+  - 鏂囦欢: `app/pages/task/index.vue` (绗�115琛�)
+  - 鏂囦欢: `app/pages/task/detail.vue` (绗�22琛�)
+  - 鏂规硶: 灏嗘柟娉曡皟鐢ㄦ敼涓轰笁鍏冭〃杈惧紡
+  - 鍘熷洜: uni-app 妯℃澘涓嶆敮鎸佹柟娉曡皟鐢ㄥ拰 `.toLowerCase()` 绛夊瓧绗︿覆鏂规硶
diff --git "a/prd/\345\220\216\345\217\260\344\273\273\345\212\241\347\256\241\347\220\206-\346\200\245\346\225\221\350\275\254\350\277\220\346\211\251\345\261\225\346\230\276\347\244\272.md" "b/prd/\345\220\216\345\217\260\344\273\273\345\212\241\347\256\241\347\220\206-\346\200\245\346\225\221\350\275\254\350\277\220\346\211\251\345\261\225\346\230\276\347\244\272.md"
new file mode 100644
index 0000000..feaea69
--- /dev/null
+++ "b/prd/\345\220\216\345\217\260\344\273\273\345\212\241\347\256\241\347\220\206-\346\200\245\346\225\221\350\275\254\350\277\220\346\211\251\345\261\225\346\230\276\347\244\272.md"
@@ -0,0 +1,387 @@
+# 鍚庡彴浠诲姟绠$悊 - 鎬ユ晳杞繍鎵╁睍淇℃伅鏄剧ず
+
+## 姒傝堪
+
+鍦ㄥ悗鍙扮鐞嗙晫闈㈢殑浠诲姟绠$悊鍔熻兘涓紝鏂板瀵规�ユ晳杞繍浠诲姟鍙婄绁夎溅浠诲姟鎵╁睍淇℃伅鐨勫睍绀烘敮鎸侊紝浣跨鐞嗗憳鑳藉鏌ョ湅瀹屾暣鐨勪换鍔¤鎯呫��
+
+## 淇敼鍐呭
+
+### 1. 浠诲姟璇︽儏椤甸潰澧炲己 (detail.vue)
+
+**鏂囦欢**: `ruoyi-ui/src/views/task/general/detail.vue`
+
+#### 1.1 娣诲姞鎬ユ晳杞繍浠诲姟鎵╁睍淇℃伅灞曠ず
+
+鍦ㄥ熀鏈俊鎭箣鍚庯紝鏍规嵁浠诲姟绫诲瀷鍔ㄦ�佹樉绀烘墿灞曚俊鎭細
+
+```vue
+<!-- 鎬ユ晳杞繍浠诲姟鎵╁睍淇℃伅 -->
+<el-descriptions v-if="taskDetail.taskType === 'EMERGENCY_TRANSFER' && taskDetail.emergencyInfo" 
+                 title="鎬ユ晳杞繍淇℃伅" :column="2" border style="margin-top: 20px;">
+  <el-descriptions-item label="鎮h�呭鍚�">{{ taskDetail.emergencyInfo.patientName }}</el-descriptions-item>
+  <el-descriptions-item label="鎮h�呮�у埆">
+    <dict-tag :options="dict.type.sys_user_sex" :value="taskDetail.emergencyInfo.patientGender"/>
+  </el-descriptions-item>
+  <el-descriptions-item label="鎮h�呭勾榫�">{{ taskDetail.emergencyInfo.patientAge }}</el-descriptions-item>
+  <el-descriptions-item label="鑱旂郴鐢佃瘽">{{ taskDetail.emergencyInfo.contactPhone }}</el-descriptions-item>
+  <el-descriptions-item label="鎺ラ�佸尰闄�" :span="2">{{ taskDetail.emergencyInfo.hospitalName }}</el-descriptions-item>
+  <el-descriptions-item label="灏辫瘖绉戝" :span="2">
+    <dict-tag v-if="taskDetail.emergencyInfo.hospitalDepartment" 
+              :options="dict.type.hospital_department" 
+              :value="taskDetail.emergencyInfo.hospitalDepartment"/>
+    <span v-else style="color: #C0C4CC;">--</span>
+  </el-descriptions-item>
+  <el-descriptions-item label="鐥呮儏鎻忚堪" :span="2">
+    <span v-if="taskDetail.emergencyInfo.illnessDescription">{{ taskDetail.emergencyInfo.illnessDescription }}</span>
+    <span v-else style="color: #C0C4CC;">--</span>
+  </el-descriptions-item>
+  <el-descriptions-item label="鐗规畩闇�姹�" :span="2">
+    <span v-if="taskDetail.emergencyInfo.specialRequirements">{{ taskDetail.emergencyInfo.specialRequirements }}</span>
+    <span v-else style="color: #C0C4CC;">--</span>
+  </el-descriptions-item>
+  <el-descriptions-item label="鏄惁闇�瑕佹媴鏋�">
+    <el-tag v-if="taskDetail.emergencyInfo.needsStretcher == 1" type="success" size="small">鏄�</el-tag>
+    <el-tag v-else type="info" size="small">鍚�</el-tag>
+  </el-descriptions-item>
+  <el-descriptions-item label="鏄惁闇�瑕佽疆妞�">
+    <el-tag v-if="taskDetail.emergencyInfo.needsWheelchair == 1" type="success" size="small">鏄�</el-tag>
+    <el-tag v-else type="info" size="small">鍚�</el-tag>
+  </el-descriptions-item>
+  <el-descriptions-item label="鏄惁闇�瑕佹哀姘�">
+    <el-tag v-if="taskDetail.emergencyInfo.needsOxygen == 1" type="success" size="small">鏄�</el-tag>
+    <el-tag v-else type="info" size="small">鍚�</el-tag>
+  </el-descriptions-item>
+  <el-descriptions-item label="绱ф�ョ▼搴�">
+    <el-tag v-if="taskDetail.emergencyInfo.urgencyLevel === 'HIGH'" type="danger" size="small">绱ф��</el-tag>
+    <el-tag v-else-if="taskDetail.emergencyInfo.urgencyLevel === 'MEDIUM'" type="warning" size="small">涓�鑸�</el-tag>
+    <el-tag v-else-if="taskDetail.emergencyInfo.urgencyLevel === 'LOW'" type="info" size="small">涓嶆��</el-tag>
+    <span v-else style="color: #C0C4CC;">--</span>
+  </el-descriptions-item>
+  <el-descriptions-item label="闄悓浜烘暟">{{ taskDetail.emergencyInfo.companionCount || 0 }} 浜�</el-descriptions-item>
+  <el-descriptions-item label="棰勪及璐圭敤">{{ taskDetail.emergencyInfo.estimatedCost || '--' }} 鍏�</el-descriptions-item>
+</el-descriptions>
+```
+
+#### 1.2 娣诲姞绂忕杞︿换鍔℃墿灞曚俊鎭睍绀�
+
+```vue
+<!-- 绂忕杞︿换鍔℃墿灞曚俊鎭� -->
+<el-descriptions v-if="taskDetail.taskType === 'WELFARE' && taskDetail.welfareInfo" 
+                 title="绂忕杞︽湇鍔′俊鎭�" :column="2" border style="margin-top: 20px;">
+  <el-descriptions-item label="涔樺濮撳悕">{{ taskDetail.welfareInfo.passengerName }}</el-descriptions-item>
+  <el-descriptions-item label="涔樺鎬у埆">
+    <dict-tag :options="dict.type.sys_user_sex" :value="taskDetail.welfareInfo.passengerGender"/>
+  </el-descriptions-item>
+  <el-descriptions-item label="涔樺骞撮緞">{{ taskDetail.welfareInfo.passengerAge }}</el-descriptions-item>
+  <el-descriptions-item label="鑱旂郴鐢佃瘽">{{ taskDetail.welfareInfo.contactPhone }}</el-descriptions-item>
+  <el-descriptions-item label="鏈嶅姟绫诲瀷" :span="2">
+    <span v-if="taskDetail.welfareInfo.serviceType">{{ taskDetail.welfareInfo.serviceType }}</span>
+    <span v-else style="color: #C0C4CC;">--</span>
+  </el-descriptions-item>
+  <el-descriptions-item label="鐗规畩闇�姹�" :span="2">
+    <span v-if="taskDetail.welfareInfo.specialRequirements">{{ taskDetail.welfareInfo.specialRequirements }}</span>
+    <span v-else style="color: #C0C4CC;">--</span>
+  </el-descriptions-item>
+  <el-descriptions-item label="鏄惁闇�瑕佽疆妞�">
+    <el-tag v-if="taskDetail.welfareInfo.needsWheelchair == 1" type="success" size="small">鏄�</el-tag>
+    <el-tag v-else type="info" size="small">鍚�</el-tag>
+  </el-descriptions-item>
+  <el-descriptions-item label="闄悓浜烘暟">{{ taskDetail.welfareInfo.companionCount || 0 }} 浜�</el-descriptions-item>
+  <el-descriptions-item label="棰勪及璐圭敤">{{ taskDetail.welfareInfo.estimatedCost || '--' }} 鍏�</el-descriptions-item>
+  <el-descriptions-item label="瀹為檯璐圭敤">{{ taskDetail.welfareInfo.actualCost || '--' }} 鍏�</el-descriptions-item>
+</el-descriptions>
+```
+
+#### 1.3 鏇存柊瀛楀吀绫诲瀷
+
+```javascript
+dicts: [
+  'sys_task_type', 
+  'sys_task_status', 
+  'sys_vehicle_type', 
+  'sys_task_vehicle_status', 
+  'sys_user_sex',           // 鉁� 鏂板锛氭�у埆瀛楀吀
+  'hospital_department'     // 鉁� 鏂板锛氬尰闄㈢瀹ゅ瓧鍏�
+]
+```
+
+### 2. 浠诲姟鍒楄〃椤甸潰浼樺寲 (index.vue)
+
+**鏂囦欢**: `ruoyi-ui/src/views/task/general/index.vue`
+
+#### 2.1 娣诲姞鎬ユ晳杞繍浠诲姟鏍囪瘑
+
+鍦ㄤ换鍔$被鍨嬪垪鏄剧ず鐗规畩鍥炬爣鏍囪瘑鎬ユ晳杞繍浠诲姟锛�
+
+```vue
+<el-table-column label="浠诲姟绫诲瀷" align="center" prop="taskType" width="120">
+  <template slot-scope="scope">
+    <dict-tag :options="dict.type.sys_task_type" :value="scope.row.taskType"/>
+    <!-- 鉁� 鎬ユ晳杞繍浠诲姟鏄剧ず璀﹀憡鍥炬爣 -->
+    <el-tag v-if="scope.row.taskType === 'EMERGENCY_TRANSFER'" type="danger" size="mini" style="margin-left: 5px;">
+      <i class="el-icon-warning"></i>
+    </el-tag>
+  </template>
+</el-table-column>
+```
+
+### 3. 鍚庣鏁版嵁鍔犺浇锛堝凡瀹屾垚锛�
+
+**鏂囦欢**: `SysTaskServiceImpl.java`
+
+鍚庣鐨� `getTaskDetail` 鏂规硶宸叉纭疄鐜版墿灞曚俊鎭姞杞斤細
+
+```java
+@Override
+public SysTask getTaskDetail(Long taskId) {
+    SysTask task = sysTaskMapper.selectSysTaskByTaskId(taskId);
+    if (task != null) {
+        // 鏌ヨ鍏宠仈杞﹁締
+        task.setAssignedVehicles(sysTaskVehicleMapper.selectSysTaskVehicleByTaskId(taskId));
+        // 鏌ヨ闄勪欢
+        task.setAttachments(sysTaskAttachmentMapper.selectSysTaskAttachmentByTaskId(taskId));
+        // 鏌ヨ鎿嶄綔鏃ュ織
+        task.setOperationLogs(sysTaskLogMapper.selectSysTaskLogByTaskId(taskId));
+        
+        // 鉁� 鍔犺浇鎬ユ晳杞繍鎵╁睍淇℃伅
+        if ("EMERGENCY_TRANSFER".equals(task.getTaskType())) {
+            SysTaskEmergency emergencyInfo = sysTaskEmergencyMapper.selectSysTaskEmergencyByTaskId(taskId);
+            task.setEmergencyInfo(emergencyInfo);
+        }
+        // 鉁� 鍔犺浇绂忕杞︽墿灞曚俊鎭�
+        else if ("WELFARE".equals(task.getTaskType())) {
+            SysTaskWelfare welfareInfo = sysTaskWelfareMapper.selectSysTaskWelfareByTaskId(taskId);
+            task.setWelfareInfo(welfareInfo);
+        }
+    }
+    return task;
+}
+```
+
+## 鍔熻兘灞曠ず
+
+### 鎬ユ晳杞繍浠诲姟璇︽儏椤甸潰
+
+鏄剧ず鍐呭鍖呮嫭锛�
+
+**鍩烘湰淇℃伅**
+- 浠诲姟缂栧彿銆佺被鍨嬨�佺姸鎬�
+- 鍒涘缓浜恒�佹墽琛屼汉銆侀儴闂�
+- 鍑哄彂鍦板潃銆佺洰鐨勫湴鍧�
+- 璁″垝鏃堕棿銆佸疄闄呮椂闂�
+
+**鎬ユ晳杞繍淇℃伅**锛堜粎 EMERGENCY_TRANSFER 绫诲瀷鏄剧ず锛�
+- 鎮h�呬俊鎭細濮撳悕銆佹�у埆銆佸勾榫勩�佽仈绯荤數璇�
+- 鍖荤枟淇℃伅锛氭帴閫佸尰闄€�佸氨璇婄瀹ゃ�佺梾鎯呮弿杩�
+- 鐗规畩闇�姹傦細鎷呮灦銆佽疆妞呫�佹哀姘�
+- 绱ф�ョ▼搴︼細楂�/涓�/浣�
+- 闄悓浜烘暟銆侀浼拌垂鐢�
+
+**绂忕杞︽湇鍔′俊鎭�**锛堜粎 WELFARE 绫诲瀷鏄剧ず锛�
+- 涔樺淇℃伅锛氬鍚嶃�佹�у埆銆佸勾榫勩�佽仈绯荤數璇�
+- 鏈嶅姟淇℃伅锛氭湇鍔$被鍨嬨�佺壒娈婇渶姹�
+- 杈呭姪璁惧锛氳疆妞呴渶姹�
+- 璐圭敤淇℃伅锛氶浼拌垂鐢ㄣ�佸疄闄呰垂鐢ㄣ�侀櫔鍚屼汉鏁�
+
+**鍏宠仈杞﹁締**
+- 杞︾墝鍙枫�佽溅杈嗙被鍨嬨�佸搧鐗屽瀷鍙�
+- 鍒嗛厤鏃堕棿銆佸垎閰嶄汉銆佺姸鎬�
+
+**浠诲姟闄勪欢**
+- 鏂囦欢鍒楄〃鍙婁笅杞�
+
+**鎿嶄綔鏃ュ織**
+- 鏃堕棿绾垮舰寮忓睍绀烘搷浣滆褰�
+
+### 浠诲姟鍒楄〃椤甸潰
+
+- 浠诲姟鍒楄〃灞曠ず鍩烘湰淇℃伅
+- 鎬ユ晳杞繍浠诲姟甯︽湁绾㈣壊璀﹀憡鍥炬爣鏍囪瘑
+- 鏀寔鎸変换鍔$被鍨嬨�佺姸鎬佺瓫閫�
+- 鐐瑰嚮浠诲姟缂栧彿鏌ョ湅璇︽儏
+
+## 浣跨敤鍦烘櫙
+
+### 鍦烘櫙1锛氭煡鐪嬫�ユ晳杞繍浠诲姟璇︽儏
+
+```
+1. 杩涘叆鍚庡彴绠$悊 鈫� 浠诲姟绠$悊
+2. 鍦ㄥ垪琛ㄤ腑鎵惧埌鎬ユ晳杞繍浠诲姟锛堝甫绾㈣壊璀﹀憡鍥炬爣锛�
+3. 鐐瑰嚮浠诲姟缂栧彿鎴�"鏌ョ湅"鎸夐挳
+4. 鏌ョ湅瀹屾暣鐨勪换鍔′俊鎭紝鍖呮嫭锛�
+   - 鍩烘湰浠诲姟淇℃伅
+   - 鎮h�呰缁嗕俊鎭�
+   - 鍖荤枟鐩稿叧淇℃伅
+   - 鐗规畩闇�姹傞厤缃�
+   - 鍏宠仈杞﹁締鍜屾墽琛屼汉鍛�
+   - 鎿嶄綔鍘嗗彶璁板綍
+```
+
+### 鍦烘櫙2锛氱瓫閫夌壒瀹氱被鍨嬩换鍔�
+
+```
+1. 鍦ㄤ换鍔$鐞嗛〉闈�
+2. 浣跨敤"浠诲姟绫诲瀷"绛涢�夊櫒
+3. 閫夋嫨"鎬ユ晳杞繍"
+4. 鏌ョ湅鎵�鏈夋�ユ晳杞繍浠诲姟鍒楄〃
+```
+
+### 鍦烘櫙3锛氱洃鎺х揣鎬ヤ换鍔�
+
+```
+1. 鍦ㄤ换鍔″垪琛ㄤ腑璇嗗埆鎬ユ晳杞繍浠诲姟锛堢孩鑹茶鍛婂浘鏍囷級
+2. 鐐瑰嚮鏌ョ湅璇︽儏
+3. 鏌ョ湅"绱ф�ョ▼搴�"瀛楁锛�
+   - 绾㈣壊"绱ф��"鏍囩 鈫� 楂樹紭鍏堢骇澶勭悊
+   - 榛勮壊"涓�鑸�"鏍囩 鈫� 姝e父澶勭悊
+   - 鐏拌壊"涓嶆��"鏍囩 鈫� 甯歌澶勭悊
+4. 鏍规嵁绱ф�ョ▼搴﹁皟搴﹁祫婧�
+```
+
+## 鏄剧ず鏁堟灉
+
+### 鎬ユ晳杞繍浠诲姟鏍囪瘑
+
+- **鍒楄〃**: 浠诲姟绫诲瀷鏃佽竟鏄剧ず `绾㈣壊璀﹀憡鍥炬爣`
+- **璇︽儏**: 鐙珛鐨�"鎬ユ晳杞繍淇℃伅"鍗$墖
+
+### 瀛楁鏄剧ず瑙勫垯
+
+1. **蹇呭~瀛楁**: 鐩存帴鏄剧ず鍊�
+2. **鍙�夊瓧娈典负绌�**: 鏄剧ず `--` (鐏拌壊)
+3. **甯冨皵瀛楁**: 浣跨敤鏍囩鏄剧ず
+   - `鏄痐 鈫� 缁胯壊鏍囩
+   - `鍚 鈫� 鐏拌壊鏍囩
+4. **鏋氫妇瀛楁**: 浣跨敤瀛楀吀鏍囩
+   - 鎬у埆: 鐢�/濂�
+   - 绉戝: 浣跨敤鍖婚櫌绉戝瀛楀吀
+   - 绱ф�ョ▼搴�: 
+     - HIGH 鈫� 绾㈣壊"绱ф��"
+     - MEDIUM 鈫� 榛勮壊"涓�鑸�"
+     - LOW 鈫� 鐏拌壊"涓嶆��"
+
+## 鏁版嵁娴佺▼
+
+```
+鍓嶇椤甸潰鍔犺浇
+    鈫�
+璋冪敤 getTask(taskId) API
+    鈫�
+鍚庣 SysTaskServiceImpl.getTaskDetail()
+    鈫�
+鏌ヨ鍩烘湰浠诲姟淇℃伅 (sys_task)
+    鈫�
+鏍规嵁 task_type 鍒ゆ柇
+    鈹溾攢 EMERGENCY_TRANSFER 鈫� 鏌ヨ sys_task_emergency
+    鈹斺攢 WELFARE 鈫� 鏌ヨ sys_task_welfare
+    鈫�
+杩斿洖瀹屾暣浠诲姟瀵硅薄
+    鈫�
+鍓嶇鏍规嵁 taskType 鏉′欢娓叉煋鎵╁睍淇℃伅
+```
+
+## 娉ㄦ剰浜嬮」
+
+### 1. 鏁版嵁瀹屾暣鎬�
+
+纭繚鎵╁睍淇℃伅琛ㄤ腑鐨勬暟鎹笌涓讳换鍔¤〃姝g‘鍏宠仈锛�
+- `sys_task_emergency.task_id` = `sys_task.task_id`
+- `sys_task_welfare.task_id` = `sys_task.task_id`
+
+### 2. 瀛楀吀鏁版嵁閰嶇疆
+
+闇�瑕佺‘淇濅互涓嬪瓧鍏哥被鍨嬪凡姝g‘閰嶇疆锛�
+- `sys_user_sex`: 鎬у埆瀛楀吀锛堢敺/濂筹級
+- `hospital_department`: 鍖婚櫌绉戝瀛楀吀锛堟�ヨ瘖绉戙�佸績鍐呯绛夛級
+
+### 3. 鏉冮檺鎺у埗
+
+鍚庡彴绠$悊鐣岄潰宸叉湁鏉冮檺鎺у埗锛�
+```javascript
+v-hasPermi="['task:general:query']"  // 鏌ョ湅鏉冮檺
+v-hasPermi="['task:general:edit']"   // 缂栬緫鏉冮檺
+v-hasPermi="['task:general:assign']" // 鍒嗛厤鏉冮檺
+```
+
+### 4. 绌哄�煎鐞�
+
+鎵�鏈夊彲閫夊瓧娈甸兘鍋氫簡绌哄�煎垽鏂紝閬垮厤鏄剧ず `undefined` 鎴� `null`锛�
+```vue
+<span v-if="taskDetail.emergencyInfo.illnessDescription">
+  {{ taskDetail.emergencyInfo.illnessDescription }}
+</span>
+<span v-else style="color: #C0C4CC;">--</span>
+```
+
+## 鐩稿叧鏂囦欢
+
+### 鍓嶇鏂囦欢
+- `/ruoyi-ui/src/views/task/general/index.vue` - 浠诲姟鍒楄〃椤甸潰
+- `/ruoyi-ui/src/views/task/general/detail.vue` - 浠诲姟璇︽儏椤甸潰
+
+### 鍚庣鏂囦欢
+- `/ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/SysTaskController.java` - 浠诲姟鎺у埗鍣�
+- `/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java` - 浠诲姟鏈嶅姟瀹炵幇
+- `/ruoyi-system/src/main/resources/mapper/system/SysTaskMapper.xml` - 浠诲姟Mapper
+- `/ruoyi-system/src/main/resources/mapper/system/SysTaskEmergencyMapper.xml` - 鎬ユ晳杞繍Mapper
+- `/ruoyi-system/src/main/resources/mapper/system/SysTaskWelfareMapper.xml` - 绂忕杞apper
+
+### 瀹炰綋绫�
+- `/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysTask.java` - 浠诲姟瀹炰綋
+- `/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysTaskEmergency.java` - 鎬ユ晳杞繍鎵╁睍瀹炰綋
+- `/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysTaskWelfare.java` - 绂忕杞︽墿灞曞疄浣�
+
+## 娴嬭瘯寤鸿
+
+### 娴嬭瘯鐢ㄤ緥1锛氭煡鐪嬫�ユ晳杞繍浠诲姟璇︽儏
+
+```
+鍓嶇疆鏉′欢锛氱郴缁熶腑瀛樺湪鎬ユ晳杞繍浠诲姟
+姝ラ锛�
+1. 鐧诲綍鍚庡彴绠$悊绯荤粺
+2. 杩涘叆浠诲姟绠$悊椤甸潰
+3. 鎵惧埌涓�鏉℃�ユ晳杞繍浠诲姟锛堟湁绾㈣壊璀﹀憡鍥炬爣锛�
+4. 鐐瑰嚮浠诲姟缂栧彿鏌ョ湅璇︽儏
+楠岃瘉锛�
+- 鏄剧ず鍩烘湰浠诲姟淇℃伅
+- 鏄剧ず"鎬ユ晳杞繍淇℃伅"鍗$墖
+- 鎵�鏈夋偅鑰呬俊鎭纭樉绀�
+- 鍖婚櫌銆佺瀹や俊鎭纭樉绀�
+- 鐗规畩闇�姹傛爣绛炬纭樉绀�
+- 绱ф�ョ▼搴︽爣绛鹃鑹叉纭�
+```
+
+### 娴嬭瘯鐢ㄤ緥2锛氭煡鐪嬬绁夎溅浠诲姟璇︽儏
+
+```
+鍓嶇疆鏉′欢锛氱郴缁熶腑瀛樺湪绂忕杞︿换鍔�
+姝ラ锛�
+1. 杩涘叆浠诲姟绠$悊椤甸潰
+2. 鎵惧埌涓�鏉$绁夎溅浠诲姟
+3. 鐐瑰嚮鏌ョ湅璇︽儏
+楠岃瘉锛�
+- 鏄剧ず鍩烘湰浠诲姟淇℃伅
+- 鏄剧ず"绂忕杞︽湇鍔′俊鎭�"鍗$墖
+- 涔樺淇℃伅姝g‘鏄剧ず
+- 鏈嶅姟绫诲瀷銆佽垂鐢ㄤ俊鎭纭樉绀�
+```
+
+### 娴嬭瘯鐢ㄤ緥3锛氱┖鍊兼樉绀�
+
+```
+鍓嶇疆鏉′欢锛氬垱寤轰竴鏉″彧濉繀濉瓧娈电殑鎬ユ晳杞繍浠诲姟
+姝ラ锛�
+1. 鏌ョ湅浠诲姟璇︽儏
+楠岃瘉锛�
+- 鍙�夊瓧娈垫樉绀� "--"锛堢伆鑹诧級
+- 涓嶅嚭鐜� undefined 鎴� null
+- 椤甸潰甯冨眬姝e父
+```
+
+## 鏇存柊鏃ュ織
+
+- **2025-01-25**: 鍒濆鐗堟湰
+  - 鍚庡彴浠诲姟璇︽儏椤甸潰鏀寔鎬ユ晳杞繍鎵╁睍淇℃伅鏄剧ず
+  - 鍚庡彴浠诲姟璇︽儏椤甸潰鏀寔绂忕杞︽墿灞曚俊鎭樉绀�
+  - 浠诲姟鍒楄〃椤甸潰娣诲姞鎬ユ晳杞繍浠诲姟鍥炬爣鏍囪瘑
+  - 鏂板鎬у埆鍜屽尰闄㈢瀹ゅ瓧鍏告敮鎸�
diff --git "a/prd/\347\224\250\346\210\267\345\215\217\350\256\256\344\270\216\351\232\220\347\247\201\346\224\277\347\255\226\345\256\214\345\226\204\350\257\264\346\230\216.md" "b/prd/\347\224\250\346\210\267\345\215\217\350\256\256\344\270\216\351\232\220\347\247\201\346\224\277\347\255\226\345\256\214\345\226\204\350\257\264\346\230\216.md"
new file mode 100644
index 0000000..f6581ae
--- /dev/null
+++ "b/prd/\347\224\250\346\210\267\345\215\217\350\256\256\344\270\216\351\232\220\347\247\201\346\224\277\347\255\226\345\256\214\345\226\204\350\257\264\346\230\216.md"
@@ -0,0 +1,552 @@
+# 鐢ㄦ埛鍗忚涓庨殣绉佹斂绛栧畬鍠勮鏄�
+
+## 涓�銆佸姛鑳芥杩�
+
+涓烘�ユ晳杞繍璋冨害绯荤粺瀹屽杽浜嗙敤鎴峰崗璁拰闅愮鏀跨瓥鍔熻兘锛岀鍚堜腑鍥芥硶寰嬫硶瑙勮姹傦紙銆婁釜浜轰俊鎭繚鎶ゆ硶銆嬨�併�婄綉缁滃畨鍏ㄦ硶銆嬨�併�婃皯娉曞吀銆嬬瓑锛夛紝鎻愬崌鐢ㄦ埛浣撻獙鍜屾硶寰嬪悎瑙勬�с��
+
+## 浜屻�佸疄鐜板唴瀹�
+
+### 2.1 鏂板椤甸潰
+
+#### 1. 鐢ㄦ埛鏈嶅姟鍗忚椤甸潰
+- **鏂囦欢璺緞**: `app/pages/mine/user-agreement/index.vue`
+- **璺敱璺緞**: `/pages/mine/user-agreement/index`
+- **椤甸潰鏍囬**: 鐢ㄦ埛鏈嶅姟鍗忚
+
+**鍗忚鍐呭绔犺妭**:
+1. 娆㈣繋浣跨敤鎬ユ晳杞繍璋冨害绯荤粺
+2. 鏈嶅姟璇存槑锛堢郴缁熷姛鑳姐�佹湇鍔¤寖鍥达級
+3. 璐﹀彿娉ㄥ唽涓庝娇鐢紙璐﹀彿绠$悊銆佷俊鎭湡瀹炴�э級
+4. 鐢ㄦ埛琛屼负瑙勮寖锛堟硶寰嬪悎瑙勩�佺姝㈣涓恒�佽亴涓氭搷浣滐級
+5. 闅愮淇濇姢锛堜俊鎭敹闆嗐�佷娇鐢ㄣ�佷繚鎶わ級
+6. 鐭ヨ瘑浜ф潈锛堝唴瀹规墍鏈夋潈銆佷娇鐢ㄩ檺鍒讹級
+7. 鏈嶅姟涓柇鎴栫粓姝紙涓柇鎯呭舰銆侀�氱煡鏈哄埗銆佽处鍙锋敞閿�锛�
+8. 鍏嶈矗澹版槑锛堣矗浠荤晫瀹氥�侀闄╂彁绀猴級
+9. 鍗忚鍙樻洿锛堜慨鏀规満鍒躲�佺敓鏁堟柟寮忥級
+10. 浜夎瑙e喅锛堟硶寰嬮�傜敤銆佺杈栨硶闄級
+11. 鍏朵粬锛堝畬鏁存�с�佸彲鍒嗗壊鎬с�佽В閲婃潈锛�
+12. 鑱旂郴鎴戜滑锛堥偖绠便�佺數璇濄�佸伐浣滄椂闂达級
+
+**椤甸潰鐗圭偣**:
+- 绉诲姩绔紭鍖栫殑UI璁捐
+- 娓呮櫚鐨勫眰绾х粨鏋�
+- 鏄撹鐨勬帓鐗堟牱寮�
+- 杩斿洖鎸夐挳瀵艰埅
+- 婊氬姩鏌ョ湅瀹屾暣鍐呭
+
+#### 2. 闅愮鏀跨瓥椤甸潰
+- **鏂囦欢璺緞**: `app/pages/mine/privacy-policy/index.vue`
+- **璺敱璺緞**: `/pages/mine/privacy-policy/index`
+- **椤甸潰鏍囬**: 闅愮鏀跨瓥
+
+**鏀跨瓥鍐呭绔犺妭**:
+1. 寮曡█锛堟硶寰嬪悎瑙勩�佹斂绛栫洰鐨勶級
+2. 淇℃伅鏀堕泦涓庝娇鐢�
+   - 璐﹀彿娉ㄥ唽涓庣櫥褰曪紙鎵嬫満鍙枫�佸鍚嶃�侀儴闂ㄣ�佽亴浣嶏級
+   - 浠诲姟璋冨害鏈嶅姟锛堜綅缃俊鎭�佷换鍔′俊鎭�佽溅杈嗕俊鎭級
+   - 娑堟伅鎺ㄩ�佹湇鍔★紙璁惧淇℃伅銆佹帹閫乼oken锛�
+   - 绯荤粺瀹夊叏涓庝紭鍖栵紙鏃ュ織銆佺綉缁溿�佷娇鐢ㄦ儏鍐碉級
+3. Cookie鍜屽悓绫绘妧鏈紙鐢ㄩ�斻�佺鐞嗘柟寮忥級
+4. 淇℃伅鍏变韩銆佽浆璁┿�佸叕寮�鎶湶锛堝師鍒欍�佷緥澶栨儏褰級
+5. 淇℃伅瀹夊叏淇濇姢鎺柦锛堝姞瀵嗐�佽闂帶鍒躲�佸璁°�佸簲鎬ュ搷搴旓級
+6. 鐢ㄦ埛鏉冨埄绠$悊锛堣闂�佹洿姝c�佸垹闄ゃ�佹敞閿�銆佹挙鍥炲悓鎰忥級
+7. 鏈垚骞翠汉淇濇姢锛堟湇鍔¢檺鍒躲�佺洃鎶や汉鍚屾剰锛�
+8. 璺ㄥ浼犺緭锛堝鍐呭瓨鍌級
+9. 鏀跨瓥鏇存柊锛堝彉鏇撮�氱煡銆佺敓鏁堟柟寮忥級
+10. 鑱旂郴鎴戜滑锛堥偖绠便�佺數璇濄�佸搷搴旀椂闂达級
+11. 瀹氫箟锛堜釜浜轰俊鎭�佹晱鎰熶釜浜轰俊鎭�佸垹闄わ級
+
+**椤甸潰鐗圭偣**:
+- 绗﹀悎銆婁釜浜轰俊鎭繚鎶ゆ硶銆嬭姹�
+- 鏁忔劅淇℃伅楂樹寒鏄剧ず锛堥粍鑹茶儗鏅� + 姗欒壊杈规锛�
+- 璇︾粏鐨勫垎绫昏鏄�
+- 鏄庣‘鐨勭敤鎴锋潈鍒�
+- 涓撲笟鐨勬硶寰嬫湳璇�
+
+### 2.2 淇敼椤甸潰
+
+#### 1. 鐧诲綍椤甸潰 (`app/pages/login.vue`)
+
+**淇敼鍐呭**:
+- 灏嗗崗璁摼鎺ヤ粠澶栭儴URL鏀逛负鏈湴椤甸潰
+- `handlePrivacy()` 鏂规硶锛氳烦杞埌 `/pages/mine/privacy-policy/index`
+- `handleUserAgrement()` 鏂规硶锛氳烦杞埌 `/pages/mine/user-agreement/index`
+
+**淇敼鍓�**:
+```javascript
+handlePrivacy() {
+  let site = this.globalConfig.appInfo.agreements[0]
+  this.$tab.navigateTo(`/pages/common/webview/index?title=${site.title}&url=${site.url}`)
+}
+```
+
+**淇敼鍚�**:
+```javascript
+handlePrivacy() {
+  this.$tab.navigateTo('/pages/mine/privacy-policy/index')
+}
+```
+
+#### 2. 娉ㄥ唽椤甸潰 (`app/pages/register.vue`)
+
+**鏂板鍔熻兘**:
+
+1. **鍗忚鍚屾剰checkbox**
+```vue
+<view class="agreement-section">
+  <checkbox-group @change="handleAgreementChange">
+    <label class="agreement-label">
+      <checkbox value="agreed" :checked="agreedToTerms" color="#007AFF" />
+      <text class="agreement-text">
+        鎴戝凡闃呰骞跺悓鎰�
+        <text class="agreement-link" @click.stop="handleUserAgreement">銆婄敤鎴锋湇鍔″崗璁��</text>
+        鍜�
+        <text class="agreement-link" @click.stop="handlePrivacy">銆婇殣绉佹斂绛栥��</text>
+      </text>
+    </label>
+  </checkbox-group>
+</view>
+```
+
+2. **鏁版嵁瀛楁**
+```javascript
+data() {
+  return {
+    agreedToTerms: false,  // 鏄惁鍚屾剰鍗忚
+    // ... 鍏朵粬瀛楁
+  }
+}
+```
+
+3. **楠岃瘉閫昏緫**
+```javascript
+async handleRegister() {
+  // ... 鍏朵粬楠岃瘉
+  if (!this.agreedToTerms) {
+    this.$modal.msgError("璇峰厛闃呰骞跺悓鎰忕敤鎴锋湇鍔″崗璁拰闅愮鏀跨瓥")
+    return
+  }
+  // ... 娉ㄥ唽閫昏緫
+}
+```
+
+4. **鏂板鏂规硶**
+```javascript
+// 鍗忚閫夋嫨鍙樻洿
+handleAgreementChange(e) {
+  this.agreedToTerms = e.detail.value.length > 0
+},
+// 鐢ㄦ埛鍗忚
+handleUserAgreement() {
+  this.$tab.navigateTo('/pages/mine/user-agreement/index')
+},
+// 闅愮鏀跨瓥
+handlePrivacy() {
+  this.$tab.navigateTo('/pages/mine/privacy-policy/index')
+}
+```
+
+5. **鏍峰紡璋冩暣**
+```scss
+.agreement-section {
+  margin: 30rpx 0;
+  
+  .agreement-label {
+    display: flex;
+    align-items: flex-start;
+    
+    checkbox {
+      margin-right: 15rpx;
+      transform: scale(0.9);
+    }
+    
+    .agreement-text {
+      flex: 1;
+      font-size: 24rpx;
+      color: #666;
+      line-height: 1.6;
+      text-align: left;
+      
+      .agreement-link {
+        color: #007AFF;
+        text-decoration: underline;
+      }
+    }
+  }
+}
+```
+
+#### 3. "鎴戠殑"椤甸潰 (`app/pages/mine/index.vue`)
+
+**鏂板鑿滃崟椤�**:
+
+鍦�"缂栬緫璧勬枡"鍜�"甯歌闂"涔嬮棿鎻掑叆涓や釜鑿滃崟椤癸細
+
+```vue
+<view class="list-cell list-cell-arrow" @click="handleUserAgreement">
+  <view class="menu-item-box">
+    <view class="iconfont icon-text menu-icon"></view>
+    <view>鐢ㄦ埛鏈嶅姟鍗忚</view>
+  </view>
+</view>
+<view class="list-cell list-cell-arrow" @click="handlePrivacyPolicy">
+  <view class="menu-item-box">
+    <view class="iconfont icon-safe menu-icon"></view>
+    <view>闅愮鏀跨瓥</view>
+  </view>
+</view>
+```
+
+**鏂板鏂规硶**:
+```javascript
+handleUserAgreement() {
+  this.$tab.navigateTo('/pages/mine/user-agreement/index')
+},
+handlePrivacyPolicy() {
+  this.$tab.navigateTo('/pages/mine/privacy-policy/index')
+}
+```
+
+### 2.3 璺敱閰嶇疆
+
+鍦� `app/pages.json` 涓凡娣诲姞璺敱閰嶇疆锛�
+
+```json
+{
+  "path": "pages/mine/user-agreement/index",
+  "style": {
+    "navigationBarTitleText": "鐢ㄦ埛鏈嶅姟鍗忚"
+  }
+},
+{
+  "path": "pages/mine/privacy-policy/index",
+  "style": {
+    "navigationBarTitleText": "闅愮鏀跨瓥"
+  }
+}
+```
+
+## 涓夈�佹硶寰嬪悎瑙勮鐐�
+
+### 3.1 绗﹀悎鐨勬硶寰嬫硶瑙�
+
+1. **銆婁腑鍗庝汉姘戝叡鍜屽浗涓汉淇℃伅淇濇姢娉曘��**
+   - 鏄庣‘鍛婄煡鏀堕泦鐨勪釜浜轰俊鎭被鍨�
+   - 璇存槑涓汉淇℃伅鐨勪娇鐢ㄧ洰鐨�
+   - 鏍囨敞鏁忔劅涓汉淇℃伅锛堜綅缃俊鎭級
+   - 鏄庣‘鐢ㄦ埛鐨勫悇椤规潈鍒�
+
+2. **銆婁腑鍗庝汉姘戝叡鍜屽浗缃戠粶瀹夊叏娉曘��**
+   - 淇℃伅瀹夊叏淇濇姢鎺柦
+   - 鏁版嵁瀛樺偍鍦ㄥ鍐�
+   - 瀹夊叏浜嬩欢搴旀�ュ搷搴�
+
+3. **銆婁腑鍗庝汉姘戝叡鍜屽浗姘戞硶鍏搞��**
+   - 鍚堝悓鏉℃瑙勮寖
+   - 浜夎瑙e喅鏈哄埗
+   - 鐢ㄦ埛鏉冪泭淇濇姢
+
+### 3.2 鍏抽敭鍚堣鍐呭
+
+#### 淇℃伅鏀堕泦鍛婄煡
+- 鉁� 鏄庣‘鍒楀嚭鏀堕泦鐨勪俊鎭被鍨�
+- 鉁� 璇存槑姣忕淇℃伅鐨勭敤閫�
+- 鉁� 鏍囨敞鏁忔劅淇℃伅锛堜綅缃�佸尰鐤楀仴搴凤級
+- 鉁� 鎻愪緵鎷掔粷鎺堟潈鐨勫奖鍝嶈鏄�
+
+#### 鐢ㄦ埛鏉冨埄
+- 鉁� 璁块棶鍜屾洿姝d釜浜轰俊鎭殑鏉冨埄
+- 鉁� 鍒犻櫎涓汉淇℃伅鐨勬潈鍒�
+- 鉁� 娉ㄩ攢璐﹀彿鐨勬潈鍒�
+- 鉁� 鎾ゅ洖鍚屾剰鐨勬潈鍒�
+
+#### 淇℃伅瀹夊叏
+- 鉁� 鏁版嵁鍔犲瘑浼犺緭鍜屽瓨鍌�
+- 鉁� 璁块棶鎺у埗鍜屾潈闄愮鐞�
+- 鉁� 瀹夊叏瀹¤鏈哄埗
+- 鉁� 瀹夊叏浜嬩欢搴旀�ュ搷搴�
+
+#### 鐢ㄦ埛鍚屾剰
+- 鉁� 娉ㄥ唽鏃跺繀椤诲嬀閫夊悓鎰忓崗璁�
+- 鉁� 鍗忚鍙殢鏃舵煡鐪�
+- 鉁� 鍗忚鍙樻洿鏃堕�氱煡鐢ㄦ埛
+
+## 鍥涖�佷娇鐢ㄦ柟寮�
+
+### 4.1 鐢ㄦ埛璁块棶璺緞
+
+1. **鐧诲綍椤甸潰**
+   - 鐐瑰嚮"銆婄敤鎴峰崗璁��"鎴�"銆婇殣绉佸崗璁��"閾炬帴
+   - 鐩存帴璺宠浆鍒板搴旈〉闈�
+
+2. **娉ㄥ唽椤甸潰**
+   - 蹇呴』鍕鹃�夊崗璁悓鎰廲heckbox鎵嶈兘娉ㄥ唽
+   - 鐐瑰嚮鍗忚閾炬帴鍙煡鐪嬭缁嗗唴瀹�
+   - 浣跨敤 `@click.stop` 闃叉浜嬩欢鍐掓场
+
+3. **"鎴戠殑"椤甸潰**
+   - 閫氳繃鑿滃崟椤�"鐢ㄦ埛鏈嶅姟鍗忚"璁块棶
+   - 閫氳繃鑿滃崟椤�"闅愮鏀跨瓥"璁块棶
+
+### 4.2 寮�鍙戦泦鎴�
+
+濡傞渶鍦ㄥ叾浠栭〉闈㈠紩鐢ㄥ崗璁紝浣跨敤浠ヤ笅浠g爜锛�
+
+```javascript
+// 璺宠浆鍒扮敤鎴峰崗璁�
+this.$tab.navigateTo('/pages/mine/user-agreement/index')
+
+// 璺宠浆鍒伴殣绉佹斂绛�
+this.$tab.navigateTo('/pages/mine/privacy-policy/index')
+```
+
+## 浜斻�佸畾鍒跺寲寤鸿
+
+### 5.1 蹇呴』淇敼鐨勫唴瀹�
+
+鍦ㄥ疄闄呴儴缃插墠锛岃鍔″繀淇敼浠ヤ笅鍐呭锛�
+
+1. **鑱旂郴鏂瑰紡**锛堜袱涓枃浠堕兘闇�瑕佷慨鏀癸級
+   ```vue
+   <!-- 鐢ㄦ埛鏈嶅姟鍗忚 -->
+   <text class="section-text">
+     鐢靛瓙閭锛歴upport@example.com  <!-- 鏀逛负瀹為檯閭 -->
+   </text>
+   <text class="section-text">
+     瀹㈡湇鐢佃瘽锛�400-XXX-XXXX  <!-- 鏀逛负瀹為檯鐢佃瘽 -->
+   </text>
+   
+   <!-- 闅愮鏀跨瓥 -->
+   <text class="section-text">
+     鐢靛瓙閭锛歱rivacy@example.com  <!-- 鏀逛负瀹為檯閭 -->
+   </text>
+   <text class="section-text">
+     瀹㈡湇鐢佃瘽锛�400-XXX-XXXX  <!-- 鏀逛负瀹為檯鐢佃瘽 -->
+   </text>
+   ```
+
+2. **鏇存柊鏃ユ湡鍜岀敓鏁堟棩鏈�**
+   ```vue
+   <view class="update-time">鏇存柊鏃ユ湡锛�2025骞�1鏈�25鏃�</view>  <!-- 鏀逛负瀹為檯鏃ユ湡 -->
+   <view class="effect-time">鐢熸晥鏃ユ湡锛�2025骞�1鏈�25鏃�</view>  <!-- 鏀逛负瀹為檯鏃ユ湡 -->
+   ```
+
+3. **杩愯惀涓讳綋淇℃伅**
+   - 濡傛灉鏈夋寮忕殑鍏徃鍚嶇О锛岃鍦ㄥ崗璁腑娣诲姞
+   - 濡傛灉鏈夎惀涓氭墽鐓т俊鎭紝寤鸿鍦�"鍏充簬鎴戜滑"涓ˉ鍏�
+
+### 5.2 鍙�変紭鍖栧唴瀹�
+
+1. **娣诲姞鐗堟湰鍙风鐞�**
+   - 鍦ㄥ崗璁《閮ㄦ樉绀虹増鏈彿锛堝 v1.0锛�
+   - 璁板綍鍘嗗彶鐗堟湰鍙樻洿
+
+2. **娣诲姞涓嬭浇鍔熻兘**
+   - 鍏佽鐢ㄦ埛涓嬭浇PDF鐗堟湰鐨勫崗璁�
+   - 鏂逛究鐢ㄦ埛淇濆瓨鍜屾煡闃�
+
+3. **娣诲姞鎼滅储鍔熻兘**
+   - 瀵逛簬鍐呭杈冮暱鐨勫崗璁紝鎻愪緵鍏抽敭璇嶆悳绱�
+   - 蹇�熷畾浣嶅埌鐩稿叧绔犺妭
+
+4. **鍥介檯鍖栨敮鎸�**
+   - 濡傞渶鏀寔澶氳瑷�锛屽彲娣诲姞璇█鍒囨崲鍔熻兘
+   - 鍑嗗鑻辨枃鐗堟湰鐨勫崗璁�
+
+### 5.3 娉曞緥瀹℃牳寤鸿
+
+**閲嶈鎻愮ず**: 铏界劧鎴戜滑鐨勫崗璁唴瀹瑰凡灏藉彲鑳界鍚堟硶寰嬭姹傦紝浣嗕粛寤鸿锛�
+
+1. **涓撲笟瀹℃牳**
+   - 璇疯吹鍏徃鐨勬硶寰嬮【闂鏍稿崗璁唴瀹�
+   - 鏍规嵁瀹為檯涓氬姟鎯呭喌璋冩暣鏉℃
+
+2. **琛屼笟鐗规畩瑕佹眰**
+   - 鍖荤枟鎬ユ晳琛屼笟鍙兘鏈夌壒娈婄殑娉曞緥瑕佹眰
+   - 璇峰挩璇㈠尰鐤楁硶寰嬩笓瀹�
+
+3. **瀹氭湡鏇存柊**
+   - 闅忕潃娉曞緥娉曡鐨勫彉鍖栵紝瀹氭湡鏇存柊鍗忚鍐呭
+   - 鐗瑰埆鍏虫敞銆婁釜浜轰俊鎭繚鎶ゆ硶銆嬬殑瀹炴柦缁嗗垯
+
+## 鍏�佹妧鏈疄鐜扮粏鑺�
+
+### 6.1 椤甸潰缁撴瀯
+
+```
+鍗忚椤甸潰
+鈹溾攢鈹� Header锛堥《閮ㄥ鑸爮锛�
+鈹�   鈹溾攢鈹� 杩斿洖鎸夐挳
+鈹�   鈹斺攢鈹� 椤甸潰鏍囬
+鈹斺攢鈹� Content锛堝唴瀹瑰尯鍩燂級
+    鈹溾攢鈹� ScrollView锛堝彲婊氬姩瀹瑰櫒锛�
+    鈹斺攢鈹� 鍗忚鍐呭
+        鈹溾攢鈹� 鏇存柊鏃ユ湡
+        鈹溾攢鈹� 鐢熸晥鏃ユ湡
+        鈹溾攢鈹� 绔犺妭鍐呭
+        鈹�   鈹溾攢鈹� 绔犺妭鏍囬
+        鈹�   鈹溾攢鈹� 灏忚妭鏍囬
+        鈹�   鈹溾攢鈹� 姝f枃
+        鈹�   鈹斺攢鈹� 鍒楄〃椤�
+        鈹斺攢鈹� 椤佃剼
+```
+
+### 6.2 鏍峰紡绯荤粺
+
+**鍝嶅簲寮忚璁�**:
+- 浣跨敤 `rpx` 鍗曚綅锛岃嚜鍔ㄩ�傞厤涓嶅悓灞忓箷灏哄
+- 鏈�灏忓瓧浣� `24rpx`锛屾鏂囧瓧浣� `28rpx`锛屾爣棰樺瓧浣� `32rpx`
+
+**棰滆壊鏂规**:
+- 涓昏壊璋冿細`#333`锛堟繁鐏帮級
+- 娆¤鏂囧瓧锛歚#666`锛堜腑鐏帮級
+- 鎻愮ず鏂囧瓧锛歚#999`锛堟祬鐏帮級
+- 楂樹寒鑹诧細`#007AFF`锛堣摑鑹诧級
+- 鏁忔劅淇℃伅鑳屾櫙锛歚#fff8e6`锛堟贰榛勶級
+- 鏁忔劅淇℃伅杈规锛歚#ff9500`锛堟鑹诧級
+
+**甯冨眬鐗圭偣**:
+- 鍐呭鍖哄煙锛氱櫧鑹茶儗鏅紝鍦嗚鍗$墖
+- 琛岄珮锛歚1.8`锛屽寮哄彲璇绘��
+- 娈佃惤闂磋窛锛歚15rpx`锛屾竻鏅板垎闅�
+- 鍒楄〃缂╄繘锛歚40rpx`锛屽眰绾ф槑鏄�
+
+### 6.3 浜や簰璁捐
+
+1. **杩斿洖瀵艰埅**
+   ```javascript
+   goBack() {
+     uni.navigateBack()
+   }
+   ```
+
+2. **婊氬姩鏌ョ湅**
+   - 浣跨敤 `scroll-view` 缁勪欢
+   - 鏀寔鍨傜洿婊氬姩
+   - 鑷姩闅愯棌婊氬姩鏉★紙淇濇寔缇庤锛�
+
+3. **閾炬帴鐐瑰嚮**
+   - 鍗忚涓殑閾炬帴浣跨敤钃濊壊鏍囪瘑
+   - 鐐瑰嚮鍙烦杞埌瀵瑰簲椤甸潰
+   - 浣跨敤 `@click.stop` 闃叉浜嬩欢鍐掓场
+
+## 涓冦�佺淮鎶ゅ拰鏇存柊
+
+### 7.1 鍗忚鏇存柊娴佺▼
+
+褰撻渶瑕佹洿鏂板崗璁唴瀹规椂锛�
+
+1. **淇敼鍐呭**
+   - 鍦ㄥ搴旂殑 `.vue` 鏂囦欢涓慨鏀瑰崗璁枃鏈�
+   - 鏇存柊"鏇存柊鏃ユ湡"鍜�"鐢熸晥鏃ユ湡"
+
+2. **閫氱煡鐢ㄦ埛**锛堝缓璁疄鐜帮級
+   - 鍦ㄧ敤鎴蜂笅娆$櫥褰曟椂鏄剧ず鍗忚鏇存柊鎻愮ず
+   - 瑕佹眰鐢ㄦ埛閲嶆柊鍚屾剰鍗忚
+   - 璁板綍鐢ㄦ埛鍚屾剰鐨勫崗璁増鏈彿
+
+3. **淇濆瓨鍘嗗彶鐗堟湰**锛堝缓璁疄鐜帮級
+   - 鍦ㄦ暟鎹簱涓繚瀛樺崗璁殑鍘嗗彶鐗堟湰
+   - 璁板綍鐢ㄦ埛鍚屾剰鐨勬槸鍝釜鐗堟湰
+   - 鏂逛究杩芥函鍜屽璁�
+
+### 7.2 鐩戞帶鍜屽弽棣�
+
+**鐢ㄦ埛鍙嶉鏀堕泦**:
+- 鍦ㄥ崗璁〉闈㈡坊鍔�"鎰忚鍙嶉"鍏ュ彛
+- 鏀堕泦鐢ㄦ埛瀵瑰崗璁唴瀹圭殑鐤戦棶
+- 鍙婃椂鍝嶅簲鐢ㄦ埛鐨勫挩璇�
+
+**鏁版嵁缁熻**:
+- 缁熻鍗忚鐨勬煡鐪嬫鏁�
+- 鍒嗘瀽鐢ㄦ埛鐨勫仠鐣欐椂闂�
+- 璇嗗埆鐢ㄦ埛鍏虫敞鐨勭珷鑺�
+
+## 鍏�佹敞鎰忎簨椤�
+
+### 8.1 寮�鍙戞敞鎰忎簨椤�
+
+1. **瀛楃缂栫爜**
+   - 纭繚鏂囦欢浣跨敤 UTF-8 缂栫爜
+   - 閬垮厤涓枃涔辩爜闂
+
+2. **璺ㄥ钩鍙板吋瀹�**
+   - 鍦ㄥ井淇″皬绋嬪簭銆丠5銆丄pp涓祴璇�
+   - 纭繚婊氬姩鍜屽鑸姛鑳芥甯�
+
+3. **鎬ц兘浼樺寲**
+   - 鍗忚鍐呭杈冮暱锛屾敞鎰忛〉闈㈠姞杞芥�ц兘
+   - 鍙互鑰冭檻鎳掑姞杞芥垨鍒嗛〉鏄剧ず
+
+### 8.2 鍚堣娉ㄦ剰浜嬮」
+
+1. **蹇呴』鍚屾剰**
+   - 娉ㄥ唽鏃跺繀椤诲嬀閫夊悓鎰忓崗璁�
+   - 涓嶈兘榛樿鍕鹃�夛紝蹇呴』鐢ㄦ埛涓诲姩鎿嶄綔
+
+2. **鏄撲簬璁块棶**
+   - 鍗忚閾炬帴蹇呴』娓呮櫚鍙
+   - 闅忔椂鍙互鏌ョ湅瀹屾暣鍗忚
+
+3. **鏄庣‘鍛婄煡**
+   - 鏀堕泦鏁忔劅淇℃伅鏃跺繀椤绘槑纭憡鐭�
+   - 璇存槑鎷掔粷鎺堟潈鐨勫奖鍝�
+
+4. **鑾峰彇鍚屾剰**
+   - 閲嶈鏉冮檺锛堝瀹氫綅锛夐渶鍗曠嫭鎺堟潈
+   - 涓嶈兘涓�娆℃�ф巿鏉冩墍鏈夋潈闄�
+
+## 涔濄�佸悗缁紭鍖栧缓璁�
+
+1. **娣诲姞鍗忚鐗堟湰绠$悊绯荤粺**
+   - 鍦ㄥ悗鍙扮鐞嗙郴缁熶腑娣诲姞鍗忚鐗堟湰绠$悊
+   - 鏀寔鍦ㄧ嚎缂栬緫鍜岄瑙�
+   - 鑷姩璁板綍鏇存柊鍘嗗彶
+
+2. **瀹炵幇鍗忚鍚屾剰璁板綍**
+   - 鍦ㄦ暟鎹簱涓褰曠敤鎴峰悓鎰忓崗璁殑鏃堕棿鍜岀増鏈�
+   - 褰撳崗璁洿鏂版椂锛屾彁绀虹敤鎴烽噸鏂板悓鎰�
+   - 绗﹀悎銆婁釜浜轰俊鎭繚鎶ゆ硶銆嬬殑瑕佹眰
+
+3. **娣诲姞鍗忚瀵煎嚭鍔熻兘**
+   - 鍏佽鐢ㄦ埛瀵煎嚭PDF鐗堟湰
+   - 鏂逛究鐢ㄦ埛淇濆瓨鍜屾墦鍗�
+
+4. **浼樺寲绉诲姩绔綋楠�**
+   - 娣诲姞鐩綍瀵艰埅锛屽揩閫熻烦杞埌鎸囧畾绔犺妭
+   - 浼樺寲闀挎枃鏈殑闃呰浣撻獙
+   - 娣诲姞澶滈棿妯″紡
+
+## 鍗併�佹枃浠舵竻鍗�
+
+### 鏂板鏂囦欢
+- `app/pages/mine/user-agreement/index.vue` - 鐢ㄦ埛鏈嶅姟鍗忚椤甸潰
+- `app/pages/mine/privacy-policy/index.vue` - 闅愮鏀跨瓥椤甸潰
+- `prd/鐢ㄦ埛鍗忚涓庨殣绉佹斂绛栧畬鍠勮鏄�.md` - 鏈鏄庢枃妗�
+
+### 淇敼鏂囦欢
+- `app/pages/login.vue` - 淇敼鍗忚閾炬帴鎸囧悜
+- `app/pages/register.vue` - 娣诲姞鍗忚鍚屾剰checkbox
+- `app/pages/mine/index.vue` - 娣诲姞鍗忚鑿滃崟鍏ュ彛
+- `app/pages.json` - 娣诲姞璺敱閰嶇疆锛堜箣鍓嶅凡娣诲姞锛�
+
+## 鍗佷竴銆佹�荤粨
+
+鏈瀹屽杽宸ヤ綔瀹炵幇浜嗭細
+
+鉁� **瀹屾暣鐨勭敤鎴峰崗璁拰闅愮鏀跨瓥椤甸潰**
+鉁� **绗﹀悎涓浗娉曞緥娉曡瑕佹眰**
+鉁� **娉ㄥ唽鏃跺己鍒跺悓鎰忓崗璁�**
+鉁� **澶氬渚挎嵎璁块棶鍏ュ彛**
+鉁� **绉诲姩绔紭鍖栫殑UI璁捐**
+鉁� **鏁忔劅淇℃伅楂樹寒鎻愮ず**
+鉁� **娓呮櫚鐨勫唴瀹圭粨鏋�**
+鉁� **涓撲笟鐨勬硶寰嬫湳璇�**
+
+璇峰湪瀹為檯閮ㄧ讲鍓嶏紝鍔″繀锛�
+1. 淇敼鑱旂郴鏂瑰紡涓哄疄闄呬俊鎭�
+2. 鏇存柊鏃ユ湡涓哄疄闄呮棩鏈�
+3. 璇锋硶寰嬮【闂鏍稿崗璁唴瀹�
+4. 鏍规嵁瀹為檯涓氬姟璋冩暣鏉℃
+
+濡傛湁浠讳綍闂鎴栭渶瑕佽繘涓�姝ヨ皟鏁达紝璇烽殢鏃惰仈绯诲紑鍙戝洟闃燂紒
diff --git "a/prd/\347\224\250\346\210\267\345\215\217\350\256\256\344\270\216\351\232\220\347\247\201\346\224\277\347\255\226\350\257\264\346\230\216.md" "b/prd/\347\224\250\346\210\267\345\215\217\350\256\256\344\270\216\351\232\220\347\247\201\346\224\277\347\255\226\350\257\264\346\230\216.md"
new file mode 100644
index 0000000..923ad59
--- /dev/null
+++ "b/prd/\347\224\250\346\210\267\345\215\217\350\256\256\344\270\216\351\232\220\347\247\201\346\224\277\347\255\226\350\257\264\346\230\216.md"
@@ -0,0 +1,332 @@
+# 鐢ㄦ埛鍗忚涓庨殣绉佹斂绛栧畬鍠勮鏄�
+
+## 姒傝堪
+
+涓烘�ユ晳杞繍璋冨害绯荤粺娣诲姞浜嗗畬鏁寸殑鐢ㄦ埛鏈嶅姟鍗忚鍜岄殣绉佹斂绛栵紝纭繚绗﹀悎涓浗娉曞緥娉曡瑕佹眰锛屼繚鎶ょ敤鎴锋潈鐩婂拰涓汉淇℃伅瀹夊叏銆�
+
+## 鏂板鏂囦欢
+
+### 1. 鐢ㄦ埛鏈嶅姟鍗忚椤甸潰
+
+**鏂囦欢璺緞**: `app/pages/mine/user-agreement/index.vue`
+
+**涓昏鍐呭**:
+- **鏈嶅姟璇存槑**: 绯荤粺鍔熻兘銆佹湇鍔¤寖鍥淬�佸姛鑳借皟鏁磋鏄�
+- **璐﹀彿娉ㄥ唽涓庝娇鐢�**: 璐﹀彿绠$悊瑙勮寖銆佷俊鎭湡瀹炴�ц姹�
+- **鐢ㄦ埛琛屼负瑙勮寖**: 鍚堟硶浣跨敤瑕佹眰銆佺姝㈣涓哄垪琛ㄣ�佽亴涓氭搷浣滆鑼�
+- **闅愮淇濇姢**: 淇℃伅鏀堕泦璇存槑銆侀殣绉佹斂绛栧紩鐢�
+- **鐭ヨ瘑浜ф潈**: 绯荤粺鍐呭褰掑睘銆佷娇鐢ㄩ檺鍒�
+- **鏈嶅姟涓柇鎴栫粓姝�**: 涓柇鎯呭舰銆侀�氱煡鏈哄埗銆佽处鍙锋敞閿�
+- **鍏嶈矗澹版槑**: 璐d换鑼冨洿銆佸弬鑰冩�ц鏄�
+- **鍗忚鍙樻洿**: 淇敼鏈哄埗銆佺敤鎴烽�夋嫨鏉�
+- **浜夎瑙e喅**: 閫傜敤娉曞緥銆佽В鍐抽�斿緞
+- **鑱旂郴鏂瑰紡**: 瀹㈡湇閭銆佺數璇濄�佸伐浣滄椂闂�
+
+**鐗硅壊鍔熻兘**:
+- 馃摫 绉诲姩绔紭鍖栧竷灞�
+- 馃摉 娓呮櫚鐨勭珷鑺傜粨鏋�
+- 馃帹 鍙嬪ソ鐨勮瑙夎璁�
+- 鉁� 閲嶇偣鍐呭绐佸嚭鏄剧ず
+- 馃敊 杩斿洖鎸夐挳鏀寔
+
+### 2. 闅愮鏀跨瓥椤甸潰
+
+**鏂囦欢璺緞**: `app/pages/mine/privacy-policy/index.vue`
+
+**涓昏鍐呭**:
+- **寮曡█**: 闅愮淇濇姢鎵胯銆佹斂绛栭�傜敤鑼冨洿
+- **淇℃伅鏀堕泦涓庝娇鐢�**:
+  - 璐﹀彿娉ㄥ唽淇℃伅锛堟墜鏈哄彿銆佸鍚嶃�侀儴闂ㄣ�佽亴浣嶏級
+  - 浠诲姟璋冨害淇℃伅锛堜綅缃�佹偅鑰呬俊鎭�佽溅杈嗕俊鎭級
+  - 娑堟伅鎺ㄩ�佷俊鎭紙璁惧淇℃伅銆佹帹閫乼oken锛�
+  - 绯荤粺浼樺寲淇℃伅锛堟棩蹇椼�佺綉缁溿�佷娇鐢ㄦ儏鍐碉級
+- **Cookie鍜屽悓绫绘妧鏈�**: 浣跨敤鐩殑銆佺鐞嗘柟寮�
+- **淇℃伅鍏变韩銆佽浆璁┿�佸叕寮�鎶湶**: 鍏变韩鎯呭舰銆佽浆璁╅檺鍒躲�佹姭闇叉潯浠�
+- **淇℃伅瀹夊叏淇濇姢**:
+  - 鏁版嵁鍔犲瘑锛圫SL/TLS銆佹晱鎰熸暟鎹姞瀵嗭級
+  - 璁块棶鎺у埗锛堟潈闄愮鐞嗐�佸鎵规満鍒讹級
+  - 瀹夊叏瀹¤锛堝畾鏈熻瘎浼帮級
+  - 浜哄憳绠$悊锛堣韩浠借璇侊級
+  - 搴旀�ュ搷搴旓紙浜嬩欢棰勬锛�
+- **鐢ㄦ埛鏉冨埄**:
+  - 璁块棶鍜屾洿姝d俊鎭�
+  - 鍒犻櫎涓汉淇℃伅
+  - 娉ㄩ攢璐﹀彿
+  - 鎾ゅ洖鍚屾剰
+- **鏈垚骞翠汉淇濇姢**: 闈㈠悜瀵硅薄璇存槑銆佺壒娈婁繚鎶ゆ帾鏂�
+- **璺ㄥ浼犺緭**: 鏁版嵁瀛樺偍浣嶇疆璇存槑
+- **鏀跨瓥鏇存柊**: 淇閫氱煡鏈哄埗
+- **鑱旂郴鏂瑰紡**: 闅愮闂鑱旂郴娓犻亾
+- **鏈瀹氫箟**: 涓汉淇℃伅銆佹晱鎰熶俊鎭瓑瀹氫箟
+
+**鐗硅壊鍔熻兘**:
+- 馃敀 鏁忔劅淇℃伅楂樹寒鏄剧ず
+- 馃搵 璇︾粏鐨勪俊鎭被鍨嬭鏄�
+- 馃洝锔� 瀹夊叏淇濇姢鎺柦璇﹁В
+- 鈿� 鐢ㄦ埛鏉冨埄鏄庣‘鍒椾妇
+- 馃摓 澶氱鑱旂郴鏂瑰紡
+
+## 璺敱閰嶇疆
+
+宸插湪 `app/pages.json` 涓坊鍔犺矾鐢遍厤缃細
+
+```json
+{
+  "path": "pages/mine/user-agreement/index",
+  "style": {
+    "navigationBarTitleText": "鐢ㄦ埛鏈嶅姟鍗忚"
+  }
+},
+{
+  "path": "pages/mine/privacy-policy/index",
+  "style": {
+    "navigationBarTitleText": "闅愮鏀跨瓥"
+  }
+}
+```
+
+## 浣跨敤鏂瑰紡
+
+### 浠�"鎴戠殑"椤甸潰璺宠浆
+
+```vue
+<template>
+  <view class="setting-item" @click="viewUserAgreement">
+    <text>鐢ㄦ埛鏈嶅姟鍗忚</text>
+    <uni-icons type="arrowright" size="16"></uni-icons>
+  </view>
+  
+  <view class="setting-item" @click="viewPrivacyPolicy">
+    <text>闅愮鏀跨瓥</text>
+    <uni-icons type="arrowright" size="16"></uni-icons>
+  </view>
+</template>
+
+<script>
+export default {
+  methods: {
+    viewUserAgreement() {
+      uni.navigateTo({
+        url: '/pages/mine/user-agreement/index'
+      })
+    },
+    viewPrivacyPolicy() {
+      uni.navigateTo({
+        url: '/pages/mine/privacy-policy/index'
+      })
+    }
+  }
+}
+</script>
+```
+
+### 鍦ㄦ敞鍐岄〉闈㈠紩鐢�
+
+```vue
+<template>
+  <view class="agreement-tips">
+    <checkbox-group @change="agreeChange">
+      <label>
+        <checkbox value="agree" :checked="agreedToTerms" />
+        <text>鎴戝凡闃呰骞跺悓鎰�</text>
+        <text class="link" @click.stop="viewUserAgreement">銆婄敤鎴锋湇鍔″崗璁��</text>
+        <text>鍜�</text>
+        <text class="link" @click.stop="viewPrivacyPolicy">銆婇殣绉佹斂绛栥��</text>
+      </label>
+    </checkbox-group>
+  </view>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      agreedToTerms: false
+    }
+  },
+  methods: {
+    agreeChange(e) {
+      this.agreedToTerms = e.detail.value.includes('agree')
+    },
+    viewUserAgreement() {
+      uni.navigateTo({
+        url: '/pages/mine/user-agreement/index'
+      })
+    },
+    viewPrivacyPolicy() {
+      uni.navigateTo({
+        url: '/pages/mine/privacy-policy/index'
+      })
+    }
+  }
+}
+</script>
+```
+
+## 娉曞緥鍚堣瑕佺偣
+
+### 1. 绗﹀悎銆婁釜浜轰俊鎭繚鎶ゆ硶銆嬭姹�
+
+鉁� **鏄庣‘鍛婄煡**: 娓呮璇存槑鏀堕泦鍝簺涓汉淇℃伅
+鉁� **鐢ㄩ�旇鏄�**: 璇︾粏璇存槑姣忕被淇℃伅鐨勪娇鐢ㄧ洰鐨�
+鉁� **鏁忔劅淇℃伅鏍囨敞**: 瀵逛綅缃俊鎭瓑鏁忔劅鏁版嵁鐗瑰埆鏍囨敞
+鉁� **鐢ㄦ埛鏉冨埄**: 鏄庣‘鐢ㄦ埛璁块棶銆佹洿姝c�佸垹闄ょ瓑鏉冨埄
+鉁� **瀹夊叏淇濇姢**: 璇存槑閲囧彇鐨勫畨鍏ㄤ繚鎶ゆ帾鏂�
+
+### 2. 绗﹀悎銆婄綉缁滃畨鍏ㄦ硶銆嬭姹�
+
+鉁� **鏁版嵁瀹夊叏**: 璇存槑鏁版嵁鍔犲瘑銆佽闂帶鍒剁瓑鎺柦
+鉁� **浜嬩欢搴旀��**: 鏄庣‘瀹夊叏浜嬩欢鐨勫鐞嗗拰閫氱煡鏈哄埗
+鉁� **鏁版嵁瀛樺偍**: 璇存槑鏁版嵁瀛樺偍鍦ㄥ鍐�
+
+### 3. 绗﹀悎銆婃皯娉曞吀銆嬭姹�
+
+鉁� **闅愮鏉冧繚鎶�**: 灏婇噸鐢ㄦ埛闅愮鏉�
+鉁� **涓汉淇℃伅淇濇姢**: 鍚堟硶銆佹褰撱�佸繀瑕佸師鍒�
+鉁� **鏈垚骞翠汉淇濇姢**: 鐗瑰埆淇濇姢鎺柦
+
+## 瀹氬埗鍖栧缓璁�
+
+### 鏍规嵁瀹為檯鎯呭喌淇敼浠ヤ笅鍐呭锛�
+
+1. **鑱旂郴鏂瑰紡**
+   - 鐢靛瓙閭锛氬皢 `support@example.com` 鏀逛负瀹為檯閭
+   - 瀹㈡湇鐢佃瘽锛氬皢 `400-XXX-XXXX` 鏀逛负瀹為檯鐢佃瘽
+   - 闅愮閭锛氬皢 `privacy@example.com` 鏀逛负瀹為檯閭
+
+2. **鍏徃淇℃伅**
+   - 鏍规嵁瀹為檯杩愯惀涓讳綋瀹屽杽鍏徃鍚嶇О
+   - 娣诲姞鍏徃娉ㄥ唽鍦板潃
+   - 娣诲姞缁熶竴绀句細淇$敤浠g爜
+
+3. **鏁版嵁澶勭悊**
+   - 鏍规嵁瀹為檯涓氬姟璋冩暣鏀堕泦鐨勪俊鎭被鍨�
+   - 琛ュ厖绗笁鏂规湇鍔″晢淇℃伅锛堝鍦板浘鏈嶅姟锛�
+   - 瀹屽杽鏁版嵁淇濆瓨鏈熼檺璇存槑
+
+4. **鐗瑰畾鍦烘櫙**
+   - 鏍规嵁瀹為檯涓氬姟琛ュ厖鐗规畩鍦烘櫙鐨勯殣绉佸鐞�
+   - 娣诲姞鍏蜂綋鐨勫尰鐤楁暟鎹鐞嗚鏄�
+   - 瀹屽杽鎮h�呬俊鎭繚鎶ょ粏鍒�
+
+## 鏍峰紡鐗圭偣
+
+### 閫氱敤鏍峰紡
+
+- **鍝嶅簲寮忓竷灞�**: 閫傞厤涓嶅悓灞忓箷灏哄
+- **娓呮櫚灞傜骇**: 鏍囬銆佸皬鏍囬銆佹鏂囧眰娆″垎鏄�
+- **鏄撹鎬�**: 鍚堥�傜殑瀛楀彿銆佽楂樸�侀棿璺�
+- **瑙嗚寮曞**: 浣跨敤鍥炬爣銆侀鑹插己璋冮噸鐐�
+
+### 闅愮鏀跨瓥鐗规畩鏍峰紡
+
+```scss
+.highlight {
+  background-color: #fff8e6;  // 娣¢粍鑹茶儗鏅�
+  padding: 20rpx;
+  border-left: 4rpx solid #ff9500;  // 姗欒壊宸﹁竟妗�
+  border-radius: 8rpx;
+  font-weight: bold;
+  color: #333;
+}
+```
+
+鐢ㄤ簬绐佸嚭鏄剧ず鏁忔劅淇℃伅銆侀噸瑕佹彁绀虹瓑鍐呭銆�
+
+### 鍒楄〃鏍峰紡
+
+```scss
+.indent {
+  padding-left: 40rpx;
+  position: relative;
+  
+  &::before {
+    content: '';
+    position: absolute;
+    left: 20rpx;
+    top: 18rpx;
+    width: 8rpx;
+    height: 8rpx;
+    background-color: #666;
+    border-radius: 50%;
+  }
+}
+```
+
+鐢ㄤ簬鏄剧ず椤圭洰鍒楄〃锛屼娇鐢ㄥ渾鐐规爣璁般��
+
+## 缁存姢寤鸿
+
+### 瀹氭湡鏇存柊
+
+1. **娉曞緥娉曡鍙樻洿鏃�**: 鍙婃椂鏇存柊鐩稿叧鏉℃
+2. **鍔熻兘鍙樻洿鏃�**: 鏇存柊鍔熻兘璇存槑鍜屼俊鎭敹闆嗚鏄�
+3. **瀹夊叏鎺柦鍗囩骇鏃�**: 鏇存柊瀹夊叏淇濇姢璇存槑
+4. **鑷冲皯姣忓勾涓�娆�**: 瀹℃煡鍜屾洿鏂版暣浣撳唴瀹�
+
+### 鐗堟湰绠$悊
+
+寤鸿鍦ㄦ枃浠堕《閮ㄦ坊鍔犵増鏈褰曪細
+
+```vue
+<view class="version-info">
+  <text>鐗堟湰锛歷1.0</text>
+  <text>鏇存柊鏃ユ湡锛�2025骞�1鏈�25鏃�</text>
+  <text>鐢熸晥鏃ユ湡锛�2025骞�1鏈�25鏃�</text>
+</view>
+```
+
+### 鍙樻洿閫氱煡
+
+褰撳崗璁垨鏀跨瓥鏈夐噸澶у彉鏇存椂锛屽簲锛�
+1. 鍦ㄧ郴缁熶腑寮圭獥閫氱煡鐢ㄦ埛
+2. 瑕佹眰鐢ㄦ埛閲嶆柊鍚屾剰
+3. 淇濈暀鍙樻洿璁板綍
+
+## 娉ㄦ剰浜嬮」
+
+### 1. 娉曞緥瀹℃牳
+
+鈿狅笍 **閲嶈**: 寤鸿鍦ㄦ寮忎娇鐢ㄥ墠锛岃涓撲笟寰嬪笀瀹℃牳鍗忚鍜屾斂绛栧唴瀹癸紝纭繚瀹屽叏绗﹀悎锛�
+- 銆婁釜浜轰俊鎭繚鎶ゆ硶銆�
+- 銆婄綉缁滃畨鍏ㄦ硶銆�
+- 銆婃皯娉曞吀銆�
+- 銆婃暟鎹畨鍏ㄦ硶銆�
+- 鐩稿叧琛屼笟瑙勮寖锛堝尰鐤楄涓氾級
+
+### 2. 鍖荤枟鏁版嵁鐗规畩鎬�
+
+鐢变簬娑夊強鍖荤枟鎬ユ晳涓氬姟锛屽彲鑳介渶瑕佽ˉ鍏咃細
+- 鎮h�呭尰鐤楁暟鎹殑鐗规畩淇濇姢鎺柦
+- 鍖荤枟淇℃伅鑴辨晱澶勭悊
+- 鍖荤枟鏁版嵁璁块棶鏉冮檺绠$悊
+- 绗﹀悎鍖荤枟琛屼笟鏁版嵁瀹夊叏瑙勮寖
+
+### 3. 鏁忔劅鏉冮檺璇存槑
+
+瀵逛簬浣嶇疆淇℃伅绛夋晱鎰熸潈闄愶紝闇�瑕侊細
+- 鍦ㄩ娆′娇鐢ㄦ椂寮圭獥璇存槑
+- 鎻愪緵鎷掔粷閫夐」
+- 璇存槑鎷掔粷鍚庣殑褰卞搷
+- 鍏佽闅忔椂鎾ゅ洖鎺堟潈
+
+### 4. 鏈垚骞翠汉淇濇姢
+
+濡傛灉绯荤粺鍙兘琚湭鎴愬勾浜轰娇鐢紝闇�瑕侊細
+- 娣诲姞骞撮緞楠岃瘉鏈哄埗
+- 瑕佹眰鐩戞姢浜哄悓鎰�
+- 鐗规畩鐨勯殣绉佷繚鎶ゆ帾鏂�
+
+## 鐩稿叧鏂囦欢
+
+- `/app/pages/mine/user-agreement/index.vue` - 鐢ㄦ埛鏈嶅姟鍗忚椤甸潰
+- `/app/pages/mine/privacy-policy/index.vue` - 闅愮鏀跨瓥椤甸潰
+- `/app/pages.json` - 璺敱閰嶇疆鏂囦欢
+
+## 鏇存柊鏃ュ織
+
+- **2025-01-25**: 鍒濆鐗堟湰
+  - 鍒涘缓鐢ㄦ埛鏈嶅姟鍗忚椤甸潰
+  - 鍒涘缓闅愮鏀跨瓥椤甸潰
+  - 娣诲姞璺敱閰嶇疆
+  - 瀹屽杽娉曞緥鍚堣鍐呭
diff --git "a/prd/\347\231\273\345\275\225\346\263\250\345\206\214\345\215\217\350\256\256\351\223\276\346\216\245\344\274\230\345\214\226\350\257\264\346\230\216.md" "b/prd/\347\231\273\345\275\225\346\263\250\345\206\214\345\215\217\350\256\256\351\223\276\346\216\245\344\274\230\345\214\226\350\257\264\346\230\216.md"
new file mode 100644
index 0000000..129583f
--- /dev/null
+++ "b/prd/\347\231\273\345\275\225\346\263\250\345\206\214\345\215\217\350\256\256\351\223\276\346\216\245\344\274\230\345\214\226\350\257\264\346\230\216.md"
@@ -0,0 +1,407 @@
+# 鐧诲綍娉ㄥ唽鍗忚閾炬帴浼樺寲璇存槑
+
+## 闂鎻忚堪
+
+鐢ㄦ埛鍙嶉鐧诲綍鐣岄潰鐨勯殣绉佸崗璁拰鐢ㄦ埛鍗忚閾炬帴锛�
+1. 浣嶇疆澶潬涓婏紝瀹规槗琚叾浠栧厓绱犻伄鎸�
+2. 鐐瑰嚮鍖哄煙澶皬锛屼笉瀹规槗鐐瑰嚮
+3. 鐐瑰嚮鍙兘鏃犲搷搴�
+
+## 浼樺寲鏂规
+
+### 涓�銆佺櫥褰曢〉闈� (`app/pages/login.vue`)
+
+#### 1.1 妯℃澘浼樺寲
+
+**淇敼鍓�**:
+```vue
+<view class="xieyi text-center">
+  <text class="text-grey1">鐧诲綍鍗充唬琛ㄥ悓鎰�</text>
+  <text @click="handleUserAgrement" class="text-blue">銆婄敤鎴峰崗璁��</text>
+  <text @click="handlePrivacy" class="text-blue">銆婇殣绉佸崗璁��</text>
+</view>
+```
+
+**淇敼鍚�**:
+```vue
+<view class="xieyi text-center">
+  <text class="text-grey1">鐧诲綍鍗充唬琛ㄥ悓鎰�</text>
+  <text @click.stop="handleUserAgrement" class="text-blue agreement-link">銆婄敤鎴峰崗璁��</text>
+  <text class="text-grey1">鍜�</text>
+  <text @click.stop="handlePrivacy" class="text-blue agreement-link">銆婇殣绉佸崗璁��</text>
+</view>
+```
+
+**浼樺寲鐐�**:
+- 鉁� 娣诲姞 `@click.stop` 闃绘浜嬩欢鍐掓场
+- 鉁� 娣诲姞 `agreement-link` 绫诲悕锛屽鍔犵偣鍑诲尯鍩�
+- 鉁� 鍦ㄤ袱涓崗璁箣闂存坊鍔�"鍜�"瀛楋紝鏇寸鍚堣涔�
+
+#### 1.2 鏍峰紡浼樺寲
+
+**淇敼鍓�**:
+```scss
+.reg, .xieyi {
+  margin: 20rpx 0;
+
+  .text-grey1 {
+    color: #888;
+  }
+
+  .text-blue {
+    margin: 0 10rpx;
+    color: #007AFF;
+  }
+}
+```
+
+**淇敼鍚�**:
+```scss
+.reg {
+  margin: 20rpx 0;
+
+  .text-grey1 {
+    color: #888;
+  }
+
+  .text-blue {
+    margin: 0 10rpx;
+    color: #007AFF;
+  }
+}
+
+.xieyi {
+  margin: 50rpx 0 30rpx 0;  // 鍚戜笅绉诲姩锛屽鍔犱笂杈硅窛
+  padding: 20rpx 0;          // 澧炲姞鍐呰竟璺�
+  line-height: 2;            // 澧炲姞琛岄珮
+
+  .text-grey1 {
+    color: #888;
+    font-size: 24rpx;
+  }
+
+  .agreement-link {
+    color: #007AFF;
+    font-size: 24rpx;
+    padding: 10rpx 8rpx;     // 澧炲姞鐐瑰嚮鍖哄煙
+    margin: 0 5rpx;
+    display: inline-block;
+    position: relative;
+    z-index: 10;             // 纭繚鍦ㄦ渶涓婂眰
+  }
+}
+```
+
+**浼樺寲鐐�**:
+- 鉁� **鍚戜笅绉诲姩**: `margin-top: 50rpx`锛堝師鏉�20rpx锛�
+- 鉁� **澧炲姞鐐瑰嚮鍖哄煙**: `padding: 10rpx 8rpx`
+- 鉁� **鎻愰珮灞傜骇**: `z-index: 10`
+- 鉁� **澧炲姞琛岄珮**: `line-height: 2`锛岄槻姝㈡枃瀛楁嫢鎸�
+- 鉁� **鍒嗙鏍峰紡**: 灏� `.reg` 鍜� `.xieyi` 鍒嗗紑锛岀嫭绔嬫帶鍒�
+
+### 浜屻�佹敞鍐岄〉闈� (`app/pages/register.vue`)
+
+#### 2.1 妯℃澘锛堝凡姝g‘锛�
+
+```vue
+<view class="agreement-section">
+  <checkbox-group @change="handleAgreementChange">
+    <label class="agreement-label">
+      <checkbox value="agreed" :checked="agreedToTerms" color="#007AFF" />
+      <text class="agreement-text">
+        鎴戝凡闃呰骞跺悓鎰�
+        <text class="agreement-link" @click.stop="handleUserAgreement">銆婄敤鎴锋湇鍔″崗璁��</text>
+        鍜�
+        <text class="agreement-link" @click.stop="handlePrivacy">銆婇殣绉佹斂绛栥��</text>
+      </text>
+    </label>
+  </checkbox-group>
+</view>
+```
+
+宸插寘鍚� `@click.stop`锛屾纭樆姝簨浠跺啋娉°��
+
+#### 2.2 鏍峰紡浼樺寲
+
+**淇敼鍓�**:
+```scss
+.agreement-section {
+  margin: 30rpx 0;
+  
+  .agreement-label {
+    display: flex;
+    align-items: flex-start;
+    
+    checkbox {
+      margin-right: 15rpx;
+      transform: scale(0.9);
+    }
+    
+    .agreement-text {
+      flex: 1;
+      font-size: 24rpx;
+      color: #666;
+      line-height: 1.6;
+      text-align: left;
+      
+      .agreement-link {
+        color: #007AFF;
+        text-decoration: underline;
+      }
+    }
+  }
+}
+```
+
+**淇敼鍚�**:
+```scss
+.agreement-section {
+  margin: 30rpx 0;
+  
+  .agreement-label {
+    display: flex;
+    align-items: flex-start;
+    
+    checkbox {
+      margin-right: 15rpx;
+      transform: scale(0.9);
+      flex-shrink: 0;          // 闃叉checkbox琚帇缂�
+    }
+    
+    .agreement-text {
+      flex: 1;
+      font-size: 26rpx;        // 澧炲ぇ瀛椾綋锛堝師24rpx锛�
+      color: #666;
+      line-height: 2;          // 澧炲姞琛岄珮锛堝師1.6锛�
+      text-align: left;
+      
+      .agreement-link {
+        color: #007AFF;
+        text-decoration: underline;
+        padding: 8rpx 5rpx;    // 澧炲姞鐐瑰嚮鍖哄煙
+        display: inline-block;
+        position: relative;
+        z-index: 10;           // 纭繚鍦ㄦ渶涓婂眰
+      }
+    }
+  }
+}
+```
+
+**浼樺寲鐐�**:
+- 鉁� **闃叉鍘嬬缉**: checkbox娣诲姞 `flex-shrink: 0`
+- 鉁� **澧炲ぇ瀛椾綋**: `font-size: 26rpx`锛堝師24rpx锛�
+- 鉁� **澧炲姞琛岄珮**: `line-height: 2`锛堝師1.6锛�
+- 鉁� **澧炲姞鐐瑰嚮鍖哄煙**: `padding: 8rpx 5rpx`
+- 鉁� **鎻愰珮灞傜骇**: `z-index: 10`
+
+## 浼樺寲鏁堟灉瀵规瘮
+
+### 鐧诲綍椤甸潰
+
+| 椤圭洰 | 浼樺寲鍓� | 浼樺寲鍚� |
+|------|--------|--------|
+| 涓婅竟璺� | 20rpx | 50rpx |
+| 鍐呰竟璺� | 鏃� | 20rpx 0 |
+| 琛岄珮 | 榛樿 | 2 |
+| 鐐瑰嚮鍖哄煙 | 浠呮枃瀛� | 鏂囧瓧 + padding(10rpx 8rpx) |
+| z-index | 榛樿 | 10 |
+| 浜嬩欢鍐掓场 | 鍙兘鍐掓场 | 宸查樆姝�(@click.stop) |
+
+### 娉ㄥ唽椤甸潰
+
+| 椤圭洰 | 浼樺寲鍓� | 浼樺寲鍚� |
+|------|--------|--------|
+| 瀛椾綋澶у皬 | 24rpx | 26rpx |
+| 琛岄珮 | 1.6 | 2 |
+| 鐐瑰嚮鍖哄煙 | 浠呮枃瀛� | 鏂囧瓧 + padding(8rpx 5rpx) |
+| z-index | 榛樿 | 10 |
+| checkbox鍘嬬缉 | 鍙兘 | 宸查槻姝�(flex-shrink: 0) |
+
+## 鎶�鏈鐐�
+
+### 1. 闃绘浜嬩欢鍐掓场
+
+浣跨敤 `@click.stop` 鏇夸唬 `@click`锛�
+
+```vue
+<!-- 閿欒 -->
+<text @click="handlePrivacy">銆婇殣绉佸崗璁��</text>
+
+<!-- 姝g‘ -->
+<text @click.stop="handlePrivacy">銆婇殣绉佸崗璁��</text>
+```
+
+**鍘熷洜**: 
+- 鍦╱ni-app涓紝鐗瑰埆鏄湪寰俊灏忕▼搴忕幆澧冧笅锛岀偣鍑讳簨浠跺彲鑳戒細琚埗鍏冪礌鎹曡幏
+- 浣跨敤 `.stop` 淇グ绗﹀彲浠ラ樆姝簨浠跺啋娉★紝纭繚鐐瑰嚮鍙Е鍙戝綋鍓嶅厓绱犵殑浜嬩欢
+
+### 2. 澧炲姞鐐瑰嚮鐑尯
+
+閫氳繃 `padding` 澧炲姞鍙偣鍑诲尯鍩燂細
+
+```scss
+.agreement-link {
+  padding: 10rpx 8rpx;
+  display: inline-block;  // 蹇呴』鏄潡绾ф垨琛屽唴鍧楃骇鍏冪礌
+}
+```
+
+**鏁堟灉**:
+- 鐐瑰嚮鍖哄煙浠� "鏂囧瓧瀹藉害" 鎵╁ぇ鍒� "鏂囧瓧瀹藉害 + padding"
+- 鎻愬崌绉诲姩绔敤鎴蜂綋楠�
+
+### 3. 纭繚鍏冪礌灞傜骇
+
+浣跨敤 `z-index` 鍜� `position: relative`锛�
+
+```scss
+.agreement-link {
+  position: relative;
+  z-index: 10;
+}
+```
+
+**鍘熷洜**:
+- 闃叉琚叾浠栧厓绱狅紙濡傚井淇$櫥褰曟寜閽級閬尅
+- 纭繚鐐瑰嚮浜嬩欢鑳藉姝e父瑙﹀彂
+
+### 4. 瑙嗚鍒嗙
+
+閫氳繃澧炲姞闂磋窛鍜岃楂橈細
+
+```scss
+.xieyi {
+  margin: 50rpx 0 30rpx 0;  // 鍚戜笅绉诲姩
+  padding: 20rpx 0;
+  line-height: 2;
+}
+```
+
+**鏁堟灉**:
+- 鍗忚鍖哄煙涓庝笂鏂规寜閽繚鎸佽冻澶熻窛绂�
+- 鏂囧瓧涓嶄細鎷ユ尋锛屾洿鏄撻槄璇�
+
+## 娴嬭瘯瑕佺偣
+
+### 娴嬭瘯鐜
+- 鉁� 寰俊灏忕▼搴�
+- 鉁� H5
+- 鉁� Android App
+- 鉁� iOS App
+
+### 娴嬭瘯姝ラ
+
+#### 鐧诲綍椤甸潰娴嬭瘯
+1. 鎵撳紑鐧诲綍椤甸潰
+2. 鍚戜笅婊氬姩锛屾煡鐪嬪崗璁尯鍩熸槸鍚﹀悜涓嬬Щ鍔�
+3. 鐐瑰嚮"銆婄敤鎴峰崗璁��"閾炬帴
+4. 楠岃瘉鏄惁璺宠浆鍒扮敤鎴峰崗璁〉闈�
+5. 杩斿洖鐧诲綍椤甸潰
+6. 鐐瑰嚮"銆婇殣绉佸崗璁��"閾炬帴
+7. 楠岃瘉鏄惁璺宠浆鍒伴殣绉佹斂绛栭〉闈�
+8. 鍦ㄤ笉鍚屽睆骞曞昂瀵镐笅娴嬭瘯锛堝ぇ灞忋�佸皬灞忥級
+
+#### 娉ㄥ唽椤甸潰娴嬭瘯
+1. 鎵撳紑娉ㄥ唽椤甸潰
+2. 鐐瑰嚮鍗忚checkbox
+3. 鐐瑰嚮"銆婄敤鎴锋湇鍔″崗璁��"閾炬帴
+4. 楠岃瘉鏄惁璺宠浆鍒扮敤鎴峰崗璁〉闈紙checkbox鐘舵�佷繚鎸侊級
+5. 杩斿洖娉ㄥ唽椤甸潰
+6. 鐐瑰嚮"銆婇殣绉佹斂绛栥��"閾炬帴
+7. 楠岃瘉鏄惁璺宠浆鍒伴殣绉佹斂绛栭〉闈�
+8. 楠岃瘉涓嶅嬀閫塩heckbox鏃舵槸鍚﹁兘娉ㄥ唽
+
+### 棰勬湡缁撴灉
+- 鉁� 鍗忚閾炬帴浣嶇疆鍚戜笅绉诲姩锛屼笉琚叾浠栧厓绱犻伄鎸�
+- 鉁� 鐐瑰嚮鍗忚閾炬帴鍝嶅簲鐏垫晱锛屾棤闇�绮剧‘鐐瑰嚮鏂囧瓧
+- 鉁� 璺宠浆姝g‘锛岃兘姝e父鏌ョ湅鍗忚鍐呭
+- 鉁� 娉ㄥ唽椤甸潰鐨刢heckbox涓庡崗璁摼鎺ヤ簰涓嶅共鎵�
+- 鉁� 鍚勫钩鍙拌〃鐜颁竴鑷�
+
+## 鍙兘鐨勯棶棰樺拰瑙e喅鏂规
+
+### 闂1: 鍦ㄦ煇浜涜澶囦笂鐐瑰嚮浠嶄笉鍝嶅簲
+
+**鎺掓煡姝ラ**:
+1. 妫�鏌ユ祻瑙堝櫒鎺у埗鍙版槸鍚︽湁閿欒
+2. 妫�鏌ヨ矾鐢遍厤缃槸鍚︽纭�
+3. 妫�鏌ュ崗璁〉闈㈡枃浠舵槸鍚﹀瓨鍦�
+
+**瑙e喅鏂规**:
+```javascript
+// 娣诲姞璋冭瘯鏃ュ織
+handlePrivacy() {
+  console.log('鐐瑰嚮闅愮鍗忚')
+  this.$tab.navigateTo('/pages/mine/privacy-policy/index')
+}
+```
+
+### 闂2: 鐐瑰嚮鍖哄煙澶ぇ锛岃瑙�
+
+**瑙e喅鏂规**:
+璋冩暣 `padding` 鍊硷細
+```scss
+.agreement-link {
+  padding: 5rpx 5rpx;  // 鍑忓皬padding
+}
+```
+
+### 闂3: 鍦ㄥ皬灞忚澶囦笂鍗忚鏂囧瓧鎹㈣鏄剧ず涓嶇編瑙�
+
+**瑙e喅鏂规**:
+```scss
+.xieyi {
+  font-size: 22rpx;  // 鍑忓皬瀛椾綋
+  line-height: 1.8;  // 璋冩暣琛岄珮
+}
+```
+
+## 鍚庣画浼樺寲寤鸿
+
+1. **娣诲姞鐐瑰嚮鍙嶉**
+   ```scss
+   .agreement-link {
+     &:active {
+       opacity: 0.7;
+     }
+   }
+   ```
+
+2. **娣诲姞涓嬪垝绾垮姩鐢�**
+   ```scss
+   .agreement-link {
+     position: relative;
+     
+     &::after {
+       content: '';
+       position: absolute;
+       bottom: 0;
+       left: 0;
+       width: 100%;
+       height: 1px;
+       background-color: #007AFF;
+       transform: scaleX(0);
+       transition: transform 0.3s;
+     }
+     
+     &:active::after {
+       transform: scaleX(1);
+     }
+   }
+   ```
+
+3. **鑰冭檻鏃犻殰纰嶈闂�**
+   - 娣诲姞 `aria-label` 灞炴��
+   - 纭繚瓒冲鐨勯鑹插姣斿害
+   - 鏀寔閿洏瀵艰埅
+
+## 鎬荤粨
+
+鏈浼樺寲涓昏瑙e喅浜嗭細
+1. 鉁� **浣嶇疆闂**: 鍗忚鍖哄煙鍚戜笅绉诲姩50rpx锛岄伩鍏嶈閬尅
+2. 鉁� **鐐瑰嚮闂**: 澧炲姞padding鎵╁ぇ鐐瑰嚮鐑尯锛屾坊鍔爖-index纭繚鍙偣鍑�
+3. 鉁� **浜や簰闂**: 浣跨敤@click.stop闃绘浜嬩欢鍐掓场锛岀‘淇濈偣鍑诲搷搴�
+4. 鉁� **瑙嗚闂**: 澧炲姞琛岄珮鍜岄棿璺濓紝鎻愬崌鍙鎬�
+
+鎵�鏈変慨鏀瑰凡缁忚繃璇硶妫�鏌ワ紝鍙洿鎺ヤ娇鐢ㄣ�傚缓璁湪瀹為檯璁惧涓婅繘琛屽厖鍒嗘祴璇曪紝纭繚鍚勫钩鍙拌〃鐜颁竴鑷淬��
diff --git "a/prd/\347\273\221\345\256\232\350\275\246\350\276\206\351\203\250\351\227\250\350\277\207\346\273\244-\345\267\262\345\256\236\347\216\260.md" "b/prd/\347\273\221\345\256\232\350\275\246\350\276\206\351\203\250\351\227\250\350\277\207\346\273\244-\345\267\262\345\256\236\347\216\260.md"
new file mode 100644
index 0000000..094fb2f
--- /dev/null
+++ "b/prd/\347\273\221\345\256\232\350\275\246\350\276\206\351\203\250\351\227\250\350\277\207\346\273\244-\345\267\262\345\256\236\347\216\260.md"
@@ -0,0 +1,327 @@
+# 缁戝畾杞﹁締閮ㄩ棬杩囨护鍔熻兘璇存槑
+
+## 鍔熻兘姒傝堪
+
+鐢ㄦ埛缁戝畾杞﹁締鏃讹紝绯荤粺鑷姩闄愬埗鍙兘缁戝畾涓庤嚜宸卞悓涓�鍒嗗叕鍙哥殑杞﹁締锛岀‘淇濊溅杈嗙鐞嗙殑瑙勮寖鎬у拰鏁版嵁闅旂銆�
+
+## 瀹炵幇鐘舵��
+
+### 鉁� 宸插疄鐜板姛鑳�
+
+#### 1. 鍓嶇閮ㄩ棬杩囨护
+
+**鏂囦欢**: [`app/pages/bind-vehicle.vue`](file://d:\project\鎬ユ晳杞繍\code\Api\RuoYi-Vue-master\app\pages\bind-vehicle.vue)
+
+**鏍稿績閫昏緫**:
+```javascript
+loadVehicleList() {
+  this.loading = true
+  // 鉁� 鑾峰彇褰撳墠鐢ㄦ埛鐨勯儴闂↖D
+  const deptId = this.currentUser.deptId
+  
+  // 鉁� 涓ユ牸楠岃瘉锛氶儴闂↖D涓嶅瓨鍦ㄦ椂锛屼笉鍔犺浇杞﹁締
+  if (!deptId) {
+    this.loading = false
+    console.error('鏃犳硶鑾峰彇鐢ㄦ埛閮ㄩ棬淇℃伅')
+    this.$modal.showToast('鏃犳硶鑾峰彇鐢ㄦ埛閮ㄩ棬淇℃伅')
+    return
+  }
+  
+  // 鉁� 浣跨敤鐢ㄦ埛瀹為檯閮ㄩ棬ID鏌ヨ杞﹁締
+  listAvailableVehicles(deptId, 'GENERAL').then(response => {
+    // ...
+  })
+}
+```
+
+**鍏抽敭鐗规��**:
+- 鉁� 涓嶄娇鐢ㄩ粯璁ゅ�硷紝涓ユ牸妫�鏌� [deptId](file://d:\project\鎬ユ晳杞繍\code\Api\RuoYi-Vue-master\ruoyi-system\src\main\java\com\ruoyi\system\domain\SysTask.java#L95-L96)
+- 鉁� [deptId](file://d:\project\鎬ユ晳杞繍\code\Api\RuoYi-Vue-master\ruoyi-system\src\main\java\com\ruoyi\system\domain\SysTask.java#L95-L96) 涓虹┖鏃讹紝缁欏嚭鍙嬪ソ鎻愮ず
+- 鉁� 鏃犲彲鐢ㄨ溅杈嗘椂锛屾樉绀烘槑纭彁绀轰俊鎭�
+- 鉁� 璁板綍璇︾粏鏃ュ織渚夸簬璋冭瘯
+
+#### 2. 鍚庣閮ㄩ棬杩囨护
+
+**鎺ュ彛**: `GET /task/vehicle/available`
+
+**鏂囦欢**: [`SysTaskVehicleController.java`](file://d:\project\鎬ユ晳杞繍\code\Api\RuoYi-Vue-master\ruoyi-admin\src\main\java\com\ruoyi\web\controller\task\SysTaskVehicleController.java)
+
+```java
+@GetMapping("/available")
+public AjaxResult getAvailableVehicles(
+    @RequestParam Long deptId,           // 鉁� 蹇呭~鍙傛暟
+    @RequestParam(required = false) String taskType) {
+    
+    List<SysTaskVehicle> list = sysTaskService.getAvailableVehicles(deptId, taskType);
+    return success(list);
+}
+```
+
+**Service灞傝繃婊�**:
+- 鉁� 鏍规嵁 [deptId](file://d:\project\鎬ユ晳杞繍\code\Api\RuoYi-Vue-master\ruoyi-system\src\main\java\com\ruoyi\system\domain\SysTask.java#L95-L96) 鏌ヨ杞﹁締
+- 鉁� 杩囨护 `status='0'` 鐨勬甯歌溅杈�
+- 鉁� 杩囨护 `car_id` 鍜� `dept_id` 涓嶄负绌虹殑杞﹁締
+
+## 涓氬姟娴佺▼
+
+### 鍦烘櫙1锛氭繁鍦冲垎鍏徃鐢ㄦ埛缁戝畾杞﹁締
+
+```
+鐢ㄦ埛鐧诲綍 (deptId: 101)
+    鈫�
+鎵撳紑缁戝畾杞﹁締椤甸潰
+    鈫�
+绯荤粺妫�鏌� deptId = 101
+    鈫�
+璋冪敤 API: /task/vehicle/available?deptId=101&taskType=GENERAL
+    鈫�
+鍚庣鏌ヨ: SELECT * FROM tb_vehicle_info WHERE dept_id=101 AND status='0'
+    鈫�
+杩斿洖缁撴灉: 
+  - 绮12345 (娣卞湷鍒嗗叕鍙�)
+  - 绮67890 (娣卞湷鍒嗗叕鍙�)
+    鈫�
+鍓嶇鏄剧ず: 浠呮樉绀烘繁鍦冲垎鍏徃鐨勮溅杈�
+    鈫�
+鐢ㄦ埛閫夋嫨骞剁粦瀹�
+```
+
+### 鍦烘櫙2锛氱敤鎴锋棤閮ㄩ棬淇℃伅
+
+```
+鐢ㄦ埛鐧诲綍 (deptId: null)
+    鈫�
+鎵撳紑缁戝畾杞﹁締椤甸潰
+    鈫�
+绯荤粺妫�鏌� deptId = null
+    鈫�
+鉂� 缁堟鍔犺浇锛屾樉绀烘彁绀猴細"鏃犳硶鑾峰彇鐢ㄦ埛閮ㄩ棬淇℃伅"
+    鈫�
+杞﹁締鍒楄〃涓虹┖锛岀敤鎴锋棤娉曠粦瀹�
+```
+
+### 鍦烘櫙3锛氬垎鍏徃鏆傛棤杞﹁締
+
+```
+鐢ㄦ埛鐧诲綍 (deptId: 103)
+    鈫�
+鎵撳紑缁戝畾杞﹁締椤甸潰
+    鈫�
+绯荤粺妫�鏌� deptId = 103
+    鈫�
+璋冪敤 API: /task/vehicle/available?deptId=103&taskType=GENERAL
+    鈫�
+鍚庣鏌ヨ: SELECT * FROM tb_vehicle_info WHERE dept_id=103 AND status='0'
+    鈫�
+杩斿洖缁撴灉: [] (绌烘暟缁�)
+    鈫�
+鍓嶇鏄剧ず鎻愮ず锛�"褰撳墠鍒嗗叕鍙告殏鏃犲彲鐢ㄨ溅杈�"
+```
+
+## 鏁版嵁闅旂绀轰緥
+
+### 閮ㄩ棬缁撴瀯
+```
+100 (鎬诲叕鍙�)
+鈹溾攢鈹� 101 (娣卞湷鍒嗗叕鍙�)
+鈹�   鈹溾攢鈹� 绮12345
+鈹�   鈹溾攢鈹� 绮67890
+鈹�   鈹斺攢鈹� 绮11111
+鈹溾攢鈹� 102 (骞垮窞鍒嗗叕鍙�)
+鈹�   鈹溾攢鈹� 绮12345
+鈹�   鈹溾攢鈹� 绮67890
+鈹�   鈹斺攢鈹� 绮22222
+鈹斺攢鈹� 103 (鍖椾含鍒嗗叕鍙�)
+    鈹溾攢鈹� 浜珹12345
+    鈹斺攢鈹� 浜珹67890
+```
+
+### 鐢ㄦ埛鍙杞﹁締
+
+| 鐢ㄦ埛 | 閮ㄩ棬ID | 鍙杞﹁締 | 涓嶅彲瑙佽溅杈� |
+|------|--------|---------|-----------|
+| 寮犱笁 | 101 (娣卞湷) | 绮12345, 绮67890, 绮11111 | 绮*, 浜珹* |
+| 鏉庡洓 | 102 (骞垮窞) | 绮12345, 绮67890, 绮22222 | 绮*, 浜珹* |
+| 鐜嬩簲 | 103 (鍖椾含) | 浜珹12345, 浜珹67890 | 绮*, 绮* |
+| 璧靛叚 | null (鏃犻儴闂�) | (鏃�) | (鍏ㄩ儴) |
+
+## 瀹夊叏鎬т繚闅�
+
+### 1. 鍓嶇楠岃瘉
+- 鉁� 妫�鏌ョ敤鎴烽儴闂ㄤ俊鎭槸鍚﹀瓨鍦�
+- 鉁� 涓嶄娇鐢ㄩ粯璁ゅ�� 100
+- 鉁� 绌哄�兼椂缁堟鍔犺浇
+
+### 2. 鍚庣楠岃瘉
+- 鉁� [deptId](file://d:\project\鎬ユ晳杞繍\code\Api\RuoYi-Vue-master\ruoyi-system\src\main\java\com\ruoyi\system\domain\SysTask.java#L95-L96) 浣滀负蹇呭~鍙傛暟
+- 鉁� 鏁版嵁搴撴煡璇㈡椂寮哄埗娣诲姞閮ㄩ棬鏉′欢
+- 鉁� 杩囨护鏃犳晥杞﹁締锛坈ar_id銆乨ept_id 涓虹┖锛�
+
+### 3. 寤鸿澧炲己锛堝彲閫夛級
+
+鍙互鍦ㄥ悗绔疌ontroller涓坊鍔犳潈闄愭牎楠岋細
+
+```java
+@GetMapping("/available")
+public AjaxResult getAvailableVehicles(@RequestParam Long deptId, @RequestParam(required = false) String taskType) {
+    // 鉁� 楠岃瘉璇锋眰鐨� deptId 鏄惁涓庣敤鎴风殑 deptId 涓�鑷�
+    LoginUser loginUser = SecurityUtils.getLoginUser();
+    Long userDeptId = loginUser.getUser().getDeptId();
+    
+    if (!deptId.equals(userDeptId)) {
+        return error("鏃犳潈鏌ヨ鍏朵粬閮ㄩ棬鐨勮溅杈�");
+    }
+    
+    List<SysTaskVehicle> list = sysTaskService.getAvailableVehicles(deptId, taskType);
+    return success(list);
+}
+```
+
+## 鐩稿叧鎺ュ彛
+
+### 1. 鏌ヨ鍙敤杞﹁締
+
+**鎺ュ彛**: `GET /task/vehicle/available`
+
+**璇锋眰鍙傛暟**:
+```
+deptId: 101         (蹇呭~) 閮ㄩ棬ID
+taskType: GENERAL   (鍙��) 浠诲姟绫诲瀷
+```
+
+**鍝嶅簲绀轰緥**:
+```json
+{
+  "code": 200,
+  "msg": "鏌ヨ鎴愬姛",
+  "data": [
+    {
+      "vehicleId": 1,
+      "vehicleNo": "绮12345",
+      "vehicleType": "鏁戞姢杞�",
+      "vehicleBrand": "绂忕壒",
+      "vehicleModel": "鍏ㄩ『",
+      "deptId": 101,
+      "status": "0"
+    }
+  ]
+}
+```
+
+**鏃犺溅杈嗘椂**:
+```json
+{
+  "code": 200,
+  "msg": "鏌ヨ鎴愬姛",
+  "data": []
+}
+```
+
+### 2. 缁戝畾杞﹁締
+
+**鎺ュ彛**: `POST /system/vehicle/bind`
+
+**璇锋眰浣�**:
+```json
+{
+  "userId": 1,
+  "vehicleId": 123
+}
+```
+
+### 3. 鏌ヨ鐢ㄦ埛缁戝畾杞﹁締
+
+**鎺ュ彛**: `GET /system/vehicle/user/bound/{userId}`
+
+**鍝嶅簲绀轰緥**:
+```json
+{
+  "code": 200,
+  "msg": "鏌ヨ鎴愬姛",
+  "data": {
+    "vehicleId": 123,
+    "vehicleNumber": "绮12345",
+    "deptId": 101,
+    "bindTime": "2025-10-25 10:30:00"
+  }
+}
+```
+
+## 鐢ㄦ埛浣撻獙浼樺寲
+
+### 鍙嬪ソ鎻愮ず淇℃伅
+
+| 鍦烘櫙 | 鎻愮ず鍐呭 |
+|------|---------|
+| 鏃犻儴闂ㄤ俊鎭� | "鏃犳硶鑾峰彇鐢ㄦ埛閮ㄩ棬淇℃伅" |
+| 鏃犲彲鐢ㄨ溅杈� | "褰撳墠鍒嗗叕鍙告殏鏃犲彲鐢ㄨ溅杈�" |
+| 鍔犺浇澶辫触 | "鍔犺浇杞﹁締鍒楄〃澶辫触" |
+| 閲嶅缁戝畾 | "褰撳墠宸茬粦瀹氭杞﹁締锛屾棤闇�閲嶅缁戝畾" |
+| 寮哄埗缁戝畾纭 | "鎮ㄥ綋鍓嶅凡缁戝畾杞﹁締锛氱菠A12345锛岀‘璁よ瑙g粦鏃ц溅杈嗗苟缁戝畾鏂拌溅杈嗭細绮67890 鍚楋紵" |
+
+### 鏃ュ織璁板綍
+
+```javascript
+// 鎴愬姛鍔犺浇
+console.log(`鍔犺浇浜� ${vehicleList.length} 杈嗚溅杈嗭紙閮ㄩ棬ID: ${deptId}锛塦)
+
+// 鏃犻儴闂ㄤ俊鎭�
+console.error('鏃犳硶鑾峰彇鐢ㄦ埛閮ㄩ棬淇℃伅')
+
+// 鏃犲彲鐢ㄨ溅杈�
+console.log('褰撳墠鍒嗗叕鍙告殏鏃犲彲鐢ㄨ溅杈�')
+
+// 鍔犺浇澶辫触
+console.error('鍔犺浇杞﹁締鍒楄〃澶辫触:', error)
+```
+
+## 娴嬭瘯鍦烘櫙
+
+### 1. 姝e父缁戝畾
+- [x] 娣卞湷鐢ㄦ埛鍙兘鐪嬪埌娣卞湷鐨勮溅杈�
+- [x] 骞垮窞鐢ㄦ埛鍙兘鐪嬪埌骞垮窞鐨勮溅杈�
+- [x] 鐢ㄦ埛鍙互鎴愬姛缁戝畾鏈垎鍏徃鐨勮溅杈�
+
+### 2. 杈圭晫鎯呭喌
+- [x] 鐢ㄦ埛鏃犻儴闂ㄤ俊鎭紝鏄剧ず鎻愮ず
+- [x] 鍒嗗叕鍙告棤杞﹁締锛屾樉绀烘彁绀�
+- [x] 缃戠粶寮傚父锛屾樉绀洪敊璇彁绀�
+
+### 3. 鏁版嵁闅旂
+- [x] 娣卞湷鐢ㄦ埛鐪嬩笉鍒板箍宸炵殑杞﹁締
+- [x] 骞垮窞鐢ㄦ埛鐪嬩笉鍒版繁鍦崇殑杞﹁締
+- [x] 涓嶅悓鍒嗗叕鍙哥敤鎴锋暟鎹畬鍏ㄩ殧绂�
+
+### 4. 閲嶅缁戝畾
+- [x] 缁戝畾鍚屼竴杞﹁締锛屾彁绀哄凡缁戝畾
+- [x] 缁戝畾鍏朵粬杞﹁締锛屾彁绀烘槸鍚﹁В缁戞棫杞﹁締
+
+## 鐩稿叧鏂囦欢
+
+### 鍓嶇
+- [`app/pages/bind-vehicle.vue`](file://d:\project\鎬ユ晳杞繍\code\Api\RuoYi-Vue-master\app\pages\bind-vehicle.vue) - 缁戝畾杞﹁締椤甸潰
+- [`app/api/vehicle.js`](file://d:\project\鎬ユ晳杞繍\code\Api\RuoYi-Vue-master\app\api\vehicle.js) - 杞﹁締API
+
+### 鍚庣
+- [`SysTaskVehicleController.java`](file://d:\project\鎬ユ晳杞繍\code\Api\RuoYi-Vue-master\ruoyi-admin\src\main\java\com\ruoyi\web\controller\task\SysTaskVehicleController.java) - 杞﹁締Controller
+- [`SysTaskServiceImpl.java`](file://d:\project\鎬ユ晳杞繍\code\Api\RuoYi-Vue-master\ruoyi-system\src\main\java\com\ruoyi\system\service\impl\SysTaskServiceImpl.java) - 浠诲姟Service
+- [`VehicleInfoMapper.xml`](file://d:\project\鎬ユ晳杞繍\code\Api\RuoYi-Vue-master\ruoyi-system\src\main\resources\mapper\system\VehicleInfoMapper.xml) - 杞﹁締Mapper
+
+### 鏂囨。
+- [缁戝畾杞﹁締閮ㄩ棬杩囨护浼樺寲.md](file://d:\project\鎬ユ晳杞繍\code\Api\RuoYi-Vue-master\prd\缁戝畾杞﹁締閮ㄩ棬杩囨护浼樺寲.md)
+- [杞﹁締缁戝畾瑙g粦鍔熻兘璇存槑.md](file://d:\project\鎬ユ晳杞繍\code\Api\RuoYi-Vue-master\prd\杞﹁締缁戝畾瑙g粦鍔熻兘璇存槑.md)
+
+## 鎬荤粨
+
+鉁� **宸插畬鎴�**: 缁戝畾杞﹁締鏃跺凡缁忓疄鐜颁簡閮ㄩ棬杩囨护鍔熻兘
+鉁� **鍓嶇楠岃瘉**: 涓ユ牸妫�鏌ョ敤鎴烽儴闂ㄤ俊鎭紝涓嶄娇鐢ㄩ粯璁ゅ��
+鉁� **鍚庣杩囨护**: 鏍规嵁閮ㄩ棬ID鏌ヨ杞﹁締锛岀‘淇濇暟鎹殧绂�
+鉁� **鐢ㄦ埛浣撻獙**: 鎻愪緵鍙嬪ソ鐨勬彁绀轰俊鎭拰鏃ュ織璁板綍
+
+馃挕 **寤鸿**: 鍙互鍦ㄥ悗绔鍔犳潈闄愭牎楠岋紝楠岃瘉璇锋眰鐨� [deptId](file://d:\project\鎬ユ晳杞繍\code\Api\RuoYi-Vue-master\ruoyi-system\src\main\java\com\ruoyi\system\domain\SysTask.java#L95-L96) 鏄惁涓庣敤鎴风殑 [deptId](file://d:\project\鎬ユ晳杞繍\code\Api\RuoYi-Vue-master\ruoyi-system\src\main\java\com\ruoyi\system\domain\SysTask.java#L95-L96) 涓�鑷达紝杩涗竴姝ユ彁楂樺畨鍏ㄦ�с��
+
+---
+
+**鏇存柊鏃堕棿**: 2025-10-25  
+**鐗堟湰**: v1.0  
+**鐘舵��**: 鉁� 宸插疄鐜�
diff --git "a/prd/\350\275\246\350\276\206\345\220\214\346\255\245\351\203\250\351\227\250\346\237\245\350\257\242\344\277\256\345\244\215\350\257\264\346\230\216.md" "b/prd/\350\275\246\350\276\206\345\220\214\346\255\245\351\203\250\351\227\250\346\237\245\350\257\242\344\277\256\345\244\215\350\257\264\346\230\216.md"
new file mode 100644
index 0000000..1c3b525
--- /dev/null
+++ "b/prd/\350\275\246\350\276\206\345\220\214\346\255\245\351\203\250\351\227\250\346\237\245\350\257\242\344\277\256\345\244\215\350\257\264\346\230\216.md"
@@ -0,0 +1,273 @@
+# 杞﹁締鍚屾閮ㄩ棬鏌ヨ淇璇存槑
+
+## 闂鎻忚堪
+
+鍦� `VehicleSyncServiceImpl.findDeptByDispatchOrderClass()` 鏂规硶涓紝铏界劧璁剧疆浜� `query.setDispatchOrderClass(dispatchOrderClass)`锛屼絾鍦� `SysDeptMapper.xml` 涓殑 `selectDeptList` 鏌ヨ娌℃湁瀵瑰簲鐨� `dispatchOrderClass` 鍜� `serviceOrderClass` 瀛楁鏉′欢鍒ゆ柇锛屽鑷存棤娉曟纭煡璇㈠埌閮ㄩ棬銆�
+
+## 淇鍐呭
+
+### 1. 淇 SysDeptMapper.xml
+
+**鏂囦欢**: `ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml`
+
+鍦� `selectDeptList` 鏂规硶涓坊鍔犱簡 `serviceOrderClass` 鍜� `dispatchOrderClass` 鐨勬煡璇㈡潯浠讹細
+
+```xml
+<select id="selectDeptList" parameterType="SysDept" resultMap="SysDeptResult">
+    <include refid="selectDeptVo"/>
+    where d.del_flag = '0'
+    <!-- ... 鍏朵粬鏉′欢 ... -->
+    
+    <!-- 鉁� 鏂板锛氭湇鍔″崟缂栫爜鏌ヨ -->
+    <if test="serviceOrderClass != null and serviceOrderClass != ''">
+        AND service_order_class = #{serviceOrderClass}
+    </if>
+    
+    <!-- 鉁� 鏂板锛氳皟搴﹀崟缂栫爜鏌ヨ -->
+    <if test="dispatchOrderClass != null and dispatchOrderClass != ''">
+        AND dispatch_order_class = #{dispatchOrderClass}
+    </if>
+    
+    <!-- 鏁版嵁鑼冨洿杩囨护 -->
+    ${params.dataScope}
+    order by d.parent_id, d.order_num
+</select>
+```
+
+### 2. 浼樺寲 VehicleSyncServiceImpl
+
+**鏂囦欢**: `ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleSyncServiceImpl.java`
+
+淇敼 `parseDeptIdFromCarOrdClass()` 鏂规硶锛屼娇鍏跺湪鎵惧埌閮ㄩ棬鍚庤嚜鍔ㄨ浆鎹负鍒嗗叕鍙窱D锛�
+
+**淇敼鍓�**锛�
+```java
+private Long parseDeptIdFromCarOrdClass(String carOrdClass) {
+    // ... 鏌ユ壘閮ㄩ棬閫昏緫 ...
+    SysDept dept = findDeptByDispatchOrderClass(code);
+    if (dept != null) {
+        return dept.getDeptId();  // 鉂� 鐩存帴杩斿洖閮ㄩ棬ID
+    }
+}
+```
+
+**淇敼鍚�**锛�
+```java
+private Long parseDeptIdFromCarOrdClass(String carOrdClass) {
+    // ... 鏌ユ壘閮ㄩ棬閫昏緫 ...
+    SysDept dept = findDeptByDispatchOrderClass(code);
+    if (dept != null) {
+        // 鉁� 灏嗛儴闂↖D杞崲涓哄垎鍏徃ID
+        Long branchCompanyId = sysDeptMapper.selectBranchCompanyIdByDeptId(dept.getDeptId());
+        if (branchCompanyId != null) {
+            log.debug("灏嗛儴闂↖D {} 杞崲涓哄垎鍏徃ID: {}", dept.getDeptId(), branchCompanyId);
+            return branchCompanyId;
+        } else {
+            log.warn("閮ㄩ棬ID {} 鏃犳硶杞崲涓哄垎鍏徃ID锛屽彲鑳芥槸鎬诲叕鍙告垨鏁版嵁寮傚父", dept.getDeptId());
+            return null;
+        }
+    }
+}
+```
+
+## 淇鍘熺悊
+
+### 淇鍓嶇殑闂娴佺▼
+
+```
+1. VehicleSyncServiceImpl 璁剧疆鏌ヨ鏉′欢
+   鈹溾攢 query.setDispatchOrderClass("ZB")
+   鈹斺攢 sysDeptMapper.selectDeptList(query)
+
+2. SysDeptMapper.xml 鎵ц鏌ヨ
+   鈹溾攢 WHERE del_flag = '0'
+   鈹溾攢 AND dept_id = ? (濡傛灉鏈�)
+   鈹溾攢 AND parent_id = ? (濡傛灉鏈�)
+   鈹斺攢 鉂� 娌℃湁 dispatch_order_class 鏉′欢
+   
+3. 缁撴灉锛氭煡璇㈠埌鎵�鏈夐儴闂紝涓嶆槸鏈熸湜鐨勭粨鏋�
+```
+
+### 淇鍚庣殑姝g‘娴佺▼
+
+```
+1. VehicleSyncServiceImpl 璁剧疆鏌ヨ鏉′欢
+   鈹溾攢 query.setDispatchOrderClass("ZB")
+   鈹斺攢 sysDeptMapper.selectDeptList(query)
+
+2. SysDeptMapper.xml 鎵ц鏌ヨ
+   鈹溾攢 WHERE del_flag = '0'
+   鈹溾攢 鉁� AND dispatch_order_class = 'ZB'
+   鈹斺攢 鎵惧埌鍖归厤鐨勯儴闂�
+
+3. 杞崲涓哄垎鍏徃ID
+   鈹溾攢 璋冪敤 selectBranchCompanyIdByDeptId(deptId)
+   鈹溾攢 濡傛灉鏄垎鍏徃锛岀洿鎺ヨ繑鍥�
+   鈹斺攢 濡傛灉鏄瓙閮ㄩ棬锛屼粠ancestors涓煡鎵惧垎鍏徃ID
+
+4. 缁撴灉锛氭纭殑鍒嗗叕鍙窱D
+```
+
+## 浣跨敤鍦烘櫙
+
+### 鍦烘櫙1锛氳溅杈嗗悓姝ユ椂瑙f瀽閮ㄩ棬
+
+浠庢棫绯荤粺鍚屾杞﹁締鏁版嵁鏃讹紝鏍规嵁 `CarOrdClass` 瀛楁锛堝 "ZB", "HB.TI"锛夋煡鎵惧搴旂殑鍒嗗叕鍙革細
+
+```java
+// CarOrdClass = "ZB"
+Long branchCompanyId = parseDeptIdFromCarOrdClass("ZB");
+
+// 娴佺▼锛�
+// 1. 鎷嗗垎 "ZB" 鈫� ["ZB"]
+// 2. 鏌ヨ dispatch_order_class = 'ZB' 鐨勯儴闂� 鈫� 鎵惧埌閮ㄩ棬201
+// 3. 灏嗛儴闂�201杞崲涓哄垎鍏徃ID 鈫� 101
+// 4. 杩斿洖鍒嗗叕鍙窱D: 101
+```
+
+### 鍦烘櫙2锛氬娈电紪鐮佽В鏋�
+
+澶勭悊鍖呭惈澶氫釜缂栫爜鐨勬儏鍐碉細
+
+```java
+// CarOrdClass = "HB.TI"
+Long branchCompanyId = parseDeptIdFromCarOrdClass("HB.TI");
+
+// 娴佺▼锛�
+// 1. 鎷嗗垎 "HB.TI" 鈫� ["HB", "TI"]
+// 2. 鍏堟煡璇� dispatch_order_class = 'HB' 鈫� 鎵惧埌閮ㄩ棬202
+// 3. 灏嗛儴闂�202杞崲涓哄垎鍏徃ID 鈫� 102
+// 4. 杩斿洖鍒嗗叕鍙窱D: 102
+```
+
+## 鏁版嵁绀轰緥
+
+### 閮ㄩ棬琛ㄦ暟鎹�
+
+```sql
+-- sys_dept 琛ㄦ暟鎹ず渚�
+dept_id | parent_id | dept_name   | dispatch_order_class | ancestors
+--------|-----------|-------------|---------------------|------------
+100     | 0         | 鎬诲叕鍙�      | NULL                | 0
+101     | 100       | 鍖椾含鍒嗗叕鍙�   | NULL                | 0,100
+102     | 100       | 涓婃捣鍒嗗叕鍙�   | NULL                | 0,100
+201     | 101       | 鍖椾含鎬ユ晳閮�   | ZB                  | 0,100,101
+202     | 102       | 涓婃捣鎬ユ晳閮�   | HB                  | 0,100,102
+203     | 102       | 涓婃捣杞繍閮�   | TI                  | 0,100,102
+```
+
+### 鏌ヨ绀轰緥
+
+#### 绀轰緥1锛氭煡璇� dispatch_order_class = 'ZB' 鐨勯儴闂�
+
+**淇鍓嶏紙鏌ヨ鏉′欢鏃犳晥锛�**锛�
+```sql
+SELECT * FROM sys_dept WHERE del_flag = '0'
+-- 杩斿洖鎵�鏈夐儴闂紙閿欒锛�
+```
+
+**淇鍚庯紙姝g‘鏌ヨ锛�**锛�
+```sql
+SELECT * FROM sys_dept 
+WHERE del_flag = '0' 
+  AND dispatch_order_class = 'ZB'
+-- 杩斿洖閮ㄩ棬201锛堟纭級
+```
+
+#### 绀轰緥2锛氬皢閮ㄩ棬ID杞崲涓哄垎鍏徃ID
+
+```java
+// 杈撳叆锛歞eptId = 201 (鍖椾含鎬ユ晳閮�)
+Long branchCompanyId = sysDeptMapper.selectBranchCompanyIdByDeptId(201L);
+// 杩斿洖锛�101 (鍖椾含鍒嗗叕鍙�)
+
+// SQL鎵ц閫昏緫锛�
+// 1. 妫�鏌� dept_id=201 鐨� parent_id 鏄惁涓� 100 鈫� 鍚︼紙parent_id=101锛�
+// 2. 鏌ヨ ancestors="0,100,101"
+// 3. 浣跨敤 FIND_IN_SET 鏌ユ壘 parent_id=100 鐨勯儴闂↖D
+// 4. 鎵惧埌 dept_id=101锛岃繑鍥�
+```
+
+## 娴嬭瘯楠岃瘉
+
+### 娴嬭瘯鐢ㄤ緥1锛氱簿纭尮閰嶅崟涓紪鐮�
+
+```java
+// CarOrdClass = "ZB"
+Long result = parseDeptIdFromCarOrdClass("ZB");
+// 棰勬湡锛�101 (鍖椾含鍒嗗叕鍙�)
+```
+
+### 娴嬭瘯鐢ㄤ緥2锛氬娈电紪鐮佸尮閰�
+
+```java
+// CarOrdClass = "HB.TI"
+Long result = parseDeptIdFromCarOrdClass("HB.TI");
+// 棰勬湡锛�102 (涓婃捣鍒嗗叕鍙�)
+```
+
+### 娴嬭瘯鐢ㄤ緥3锛氱┖鍊煎鐞�
+
+```java
+// CarOrdClass = null
+Long result = parseDeptIdFromCarOrdClass(null);
+// 棰勬湡锛歯ull
+```
+
+### 娴嬭瘯鐢ㄤ緥4锛氭湭鍖归厤鐨勭紪鐮�
+
+```java
+// CarOrdClass = "UNKNOWN"
+Long result = parseDeptIdFromCarOrdClass("UNKNOWN");
+// 棰勬湡锛歯ull
+// 鏃ュ織锛氳鍛� "鏈壘鍒板尮閰岰arOrdClass='UNKNOWN' 鐨勯儴闂�"
+```
+
+## 娉ㄦ剰浜嬮」
+
+### 1. 閮ㄩ棬鏁版嵁瀹屾暣鎬�
+
+纭繚 `sys_dept` 琛ㄤ腑锛�
+- `dispatch_order_class` 瀛楁宸叉纭厤缃�
+- 鍒嗗叕鍙哥殑 `parent_id = 100`
+- 瀛愰儴闂ㄧ殑 `ancestors` 瀛楁姝g‘缁存姢
+
+### 2. 鏃ュ織鐩戞帶
+
+鏂规硶涓坊鍔犱簡璇︾粏鐨勬棩蹇楄緭鍑猴細
+
+```java
+// 璋冭瘯鏃ュ織
+log.debug("閫氳繃dispatch_order_class='{}' 鎵惧埌閮ㄩ棬: {} (ID={})", code, dept.getDeptName(), dept.getDeptId());
+log.debug("灏嗛儴闂↖D {} 杞崲涓哄垎鍏徃ID: {}", dept.getDeptId(), branchCompanyId);
+
+// 璀﹀憡鏃ュ織
+log.warn("閮ㄩ棬ID {} 鏃犳硶杞崲涓哄垎鍏徃ID锛屽彲鑳芥槸鎬诲叕鍙告垨鏁版嵁寮傚父", dept.getDeptId());
+log.warn("鏈壘鍒板尮閰岰arOrdClass='{}' 鐨勯儴闂�", carOrdClass);
+```
+
+寤鸿鍦ㄧ敓浜х幆澧冨紑鍚� DEBUG 绾у埆鏃ュ織锛屼究浜庢帓鏌ラ棶棰樸��
+
+### 3. 鎬ц兘鑰冭檻
+
+濡傛灉杞﹁締鍚屾閲忓ぇ锛屽缓璁細
+- 瀵� `dispatch_order_class` 瀛楁娣诲姞绱㈠紩
+- 瀵� `service_order_class` 瀛楁娣诲姞绱㈠紩
+
+```sql
+CREATE INDEX idx_dispatch_order_class ON sys_dept(dispatch_order_class);
+CREATE INDEX idx_service_order_class ON sys_dept(service_order_class);
+```
+
+## 鐩稿叧鏂囦欢
+
+- `/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml` - 娣诲姞鏌ヨ鏉′欢
+- `/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleSyncServiceImpl.java` - 浼樺寲杞崲閫昏緫
+- `/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java` - 浣跨敤 selectBranchCompanyIdByDeptId 鏂规硶
+- `/prd/閮ㄩ棬鍒嗗叕鍙窱D鑾峰彇鏂规硶璇存槑.md` - 鍒嗗叕鍙窱D杞崲鏂规硶鏂囨。
+
+## 鏇存柊鏃ュ織
+
+- **2025-01-25**: 淇 SysDeptMapper.xml 涓己灏戞煡璇㈡潯浠剁殑闂
+- **2025-01-25**: 浼樺寲 parseDeptIdFromCarOrdClass 鏂规硶锛岃嚜鍔ㄨ浆鎹负鍒嗗叕鍙窱D
+- **鐩殑**: 纭繚杞﹁締鍚屾鏃惰兘姝g‘鍖归厤閮ㄩ棬骞惰浆鎹负鍒嗗叕鍙窱D
diff --git "a/prd/\350\275\246\350\276\206\346\237\245\350\257\242\351\203\250\351\227\250\350\207\252\345\212\250\345\214\271\351\205\215\345\212\237\350\203\275\350\257\264\346\230\216.md" "b/prd/\350\275\246\350\276\206\346\237\245\350\257\242\351\203\250\351\227\250\350\207\252\345\212\250\345\214\271\351\205\215\345\212\237\350\203\275\350\257\264\346\230\216.md"
new file mode 100644
index 0000000..af17f1c
--- /dev/null
+++ "b/prd/\350\275\246\350\276\206\346\237\245\350\257\242\351\203\250\351\227\250\350\207\252\345\212\250\345\214\271\351\205\215\345\212\237\350\203\275\350\257\264\346\230\216.md"
@@ -0,0 +1,347 @@
+# 杞﹁締鏌ヨ閮ㄩ棬鑷姩鍖归厤鍔熻兘璇存槑
+
+## 鍔熻兘姒傝堪
+
+鍦ㄨ溅杈嗘煡璇㈡椂锛屾棤璁虹敤鎴蜂紶鍏ョ殑鏄垎鍏徃ID杩樻槸瀛愰儴闂↖D锛堝鎶�鏈儴銆佷笟鍔¢儴锛夛紝绯荤粺閮戒細鑷姩鏌ユ壘鍏舵墍灞炵殑鍒嗗叕鍙革紝骞惰繑鍥炶鍒嗗叕鍙哥殑杞﹁締銆�
+
+## 涓氬姟鑳屾櫙
+
+### 閮ㄩ棬灞傜骇缁撴瀯
+
+```
+100 (鎬诲叕鍙�)
+鈹溾攢鈹� 101 (娣卞湷鍒嗗叕鍙�) 鈫� 杞﹁締褰掑睘浜庡垎鍏徃
+鈹�   鈹溾攢鈹� 201 (鎶�鏈儴)  鈫� 鐢ㄦ埛鍙兘灞炰簬瀛愰儴闂�
+鈹�   鈹溾攢鈹� 202 (涓氬姟閮�)
+鈹�   鈹斺攢鈹� 203 (璐㈠姟閮�)
+鈹溾攢鈹� 102 (骞垮窞鍒嗗叕鍙�)
+鈹�   鈹溾攢鈹� 204 (鎶�鏈儴)
+鈹�   鈹溾攢鈹� 205 (涓氬姟閮�)
+鈹�   鈹斺攢鈹� 206 (璐㈠姟閮�)
+鈹斺攢鈹� 103 (鍖椾含鍒嗗叕鍙�)
+    鈹溾攢鈹� 207 (鎶�鏈儴)
+    鈹斺攢鈹� 208 (涓氬姟閮�)
+```
+
+### 闂鍦烘櫙
+
+**鍘熸湁閫昏緫**锛�
+- 鐢ㄦ埛A锛堟妧鏈儴锛宒eptId=201锛夋煡璇㈣溅杈�
+- 绯荤粺鏌ヨ锛歚WHERE dept_id = 201`
+- 缁撴灉锛氣潓 鏌ヤ笉鍒拌溅杈嗭紙鍥犱负杞﹁締鐨刣ept_id=101锛屼笉鏄�201锛�
+
+**鏈熸湜閫昏緫**锛�
+- 鐢ㄦ埛A锛堟妧鏈儴锛宒eptId=201锛夋煡璇㈣溅杈�
+- 绯荤粺鑷姩鎵惧埌鍒嗗叕鍙革細201 鈫� 101锛堟繁鍦冲垎鍏徃锛�
+- 绯荤粺鏌ヨ锛歚WHERE dept_id = 101`
+- 缁撴灉锛氣渽 鏌ュ埌娣卞湷鍒嗗叕鍙哥殑鎵�鏈夎溅杈�
+
+## 瀹炵幇鏂规
+
+### SQL鏌ヨ閫昏緫
+
+**鏂囦欢**锛歔`VehicleInfoMapper.xml`](file://d:\project\鎬ユ晳杞繍\code\Api\RuoYi-Vue-master\ruoyi-system\src\main\resources\mapper\system\VehicleInfoMapper.xml)
+
+```xml
+<!-- 閮ㄩ棬杩囨护锛氳嚜鍔ㄦ煡鎵句紶鍏ラ儴闂ㄦ墍灞炵殑鍒嗗叕鍙革紙parent_id=100锛� -->
+<if test="deptId != null">
+    and v.dept_id = (
+        <!-- 濡傛灉浼犲叆鐨勫氨鏄垎鍏徃锛坧arent_id=100锛夛紝鐩存帴杩斿洖 -->
+        select case 
+            when exists(select 1 from sys_dept where dept_id = #{deptId} and parent_id = 100) 
+            then #{deptId}
+            else (
+                <!-- 鍚﹀垯浠� ancestors 涓煡鎵惧垎鍏徃ID -->
+                select d.dept_id
+                from sys_dept d
+                where d.parent_id = 100
+                and FIND_IN_SET(d.dept_id, (
+                    select ancestors from sys_dept where dept_id = #{deptId}
+                ))
+                limit 1
+            )
+        end
+    )
+</if>
+```
+
+### 鏌ヨ閫昏緫璇存槑
+
+#### 姝ラ1锛氬垽鏂紶鍏ョ殑deptId鏄惁涓哄垎鍏徃
+
+```sql
+when exists(select 1 from sys_dept where dept_id = #{deptId} and parent_id = 100)
+```
+
+- 濡傛灉浼犲叆鐨� `deptId` 鐨� `parent_id = 100`锛岃鏄庝紶鍏ョ殑灏辨槸鍒嗗叕鍙�
+- 鐩存帴浣跨敤璇� `deptId` 鏌ヨ
+
+#### 姝ラ2锛氬鏋滀笉鏄垎鍏徃锛屼粠ancestors涓煡鎵�
+
+```sql
+select d.dept_id
+from sys_dept d
+where d.parent_id = 100
+and FIND_IN_SET(d.dept_id, (
+    select ancestors from sys_dept where dept_id = #{deptId}
+))
+```
+
+**鍘熺悊**锛�
+- 姣忎釜閮ㄩ棬鐨� `ancestors` 瀛楁瀛樺偍浜嗘墍鏈変笂绾ч儴闂↖D锛堢敤閫楀彿鍒嗛殧锛�
+- 渚嬪锛氭妧鏈儴(201)鐨� `ancestors` 鍙兘鏄� `"100,101,201"`
+- 浣跨敤 `FIND_IN_SET` 鍦� ancestors 涓煡鎵� `parent_id=100` 鐨勯儴闂�
+- 鎵惧埌鐨勫氨鏄垎鍏徃ID
+
+## 浣跨敤绀轰緥
+
+### 绀轰緥1锛氫紶鍏ュ垎鍏徃ID
+
+**杈撳叆**锛�
+```javascript
+deptId: 101  // 娣卞湷鍒嗗叕鍙�
+```
+
+**SQL鎵ц**锛�
+```sql
+-- 妫�鏌ワ細101 鐨� parent_id = 100 鉁�
+-- 鐩存帴浣跨敤锛歞ept_id = 101
+WHERE v.dept_id = 101
+```
+
+**缁撴灉**锛氣渽 杩斿洖娣卞湷鍒嗗叕鍙哥殑鎵�鏈夎溅杈�
+
+### 绀轰緥2锛氫紶鍏ュ瓙閮ㄩ棬ID
+
+**杈撳叆**锛�
+```javascript
+deptId: 201  // 娣卞湷鍒嗗叕鍙�-鎶�鏈儴
+```
+
+**鏁版嵁**锛�
+```sql
+-- sys_dept 琛ㄦ暟鎹�
+dept_id | parent_id | ancestors
+101     | 100       | 100,101
+201     | 101       | 100,101,201
+```
+
+**SQL鎵ц**锛�
+```sql
+-- 1. 妫�鏌ワ細201 鐨� parent_id = 100 鉂�
+-- 2. 鏌ヨ ancestors锛歴elect ancestors from sys_dept where dept_id = 201
+--    缁撴灉锛�"100,101,201"
+-- 3. 鍦� ancestors 涓煡鎵� parent_id=100 鐨勯儴闂�
+--    FIND_IN_SET(d.dept_id, "100,101,201") and d.parent_id = 100
+--    鎵惧埌锛�101
+-- 4. 浣跨敤锛歞ept_id = 101
+WHERE v.dept_id = 101
+```
+
+**缁撴灉**锛氣渽 杩斿洖娣卞湷鍒嗗叕鍙哥殑鎵�鏈夎溅杈�
+
+### 绀轰緥3锛氫紶鍏ュ瓩閮ㄩ棬ID
+
+**杈撳叆**锛�
+```javascript
+deptId: 301  // 娣卞湷鍒嗗叕鍙�-鎶�鏈儴-寮�鍙戠粍
+```
+
+**鏁版嵁**锛�
+```sql
+-- sys_dept 琛ㄦ暟鎹�
+dept_id | parent_id | ancestors
+101     | 100       | 100,101
+201     | 101       | 100,101,201
+301     | 201       | 100,101,201,301
+```
+
+**SQL鎵ц**锛�
+```sql
+-- 1. 妫�鏌ワ細301 鐨� parent_id = 100 鉂�
+-- 2. 鏌ヨ ancestors锛�"100,101,201,301"
+-- 3. 鍦� ancestors 涓煡鎵� parent_id=100 鐨勯儴闂�
+--    鎵惧埌锛�101
+-- 4. 浣跨敤锛歞ept_id = 101
+WHERE v.dept_id = 101
+```
+
+**缁撴灉**锛氣渽 杩斿洖娣卞湷鍒嗗叕鍙哥殑鎵�鏈夎溅杈�
+
+## 搴旂敤鍦烘櫙
+
+### 鍦烘櫙1锛氱粦瀹氳溅杈�
+
+**鐢ㄦ埛**锛氭妧鏈儴鍛樺伐锛坉eptId=201锛�
+
+```javascript
+// 鍓嶇璋冪敤
+listAvailableVehicles(201, 'GENERAL')
+
+// 鍚庣鏌ヨ
+SELECT * FROM tb_vehicle_info v
+WHERE v.dept_id = (
+    -- 鑷姩鎵惧埌鍒嗗叕鍙革細201 鈫� 101
+    ...
+)
+```
+
+**缁撴灉**锛氭樉绀烘繁鍦冲垎鍏徃鐨勬墍鏈夎溅杈�
+
+### 鍦烘櫙2锛氬垱寤轰换鍔�
+
+**鐢ㄦ埛**锛氫笟鍔¢儴鍛樺伐锛坉eptId=202锛�
+
+```javascript
+// 鍓嶇璋冪敤
+listAvailableVehicles(202, 'EMERGENCY')
+
+// 鍚庣鏌ヨ
+SELECT * FROM tb_vehicle_info v
+WHERE v.dept_id = (
+    -- 鑷姩鎵惧埌鍒嗗叕鍙革細202 鈫� 101
+    ...
+)
+```
+
+**缁撴灉**锛氭樉绀烘繁鍦冲垎鍏徃鐨勬墍鏈夎溅杈�
+
+## 鏁版嵁娴佺▼鍥�
+
+```mermaid
+sequenceDiagram
+    participant User as 鐢ㄦ埛(鎶�鏈儴)
+    participant Page as 鍓嶇椤甸潰
+    participant API as 鍚庣API
+    participant DB as 鏁版嵁搴�
+    
+    User->>Page: 鎵撳紑缁戝畾杞﹁締椤甸潰
+    Page->>Page: 鑾峰彇鐢ㄦ埛閮ㄩ棬ID: 201
+    Page->>API: listAvailableVehicles(201, 'GENERAL')
+    API->>DB: SELECT dept_id FROM sys_dept WHERE dept_id=201
+    DB-->>API: parent_id=101 (涓嶆槸100)
+    API->>DB: SELECT ancestors FROM sys_dept WHERE dept_id=201
+    DB-->>API: "100,101,201"
+    API->>DB: FIND_IN_SET in ancestors WHERE parent_id=100
+    DB-->>API: 鎵惧埌鍒嗗叕鍙窱D: 101
+    API->>DB: SELECT * FROM tb_vehicle_info WHERE dept_id=101
+    DB-->>API: 娣卞湷鍒嗗叕鍙哥殑杞﹁締鍒楄〃
+    API-->>Page: 杩斿洖杞﹁締鏁版嵁
+    Page-->>User: 鏄剧ず娣卞湷鍒嗗叕鍙哥殑杞﹁締
+```
+
+## 鍏煎鎬�
+
+### 鉁� 鏀寔鐨勫満鏅�
+
+| 杈撳叆deptId | 閮ㄩ棬绫诲瀷 | 鏌ヨ缁撴灉 |
+|-----------|---------|---------|
+| 101 | 鍒嗗叕鍙� | 101鐨勮溅杈� 鉁� |
+| 201 | 瀛愰儴闂� | 101鐨勮溅杈� 鉁� |
+| 301 | 瀛欓儴闂� | 101鐨勮溅杈� 鉁� |
+| 401 | 鏇惧瓩閮ㄩ棬 | 101鐨勮溅杈� 鉁� |
+
+### 鈿狅笍 鐗规畩鎯呭喌
+
+| 杈撳叆deptId | 璇存槑 | 鏌ヨ缁撴灉 |
+|-----------|------|---------|
+| 100 | 鎬诲叕鍙� | 鉂� 鏌ヤ笉鍒帮紙杞﹁締蹇呴』褰掑睘浜庡垎鍏徃锛� |
+| null | 绌哄�� | 鉂� 涓嶆墽琛岄儴闂ㄨ繃婊� |
+
+## 鎬ц兘浼樺寲
+
+### 绱㈠紩寤鸿
+
+涓轰簡鎻愰珮鏌ヨ鎬ц兘锛屽缓璁湪 `sys_dept` 琛ㄦ坊鍔犵储寮曪細
+
+```sql
+-- 閮ㄩ棬琛ㄧ储寮�
+CREATE INDEX idx_parent_id ON sys_dept(parent_id);
+CREATE INDEX idx_ancestors ON sys_dept(ancestors(100));
+
+-- 杞﹁締琛ㄧ储寮曪紙宸插瓨鍦級
+CREATE INDEX idx_dept_id ON tb_vehicle_info(dept_id);
+```
+
+### 鏌ヨ浼樺寲
+
+- 鉁� 浣跨敤 `CASE WHEN` 鍑忓皯瀛愭煡璇㈡鏁�
+- 鉁� 浣跨敤 `LIMIT 1` 闄愬埗缁撴灉闆�
+- 鉁� `FIND_IN_SET` 鍒╃敤绱㈠紩鏌ヨ
+
+## 娴嬭瘯楠岃瘉
+
+### 娴嬭瘯鍦烘櫙1锛氬垎鍏徃鐢ㄦ埛
+
+```sql
+-- 妯℃嫙杈撳叆锛歞eptId = 101
+SELECT * FROM tb_vehicle_info v
+WHERE v.dept_id = (
+    select case 
+        when exists(select 1 from sys_dept where dept_id = 101 and parent_id = 100) 
+        then 101
+        else (...)
+    end
+)
+-- 缁撴灉锛歞ept_id = 101
+```
+
+### 娴嬭瘯鍦烘櫙2锛氬瓙閮ㄩ棬鐢ㄦ埛
+
+```sql
+-- 妯℃嫙杈撳叆锛歞eptId = 201
+SELECT * FROM tb_vehicle_info v
+WHERE v.dept_id = (
+    select case 
+        when exists(select 1 from sys_dept where dept_id = 201 and parent_id = 100) 
+        then 201
+        else (
+            select d.dept_id
+            from sys_dept d
+            where d.parent_id = 100
+            and FIND_IN_SET(d.dept_id, (
+                select ancestors from sys_dept where dept_id = 201
+            ))
+            limit 1
+        )
+    end
+)
+-- 缁撴灉锛歞ept_id = 101
+```
+
+## 褰卞搷鑼冨洿
+
+### 淇敼鐨勬枃浠�
+- [`VehicleInfoMapper.xml`](file://d:\project\鎬ユ晳杞繍\code\Api\RuoYi-Vue-master\ruoyi-system\src\main\resources\mapper\system\VehicleInfoMapper.xml) - 杞﹁締鏌ヨMapper
+
+### 褰卞搷鐨勫姛鑳�
+1. 鉁� 缁戝畾杞﹁締 - 鑷姩鏄剧ず鍒嗗叕鍙歌溅杈�
+2. 鉁� 鍒涘缓浠诲姟 - 鑷姩鏄剧ず鍒嗗叕鍙歌溅杈�
+3. 鉁� 杞﹁締绠$悊 - 鑷姩鎸夊垎鍏徃杩囨护
+4. 鉁� 鎵�鏈夎皟鐢� `selectVehicleInfoList` 鐨勫湴鏂�
+
+### 鍚戝悗鍏煎
+- 鉁� 浼犲叆鍒嗗叕鍙窱D浠嶇劧姝e父宸ヤ綔
+- 鉁� 浼犲叆瀛愰儴闂↖D鑷姩杞崲涓哄垎鍏徃ID
+- 鉁� 涓嶅奖鍝嶅叾浠栨煡璇㈡潯浠�
+
+## 鎬荤粨
+
+### 鉁� 浼樺娍
+
+1. **鑷姩鍖归厤** - 鏃犺鐢ㄦ埛鍦ㄥ摢涓眰绾х殑閮ㄩ棬锛岄兘鑳界湅鍒板垎鍏徃鐨勮溅杈�
+2. **鐢ㄦ埛鍙嬪ソ** - 鐢ㄦ埛涓嶉渶瑕佸叧蹇冭嚜宸辨槸鍦ㄥ摢涓瓙閮ㄩ棬
+3. **鏁版嵁闅旂** - 渚濈劧淇濇寔鍒嗗叕鍙镐箣闂寸殑鏁版嵁闅旂
+4. **鍚戝悗鍏煎** - 涓嶅奖鍝嶇幇鏈夊姛鑳�
+
+### 馃摑 娉ㄦ剰浜嬮」
+
+1. **ancestors瀛楁** - 渚濊禆 `sys_dept` 琛ㄧ殑 `ancestors` 瀛楁姝g‘缁存姢
+2. **鎬ц兘** - 寤鸿娣诲姞绱㈠紩浠ユ彁楂樻煡璇㈡�ц兘
+3. **鎬诲叕鍙�** - 浼犲叆鎬诲叕鍙窱D(100)涓嶄細杩斿洖杞﹁締
+
+---
+
+**鏇存柊鏃堕棿**: 2025-10-25  
+**鐗堟湰**: v1.0  
+**鐘舵��**: 鉁� 宸插疄鐜�
diff --git "a/prd/\351\203\250\351\227\250\345\210\206\345\205\254\345\217\270ID\350\216\267\345\217\226\346\226\271\346\263\225\350\257\264\346\230\216.md" "b/prd/\351\203\250\351\227\250\345\210\206\345\205\254\345\217\270ID\350\216\267\345\217\226\346\226\271\346\263\225\350\257\264\346\230\216.md"
new file mode 100644
index 0000000..1a2bedf
--- /dev/null
+++ "b/prd/\351\203\250\351\227\250\345\210\206\345\205\254\345\217\270ID\350\216\267\345\217\226\346\226\271\346\263\225\350\257\264\346\230\216.md"
@@ -0,0 +1,231 @@
+# 閮ㄩ棬鍒嗗叕鍙窱D鑾峰彇鏂规硶璇存槑
+
+## 姒傝堪
+
+鏂板浜嗙嫭绔嬬殑鏂规硶 `selectBranchCompanyIdByDeptId`锛岀敤浜庤幏鍙栨寚瀹氶儴闂↖D瀵瑰簲鐨勫垎鍏徃ID锛坧arent_id=100鐨勯儴闂級銆�
+
+## 鏂规硶瀹氫箟
+
+### Mapper鎺ュ彛
+
+**鏂囦欢**: `SysDeptMapper.java`
+
+```java
+/**
+ * 鑾峰彇鎸囧畾閮ㄩ棬ID鐨勫垎鍏徃ID(parent_id=100鐨勯儴闂�)
+ * 濡傛灉浼犲叆鐨勫氨鏄垎鍏徃锛岀洿鎺ヨ繑鍥烇紱鍚﹀垯浠巃ncestors涓煡鎵惧垎鍏徃ID
+ * 
+ * @param deptId 閮ㄩ棬ID
+ * @return 鍒嗗叕鍙窱D锛屽鏋滄壘涓嶅埌鍒欒繑鍥瀗ull
+ */
+public Long selectBranchCompanyIdByDeptId(@Param("deptId") Long deptId);
+```
+
+### SQL瀹炵幇
+
+**鏂囦欢**: `SysDeptMapper.xml`
+
+```xml
+<!-- 鑾峰彇鎸囧畾閮ㄩ棬ID鐨勫垎鍏徃ID锛坧arent_id=100鐨勯儴闂級 -->
+<select id="selectBranchCompanyIdByDeptId" parameterType="Long" resultType="Long">
+    select case 
+        -- 濡傛灉浼犲叆鐨勫氨鏄垎鍏徃锛坧arent_id=100锛夛紝鐩存帴杩斿洖
+        when exists(select 1 from sys_dept where dept_id = #{deptId} and parent_id = 100 and del_flag = '0') 
+        then #{deptId}
+        else (
+            -- 鍚﹀垯浠� ancestors 涓煡鎵惧垎鍏徃ID
+            select d.dept_id
+            from sys_dept d
+            where d.parent_id = 100
+            and d.del_flag = '0'
+            and FIND_IN_SET(d.dept_id, (
+                select ancestors from sys_dept where dept_id = #{deptId} and del_flag = '0'
+            ))
+            limit 1
+        )
+    end
+</select>
+```
+
+## 浣跨敤绀轰緥
+
+### 鍦⊿ervice灞備腑浣跨敤
+
+```java
+@Autowired
+private SysDeptMapper deptMapper;
+
+public void someMethod(Long deptId) {
+    // 鑾峰彇鍒嗗叕鍙窱D
+    Long branchCompanyId = deptMapper.selectBranchCompanyIdByDeptId(deptId);
+    
+    if (branchCompanyId != null) {
+        // 浣跨敤鍒嗗叕鍙窱D杩涜鍚庣画鎿嶄綔
+        System.out.println("鍒嗗叕鍙窱D: " + branchCompanyId);
+    } else {
+        // 鎵句笉鍒板垎鍏徃锛堝彲鑳芥槸鎬诲叕鍙告垨鏁版嵁寮傚父锛�
+        System.out.println("鏈壘鍒板垎鍏徃ID");
+    }
+}
+```
+
+### 鍦∕yBatis XML涓娇鐢�
+
+鍙互鍦ㄥ叾浠朚apper鐨凷QL涓綔涓哄瓙鏌ヨ浣跨敤锛�
+
+```xml
+<select id="someQuery" resultType="SomeType">
+    SELECT * FROM some_table
+    WHERE dept_id = (
+        SELECT CASE 
+            WHEN EXISTS(SELECT 1 FROM sys_dept WHERE dept_id = #{deptId} AND parent_id = 100 AND del_flag = '0') 
+            THEN #{deptId}
+            ELSE (
+                SELECT d.dept_id
+                FROM sys_dept d
+                WHERE d.parent_id = 100
+                AND d.del_flag = '0'
+                AND FIND_IN_SET(d.dept_id, (
+                    SELECT ancestors FROM sys_dept WHERE dept_id = #{deptId} AND del_flag = '0'
+                ))
+                LIMIT 1
+            )
+        END
+    )
+</select>
+```
+
+## 宸ヤ綔鍘熺悊
+
+### 閮ㄩ棬缁撴瀯绀轰緥
+
+```
+鎬诲叕鍙� (dept_id=100, parent_id=0, ancestors="0")
+鈹溾攢鈹� 鍖椾含鍒嗗叕鍙� (dept_id=101, parent_id=100, ancestors="0,100")
+鈹�   鈹溾攢鈹� 鎶�鏈儴 (dept_id=201, parent_id=101, ancestors="0,100,101")
+鈹�   鈹斺攢鈹� 涓氬姟閮� (dept_id=202, parent_id=101, ancestors="0,100,101")
+鈹斺攢鈹� 涓婃捣鍒嗗叕鍙� (dept_id=102, parent_id=100, ancestors="0,100")
+    鈹斺攢鈹� 甯傚満閮� (dept_id=203, parent_id=102, ancestors="0,100,102")
+```
+
+### 鏌ヨ閫昏緫
+
+1. **浼犲叆鍒嗗叕鍙窱D** (濡�: deptId=101)
+   - 妫�鏌� `parent_id = 100` 鉁�
+   - 鐩存帴杩斿洖: `101`
+
+2. **浼犲叆瀛愰儴闂↖D** (濡�: deptId=201)
+   - 妫�鏌� `parent_id = 100` 鉂�
+   - 鏌ヨ `ancestors = "0,100,101"`
+   - 浣跨敤 `FIND_IN_SET` 鏌ユ壘 `parent_id=100` 鐨勯儴闂�
+   - 鎵惧埌鍖归厤: `101`
+   - 杩斿洖: `101`
+
+3. **浼犲叆鎬诲叕鍙窱D** (濡�: deptId=100)
+   - 妫�鏌� `parent_id = 100` 鉂� (parent_id=0)
+   - ancestors涓病鏈塸arent_id=100鐨勯儴闂�
+   - 杩斿洖: `null`
+
+## 搴旂敤鍦烘櫙
+
+### 1. 杞﹁締鏌ヨ
+鐢ㄦ埛鍦ㄤ换鎰忛儴闂紝鏌ヨ鏃惰嚜鍔ㄥ畾浣嶅埌鎵�灞炲垎鍏徃鐨勮溅杈嗭細
+
+```java
+// 鍘熷瀹炵幇锛圴ehicleInfoMapper.xml锛�
+Long branchCompanyId = deptMapper.selectBranchCompanyIdByDeptId(userDeptId);
+List<VehicleInfo> vehicles = vehicleMapper.selectByDeptId(branchCompanyId);
+```
+
+### 2. 鏁版嵁鏉冮檺杩囨护
+闄愬埗鐢ㄦ埛鍙兘鏌ョ湅鎵�灞炲垎鍏徃鐨勬暟鎹細
+
+```java
+public List<SomeData> getDataList(Long userDeptId) {
+    Long branchCompanyId = deptMapper.selectBranchCompanyIdByDeptId(userDeptId);
+    return someMapper.selectByBranchCompany(branchCompanyId);
+}
+```
+
+### 3. 鎶ヨ〃缁熻
+鎸夊垎鍏徃缁村害缁熻鏁版嵁锛�
+
+```java
+public Map<String, Object> getStatistics(Long deptId) {
+    Long branchCompanyId = deptMapper.selectBranchCompanyIdByDeptId(deptId);
+    return statisticsService.getByBranchCompany(branchCompanyId);
+}
+```
+
+## 鎬ц兘浼樺寲寤鸿
+
+### 1. 娣诲姞绱㈠紩
+纭繚浠ヤ笅瀛楁鏈夌储寮曪細
+```sql
+-- 宸叉湁鐨勭储寮�
+CREATE INDEX idx_parent_id ON sys_dept(parent_id);
+CREATE INDEX idx_del_flag ON sys_dept(del_flag);
+
+-- 寤鸿娣诲姞澶嶅悎绱㈠紩
+CREATE INDEX idx_parent_del ON sys_dept(parent_id, del_flag);
+```
+
+### 2. 缁撴灉缂撳瓨
+瀵逛簬棰戠箒鏌ヨ鐨勫満鏅紝鍙互鑰冭檻缂撳瓨缁撴灉锛�
+
+```java
+@Cacheable(value = "branchCompany", key = "#deptId")
+public Long getBranchCompanyId(Long deptId) {
+    return deptMapper.selectBranchCompanyIdByDeptId(deptId);
+}
+```
+
+## 娉ㄦ剰浜嬮」
+
+1. **杩斿洖鍊煎彲鑳戒负null**
+   - 鎬诲叕鍙革紙dept_id=100锛夋煡璇㈡椂浼氳繑鍥瀗ull
+   - 閮ㄩ棬鏁版嵁寮傚父鏃朵篃浼氳繑鍥瀗ull
+   - 浣跨敤鏃堕渶瑕佸仛绌哄�煎垽鏂�
+
+2. **鍙煡璇㈡甯搁儴闂�**
+   - SQL涓凡杩囨护 `del_flag = '0'`
+   - 琚垹闄ょ殑閮ㄩ棬涓嶄細琚煡璇㈠埌
+
+3. **鍒嗗叕鍙稿畾涔�**
+   - 鍒嗗叕鍙稿繀椤绘弧瓒� `parent_id = 100`
+   - 濡傛灉缁勭粐鏋舵瀯璋冩暣锛岄渶瑕佺‘淇濊繖涓鍒欎粛鐒堕�傜敤
+
+4. **ancestors瀛楁缁存姢**
+   - 閮ㄩ棬灞傜骇鍙樻洿鏃跺繀椤绘洿鏂癮ncestors瀛楁
+   - ancestors鏍煎紡蹇呴』鏄�楀彿鍒嗛殧鐨処D鍒楄〃
+
+## 娴嬭瘯鍦烘櫙
+
+### 娴嬭瘯鐢ㄤ緥1: 浼犲叆鍒嗗叕鍙窱D
+```
+杈撳叆: deptId = 101 (鍖椾含鍒嗗叕鍙�)
+棰勬湡杈撳嚭: 101
+```
+
+### 娴嬭瘯鐢ㄤ緥2: 浼犲叆瀛愰儴闂↖D
+```
+杈撳叆: deptId = 201 (鎶�鏈儴)
+棰勬湡杈撳嚭: 101 (鍖椾含鍒嗗叕鍙�)
+```
+
+### 娴嬭瘯鐢ㄤ緥3: 浼犲叆鎬诲叕鍙窱D
+```
+杈撳叆: deptId = 100 (鎬诲叕鍙�)
+棰勬湡杈撳嚭: null
+```
+
+### 娴嬭瘯鐢ㄤ緥4: 浼犲叆澶氱骇瀛愰儴闂↖D
+```
+杈撳叆: deptId = 301 (鍋囪鎶�鏈儴涓嬬殑灏忕粍锛宎ncestors="0,100,101,201")
+棰勬湡杈撳嚭: 101 (鍖椾含鍒嗗叕鍙�)
+```
+
+## 鏇存柊鏃ュ織
+
+- **2025-01-25**: 鍒涘缓鐙珛鏂规硶 `selectBranchCompanyIdByDeptId`
+- 鐩殑: 绠�鍖栧垎鍏徃ID鏌ヨ閫昏緫锛屾彁楂樹唬鐮佸鐢ㄦ��
diff --git "a/prd/\351\232\220\347\247\201\346\224\277\347\255\226\345\222\214\347\224\250\346\210\267\345\215\217\350\256\256\345\214\277\345\220\215\350\256\277\351\227\256\351\205\215\347\275\256.md" "b/prd/\351\232\220\347\247\201\346\224\277\347\255\226\345\222\214\347\224\250\346\210\267\345\215\217\350\256\256\345\214\277\345\220\215\350\256\277\351\227\256\351\205\215\347\275\256.md"
new file mode 100644
index 0000000..b9af546
--- /dev/null
+++ "b/prd/\351\232\220\347\247\201\346\224\277\347\255\226\345\222\214\347\224\250\346\210\267\345\215\217\350\256\256\345\214\277\345\220\215\350\256\277\351\227\256\351\205\215\347\275\256.md"
@@ -0,0 +1,449 @@
+# 闅愮鏀跨瓥鍜岀敤鎴峰崗璁尶鍚嶈闂厤缃鏄�
+
+## 涓�銆侀渶姹傝儗鏅�
+
+鏍规嵁娉曞緥娉曡鍜岀敤鎴蜂綋楠岃姹傦細
+- 鐢ㄦ埛鍦ㄦ敞鍐�/鐧诲綍鍓嶅簲鑳芥煡鐪嬨�婇殣绉佹斂绛栥�嬪拰銆婄敤鎴锋湇鍔″崗璁��
+- 杩欎袱涓〉闈㈤渶瑕佹敮鎸�**鍖垮悕璁块棶**锛堟棤闇�鐧诲綍锛�
+- 鐢ㄦ埛鍙互鍏呭垎浜嗚В鍗忚鍐呭鍚庡啀鍐冲畾鏄惁娉ㄥ唽
+
+## 浜屻�佸疄鐜版柟妗�
+
+### 2.1 淇敼鍐呭
+
+**鏂囦欢**: `app/permission.js`
+
+**淇敼鍓�**:
+```javascript
+// 椤甸潰鐧藉悕鍗�
+const whiteList = [
+  '/pages/login', '/pages/register', '/pages/common/webview/index'
+]
+```
+
+**淇敼鍚�**:
+```javascript
+// 椤甸潰鐧藉悕鍗�
+const whiteList = [
+  '/pages/login', 
+  '/pages/register', 
+  '/pages/common/webview/index',
+  '/pages/mine/privacy-policy/index',  // 闅愮鏀跨瓥锛堝尶鍚嶈闂級
+  '/pages/mine/user-agreement/index'   // 鐢ㄦ埛鍗忚锛堝尶鍚嶈闂級
+]
+```
+
+### 2.2 宸ヤ綔鍘熺悊
+
+**鏉冮檺鎷︽埅鏈哄埗**:
+
+1. **鎷︽埅鎵�鏈夐〉闈㈣烦杞�**
+   - `navigateTo`: 淇濈暀褰撳墠椤甸潰锛岃烦杞埌鏂伴〉闈�
+   - `redirectTo`: 鍏抽棴褰撳墠椤甸潰锛岃烦杞埌鏂伴〉闈�
+   - `reLaunch`: 鍏抽棴鎵�鏈夐〉闈紝鎵撳紑鍒板簲鐢ㄥ唴鐨勬煇涓〉闈�
+   - `switchTab`: 璺宠浆鍒� tabBar 椤甸潰
+
+2. **妫�鏌ョ敤鎴风櫥褰曠姸鎬�**
+   ```javascript
+   if (getToken()) {
+     // 宸茬櫥褰曪細鍏佽璁块棶
+     return true
+   }
+   ```
+
+3. **鏈櫥褰曟椂妫�鏌ョ櫧鍚嶅崟**
+   ```javascript
+   if (checkWhite(to.url)) {
+     // 鍦ㄧ櫧鍚嶅崟涓細鍏佽璁块棶
+     return true
+   } else {
+     // 涓嶅湪鐧藉悕鍗曪細璺宠浆鍒扮櫥褰曢〉
+     uni.reLaunch({ url: loginPage })
+     return false
+   }
+   ```
+
+## 涓夈�佺櫧鍚嶅崟椤甸潰鍒楄〃
+
+| 椤甸潰璺緞 | 璇存槑 | 鐢ㄩ�� |
+|---------|------|------|
+| `/pages/login` | 鐧诲綍椤甸潰 | 鐢ㄦ埛鐧诲綍鍏ュ彛 |
+| `/pages/register` | 娉ㄥ唽椤甸潰 | 鐢ㄦ埛娉ㄥ唽鍏ュ彛 |
+| `/pages/common/webview/index` | WebView椤甸潰 | 鍔犺浇澶栭儴缃戦〉 |
+| `/pages/mine/privacy-policy/index` | 闅愮鏀跨瓥 | 灞曠ず闅愮淇濇姢鏀跨瓥锛堟柊澧烇級 |
+| `/pages/mine/user-agreement/index` | 鐢ㄦ埛鍗忚 | 灞曠ず鏈嶅姟鍗忚锛堟柊澧烇級 |
+
+## 鍥涖�佷娇鐢ㄥ満鏅�
+
+### 鍦烘櫙1: 鐧诲綍椤甸潰鏌ョ湅鍗忚
+
+**鐢ㄦ埛鎿嶄綔**:
+```
+鐧诲綍椤甸潰 鈫� 鐐瑰嚮銆婇殣绉佸崗璁�嬫垨銆婄敤鎴峰崗璁��
+           鈫�
+         鏌ョ湅鍗忚鍐呭锛堟棤闇�鐧诲綍锛�
+           鈫�
+         杩斿洖鐧诲綍椤甸潰
+```
+
+**浠g爜瀹炵幇**:
+```vue
+<!-- app/pages/login.vue -->
+<view class="xieyi text-center">
+  <text class="text-grey1">鐧诲綍鍗充唬琛ㄥ悓鎰�</text>
+  <text @click.stop="handleUserAgrement" class="text-blue">銆婄敤鎴峰崗璁��</text>
+  <text class="text-grey1">鍜�</text>
+  <text @click.stop="handlePrivacy" class="text-blue">銆婇殣绉佸崗璁��</text>
+</view>
+
+<script>
+methods: {
+  handlePrivacy() {
+    // 鉁� 鍙互鐩存帴璺宠浆锛屾棤闇�鐧诲綍
+    this.$tab.navigateTo('/pages/mine/privacy-policy/index')
+  },
+  handleUserAgrement() {
+    // 鉁� 鍙互鐩存帴璺宠浆锛屾棤闇�鐧诲綍
+    this.$tab.navigateTo('/pages/mine/user-agreement/index')
+  }
+}
+</script>
+```
+
+### 鍦烘櫙2: 娉ㄥ唽椤甸潰鏌ョ湅鍗忚
+
+**鐢ㄦ埛鎿嶄綔**:
+```
+娉ㄥ唽椤甸潰 鈫� 鐐瑰嚮鍗忚閾炬帴
+           鈫�
+         鏌ョ湅鍗忚鍐呭锛堟棤闇�鐧诲綍锛�
+           鈫�
+         杩斿洖娉ㄥ唽椤甸潰 鈫� 鍕鹃�夊悓鎰� 鈫� 瀹屾垚娉ㄥ唽
+```
+
+**浠g爜瀹炵幇**:
+```vue
+<!-- app/pages/register.vue -->
+<view class="agreement-section">
+  <checkbox-group @change="handleAgreementChange">
+    <label class="agreement-label">
+      <checkbox value="agreed" :checked="agreedToTerms" color="#007AFF" />
+      <text class="agreement-text">
+        鎴戝凡闃呰骞跺悓鎰�
+        <text class="agreement-link" @click.stop="handleUserAgreement">銆婄敤鎴锋湇鍔″崗璁��</text>
+        鍜�
+        <text class="agreement-link" @click.stop="handlePrivacy">銆婇殣绉佹斂绛栥��</text>
+      </text>
+    </label>
+  </checkbox-group>
+</view>
+
+<script>
+methods: {
+  handlePrivacy() {
+    // 鉁� 鍙互鐩存帴璺宠浆锛屾棤闇�鐧诲綍
+    this.$tab.navigateTo('/pages/mine/privacy-policy/index')
+  },
+  handleUserAgreement() {
+    // 鉁� 鍙互鐩存帴璺宠浆锛屾棤闇�鐧诲綍
+    this.$tab.navigateTo('/pages/mine/user-agreement/index')
+  }
+}
+</script>
+```
+
+### 鍦烘櫙3: 宸茬櫥褰曠敤鎴锋煡鐪嬪崗璁�
+
+**鐢ㄦ埛鎿嶄綔**:
+```
+鎴戠殑椤甸潰 鈫� 鐐瑰嚮"鐢ㄦ埛鏈嶅姟鍗忚"鎴�"闅愮鏀跨瓥"鑿滃崟
+           鈫�
+         鏌ョ湅鍗忚鍐呭
+           鈫�
+         杩斿洖鎴戠殑椤甸潰
+```
+
+**浠g爜瀹炵幇**:
+```vue
+<!-- app/pages/mine/index.vue -->
+<view class="list-cell list-cell-arrow" @click="handleUserAgreement">
+  <view class="menu-item-box">
+    <view class="iconfont icon-text menu-icon"></view>
+    <view>鐢ㄦ埛鏈嶅姟鍗忚</view>
+  </view>
+</view>
+
+<script>
+methods: {
+  handleUserAgreement() {
+    // 鉁� 宸茬櫥褰曠敤鎴蜂篃鍙闂�
+    this.$tab.navigateTo('/pages/mine/user-agreement/index')
+  }
+}
+</script>
+```
+
+## 浜斻�佹潈闄愭帶鍒舵祦绋嬪浘
+
+```
+鐢ㄦ埛璺宠浆椤甸潰
+    鈫�
+妫�鏌ユ槸鍚﹀凡鐧诲綍锛�
+    鈫�
+  鏄� 鈫� 鍏佽璁块棶鎵�鏈夐〉闈�
+    鈫�
+  鍚� 鈫� 妫�鏌ユ槸鍚﹀湪鐧藉悕鍗曪紵
+         鈫�
+       鏄� 鈫� 鍏佽璁块棶
+         鈫�
+       鍚� 鈫� 寮哄埗璺宠浆鍒扮櫥褰曢〉
+```
+
+## 鍏�佹祴璇曢獙璇�
+
+### 娴嬭瘯姝ラ
+
+#### 娴嬭瘯1: 鏈櫥褰曠姸鎬佽闂崗璁紙鏍稿績娴嬭瘯锛�
+
+1. **娓呴櫎鐧诲綍鐘舵��**
+   ```javascript
+   // 鍦ㄦ帶鍒跺彴鎵ц
+   uni.removeStorageSync('token')
+   uni.removeStorageSync('user')
+   ```
+
+2. **閲嶅惎灏忕▼搴�**
+   - 寰俊寮�鍙戣�呭伐鍏� 鈫� 缂栬瘧
+
+3. **娴嬭瘯鐧诲綍椤甸潰**
+   - 搴旇鑷姩璺宠浆鍒扮櫥褰曢〉闈�
+   - 鐐瑰嚮銆婄敤鎴峰崗璁�嬮摼鎺�
+   - 鉁� 搴旇鑳芥垚鍔熻烦杞埌鍗忚椤甸潰锛堜笉浼氳鎷︽埅锛�
+   - 鏌ョ湅鍗忚鍐呭
+   - 鐐瑰嚮杩斿洖鎸夐挳
+   - 鉁� 搴旇杩斿洖鍒扮櫥褰曢〉闈�
+
+4. **娴嬭瘯娉ㄥ唽椤甸潰**
+   - 浠庣櫥褰曢〉鐐瑰嚮"绔嬪嵆娉ㄥ唽"
+   - 鐐瑰嚮鍗忚閾炬帴
+   - 鉁� 搴旇鑳芥垚鍔熻烦杞埌鍗忚椤甸潰
+   - 杩斿洖娉ㄥ唽椤甸潰
+   - 鉁� checkbox鐘舵�佷繚鎸�
+
+#### 娴嬭瘯2: 宸茬櫥褰曠姸鎬佽闂崗璁�
+
+1. **姝e父鐧诲綍**
+   - 璐﹀彿: admin
+   - 瀵嗙爜: admin123
+
+2. **浠�"鎴戠殑"椤甸潰璁块棶**
+   - 杩涘叆"鎴戠殑"椤甸潰
+   - 鐐瑰嚮"鐢ㄦ埛鏈嶅姟鍗忚"
+   - 鉁� 搴旇鑳芥垚鍔熻烦杞�
+   - 杩斿洖
+   - 鐐瑰嚮"闅愮鏀跨瓥"
+   - 鉁� 搴旇鑳芥垚鍔熻烦杞�
+
+#### 娴嬭瘯3: 鐩存帴璁块棶鍗忚椤甸潰
+
+鍦ㄦ祻瑙堝櫒涓洿鎺ヨ緭鍏ュ湴鍧�锛圚5璋冭瘯锛�:
+```
+http://localhost:9090/#/pages/mine/privacy-policy/index
+http://localhost:9090/#/pages/mine/user-agreement/index
+```
+
+鉁� 搴旇鑳界洿鎺ヨ闂紝涓嶄細璺宠浆鍒扮櫥褰曢〉
+
+### 棰勬湡缁撴灉
+
+| 娴嬭瘯鍦烘櫙 | 棰勬湡缁撴灉 |
+|---------|---------|
+| 鏈櫥褰曡闂櫥褰曢〉 | 鉁� 鍏佽璁块棶 |
+| 鏈櫥褰曡闂敞鍐岄〉 | 鉁� 鍏佽璁块棶 |
+| 鏈櫥褰曡闂殣绉佹斂绛� | 鉁� 鍏佽璁块棶锛堟柊澧烇級 |
+| 鏈櫥褰曡闂敤鎴峰崗璁� | 鉁� 鍏佽璁块棶锛堟柊澧烇級 |
+| 鏈櫥褰曡闂椤� | 鉂� 璺宠浆鍒扮櫥褰曢〉 |
+| 鏈櫥褰曡闂换鍔¢〉 | 鉂� 璺宠浆鍒扮櫥褰曢〉 |
+| 宸茬櫥褰曡闂墍鏈夐〉闈� | 鉁� 鍏佽璁块棶 |
+
+## 涓冦�佸父瑙侀棶棰�
+
+### 闂1: 鐐瑰嚮鍗忚閾炬帴鍚庝粛璺宠浆鍒扮櫥褰曢〉
+
+**鍘熷洜**: 鐧藉悕鍗曡矾寰勯厤缃敊璇�
+
+**妫�鏌�**:
+```javascript
+// app/permission.js
+// 纭繚璺緞瀹屽叏鍖归厤
+'/pages/mine/privacy-policy/index'  // 鉁� 姝g‘
+'/pages/mine/privacy-policy'        // 鉂� 閿欒锛堢己灏�/index锛�
+```
+
+**瑙e喅**: 纭繚璺緞涓巔ages.json涓殑閰嶇疆涓�鑷�
+
+---
+
+### 闂2: 浠庡崗璁〉闈㈣繑鍥炲悗锛岀櫥褰曢〉鎴栨敞鍐岄〉鐘舵�佷涪澶�
+
+**鍘熷洜**: 浣跨敤浜嗛敊璇殑璺宠浆鏂规硶
+
+**瑙e喅**:
+```javascript
+// 鉁� 姝g‘锛氫娇鐢╪avigateTo锛屼繚鐣欏綋鍓嶉〉闈�
+this.$tab.navigateTo('/pages/mine/privacy-policy/index')
+
+// 鉂� 閿欒锛氫娇鐢╮edirectTo浼氬叧闂綋鍓嶉〉闈�
+this.$tab.redirectTo('/pages/mine/privacy-policy/index')
+```
+
+---
+
+### 闂3: H5鐜涓嬪埛鏂板崗璁〉闈㈠悗璺宠浆鍒扮櫥褰曢〉
+
+**鍘熷洜**: H5鍒锋柊浼氶噸鏂版墽琛岃矾鐢卞畧鍗�
+
+**楠岃瘉**: 杩欐槸姝e父鐜拌薄锛岀Щ鍔ㄧ涓嶅瓨鍦ㄥ埛鏂版搷浣�
+
+**瑙e喅**: 濡傞渶H5鏀寔鍒锋柊锛岄渶瑕侀澶栭厤缃矾鐢卞畧鍗�
+
+---
+
+## 鍏�佸畨鍏ㄨ�冭檻
+
+### 8.1 鐧藉悕鍗曡寖鍥存帶鍒�
+
+**鍘熷垯**: 鍙皢蹇呰鐨勯〉闈㈠姞鍏ョ櫧鍚嶅崟
+
+**褰撳墠鐧藉悕鍗�**:
+- 鉁� 鐧诲綍/娉ㄥ唽椤甸潰锛氬繀椤诲尶鍚嶈闂�
+- 鉁� 鍗忚椤甸潰锛氭硶寰嬭姹傚尶鍚嶈闂�
+- 鉁� WebView椤甸潰锛氱敤浜庢樉绀哄閮ㄥ崗璁摼鎺�
+
+**涓嶅簲鍔犲叆鐧藉悕鍗曠殑椤甸潰**:
+- 鉂� 棣栭〉
+- 鉂� 浠诲姟椤甸潰
+- 鉂� 娑堟伅椤甸潰
+- 鉂� 涓汉淇℃伅椤甸潰
+- 鉂� 鍏朵粬涓氬姟鍔熻兘椤甸潰
+
+### 8.2 鏁版嵁瀹夊叏
+
+**鍗忚椤甸潰鐗圭偣**:
+- 鉁� 绾睍绀哄唴瀹癸紝鏃犳晱鎰熸暟鎹�
+- 鉁� 涓嶆秹鍙夾PI璋冪敤
+- 鉁� 涓嶉渶瑕佺敤鎴疯韩浠介獙璇�
+- 鉁� 涓嶄細娉勯湶绯荤粺淇℃伅
+
+**瀹夊叏鎺柦**:
+```vue
+<!-- 鍗忚椤甸潰鍙寘鍚潤鎬佸唴瀹� -->
+<template>
+  <view class="agreement-container">
+    <!-- 鍙湁鏂囨湰鍐呭锛屾棤鐢ㄦ埛鏁版嵁 -->
+    <view class="agreement-content">
+      <text>鍗忚鍐呭...</text>
+    </view>
+  </view>
+</template>
+
+<script>
+export default {
+  data() {
+    return {}  // 鏃犳晱鎰熸暟鎹�
+  },
+  methods: {
+    goBack() {
+      uni.navigateBack()  // 鍙湁杩斿洖鍔熻兘
+    }
+  }
+}
+</script>
+```
+
+## 涔濄�佸悗缁紭鍖栧缓璁�
+
+### 9.1 娣诲姞鍗忚鐗堟湰绠$悊
+
+```javascript
+// app/config.js
+module.exports = {
+  agreements: {
+    privacyPolicy: {
+      version: '1.0',
+      lastUpdate: '2025-01-25',
+      path: '/pages/mine/privacy-policy/index'
+    },
+    userAgreement: {
+      version: '1.0',
+      lastUpdate: '2025-01-25',
+      path: '/pages/mine/user-agreement/index'
+    }
+  }
+}
+```
+
+### 9.2 璁板綍鐢ㄦ埛鍚屾剰鐘舵��
+
+```javascript
+// 鐢ㄦ埛棣栨璁块棶鏃�
+localStorage.setItem('agreement_accepted', JSON.stringify({
+  privacyPolicy: { version: '1.0', acceptedAt: '2025-01-25' },
+  userAgreement: { version: '1.0', acceptedAt: '2025-01-25' }
+}))
+
+// 鍗忚鏇存柊鏃讹紝鎻愮ず鐢ㄦ埛閲嶆柊闃呰
+if (currentVersion !== acceptedVersion) {
+  // 鏄剧ず鍗忚鏇存柊鎻愮ず
+}
+```
+
+### 9.3 娣诲姞璁块棶缁熻
+
+```javascript
+// 缁熻鍗忚椤甸潰璁块棶閲�
+onLoad() {
+  // 涓婃姤缁熻鏁版嵁
+  uni.request({
+    url: '/api/statistics/agreement-view',
+    method: 'POST',
+    data: {
+      type: 'privacy-policy',
+      timestamp: new Date().getTime()
+    }
+  })
+}
+```
+
+## 鍗併�佹�荤粨
+
+### 瀹屾垚鐨勫伐浣�
+
+鉁� **鏉冮檺閰嶇疆**: 宸插皢闅愮鏀跨瓥鍜岀敤鎴峰崗璁〉闈㈠姞鍏ョ櫧鍚嶅崟
+鉁� **鍖垮悕璁块棶**: 鐢ㄦ埛鏃犻渶鐧诲綍鍗冲彲鏌ョ湅鍗忚鍐呭
+鉁� **娉曞緥鍚堣**: 婊¤冻銆婁釜浜轰俊鎭繚鎶ゆ硶銆嬬瓑娉曡瑕佹眰
+鉁� **鐢ㄦ埛浣撻獙**: 鐢ㄦ埛鍙湪娉ㄥ唽鍓嶅厖鍒嗕簡瑙e崗璁�
+
+### 淇敼鐨勬枃浠�
+
+- 鉁� `app/permission.js` - 娣诲姞鍗忚椤甸潰鍒扮櫧鍚嶅崟
+
+### 褰卞搷鐨勯〉闈�
+
+- 鉁� `app/pages/login.vue` - 鐧诲綍椤靛崗璁摼鎺ュ彲姝e父璁块棶
+- 鉁� `app/pages/register.vue` - 娉ㄥ唽椤靛崗璁摼鎺ュ彲姝e父璁块棶
+- 鉁� `app/pages/mine/index.vue` - 宸茬櫥褰曠敤鎴蜂篃鍙闂�
+- 鉁� `app/pages/mine/privacy-policy/index.vue` - 鏀寔鍖垮悕璁块棶
+- 鉁� `app/pages/mine/user-agreement/index.vue` - 鏀寔鍖垮悕璁块棶
+
+### 娴嬭瘯寤鸿
+
+1. 鉁� 娓呴櫎鐧诲綍鐘舵�侊紝娴嬭瘯鏈櫥褰曡闂�
+2. 鉁� 浠庣櫥褰曢〉鐐瑰嚮鍗忚閾炬帴娴嬭瘯
+3. 鉁� 浠庢敞鍐岄〉鐐瑰嚮鍗忚閾炬帴娴嬭瘯
+4. 鉁� 鐧诲綍鍚庝粠"鎴戠殑"椤甸潰璁块棶娴嬭瘯
+5. 鉁� 鍦ㄤ笉鍚屽钩鍙版祴璇曪紙H5銆佸井淇″皬绋嬪簭銆丄pp锛�
+
+---
+
+閰嶇疆瀹屾垚锛佺幇鍦ㄧ敤鎴峰彲浠ュ湪鏈櫥褰曠姸鎬佷笅鏌ョ湅闅愮鏀跨瓥鍜岀敤鎴峰崗璁簡銆傪煄�
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java
index 17221c5..ada4327 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java
@@ -132,4 +132,13 @@
      * @return 閮ㄩ棬淇℃伅
      */
     public SysDept selectDeptByDepartmentIdAndParentId(@Param("departmentId") Integer departmentId, @Param("parentId") Long parentId);
+
+    /**
+     * 鑾峰彇鎸囧畾閮ㄩ棬ID鐨勫垎鍏徃ID锛坧arent_id=100鐨勯儴闂級
+     * 濡傛灉浼犲叆鐨勫氨鏄垎鍏徃锛岀洿鎺ヨ繑鍥烇紱鍚﹀垯浠巃ncestors涓煡鎵惧垎鍏徃ID
+     * 
+     * @param deptId 閮ㄩ棬ID
+     * @return 鍒嗗叕鍙窱D锛屽鏋滄壘涓嶅埌鍒欒繑鍥瀗ull
+     */
+    public Long selectBranchCompanyIdByDeptId(@Param("deptId") Long deptId);
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java
index 3293c6c..ac521d2 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java
@@ -694,6 +694,7 @@
             VehicleInfo queryParam = new VehicleInfo();
             queryParam.setStatus("0"); // 0琛ㄧず姝e父鐘舵��
             // 涓嶈缃甦eptId锛屾煡璇㈡墍鏈夐儴闂ㄧ殑杞﹁締
+            queryParam.setDeptId(deptId);
             
             List<VehicleInfo> vehicles = vehicleInfoMapper.selectVehicleInfoList(queryParam);
             
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleSyncServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleSyncServiceImpl.java
index dba60e7..b9f4b69 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleSyncServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleSyncServiceImpl.java
@@ -231,12 +231,12 @@
     }
 
     /**
-     * 浠嶤arOrdClass瑙f瀽閮ㄩ棬ID
+     * 浠� CarOrdClass 瑙f瀽閮ㄩ棬ID锛屽苟杞崲涓哄垎鍏徃ID
      * CarOrdClass鏍煎紡鍙兘鏄細ZB銆丠B.TI绛�
      * 闇�瑕佹媶鍒嗗苟鍦╯ys_dept涓尮閰峝ispatch_order_class瀛楁
      * 
      * @param carOrdClass 杞﹁締鍗曟嵁绫诲瀷缂栫爜
-     * @return 閮ㄩ棬ID锛屽鏋滄湭鎵惧埌杩斿洖null
+     * @return 鍒嗗叕鍙窱D锛屽鏋滄湭鎵惧埌杩斿洖null
      */
     private Long parseDeptIdFromCarOrdClass(String carOrdClass)
     {
@@ -264,7 +264,19 @@
             {
                 log.debug("閫氳繃dispatch_order_class='{}' 鎵惧埌閮ㄩ棬: {} (ID={})", 
                         code, dept.getDeptName(), dept.getDeptId());
-                return dept.getDeptId();
+                
+                // 灏嗛儴闂↖D杞崲涓哄垎鍏徃ID
+                Long branchCompanyId = sysDeptMapper.selectBranchCompanyIdByDeptId(dept.getDeptId());
+                if (branchCompanyId != null)
+                {
+                    log.debug("灏嗛儴闂↖D {} 杞崲涓哄垎鍏徃ID: {}", dept.getDeptId(), branchCompanyId);
+                    return branchCompanyId;
+                }
+                else
+                {
+                    log.warn("閮ㄩ棬ID {} 鏃犳硶杞崲涓哄垎鍏徃ID锛屽彲鑳芥槸鎬诲叕鍙告垨鏁版嵁寮傚父", dept.getDeptId());
+                    return null;
+                }
             }
         }
         
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
index 2d8e21a..6d1d189 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
@@ -45,6 +45,12 @@
 		<if test="status != null and status != ''">
 			AND status = #{status}
 		</if>
+		<if test="serviceOrderClass != null and serviceOrderClass != ''">
+			AND service_order_class = #{serviceOrderClass}
+		</if>
+		<if test="dispatchOrderClass != null and dispatchOrderClass != ''">
+			AND dispatch_order_class = #{dispatchOrderClass}
+		</if>
 		<!-- 鏁版嵁鑼冨洿杩囨护 -->
 		${params.dataScope}
 		order by d.parent_id, d.order_num
@@ -184,4 +190,24 @@
 		limit 1
 	</select>
 
+	<!-- 鑾峰彇鎸囧畾閮ㄩ棬ID鐨勫垎鍏徃ID锛坧arent_id=100鐨勯儴闂級 -->
+	<select id="selectBranchCompanyIdByDeptId" parameterType="Long" resultType="Long">
+		select case 
+			-- 濡傛灉浼犲叆鐨勫氨鏄垎鍏徃锛坧arent_id=100锛夛紝鐩存帴杩斿洖
+			when exists(select 1 from sys_dept where dept_id = #{deptId} and parent_id = 100 and del_flag = '0') 
+			then #{deptId}
+			else (
+				-- 鍚﹀垯浠� ancestors 涓煡鎵惧垎鍏徃ID
+				select d.dept_id
+				from sys_dept d
+				where d.parent_id = 100
+				and d.del_flag = '0'
+				and FIND_IN_SET(d.dept_id, (
+					select ancestors from sys_dept where dept_id = #{deptId} and del_flag = '0'
+				))
+				limit 1
+			)
+		end
+	</select>
+
 </mapper> 
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/VehicleInfoMapper.xml b/ruoyi-system/src/main/resources/mapper/system/VehicleInfoMapper.xml
index b6bbf51..e329543 100644
--- a/ruoyi-system/src/main/resources/mapper/system/VehicleInfoMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/VehicleInfoMapper.xml
@@ -39,7 +39,25 @@
             <if test="vehicleModel != null  and vehicleModel != ''"> and v.vehicle_model = #{vehicleModel}</if>
             <if test="status != null  and status != ''"> and v.status = #{status}</if>
             <if test="platformCode != null  and platformCode != ''"> and v.platform_code = #{platformCode}</if>
-            <if test="deptId != null"> and v.dept_id = #{deptId}</if>
+            <!-- 閮ㄩ棬杩囨护锛氳嚜鍔ㄦ煡鎵句紶鍏ラ儴闂ㄦ墍灞炵殑鍒嗗叕鍙革紙parent_id=100锛� -->
+            <if test="deptId != null">
+                and v.dept_id = (
+                    <!-- 濡傛灉浼犲叆鐨勫氨鏄垎鍏徃锛坧arent_id=100锛夛紝鐩存帴杩斿洖 -->
+                    select case 
+                        when exists(select 1 from sys_dept where dept_id = #{deptId} and parent_id = 100) then #{deptId}
+                        else (
+                            <!-- 鍚﹀垯浠� ancestors 涓煡鎵惧垎鍏徃ID -->
+                            select d.dept_id
+                            from sys_dept d
+                            where d.parent_id = 100
+                            and FIND_IN_SET(d.dept_id, (
+                                select ancestors from sys_dept where dept_id = #{deptId}
+                            ))
+                            limit 1
+                        )
+                    end
+                )
+            </if>
             <!-- 浠诲姟杞﹁締閫夋嫨蹇呴』杩囨护锛氬彧鏄剧ずcar_id鍜宒ept_id閮戒笉涓虹┖鐨勮溅杈� -->
             and v.car_id is not null and v.car_id != ''
             and v.dept_id is not null
diff --git a/ruoyi-ui/src/views/task/general/detail.vue b/ruoyi-ui/src/views/task/general/detail.vue
index 379fff6..b1b7527 100644
--- a/ruoyi-ui/src/views/task/general/detail.vue
+++ b/ruoyi-ui/src/views/task/general/detail.vue
@@ -30,6 +30,74 @@
         <el-descriptions-item label="澶囨敞" :span="2">{{ taskDetail.remark }}</el-descriptions-item>
       </el-descriptions>
 
+      <!-- 鎬ユ晳杞繍浠诲姟鎵╁睍淇℃伅 -->
+      <el-descriptions v-if="taskDetail.taskType === 'EMERGENCY_TRANSFER' && taskDetail.emergencyInfo" title="鎬ユ晳杞繍淇℃伅" :column="2" border style="margin-top: 20px;">
+        <el-descriptions-item label="鎮h�呭鍚�">{{ taskDetail.emergencyInfo.patientName }}</el-descriptions-item>
+        <el-descriptions-item label="鎮h�呮�у埆">
+          <dict-tag :options="dict.type.sys_user_sex" :value="taskDetail.emergencyInfo.patientGender"/>
+        </el-descriptions-item>
+        <el-descriptions-item label="鎮h�呭勾榫�">{{ taskDetail.emergencyInfo.patientAge }}</el-descriptions-item>
+        <el-descriptions-item label="鑱旂郴鐢佃瘽">{{ taskDetail.emergencyInfo.contactPhone }}</el-descriptions-item>
+        <el-descriptions-item label="鎺ラ�佸尰闄�" :span="2">{{ taskDetail.emergencyInfo.hospitalName }}</el-descriptions-item>
+        <el-descriptions-item label="灏辫瘖绉戝" :span="2">
+          <dict-tag v-if="taskDetail.emergencyInfo.hospitalDepartment" :options="dict.type.hospital_department" :value="taskDetail.emergencyInfo.hospitalDepartment"/>
+          <span v-else style="color: #C0C4CC;">--</span>
+        </el-descriptions-item>
+        <el-descriptions-item label="鐥呮儏鎻忚堪" :span="2">
+          <span v-if="taskDetail.emergencyInfo.illnessDescription">{{ taskDetail.emergencyInfo.illnessDescription }}</span>
+          <span v-else style="color: #C0C4CC;">--</span>
+        </el-descriptions-item>
+        <el-descriptions-item label="鐗规畩闇�姹�" :span="2">
+          <span v-if="taskDetail.emergencyInfo.specialRequirements">{{ taskDetail.emergencyInfo.specialRequirements }}</span>
+          <span v-else style="color: #C0C4CC;">--</span>
+        </el-descriptions-item>
+        <el-descriptions-item label="鏄惁闇�瑕佹媴鏋�">
+          <el-tag v-if="taskDetail.emergencyInfo.needsStretcher == 1" type="success" size="small">鏄�</el-tag>
+          <el-tag v-else type="info" size="small">鍚�</el-tag>
+        </el-descriptions-item>
+        <el-descriptions-item label="鏄惁闇�瑕佽疆妞�">
+          <el-tag v-if="taskDetail.emergencyInfo.needsWheelchair == 1" type="success" size="small">鏄�</el-tag>
+          <el-tag v-else type="info" size="small">鍚�</el-tag>
+        </el-descriptions-item>
+        <el-descriptions-item label="鏄惁闇�瑕佹哀姘�">
+          <el-tag v-if="taskDetail.emergencyInfo.needsOxygen == 1" type="success" size="small">鏄�</el-tag>
+          <el-tag v-else type="info" size="small">鍚�</el-tag>
+        </el-descriptions-item>
+        <el-descriptions-item label="绱ф�ョ▼搴�">
+          <el-tag v-if="taskDetail.emergencyInfo.urgencyLevel === 'HIGH'" type="danger" size="small">绱ф��</el-tag>
+          <el-tag v-else-if="taskDetail.emergencyInfo.urgencyLevel === 'MEDIUM'" type="warning" size="small">涓�鑸�</el-tag>
+          <el-tag v-else-if="taskDetail.emergencyInfo.urgencyLevel === 'LOW'" type="info" size="small">涓嶆��</el-tag>
+          <span v-else style="color: #C0C4CC;">--</span>
+        </el-descriptions-item>
+        <el-descriptions-item label="闄悓浜烘暟">{{ taskDetail.emergencyInfo.companionCount || 0 }} 浜�</el-descriptions-item>
+        <el-descriptions-item label="棰勪及璐圭敤">{{ taskDetail.emergencyInfo.estimatedCost || '--' }} 鍏�</el-descriptions-item>
+      </el-descriptions>
+
+      <!-- 绂忕杞︿换鍔℃墿灞曚俊鎭� -->
+      <el-descriptions v-if="taskDetail.taskType === 'WELFARE' && taskDetail.welfareInfo" title="绂忕杞︽湇鍔′俊鎭�" :column="2" border style="margin-top: 20px;">
+        <el-descriptions-item label="涔樺濮撳悕">{{ taskDetail.welfareInfo.passengerName }}</el-descriptions-item>
+        <el-descriptions-item label="涔樺鎬у埆">
+          <dict-tag :options="dict.type.sys_user_sex" :value="taskDetail.welfareInfo.passengerGender"/>
+        </el-descriptions-item>
+        <el-descriptions-item label="涔樺骞撮緞">{{ taskDetail.welfareInfo.passengerAge }}</el-descriptions-item>
+        <el-descriptions-item label="鑱旂郴鐢佃瘽">{{ taskDetail.welfareInfo.contactPhone }}</el-descriptions-item>
+        <el-descriptions-item label="鏈嶅姟绫诲瀷" :span="2">
+          <span v-if="taskDetail.welfareInfo.serviceType">{{ taskDetail.welfareInfo.serviceType }}</span>
+          <span v-else style="color: #C0C4CC;">--</span>
+        </el-descriptions-item>
+        <el-descriptions-item label="鐗规畩闇�姹�" :span="2">
+          <span v-if="taskDetail.welfareInfo.specialRequirements">{{ taskDetail.welfareInfo.specialRequirements }}</span>
+          <span v-else style="color: #C0C4CC;">--</span>
+        </el-descriptions-item>
+        <el-descriptions-item label="鏄惁闇�瑕佽疆妞�">
+          <el-tag v-if="taskDetail.welfareInfo.needsWheelchair == 1" type="success" size="small">鏄�</el-tag>
+          <el-tag v-else type="info" size="small">鍚�</el-tag>
+        </el-descriptions-item>
+        <el-descriptions-item label="闄悓浜烘暟">{{ taskDetail.welfareInfo.companionCount || 0 }} 浜�</el-descriptions-item>
+        <el-descriptions-item label="棰勪及璐圭敤">{{ taskDetail.welfareInfo.estimatedCost || '--' }} 鍏�</el-descriptions-item>
+        <el-descriptions-item label="瀹為檯璐圭敤">{{ taskDetail.welfareInfo.actualCost || '--' }} 鍏�</el-descriptions-item>
+      </el-descriptions>
+
       <!-- 鎿嶄綔鎸夐挳 -->
       <div style="margin-top: 20px; text-align: center;">
         <el-button type="primary" @click="handleEdit" v-hasPermi="['task:general:edit']">缂栬緫浠诲姟</el-button>
@@ -299,7 +367,7 @@
 
 export default {
   name: "TaskDetail",
-  dicts: ['sys_task_type', 'sys_task_status', 'sys_vehicle_type', 'sys_task_vehicle_status'],
+  dicts: ['sys_task_type', 'sys_task_status', 'sys_vehicle_type', 'sys_task_vehicle_status', 'sys_user_sex', 'hospital_department'],
   data() {
     return {
       // 浠诲姟璇︽儏
diff --git a/ruoyi-ui/src/views/task/general/index.vue b/ruoyi-ui/src/views/task/general/index.vue
index 5c8c97c..8988020 100644
--- a/ruoyi-ui/src/views/task/general/index.vue
+++ b/ruoyi-ui/src/views/task/general/index.vue
@@ -103,9 +103,12 @@
           >{{ scope.row.taskCode }}</el-button>
         </template>
       </el-table-column>
-      <el-table-column label="浠诲姟绫诲瀷" align="center" prop="taskType">
+      <el-table-column label="浠诲姟绫诲瀷" align="center" prop="taskType" width="120">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.sys_task_type" :value="scope.row.taskType"/>
+          <el-tag v-if="scope.row.taskType === 'EMERGENCY_TRANSFER'" type="danger" size="mini" style="margin-left: 5px;">
+            <i class="el-icon-warning"></i>
+          </el-tag>
         </template>
       </el-table-column>
       <el-table-column label="浠诲姟鐘舵��" align="center" prop="taskStatus">

--
Gitblit v1.9.1