# 移动表单插件模型

## 插件模版

### 使用场景

移动端打开的表单，需要特别设计，以适应移动端特性：

1. 显示区域小
2. 触控操作，使用区块设计更合适

移动端表单界面插件开发，与动态表单一致，但增加了一些新特性与事件，以及一些特别用于移动端的控件。

本章介绍移动端表单插件开发，移动端控件请参阅控件与字段相关章节；

- 移动单据插件基类     `kd.bos.bill.plugin.AbstractMobBillPlugin`
  

移动端动态表单界面插件接口为IMobFormPlugin，定义了移动端界面特有的事件方法（见后文）：

```java
package kd.bos.form.plugin;
public interface IMobFormPlugin {
// ...
```

移动端动态表单界面插件为基类 AbstractMobFormPlugin，派生自动态表单插件基类AbstractFormPlugin，并实现了移动端界面插件接口IMobFormPlugin：

```java
package kd.bos.form.plugin;
public class AbstractMobFormPlugin extends AbstractFormPlugin implements IMobFormPlugin {
// ...
```


## 视图模型

移动表单的视图模型接口为IMobileView，派生自IFormView：

```java
package kd.bos.form;
public interface IMobileView extends IFormView {
// ...
```

移动表单的视图模型实现类为MobileFormView，派生自动态表单视图模型实现类FormView，并实现了接口IMobileView：

```java
package kd.bos.mvc.form
public class MobileFormView extends FormView implements IMobileView {
// ...
```

IMobileView增加如下公共方法：

| 方法 | 说明 |
| --- | --- |
| getCurrentCityId | 获取用户所在的城市；使用手机获取用户所在的地图坐标，定位城市 |
| setLocation | 设置地图坐标 |
| setMenuItemVisible | 设置菜单可见性 |
| upload | 上传文件 |

## 数据模型

移动表单的数据模型，与PC端动态表单数据模型完全一致，不重复描述。

## 插件事件

移动表单，除了动态表单界面插件事件，还支持如下插件事件：

| 事件方法 | 事件所在接口 | 触发时机 |
| --- | --- | --- |
| uploadFile | IMobFormPlugin |  |


