/**
 * 附件模块提供了附件上传、下载、编辑等功能,并根据V5业务需求适配一套有UI界面的调用接口,使开发者在适配附件功能时更加快捷、方便、统一<br>
 *     <strong>
 *          页面需要导入的文件
 *          <ul>
 *              <li>cmp-att.js</li>
 *              <li>如果使用的是V5附件套件需要导入以下文件<ul>
 *                  <li>cmp-listView.js  cmp-listView.css(选关联文档用)</li>
 *                  <li>cmp-imgCache.js(选关联文档中协同列表展现用)</li>
 *                  <li>cmp-picker.js   cmp-picker.css(选关联文档搜索文档用)</li>
 *                  <li>cmp-dtPicker.js(选关联文档搜索文档用)</li>
 *                  <li>cmp-search.js    cmp-search.css(选关联文档搜索文档用)</li>
 *                  <li>cmp-accDoc.js   cmp-accDoc.css(选关联文档用)</li>
 *                  <li>cmp-audio.js    cmp-audio.css(录音用)</li>
 *                  <li>cmp-camera.js(拍照,选相册用)</li>
 *                  <li>cmp-v5.js(v5应用公共函数)</li>
 *              </ul></li>
 *          </ul>
 *      </strong>
 * @module Att
 * @subtitle 附件模块
 */



/**
 * 附件部分的上传,下载,查看,编辑等<br>
 *     <span style="color:red">注:在微信端和钉钉端,只支持部分文件格式的查看和下载</span><br>
 *        微信端和钉钉端支持的文件格式有:word,excel,ppt,pptx,pdf,html,png,bmp,jpg,jpeg,gif,doc,docx,xls,xlsx
 * @class att
 * @namespace cmp
 * @type {{}}
 */

/**
 * 附件下载
 * @method download
 * @namespace cmp.att
 * @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 {Boolean} [options.isSaveToLocal] 文件是否保存到本地离线文件中
 *      @param {Function} [options.success] 下载成功后的回调,附件成功下载到本地后的文件地址,文件名称,文件大小等信息返回
 *      @param {Function} [options.error] 下载错误的回调
 *      @param {Function} [options.progress] 下载进度的回调
 * @example
 * ```
 * 文件导入路径:
 * M3App端
 *  <script  src="http://cmp/v1.0.0/js/cordova/__CMPSHELL_PLATFORM__/cordova.js"></script>
 *  <script  src="http://cmp/v1.0.0/js/cordova/cordova-plugins.js"></script>
 *  <script  src="http://cmp/v/js/cmp.js"></script>
 *  <script  src="http://cmp/v/js/cmp-att.js"></script>
 *  ===========================================================================================
 *  微协同端:
 *  <script  src="/seeyon/m3/cmp/js/cmp.js"></script>
 *  <script  src="/seeyon/m3/cmp/js/cmp-att.js"></script>
 *  =========================================================================================
 *  调用组件
 * <script>
 *     cmp.att.download({
     *          url:cmp.seeyonbasepath + "/rest/attachment/file/232323232",
     *          title:"下载的文件名.png",
     *          extData:{
     *               fileId:"xxxxxdd",   //必须是字符串
     *               lastModified:"63hgsjas",//必须是字符串
     *               origin: cmp.origin
     *          },
     *          isSaveToLocal:true,
     *          progress:function(result){
     *              //do something with progress result
     *          },
     *          success:function(result){
     *              //返回的数据格式如下:
     *              result = {
     *                  url:"/storage/emulated/0/Tencent/QQfile_recv/QQDataLineGuidePic.png"//下载成功后文件保存到手机端地址,一般使用这个地址进行文件的显示、打开用
     *                  filename:"保存到手机端的文件名称.doc",
     *                  size:"4336216"//文件大小,单位byte
     *              }
     *                  ....
     *          }
     *          error:function(error){
     *              //do something with error obj
     *          }
     *     });
 * </script>
 * ```
 */

