## 公用封装函数
APP开发会出现很多功能相同的函数和组件，现封装了很多公共函数可直接调用减少开发时间，提高开发效率。需在`controller`中注入`hlsUtil`服务。
##### 1.校验身份证号 `isCardID`函数
- 函数参数为`( 身份证号码 )`。
- 返回值为`( 身份证校验结果 )`，通过返回空，不通过返回具体内容。
- 调用如下

  ```javascript
  function checkIdCard(){
    var result =hlsUtil.isCardID(342623198712122312);
    if(result){
      hlsPopup.showShortCenterToast(result);
    }
  }
  ```

##### 2.时间格式化函数 `Date.prototype.format`
- 函数参数为`( 格式字符串 )` 如 `yyyy-MM-dd`
- 返回值为`( 格式化后的时间 )` 如 `2017-09-08`
- 调用实例如下

  ```javascript
  function dataFormat() {
    var date = new Date;
    alert(date.format('yyyy-MM-dd'));
  }
  ```

##### 3.数组移除函数 `Array.prototype.remove`
- 函数参数为`( 数组下标 )`
- 返回`( 新的数组 )`
- 调用实例如下

  ```javascript
  function arrayRemove() {
    var array=['1','2','3'];
    alert(angular.toJson(array.remove(1)));
  }
  ```

##### 4.对象转成数组 `objToString`
- 函数参数为`( 对象 )`
- 返回`( 字符串 )`
- 调用实例如下

  ```javascript
  function objToString(){
    var obj={
      "apiKey":'123123SFgy',
      "apiSecret":'QEZ!$XHFHFTV'
    }
    hlsUtil.objToString(obj);
  }
  ```

##### 5.判断数组中是否含有某个元素  `inArray`
- 函数参数为`( 数组、元素 )`
- 返回 `true of false`
- 调用实例如下

  ```javascript
  function inArray(){
    var array=['1','2','3'];
    var ele = 2;
    hlsUtil.inArray(array,ele);
  }
  ```

##### 6.判断是否为11电话号码 `phoneNumber`
- 参数为`( 手机号 )`
- 通过正则表达式校验 返回 `true of false`
- 调用实例如下

  ```javascript
  function phoneNumber(){
      alert(hlsUtil.phoneNumber(18325379820));
    }
  ```

##### 7.判断+86后11位电话号码 `phoneNumber86`
- 参数为`( 手机号 )`
- 通过正则表达式校验 返回 `true of false`
- 调用实例如下

  ```javascript
  function phoneNumber86(){
    alert(hlsUtil.phoneNumber86('+8618325379820'));
  }
  ```

##### 8.是否是邮件格式 `isEmailAddress`
- 参数为`( 邮箱地址 )`
- 通过正则表达式校验 返回 `true of false`
- 调用实例如下

  ```javascript
  function isEmailAddress(){
      alert(hlsUtil.isEmailAddress('jingchao.wu@hand-china.com'));
    }
  ```
  
##### 9.拨打电话 `callPhone`
- 参数为`( 电话号码 )`
- 调用实例如下

  ```javascript
  //打电话
  function callPhone() {
    hlsUtil.callPhone('18325379820');
  }
  ```
- 实现效果如下
  
  ![](/img/callPhone.PNG)
  
##### 10.时间选择插件 `selectedDate`
- 参数为`( 回调函数 function )` 在回调函数中返回选中的时间
- 调用实例如下

  ```javascript
  function selectedDate() {
    hlsUtil.selectedDate(function (date) {
      alert(date.format('yyyy-MM-dd'));
    })
  }
  ```
- 实现效果如下
  
  ![](/img/selectDate.PNG)


##### 11.操作表 `showSheet`
- 参数1`(sheet标题)`
- 参数2`(操作列表)数组形式`如`['拍照', '从相册选择']`
- 参数3`(回调函数 function)` 回调函数返回操作列表的`index`可自行根据返回值进行其他操作
- 调用实例如下
```javascript
vm.showSheet = function () {
    hlsUtil.showSheet('照片选择方式', ['拍照', '从相册选择'], function (index) {
      alert(index);
    })
  }
```

- 实现效果如下

  ![](/img/ionicSheet.PNG)


