App.vue 21 KB

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