From c27e413f71c4beb1318237fedf585770702fe3a4 Mon Sep 17 00:00:00 2001
From: Tevin <tingquanren@163.com>
Date: Thu, 13 Mar 2025 10:13:57 +0800
Subject: [PATCH] 知识库文档,添加表单组件文档

---
 _cursor.ai/forms.doc/numberValve.doc/CNumberValve.doc.md     |   79 ++
 _cursor.ai/forms.doc/switch.doc/CSwitch.doc.md               |   65 ++
 _cursor.ai/forms.doc/imagePicker.doc/CImagePicker.doc.md     |   80 ++
 _cursor.ai/forms.doc/input.doc/CInput.doc.md                 |   76 ++
 _cursor.ai/forms.doc/form.doc/CForm.doc.md                   |  142 ++++
 _cursor.ai/forms.doc/form.doc/CFormItem.doc.md               |  100 +++
 _cursor.ai/forms.doc/textarea.doc/CTextArea.doc.md           |   83 ++
 _cursor.ai/forms.doc/input.doc/CInputScanCode.doc.md         |  126 +++
 _cursor.ai/forms.doc/form.doc/CFormSubmit.doc.md             |   77 ++
 _cursor.ai/forms.doc/select.doc/CJumpSelect.doc.md           |  105 +++
 _cursor.ai/forms.doc/userSignature.doc/CUserSignature.doc.md |   84 ++
 _cursor.ai/forms.doc/checkbox.doc/CCheckBox.doc.md           |  132 ++++
 _cursor.ai/forms.doc/numberStep.doc/CNumberStep.doc.md       |   94 ++
 _cursor.ai/forms.doc/switch.doc/CSwitchRadio.doc.md          |   84 ++
 _cursor.ai/forms.doc/datePicker.doc/CDatePicker.doc.md       |  112 +++
 _cursor.ai/forms.doc/select.doc/CSelect.doc.md               |  132 ++++
 _cursor.ai/forms.doc/form.doc/CFormAgreement.doc.md          |   88 ++
 _cursor.ai/forms.doc/chinaArea.doc/CChinaArea.doc.md         |   89 ++
 _cursor.ai/forms.doc/input.doc/CInputExpressCode.doc.md      |   58 +
 _cursor.ai/forms.doc/input.doc/CInputPhoneCode.doc.md        |  109 +++
 20 files changed, 1,915 insertions(+), 0 deletions(-)