/**
 * 附件上传(支持多文件上传)
 * @method upload
 * @namespace cmp.att
 * @param {Object} options 附件上传配置参数
 *      @param {String} options.url 附件提交到服务器的地址
 *      @param {Array} options.fileList 本地附件资源的路径集,其中单个file对象的格式为<br>
 *          {filepath:"文件路径",fileId:"文件唯一id"}<br>
 *           如果是微信端上传,需要传文件的二进制数据(即html  file控件的二进制数据),如:<br>
 *           {filepath:"文件路径",fileId:"文件唯一id",fileData:file}
 *      @param {String} [options.extData] 扩展到业务数据,如对象ID,业务类型等,用JSon字符串转码后提交到服务器
 *      @param {String} [options.imgIndex] 多张文件上传的时候服务器端认证的顺序关键字段,默认sortNum
 *      @param {Function} [options.progress] 上传进度回调,未完全上传完时,打包的文件会不停地回调此函数,每次回调都会返回fileId,告诉开发者对应的是哪个文件的进度条
 *      @param {Function} [options.success] 上传成功回调,此成功回调是每上传一个文件成功就会回调一次,比如,打包上传3个文件,如果3个文件都上传成功则回调3次,每次上传成功都会返回对应的fileId
 *      @param {Function} [options.error] 上传失败回调,此失败回调是上传将上传失败的文件进行回调,失败的数据都会返回fileId,告诉开发者哪个文件上传失败了
 * @example
 * ```
 * 文件导入路径:
 *  M3App端
 *  <script  src="http://cmp/v1.0.0/js/cordova/__CMPSHELL_PLATFORM__/cordova.js"></script>
 *  <script  src="http://cmp/v1.0.0/js/cordova/cordova-plugins.js"></script>
 *  <script  src="http://cmp/v/js/cmp.js"></script>
 *  <script  src="http://cmp/v/js/cmp-att.js"></script>
 *  ===========================================================================================
 *  微协同端:6.1sp2版本及以后的版本才支持微信端文件上传
 *  <script  src="/seeyon/m3/cmp/js/cmp.js"></script>
 *  <script  src="/seeyon/m3/cmp/js/cmp-att.js"></script>
 *  =========================================================================================
 *  调用组件
 * <script>
 *     //M3壳中上传
 *     cmp.att.upload({
     *          url:cmp.seeyonbasepath+"//rest/attachment?token=" + cmp.token,  //附件上传的服务器地址
     *          fileList:[{
     *              filepath:"file:///storage/emulated/0/Tencent/QQfile_recv/手机端文件.png",
     *              fileId:"12344333",
     *              fileData:"0x48, 0x54, 0x54, 0x50, 0x2F, 0x31, 0x2E, 0x31, 0x20, 0x34,"//微协同才传此值
     *          }],//需要上传的附件列表
     *          title:"",  //上传进度显示名称
     *          extData:"",
     *          progress:function(result){
     *              //返回的数据格式如下:
     *              result = {
     *                 pos:0.456, //0~1的小数,即上传进度的百分比
     *                 fileId:"12344333"//fileId对应开发者传的某一个的fileId
     *              }
     *          },
     *          success:function(result){  //服务器端返回的相应数据
     *              //返回的数据格式如下:
     *              result = {
     *                 fileId:"12344333",//fileId对应开发者传的某一个的fileId
     *                 response:{},//服务器端的响应数据-----请在浏览器控制面板查看其数据格式
     *                 pos:1//上传进度为1,代表完成了上传 
     *              }
     *          }
     *          error:function(error){
     *              //do something
     *          }
     *     });
 *
 *         //支持微信端的附件上传
 *         var fileData;
 *         cmp.att.getFile4Html({  //调用组件获取file控件的二进制数据
 *             success:function(result){
 *                var files = result.files;
 *                var fileSize = files[0].fileSize;//取出file的大小
 *                var filepath = files[0].filepath;//取出file的路径(由于浏览器的安全机制,此路径只是file的名字)
 *                var type = files[0].type;//取出file的类型
 *                fileData = files[0].fileData//取出file的二进制数据
 *             }
 *         });
 *
 *         cmp.att.upload({
     *          url:"cmp.seeyonbasepath+"//rest/attachment?token=" + cmp.token",  //附件上传的服务器地址
     *          fileList:[{filepath:"test.png",fileId:"xxxx",fileData:fileData}],//需要上传file二进制数据
     *          title:"",  //上传进度显示名称
     *          extData:"",
     *          progress:function(result){
     *              //返回的数据格式如下:
     *              result = {
     *                 pos:0.456, //0~1的小数,即上传进度的百分比
     *                 fileId:"12344333"//fileId对应开发者传的某一个的fileId
     *              }
     *          },
     *          success:function(result){  //服务器端返回的相应数据
     *              //返回的数据格式如下:
     *              result = {
     *                 fileId:"12344333",//fileId对应开发者传的某一个的fileId
     *                 response:{},//服务器端的响应数据-----请在浏览器控制面板查看其数据格式
     *                 pos:1//上传进度为1,代表完成了上传
     *              }
     *          }
     *          error:function(error){
     *              //do something
     *          }
     *     });
 * </script>
 * ```
 */


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

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

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

