/**
 * native模块提供原生交互的基础api<br>
 *     <strong>
 *          页面需要导入的文件
 *          <ul>
 *              <li>cmp-native.js</li>
 *          </ul>
 *      </strong>
 * @module Native
 * @subtitle 原生接口模块
 */



/**
 * 附件部分的上传,下载,查看等,照相机调用,本地文件的增删改查,二维码扫描、制作,定位相关<br>
 * @class native
 * @namespace cmp
 * @type {{}}
 */

/**
 * 附件下载
 * @method download
 * @namespace cmp.native
 * @param {Object} options 配置参数
 *      @param {String} options.url 附件的下载地址(默认:"")
 *      @param {String} [options.title] 在下载进度中的显示名称(默认:"")
 *      @param {Object} [options.extData] 额外参数,用于优化方面的需求的配置(目前可以配置的是文件本地缓存,避免同一个文件重复被下载)
 *             @param {String} [options.extData.fileId] 用于本地缓存的附件唯一ID
 *             @param {String} [options.extData.lastModified] 用于本地缓存的附件唯一更新时间
 *             @param {String} [options.extData.origin] 用于本地缓存的附件唯一的服务器地址,如:http://10.5.6.7:8080
 *      @param {Function} [options.success] 下载成功后的回调,附件成功下载到本地后的文件地址,文件名称,文件大小等信息返回
 *      @param {Function} [options.error] 下载错误的回调
 *      @param {Function} [options.progress] 下载进度的回调
 * @example
 * ```
 * <script>
 *     cmp.native.download({
     *          url:"",
     *          title:"",
     *          extData:{
     *               fileId:id,
     *               lastModified:lastModified,
     *               origin: _.origin
     *          }
     *          progress:function(result){
     *              //do something with progress result
     *          },
     *          success:function(result){
     *              var localUrl = result.url,  //保存到本地的地址
     *                  localFilename=result.filename, //保存到本地的文件名
     *                  size=result.size //文件大小
     *                  ....
     *          }
     *          error:function(error){
     *              //do something with error obj
     *          }
     *     });
 * </script>
 * ```
 */

/**
 * 附件上传(支持多文件上传)
 * @method upload
 * @namespace cmp.native
 * @param {Object} options 附件上传配置参数
 *      @param {String} options.url 附件提交到服务器的地址
 *      @param {Array} options.fileList 本地附件资源的路径集,其中单个file对象的格式为<br>
 *          {filepath:"文件路径",fileId:"文件唯一id"}
 *      @param {String} [options.extData] 扩展到业务数据,如对象ID,业务类型等,用JSon字符串转码后提交到服务器
 *      @param {String} [options.imgIndex] 多张文件上传的时候服务器端认证的顺序关键字段,默认sortNum
 *      @param {Function} [options.progress] 上传进度回调
 *      @param {Function} [options.success] 上传成功回调
 *      @param {Function} [options.error] 上传失败回调
 * @example
 * ```
 * <script>
 *     cmp.native.upload({
     *          url:"",  //附件上传的服务器地址
     *          fileList:[{filepath:"文件路径",fileId:"文件唯一id"}],//需要上传的附件列表
     *          extData:"",
     *          progress:function(result){
     *              var progressVal = result["pos"];  //0~1的小数,即上传进度的百分比
     *          },
     *          success:function(result){  //服务器端返回的相应数据
     *              var filename = result.filename,
     *                  url = result.url,
     *                  size = result.size
     *          }
     *          error:function(error){
     *              //do something
     *          }
     *     });
 * </script>
 * ```
 */


/**
 * 获取下载列表信息
 * @method getDownLoadListInfo
 * @namespace cmp.native
 * @param {Object} [options] 配置参数
 *      @param {Function} [options.success] 成功回调
 *      @param {Function} [options.error] 失败回调
 */

/**
 * 获取上传列表信息
 * @method getUploadListInfo
 * @namespace cmp.native
 * @param {Object} [options] 配置参数
 *      @param {Function} [options.success] 成功回调
 *      @param {Function} [options.error] 失败回调
 */

