闫增涛
2024-11-05 58e3b80c2d26b831900759bf8666c7fd9c759df5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
<template>
  <div class="updateDownloadInfo" v-if="showUpdateInfo">
    <el-alert
      :title="`检测到新版本,正在下载安装包${
        updateDownloadInfo?.percent ? ',进度:' + updateDownloadInfo?.percent + '%' : '...'
      }`"
      type="info"
      effect="dark"
    />
  </div>
  <RouterView />
</template>
 
<script setup lang="ts">
import { ref, reactive, inject } from 'vue'
import { RouterView, useRouter } from 'vue-router'
import { useDownloadTask, useExportTask } from '@/store'
import { ElMessage, ElMessageBox } from 'element-plus'
const router = useRouter()
 
const request = inject('request')
 
const downloadTask = useDownloadTask()
const ExportTask = useExportTask()
 
if (window.electronAPI) {
  window.electronAPI.onLogout((data) => {
    localStorage.removeItem("token")
    localStorage.removeItem("userInfo")
    router.replace({
      path: '/login'
    })
  })
 
  window.electronAPI.onOpenUrl((data) => {
    let taskInfo = null
    let downloadInfo = decodeURI(data)
    console.log(downloadInfo, '接受到的taskInfo')
    try {
      taskInfo = JSON.parse(downloadInfo)
    } catch (error) {
      taskInfo = null
    }
    if (taskInfo) {
      router.replace({
        path: '/home'
      })
      window.electronAPI.newDownloadTask(taskInfo)
    }
  })
 
  // 绑定消息提醒
  window.electronAPI.onShowMessage((data) => {
    // 获取到消息后修改全局数据,页面监听全局数据进行变化
    if (data.showType) {
      switch (data.showType) {
        case 'DownloadTask':
          downloadTask.setMsgData(data)
          break
        case 'ExportTask':
          ExportTask.setMsgData(data)
          break
      }
    } else {
      downloadTask.setMsgData(data)
    }
  })
 
  // 绑定下载任务变化更新
  window.electronAPI.onDownloadTaskChange((task) => {
    downloadTask.setUpdateList()
  })
 
  // 绑定导出任务变化更新
  window.electronAPI.onExportTaskChange((task) => {
    ExportTask.setUpdateList()
  })
 
  const showUpdateInfo = ref(false)
  const updateDownloadInfo = ref()
 
  // 监听程序更新下载
  window.electronAPI.onUpdateDownloadProgress((data) => {
    showUpdateInfo.value = true
    console.log(data, 'updateDownloadInfo')
    updateDownloadInfo.value = data
  })
 
  // 监听程序更新下载完成
  window.electronAPI.onUpdateDownloadSuccess((data) => {
    showUpdateInfo.value = false
    ElMessageBox.confirm('检测到新版本,安装包已下载完成,是否立即更新?', '检查更新', {
      confirmButtonText: '更新',
      cancelButtonText: '取消',
      type: 'warning'
    })
      .then(() => {
        window.electronAPI.updateApp()
      })
      .catch(() => {})
  })
}
const getUrlParam = (paraName) => {
  var url = window.location.toString()
  var arrObj = url.split('?')
  if (arrObj.length > 1) {
    var arrPara = arrObj[1].split('&')
    var arr
    for (var i = 0; i < arrPara.length; i++) {
      arr = arrPara[i].split('=')
      if (arr != null && arr[0] == paraName) {
        return arr[1]
      }
    }
    return ''
  } else {
    return ''
  }
}
 
let bookId = getUrlParam('bookId')
let chapter = getUrlParam('chapter')
let startPage = getUrlParam('startPage')
let token = getUrlParam('token')
if(bookId){
  localStorage.setItem('bookId', bookId)
}
 
if(token && token != null && token != 'null'){
  localStorage.setItem('token', token)
}
if(chapter && startPage){
  localStorage.setItem('chapter', chapter)
  localStorage.setItem('startPage', startPage)
}
if (bookId) {
  router.replace({
    path: '/home',
    query: { bookId: bookId }
  })
}
</script>
 
<style>
.updateDownloadInfo {
  position: fixed;
  top: 2px;
  left: 82px;
  right: 2px;
  z-index: 999;
}
 
@font-face {
  font-family: "swiper-icons";
  src: url("data:application/font-woff;charset=utf-8;base64, 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")
    format("woff");
  font-weight: 400;
  font-style: normal;
}
</style>