/**
 * 查看附件内容,包括pdf,excel,word,jpeg...<br>
 *     如果是图片,则打开图片查看器,如果是其他文件(office、txt)
 *     <br>Android手机跳转到相应的app或下载对应的app来打开
 *     <br>IOS手机打开对应的app或跳转到appStore去下载
 * @method read
 * @namespace cmp.att
 * @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 {Boolean} [options.extData.editable] 是否可编译(7.0新增)
 *             @param {Boolean} [options.extData.autoSave] 是否自动保存到离线文档(7.0新增)
 *             @param {Boolean} [options.extData.autoOpen] 是否自动打开(7.0新增)
 *      @param {Boolean} [options.openFile] 是否打开文件(7.0新增)
 *      @param {Object} [options.headers] 文件下载头(7.0新增)
 *      @param {String} [options.localPath] 文件本地路径(7.0新增)
 *      @param {String} [options.fileId] 文件唯一标识(7.0新增)
 *      @param {String} [options.type] 文件类型(7.0新增)
 *      @param {Number} [options.size]文件大小(7.0新增)
 *      @param {Function} [options.success] 成功回调
 *      @param {Function} [options.error] 失败回调
 * @example
 * ```
 * 文件导入路径:
 *  M3App端
 *  <script  src="http://cmp/v1.0.0/js/cordova/__CMPSHELL_PLATFORM__/cordova.js"></script>
 *  <script  src="http://cmp/v1.0.0/js/cordova/cordova-plugins.js"></script>
 *  <script  src="http://cmp/v/js/cmp.js"></script>
 *  <script  src="http://cmp/v/js/cmp-att.js"></script>
 *  ===========================================================================================
 *  微协同端
 *  <script  src="/seeyon/m3/cmp/js/cmp.js"></script>
 *  <script  src="/seeyon/m3/cmp/js/cmp-att.js"></script>
 *  =========================================================================================
 *  调用组件
 * <script>
 *     cmp.att.read({
     *          path:cmp.seeyonbasepath + "/rest/attachment/file/232323232",//文件的服务器地址
     *          filename:"文件名.doc",//附件名称
     *          edit:false,  //是否可以进行修改编辑
     *          extData:{
     *               fileId:id,//必须是字符串
     *               lastModified:lastModified,//必须是字符串
     *               origin: cmp.origin
     *          }
     *          success:function(result){
     *              //返回的数据格式如下:
     *              result = "/storage/emulated/0/m3/files/图片.jpeg";
     *              
     *          }
     *          error:function(error){
     *              //do something
     *          }
     *     });
 * </script>
 * ```
 */