/**
 * 根据路径读取文件信息
 * @method getFileInfo
 * @namespace cmp.native
 * @param {Object} [options] 配置参数
 *      @param {Array} options.filepath 可以传多个文件路径,返回的信息对应到相应的文件上
 *      @param {Function} [options.success] 成功回调
 *      @param {Function} [options.error] 失败回调
 */

/**
 * 查看附件内容,包括pdf,excel,word,jpeg...
 * @method read
 * @namespace cmp.native
 * @param {Object} options 附件查看配置参数
 *      @param {String} options.path 附件查看的地址,可以是远程地址或者本地地址
 *      @param {String} options.filename 附件名称
 *      @param {Boolean} [options.edit] 是否可以进行编辑,默认:false(注:目前只支持office文档文件的修改编辑,且只能通过wps软件进行修改)
 *      @param {Object} [options.extData] 额外参数,用于优化方面的需求的配置(目前可以配置的是文件本地缓存,避免同一个文件重复被下载)
 *             @param {String} [options.extData.fileId] 用于本地缓存的附件唯一ID
 *             @param {String} [options.extData.lastModified] 用于本地缓存的附件唯一更新时间
 *             @param {String} [options.extData.origin] 用于本地缓存的附件唯一的服务器地址,如:http://10.5.6.7:8080
 *      @param {Function} [options.success] 成功回调
 *      @param {Function} [options.error] 失败回调
 * @example
 * ```
 * <script>
 *     cmp.native.read({
     *          path:"",  //附件查看的地址
     *          filename:"",//附件名称
     *          edit:false,  //是否可以进行修改编辑
     *          extData:{
     *               fileId:id,
     *               lastModified:lastModified,
     *               origin: _.origin
     *          }
     *          success:function(result){
     *              //do something
     *          }
     *          error:function(error){
     *              //do something
     *          }
     *     });
 * </script>
 * ```
 */


/**
 * 保存base64数据到本地
 * @method saveBase64
 * @namespace cmp.native
 * @param {Object} options 配置参数
 *      @param {String} options.base64 base64数据
 *      @param {String} options.filename 保存成文件的名称
 *      @param {String} options.type 保存成文件的类型
 *      @param {Function} [options.success] 保存成功回调
 *      @param {Function} [options.error] 保存失败回调
 * @example
 * ```
 * <script>
 *     cmp.native.saveBase64({
     *          base64:"",
     *          filename:"",//附件名称
     *          type:"png",
     *          success:function(result){
     *              //do something
     *          }
     *          error:function(error){
     *              //do something
     *          }
     *     });
 * </script>
 * ```
 */

/**
 * 获取本地离线文件
 * @method getOfflineFiles
 * @namespace cmp.native
 * @param {Object} options 配置参数
 *      @param {Function} [options.success] 成功回调
 *      @param {Function} [options.error] 失败回调
 * @example
 * ```
 * <script>
 *     cmp.native.getOfflineFiles({
     *          success:function(result){
     *              //do something
     *          }
     *          error:function(error){
     *              //do something
     *          }
     *     });
 * </script>
 * ```
 */

/**
 * 打开离线文档模块
 * @method openOfflineFilesModule
 * @namespace cmp.native
 * @param {Object} options 配置参数
 *      @param {Function} [options.success] 成功回调
 *      @param {Function} [options.error] 失败回调
 * @example
 * ```
 * <script>
 *     cmp.native.openOfflineFilesModule({
     *          success:function(result){
     *              //do something
     *          }
     *          error:function(error){
     *              //do something
     *          }
     *     });
 * </script>
 * ```
 */

