StartUpPage.vue 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. <template>
  2. <el-container class="container-width rounded">
  3. <el-header class="header">
  4. <div class="d-flex">
  5. <div class="" v-show="iconShow">
  6. <span class="header-return webkit-drag">
  7. <a @click="goURL">
  8. <i class="fas fa-angle-left" style="vertical-align: text-top;cursor: pointer"></i>
  9. </a>
  10. </span>
  11. </div>
  12. <div v-if="iconShow" class="p-2"><img src="../assets/img/logo.png" width="30" height="30"></div>
  13. <div class="pt-2 pb-2 pr-2" v-else ><img src="../assets/img/logo.png" width="30" height="30"></div>
  14. <div class="p-2"><h5 class="mt-1">纵横Z+ 造价工作平台 <span class="version-name">版本:V{{ version }}</span></h5></div>
  15. <div class="ml-auto p-2 pt-3 webkit-drag">
  16. <div class="d-flex flex-wrap">
  17. <div class="">
  18. <update-header ref="update" v-on:softwareDownload="relationDownload"></update-header>
  19. </div>
  20. <div class="">
  21. <download-header ref="download"></download-header>
  22. </div>
  23. <div class="mr-5">
  24. <usb-header ref="usb" v-on:softwareDownload="relationDownload"></usb-header>
  25. </div>
  26. <div class="">
  27. <div class="mr-3"><i class="fas fa-minus" @click="minimizeWindow"></i></div>
  28. </div>
  29. <div class="">
  30. <div class=""><i class="fas fa-times" @click="closeWindow"></i></div>
  31. </div>
  32. </div>
  33. </div>
  34. </div>
  35. </el-header>
  36. <el-main>
  37. <router-view v-on:softwareDownload="relationDownload" v-on:softwareUpdate="relationUpdate"></router-view>
  38. </el-main>
  39. <software-update></software-update>
  40. </el-container>
  41. </template>
  42. <script>
  43. import pkg from '../../../package.json'
  44. import mixin from './mixin'
  45. import SoftwareUpdate from './StartUpPage/SoftwareUpdate'
  46. import UsbHeader from './StartUpPage/UsbHeader'
  47. import DownloadHeader from './StartUpPage/DownloadHeader'
  48. import UpdateHeader from './StartUpPage/UpdateHeader'
  49. const electron = require('electron').remote
  50. const BrowserWindow = electron.BrowserWindow
  51. const fs = require('fs-extra')
  52. const path = require('path')
  53. export default {
  54. name: 'element-page',
  55. mixins: [mixin],
  56. components: { SoftwareUpdate, UsbHeader, DownloadHeader, UpdateHeader },
  57. data: () => ({
  58. version: pkg.version,
  59. iconShow: false
  60. }),
  61. watch: {
  62. // 如果路由有变化,会再次执行该方法
  63. '$route': 'iconshow'
  64. },
  65. created () {
  66. // 更改为启动前获取最新官网产品数据
  67. let softwarejson = path.join('data/sc_software.json')
  68. if (this.checkOnline()) {
  69. let version = fs.readJsonSync(softwarejson).startup_version
  70. let self = this
  71. this.$http({
  72. url: 'https://smartcost.com.cn/startup/sc_version.json?' + this.RndNum(),
  73. method: 'get',
  74. timeout: 5000
  75. }).then(function (response) {
  76. if (version !== response.data.startup_version) {
  77. // 加入随机数防止缓存
  78. console.log(response.data)
  79. console.log(version)
  80. self.$http.get('https://smartcost.com.cn/startup/sc_software.json?' + self.RndNum())
  81. .then(function (response2) {
  82. fs.writeJsonSync(softwarejson, response2.data)
  83. // 还要更新本地数据
  84. let scproductlist = response2.data.sc_product
  85. let productlist = self.$db.read().get('sc_productData').value()
  86. for (let i in productlist) {
  87. let scproductinfo = scproductlist.find(function (item) {
  88. return item.product_id === productlist[i].product_id
  89. })
  90. self.$db.read().get('sc_productData').updateById(productlist[i].id, scproductinfo).write()
  91. let scdownlist = response2.data.sc_down
  92. let downlist = self.$db.read().get('sc_exeData').value()
  93. for (let j in downlist) {
  94. let scdowninfo = scdownlist.find(function (item) {
  95. return item.dwon_id === downlist[j].down_id
  96. })
  97. if (scdowninfo !== undefined) {
  98. let setinfo = {
  99. keyNumber: scdowninfo.key_number,
  100. keytype: scdowninfo.keytype,
  101. simpleName: scdowninfo.product_title,
  102. versionName: scdowninfo.title
  103. }
  104. self.$db.read().get('sc_exeData').updateById(downlist[j].id, setinfo).write()
  105. }
  106. }
  107. }
  108. })
  109. .catch(function (error2) {
  110. throw error2
  111. })
  112. }
  113. }).catch(function () {
  114. })
  115. // 启动前检测数据库一些异常情况,恢复到上一个状态,暂时包含下载列,安装列, 删除标记delete的字段
  116. this.$db.read().get('sc_download').removeWhere({ delete: true }).write()
  117. let downinfo = this.$db.read().get('sc_download').find({ status: 5 }).value()
  118. if (downinfo !== undefined) {
  119. this.$db.read().get('sc_download').updateById(downinfo.id, { show: true, start: true, pause: false, resume: false }).write()
  120. } else {
  121. let downinfo2 = this.$db.read().get('sc_download').find({ status: 1 }).value()
  122. if (downinfo2 !== undefined) {
  123. this.$db.read().get('sc_download').updateById(downinfo2.id, { status: 5, show: true, start: true, pause: false, resume: false }).write()
  124. }
  125. }
  126. this.$db.read().get('sc_download').updateWhere({ status: 3 }, { status: 2 }).write()
  127. }
  128. },
  129. methods: {
  130. minimizeWindow () {
  131. const window = BrowserWindow.getFocusedWindow()
  132. window.minimize()
  133. },
  134. closeWindow () {
  135. const window = BrowserWindow.getFocusedWindow()
  136. window.close()
  137. },
  138. goURL () {
  139. if (this.$route.path === '/softwarelist') {
  140. let first = this.$db.read().get('sc_hadInstall.first').value()
  141. let url = first ? { path: '/firstopen' } : { path: this.$db.read().get('sc_hadInstall.url').value() }
  142. this.$router.push(url)
  143. } else {
  144. this.$router.push({ path: '/softwarelist' })
  145. }
  146. },
  147. iconshow () {
  148. let path = this.$route.path
  149. if (path === '/softwarelist' || path.indexOf('/softwaredetail') !== -1) {
  150. this.iconShow = true
  151. } else {
  152. this.iconShow = false
  153. }
  154. },
  155. relationDownload (downID) {
  156. console.log(downID)
  157. this.$refs.download.adddownload(downID)
  158. },
  159. relationUpdate () {
  160. this.$refs.update.fetchData()
  161. },
  162. checkOnline () {
  163. if (!navigator.onLine) {
  164. return false
  165. } else {
  166. return true
  167. }
  168. },
  169. // 产生随机数函数
  170. RndNum (n = 6) {
  171. let rnd = ''
  172. for (let i = 0; i < n; i++) {
  173. rnd += Math.floor(Math.random() * 10)
  174. }
  175. return rnd
  176. }
  177. }
  178. }
  179. </script>