/**
 * 保存base64数据到本地
 * @method saveBase64
 * @namespace cmp.att
 * @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.att.saveBase64({
     *          base64:"",
     *          filename:"",//附件名称
     *          type:"png",
     *          success:function(result){
     *              //do something
     *          }
     *          error:function(error){
     *              //do something
     *          }
     *     });
 * </script>
 * ```
 */

/**
 * 获取本地离线文件
 * @method getOfflineFiles
 * @namespace cmp.att
 * @param {Object} options 配置参数
 *      @param {Function} [options.success] 成功回调
 *      @param {Function} [options.error] 失败回调
 * @example
 * ```
 * 文件导入路径:
 *  M3App端
 *  <script  src="http://cmp/v1.0.0/js/cordova/__CMPSHELL_PLATFORM__/cordova.js"></script>
 *  <script  src="http://cmp/v1.0.0/js/cordova/cordova-plugins.js"></script>
 *  <script  src="http://cmp/v/js/cmp.js"></script>
 *  <script  src="http://cmp/v/js/cmp-att.js"></script>
 *  ===========================================================================================
 *  微协同端:6.1sp2版本及以后的版本才支持微信端文件上传
 *  <script  src="/seeyon/m3/cmp/js/cmp.js"></script>
 *  <script  src="/seeyon/m3/cmp/js/cmp-att.js"></script>
 *  =========================================================================================
 *  调用组件
 * <script>
 *     cmp.att.getOfflineFiles({
     *          success:function(result){
     *              //返回的数据格式如下:
     *              result = {
     *                  files:[{  //是一个数组
     *                      filepath:"/storage/emulated/0/Tencent/qq.doc"//文件在手机端的路径,
     *                      fileSize:"1222222",//文件大小,单位byte
     *                      fileData:"文件二进制数据",//微协同才会返回此参数
     *                  }]
     *              }
     *          }
     *          error:function(error){
     *              //do something
     *          }
     *     });
 * </script>
 * ```
 */

/**
 * 打开离线文档模块
 * @method openOfflineFilesModule
 * @namespace cmp.att
 * @param {Object} options 配置参数
 *      @param {Function} [options.success] 成功回调
 *      @param {Function} [options.error] 失败回调
 * @example
 * ```
 * 文件导入路径:
 *  M3App端
 *  <script  src="http://cmp/v1.0.0/js/cordova/__CMPSHELL_PLATFORM__/cordova.js"></script>
 *  <script  src="http://cmp/v1.0.0/js/cordova/cordova-plugins.js"></script>
 *  <script  src="http://cmp/v/js/cmp.js"></script>
 *  <script  src="http://cmp/v/js/cmp-att.js"></script>
 *  ===========================================================================================
 *  微协同端:不支持
 *  =========================================================================================
 *  调用组件
 * <script>
 *     cmp.att.openOfflineFilesModule({
     *          success:function(result){
     *              //do something
     *          }
     *          error:function(error){
     *              //do something
     *          }
     *     });
 * </script>
 * ```
 */

/**
 * office文件编辑
 * @method officeEdit
 * @namespace cmp.att
 * @param {Object} options 配置参数
 *      @param {Function} [options.path] 文件地址
 *      @param {Function} [options.filename] 文件名称
 *      @param {Function} [options.uploadPath] 上传到服务器的地址
 *      @param {Function} [options.callback] 回调函数
 * @example
 * ```
 * 文件导入路径:
 *  M3App端
 *  <script  src="http://cmp/v1.0.0/js/cordova/__CMPSHELL_PLATFORM__/cordova.js"></script>
 *  <script  src="http://cmp/v1.0.0/js/cordova/cordova-plugins.js"></script>
 *  <script  src="http://cmp/v/js/cmp.js"></script>
 *  <script  src="http://cmp/v/js/cmp-att.js"></script>
 *  ===========================================================================================
 *  微协同端:不支持
 *  =========================================================================================
 *  调用组件
 * <script>
 *     cmp.att.officeEdit({
 *              path:"",
 *              filename:"",
 *              uploadPath:"",
     *          callback:function(){
     *              //do something
     *          }
     *     });
 * </script>
 * ```
 */