/**
 * 本地文件写入和修改
 * @method writeFile
 * @namespace cmp.native
 * @param {Object} options 配置参数
 *      @param {String} options.filename 文件名
 *      @param {String} options.type 文件类型(符合mimetype格式,如"text/plain"-----文本类型,目前只支持文本类型)
 *      @param {String} options.data 写入文件的数据
 *      @param {String} [options.edit] 是否是修改已有的文件(默认false)
 *      @param {Function} [options.success] 成功回调
 *      @param {Function} [options.error] 失败回调
 * @example
 * ```
 * <script>
 *     cmp.native.writeFile({
 *              filename:"一个文本文件.txt",
 *              type:"text/plain",
 *              data:"xxxx",
 *              edit:false,
     *          success:function(result){
     *              //do something
     *          }
     *          error:function(error){
     *              //do something
     *          }
     *     });
 * </script>
 * ```
 */

/**
 * 本地文件的删除
 * @method deleteFile
 * @namespace cmp.native
 * @param {Object} options 配置参数
 *      @param {String} options.filename 文件名
 *      @param {Function} [options.success] 成功回调
 *      @param {Function} [options.error] 失败回调
 * @example
 * ```
 * <script>
 *     cmp.native.deleteFile({
 *              filename:"一个文本文件.txt",
     *          success:function(result){
     *              //do something
     *          }
     *          error:function(error){
     *              //do something
     *          }
     *     });
 * </script>
 * ```
 */

/**
 * 本地文件的内容读取
 * @method readFile
 * @namespace cmp.native
 * @param {Object} options 配置参数
 *      @param {String} options.filename 文件名
 *      @param {Function} [options.success] 成功回调
 *      @param {Function} [options.error] 失败回调
 * @example
 * ```
 * <script>
 *     cmp.native.deleteFile({
 *              filename:"一个文本文件.txt",
     *          success:function(result){
     *              //返回文件的内容,字符串格式
     *          }
     *          error:function(error){
     *              //do something
     *          }
     *     });
 * </script>
 * ```
 */

/**
 * 本地文件的解压
 * @method decompressFile
 * @namespace cmp.native
 * @param {Object} options 配置参数
 *      @param {String} options.filepath 被解压的文件地址
 *      @param {String} [options.decompressPath] 解压路径,(默认应用对应的文件夹)
 *      @param {Function} [options.success] 成功回调
 *      @param {Function} [options.error] 失败回调
 * @example
 * ```
 * <script>
 *     cmp.native.decompressFile({
 *              filepath:"压缩文件.zip",
 *              decompressPath:"",
     *          success:function(result){
     *              //返回被解压的文件路径和成功与否的标识
     *          }
     *          error:function(error){
     *              //do something
     *          }
     *     });
 * </script>
 * ```
 */

/**
 * 判断本地文件是否存在
 * @method fileExist
 * @namespace cmp.native
 * @param {Object} options 配置参数
 *      @param {String} options.filename 文件名
 *      @param {Function} [options.success] 成功回调
 *      @param {Function} [options.error] 失败回调
 * @example
 * ```
 * <script>
 *     cmp.native.fileExist({
 *              filename:"压缩文件.zip",
     *          success:function(result){
     *              //返回文件是否存在的标识
     *          }
     *          error:function(error){
     *              //do something
     *          }
     *     });
 * </script>
 * ```
 */

