/**
* 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>
* ```
*/