移动端选人组件说明
=====================

## 概述

- 移动端选择平台用户、组织、岗位、群组、角色、个人群组

## 使用前

- 需要在index.html中加入以下隐藏域
```
  <input type="hidden" id="token" value=""/>
  <input type="hidden" id="baseContext" value=""/>
```
- index.html的getUser方法中获取token和baseContext，并放入隐藏域
```
  $("#token").val(result.token);
  $('#baseContext').val(result.baseContext);
  if(result.dingdingType == "corp"){
    realCorpId = "0";
  }
```
## 页面用法

- 示例
```
<SelectMember
    required
    readOnly={false}
    placeholder="请选择"
    label="选人组件"
    checkType="checkbox"  
    code="common,user,org,station,group"
    commonUsedData={this.state.commonUsedData}
    chooseType="userAndOrg,userAndGroup"
    fieldDataValue={this.state.fieldDataValue}
    scopeTable={this.state.scopeTable}
    fieldTable={this.state.fieldTable}
    fieldData={this.state.fieldData}
    ref="SelectMember"
    showType="list"
    isDelete={true}
	includeDel="0"
    onChange={(value)=>{t.setState({selectValue: value});}}
/>
```

### 属性
|名称|类型|描述|默认值|是否必填|
|-----|-------|-------|-----|-----|------|
|required|boolean|是否有必填标志|false|否|
|readOnly|boolean|是否是只读形式|false|否|
|placeholder|string|输入框提示语||否|
|label|String|输入框字段名||否|
|checkType|String|单选或多选(值为checkbox/radio)||是|
|code|String|场景code码(common-常用、user-用户、org-组织、station-岗位、group-群组、personalGroup-群组，以","分隔)||是|
|chooseType|String|userAndOrg-组织用户都可选择、userNotOrg-只可选择用户不可选择组织、org-只可选择组织不可选择用户(userAndOrg、userNotOrg、org三种type选择其一)；userAndGroup-群组tab页群组和用户都可选择、userNotGroup-群组tab页只可选择用户、group-群组tab页只可选择群组(userAndGroup、userNotGroup、group三种type选择其一);userAndPersonalGroup-群组tab页群组和用户都可选择、userNotPersonalGroup-群组tab页只可选择用户、group-群组tab页只可选择群组(userAndPersonalGroup、userNotPersonalGroup、personalGroup三种type选择其一)，以","分隔||是|
|commonUsedData|json格式|常用tab页显示的可选数据||否|
|scopeTable|String|scope储存表表名，编辑查看场景下显示已选数据|cmp_scope|否(在编辑场景下且不使用defaultValue时必填)|
|fieldTable|String|对应业务表表名，编辑查看场景下显示已选数据||否(在编辑查看场景下且不使用defaultValue时必填)|
|fieldData|String|对应业务表字段，编辑查看场景下显示已选数据||否(在编辑查看场景下且不使用defaultValue时必填)|
|fieldDataValue|String|对应业务表字段值，编辑查看场景下显示已选数据||否(在编辑查看场景下且不使用defaultValue时必填)|
|showType|String|展示方法(button-按钮，text-已选用户组织岗位群组名称，list-标签形式展示)||是|
|isDelete|boolean|showType值为list时，展示标签是否需要删除按钮||在showType值为list时为必填项|
|defaultValue|json格式|在编辑查看场景下，未使用到scope表，用自定义格式保存已选数据时，不能用scopeTable、fieldTable、fieldData、fieldDataValue初始化数据，可用defaultValue拼接数据传入，同样用ref调用初始化||否(在编辑查看场景下且不使用scopeTable、fieldTable、fieldData、fieldDataValue四个字段时必填)|
|queryLimit|String|1-限制传入数据自身和下级；2-限制传入数据；3-查询传入数据；4-查询传入数据自身和直接下级；5-查询传入数据自身和所有下级||否|
|limitData|String|与queryLimit相对应，格式为以“,”分隔的id串||否(当queryLimit传值是为必填)|
|includeDel|String|是否回显已删除的用户，0否/1是| |否()|

- defaultValue数据格式示例
```
  [{"scopeType":"user",
    "scopeValue":"d5ced277574011e780b3000c29ee419e",
    "scopeName":"测试用户",
    "imageId":""//钉钉中使用，用户需要返回用户钉钉头像
  },
  {"scopeType":"org",
    "scopeValue":"d5ced277574011e780b3000c29ee412e",
    "scopeName":"测试部门"
  },
  {"scopeType":"station",
    "scopeValue":"d5ced277574011e780b3001c29ee412e",
    "scopeName":"测试岗位"
  },
  {"scopeType":"group",
    "scopeValue":"d5ced277534011e780b3001c29ee412e",
    "scopeName":"测试群组"
  }];
```
- commonUsedData数据格式示例(常用只支持用户选择)
```
  [{"scopeType":"user",
    "scopeValue":"d5ced277574011e780b3000c29ee419e",
    "scopeName":"测试用户",
    "imageId":""//钉钉中使用，用户需要返回用户钉钉头像
  }];
```

### 事件
|名称|参数|描述|
|-----|-------|-------|
|onChange|value|处理选择之后的返回值|

- 返回值示例
```
  [{"scopeType":"user",
    "scopeValue":"d5ced277574011e780b3000c29ee419e",
    "scopeName":"测试用户",
    "imageId":""//用户钉钉头像
  },
  {"scopeType":"org",
    "scopeValue":"d5ced277574011e780b3000c29ee412e",
    "scopeName":"测试部门"
  },
  {"scopeType":"station",
    "scopeValue":"d5ced277574011e780b3001c29ee412e",
    "scopeName":"测试岗位"
  },
  {"scopeType":"group",
    "scopeValue":"d5ced277534011e780b3001c29ee412e",
    "scopeName":"测试群组"
  }];
```

### 方法
|名称|参数|参数类型|描述|
|-----|-------|-------|-------|
|initSelectData|||初始化数据，与scopeTable、fieldTable、fieldData、fieldDataValue一起使用，用于编辑查看有已选数据的场景|
|dialogClearItem|isShowDialog|boolean|清空已选数据，参数为是否需要弹出框提醒|

- 方法使用示例(使用ref调用选人组件中的方法)
```
  this.setState({
        fieldDataValue: "5381b1a3cf41410194d385132cdc8442",
        scopeTable: "oa_meeting_scope",
        fieldTable: "oa_meeting_apply_record",
        fieldData: "attend_user"
      },()=>{t.refs.SelectMember.initSelectData()});
```

## 注意事项
- scopeTable、fieldTable、fieldData、fieldDataValue需要配套使用
- defaultValue与上述4个参数都是用于编辑查看有已选数据的场景初始化，都是用ref方法调用，二选一即可
- 用户和组织合并，用户组织都可选择时tab页显示为组织
- 群组中希望可选择到群组下的用户时，chooseType传入userAndGroup或userNotGroup