/**
 * 专门为V5封装的一套附件上传,下载,查看和关联文档的组件
 * @method initUpload
 * @namespace cmp.att
 * @param {String} selector 组件显示的容器
 * @param {Object} options 配置参数
 *      @param {Number} [options.showAuth] 附件按钮显示权限<br>
 *          <ul>
 *              <li>1:只显示附件(包括:【拍照】、【语音】、【本地文件】、【本地图片】</li>
 *              <li>2:只显示【关联文档】</li>
 *              <li>3:只显示【新建文件夹】</li>
 *              <li>4:显示【新建文件夹】+【拍照】+【本地文件】+【本地图片】</li>
 *              <li>-1:除了【新建文件夹】不显示,其他都显示</li>
 *          </ul>
 *      @param {Object} [options.initData] 初始附件数据
 *      @param {Object} [options.initDocData] 初始关联文档数据
 *      @param {Object} [options.clearCache] 是否清空已选数据的缓存(默认为false,设置成true,当点击返回按钮的时候,已选数据被清空,避免弹出附件列表层)
 *      @param {Function} [options.callback] 选择数据后的回调
 *      @param {Function} [options.createFolderCallback] 创建文件夹的回调调用开发者提供的接口
 *      @param {Function} [options.delCallback] 删除数据的回调
 * @example
 * ```
 * 文件导入路径:
 *  M3App端
 *  <script  src="http://cmp/v1.0.0/js/cordova/__CMPSHELL_PLATFORM__/cordova.js"></script>
 *  <script  src="http://cmp/v1.0.0/js/cordova/cordova-plugins.js"></script>
 *  <script  src="http://cmp/v/js/cmp.js"></script>
 *  <script  src="http://cmp/v/js/cmp-att.js"></script>
 *  ===========================================================================================
 *  微协同端:
 *  <script  src="/seeyon/m3/cmp/js/cmp.js"></script>
 *  <script  src="/seeyon/m3/cmp/js/cmp-att.js"></script>
 *  =========================================================================================
 *  调用组件
 * <script>
 *     cmp.att.initUpload("showAreaID",{
     *          showAuth:-1, //按钮显示权限
     *          initData:null, //初始附件数据
     *          initDocData:null, //初始关联文档数据
     *          createFolderCallback:function(){
     *               //调用开发者创建文件夹的接口
     *          },
     *          callback:function(result){ //选择成功后的回调
     *              //do something
     *          },
     *          delCallback:function(result){ //删除数据时的回调
     *              //do something
     *          }
     *     });
 * </script>
 * ```
 * @returns {AttUpload}
 */

