App.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500
  1. <script>
  2. import {
  3. isMemo
  4. } from '@/utils/passwordMemo.js'
  5. import ScanCode from '@/mixins/ScanCode.js'
  6. import {
  7. getLatestVersion
  8. } from '@/api/common.js'
  9. import Vue from 'vue'
  10. export default {
  11. mixins: [ScanCode],
  12. onLaunch: function() {
  13. //console.log('App Launch')
  14. // 配置1秒后自动关闭启动页
  15. console.log('Vue version:~~~', Vue.version);
  16. // #ifdef APP-PLUS
  17. const apiInfo = uni.getStorageSync('apiInfo')
  18. console.log('apiInfo:', apiInfo)
  19. if (apiInfo.protocal) {
  20. Vue.prototype.apiUrl = `${apiInfo.protocal}${apiInfo.hostname}:${apiInfo.port}/api`
  21. Vue.prototype.webviewUrl = `${apiInfo.protocal}${apiInfo.hostname}:${apiInfo.port}`
  22. }
  23. setTimeout(() => {
  24. plus.navigator.closeSplashscreen()
  25. }, 1000)
  26. let token = uni.getStorageSync('token')
  27. // 记住密码
  28. if (isMemo() && token) {
  29. console.log('redirectTo')
  30. uni.reLaunch({
  31. url: '/pages/home/home'
  32. })
  33. }
  34. getLatestVersion().then(res => {
  35. console.log('res:', res)
  36. const {
  37. appVersion
  38. } = uni.getAppBaseInfo()
  39. if (appVersion != res.versionCode) {
  40. uni.showModal({
  41. title: `发现新版本(${res.versionCode})`,
  42. content: '更新说明:' + res.releaseNotes,
  43. confirmText: '立即更新',
  44. success: (val) => {
  45. if (val.confirm) {
  46. const downloadTask = uni.downloadFile({
  47. url: `${Vue.prototype.webviewUrl}/kd-aiot/${res.fileStorePath}`,
  48. success: (data) => {
  49. if (data.statusCode === 200) {
  50. uni.saveFile({
  51. tempFilePath: data
  52. .tempFilePath,
  53. success: (saveRes) => {
  54. // uni.showToast({
  55. // title: '下载成功',
  56. // icon: 'success'
  57. // });
  58. // uni.hideLoading();
  59. // uni.showLoading({
  60. // title: "正在更新...",
  61. // mask: true,
  62. // });
  63. // 调用安装逻辑
  64. plus.runtime.install(
  65. saveRes
  66. .savedFilePath, {
  67. force: true
  68. },
  69. function() {
  70. // uni
  71. // .hideLoading();
  72. },
  73. function() {
  74. // uni
  75. // .hideLoading();
  76. uni.showToast({
  77. title: '更新失败',
  78. icon: 'error'
  79. });
  80. });
  81. }
  82. });
  83. }
  84. }
  85. });
  86. // 先显示初始的loading提示
  87. uni.showLoading({
  88. title: "正在下载安装包: 0%",
  89. mask: true,
  90. });
  91. // 记录上次显示的进度,避免频繁更新
  92. let lastProgress = 0;
  93. let loadingVisible = true;
  94. downloadTask.onProgressUpdate((ress) => {
  95. console.log('下载进度:', ress)
  96. // 只在进度有明显变化(每10%)或者达到100%时更新提示
  97. if ((ress.progress > lastProgress && ress.progress %
  98. 10 === 0) || ress.progress === 100) {
  99. // 先隐藏再显示以更新内容
  100. if (loadingVisible) {
  101. uni.hideLoading();
  102. }
  103. if (ress.progress < 100) {
  104. uni.showLoading({
  105. title: "正在下载安装包: " + ress
  106. .progress + "%",
  107. mask: true,
  108. });
  109. loadingVisible = true;
  110. } else {
  111. loadingVisible = false;
  112. }
  113. lastProgress = ress.progress;
  114. }
  115. })
  116. // 确保任务完成时隐藏loading
  117. downloadTask.onStop(() => {
  118. if (loadingVisible) {
  119. uni.hideLoading();
  120. loadingVisible = false;
  121. }
  122. })
  123. downloadTask.onError(() => {
  124. if (loadingVisible) {
  125. uni.hideLoading();
  126. loadingVisible = false;
  127. }
  128. })
  129. }
  130. }
  131. });
  132. }
  133. }).catch(err => {
  134. console.log('err:', err)
  135. })
  136. // #endif
  137. // getLatestVersion
  138. },
  139. onShow: function() {
  140. console.log('App Show')
  141. },
  142. onHide: function() {
  143. //console.log('App Hide')
  144. }
  145. }
  146. </script>
  147. <style src="@/static/iconFont/iconfont.css"></style>
  148. <style lang="scss">
  149. @import "@/uni_modules/uview-ui/index.scss";
  150. @import '@/static/common.scss';
  151. /*每个页面公共css */
  152. /*icon-font */
  153. @font-face {
  154. font-family: 'iconfont';
  155. /* Project id 3211415 */
  156. src: url('~@/static/font/iconfont.eot?t=1648783395722');
  157. /* IE9 */
  158. src: url('~@/static/font/iconfont.eot?t=1648783395722#iefix') format('embedded-opentype'),
  159. /* IE6-IE8 */
  160. url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'),
  161. url('~@/static/font/iconfont.woff?t=1648783395722') format('woff'),
  162. url('~@/static/font/iconfont.ttf?t=1648783395722') format('truetype'),
  163. url('~@/static/font/iconfont.svg?t=1648783395722#iconfont') format('svg');
  164. }
  165. .uni-system-preview-image {
  166. z-index: 99999 !important;
  167. }
  168. .iconfont {
  169. font-family: 'iconfont' !important;
  170. font-size: 16px;
  171. font-style: normal;
  172. -webkit-font-smoothing: antialiased;
  173. -moz-osx-font-smoothing: grayscale;
  174. }
  175. .required-mark-new::before {
  176. content: "*";
  177. color: red;
  178. position:absolute;
  179. left:7rpx;
  180. }
  181. .footerButton {
  182. background: #fff
  183. }
  184. .icon-chanpinchuku:before {
  185. content: '\e6a1';
  186. }
  187. .icon-chanpinruku:before {
  188. content: '\e6a2';
  189. }
  190. .icon-guanbi:before {
  191. content: '\e6a0';
  192. }
  193. .icon-benyuewancheng:before {
  194. content: '\e697';
  195. }
  196. .icon-yijingfenpai:before {
  197. content: '\e698';
  198. }
  199. .icon-zhengzaichuli:before {
  200. content: '\e699';
  201. }
  202. .icon-gongzuoliangzhishushushi:before {
  203. content: '\e69a';
  204. }
  205. .icon-dangqiangaojing:before {
  206. content: '\e69b';
  207. }
  208. .icon-yizhihang_1:before {
  209. content: '\e69c';
  210. }
  211. .icon-benyuezaizhi:before {
  212. content: '\e69d';
  213. }
  214. .icon-dangqianyanshi:before {
  215. content: '\e69e';
  216. }
  217. .icon-chexiao:before {
  218. content: '\e69f';
  219. }
  220. .icon-shanchu:before {
  221. content: '\e696';
  222. }
  223. .icon-jiahao:before {
  224. content: '\e694';
  225. }
  226. .icon-jianhao:before {
  227. content: '\e695';
  228. }
  229. .icon-xiajiantou1:before {
  230. content: '\e681';
  231. }
  232. .icon-cuiban:before {
  233. content: '\e682';
  234. }
  235. .icon-shaixuan:before {
  236. content: '\e683';
  237. }
  238. .icon-youjiantou1:before {
  239. content: '\e684';
  240. }
  241. .icon-bianji:before {
  242. content: '\e685';
  243. }
  244. .icon-pifu:before {
  245. content: '\e686';
  246. }
  247. .icon-a-youjiantou1:before {
  248. content: '\e687';
  249. }
  250. .icon-tongjibaobiao:before {
  251. content: '\e688';
  252. }
  253. .icon-kuneipandian:before {
  254. content: '\e689';
  255. }
  256. .icon-zichanruku:before {
  257. content: '\e68a';
  258. }
  259. .icon-zuojiantou1:before {
  260. content: '\e68b';
  261. }
  262. .icon-shangjiantou1:before {
  263. content: '\e68c';
  264. }
  265. .icon-tuichu:before {
  266. content: '\e68d';
  267. }
  268. .icon-ditu:before {
  269. content: '\e68e';
  270. }
  271. .icon-tijiao:before {
  272. content: '\e68f';
  273. }
  274. .icon-wenjian:before {
  275. content: '\e690';
  276. }
  277. .icon-mokuai-sousuo:before {
  278. content: '\e691';
  279. }
  280. .icon-kuneitiaobo:before {
  281. content: '\e692';
  282. }
  283. .icon-zichanchuku:before {
  284. content: '\e693';
  285. }
  286. .icon-gouxuan:before {
  287. content: '\e680';
  288. }
  289. .icon-dayintiaoma:before {
  290. content: '\e67e';
  291. }
  292. .icon-saoyisao:before {
  293. content: '\e67f';
  294. }
  295. .icon-caozuo:before {
  296. content: '\e65b';
  297. }
  298. .icon-gongdanguanli:before {
  299. content: '\e65c';
  300. }
  301. .icon-shangchuanzhaopian:before {
  302. content: '\e65d';
  303. }
  304. .icon-shangjiantou:before {
  305. content: '\e65e';
  306. }
  307. .icon-daizhihangrenwu:before {
  308. content: '\e65f';
  309. }
  310. .icon-mima:before {
  311. content: '\e660';
  312. }
  313. .icon-gongzuo:before {
  314. content: '\e661';
  315. }
  316. .icon-weixiugongdan:before {
  317. content: '\e662';
  318. }
  319. .icon-shebeichuku:before {
  320. content: '\e663';
  321. }
  322. .icon-shebeikucun:before {
  323. content: '\e664';
  324. }
  325. .icon-wodegongdan:before {
  326. content: '\e665';
  327. }
  328. .icon-shebeiruku:before {
  329. content: '\e666';
  330. }
  331. .icon-shebeikucuntongji:before {
  332. content: '\e667';
  333. }
  334. .icon-xiajiantou:before {
  335. content: '\e668';
  336. }
  337. .icon-wodeyiban:before {
  338. content: '\e669';
  339. }
  340. .icon-shixiangxinzeng:before {
  341. content: '\e66a';
  342. }
  343. .icon-shouye:before {
  344. content: '\e66b';
  345. }
  346. .icon-xundianjian:before {
  347. content: '\e66c';
  348. }
  349. .icon-wodedaiban:before {
  350. content: '\e66d';
  351. }
  352. .icon-wuliaoruku:before {
  353. content: '\e66e';
  354. }
  355. .icon-pandiangongdan:before {
  356. content: '\e66f';
  357. }
  358. .icon-yichangfankui:before {
  359. content: '\e670';
  360. }
  361. .icon-zhanghao-wode:before {
  362. content: '\e671';
  363. }
  364. .icon-wodexiaoxi:before {
  365. content: '\e672';
  366. }
  367. .icon-zihangchuzhi:before {
  368. content: '\e673';
  369. }
  370. .icon-youjiantou:before {
  371. content: '\e674';
  372. }
  373. .icon-a-baoyangputong:before {
  374. content: '\e675';
  375. }
  376. .icon-xundianjianditu:before {
  377. content: '\e676';
  378. }
  379. .icon-yizhihang:before {
  380. content: '\e677';
  381. }
  382. .icon-zhuanpai:before {
  383. content: '\e678';
  384. }
  385. .icon-baogong:before {
  386. content: '\e679';
  387. }
  388. .icon-beijian:before {
  389. content: '\e67a';
  390. }
  391. .icon-zuojiantou:before {
  392. content: '\e67b';
  393. }
  394. .icon-baoxiu:before {
  395. content: '\e67c';
  396. }
  397. .icon-a-baoyangrunhua:before {
  398. content: '\e67d';
  399. }
  400. </style>