ZaiZai 1 éve
szülő
commit
52f96b2e70
5 módosított fájl, 143 hozzáadás és 128 törlés
  1. 0 2
      electron-builder.yml
  2. 5 5
      package.json
  3. 3 48
      src/renderer/src/App.vue
  4. 62 0
      src/renderer/src/layout/index.vue
  5. 73 73
      yarn.lock

+ 0 - 2
electron-builder.yml

@@ -13,8 +13,6 @@ asarUnpack:
 win:
     executableName: 档案脱机存档
     requestedExecutionLevel: 'requireAdministrator'
-    publisherName: "重庆泓创智诚信息技术有限公司"
-    verifyUpdateCodeSignature: false
 nsis:
     artifactName: 档案脱机存档-安装包.${ext}
     shortcutName: ${productName}

+ 5 - 5
package.json

@@ -28,25 +28,25 @@
         "@rushstack/eslint-patch": "^1.6.1",
         "@unocss/eslint-config": "^0.58.5",
         "@vitejs/plugin-vue": "^5.0.3",
-        "@vue/compiler-sfc": "^3.4.20",
+        "@vue/compiler-sfc": "^3.4.21",
         "compressing": "^1.10.0",
         "dayjs": "^1.11.10",
         "echarts": "^5.5.0",
-        "electron": "^29.0.1",
+        "electron": "^29.1.0",
         "electron-builder": "^24.12.0",
         "electron-vite": "^2.0.0",
-        "element-plus": "^2.5.6",
+        "element-plus": "^2.6.0",
         "eslint": "^8.57.0",
         "eslint-plugin-vue": "^9.22.0",
         "fs-extra": "^11.2.0",
-        "hc-vue3-ui": "^3.1.7",
+        "hc-vue3-ui": "^3.2.1",
         "js-fast-way": "^0.4.6",
         "pinia": "^2.1.7",
         "sass": "^1.71.1",
         "unocss": "^0.58.5",
         "unocss-preset-extra": "^0.5.3",
         "vite": "^5.1.4",
-        "vue": "^3.4.20",
+        "vue": "^3.4.21",
         "vue-router": "^4.3.0"
     }
 }

+ 3 - 48
src/renderer/src/App.vue

@@ -1,27 +1,17 @@
 <template>
     <hc-app-config>
         <router-view />
-        <!-- 弹窗 -->
-        <hc-new-dialog v-model="updateModal" widths="400px" title="检测到新版本" save-text="更新" @save="updateClick">
-            <hc-list-item title="系统平台:" :content="updateInfo.platform_arch" />
-            <hc-list-item title="当前版本:" :content="config.version" />
-            <hc-list-item title="最新版本:" :content="updateInfo.version" />
-            <hc-list-item title="发布日期:" :content="updateInfo.date" />
-            <hc-list-item title="更新说明:" :content="updateInfo.log" />
-        </hc-new-dialog>
     </hc-app-config>
 </template>
 
 <script setup>
-import { nextTick, ref } from 'vue'
-import config from './config/index'
-import { openExternal, toPage } from './utils/tools'
-import { arrIndex, getArrValue, getObjValue, isNullES, setElementMainColor } from 'js-fast-way'
+import { nextTick } from 'vue'
+import { toPage } from './utils/tools'
+import { isNullES, setElementMainColor } from 'js-fast-way'
 
 nextTick(() => {
     setIpcRenderer()
     setElementMainColor('#02a271')
-    getCheckForUpdates()
 })
 
 //设置通信监听
@@ -38,40 +28,5 @@ const setIpcRenderer = () => {
         })
     })
 }
