Skip to content

9.10 数据录入组件 ​

概述

数据录入组件覆盖表单场景:Form(querySchemas 驱动)、Select(下拉)、ChinaArea/Region(级联区划)、Cropper(裁剪)、Password(密码强度)、numberInput/priceInput(数字/价格)等。

录入组件清单 ​

组件职责对接
Form表单封装(FormSchema 配置驱动)querySchemas.ts / edit.vue
Select下拉封装字典驱动 options
ChinaArea中国省市区级联对接 /api/area 接口(级联懒加载)
Region行政区划组件同上
Cropper / vue-cropper图片裁剪头像上传(裁剪→上传→转正)
Password密码输入(强度显示)登录/改密/重置密码
numberInput数字输入金额外的数字字段
priceInput价格输入金额字段(精度处理)
TableSelect表格选择器关联数据选择(如选用户/选分类)
Authority权限包装权限控制容器
CheckToken令牌检查登录态相关

FormSchema 驱动(querySchemas 真实模式) ​

ts
export const schemas: FormSchema[] = [
  {
    field: 'name',          // 字段名 ↔ PageReq json 字段(驼峰)
    component: 'Input',     // 字符串 → 后端 LikeFields
    label: '案例名称',
    componentProps: { placeholder: '请输入案例名称', clearable: true },
  },
  {
    field: 'type',
    component: 'Select',    // 选择 → 后端 EqFields
    label: '案例类型',
    componentProps: {
      placeholder: '请选择案例类型',
      clearable: true,
      options: [ /* 字典驱动时改为 getDictItemList 结果 */ ],
    },
  },
];

组件类型与后端筛选的对应(三件套):Input → LikeFields;Select/InputNumber → EqFields。

区划级联(ChinaArea/Region) ​

text
数据源:GET /api/area/getParent(省份)→ /api/city/getCityList/:parentCode(级联懒加载)
大表纪律:级联按 parent_code 拉单级子集,勿全量拉取
存储:user 表四级编码列(province/city/district/street_code)
提交:名称串或编码数组(后端 ResolveCityCodes/ResolveCityNames 互转)

图片裁剪(头像场景) ​

text
选择图片 → Cropper 裁剪 → 裁剪结果 blob → POST /api/upload/uploadFile(type=image)
→ 返回 temp URL → 表单 avatar 字段 → 保存资料时后端转正

edit.vue 表单模式 ​

text
新增/编辑共用 edit.vue:
  新增:空表单 → exampleAdd(data)
  编辑:Detail 回显 → 全量表单 → exampleUpdate(data)(全量 PUT 语义)

字段对齐:表单 model ↔ AddReq/UpdateReq 结构体(驼峰 json)
校验:required 对齐后端 v 标签(前端提示 + 后端 gvalid 双层)

开发规约 ​

  • 筛选表单用 querySchemas 配置(勿手写搜索区)
  • 下拉选项优先字典驱动(getDictItemList);静态 options 仅示例/特殊场景
  • 编辑表单全量提交(基座 Update 是全量表单语义;零值字段也要带)
  • 图片/文件字段持 URL(上传组件产出),后端 FileFields 转正
  • 敏感字段(密码)用 Password 组件;提交前确认后端 bcrypt 路径

小蚂蚁云团队 · 提供技术支持