版本 | 作者 | 日期 |
---|---|---|
1.0 | 邵彬 | 2015-09-10 |
[TOC]
id # 表单标识
version # 表单版本
title # 表单名称
post_url # 表单提交路径
entries # 表单项目列表
key # http form post param name
name # 界面展示名称
optional # 是否为可选参数
widget # 控件类型,目前支持[edittext, single_choice, multi_choice, datepicker, timepicker, photo, address]
widget_params # 控件参数,不同控件类型参数可能不同
- hint: 文本框提示文案
- single_line: 是否单行[true, false]
- input_type: 输入法模式
- text (默认)
- textUri
- textEmailAddress
- textPassword
- textVisiblePassword
- number
- numberSigned
- numberDecimal
- numberPassword
- phone
- validators 支持以下类型:
- regex [regex] 正则表达式,建议控制台在配置时验证正则表达式的正确性
备注
- 所有 validator 都包含属性
err_msg
属性,用于提示用户验证不通过- 可以添加多个 validator
- 客户端目前支持 regex 校验,为方便用户使用,建议控制台预置以下常用正则表达式
- phone 电话
- email 电子邮件
- url 网址
- numeric 数字
- range [min, max] 字符串长度(最大值,最小值)
- 中文字符
- entry_names: 列表项名称数组
- entry_values: 列表项值数组
- entry_names: 列表项名称数组
- entry_values: 列表项值数组
- initial_date
- min_date
- max_date
备注
日期格式为 yyyy-MM-dd
- initial_time
备注
时间格式为 HH:mm
- photo_list 类型:
JSONArray
[
{
"name": "身份证正面",
"type": "NAME_CARD_FRONT",
"w": 480,
"h": 800
},
{
"name": "身份证反面",
"type": "NAME_CARD_BEHIND",
"w": 480,
"h": 800
}
]
备注
由于目前 server 端提供的图片上传机制的限制,图片类型
type
只支持预定义的若干类型,例如:
NAME_CARD_FRONT
NAME_CARD_BEHIND
SHOP_PHOTO1
SHOP_PHOTO2
SHOP_PHOTO3
如需要支持更多的图片类型,则 server 和 client 都要修改代码
w
和h
为图片的宽和高
- 用户输入
- 自动定位
- 地图选点
省/市/县
提交为 县的 数字编号
备注
API 需求:需要 API 提供省市县信息
GET /provincies
获取省列表[["北京", "01"], ["天津", "02"]]
GET /cities?pid=xx
获取省下属城市列表[["海淀", "0101"], ["朝阳", "0102"]]
GET /counties?cid=xxxx
获取城市下属区县列表[["管庄", "010201"], ["北苑", "010202"]]
{
"id": 1,
"version": 1,
"title": "二手车信息采集",
"post_url": "http://host/form_post",
"entries": [
{
"key": "email",
"name": "电子邮件",
"optional": false,
"widget": "edittext",
"widget_params": {
"hint": "请输入电子邮件",
"input_type": "textEmailAddress",
"validators": [
{
"name": "email",
"error_msg": "邮件格式不正确"
}
]
}
},
{
"key": "phone",
"name": "电话号码",
"optional": false,
"widget": "edittext",
"widget_params": {
"hint": "请输入电话号码",
"input_type": "phone",
"validators": [
{
"name": "phone",
"error_msg": "电话号码格式不正确"
}
]
}
},
{
"key": "work_age",
"name": "工作年限",
"optional": false,
"widget": "single_choice",
"widget_params": {
"entry_names": [
"小于三年",
"三年到五年",
"五年到十年",
"十年以上"
],
"entry_values": [
"1",
"2",
"3",
"4"
]
}
},
{
"key": "channel",
"name": "发布渠道",
"optional": false,
"widget": "multi_choice",
"widget_params": {
"entry_names": [
"豌豆荚",
"360",
"百度",
"酷市场"
],
"entry_values": [
"1",
"2",
"3",
"4"
]
}
},
{
"key": "birthday",
"name": "生日",
"optional": false,
"widget": "datepicker",
"widget_params": {
"initial_date": "2015-06-04",
"min_date": "1970-01-01",
"max_date": "2035-01-01"
}
},
{
"key": "begin_time",
"name": "开门时间",
"optional": false,
"widget": "timepicker",
"widget_params": {
"initial_time": "09:00"
}
},
{
"key": "city",
"name": "城市",
"optional": false,
"widget": "addresspicker",
"widget_params": {}
},
{
"key": "address",
"name": "详细地址",
"optional": false,
"widget": "address",
"widget_params": {}
},
{
"key": "photo_id_card",
"name": "身份证",
"optional": false,
"widget": "photo",
"widget_params": {
"photo_list": [
{
"name": "身份证正面",
"type": "NAME_CARD_FRONT"
},
{
"name": "身份证反面",
"type": "NAME_CARD_BEHIND"
}
]
}
}
]
}
数据校验参考
- https://github.com/throrin19/Android-Validator
- http://android-arsenal.com/details/1/525
- http://android-arsenal.com/details/1/1605
- http://android-arsenal.com/details/1/727
- http://android-arsenal.com/details/1/524
- http://commons.apache.org/proper/commons-validator/
request
GET /poi_type_list
response
[
{
"name": "二手车",
"type_id": 1
},
{
"name": "修理厂",
"type_id": 2
}
]
- 沿用老版本的方式
form post
- 提交到模板数据中指定的
post_url
- 模板 id
type_id
{
"id": xxx,
"type_id": xxx,
"其他字段": "其他字段的值"
}
存在的问题
- 是否所有的 POI 数据都来自于我们的服务器?
- 不是,只是部分类型,需要有字段标识
request
GET /nearby_poi_category
response
[
{
"icon": "http://host/icon.jpg",
"title": "服务网点",
"poi_cat_id": 1
},
{
"icon": "http://host/icon.jpg",
"title": "信息部",
"poi_cat_id": 2
},
{
"icon": "http://host/icon.jpg",
"title": "银行",
"poi_cat_id": 3
}
]
Written with StackEdit.