-
-//检测更新
-const updateModal = ref(false)
-const updateInfo = ref({})
-const getCheckForUpdates = async () => {
-    //platform:arm64 x64,arch:darwin win32
-    console.log('当前版本:', config.version)
-    console.log('platform-arch:', window.api.platform, window.api.arch)
-    const http = 'https://archives.hczcxx.cn'
-    //const http = 'http://192.168.0.109:5175'
-    const url = `${http}/local-app.json?time=${new Date().getTime()}`
-    const { code, data } = await window.electron.ipcRenderer.invoke('require', { url: url })
-    if (code !== 200) return
-    const appArr = getArrValue(data)
-    if (appArr.length <= 0) return
-    const PIndex = arrIndex(appArr, 'platform', window.api.platform)
-    if (PIndex < 0) return
-    const PInfo = getObjValue(appArr[PIndex])
-    const PInfoArr = getArrValue(PInfo.data)
-    const index = arrIndex(PInfoArr, 'arch', window.api.arch)
-    if (index < 0) return
-    const app = getObjValue(PInfoArr[index])
-    app.platform_arch = `${PInfo.platform}_${app.arch}`
-    if (config.version < app.version) {
-        updateInfo.value = app
-        updateModal.value = true
-    }
-}
-
-//确定更新
-const updateClick = () => {
-    const { url } = updateInfo.value
-    if (isNullES(url)) return
-    openExternal(url)
-}
 </script>
 

+ 62 - 0
src/renderer/src/layout/index.vue

@@ -15,6 +15,7 @@
                         <template #dropdown>
                             <el-dropdown-menu>
                                 <el-dropdown-item @click="handleProject">项目管理</el-dropdown-item>
+                                <el-dropdown-item divided @click="checkUpdates">检测更新</el-dropdown-item>
                                 <el-dropdown-item divided @click="handleOnline">在线档案管理</el-dropdown-item>
                                 <el-dropdown-item divided @click="handleAbout">关于我们</el-dropdown-item>
                             </el-dropdown-menu>
@@ -26,15 +27,26 @@
         <div id="hc-layout-main" class="hc-main">
             <router-view v-if="isMain" />
         </div>
+        <!-- 弹窗 -->
+        <hc-new-dialog v-model="updateModal" widths="400px" title="检测到新版本" save-text="更新" @save="updateClick">
+            <hc-list-item title="系统平台:" :content="updateInfo.platform_arch" />
+            <hc-list-item title="当前版本:" :content="config.version" />
+            <hc-list-item title="最新版本:" :content="updateInfo.version" />
+            <hc-list-item title="发布日期:" :content="updateInfo.date" />
+            <hc-list-item title="更新说明:" :content="updateInfo.log" />
+        </hc-new-dialog>
     </div>
 </template>
 
 <script setup>
+import { hcAlert } from 'hc-vue3-ui'
 import { onMounted, ref, watch } from 'vue'
 import { useAppStore } from '~src/store'
 import { useRoute } from 'vue-router'
 import { getProjectInfo } from '../store/app'
 import { openExternal, toPage } from '../utils/tools'
+import { arrIndex, getArrValue, getObjValue, isNullES } from 'js-fast-way'
+import config from '../config'
 
 //初始组合式
 const store = useAppStore()
