app.js 10 KB

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