/**
 * 获取图像方法,开发者可通过配置获取自己想要的图像文件数据
 * @method getPictures
 * @namespace cmp.native
 * @param {Object} [options] 获取图像配置参数对象
 *      @param {Boolean} [options.compress] 是否返回压缩后的图片,true:返回缩略图,false:返回原图
 *      @param {Number} [options.quality] 摄像头品质参数(范围0~100,默认100)
 *      @param {Number} [options.targetWidth] 生成的图像宽度
 *      @param {Number} [options.targetHeight] 生成的图像高度
 *      @param {Boolean} [options.saveToPhotoAlbum] 是否将图像保存到相册
 *      @param {Number} [options.destinationType] 返回的图像数据类型:<br>
 *                                                           <ul>
 *                                                               <li>0:base64格式(默认)</li>
 *                                                               <li>1:图像文件路径</li>
 *                                                               <li>2:本地图片路径</li>
 *                                                           </ul>
 *                                                           <br><span style="color:red;">注:M1平台返回图片路径+base64,纯H5平台只返回base64</span>
 *     @param {Number} [options.sourceType] 获取图像文件的方式:<br>
 *                                                      <ul>
 *                                                          <li>0:图片库</li>
 *                                                          <li>1:摄像头(默认)</li>
 *                                                          <li>2:相册</li>
 *                                                      </ul>
 *    @param {Number} [options.encodingType] 图像编码类型:<br>
 *                                                  <ul>
 *                                                      <li>0:jpeg(默认)</li>
 *                                                      <li>1:png</li>
 *                                                  </ul>
 *    @param {Number} [options.pictureNum] 选择图片的数量:默认数量:9;<br ><span style="color:red;">注:在M1平台下不支持多选</span>
 *
 *    @param {Function} [options.success] 执行成功后的回调函数
 *    @param {Function} [options.error] 执行失败后的回调函数
 *    @returns {Object} result 返回值:<br>
 *        <ul>
 *            <li>result.success:成功与否标识,true:成功;false:失败</li>
 *            <li>result.files:返回的图片数据(数组)
 *                  <ul>
 *                      <li>base64:图片的base64字符串(压缩后的,一般作为缩略图展示)</li>
 *                      <li>filepath:图片的原图路径<span style="color:red;">注:纯H5平台下该值不返回</span></li>
 *                      <li>fileSize:图片的原图大小(单位:byte)</li>
 *                      <li>type:图片的类型</li>
 *                  </ul>
 *            </li>
 *        </ul>
 * @example
 * ```
 * <script>
 *     cmp.camera.getPictures({
     *          compress:true,
     *          quality:100,
     *          targetWidth:-1,
     *          targetHeight:-1,
     *          saveToPhotoAlbum:true,
     *          destinationType:0,
     *          sourceType:1,
     *          encodingType:0,
     *          success:function(cameraResult){
     *                  cameraResult = {
     *                   success:true,
     *                   files:[{  /真实的图片数组
     *                       base64:'data:image/jpg;base64,iVBORw',//图片的base64字符串
     *                       filepath:"/storage/emulated/0/Tencent/QQfile_recv/QQDataLineGuidePic.png", //真实图片的地址
     *                       fileSize:"1024",  //图片大小
     *                       type:"png",
     *                       index:1~9//选择图片的顺序,ios  iphone6无法确定选择的顺序
     *                   }]
     *               };
     *              },
     *          error:function(){
     *                  //do something
     *              }
     *     });
 * </script>
 * ```
 */

/**
 * 扫描二维码
 * @method scanBarcode
 * @namespace cmp.native
 * @param {Object} options 配置参数
 *      @param {Function} [options.success] 成功回调
 *      @param {Function} [options.error] 失败回调
 * @example
 * ```
 * <script>
 *     cmp.native.scanBarcode({
     *          success:function(result){
     *              //返回扫描结果
     *          }
     *          error:function(error){
     *              //do something
     *          }
     *     });
 * </script>
 * ```
 */

/**
 * 扫描二维码的插件,其作用是将扫描结果发给开发者,开发者自行判断结果后,进行开发者传过来的提示,并且根据回调函数保持是否关闭扫描插件
 * @method holdScanBarcode
 * @namespace cmp.native
 * @param {Object} options 配置参数
 *      @param {Function} [options.success] 成功回调
 *      @param {Function} [options.error] 失败回调
 * @example
 * ```
 * <script>
 *     cmp.native.holdScanBarcode({
     *          success:function(result){
     *              //返回扫描结果并返回二维码组件是否关闭/展示新内容回调函数
     *          }
     *          error:function(error){
     *              //do something
     *          }
     *     });
 * </script>
 * ```
 */