/**
 * 附件组件套件(不涉及到ue)<br>
 *     此组件封装了选择文件和上传文件到A8服务器的两个操作
 * @method suite
 * @namespace cmp.att
 * @param {Object} options 配置参数
 *      @param {String} options.type 调用的类型:<br>
 *          <ul>
 *              <li>“photo”:照相</li>
 *              <li>“picture”:本地图片</li>
 *              <li>“accDoc”:关联文档</li>
 *              <li>“voice”:录音</li>
 *              <li>“localFile”:本地文件</li>
 *          </ul>
 *      @param {String} [options.initDocData] 如果type是"accDoc",有初始关联文档值的话,需要传初始关联文档值
 *      @param {Function} [options.success] 成功回调
 *      @param {Function} [options.error] 失败回调
 *      @param {Function} [options.cancel] 取消回调,照相、选相册、选本地文件的取消回调
 *      @param {Number} [options.maxFileSize] 图片,附件选择的最大大小限制,默认是3X1024X1024(即3M)
 *      @param {Number} [options.pictureNum] 用于控制是否多选图片,默认是1,最多是9
 * @example
 * ```
 * 文件导入路径:
 * M3App端
 *  <link rel="stylesheet" href="http://cmp/v/css/cmp.css"></link>
 *  <link rel="stylesheet" href="http://cmp/v/css/cmp-listView.css"></link>
 *  <link rel="stylesheet" href="http://cmp/v/css/cmp-picker.css"></link>
 *  <link rel="stylesheet" href="http://cmp/v/css/cmp-search.css"></link>
 *  <link rel="stylesheet" href="http://cmp/v/css/cmp-accDoc.css"></link>
 *  <script  src="http://cmp/v1.0.0/js/cordova/__CMPSHELL_PLATFORM__/cordova.js"></script>
 *  <script  src="http://cmp/v1.0.0/js/cordova/cordova-plugins.js"></script>
 *  <script  src="http://cmp/v/js/cmp.js"></script>
 *  <script  src="http://cmp/v/js/cmp-audio.js"></script>
 *  <script  src="http://cmp/v/js/cmp-camera.js"></script>
 *  <script  src="http://cmp/v/js/cmp-listView.js"></script>
 *  <script  src="http://cmp/v/js/cmp-imgCache.js"></script>
 *  <script  src="http://cmp/v/js/cmp-picker.js"></script>
 *  <script  src="http://cmp/v/js/cmp-dtPicker.js"></script>
 *  <script  src="http://cmp/v/js/cmp-search.js"></script>
 *  <script  src="http://cmp/v/js/cmp-accDoc.js"></script>
 *  <script  src="http://cmp/v/js/cmp-v5.js"></script>
 *  ===========================================================================================
 *  微协同端:
 *  <link rel="stylesheet" href="/seeyon/m3/cmp/css/cmp.css"/>
 *  <link rel="stylesheet" href="/seeyon/m3/cmp/css/cmp-listView.css"/>
 *  <link rel="stylesheet" href="/seeyon/m3/cmp/css/cmp-accDoc.css"/>
 *  <link rel="stylesheet" href="/seeyon/m3/cmp/css/cmp-search.css"></link>
 *  <link rel="stylesheet" href="/seeyon/m3/cmp/css/cmp-accDoc.css"></link>
 *  <script  src="/seeyon/m3/cmp/js/cmp.js"></script>
 *  <script  src="/seeyon/m3/cmp/js/cmp-listView.js"></script>
 *  <script  src="/seeyon/m3/cmp/js/cmp-audio.js"></script>
 *  <script  src="/seeyon/m3/cmp/js/cmp-camera.js"></script>
 *  <script  src="/seeyon/m3/cmp/js/cmp-imgCache.js"></script>
 *  <script  src="/seeyon/m3/cmp/js/cmp-picker.js"></script>
 *  <script  src="/seeyon/m3/cmp/js/cmp-dtPicker.js"></script>
 *  <script  src="/seeyon/m3/cmp/js/cmp-search.js"></script>
 *  <script  src="/seeyon/m3/cmp/js/cmp-accDoc.js"></script>
 *  <script  src="/seeyon/m3/cmp/js/cmp-v5.js"></script>
 *  =========================================================================================
 *  调用组件
 * <script>
 *     cmp.att.suite({
     *          type:"photo",
     *           pictureNum:9,
     *          initDocData:null, //初始关联文档数据
     *          maxFileSize:5*1024*1024,
     *          success:function(result){ //选择成功后的回调
     *              //返回的是A8服务器端的数据格式,请使用chrome远程调试手机的方式在浏览器控制面板查看返回的数据格式
     *              //如果是【本地图片】类型的情况,文件每上传成功一次就会回调此函数一次
     *          },
     *          error:function(result){ //删除数据时的回调
     *              //do something
     *          },
     *          cancel:function(result){//选图片,拍照,录音、本地文件取消选择时的回调
     *             //do something
     *          }
     *     });
 * </script>
 * ```
 */


