app.js 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. // app.js
  2. // 将属性加入相应类型对象中
  3. import './utils/prototype/prototypeArray';
  4. import './utils/prototype/prototypeObject';
  5. import './utils/prototype/prototypeNumber';
  6. import './utils/prototype/prototypeString';
  7. import './utils/prototype/prototypeDatetime';
  8. import './mixins/mixins.js';
  9. // api/pages中的路由服务文件
  10. const common = require('./api/pages/common/common.js');
  11. const setting = require('./api/pages/other/setting.js');
  12. const company = require('./api/pages/other/company.js');
  13. const user = require('./api/pages/core/user.js');
  14. const staff = require('./api/pages/mst/staff.js');
  15. const staffRight = require('./api/pages/mst/staffRight.js');
  16. const staffPurview = require('./api/pages/mst/staffPurview.js');
  17. const settingValue = require('./api/pages/mst/settingValue.js');
  18. const customer = require('./api/pages/core/customer.js');
  19. const role = require('./api/pages/mst/role.js');
  20. const roleFun = require('./api/pages/mst/roleFun.js');
  21. const org = require('./api/pages/mst/org.js');
  22. const roleSensitive = require('./api/pages/mst/roleSensitive.js');
  23. const goodsBrand = require('./api/pages/mst/goodsBrand.js');
  24. const goodsCategory = require('./api/pages/mst/goodsCategory.js');
  25. const goodsSeries = require('./api/pages/mst/goodsSeries.js');
  26. const unit = require('./api/pages/mst/unit.js');
  27. const supplier = require('./api/pages/mst/supplier.js');
  28. const warehouse = require('./api/pages/mst/warehouse.js');
  29. const saleChannel = require('./api/pages/mst/saleChannel.js');
  30. const goodsSku = require('./api/pages/mst/goodsSku.js');
  31. const basicData = require('./api/pages/mst/basicData.js');
  32. const customerMst = require('./api/pages/mst/customer.js');
  33. // api服务路由文件
  34. var apiList = [common, setting, company, user, staff, staffRight, staffPurview, settingValue, customer, role, roleFun, org, roleSensitive, goodsBrand, goodsCategory, goodsSeries, unit, supplier, warehouse, saleChannel, goodsSku, basicData,customerMst]
  35. const util = require('./utils/util.js')
  36. const baseMethod = require('./api/pages/baseMethod.js')
  37. const baseRoute = require('./api/pages/baseRoute.js')
  38. //初始化国际化语言设置
  39. const LangUtils = require('./utils/LangUtils')
  40. //app.js
  41. const api = require('/utils/api.js');
  42. // // 引入文件系统管理器模块
  43. // const fs = wx.getFileSystemManager();
  44. // // 要读取的文件夹路径
  45. // const folderPath = '/api/pages'; // 将此处的'/path/to/folder'替换为实际的文件夹路径
  46. // // 定义递归函数,用于读取指定目录下所有的.js文件
  47. // function readJsFiles_old(dirPath) {
  48. // let returnFiles = []
  49. // console.log('files1',dirPath,fs);
  50. // // 读取当前目录下的文件列表
  51. // const files = fs.readdirSync(dirPath);
  52. // console.log('files2',files);
  53. // for (let i = 0; i < files.length; i++) {
  54. // const file = files[i];
  55. // // 构建完整路径
  56. // let fullpath = dirPath + '/' + file;
  57. // // 如果是js文件就返回
  58. // if (file.endsWith('.js')) {
  59. // // fullpath = '@' + fullpath
  60. // console.log('f1', fullpath);
  61. // let item = require(fullpath);
  62. // console.log('f2', item);
  63. // if (file != 'baseMethod.js' && file != 'baseRoute.js') {
  64. // item.name = file.replace('.js', '');
  65. // returnFiles.push(item);
  66. // }
  67. // } else if (fs.statSync(fullpath).isDirectory()) {
  68. // console.log('b3', fullpath);
  69. // // 如果是文件夹则递归调用自身处理子级文件夹
  70. // let returns = readJsFiles(fullpath);
  71. // returns.forEach(it => {
  72. // returnFiles.push(it);
  73. // })
  74. // }
  75. // }
  76. // return returnFiles;
  77. // }
  78. //自动更新对象
  79. const updateManager = wx.getUpdateManager()
  80. App({
  81. onLaunch() {
  82. console.log("onLaunch");
  83. // LangUtils.setTabBarLang();
  84. //自动定时检测是否有新版本
  85. this.checkHasUpdate();
  86. },
  87. /**
  88. * 检测是否有新版本
  89. */
  90. checkHasUpdate: function () {
  91. var _this = this;
  92. updateManager.onCheckForUpdate(function (res) {
  93. setTimeout(function () {
  94. // 请求完新版本信息的回调
  95. if (res.hasUpdate && !_this.globalData.downLoadApp) {
  96. //有新版本,并且没下载过,才下载。不然会重复提示
  97. _this.downLoadApp();
  98. }
  99. _this.checkHasUpdate()
  100. }, 60000)
  101. })
  102. },
  103. /**
  104. * 下载新版本
  105. */
  106. downLoadApp() {
  107. var _this = this;
  108. _this.globalData.downLoadApp = true //下载标识改变,
  109. // 1.下载成功
  110. updateManager.onUpdateReady(function () {
  111. wx.showModal({
  112. title: '更新提示',
  113. content: '检测到应用有新版本,是否现在加载最新版本?',
  114. cancelText: '稍后',
  115. success(res) {
  116. if (res.confirm) {
  117. // 2.新的版本已经下载好,用户确定后调用 applyUpdate 应用新版本并重启
  118. _this.updateApp();
  119. } else {
  120. wx.showModal({
  121. title: '提示',
  122. content: '点击下方导航“我的” - 点击版本号后面“箭头”按钮,即可进行手动加载最新版本',
  123. showCancel: false
  124. })
  125. }
  126. }
  127. })
  128. })
  129. // 下载失败
  130. updateManager.onUpdateFailed(function () {
  131. wx.showModal({
  132. title: '自动下载最新应用包失败',
  133. content: '请检查您的网络环境是否正常,或尝试结束微信进程后重新进入小程序。',
  134. showCancel: false
  135. })
  136. })
  137. },
  138. /**
  139. * 更新并重启应用
  140. */
  141. updateApp() {
  142. updateManager.applyUpdate()
  143. },
  144. globalData: {
  145. downLoadApp: false,
  146. userInfo: null,
  147. openid: null,
  148. unionid: null,
  149. sessionkey: null,
  150. },
  151. })
  152. try {
  153. // 调用readdirSync()方法读取文件夹内容
  154. // let files = readJsFiles(folderPath);
  155. let app = getApp();
  156. let routeUrl = {};
  157. let name = null;
  158. apiList.forEach(m => {
  159. // console.log('values',m,Object.values(m),Object.keys(m)[0],m['routeUrl']);
  160. app.globalData[Object.keys(m)[0]] = Object.assign(Object.values(m)[0], baseMethod.baseService)
  161. // // 如果没有路由,就建一个路由
  162. // if (!m['routeUrl']) {
  163. // // m['routeUrl'] = {}
  164. // // m['routeUrl'][m.name] = {}
  165. // // // 加入共通路由
  166. // // m['routeUrl'][m.name] = Object.assign(m['routeUrl'][m.name], baseRoute.routeUrl)
  167. // } else {
  168. // util.objectMergeByMainJs(m['routeUrl'][m.name], baseRoute.routeUrl)
  169. // }
  170. // 必须有一个路由
  171. if (m['routeUrl']) {
  172. name = Object.keys(m['routeUrl'])[0];
  173. util.objectMergeByMainJs(m['routeUrl'][name], baseRoute.routeUrl)
  174. }
  175. if (name && name != 'common') {
  176. routeUrl[name] = m['routeUrl'][name];
  177. // console.log('routeUrl',m,routeUrl,name,m['routeUrl'][name]);
  178. }
  179. })
  180. app.globalData['routeUrl'] = routeUrl;
  181. // 输出结果
  182. console.log('文件列表:', apiList, baseMethod, routeUrl);
  183. // 国际化的初始化
  184. LangUtils.initLang();
  185. let langSrc = LangUtils.getLangSrc()
  186. console.log('langSrc', langSrc);
  187. app.globalData['lang'] = { ...langSrc.items };
  188. } catch (error) {
  189. console.error('读取文件夹失败:', error);
  190. }