app.js 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304
  1. /*!
  2. * =====================================================
  3. * User:HZC
  4. * State:公用方法
  5. * =====================================================
  6. */
  7. //所有下载文件存放目录
  8. var DOWNLOADPATH = '_downloads/';
  9. (function($) {
  10. //全局配置(通常所有页面引用该配置,特殊页面使用mui.init({})来覆盖全局配置)
  11. $.initGlobal({
  12. swipeBack: false
  13. });
  14. var back = $.back;
  15. $.back = function() {
  16. var current = plus.webview.currentWebview();
  17. if (current.mType === 'main') { //模板主页面
  18. current.hide('auto');
  19. setTimeout(function() {
  20. document.getElementById("title").className = 'mui-title mui-fadeout';
  21. current.children()[0].hide("none");
  22. }, 200);
  23. } else if (current.mType === 'sub') {
  24. if ($.targets._popover) {
  25. $($.targets._popover).popover('hide');
  26. } else {
  27. current.parent().evalJS('mui&&mui.back();');
  28. }
  29. } else {
  30. back();
  31. }
  32. }
  33. })(mui);
  34. /**
  35. * toggle
  36. */
  37. window.addEventListener('toggle', function(event) {
  38. if (event.target.id === 'M_Toggle') {
  39. var isActive = event.detail.isActive;
  40. var table = document.querySelector('.mui-table-view');
  41. var card = document.querySelector('.mui-card');
  42. if (isActive) {
  43. card.appendChild(table);
  44. card.style.display = '';
  45. } else {
  46. var content = document.querySelector('.mui-content');
  47. content.insertBefore(table, card);
  48. card.style.display = 'none';
  49. }
  50. }
  51. });
  52. /**
  53. * 生成HTML模板
  54. * @param {Object} templateStr :模板
  55. * @param {Object} data
  56. */
  57. function render(templateStr, data) {
  58. return templateStr.replace(/\{([\w\.]*)\}/g, function(str, key) {
  59. var keys = key.split("."),
  60. v = data[keys.shift()];
  61. for (var i = 0, l = keys.length; i < l; i++)
  62. v = v[keys[i]];
  63. return (typeof v !== "undefined" && v !== null) ? v : "";
  64. });
  65. }
  66. /**
  67. * 根据id查找元素
  68. * @param {Object} id
  69. */
  70. function $id(id) {
  71. return document.getElementById(id);
  72. }
  73. /**
  74. * 判断用户是否登录,已经登录执行succeFunc,未登录执行 failedFunc
  75. * @param {Object} successFunc
  76. * @param {Object} failedFunc
  77. */
  78. function checkLoginStatus(successFunc, failedFunc) {
  79. var isAlreadyLogin = window.localStorage.getItem('______isAlreadyLogin_____');
  80. if (isAlreadyLogin == "true") {
  81. successFunc();
  82. } else {
  83. failedFunc();
  84. }
  85. }
  86. /**
  87. * 设置用户登录状态
  88. * @param {Object} msg :true,false
  89. */
  90. function setLoginStatus(msg) {
  91. window.localStorage.setItem('______isAlreadyLogin_____', msg);
  92. }
  93. /**
  94. * 检查当前网络连接状态
  95. * 当前设备网络连接状态未知、未连接网络,提示网络异常,请检查,同时返回false
  96. */
  97. function toastNetworkInfo(msg) {
  98. var b = true;
  99. var network = plus.networkinfo.getCurrentType();
  100. if (network == 1 || network == 0) {
  101. if (msg) {
  102. mui.toast(msg);
  103. }
  104. b = false;
  105. }
  106. return b;
  107. }
  108. /**
  109. * 获取 app 版本
  110. */
  111. function getAppVersion() {
  112. return window.localStorage.getItem("__appVersion");
  113. }
  114. /**
  115. * 设置app版本
  116. */
  117. function setAppVersion() {
  118. var appVersion = plus.runtime.version;
  119. window.localStorage.setItem("__appVersion", appVersion);
  120. }
  121. /**
  122. * 检查是否是刚更新
  123. */
  124. function checkIsUpdate() {
  125. var appVersion = getAppVersion();
  126. var nowVersion = plus.runtime.version;
  127. return (appVersion && appVersion == nowVersion) ? false : true;
  128. }
  129. /**
  130. * 检查是否是新安装
  131. */
  132. function checkIsInstall() {
  133. var appVersion = getAppVersion();
  134. return appVersion ? false : true;
  135. }
  136. /**
  137. * 转换相对路径为绝对路径
  138. * @param {Object} relativePath
  139. */
  140. function convertToAbsoluteURL(relativePath) {
  141. return plus.io.convertLocalFileSystemURL(relativePath);
  142. }
  143. /**
  144. * 删除指定文件
  145. * @param {Object} relativePath:相对路径
  146. */
  147. function delFile(relativePath) {
  148. plus.io.resolveLocalFileSystemURL(relativePath, function(entry) {
  149. entry.remove(function(entry) {
  150. console.log("文件删除成功==" + relativePath);
  151. }, function(e) {
  152. console.log("文件删除失败=" + relativePath);
  153. });
  154. });
  155. }
  156. /**
  157. * 下载
  158. */
  159. function downloadSource(loadUrl, succCallback, errCallback) {
  160. var dtask = plus.downloader.createDownload(loadUrl, {}, function(d, status) {
  161. if (status == 200) {
  162. //下载成功
  163. // console.log('下载成功:"_downloads/"' + d.filename);
  164. succCallback(d.filename);
  165. } else {
  166. //下载失败,需删除本地临时文件,否则下次进来时会检查到图片已存在
  167. // console.log('下载失败:"_downloads/"' + d.filename);
  168. //dtask.abort();//文档描述:取消下载,删除临时文件;(但经测试临时文件没有删除,故使用delFile()方法删除);
  169. errCallback();
  170. }
  171. });
  172. //启动下载任务
  173. dtask.start();
  174. }
  175. /**
  176. * <img>设置图片
  177. *1.从本地获取,如果本地存在,则直接设置图片
  178. *2.如果本地不存在则联网下载,缓存到本地,再设置图片
  179. * @param {Object} imgId
  180. * @param {Object} loadUrl
  181. */
  182. function setImg(imgId, loadUrl) {
  183. if (imgId == null || loadUrl == null) return;
  184. //图片下载成功 默认保存在本地相对路径的"_downloads"文件夹里面, 如"_downloads/logo.jpg"
  185. var filename = loadUrl.substring(loadUrl.lastIndexOf("/") + 1, loadUrl.length);
  186. var relativePath = "_downloads/" + filename;
  187. //检查图片是否已存在
  188. plus.io.resolveLocalFileSystemURL(relativePath, function(entry) {
  189. console.log("图片存在,直接设置=" + relativePath);
  190. //如果文件存在,则直接设置本地图片
  191. setImgFromLocal(imgId, relativePath);
  192. }, function(e) {
  193. console.log("图片不存在,联网下载=" + relativePath);
  194. //如果文件不存在,联网下载图片
  195. setImgFromNet(imgId, loadUrl, relativePath);
  196. });
  197. }
  198. /**
  199. * 给图片标签<img>设置本地图片
  200. * imgId 图片标签<img>的id
  201. * relativePath 本地相对路径 例如:"_downloads/logo.jpg"
  202. * @param {Object} imgId
  203. * @param {Object} relativePath
  204. */
  205. function setImgFromLocal(imgId, relativePath) {
  206. //本地相对路径("_downloads/logo.jpg")转成SD卡绝对路径("/storage/emulated/0/Android/data/io.dcloud.HBuilder/.HBuilder/downloads/logo.jpg");
  207. var sd_path = plus.io.convertLocalFileSystemURL(relativePath);
  208. //给<img>设置图片
  209. $id(imgId).setAttribute("src", sd_path);
  210. }
  211. /**
  212. * 联网下载图片,并设置给<img>
  213. * @param {Object} imgId
  214. * @param {Object} loadUrl
  215. * @param {Object} relativePath
  216. */
  217. function setImgFromNet(imgId, loadUrl, relativePath) {
  218. //先设置下载中的默认图片
  219. var defalutImgPath = convertToAbsoluteURL('_www/images/common/pull_fresh.png');
  220. $id(imgId).setAttribute("src", defalutImgPath);
  221. //创建下载任务
  222. var dtask = plus.downloader.createDownload(loadUrl, {}, function(d, status) {
  223. if (status == 200) {
  224. //下载成功
  225. console.log("下载成功=" + relativePath);
  226. setImgFromLocal(imgId, d.filename);
  227. } else {
  228. //下载失败,需删除本地临时文件,否则下次进来时会检查到图片已存在
  229. console.log("下载失败=" + status + "==" + relativePath);
  230. //dtask.abort();//文档描述:取消下载,删除临时文件;(但经测试临时文件没有删除,故使用delFile()方法删除);
  231. if (relativePath != null)
  232. delFile(relativePath);
  233. }
  234. });
  235. //启动下载任务
  236. var ll = dtask.start();
  237. }
  238. /**
  239. * 设置下载图片
  240. * @param {Object} imgId
  241. */
  242. function setDownloadImage(imgId) {
  243. var defalutImgPath = convertToAbsoluteURL('_www/images/common/pull_fresh.png');
  244. $id(imgId).setAttribute("src", defalutImgPath);
  245. }
  246. /**
  247. * 把所有已经下载的书的id保存在localstorage中
  248. * @param {Object} ids
  249. */
  250. function saveBookIdsInStorage(ids){
  251. window.localStorage.setItem('bookIds____',ids);
  252. }
  253. function getBookIdsFromStorage(){
  254. return window.localStorage.getItem('bookIds____');
  255. }
  256. /**
  257. * 去除字符前后空格
  258. * @param {Object} str
  259. */
  260. function hzcTrim(str){
  261. return str.replace(/(^\s*)|(\s*$)/g,'');
  262. }
  263. /**
  264. * 保存用户id
  265. * @param {Object} userId
  266. */
  267. function saveUserId(userId){
  268. window.localStorage.setItem('__userId__',userId);
  269. }
  270. /**
  271. * 返回用户id
  272. */
  273. function getUserId(){
  274. return window.localStorage.getItem('__userId__');
  275. }