/**
 * V5附件类(直接渲染已经存在的附件)
 * @method init
 * @namespace cmp.att
 * @param {String} selector 容器选择器,定义于页面装载附件对象的容器
 * @param {Object} [atts] //附件数据
 * @param {Object} [docs]//关联文档数据
 * @param {Object} [options] 附件操作配置参数
 *    @param {Function} [options:callback] 关联文档协同查看走开发者自定义的回调函数
 *    @param {Boolean} [options.isShowDelete] 是否显示删除按钮,删除按钮会绑定开发者自定义的删除事件,默认:true
 *    @param {Boolean} [options.isDefault] 是否显示默认的附件样式
 *    @param {Function} [options.delCallback] 删除附件的回调
 * @constructor
 * @example
 * ```
 * 文件导入路径:
 * M3App端
 *  <link rel="stylesheet" href="http://cmp/v/css/cmp.css"></link>
 *  <link rel="stylesheet" href="http://cmp/v/css/cmp-listView.css"></link>
 *  <link rel="stylesheet" href="http://cmp/v/css/cmp-picker.css"></link>
 *  <link rel="stylesheet" href="http://cmp/v/css/cmp-search.css"></link>
 *  <link rel="stylesheet" href="http://cmp/v/css/cmp-accDoc.css"></link>
 *  <script  src="http://cmp/v1.0.0/js/cordova/__CMPSHELL_PLATFORM__/cordova.js"></script>
 *  <script  src="http://cmp/v1.0.0/js/cordova/cordova-plugins.js"></script>
 *  <script  src="http://cmp/v/js/cmp.js"></script>
 *  <script  src="http://cmp/v/js/cmp-audio.js"></script>
 *  <script  src="http://cmp/v/js/cmp-camera.js"></script>
 *  <script  src="http://cmp/v/js/cmp-listView.js"></script>
 *  <script  src="http://cmp/v/js/cmp-imgCache.js"></script>
 *  <script  src="http://cmp/v/js/cmp-picker.js"></script>
 *  <script  src="http://cmp/v/js/cmp-dtPicker.js"></script>
 *  <script  src="http://cmp/v/js/cmp-search.js"></script>
 *  <script  src="http://cmp/v/js/cmp-accDoc.js"></script>
 *  <script  src="http://cmp/v/js/cmp-v5.js"></script>
 *  ===========================================================================================
 *  微协同端:
 *  <link rel="stylesheet" href="/seeyon/m3/cmp/css/cmp.css"/>
 *  <link rel="stylesheet" href="/seeyon/m3/cmp/css/cmp-listView.css"/>
 *  <link rel="stylesheet" href="/seeyon/m3/cmp/css/cmp-accDoc.css"/>
 *  <link rel="stylesheet" href="/seeyon/m3/cmp/css/cmp-search.css"></link>
 *  <link rel="stylesheet" href="/seeyon/m3/cmp/css/cmp-accDoc.css"></link>
 *  <script  src="/seeyon/m3/cmp/js/cmp.js"></script>
 *  <script  src="/seeyon/m3/cmp/js/cmp-listView.js"></script>
 *  <script  src="/seeyon/m3/cmp/js/cmp-audio.js"></script>
 *  <script  src="/seeyon/m3/cmp/js/cmp-camera.js"></script>
 *  <script  src="/seeyon/m3/cmp/js/cmp-imgCache.js"></script>
 *  <script  src="/seeyon/m3/cmp/js/cmp-picker.js"></script>
 *  <script  src="/seeyon/m3/cmp/js/cmp-dtPicker.js"></script>
 *  <script  src="/seeyon/m3/cmp/js/cmp-search.js"></script>
 *  <script  src="/seeyon/m3/cmp/js/cmp-accDoc.js"></script>
 *  <script  src="/seeyon/m3/cmp/js/cmp-v5.js"></script>
 *  =========================================================================================
 *  调用组件
 * <script>
 *     cmp.att.init(
 *        selector:"#attsArea",
 *        atts://v5附件对象数据
 *        docs://v5文档对象数据
 *        {
 *           callback:function seeDoc(docData){
 *           },
 *           isShowDelete:true,
 *           isDefault:true,
 *           delCallback:function(data){
 *              //data:将要被删除的附件数据,回调给开发者,开发者自行操作
 *           }
 *        }
 *     );
 * </script>
 * ```
 */


    
Top