/**
 * 制作二维码
 * @method makeBarScan
 * @namespace cmp.native
 * @param {Object} options 配置参数
 *      @param {String} options.data 二维码文字
 *      @param {Function} [options.success] 成功回调
 *      @param {Function} [options.error] 失败回调
 * @example
 * ```
 * <script>
 *     cmp.native.makeBarScan({
 *              data:"二维码文字",
     *          success:function(result){
     *              //二维码图片路径
     *          }
     *          error:function(error){
     *              //do something
     *          }
     *     });
 * </script>
 * ```
 */

/**
 * 获取当前地理位置
 * @method getCurrentPosition
 * @namespace cmp.native
 * @param {Object} options 配置参数
 *      @param {String} options.data 二维码文字
 *      @param {Function} [options.success] 成功回调
 *      @param {Function} [options.error] 失败回调
 * @example
 * ```
 * <script>
 *     cmp.native.getCurrentPosition({
     *          success:function(result){
     *              //地理位置信息
     *          }
     *          error:function(error){
     *              //do something
     *          }
     *     });
 * </script>
 * ```
 */

/**
 * 地图定位
 * @method markLocation
 * @namespace cmp.native
 * @param {Object} options 配置参数
 *      @param {Function} [options.success] 成功回调
 *      @param {Function} [options.error] 失败回调
 * @example
 * ```
 * <script>
 *     cmp.native.markLocation({
     *          success:function(result){
     *              //地理位置信息
     *          }
     *          error:function(error){
     *              //do something
     *          }
     *     });
 * </script>
 * ```
 */

/**
 * 表单-拍照定位(只支持在cmp里)
 * @method takeLocationPicture
 * @namespace cmp.native
 * @param {Object} options 配置参数
 *      @param {String} options.userName 用户名
 *      @param {String} options.uploadPicUrl 图片上传地址
 *      @param {String} options.serverDateUrl 服务器地址
 *      @param {String} options.location
 *      @param {Function} options.success 定位成功回调
 *      @param {Function} [options.error] 定位失败回调
 *      @param {Function} [options.cancel] 定位取消回调
 * @example
 * ```
 * <script>
 *    cmp.native.takeLocationPicture({
 *        userName:"xxxx",
 *        uploadPicUrl:"http://10.5.6.240:88/file/upload/",
 *        serverDateUrl:"http://10.5.6.240:88",
 *        location:"",
 *        success:function(result){
 *             //do something with result
 *        },
 *        error:function(error){
 *        },
 *        cancel:function(result){
 *        }
 *    });
 * </script>
 * ```
 */

/**
 * 表单-位置定位,获取当前的经纬度,以及时间、地名信息(只支持在cmp里)
 * @method getLocationInfo
 * @namespace cmp.native
 * @param {Object} options 配置参数
 *      @param {Function} options.success 定位成功回调
 *      @param {Function} [options.error] 定位失败回调
 * @example
 * ```
 * <script>
 *    cmp.native.getLocationInfo({
 *        success:function(result){
 *             //do something with result
 *        },
 *        error:function(error){
 *        }
 *    });
 * </script>
 * ```
 */

/**
 * 显示地图信息(只支持在cmp里)
 * @method showLocationInfo
 * @namespace cmp.native
 * @param {Object} options 配置参数
 *      @param {String} options.lbsUrl 获取lbs信息的url地址 http://10.5.6.240:88/seeyon/rest/cmplbs/1814357976477972035
 *      @param {String} [options.userName] 用户名(可以不传)
 *      @param {String} [options.memberIconUrl] 用户头像url地址 (可以不传)
 *      @param {Function} options.success 成功回调
 *      @param {Function} [options.error] 失败回调
 * @example
 * ```
 * <script>
 *    cmp.native.showLocationInfo({
 *        lbsUrl:"http://10.5.6.240:88/seeyon/rest/cmplbs/1814357976477972035",
 *        userName:"hezi",
 *        memberIconUrl:"http://10.5.6.240:88/seeyon/rest/avtart/101001"
 *        success:function(result){
 *             //do something with result
 *        },
 *        error:function(error){
 *        }
 *    });
 * </script>
 * ```
 */


    
Top