diff --git a/_cursor.ai/forms.doc/checkbox.doc/CCheckBox.doc.md b/_cursor.ai/forms.doc/checkbox.doc/CCheckBox.doc.md
new file mode 100644
index 0000000..1998ff2
--- /dev/null
+++ b/_cursor.ai/forms.doc/checkbox.doc/CCheckBox.doc.md
@@ -0,0 +1,132 @@
+# CCheckBox 复选框组件
+
+## 功能说明
+
+CCheckBox 是一个复选框组件,用于在表单中提供多选或单选功能。组件支持两种显示模式:直接显示模式和弹窗选择模式,以及两种选择类型:多选和单选。
+
+## 引用方式
+
+```js
+import { CCheckBox } from '@components/forms/checkbox';
+```
+
+## 组件参数
+
+- `itemRes` (Object,必填):表单数据资源对象,表单组件内部机制专用
+- `options` (Array,可选):选项列表,每个选项应包含 label 和 value 属性,默认为空数组
+- `boxType` (String,可选):勾选类型,可选值有 checkbox(多选)、radio(单选),默认为 checkbox
+- `displayType` (String,可选):显示模式,可选值有 plane(直接显示)、dialog(弹窗选择),默认为 plane
+- `placeholder` (String,可选):输入框占位提示文本
+
+## 使用示例
+
+### 基础用法(多选,直接显示模式)
+
+```html
+<template>
+  <CForm :form="form">
+    <CFormItem name="hobbies" label="兴趣爱好">
+      <CCheckBox 
+        :options="hobbiesOptions" 
+        placeholder="请选择兴趣爱好" 
+      />
+    </CFormItem>
+  </CForm>
+</template>
+
+<script>
+import { CForm, CFormItem } from '@components/forms/form';
+import { CCheckBox } from '@components/forms/checkbox';
+
+export default {
+  components: {
+    CForm,
+    CFormItem,
+    CCheckBox
+  },
+  data() {
+    return {
+      form: {
+        hobbies: []
+      },
+      hobbiesOptions: [
+        { label: '阅读', value: 'reading' },
+        { label: '音乐', value: 'music' },
+        { label: '运动', value: 'sports' },
+        { label: '旅行', value: 'travel' },
+        { label: '电影', value: 'movie' }
+      ]
+    };
+  }
+};
+</script>
+```
+
+### 单选模式
+
+```html
+<CFormItem name="gender" label="性别">
+  <CCheckBox 
+    boxType="radio" 
+    :options="genderOptions" 
+    placeholder="请选择性别" 
+  />
+</CFormItem>
+```
+
+```js
+data() {
+  return {
+    form: {
+      gender: ''
+    },
+    genderOptions: [
+      { label: '男', value: 'male' },
+      { label: '女', value: 'female' }
+    ]
+  };
+}
+```
+
+### 弹窗选择模式
+
+```html
+<CFormItem name="skills" label="技能">
+  <CCheckBox 
+    displayType="dialog" 
+    :options="skillsOptions" 
+    placeholder="请选择技能" 
+  />
+</CFormItem>
+```
+
+```js
+data() {
+  return {
+    form: {
+      skills: []
+    },
+    skillsOptions: [
+      { label: 'JavaScript', value: 'js' },
+      { label: 'HTML', value: 'html' },
+      { label: 'CSS', value: 'css' },
+      { label: 'Vue', value: 'vue' },
+      { label: 'React', value: 'react' },
+      { label: 'Node.js', value: 'node' }
+    ]
+  };
+}
+```
+
+## 注意事项
+
+1. 组件支持两种选择类型:
+   - `checkbox`:多选模式,可以选择多个选项,表单值为数组
+   - `radio`:单选模式,只能选择一个选项,表单值为单个值
+2. 组件支持两种显示模式:
+   - `plane`:直接显示模式,选项直接显示在表单项下方
+   - `dialog`:弹窗选择模式,点击表单项后弹出选择弹窗
+3. 当选项较多时,建议使用弹窗选择模式(`displayType="dialog"`)
+4. 在多选模式下,表单值为选中项的 value 值组成的数组
+5. 在单选模式下,表单值为选中项的 value 值
+6. 组件会自动根据表单值显示已选项的文本,多个选项时用逗号分隔 
\ No newline at end of file
diff --git a/_cursor.ai/forms.doc/chinaArea.doc/CChinaArea.doc.md b/_cursor.ai/forms.doc/chinaArea.doc/CChinaArea.doc.md
new file mode 100644
index 0000000..335fe08
--- /dev/null
+++ b/_cursor.ai/forms.doc/chinaArea.doc/CChinaArea.doc.md
@@ -0,0 +1,89 @@
+# CChinaArea 中国地区选择器组件
+
+## 功能说明
+
+CChinaArea 是一个中国地区选择器组件,用于在表单中选择省市区地址。组件内置了完整的中国行政区划数据,支持省、市、区三级联动选择,并且可以设置默认值和只读模式。
+
+## 引用方式
+
+```js
+import { CChinaArea } from '@components/forms/chinaArea';
+```
+
+## 组件参数
+
+- `itemRes` (Object,必填):表单数据资源对象,表单组件内部机制专用
+- `level` (Number,可选):选择层级,可选值为 1(省)、2(省市)、3(省市区),默认为 3
+- `placeholder` (String,可选):选择器占位提示文本
+- `readOnly` (Boolean,可选):只读模式,默认为 false
+- `separator` (String,可选):地址文本分隔符,默认为空格
+- `defaultCode` (String,可选):默认选中的区域编码
+
+## 使用示例
+
+### 基础用法
+
+```html
+<template>
+  <CForm :form="form">
+    <CFormItem name="address" label="所在地区">
+      <CChinaArea 
+        placeholder="请选择所在地区" 
+      />
+    </CFormItem>
+  </CForm>
+</template>
+
+<script>
+import { CForm, CFormItem } from '@components/forms/form';
+import { CChinaArea } from '@components/forms/chinaArea';
+
+export default {
+  components: {
+    CForm,
+    CFormItem,
+    CChinaArea
+  },
+  data() {
+    return {
+      form: {
+        address: {
+          province: '',
+          city: '',
+          district: '',
+          code: ''
+        }
+      }
+    };
+  }
+};
+</script>
+```
+
+### 自定义配置
+
+```html
+<CFormItem name="region" label="配送区域">
+  <CChinaArea 
+    :level="2" 
+    separator="/" 
+    defaultCode="330100" 
+    placeholder="请选择配送区域" 
+  />
+</CFormItem>
+```
+
+## 注意事项
+
+1. 组件返回的数据格式为对象,包含以下字段:
+   - `province`:省份名称
+   - `city`:城市名称
+   - `district`:区县名称(仅在 level=3 时有值)
+   - `code`:选中区域的行政区划代码
+2. 可以通过 `defaultCode` 设置默认选中的区域
+3. `level` 参数决定了选择的层级:
+   - 1:仅选择省份
+   - 2:选择省份和城市
+   - 3:选择省份、城市和区县
+4. 组件会根据当前选择自动联动更新下级选项
+5. 在只读模式下,地址信息将以文本形式显示,使用 `separator` 分隔 
\ No newline at end of file
diff --git a/_cursor.ai/forms.doc/datePicker.doc/CDatePicker.doc.md b/_cursor.ai/forms.doc/datePicker.doc/CDatePicker.doc.md
new file mode 100644
index 0000000..2e6991d
--- /dev/null
+++ b/_cursor.ai/forms.doc/datePicker.doc/CDatePicker.doc.md
@@ -0,0 +1,112 @@
+# CDatePicker 日期选择组件
+
+## 功能说明
+
+CDatePicker 是一个日期选择组件,用于在表单中选择日期或日期范围。组件支持三种选择模式:日期选择、日期时间选择和日期范围选择。
+
+## 引用方式
+
+```js
+import { CDatePicker } from '@components/forms/datePicker';
+```
+
+## 组件参数
+
+- `itemRes` (Object,必填):表单数据资源对象,表单组件内部机制专用
+- `mode` (String,可选):日期时间选择器模式,可选值有 date、dateTime、dateRange,默认为 date
+- `placeholder` (String,可选):输入框占位提示文本
+- `limitStart` (String,可选):可选日期的开始日期,格式为 YYYY-MM-DD
+- `limitEnd` (String,可选):可选日期的结束日期,格式为 YYYY-MM-DD
+- `fields` (String,可选):日期选择粒度,可选值有 year、month、day,默认为 day
+- `readOnly` (Boolean,可选):只读模式,默认为 false
+- `allowClear` (Boolean,可选):是否允许清除已选值,默认为 false
+
+## 使用示例
+
+### 基础用法(日期选择模式)
+
+```html
+<template>
+  <CForm :form="form">
+    <CFormItem name="birthday" label="出生日期">
+      <CDatePicker placeholder="请选择出生日期" />
+    </CFormItem>
+  </CForm>
+</template>
+
+<script>
+import { CForm, CFormItem } from '@components/forms/form';
+import { CDatePicker } from '@components/forms/datePicker';
+
+export default {
+  components: {
+    CForm,
+    CFormItem,
+    CDatePicker
+  },
+  data() {
+    return {
+      form: {
+        birthday: ''
+      }
+    };
+  }
+};
+</script>
+```
+
+### 日期时间选择模式
+
+```html
+<CFormItem name="meetingTime" label="会议时间">
+  <CDatePicker 
+    mode="dateTime" 
+    placeholder="请选择会议时间" 
+  />
+</CFormItem>
+```
+
+### 日期范围选择模式
+
+```html
+<CFormItem name="vacationPeriod" label="休假时间">
+  <CDatePicker 
+    mode="dateRange" 
+    placeholder="请选择休假时间段" 
+  />
+</CFormItem>
+```
+
+### 限制可选日期范围
+
+```html
+<CFormItem name="appointmentDate" label="预约日期">
+  <CDatePicker 
+    limitStart="2023-01-01" 
+    limitEnd="2023-12-31" 
+    placeholder="请选择预约日期" 
+  />
+</CFormItem>
+```
+
+### 允许清除已选值
+
+```html
+<CFormItem name="deadline" label="截止日期">
+  <CDatePicker 
+    :allowClear="true" 
+    placeholder="请选择截止日期" 
+  />
+</CFormItem>
+```
+
+## 注意事项
+
+1. 不同的 `mode` 值对应不同的日期选择交互方式:
+   - `date`:选择单个日期,使用系统日期选择器
+   - `dateTime`:选择日期和时间,使用自定义的日期时间选择器
+   - `dateRange`:选择日期范围,使用自定义的日期范围选择器
+2. 当设置 `allowClear` 为 true 时,已选择日期后会显示清除图标,点击可清除已选值
+3. `limitStart` 和 `limitEnd` 参数仅在 `mode` 为 date 时生效
+4. 组件默认的可选日期范围是当前年份的前后 30 年
+5. 在只读模式下,日期选择器将不可操作 
\ No newline at end of file
diff --git a/_cursor.ai/forms.doc/form.doc/CForm.doc.md b/_cursor.ai/forms.doc/form.doc/CForm.doc.md
new file mode 100644
index 0000000..3280a71
--- /dev/null
+++ b/_cursor.ai/forms.doc/form.doc/CForm.doc.md
@@ -0,0 +1,142 @@
+# CForm 表单组件
+
+## 功能说明
+
+CForm 是一个表单容器组件,用于管理表单数据、处理表单验证和提交。组件支持自动滚动到错误位置,提供了表单项变化回调和表单完成回调。
+
+## 引用方式
+
+```js
+import { CForm } from '@components/forms/form';
+```
+
+## 组件参数
+
+- `formData` (Object,必填):表单数据对象,用于存储表单各项的值
+- `autoScrollToError` (String,可选):是否自动滚动到错误位置,可选值有 on、off,默认为 off
+- `onChange` (Function,可选):表单项变化的回调函数,参数为变化的表单项数据
+- `onFinish` (Function,可选):表单完成的回调函数,仅在提交且通过表单验证后调用,参数为整个表单数据
+
+## 实例方法
+
+- `$submit`:手动触发表单提交,会执行表单验证
+- `$preVerify`:提前验证指定的表单项,参数为表单项名称数组和回调函数
+- `$setErrors`:直接设置表单错误,参数为错误对象,格式为 `{字段名: 错误信息}`
+- `$setScrollTop`:设置滚动位置,参数为滚动的 top 值
+
+## 使用示例
+
+### 基础用法
+
+```html
+<template>
+  <CForm 
+    :form="form" 
+    :onFinish="handleFinish"
+  >
+    <CFormItem name="username" label="用户名" required>
+      <CInput type="text" placeholder="请输入用户名" />
+    </CFormItem>
+    <CFormItem name="password" label="密码" required>
+      <CInput type="password" placeholder="请输入密码" />
+    </CFormItem>
+    <CFormSubmit text="提交" />
+  </CForm>
+</template>
+
+<script>
+import { CForm, CFormItem, CFormSubmit } from '@components/forms/form';
+import { CInput } from '@components/forms/input';
+
+export default {
+  components: {
+    CForm,
+    CFormItem,
+    CFormSubmit,
+    CInput
+  },
+  data() {
+    return {
+      form: {
+        username: '',
+        password: ''
+      }
+    };
+  },
+  methods: {
+    handleFinish() {
+      // 表单验证通过后的处理逻辑
+      console.log('表单提交成功', this.form);
+      // 发送请求等操作
+    }
+  }
+};
+</script>
+```
+
+### 自动滚动到错误位置
+
+```html
+<CForm 
+  :form="form" 
+  autoScrollToError="on" 
+  :onFinish="handleFinish"
+>
+  <!-- 表单项 -->
+</CForm>
+```
+
+### 手动提交表单
+
+```js
+// 在组件方法中调用
+submitForm() {
+  this.$refs.form.$submit();
+}
+```
+
+```html
+<CForm 
+  ref="form" 
+  :form="form" 
+  :onFinish="handleFinish"
+>
+  <!-- 表单项 -->
+  <button @tap="submitForm">提交</button>
+</CForm>
+```
+
+### 提前验证指定表单项
+
+```js
+// 在组件方法中调用
+validateFields() {
+  this.$refs.form.$preVerify(['username', 'email'], (passed) => {
+    if (passed) {
+      console.log('验证通过');
+    } else {
+      console.log('验证失败');
+    }
+  });
+}
+```
+
+### 直接设置表单错误
+
+```js
+// 在组件方法中调用
+setFormErrors() {
+  this.$refs.form.$setErrors({
+    username: '用户名已存在',
+    email: '邮箱格式不正确'
+  });
+}
+```
+
+## 注意事项
+
+1. CForm 组件需要与 CFormItem 组件配合使用,用于包装表单项
+2. 表单数据对象(formData)的属性名应与 CFormItem 的 name 属性对应
+3. 表单验证失败时会自动显示错误提示,并根据 autoScrollToError 设置决定是否滚动到错误位置
+4. 表单验证通过后才会调用 onFinish 回调函数
+5. 可以通过实例方法手动控制表单的提交、验证和错误设置 
\ No newline at end of file
diff --git a/_cursor.ai/forms.doc/form.doc/CFormAgreement.doc.md b/_cursor.ai/forms.doc/form.doc/CFormAgreement.doc.md
new file mode 100644
index 0000000..d5164dd
--- /dev/null
+++ b/_cursor.ai/forms.doc/form.doc/CFormAgreement.doc.md
@@ -0,0 +1,88 @@
+# CFormAgreement 表单协议组件
+
+## 功能说明
+
+CFormAgreement 是表单协议组件,用于在表单中提供用户协议勾选功能。组件包含勾选框和协议文本,点击协议文本可以打开浮层查看详细内容。
+
+## 引用方式
+
+```js
+import { CFormAgreement } from '@components/forms/form';
+```
+
+## 组件参数
+
+- `formRes` (Object,必填):表单资源对象,由 CForm 组件提供
+- `protocol` (String,必填):需要同意的协议名称,如"用户协议"、"隐私政策"等
+
+## 使用示例
+
+### 基础用法
+
+```html
+<template>
+  <CForm :form="form" :onFinish="handleFinish">
+    <CFormItem name="username" label="用户名" required>
+      <CInput type="text" placeholder="请输入用户名" />
+    </CFormItem>
+    
+    <CFormAgreement :formRes="formRes" protocol="《用户协议》">
+      <view class="protocol-content">
+        <!-- 协议详细内容 -->
+        <view class="paragraph">
+          欢迎您使用我们的服务。在使用我们的服务前,请您仔细阅读以下条款...
+        </view>
+        <view class="paragraph">
+          1. 服务条款的确认和接纳...
+        </view>
+        <view class="paragraph">
+          2. 用户信息保护...
+        </view>
+        <!-- 更多协议内容 -->
+      </view>
+    </CFormAgreement>
+    
+    <CFormSubmit>提交</CFormSubmit>
+  </CForm>
+</template>
+
+<script>
+import { CForm, CFormItem, CFormSubmit, CFormAgreement } from '@components/forms/form';
+import { CInput } from '@components/forms/input';
+
+export default {
+  components: {
+    CForm,
+    CFormItem,
+    CFormSubmit,
+    CFormAgreement,
+    CInput
+  },
+  data() {
+    return {
+      form: {
+        username: ''
+      },
+      formRes: null
+    };
+  },
+  methods: {
+    handleFinish() {
+      console.log('表单提交成功', this.form);
+    }
+  },
+  mounted() {
+    // 获取表单资源对象
+    this.formRes = this.$refs.form.formRes;
+  }
+};
+</script>
+```
+
+## 注意事项
+
+1. CFormAgreement 组件需要在 CForm 组件内使用,并且需要传入表单资源对象 formRes
+2. 组件会在表单验证时检查是否已勾选协议,未勾选时会阻止表单提交并显示提示信息
+3. 协议详细内容通过默认插槽提供,会在点击协议名称时在浮层中显示
+4. 组件内部使用了特殊的字段名 `$agreement` 进行验证,不会影响表单数据
+5. 为了获取 formRes 对象,需要在组件挂载后从 CForm 组件实例中获取 
\ No newline at end of file
diff --git a/_cursor.ai/forms.doc/form.doc/CFormItem.doc.md b/_cursor.ai/forms.doc/form.doc/CFormItem.doc.md
new file mode 100644
index 0000000..0fbb509
--- /dev/null
+++ b/_cursor.ai/forms.doc/form.doc/CFormItem.doc.md
@@ -0,0 +1,100 @@
+# CFormItem 表单项组件
+
+## 功能说明
+
+CFormItem 是表单项容器组件,用于包装各种表单控件,提供表单项的标签、验证规则和错误状态管理。组件基于 async-validator 库实现表单验证功能。
+
+## 引用方式
+
+```js
+import { CFormItem } from '@components/forms/form';
+```
+
+## 组件参数
+
+- `formRes` (Object,必填):表单资源对象,由 CForm 组件提供
+- `name` (String,必填):表单项字段键名,对应表单数据对象中的属性名
+- `label` (String,可选):表单项中文名,用于显示和错误提示
+- `required` (Boolean,可选):表单项是否必填
+- `rules` (Array,可选):表单项验证规则,基于 async-validator 的规则配置
+- `disabled` (Boolean,可选):表单项是否禁用
+
+## 使用示例
+
+### 基础用法
+
+```html
+<template>
+  <CForm :form="form">
+    <CFormItem name="username" label="用户名" required>
+      <CInput type="text" placeholder="请输入用户名" />
+    </CFormItem>
+  </CForm>
+</template>
+
+<script>
+import { CForm, CFormItem } from '@components/forms/form';
+import { CInput } from '@components/forms/input';
+
+export default {
+  components: {
+    CForm,
+    CFormItem,
+    CInput
+  },
+  data() {
+    return {
+      form: {
+        username: ''
+      }
+    };
+  }
+};
+</script>
+```
+
+### 使用验证规则
+
+```html
+<CFormItem 
+  name="email" 
+  label="邮箱" 
+  :rules="[
+    { type: 'email', message: '请输入有效的邮箱地址' }
+  ]"
+>
+  <CInput type="text" placeholder="请输入邮箱" />
+</CFormItem>
+```
+
+### 复合验证规则
+
+```html
+<CFormItem 
+  name="password" 
+  label="密码" 
+  :rules="[
+    { required: true, message: '请输入密码' },
+    { type: 'string', min: 6, message: '密码长度不能少于6个字符' },
+    { pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[^]{6,20}$/, message: '密码必须包含大小写字母和数字' }
+  ]"
+>
+  <CInput type="password" placeholder="请输入密码" />
+</CFormItem>
+```
+
+## 注意事项
+
+1. CFormItem 组件需要在 CForm 组件内使用,并通过 slot 接收表单控件
+2. 表单项的 name 属性必须与表单数据对象中的属性名对应
+3. 验证规则基于 async-validator 库,支持多种验证类型和自定义规则
+4. 常用的验证规则类型包括:
+   - `type`:类型验证,如 string、number、boolean、array、object、url、email 等
+   - `len`:长度验证,string 类型为字符串长度,number 类型为确定数字,array 类型为数组长度
+   - `max`:最大值验证,string 类型为最大长度,number 类型为最大值,array 类型为最大长度
+   - `min`:最小值验证,string 类型为最小长度,number 类型为最小值,array 类型为最小长度
+   - `pattern`:正则表达式匹配
+   - `required`:是否为必填字段
+   - `transform`:将字段值转换成目标值后进行校验
+   - `message`:错误信息,不设置时会通过模板自动生成
+5. 表单验证失败时,组件会自动显示错误状态,并在 5 秒后自动清除 
\ No newline at end of file
diff --git a/_cursor.ai/forms.doc/form.doc/CFormSubmit.doc.md b/_cursor.ai/forms.doc/form.doc/CFormSubmit.doc.md
new file mode 100644
index 0000000..57dfc2a
--- /dev/null
+++ b/_cursor.ai/forms.doc/form.doc/CFormSubmit.doc.md
@@ -0,0 +1,77 @@
+# CFormSubmit 表单提交按钮组件
+
+## 功能说明
+
+CFormSubmit 是表单提交按钮组件,用于在表单中提供提交按钮。组件支持固定在底部显示,并可以通过插槽自定义按钮文本。
+
+## 引用方式
+
+```js
+import { CFormSubmit } from '@components/forms/form';
+```
+
+## 组件参数
+
+- `fixed` (Boolean,可选):是否固定在底部显示,默认为 false
+
+## 使用示例
+
+### 基础用法
+
+```html
+<template>
+  <CForm :form="form" :onFinish="handleFinish">
+    <CFormItem name="username" label="用户名" required>
+      <CInput type="text" placeholder="请输入用户名" />
+    </CFormItem>
+    <CFormSubmit>提交</CFormSubmit>
+  </CForm>
+</template>
+
+<script>
+import { CForm, CFormItem, CFormSubmit } from '@components/forms/form';
+import { CInput } from '@components/forms/input';
+
+export default {
+  components: {
+    CForm,
+    CFormItem,
+    CFormSubmit,
+    CInput
+  },
+  data() {
+    return {
+      form: {
+        username: ''
+      }
+    };
+  },
+  methods: {
+    handleFinish() {
+      console.log('表单提交成功', this.form);
+    }
+  }
+};
+</script>
+```
+
+### 固定在底部显示
+
+```html
+<CFormSubmit :fixed="true">确认提交</CFormSubmit>
+```
+
+### 自定义按钮文本
+
+```html
+<CFormSubmit>
+  <view class="custom-btn-text">保存并继续</view>
+</CFormSubmit>
+```
+
+## 注意事项
+
+1. CFormSubmit 组件需要在 CForm 组件内使用,才能触发表单提交和验证
+2. 组件内部使用了 `form-type="submit"` 属性,可以自动触发表单提交
+3. 当设置 `fixed` 为 true 时,按钮会固定在页面底部显示,适用于长表单
+4. 可以通过默认插槽自定义按钮的文本内容,默认显示"提交" 
\ No newline at end of file
diff --git a/_cursor.ai/forms.doc/imagePicker.doc/CImagePicker.doc.md b/_cursor.ai/forms.doc/imagePicker.doc/CImagePicker.doc.md
new file mode 100644
index 0000000..4af8934
--- /dev/null
+++ b/_cursor.ai/forms.doc/imagePicker.doc/CImagePicker.doc.md
@@ -0,0 +1,80 @@
+# CImagePicker 图片选择器组件
+
+## 功能说明
+
+CImagePicker 是一个图片选择器组件,用于在表单中上传和管理图片。组件支持单张和多张图片上传,支持预览、删除等功能,并且可以限制上传图片的数量和大小。
+
+## 引用方式
+
+```js
+import { CImagePicker } from '@components/forms/imagePicker';
+```
+
+## 组件参数
+
+- `itemRes` (Object,必填):表单数据资源对象,表单组件内部机制专用
+- `maxCount` (Number,可选):最大上传图片数量,默认为 9
+- `maxSize` (Number,可选):单张图片最大大小,单位为 MB,默认为 5
+- `compress` (Boolean,可选):是否压缩图片,默认为 true
+- `quality` (Number,可选):图片压缩质量,取值范围 0-1,默认为 0.8
+- `placeholder` (String,可选):选择器占位提示文本
+- `readOnly` (Boolean,可选):只读模式,默认为 false
+
+## 使用示例
+
+### 基础用法
+
+```html
+<template>
+  <CForm :form="form">
+    <CFormItem name="photos" label="图片上传">
+      <CImagePicker 
+        :maxCount="3" 
+        placeholder="请上传图片" 
+      />
+    </CFormItem>
+  </CForm>
+</template>
+
+<script>
+import { CForm, CFormItem } from '@components/forms/form';
+import { CImagePicker } from '@components/forms/imagePicker';
+
+export default {
+  components: {
+    CForm,
+    CFormItem,
+    CImagePicker
+  },
+  data() {
+    return {
+      form: {
+        photos: []
+      }
+    };
+  }
+};
+</script>
+```
+
+### 自定义配置
+
+```html
+<CFormItem name="certificate" label="证书照片">
+  <CImagePicker 
+    :maxCount="1" 
+    :maxSize="2" 
+    :compress="true" 
+    :quality="0.6" 
+    placeholder="请上传证书照片" 
+  />
+</CFormItem>
+```
+
+## 注意事项
+
+1. 组件会自动处理图片上传,支持压缩和预览功能
+2. 上传的图片会被转换为 base64 格式存储在表单数据中
+3. 当设置 `maxCount` 为 1 时,组件会以单图模式运行
+4. 建议根据实际需求设置合适的 `maxSize` 和压缩参数
+5. 在只读模式下,只能查看已上传的图片,无法进行上传和删除操作 
\ No newline at end of file
diff --git a/_cursor.ai/forms.doc/input.doc/CInput.doc.md b/_cursor.ai/forms.doc/input.doc/CInput.doc.md
new file mode 100644
index 0000000..a6c1dae
--- /dev/null
+++ b/_cursor.ai/forms.doc/input.doc/CInput.doc.md
@@ -0,0 +1,76 @@
+# CInput 文本输入框组件
+
+## 功能说明
+
+CInput 是一个基础的文本输入框组件,用于在表单中收集用户的文本输入。组件支持多种输入类型,可以设置占位提示文本,并且支持显示单位标识。
+
+## 引用方式
+
+```js
+import { CInput } from '@components/forms/input';
+```
+
+## 组件参数
+
+- `itemRes` (Object,必填):表单数据资源对象,表单组件内部机制专用
+- `type` (String,可选):输入框类型,可选值有 text、number、password、phone、idcard、digit
+- `placeholder` (String,可选):输入框占位提示文本
+- `unit` (String,可选):输入框单位,设置后会在输入框右侧显示单位文本
+- `readOnly` (Boolean,可选):只读模式,默认为 false
+
+## 使用示例
+
+### 基础用法
+
+```html
+<template>
+  <CForm :form="form">
+    <CFormItem name="username" label="用户名">
+      <CInput type="text" placeholder="请输入用户名" />
+    </CFormItem>
+  </CForm>
+</template>
+
+<script>
+import { CForm, CFormItem } from '@components/forms/form';
+import { CInput } from '@components/forms/input';
+
+export default {
+  components: {
+    CForm,
+    CFormItem,
+    CInput
+  },
+  data() {
+    return {
+      form: {
+        username: ''
+      }
+    };
+  }
+};
+</script>
+```
+
+### 带单位的输入框
+
+```html
+<CFormItem name="weight" label="重量">
+  <CInput type="digit" placeholder="请输入重量" unit="kg" />
+</CFormItem>
+```
+
+### 只读模式
+
+```html
+<CFormItem name="id" label="ID">
+  <CInput type="text" readOnly />
+</CFormItem>
+```
+
+## 注意事项
+
+1. CInput 组件通常需要配合 CForm 和 CFormItem 组件一起使用
+2. 组件会自动处理输入值,去除首尾空格和换行符
+3. 当设置 `unit` 属性时,会在输入框右侧显示单位文本
+4. 在只读模式下,输入框将不可编辑 
\ No newline at end of file
diff --git a/_cursor.ai/forms.doc/input.doc/CInputExpressCode.doc.md b/_cursor.ai/forms.doc/input.doc/CInputExpressCode.doc.md
new file mode 100644
index 0000000..525889a
--- /dev/null
+++ b/_cursor.ai/forms.doc/input.doc/CInputExpressCode.doc.md
@@ -0,0 +1,58 @@
+# CInputExpressCode 快递单号输入框组件
+
+## 功能说明
+
+CInputExpressCode 是一个快递单号输入框组件,集成了文本输入框和扫码功能。用户可以通过点击扫码图标调用设备的扫码功能,将扫描的快递单号自动填入输入框中。组件会验证扫描结果是否符合快递单号格式。
+
+## 引用方式
+
+```js
+import { CInputExpressCode } from '@components/forms/input';
+```
+
+## 组件参数
+
+- `itemRes` (Object,必填):表单数据资源对象,表单组件内部机制专用
+- `placeholder` (String,可选):输入框占位提示文本
+
+## 使用示例
+
+### 基础用法
+
+```html
+<template>
+  <CForm :form="form">
+    <CFormItem name="expressCode" label="快递单号">
+      <CInputExpressCode placeholder="请输入或扫描快递单号" />
+    </CFormItem>
+  </CForm>
+</template>
+
+<script>
+import { CForm, CFormItem } from '@components/forms/form';
+import { CInputExpressCode } from '@components/forms/input';
+
+export default {
+  components: {
+    CForm,
+    CFormItem,
+    CInputExpressCode
+  },
+  data() {
+    return {
+      form: {
+        expressCode: ''
+      }
+    };
+  }
+};
+</script>
+```
+
+## 注意事项
+
+1. 扫码功能仅在小程序环境中可用,在其他环境中不会显示扫码图标
+2. 组件会验证扫描结果是否符合快递单号格式(只允许数字和字母),不符合时会提示"请扫描快递单号!"
+3. 扫码过程中,扫码图标会显示加载状态
+4. 扫码取消或失败时,会显示相应的提示信息
+5. 此组件主要针对快递单号的输入场景进行了优化,适用于物流、快递相关的业务场景 
\ No newline at end of file
diff --git a/_cursor.ai/forms.doc/input.doc/CInputPhoneCode.doc.md b/_cursor.ai/forms.doc/input.doc/CInputPhoneCode.doc.md
new file mode 100644
index 0000000..d7443a4
--- /dev/null
+++ b/_cursor.ai/forms.doc/input.doc/CInputPhoneCode.doc.md
@@ -0,0 +1,109 @@
+# CInputPhoneCode 手机验证码输入框组件
+
+## 功能说明
+
+CInputPhoneCode 是一个手机验证码输入框组件,集成了验证码输入框和获取验证码按钮。按钮具有倒计时功能,防止用户频繁获取验证码。
+
+## 引用方式
+
+```js
+import { CInputPhoneCode } from '@components/forms/input';
+```
+
+## 组件参数
+
+- `itemRes` (Object,必填):表单数据资源对象,表单组件内部机制专用
+- `placeholder` (String,可选):输入框占位提示文本
+- `autoStart` (Boolean,可选):验证码计时器开始方式,默认为 true
+  - `true`:点击按钮后立即自动开始倒计时
+  - `false`:后台返回成功时才开始倒计时
+- `onCallPhoneCode` (Function,必填):发送请求,通知后端给手机发送验证码的回调函数
+- `onRefreshCD` (Function,可选):刷新倒计时后,通知父组件更新图片地址的回调函数
+
+## 实例方法
+
+- `$resetHolding`:重置按钮的禁用状态,使按钮可以再次点击
+
+## 使用示例
+
+### 基础用法
+
+```html
+<template>
+  <CForm :form="form">
+    <CFormItem name="phone" label="手机号">
+      <CInput type="phone" placeholder="请输入手机号" />
+    </CFormItem>
+    <CFormItem name="code" label="验证码">
+      <CInputPhoneCode 
+        placeholder="请输入验证码" 
+        :onCallPhoneCode="handleSendCode" 
+      />
+    </CFormItem>
+  </CForm>
+</template>
+
+<script>
+import { CForm, CFormItem } from '@components/forms/form';
+import { CInput, CInputPhoneCode } from '@components/forms/input';
+
+export default {
+  components: {
+    CForm,
+    CFormItem,
+    CInput,
+    CInputPhoneCode
+  },
+  data() {
+    return {
+      form: {
+        phone: '',
+        code: ''
+      }
+    };
+  },
+  methods: {
+    handleSendCode(callback) {
+      // 验证手机号
+      if (!this.form.phone) {
+        this.$toast('请先输入手机号');
+        return;
+      }
+      
+      // 发送验证码请求
+      this.$api.sendSmsCode({
+        phone: this.form.phone
+      }).then(() => {
+        this.$toast('验证码已发送');
+        callback(); // 如果 autoStart 为 false,需要调用回调函数开始倒计时
+      }).catch(err => {
+        this.$toast(err.message || '发送失败');
+      });
+    }
+  }
+};
+</script>
+```
+
+### 手动控制倒计时
+
+```html
+<CInputPhoneCode 
+  placeholder="请输入验证码" 
+  :autoStart="false"
+  :onCallPhoneCode="handleSendCode" 
+  ref="phoneCode"
+/>
+```
+
+```js
+// 在需要重置倒计时的地方调用
+this.$refs.phoneCode.$resetHolding();
+```
+
+## 注意事项
+
+1. 组件内部包含一个 60 秒的倒计时,在倒计时结束前,获取验证码按钮将处于禁用状态
+2. 当 `autoStart` 设置为 false 时,需要在 `onCallPhoneCode` 回调函数中手动调用传入的回调函数来开始倒计时
+3. 通常需要在 `onCallPhoneCode` 回调中验证手机号是否有效,再决定是否发送验证码请求
+4. 可以通过 `$resetHolding` 方法手动重置按钮状态,适用于特殊情况下需要提前结束倒计时的场景 
\ No newline at end of file
diff --git a/_cursor.ai/forms.doc/input.doc/CInputScanCode.doc.md b/_cursor.ai/forms.doc/input.doc/CInputScanCode.doc.md
new file mode 100644
index 0000000..b77880a
--- /dev/null
+++ b/_cursor.ai/forms.doc/input.doc/CInputScanCode.doc.md
@@ -0,0 +1,126 @@
+# CInputScanCode 扫码输入框组件
+
+## 功能说明
+
+CInputScanCode 是一个扫码输入框组件,集成了文本输入框和扫码按钮。用户可以通过点击扫码按钮调用设备的扫码功能,将扫描结果自动填入输入框中。
+
+## 引用方式
+
+```js
+import { CInputScanCode } from '@components/forms/input';
+```
+
+## 组件参数
+
+- `itemRes` (Object,必填):表单数据资源对象,表单组件内部机制专用
+- `placeholder` (String,可选):输入框占位提示文本
+- `readOnly` (Boolean,可选):只读模式,默认为 false,设置为 true 时扫码按钮将被禁用
+- `onScaning` (Function,可选):由业务层调用 app 的扫码功能时的回调函数,主要用于非小程序环境
+- `onBlur` (Function,可选):输入框失去焦点时的回调函数
+
+## 使用示例
+
+### 基础用法
+
+```html
+<template>
+  <CForm :form="form">
+    <CFormItem name="barcode" label="条形码">
+      <CInputScanCode placeholder="请扫描条形码" />
+    </CFormItem>
+  </CForm>
+</template>
+
+<script>
+import { CForm, CFormItem } from '@components/forms/form';
+import { CInputScanCode } from '@components/forms/input';
+
+export default {
+  components: {
+    CForm,
+    CFormItem,
+    CInputScanCode
+  },
+  data() {
+    return {
+      form: {
+        barcode: ''
+      }
+    };
+  }
+};
+</script>
+```
+
+### 在 App 中使用(非小程序环境)
+
+```html
+<template>
+  <CForm :form="form">
+    <CFormItem name="barcode" label="条形码">
+      <CInputScanCode 
+        placeholder="请扫描条形码" 
+        :onScaning="handleScaning" 
+      />
+    </CFormItem>
+  </CForm>
+</template>
+
+<script>
+import { CForm, CFormItem } from '@components/forms/form';
+import { CInputScanCode } from '@components/forms/input';
+
+export default {
+  components: {
+    CForm,
+    CFormItem,
+    CInputScanCode
+  },
+  data() {
+    return {
+      form: {
+        barcode: ''
+      }
+    };
+  },
+  methods: {
+    handleScaning(callback) {
+      // 调用 App 原生的扫码功能
+      // 示例:通过 JSBridge 调用原生扫码
+      if (window.JSBridge) {
+        window.JSBridge.callNative('scanBarcode', {}, (result) => {
+          if (result && result.code) {
+            callback(result.code);
+          } else {
+            this.$toast('扫码失败');
+            callback(null);
+          }
+        });
+      } else {
+        this.$toast('当前环境不支持扫码');
+        callback(null);
+      }
+    }
+  }
+};
+</script>
+```
+
+### 只读模式
+
+```html
+<CFormItem name="barcode" label="条形码">
+  <CInputScanCode placeholder="请扫描条形码" :readOnly="true" />
+</CFormItem>
+```
+
+## 注意事项
+
+1. 组件会根据运行环境自动选择扫码方式:
+   - 在小程序环境中,使用 Taro.scanCode API
+   - 在 H5 环境中的微信浏览器内,也使用 Taro.scanCode API
+   - 在其他浏览器环境中,通过 onScaning 回调函数调用 App 原生的扫码功能
+2. 扫码过程中,扫码按钮会显示加载状态
+3. 扫码取消或失败时,会显示相应的提示信息
+4. 在只读模式下,扫码按钮将被禁用
+5. 使用此组件时,需要确保应用有相应的扫码权限 
\ No newline at end of file
diff --git a/_cursor.ai/forms.doc/numberStep.doc/CNumberStep.doc.md b/_cursor.ai/forms.doc/numberStep.doc/CNumberStep.doc.md
new file mode 100644
index 0000000..3ef361c
--- /dev/null
+++ b/_cursor.ai/forms.doc/numberStep.doc/CNumberStep.doc.md
@@ -0,0 +1,94 @@
+# CNumberStep 数字步进器组件
+
+## 功能说明
+
+CNumberStep 是一个数字步进器组件,用于在表单中输入数字并通过步进按钮增减数值。组件支持设置数值范围、步长、奇偶修正和单位显示。
+
+## 引用方式
+
+```js
+import { CNumberStep } from '@components/forms/numberStep';
+```
+
+## 组件参数
+
+- `itemRes` (Object,必填):表单数据资源对象,表单组件内部机制专用
+- `placeholder` (String,可选):输入框占位提示文本
+- `range` (Array,可选):取值范围,格式为 [最小值, 最大值],默认为 [0, 100]
+- `step` (Number,可选):步长,即每次点击增减按钮改变的数值,默认为 1
+- `correct` (String,可选):奇偶修正模式,可选值有 odd(奇数)、even(偶数),默认为空
+- `unit` (String,可选):数值单位,显示在数字输入框右侧
+
+## 使用示例
+
+### 基础用法
+
+```html
+<template>
+  <CForm :form="form">
+    <CFormItem name="quantity" label="数量">
+      <CNumberStep />
+    </CFormItem>
+  </CForm>
+</template>
+
+<script>
+import { CForm, CFormItem } from '@components/forms/form';
+import { CNumberStep } from '@components/forms/numberStep';
+
+export default {
+  components: {
+    CForm,
+    CFormItem,
+    CNumberStep
+  },
+  data() {
+    return {
+      form: {
+        quantity: 1
+      }
+    };
+  }
+};
+</script>
+```
+
+### 设置取值范围和步长
+
+```html
+<CFormItem name="age" label="年龄">
+  <CNumberStep :range="[18, 60]" :step="1" />
+</CFormItem>
+```
+
+### 奇偶修正模式
+
+```html
+<!-- 只允许选择奇数 -->
+<CFormItem name="oddNumber" label="奇数">
+  <CNumberStep correct="odd" />
+</CFormItem>
+
+<!-- 只允许选择偶数 -->
+<CFormItem name="evenNumber" label="偶数">
+  <CNumberStep correct="even" />
+</CFormItem>
+```
+
+### 显示单位
+
+```html
+<CFormItem name="weight" label="重量">
+  <CNumberStep :range="[0, 200]" :step="0.5" unit="kg" />
+</CFormItem>
+```
+
+## 注意事项
+
+1. CNumberStep 组件通常需要配合 CForm 和 CFormItem 组件一起使用
+2. 当设置 `correct` 参数时,组件会自动修正输入值,确保符合奇数或偶数的要求
+3. 奇偶修正规则:
+   - 当输入值不符合奇偶要求时,如果是增加操作,会再增加 1;如果是减少操作,会再减少 1
+   - 如果修正后的值超出范围,则会向相反方向修正
+4. 组件支持直接输入数字,但会自动限制在设定的范围内
+5. 当输入框为空时,点击步进按钮会将值设置为最小值 
\ No newline at end of file
diff --git a/_cursor.ai/forms.doc/numberValve.doc/CNumberValve.doc.md b/_cursor.ai/forms.doc/numberValve.doc/CNumberValve.doc.md
new file mode 100644
index 0000000..347c69f
--- /dev/null
+++ b/_cursor.ai/forms.doc/numberValve.doc/CNumberValve.doc.md
@@ -0,0 +1,79 @@
+# CNumberValve 数值滑块组件
+
+## 功能说明
+
+CNumberValve 是一个数值滑块组件,用于在表单中通过滑块选择数值。组件提供了滑动条和增减按钮两种方式来调整数值,并支持设置数值范围、步长和单位显示。
+
+## 引用方式
+
+```js
+import { CNumberValve } from '@components/forms/numberValve';
+```
+
+## 组件参数
+
+- `itemRes` (Object,必填):表单数据资源对象,表单组件内部机制专用
+- `placeholder` (String,可选):输入框占位提示文本
+- `range` (Array,可选):取值范围,格式为 [最小值, 最大值],默认为 [0, 100]
+- `step` (Number,可选):步长,即每次调整改变的最小数值单位,默认为 1
+- `unit` (String,可选):数值单位,仅用于显示,不影响实际值
+
+## 使用示例
+
+### 基础用法
+
+```html
+<template>
+    <CForm :form="form">
+        <CFormItem name="volume" label="音量">
+            <CNumberValve placeholder="请选择音量" />
+        </CFormItem>
+    </CForm>
+</template>
+
+<script>
+import { CForm, CFormItem } from '@components/forms/form';
+import { CNumberValve } from '@components/forms/numberValve';
+
+export default {
+    components: {
+        CForm,
+        CFormItem,
+        CNumberValve,
+    },
+    data() {
+        return {
+            form: {
+                volume: 50,
+            },
+        };
+    },
+};
+</script>
+```
+
+### 设置取值范围和步长
+
+```html
+<CFormItem name="temperature" label="温度">
+    <CNumberValve :range="[16, 32]" :step="0.5" placeholder="请选择温度" />
+</CFormItem>
+```
+
+### 显示单位
+
+```html
+<CFormItem name="distance" label="距离">
+    <CNumberValve :range="[0, 1000]" :step="10" unit="米" placeholder="请选择距离" />
+</CFormItem>
+```
+
+## 注意事项
+
+1. CNumberValve 组件通常需要配合 CForm 和 CFormItem 组件一起使用
+2. 点击组件会弹出滑块选择浮层,用户可以通过以下方式调整数值:
+    - 拖动滑块:直接拖动滑块到所需位置
+    - 点击按钮:点击"减小"或"增加"按钮按步长调整数值
+3. 组件会根据设定的步长自动对数值进行修正,确保数值是步长的整数倍
+4. 当设置了 `unit` 参数时,单位文本会显示在表单项的值后面,但不会影响实际存储的数值
+5. 组件会自动限制数值在设定的范围内
diff --git a/_cursor.ai/forms.doc/select.doc/CJumpSelect.doc.md b/_cursor.ai/forms.doc/select.doc/CJumpSelect.doc.md
new file mode 100644
index 0000000..650b188
--- /dev/null
+++ b/_cursor.ai/forms.doc/select.doc/CJumpSelect.doc.md
@@ -0,0 +1,105 @@
+# CJumpSelect 跳转选择组件
+
+## 功能说明
+
+CJumpSelect 是一个跳转选择组件,用于在表单中提供跨页面的选择功能。点击组件会触发回调函数,开发者可以在回调中实现跳转到选择页面的逻辑,并通过回调接收选择结果。
+
+## 引用方式
+
+```js
+import { CJumpSelect } from '@components/forms/select';
+```
+
+## 组件参数
+
+- `itemRes` (Object,必填):表单数据资源对象,表单组件内部机制专用
+- `placeholder` (String,可选):输入框占位提示文本
+- `onPageSelectCall` (Function,必填):跨页选择模式的回调函数,用于处理页面跳转和接收选择结果
+- `readOnly` (Boolean,可选):只读模式,默认为 false
+
+## 使用示例
+
+### 基础用法
+
+```html
+<template>
+  <CForm :form="form">
+    <CFormItem name="department" label="部门">
+      <CJumpSelect 
+        placeholder="请选择部门" 
+        :onPageSelectCall="handleDepartmentSelect" 
+      />
+    </CFormItem>
+  </CForm>
+</template>
+
+<script>
+import { CForm, CFormItem } from '@components/forms/form';
+import { CJumpSelect } from '@components/forms/select';
+
+export default {
+  components: {
+    CForm,
+    CFormItem,
+    CJumpSelect
+  },
+  data() {
+    return {
+      form: {
+        department: ''
+      },
+      // 保存回调函数
+      selectCallback: null
+    };
+  },
+  methods: {
+    handleDepartmentSelect(callback) {
+      if (callback === null) {
+        // 组件销毁时会传入 null,清除回调
+        this.selectCallback = null;
+        return;
+      }
+      
+      // 保存回调函数
+      this.selectCallback = callback;
+      
+      // 跳转到部门选择页面
+      this.$router.push({
+        path: '/pages/department-selector/index'
+      });
+    },
+    
+    // 在部门选择页面选择完成后调用
+    onDepartmentSelected(department) {
+      if (this.selectCallback) {
+        // 调用回调函数,传递选择结果
+        this.selectCallback({
+          name: department.name,
+          value: department.id
+        });
+      }
+    }
+  }
+};
+</script>
+```
+
+### 只读模式
+
+```html
+<CFormItem name="department" label="部门">
+  <CJumpSelect 
+    placeholder="请选择部门" 
+    :onPageSelectCall="handleDepartmentSelect" 
+    :readOnly="true" 
+  />
+</CFormItem>
+```
+
+## 注意事项
+
+1. CJumpSelect 组件主要用于需要跳转到其他页面进行选择的场景,如选择复杂的组织架构、多级分类等
+2. `onPageSelectCall` 回调函数会在组件点击时被调用,并传入一个回调函数,用于接收选择结果
+3. 选择结果应包含 `name` 和 `value` 两个属性,分别表示选项的显示名称和值
+4. 组件在销毁时会调用 `onPageSelectCall(null)`,开发者应在回调函数中处理这种情况,清除相关状态
+5. 在只读模式下,下拉箭头图标将被隐藏,且无法触发选择操作 
\ No newline at end of file
diff --git a/_cursor.ai/forms.doc/select.doc/CSelect.doc.md b/_cursor.ai/forms.doc/select.doc/CSelect.doc.md
new file mode 100644
index 0000000..42ab6cf
--- /dev/null
+++ b/_cursor.ai/forms.doc/select.doc/CSelect.doc.md
@@ -0,0 +1,132 @@
+# CSelect 下拉选择组件
+
+## 功能说明
+
+CSelect 是一个下拉选择组件,用于在表单中提供选项选择功能。组件支持两种选择模式:下拉选择模式和跳转页面选择模式。
+
+## 引用方式
+
+```js
+import { CSelect } from '@components/forms/select';
+```
+
+## 组件参数
+
+- `itemRes` (Object,必填):表单数据资源对象,表单组件内部机制专用
+- `options` (Array,必填):选择菜单选项数组,每个选项应包含 name 和 value/id 属性
+- `placeholder` (String,可选):输入框占位提示文本
+- `readOnly` (Boolean,可选):只读模式,默认为 false
+- `selectByPage` (String,可选):开启选择菜单跳转选择页面模式,值为 'on'
+- `onOpenSelectorPage` (Function,可选):页面跳转模式下,发起选择的回调函数
+
+## 使用示例
+
+### 基础用法(下拉选择模式)
+
+```html
+<template>
+  <CForm :form="form">
+    <CFormItem name="gender" label="性别">
+      <CSelect :options="genderOptions" placeholder="请选择性别" />
+    </CFormItem>
+  </CForm>
+</template>
+
+<script>
+import { CForm, CFormItem } from '@components/forms/form';
+import { CSelect } from '@components/forms/select';
+
+export default {
+  components: {
+    CForm,
+    CFormItem,
+    CSelect
+  },
+  data() {
+    return {
+      form: {
+        gender: ''
+      },
+      genderOptions: [
+        { name: '男', value: 'male' },
+        { name: '女', value: 'female' }
+      ]
+    };
+  }
+};
+</script>
+```
+
+### 跳转页面选择模式
+
+```html
+<template>
+  <CForm :form="form">
+    <CFormItem name="city" label="城市">
+      <CSelect 
+        selectByPage="on" 
+        :onOpenSelectorPage="handleOpenCitySelector" 
+        placeholder="请选择城市" 
+      />
+    </CFormItem>
+  </CForm>
+</template>
+
+<script>
+import { CForm, CFormItem } from '@components/forms/form';
+import { CSelect } from '@components/forms/select';
+
+export default {
+  components: {
+    CForm,
+    CFormItem,
+    CSelect
+  },
+  data() {
+    return {
+      form: {
+        city: ''
+      }
+    };
+  },
+  methods: {
+    handleOpenCitySelector() {
+      // 跳转到城市选择页面
+      this.$router.push({
+        path: '/pages/city-selector/index',
+        query: {
+          callback: 'onCitySelected'
+        }
+      });
+      
+      // 在全局注册回调函数,用于接收选择结果
+      this.$app.onCitySelected = (city) => {
+        this.form.city = city.value;
+      };
+    }
+  }
+};
+</script>
+```
+
+### 只读模式
+
+```html
+<CFormItem name="gender" label="性别">
+  <CSelect 
+    :options="genderOptions" 
+    placeholder="请选择性别" 
+    :readOnly="true" 
+  />
+</CFormItem>
+```
+
+## 注意事项
+
+1. 组件支持两种选项数据格式:
+   - 使用 `value` 作为选项值:`{ name: '选项名', value: '选项值' }`
+   - 使用 `id` 作为选项值:`{ name: '选项名', id: '选项值' }`
+2. 当选项数量较多时,建议使用跳转页面选择模式(`selectByPage="on"`)
+3. 在跳转页面选择模式下,需要提供 `onOpenSelectorPage` 回调函数来处理页面跳转逻辑
+4. 注意:URL 跳转模式已废弃,不再支持直接传入 URL 字符串作为 `selectByPage` 的值
+5. 在只读模式下,下拉箭头图标将被隐藏,且无法触发选择操作 
\ No newline at end of file
diff --git a/_cursor.ai/forms.doc/switch.doc/CSwitch.doc.md b/_cursor.ai/forms.doc/switch.doc/CSwitch.doc.md
new file mode 100644
index 0000000..40f70ca
--- /dev/null
+++ b/_cursor.ai/forms.doc/switch.doc/CSwitch.doc.md
@@ -0,0 +1,65 @@
+# CSwitch 开关组件
+
+## 功能说明
+
+CSwitch 是一个开关组件,用于在表单中提供开关选择功能。组件基于 AtSwitch 封装,支持只读模式,并能显示必填和错误状态。
+
+## 引用方式
+
+```js
+import { CSwitch } from '@components/forms/switch';
+```
+
+## 组件参数
+
+- `itemRes` (Object,必填):表单数据资源对象,表单组件内部机制专用
+- `readOnly` (Boolean,可选):只读模式,默认为 false
+
+## 使用示例
+
+### 基础用法
+
+```html
+<template>
+  <CForm :form="form">
+    <CFormItem name="notification" label="接收通知">
+      <CSwitch />
+    </CFormItem>
+  </CForm>
+</template>
+
+<script>
+import { CForm, CFormItem } from '@components/forms/form';
+import { CSwitch } from '@components/forms/switch';
+
+export default {
+  components: {
+    CForm,
+    CFormItem,
+    CSwitch
+  },
+  data() {
+    return {
+      form: {
+        notification: false
+      }
+    };
+  }
+};
+</script>
+```
+
+### 只读模式
+
+```html
+<CFormItem name="notification" label="接收通知">
+  <CSwitch :readOnly="true" />
+</CFormItem>
+```
+
+## 注意事项
+
+1. CSwitch 组件的值为布尔类型,表示开关的开启或关闭状态
+2. 组件会根据表单项的 required 和 error 属性自动添加相应的样式
+3. 在只读模式下,开关将被禁用,无法切换状态
+4. 组件会自动将开关的状态同步到表单数据中 
\ No newline at end of file
diff --git a/_cursor.ai/forms.doc/switch.doc/CSwitchRadio.doc.md b/_cursor.ai/forms.doc/switch.doc/CSwitchRadio.doc.md
new file mode 100644
index 0000000..d464bc9
--- /dev/null
+++ b/_cursor.ai/forms.doc/switch.doc/CSwitchRadio.doc.md
@@ -0,0 +1,84 @@
+# CSwitchRadio 开关式单选组件
+
+## 功能说明
+
+CSwitchRadio 是一个开关式单选组件,用于在表单中提供是/否选择功能。组件基于 AtSwitch 封装,提供了两个选项(是/否)供用户选择,并支持自定义选项文本和对齐方式。
+
+## 引用方式
+
+```js
+import { CSwitchRadio } from '@components/forms/switch';
+```
+
+## 组件参数
+
+- `itemRes` (Object,必填):表单数据资源对象,表单组件内部机制专用
+- `checkAlign` (String,可选):选项对齐方式,可选值有 left、right,默认为 right
+- `checkedLabel` (String,可选):选中选项的文本,默认为"是"
+- `uncheckedLabel` (String,可选):未选中选项的文本,默认为"否"
+
+## 使用示例
+
+### 基础用法
+
+```html
+<template>
+  <CForm :form="form">
+    <CFormItem name="isAdult" label="是否成年">
+      <CSwitchRadio />
+    </CFormItem>
+  </CForm>
+</template>
+
+<script>
+import { CForm, CFormItem } from '@components/forms/form';
+import { CSwitchRadio } from '@components/forms/switch';
+
+export default {
+  components: {
+    CForm,
+    CFormItem,
+    CSwitchRadio
+  },
+  data() {
+    return {
+      form: {
+        isAdult: null
+      }
+    };
+  }
+};
+</script>
+```
+
+### 自定义选项文本
+
+```html
+<CFormItem name="hasExperience" label="是否有经验">
+  <CSwitchRadio 
+    checkedLabel="有" 
+    uncheckedLabel="无" 
+  />
+</CFormItem>
+```
+
+### 左对齐选项
+
+```html
+<CFormItem name="isMarried" label="婚姻状况">
+  <CSwitchRadio 
+    checkAlign="left" 
+    checkedLabel="已婚" 
+    uncheckedLabel="未婚" 
+  />
+</CFormItem>
+```
+
+## 注意事项
+
+1. CSwitchRadio 组件的值为布尔类型,表示选中的是第一个选项(true)还是第二个选项(false)
+2. 组件会根据表单项的 required 和 error 属性自动添加相应的样式
+3. 选项对齐方式(checkAlign)决定了选项图标的显示位置:
+   - `right`:选项图标显示在文本右侧
+   - `left`:选项图标显示在文本左侧
+4. 组件默认提供"是/否"两个选项,可以通过 checkedLabel 和 uncheckedLabel 属性自定义选项文本 
\ No newline at end of file
diff --git a/_cursor.ai/forms.doc/textarea.doc/CTextArea.doc.md b/_cursor.ai/forms.doc/textarea.doc/CTextArea.doc.md
new file mode 100644
index 0000000..1a8bae5
--- /dev/null
+++ b/_cursor.ai/forms.doc/textarea.doc/CTextArea.doc.md
@@ -0,0 +1,83 @@
+# CTextArea 多行文本输入组件
+
+## 功能说明
+
+CTextArea 是一个多行文本输入组件,用于在表单中收集用户的多行文本输入。组件支持设置输入区域高度,可以通过行数或像素值来控制,并支持只读模式。
+
+## 引用方式
+
+```js
+import { CTextArea } from '@components/forms/textarea';
+```
+
+## 组件参数
+
+- `itemRes` (Object,必填):表单数据资源对象,表单组件内部机制专用
+- `height` (Number,可选):文本域输入区域高度,单位为像素,默认为 94
+- `rows` (Number,可选):文本域输入区行数,设置后会覆盖 height 参数
+- `readOnly` (Boolean,可选):只读模式,默认为 false
+- `placeholder` (String,可选):输入框占位提示文本
+
+## 使用示例
+
+### 基础用法
+
+```html
+<template>
+  <CForm :form="form">
+    <CFormItem name="description" label="描述">
+      <CTextArea placeholder="请输入描述内容" />
+    </CFormItem>
+  </CForm>
+</template>
+
+<script>
+import { CForm, CFormItem } from '@components/forms/form';
+import { CTextArea } from '@components/forms/textarea';
+
+export default {
+  components: {
+    CForm,
+    CFormItem,
+    CTextArea
+  },
+  data() {
+    return {
+      form: {
+        description: ''
+      }
+    };
+  }
+};
+</script>
+```
+
+### 设置输入区域高度
+
+```html
+<!-- 通过像素值设置高度 -->
+<CFormItem name="content" label="内容">
+  <CTextArea :height="150" placeholder="请输入内容" />
+</CFormItem>
+
+<!-- 通过行数设置高度 -->
+<CFormItem name="remark" label="备注">
+  <CTextArea :rows="5" placeholder="请输入备注" />
+</CFormItem>
+```
+
+### 只读模式
+
+```html
+<CFormItem name="description" label="描述">
+  <CTextArea :readOnly="true" />
+</CFormItem>
+```
+
+## 注意事项
+
+1. CTextArea 组件通常需要配合 CForm 和 CFormItem 组件一起使用
+2. 当同时设置 `height` 和 `rows` 参数时,`rows` 参数优先生效
+3. `rows` 参数会按照每行 40px 的高度计算输入区域的总高度
+4. 组件支持自动增高,当输入内容超过设定高度时,输入区域会自动增高
+5. 在只读模式下,输入区域将不可编辑 
\ No newline at end of file
diff --git a/_cursor.ai/forms.doc/userSignature.doc/CUserSignature.doc.md b/_cursor.ai/forms.doc/userSignature.doc/CUserSignature.doc.md
new file mode 100644
index 0000000..dcbd677
--- /dev/null
+++ b/_cursor.ai/forms.doc/userSignature.doc/CUserSignature.doc.md
@@ -0,0 +1,84 @@
+# CUserSignature 用户签名组件
+
+## 功能说明
+
+CUserSignature 是一个用户手写签名组件,用于在表单中收集用户的电子签名。组件提供了手写板功能,支持签名的绘制、清除和保存,适用于电子合同、协议等需要用户签名的场景。
+
+## 引用方式
+
+```js
+import { CUserSignature } from '@components/forms/userSignature';
+```
+
+## 组件参数
+
+- `itemRes` (Object,必填):表单数据资源对象,表单组件内部机制专用
+- `width` (Number,可选):签名板宽度,单位为 px,默认为容器宽度
+- `height` (Number,可选):签名板高度,单位为 px,默认为 200
+- `lineWidth` (Number,可选):签名线条宽度,默认为 3
+- `lineColor` (String,可选):签名线条颜色,默认为 '#000000'
+- `background` (String,可选):签名板背景色,默认为 '#ffffff'
+- `placeholder` (String,可选):签名板占位提示文本
+- `readOnly` (Boolean,可选):只读模式,默认为 false
+
+## 使用示例
+
+### 基础用法
+
+```html
+<template>
+  <CForm :form="form">
+    <CFormItem name="signature" label="签名">
+      <CUserSignature 
+        placeholder="请在此处签名" 
+      />
+    </CFormItem>
+  </CForm>
+</template>
+
+<script>
+import { CForm, CFormItem } from '@components/forms/form';
+import { CUserSignature } from '@components/forms/userSignature';
+
+export default {
+  components: {
+    CForm,
+    CFormItem,
+    CUserSignature
+  },
+  data() {
+    return {
+      form: {
+        signature: ''
+      }
+    };
+  }
+};
+</script>
+```
+
+### 自定义配置
+
+```html
+<CFormItem name="contractSign" label="合同签名">
+  <CUserSignature 
+    :width="300"
+    :height="150"
+    :lineWidth="4"
+    lineColor="#1a1a1a"
+    background="#f5f5f5"
+    placeholder="请在此处签署您的姓名" 
+  />
+</CFormItem>
+```
+
+## 注意事项
+
+1. 组件会将签名转换为 base64 格式的图片数据存储在表单中
+2. 签名板提供以下功能按钮:
+   - 清除:清除当前签名
+   - 确认:保存当前签名
+3. 建议根据实际使用场景设置合适的签名板尺寸
+4. 在移动端使用时,支持触摸书写
+5. 在只读模式下,只能查看已保存的签名,无法进行签名操作
+6. 为了保证签名的清晰度,建议使用适当的 `lineWidth` 值 
\ No newline at end of file

--
Gitblit v1.9.1