@@ -81,6 +93,56 @@ const handleOnline = () => {
 const handleAbout = () => {
     openExternal('http://hczc.hcxxy.com')
 }
+
+//检查更新
+const checkUpdates = () => {
+    hcAlert({
+        title:'检测软件是否有新版本',
+        content: '检测前,请确保您的电脑已连接网络,并且,可正常访问外网',
+        confirm: '确定检测',
+        cbk: (res) => {
+            if (res) getCheckForUpdates()
+        },
+    })
+}
+
+//检测更新
+const updateModal = ref(false)
+const updateInfo = ref({})
+const getCheckForUpdates = async () => {
+    //platform:arm64 x64,arch:darwin win32
+    console.log('当前版本:', config.version)
+    console.log('platform-arch:', window.api.platform, window.api.arch)
+    const http = 'https://archives.hczcxx.cn'
+    const url = `${http}/local-app.json?time=${new Date().getTime()}`
+    try {
+        const { code, data } = await window.electron.ipcRenderer.invoke('require', { url: url })
+        if (code !== 200) return
+        const appArr = getArrValue(data)
+        if (appArr.length <= 0) return
+        const PIndex = arrIndex(appArr, 'platform', window.api.platform)
+        if (PIndex < 0) return
+        const PInfo = getObjValue(appArr[PIndex])
+        const PInfoArr = getArrValue(PInfo.data)
+        const index = arrIndex(PInfoArr, 'arch', window.api.arch)
+        if (index < 0) return
+        const app = getObjValue(PInfoArr[index])
+        app.platform_arch = `${PInfo.platform}_${app.arch}`
+        if (config.version < app.version) {
+            updateInfo.value = app
+            updateModal.value = true
+        }
+    } catch (error) {
+        console.log(error)
+    }
+}
+
+//确定更新
+const updateClick = () => {
+    const { url } = updateInfo.value
+    if (isNullES(url)) return
+    openExternal(url)
+}
 </script>
 
 <style lang="scss" scoped>

+ 73 - 73
yarn.lock

@@ -1257,89 +1257,89 @@
   resolved "http://39.108.216.210:9000/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz#508d6a0f2440f86945835d903fcc0d95d1bb8a37"
   integrity sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==
 
-"@vue/compiler-core@3.4.20":
-  version "3.4.20"
-  resolved "http://39.108.216.210:9000/@vue/compiler-core/-/compiler-core-3.4.20.tgz#1fc69daaff164ef804fe700896952dd2ce2ff082"
-  integrity sha512-l7M+xUuL8hrGtRLkrf+62d9zucAdgqNBTbJ/NufCOIuJQhauhfyAKH9ra/qUctCXcULwmclGAVpvmxjbBO30qg==
+"@vue/compiler-core@3.4.21":
+  version "3.4.21"
+  resolved "http://39.108.216.210:9000/@vue/compiler-core/-/compiler-core-3.4.21.tgz#868b7085378fc24e58c9aed14c8d62110a62be1a"
+  integrity sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==
   dependencies:
     "@babel/parser" "^7.23.9"
-    "@vue/shared" "3.4.20"
+    "@vue/shared" "3.4.21"
     entities "^4.5.0"
     estree-walker "^2.0.2"
     source-map-js "^1.0.2"
 
-"@vue/compiler-dom@3.4.20":
-  version "3.4.20"
-  resolved "http://39.108.216.210:9000/@vue/compiler-dom/-/compiler-dom-3.4.20.tgz#a1fd73e9c940021645679cde77caf7a0a51efaa9"
-  integrity sha512-/cSBGL79HFBYgDnqCNKErOav3bPde3n0sJwJM2Z09rXlkiowV/2SG1tgDAiWS1CatS4Cvo0o74e1vNeCK1R3RA==
+"@vue/compiler-dom@3.4.21":
+  version "3.4.21"
+  resolved "http://39.108.216.210:9000/@vue/compiler-dom/-/compiler-dom-3.4.21.tgz#0077c355e2008207283a5a87d510330d22546803"
+  integrity sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==
   dependencies:
-    "@vue/compiler-core" "3.4.20"
-    "@vue/shared" "3.4.20"
+    "@vue/compiler-core" "3.4.21"
+    "@vue/shared" "3.4.21"
 
-"@vue/compiler-sfc@3.4.20", "@vue/compiler-sfc@^3.4.20":
-  version "3.4.20"
-  resolved "http://39.108.216.210:9000/@vue/compiler-sfc/-/compiler-sfc-3.4.20.tgz#854ea80a61645f282d4783f744b42fd3fc5bcfd0"
-  integrity sha512-nPuTZz0yxTPzjyYe+9nQQsFYImcz/57UX8N3jyhl5oIUUs2jqqAMaULsAlJwve3qNYfjQzq0bwy3pqJrN9ecZw==
+"@vue/compiler-sfc@3.4.21", "@vue/compiler-sfc@^3.4.21":
+  version "3.4.21"
+  resolved "http://39.108.216.210:9000/@vue/compiler-sfc/-/compiler-sfc-3.4.21.tgz#4af920dc31ab99e1ff5d152b5fe0ad12181145b2"
+  integrity sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==
   dependencies:
     "@babel/parser" "^7.23.9"
-    "@vue/compiler-core" "3.4.20"
-    "@vue/compiler-dom" "3.4.20"
-    "@vue/compiler-ssr" "3.4.20"
-    "@vue/shared" "3.4.20"
+    "@vue/compiler-core" "3.4.21"
+    "@vue/compiler-dom" "3.4.21"
+    "@vue/compiler-ssr" "3.4.21"
+    "@vue/shared" "3.4.21"
     estree-walker "^2.0.2"
     magic-string "^0.30.7"
     postcss "^8.4.35"
     source-map-js "^1.0.2"
 
-"@vue/compiler-ssr@3.4.20":
-  version "3.4.20"
-  resolved "http://39.108.216.210:9000/@vue/compiler-ssr/-/compiler-ssr-3.4.20.tgz#3602bd176dc82c2aff3261761d04df3023ecb938"
-  integrity sha512-b3gFQPiHLvI12C56otzBPpQhZ5kgkJ5RMv/zpLjLC2BIFwX5GktDqYQ7xg0Q2grP6uFI8al3beVKvAVxFtXmIg==
+"@vue/compiler-ssr@3.4.21":
+  version "3.4.21"
+  resolved "http://39.108.216.210:9000/@vue/compiler-ssr/-/compiler-ssr-3.4.21.tgz#b84ae64fb9c265df21fc67f7624587673d324fef"
+  integrity sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==
   dependencies:
-    "@vue/compiler-dom" "3.4.20"
-    "@vue/shared" "3.4.20"
+    "@vue/compiler-dom" "3.4.21"
+    "@vue/shared" "3.4.21"
 
 "@vue/devtools-api@^6.5.0", "@vue/devtools-api@^6.5.1":
   version "6.6.1"
   resolved "http://39.108.216.210:9000/@vue/devtools-api/-/devtools-api-6.6.1.tgz#7c14346383751d9f6ad4bea0963245b30220ef83"
   integrity sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==
 
-"@vue/reactivity@3.4.20":
-  version "3.4.20"
-  resolved "http://39.108.216.210:9000/@vue/reactivity/-/reactivity-3.4.20.tgz#584910882d8af382900cc77ce8166ffd87921fd2"
-  integrity sha512-P5LJcxUkG6inlHr6MHVA4AVFAmRYJQ7ONGWJILNjMjoYuEXFhYviSCb9BEMyszSG/1kWCZbtWQlKSLasFRpThw==
+"@vue/reactivity@3.4.21":
+  version "3.4.21"
+  resolved "http://39.108.216.210:9000/@vue/reactivity/-/reactivity-3.4.21.tgz#affd3415115b8ebf4927c8d2a0d6a24bccfa9f02"
+  integrity sha512-UhenImdc0L0/4ahGCyEzc/pZNwVgcglGy9HVzJ1Bq2Mm9qXOpP8RyNTjookw/gOCUlXSEtuZ2fUg5nrHcoqJcw==
   dependencies:
-    "@vue/shared" "3.4.20"
+    "@vue/shared" "3.4.21"
 
-"@vue/runtime-core@3.4.20":
-  version "3.4.20"
-  resolved "http://39.108.216.210:9000/@vue/runtime-core/-/runtime-core-3.4.20.tgz#680630c7fdf9fee09be6b32f22cc753cecb68c34"
-  integrity sha512-MPvsQpGAxoBqLHjqopt4YPtUYBpq0K6oAWDTwIR1CTNZ3y9O/J2ZVh+i2JpxKNYwANJBiZ20O99NE20uisB7xw==
+"@vue/runtime-core@3.4.21":
+  version "3.4.21"
+  resolved "http://39.108.216.210:9000/@vue/runtime-core/-/runtime-core-3.4.21.tgz#3749c3f024a64c4c27ecd75aea4ca35634db0062"
+  integrity sha512-pQthsuYzE1XcGZznTKn73G0s14eCJcjaLvp3/DKeYWoFacD9glJoqlNBxt3W2c5S40t6CCcpPf+jG01N3ULyrA==
   dependencies:
-    "@vue/reactivity" "3.4.20"
-    "@vue/shared" "3.4.20"
+    "@vue/reactivity" "3.4.21"
+    "@vue/shared" "3.4.21"
 
-"@vue/runtime-dom@3.4.20":
-  version "3.4.20"
-  resolved "http://39.108.216.210:9000/@vue/runtime-dom/-/runtime-dom-3.4.20.tgz#3eebd867385d759cc333fb761365655987e78969"
-  integrity sha512-OkbPVP69H+8m74543zMAAx/LIkajxufYyow41gc0s5iF0uplT5uTQ4llDYu1GeJZEI8wjL5ueiPQruk4qwOMmA==
+"@vue/runtime-dom@3.4.21":
+  version "3.4.21"
+  resolved "http://39.108.216.210:9000/@vue/runtime-dom/-/runtime-dom-3.4.21.tgz#91f867ef64eff232cac45095ab28ebc93ac74588"
+  integrity sha512-gvf+C9cFpevsQxbkRBS1NpU8CqxKw0ebqMvLwcGQrNpx6gqRDodqKqA+A2VZZpQ9RpK2f9yfg8VbW/EpdFUOJw==
   dependencies:
-    "@vue/runtime-core" "3.4.20"
-    "@vue/shared" "3.4.20"
+    "@vue/runtime-core" "3.4.21"
+    "@vue/shared" "3.4.21"
     csstype "^3.1.3"
 
-"@vue/server-renderer@3.4.20":
-  version "3.4.20"
-  resolved "http://39.108.216.210:9000/@vue/server-renderer/-/server-renderer-3.4.20.tgz#1f59b76ba8a711cbf56ed2b004fe44c1ef861b6e"
-  integrity sha512-w3VH2GuwxQHA6pJo/HCV22OfVC8Mw4oeHQM+vKeqtRK0OPE1Wilnh+P/SDVGGxPjJsGmyfphi0dbw8UKZQJH9w==
+"@vue/server-renderer@3.4.21":
+  version "3.4.21"
+  resolved "http://39.108.216.210:9000/@vue/server-renderer/-/server-renderer-3.4.21.tgz#150751579d26661ee3ed26a28604667fa4222a97"
+  integrity sha512-aV1gXyKSN6Rz+6kZ6kr5+Ll14YzmIbeuWe7ryJl5muJ4uwSwY/aStXTixx76TwkZFJLm1aAlA/HSWEJ4EyiMkg==
   dependencies:
-    "@vue/compiler-ssr" "3.4.20"
-    "@vue/shared" "3.4.20"
+    "@vue/compiler-ssr" "3.4.21"
+    "@vue/shared" "3.4.21"
 
-"@vue/shared@3.4.20":
-  version "3.4.20"
-  resolved "http://39.108.216.210:9000/@vue/shared/-/shared-3.4.20.tgz#13b7d1e2a3752bbc032b38f53dba5c2f430eea7e"
-  integrity sha512-KTEngal0aiUvNJ6I1Chk5Ew5XqChsFsxP4GKAYXWb99zKJWjNU72p2FWEOmZWHxHcqtniOJsgnpd3zizdpfEag==
+"@vue/shared@3.4.21":
+  version "3.4.21"
+  resolved "http://39.108.216.210:9000/@vue/shared/-/shared-3.4.21.tgz#de526a9059d0a599f0b429af7037cd0c3ed7d5a1"
+  integrity sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==
 
 "@vueuse/core@^9.1.0":
   version "9.13.0"
@@ -2113,19 +2113,19 @@ electron-vite@^2.0.0:
     magic-string "^0.30.5"
     picocolors "^1.0.0"
 
-electron@^29.0.1:
-  version "29.0.1"
-  resolved "http://39.108.216.210:9000/electron/-/electron-29.0.1.tgz#936c0623a1bbf272dea423305f074de6ac016967"
-  integrity sha512-hsQr9clm8NCAMv4uhHlXThHn52UAgrHgyz3ubBAxZIPuUcpKVDtg4HPmx4hbmHIbYICI5OyLN3Ztp7rS+Dn4Lw==
+electron@^29.1.0:
+  version "29.1.0"
+  resolved "http://39.108.216.210:9000/electron/-/electron-29.1.0.tgz#37f0e4915226db3c87bc54b187795272bf61fc39"
+  integrity sha512-giJVIm0sWVp+8V1GXrKqKTb+h7no0P3ooYqEd34AD9wMJzGnAeL+usj+R0155/0pdvvP1mgydnA7lcaFA2M9lw==
   dependencies:
     "@electron/get" "^2.0.0"
     "@types/node" "^20.9.0"
     extract-zip "^2.0.1"
 
-element-plus@^2.5.6:
-  version "2.5.6"
-  resolved "http://39.108.216.210:9000/element-plus/-/element-plus-2.5.6.tgz#d63dabc6330c0e2abe6f97cf99013a30140940d1"
-  integrity sha512-zctKTiyIDmcnMp3K5WG1hglgraW9EbiCLiIDVtaMCS5mPMl2fRKdS0vOFGnECIq9taFoxnyoDwxHD81nv0B4RA==
+element-plus@^2.6.0:
+  version "2.6.0"
+  resolved "http://39.108.216.210:9000/element-plus/-/element-plus-2.6.0.tgz#bba8707780ee4612f8fc05f397e2b8b71510ec62"
+  integrity sha512-MP+N48P+diyndR+GjY+0VOrUmFnajD4U0CkrXIMzmeRmq4+dwi0bdzVo587v4wDo9Hs+ggviyacqm3NS8JYVqw==
   dependencies:
     "@ctrl/tinycolor" "^3.4.1"
     "@element-plus/icons-vue" "^2.3.1"
@@ -2749,10 +2749,10 @@ hasown@^2.0.0:
   dependencies:
     function-bind "^1.1.2"
 
-hc-vue3-ui@^3.1.7:
-  version "3.1.7"
-  resolved "http://39.108.216.210:9000/hc-vue3-ui/-/hc-vue3-ui-3.1.7.tgz#cf77e449c73f89d2f55b803dc7cb015b681877e1"
-  integrity sha512-UiatJ7sXNcAXofMrlwEOTVlThXd7Jhesk2zIUoZqC/tjPTwuAOzokc7C2/2IivXLtAzwR+faiDJ8m7JEY3zcmQ==
+hc-vue3-ui@^3.2.1:
+  version "3.2.1"
+  resolved "http://39.108.216.210:9000/hc-vue3-ui/-/hc-vue3-ui-3.2.1.tgz#121c2f17daf82fee61ce1c4109d3b89930298975"
+  integrity sha512-BEKN+AnXm21K9yY/xCHtBGV32MxpgSxhdhOWNytXCtTF/F/lQS+grERHwnItWUi0aHdhj+VInqvZtwXy/Nzcug==
 
 hosted-git-info@^4.1.0:
   version "4.1.0"
@@ -4129,16 +4129,16 @@ vue-router@^4.3.0:
   dependencies:
     "@vue/devtools-api" "^6.5.1"
 
-vue@^3.4.20:
-  version "3.4.20"
-  resolved "http://39.108.216.210:9000/vue/-/vue-3.4.20.tgz#1d08d3ea8c5c294c15cd61aee2b78dc5f621ff7f"
-  integrity sha512-xF4zDKXp67NjgORFX/HOuaiaKYjgxkaToK0KWglFQEYlCw9AqgBlj1yu5xa6YaRek47w2IGiuvpvrGg/XuQFCw==
+vue@^3.4.21:
+  version "3.4.21"
+  resolved "http://39.108.216.210:9000/vue/-/vue-3.4.21.tgz#69ec30e267d358ee3a0ce16612ba89e00aaeb731"
+  integrity sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==
   dependencies:
-    "@vue/compiler-dom" "3.4.20"
-    "@vue/compiler-sfc" "3.4.20"
-    "@vue/runtime-dom" "3.4.20"
-    "@vue/server-renderer" "3.4.20"
-    "@vue/shared" "3.4.20"
+    "@vue/compiler-dom" "3.4.21"
+    "@vue/compiler-sfc" "3.4.21"
+    "@vue/runtime-dom" "3.4.21"
+    "@vue/server-renderer" "3.4.21"
+    "@vue/shared" "3.4.21"
 
 which@^2.0.1:
   version "2.0.2"