
## s-HR Cloud 前端API文档
### 一、通用
#### 1、通用 API
**1、shr.startMask(opacity, load)**
- 参数:opacity(透明度, 默认 0.16), load(加载动画, 默认为 false)
- 对应功能描述:打开页面遮罩
**2、shr.stopMask()**
- 参数:无
- 对应功能描述:关闭页面遮罩
**3、shr.filterSelectorSpecialChar(selector)**
- 参数:selector(jquery 选择器)
- 对应功能描述:过滤掉 jquery 选择器中的特殊字符串
**4、shr.inherit(subClass, superClass)**
- 参数:subClass(当前类),superClass(需要继承的超类)
- 对应功能描述:js 类继承
**5、shr.defineClass(subClassName, superClass,prototype)**
- 参数:subClassName(当前类名), superClass(超类),prototype(当前类对象)
- 对应功能描述:js 类定义
**6、shr.createObject(clazz)**
- 参数:clazz(创建该类的对象)
- 对应功能描述:创建对象
**7、shr.proxyCall(methodName, objectName)**
- 参数:methodName(方法名称), objectName(对象名称)
- 对应功能描述:JS 类方法调用代理
**8、shr.assembleModel(fields, context, uuid)**
- 参数:fields(字段名数组), context(暂时没用), uuid(表单的 uuid)
- 对应功能描述:获取当前视图表单 model 对象
**9、shr.assembleTemplateModel(fields, context, uuid)**
- 参数:fields(字段名数组), context(暂时没用), uuid(表单的 uuid)
- 对应功能描述:编辑状态下获取当前视图表单 model 对象
**10、shr.getTemplateFieldValue(fieldName, uuid, context)**
- 参数:fieldName(字段名), context(全局对象), uuid(表单的 uuid)
- 对应功能描述:编辑状态下获取当前字段的值
**11、shr.convertId(id)**
- 参数:id
- 对应功能描述:将 id 中字符 . 替换为 \_
**12、shr.strToEscape(str)**
- 参数:str
- 对应功能描述:将字符串中的 & 替换为 &
**13、shr.strEscape(str)**
- 参数:str
- 对应功能描述:转义符换成普通字符
**14、shr.getValueByRole(role, \$element, id, context, isFromWF)**
- 参数:role(初始化组件方法名), \$element(页面元素), id(元素 id), context(全局对象), isFromWF(是来自工作流)
- 对应功能描述:获取当前视图某个元素的值
**15、shr.getFieldValue(fieldName, uuid, context)**
- 参数:fieldName(字段名), uuid(表单 uuid), context(全局对象)
- 对应功能描述:获取当前视图某个字段值
**16、shr.execByFieldIdAndMethod(fieldId, methodName, \_arguments, context)**
- 参数:fieldId(字段 id), methodName(方法名), \_arguments(执行的方法要传递的参数), context(全局对象)
- 对应功能描述:根据字段 id 和方法名来执行方法
**17、shr.execByElementAndMethod(\$element, methodName, \_arguments)**
- 参数:\$element(jquery 对象), methodName(方法名), \_arguments(执行的方法要传递的参数)
- 对应功能描述:根据字段 id 和方法名来执行方法
**18、shr.getComponentNameByCtrlrole(ctrlrole)**
- 参数:ctrlrole(元素属性 ctrlrole)
- 对应功能描述:根据元素属性 ctrlrole 获取对应的组件名称
**19、shr.setModelFieldValue(model, fieldName, value)**
- 参数:model(视图对象), fieldName(字段名), value(字段值)
- 对应功能描述:设置表单字段值
**20、shr.isJSON(str)**
- 参数:str
- 对应功能描述:判断是否是一个 json 字符串
**21、shr.checkIsRedirectLogin(response)**
- 参数:response(后台返回 response)
- 对应功能描述:判断是否是 session 失效,重定向到登录页面
**22、shr.setModelFieldValue(model, fieldName, value)**
- 参数:model(视图对象), fieldName(字段名), value(字段值)
- 对应功能描述:设置表单字段值
**23、shr.isEnumValue(json)**
- 参数:json(视图 json 对象)
- 对应功能描述:判断当前传递的 json 对象是否为枚举类型
**24、shr.setIframeHeight(iframeId)**
- 参数:iframeId(iframe 的 id)
- 对应功能描述:默认设置页面元素 workArea 高度, 如需设置其他高度, 则传入 iframe 的 id
**25、shr.getWorkareaVisibleHeight()**
- 参数:无
- 对应功能描述:获取当前页面元素 workArea 的可视高度
**26、shr.getWorkarea()**
- 参数:无
- 对应功能描述:获取页面元素 workAreaDiv 的 jquery 对象
**27、shr.isWorkareaFrame()**
- 参数:无
- 对应功能描述:是否是主工作区 iframe
**28、shr.locateTo(newElement, complete, duration)**
- 参数:newElement(移动元素), complete(回调函数), duration(动画延时)
- 对应功能描述:定位至某个区域块
**29、shr.closeWindow()**
- 参数:无
- 对应功能描述:关闭浏览器窗口
**30、shr.funPlaceholder()**
- 参数:无
- 对应功能描述:js 设置 placeholder,解决 IE9 下显示不了的问题
**31、shr.selectorFormat(selectorStr)**
- 参数:selectorStr(jquery 选择器)
- 对应功能描述:选择器中包含“.”导致 JQuery 选择器不可用,转义处理
**32、shr.paramToInputHidden(param)**
- 参数:param(input 属性对象)
- 对应功能描述:将参数转换为 input hidden 字符串
**33、shr.checkCanUpload()**
- 参数:无
- 对应功能描述:检测 是否可以上传文件
**34、shr.detectZoom()**
- 参数:无
- 对应功能描述:获取浏览器缩放比例
**35、shr.formatMsg()**
- 参数:无
- 对应功能描述:替换模板字符串占位符
**36、shr.isUndef()**
- 参数:无
- 对应功能描述:判断 js 对象是 undefined 或者 null 或者是空的字符串
**37、shr.escapeSpecChar(srcString)**
- 参数:srcString(字符串)
- 对应功能描述:字符串特殊字符转义
#### 2、前端请求 API
**1、shr.doAction(option)**
- 参数:option(ajax 参数)
- 对应功能描述:向后台发送 ajax 请求
**2、shr.doAjax(option)**
- 参数:option(ajax 参数)
- 对应功能描述:向后台发送 ajax 请求
**3、shr.doGet(_option_)**
- 参数:option(ajax 参数)
- 对应功能描述:向后台发送 get 请求
**4、shr.callService(option)**
- 参数:option(ajax 参数)
- 对应功能描述:向后台发送请求, 通常用来调用 osf 接口
**5、shr.doRemoteCall(option)**
- 参数:option(ajax 参数)
- 对应功能描述:向后台发送 ajax 请求
**6、shr.callHandler(option)**
- 参数:option(ajax 参数)
- 对应功能描述:向后台发送 ajax 请求
**7、shr.remoteCall(_option_)**
- 参数:option(ajax 参数)
- 对应功能描述:向后台发送 ajax 请求
**8、shr.callService(option)**
- 参数:option(ajax 参数)
- 对应功能描述:向后台发送请求, 通常用来调用 osf 接口
#### 3、URL 操作 API
**1、shr.getProtocolAndDomain(someWindow)**
- 参数:someWindow(浏览器 window 对象)
- 对应功能描述:获取协议和域名
**2、shr.getDomain(someWindow)**
- 参数:someWindow(浏览器 window 对象)
- 对应功能描述:获取域名
**3、shr.getProtocol(someWindow)**
- 参数:someWindow(浏览器 window 对象)
- 对应功能描述:获取协议
**4、shr.openNew(url, someWindow)**
- 参数:url(url 地址), someWindow(全局对象)
- 对应功能描述:新增打开新窗口的方法,url 需要调用者提供
**5、shr.redirect(url, params)**
- 参数:url(地址), params(参数)
- 对应功能描述:重定向
**6、shr.getUrlParams(url)**
- 参数:url(获取 URL 所对应的参数数组)
- 对应功能描述:获取 URL 所对应的参数数组
**7、shr.getUrlRequestParam(param, url)**
- 参数:param(参数名称), url(url 地址)
- 对应功能描述:根据 url 获取参数名为 param 的参数值
**8、shr.getContextPath()**
- 参数:无
- 对应功能描述:获取页面根路径
**9、shr.getShortUrl()**
- 参数:无
- 对应功能描述:获得页面对应的短网址(面包屑)
**10、shr.renderPage(short)**
- 参数:short(短网址 id)
- 对应功能描述:根据短网址(面包屑)显示页面
**11、shr.getPageUrl(document)**
- 参数:document(页面 document 对象)
- 对应功能描述:获取当前页面 url 地址
**12、shr.assembleURL(value, type, params)**
- 参数:value(需要打开的视图 UIPK 或是 URL 地址), type(URL 类型,可传入的值:view,url), params(打开页面时需传递的参数)
- 对应功能描述:构造动态 URL
**13、shr.appendParam(url, param)**
- 参数:url(url 地址), param(参数对象)
- 对应功能描述:拼接 url 参数
**14、shr.removeParam(url, param)**
- 参数:url(url 地址), param(参数名称)
- 对应功能描述:移除 url 参数
**15、shr.assembleViewUrl(uipk, params)**
- 参数:uipk(uipk), param(参数对象)
- 对应功能描述:根据 uipk 和参数构造 url
**16、shr.assembleHandlerUrl(handler, action, params)**
- 参数:handler(后台 handler 类名称), action(后台 handler 方法名), param(参数对象)
- 对应功能描述:根据后台 handler 类名称,方法和参数构造 url
**17、shr.loadPage(value, type, params)**
- 参数:value(需要打开的视图 UIPK 或是 URL 地址), type(URL 类型,可传入的值:view,url), params(打开页面时需传递的参数)
- 对应功能描述:加载页面
**18、shr.reloadUrlByPost(url, param, name)**
- 参数:url(URL 地址), param(参数对象), name(form 的 id)
- 对应功能描述:本窗口采用 post 方式加载某个 URL,解决 URL 超长问题
**19、shr.openWindowByPost(url, param)**
- 参数:url(URL 地址), param(参数对象)
- 对应功能描述:采用 post 方式打开新窗口,解决 URL 超长问题
**20、shr.changeURLArg(url, arg, arg_val)**
- 参数:url(目标 url), arg(需要替换的参数名称 ), arg_val(替换后的参数的值)
- 对应功能描述:替换 url 参数
#### 4、弹框类 API
**1、shr.showInfo(options)**
- 参数:options(参数)
- 对应功能描述:信息提示
**2、shr.showSuccess(options)**
- 参数:options(参数)
- 对应功能描述:成功提示
**3、shr.showError(options)**
- 参数:options(参数)
- 对应功能描述:错误提示
**4、shr.showWarning(options)**
- 参数:options(参数)
- 对应功能描述:警告提示
**5、shr.showConfirm(message, action, cancel, args)**
- 参数:message(确认提示信息), action(确认后回调函数), cancel(取消后回调函数), args(参数数组)
- 对应功能描述:确认提示
**6、shr.msgHideAll()**
- 参数:无
- 对应功能描述:关闭所有提示框
**7、shr.hideErrorMsg()**
- 参数:无
- 对应功能描述:关闭所有非信息(info)提示框
#### 5、资源加载 API
**1、shr.loadScript(url, callback)**
- 参数:url(js 服务器地址), callback(加载后回调函数)
- 对应功能描述:加载 js
**2、shr.loadCss(_url_)**
- 参数:url(js 服务器地址)
- 对应功能描述:加载 css
**3、shr.loadHTML(options)**
- 参数:options(参数对象)
- 对应功能描述:加载 HTML 片断
**4、shr.loadJsOrCssFile(filename, filetype)**
- 参数:filename(文件名称), filetype(文件类型)
- 对应功能描述:加载 js、css 文件
**5、shr.removeJsOrCssFile(filename, filetype)**
- 参数:filename(文件名称), filetype(文件类型)
- 对应功能描述:移除 js、css 文件
**6、shr.createJsOrCssFile(filename, filetype)**
- 参数:filename(文件名称), filetype(文件类型)
- 对应功能描述:创建 js、css 文件
**7、shr.replaceJsOrCssFile(oldfilename, filename, filetype)**
- 参数:oldfilename(原始文件名称), filename(替换文件名称), filetype(文件类型)
- 对应功能描述:替换 js、css 文件
**8、shr.getOutInputScripts(str)**
- 参数:str(html 内容字符串)
- 对应功能描述:获取一段字符串中,外部引入的 js
#### 6、编码 API
**1、shr.base64Encode(input)**
- 参数:input(字符串)
- 对应功能描述:base64 编码
**2、shr.encryptForUrl(encryptObj, url)**
- 参数:encryptObj({key: value, key: value} key:需要加密的字段; value: 需要加密的值), url(url 地址)
- 对应功能描述:加密 url 参数
**3、shr.encryptForObj(encryptObj, url)**
- 参数:encryptObj({key: value, key: value} key:需要加密的字段; value: 需要加密的值), url(url 地址)
- 对应功能描述:返回加密对象
**4、shr.encryptForB64(value)**
- 参数:value(字符串)
- 对应功能描述:盐+base64 加密
**5、shr.encryptForAes(encryptObj, url)**
- 参数:content(字符串)
- 对应功能描述:AES 加密
**6、shr.allEncrypt(value)**
- 参数:value(字符串)
- 对应功能描述:总加密方法,根据 window.shrUrlParamEncryptRule 的取值去分发 'BASE64' / 'AES', 后续如果要添加新加密方法在这里加即可。
**7、shr.utf8Encode(_string_)**
- 参数:string(字符串)
- 对应功能描述:utf8 编码。
#### 7、权限 API
**1、shr.getButtonDataPermissionModel()**
- 参数:无
- 对应功能描述:组装按钮数据权限模型
**2、shr.getButtonPermItemId(data)**
- 参数:data(button 对象)
- 对应功能描述:获取 button 对象的权限 ID
**3、shr.getPermItemId(\_window)**
- 参数:\_window(全局对象)
- 对应功能描述:获取权限 id
**4、shr.getCurrentPagePermItemId()**
- 参数:无
- 对应功能描述:获取当前视图权限 id
**5、shr.getCurrentPagePermItemIdByClient()**
- 参数:无
- 对应功能描述:从客户端页面对象中获取当前视图权限 id
**6、shr.getCurrentPagePermItemIdByServer()**
- 参数:无
- 对应功能描述:从服务端获取当前视图权限 id
#### 8、信息获取 API
**1、shr.browser**
- 参数:无
- 对应功能描述:获取当前浏览器信息
**2、shr.getServiceId(someWindow)**
- 参数:someWindow(浏览器 window 对象)
- 对应功能描述:获取 serviceId
**3、shr.getDataCenter()**
- 参数:无
- 对应功能描述:获取数据中心
**4、shr.getBowserInfo()**
- 参数:无
- 对应功能描述:获取浏览器类型,例如:{browser: "Chrome", version: "88.0.4324.96"}
**5、shr.dynamicURL**
- 参数:无
- 对应功能描述:'/dynamic.do'
**6、shr.getCurrentViewPage(source)**
- 参数:source(可选))
- 对应功能描述:获取当前视图对象
**7、shr.registerViewPage(key, viewPage)**
- 参数:key(关键字), viewPage(页面对象)
- 对应功能描述:注册视图对象
**8、shr.unRegisterViewPage(key)**
- 参数:key(关键字)
- 对应功能描述:卸载视图对象
**9、shr.getOwnerWindow()**
- 参数:无
- 对应功能描述:获取当前全局对象
**10、shr.getUserInfo()**
- 参数:无
- 对应功能描述:获得当前登录用户信息
**11、shr.getPageInfo()**
- 参数:无
- 对应功能描述:获得页面信息
**12、shr.getFlashVersion()**
- 参数:无
- 对应功能描述:检测 FlashPlayer
#### 9、缓存操作 API
**1、shr.setSessionStorage(key, billId, value)**
- 参数:key(关键字), billId(表单 Id), value(值)
- 对应功能描述:提供通用的 SessionStorage 存储方法
**2、shr.getSessionStorage(key, billId)**
- 参数:key(关键字), billId(表单 Id)
- 对应功能描述:提供通用的 SessionStorage 值移除方法
**3、shr.removeLocalStorageItem(key, billId)**
- 参数:key(关键字), billId(表单 Id)
- 对应功能描述:提供通用的 SessionStorage 获取方法
**4、shr.setLocalStorage(key, billId, value)**
- 参数:key(关键字), billId(表单 Id), value(值)
- 对应功能描述:提供通用的 LocalStorage 存入方法
**5、shr.getLocalStorage(key, billId)**
- 参数:key(关键字), billId(表单 Id)
- 对应功能描述:提供通用的 LocalStorage 获取方法
**6、shr.removeSessionStorageItem(key, billId)**
- 参数:key(关键字), billId(表单 Id)
- 对应功能描述:提供通用的 LocalStorage 值移除方法
#### 10、多语言操作 API
**1、shr.getContext()**
- 参数:无
- 对应功能描述:获取当前语种标识, 例如:{locale: "zh_CN"}
**2、shr.getFieldLangByContext(lan)**
- 参数:lan(语言,例如:en_US, zh_CN)
- 对应功能描述:根据语言环境获取多语言字段对应语言值, 例如:l1, l2, l3
### 二、组件
#### 1、textField 文本组件
- 属性
| 参数名 | 类型 | 参数说明 | 描述 |
| --------------- | ------ | -------- | -------------------- |
| id | 字符串 | 必填 | 元素id |
| name | 字符串 | 必填 | 元素name |
| readonly | 布尔值 | 非必填 | 是否只读 |
| value | 字符串 | 非必填 | 元素值 |
| validate | 字符串 | 非必填 | 校验规则 |
| trimAll | 布尔值 | 非必填 | 去掉值里面包含的空格 |
| isMultiLan | 布尔值 | 非必填 | 是否多语言 |
| isMenuIcon | 布尔值 | 非必填 | 是否显示menuIcon |
| isNumberfield | 布尔值 | 非必填 | 是否是数字类型字段 |
| joinSelectField | 字符串 | 非必填 | 是否有附属字段 |
| extendOptions | 字符串 | 非必填 | 额外配置 |
| onchange | 函数 | 非必填 | 改变值之后的回调函数 |
- 初始化
```js
var text_json = {
id:"number",
name: "number",
readonly: "", //只读
value: "", //值
validate: "{maxlength:255,required:true}", //校验规则
trimAll:false,
isMultiLan:false,
isNumberfield:false,
isMenuIcon: false,
onChange: null, //change回调事件
extendOptions:{}
};
$('#number').shrTextField(text_json);
```
- 设置值
```js
$('#number').shrTextField('setValue', 'xc2003');
```
- 获取值
```js
$('#number').shrTextField('getValue');
```
- 启用
```js
$('#number').shrTextField('enable');
```
- 禁用
```js
$('#number').shrTextField('disable');
```
#### 2、textarea 大文本组件
- 属性
| 参数名 | 类型 | 参数说明 | 描述 |
| -------- | ------ | -------- | -------- |
| id | 字符串 | 必填 | 元素id |
| name | 字符串 | 必填 | 元素name |
| readonly | 布尔值 | 非必填 | 是否只读 |
| value | 字符串 | 非必填 | 元素值 |
| validate | 字符串 | 非必填 | 校验规则 |
| style | 字符串 | 非必填 | 元素样式 |
- 初始化
```js
var options = {
id: 'description',
readonly: '',
validate: '{maxlength:10}', //校验规则
style: '',
trimAll:false,
isMultiLan:true,
maxlength: 255
};
$('#description').shrTextarea(options);
```
- 设置值
```js
$('#description').shrTextarea('setValue', '备注')
```
- 获取值
```js
$('#description').shrTextarea('getValue')
```
- 启用
```js
$('#description').shrTextarea('enable');
```
- 禁用
```js
$('#description').shrTextarea('disable');
```
#### 3、select 下拉组件
- 属性
| 参数名 | 类型 | 参数说明 | 描述 |
| ------------ | ------ | -------- | --------------------- |
| id | 字符串 | 必填 | 元素id |
| readonly | 布尔值 | 非必填 | 是否只读 |
| data | 数组 | 非必填 | 下拉数据 |
| enumSource | 字符串 | 非必填 | 元数据枚举 |
| value | 字符串 | 非必填 | 元素值 |
| filter | 字符串 | 非必填 | 过滤 |
| validate | 字符串 | 非必填 | 校验规则 |
| optionSource | 字符串 | 非必填 | 对应handler中的数据源 |
| url | 字符串 | 非必填 | url数据请求地址 |
| onChange | 函数 | 非必填 | 值改变回调 |
- 初始化
```js
var select_json = {
id: "dataDot",
readonly: "",
value: "2",
onChange: null, //change回调事件
validate: "{required:true}", //校验规则
filter: "", //数据过滤
enumSource: 'com.kingdee.shr.compensation.CmpItemDataDot', //枚举元数据
data: [{"alias":"0","value":0},
{"alias":"0.0","value":1},
{"alias":"0.00","value":2},
{"alias":"0.000","value":3},
{"alias":"0.0000","value":4}]
};
$('#dataDot').shrSelect(select_json);
```
- 设置值
```js
$('#dataDot').shrSelect('setValue', '1');
```
- 获取值
```js
$('#dataDot').shrSelect('getValue');
```
- 启用
```js
$('#dataDot').shrSelect('enable');
```
- 禁用
```js
$('#dataDot').shrSelect('disable');
```
#### 4、radio 单选框组件
- 属性
| 参数名 | 类型 | 参数说明 | 描述 |
| -------- | ------ | -------- | -------- |
| id | 字符串 | 必填 | 元素id |
| readonly | 布尔值 | 非必填 | 是否只读 |
| value | 字符串 | 非必填 | 元素值 |
- 初始化
```js
var radio_json = {
id:"isCmpQuery",
readonly: "",
value: "${value}",
onChange: null
};
$('input[name="isCmpQuery"]').shrRadio(radio_json);
```
- 获取值
```js
$('input[name="isCmpQuery"]').shrRadio('getValue')
```
- 启用
```js
$('input[name="isCmpQuery"]').shrRadio('enable');
```
- 禁用
```js
$('input[name="isCmpQuery"]').shrRadio('disable');
```
- 选中
```js
$('input[name="isCmpQuery"]').shrRadio('check');
```
- 取消选中
```js
$('input[name="isCmpQuery"]').shrRadio('unCheck');
```
#### 5、checkbox 多选框组件
- 属性
| 参数名 | 类型 | 参数说明 | 描述 |
| -------- | ------ | -------- | -------- |
| id | 字符