##### 12.图片转成base64 `getImageToBase64`
- 参数1`( 图片地址)`
- 参数2`(回调函数 function)`回调函数返回图片的Base64位
- 图片不宜过大建议大小2000X1000因为手机性能不同超过这个大小部分手机会出现假死现象
- 调用实例如下

  ```javascript
  vm.imageTo64 = function () {
    hlsUtil.getImageToBase64('build/img/login/icon.png', function (imgdata) {
      alert(imgdata);
    });
  }
  ````
  
##### 13.拍照 `openCamera`
- 参数1`(对象)`对象中包含4个字段 可为空
   - `quality`: 质量 默认50
   - `allowEdit`: 是否可编辑 默认false
   - `width`: 图片宽度 默认1024,
   - `height`: 图片高度 默认768
- 参数2`(成功回调函数 function)` 回调函数返回图片的base64
- 参数3`(失败回调函数 function)` 返回具体错误
- 调用实例如下

```javascript
  vm.openCamera = function () {
    var obj = {
      quality: 50,
      allowEdit: false,
      width: 1024,
      height: 768
    }
    hlsUtil.openCamera(obj, function (imgdata) {
      alert(imgdata);
    }, function (error) {
      alert(error);
    })
  }
```

##### 14.相册 `takePicture`
- 参数1`(对象)`对象中包含4个字段 可为空
   - `quality`: 质量 默认50
   - `width`: 图片宽度 默认1024
   - `height`: 图片高度 默认768,
   - `maxCount`:选择图片的最大数量默认为10 
- 参数2`(成功回调函数 function)` 回调函数返回图片的地址
- 参数3`(失败回调函数 function)` 返回具体错误
- 调用实例如下

```javascript
  vm.takePicture = function () {
    var obj = {
      quality: 50,
      width: 1024,
      height: 768,
      maxCount: 1
    };
    //
    hlsUtil.takePicture(obj, function (imgUrl) {
      for (var i = 0; i < imgUrl.length; i++) {
        hlsUtil.getImageToBase64(imgUrl[i], function (base64data) {
         alert(base64data);
        });
      }
    }, function (error) {
      alert(error);
    })
  }
```

  - 相册回调函数返回图片的选中存储地址是数组形式的返回
  - 循环返回结果调用base64方法转成base64
  
##### 15.文件预览 `file_view`
- 文件预览需配合中台才能实现，目前实现方式仅仅为Linux服务器，windows的正在寻求方法。
- 文件预览支持Office全家桶
- 参数 `(对象)`
  - 参数 `file_path`目标文件地址
  - 参数 `file_type`文件类型 需带上`.`如`.docx`
- 调用实例如下

```javascript
 function openFile () {
    hlsUtil.file_view({'file_path': "/u01/web/guohuan_dev/web/attment/20160221", "file_type": ".docx"});
  }
```  

##### 16.查看大图 `showBigPicture`
- 图片展示放大查看，支持双指缩放
- 参数1 `图片路径或base64`
- 调用方法如下

```javascript
  vm.pic = 'build/img/login/icon.png';
  vm.showPicture = function (pic) {
    hlsUtil.showBigPicture(pic);
  };
```
  ![](/img/bigPicture.png)
  
##### 17.下拉框 `selectList`
- 参数1 `list`下拉框数据来源，必须包含`code`与`code_name`
- 参数2 `title`下拉框title
- 参数3 `code`下拉框对弈的code
- 参数4 `object`当前下拉框的父对象
- 参数5 `function`回调函数function，返回index 选择的list集合的index和下拉框的父对象，会在对象中插入code和code_n字段
- 调用实例如下

```javascript
vm.test = {}
  vm.selectBpType = function () {
    var list = [
      {
        "code": "NP",
        "code_name": "个人"
      }, {
        "code": "ORG",
        "code_name": "企业"
      }
    ];
    var ttile = '客户分类';
    hlsUtil.selectList(list, ttile, 'bp_type', vm.test, function (index, result) {
      console.log(angular.toJson(list[index]));
      console.log(angular.toJson(result));//{"bp_type":"NP","bp_type_n":"个人"}
      vm.test = result;
    });
  }
``` 
- 页面效果如下

  ![](/img/selectList.png);

##### 18.带搜索条件下拉框 `selectSearchList`
- 参数1 `list`下拉框数据来源，必须包含`code`与`code_name`
- 参数2 `code`下拉框对弈的code
- 参数3 `object`当前下拉框的父对象
- 参数4 `function`回调函数function，返回index 选择的list集合的index和下拉框的父对象，会在对象中插入code和code_n字段
- 调用实例如下

```javascript
  vm.selectBrand = function () {
    hlsUtil.selectSearchList(vm.brands, 'brand_id', vm.test, function (index, result) {
      console.log(angular.toJson(vm.brands[index]));
      vm.test = result;
    });
  };
``` 
- 实现效果如下
  
  ![](/img/selectSearchList.png)


  

 
  
  



  






