Bläddra i källkod

更新依赖和优化弹窗

ZaiZai 2 år sedan
förälder
incheckning
d6a47b253b

+ 7 - 7
package.json

@@ -17,8 +17,8 @@
         "crypto-js": "^4.1.1",
         "dayjs": "^1.11.9",
         "echarts": "^5.4.2",
-        "element-plus": "^2.3.8",
-        "hc-vue3-ui": "^1.8.0",
+        "element-plus": "^2.3.9",
+        "hc-vue3-ui": "^1.8.1",
         "js-base64": "^3.7.5",
         "js-cookie": "^3.0.5",
         "js-fast-way": "^0.2.5",
@@ -26,7 +26,7 @@
         "js-web-screen-shot": "^1.9.8",
         "nprogress": "^0.2.0",
         "pinia": "^2.1.6",
-        "remixicon": "^3.4.0",
+        "remixicon": "^3.5.0",
         "sortablejs": "^1.15.0",
         "split.js": "^1.6.5",
         "vue": "^3.3.4",
@@ -42,12 +42,12 @@
         "archiver": "^5.3.1",
         "autoprefixer": "^10.4.14",
         "cssnano": "^6.0.1",
-        "eslint": "^8.45.0",
-        "eslint-plugin-vue": "^9.15.1",
+        "eslint": "^8.46.0",
+        "eslint-plugin-vue": "^9.16.1",
         "mitt": "^3.0.1",
         "postcss": "^8.4.27",
-        "sass": "^1.64.1",
+        "sass": "^1.64.2",
         "tailwindcss": "3.3.3",
-        "vite": "^4.4.7"
+        "vite": "^4.4.8"
     }
 }

+ 18 - 13
src/api/request/httpApi.js

@@ -1,33 +1,37 @@
-import request from "./index";
-import {getObjValue} from "js-fast-way"
+import request from './index'
+import { getObjValue } from 'js-fast-way'
+import { apiErrorMessage } from '~com/message/index.js'
 
 //封装的请求
 export const httpApi = async (obj, message = true) => {
     return new Promise((resolve) => {
         //发起请求
         request(obj).then(async (response) => {
-            resolve(await getResData(response, false));
+            resolve(await getResData(response, false))
         }).catch(async (response) => {
-            if (message) window.$message?.error(getMsgVal(response));
-            resolve(await getResData(response, true));
+            if (message) {
+                const msg = getMsgVal(response)
+                if (msg) window.$message?.error(msg)
+            }
+            resolve(await getResData(response, true))
         })
-    });
+    })
 }
 
 //处理数据
 const getResData = async (response, error = false) => {
     return new Promise((resolve) => {
-        const {headers, data, config} = response
+        const { headers, data, config } = response
         const resData = getObjValue(data)
         const httpData = {
             response, res: data, data: resData?.data,
             code: resData?.code, msg: resData?.msg, status: response?.status,
             disposition: headers['content-disposition'],
-            message: getMsgVal(response), error: error
+            message: getMsgVal(response), error: error,
         }
         //处理延迟响应
         if (!error) {
-            const {startTime, endTime} = config.metadata
+            const { startTime, endTime } = config.metadata
             if (config.isDelay) {
                 const duration = endTime - startTime
                 if (duration < 500) {
@@ -48,10 +52,11 @@ const getResData = async (response, error = false) => {
 
 //获取msg消息内容
 const getMsgVal = (response) => {
-    const {code, msg, error_description} = getObjValue(response.data)
-    if (code === 404) {
-        return '服务器异常,请联系管理员!';
+    const { code, msg, error_description } = getObjValue(response.data)
+    if (code === 404 || code === 500 || code === 504) {
+        apiErrorMessage()
+        return ''
     } else {
-        return msg || error_description || '未知错误';
+        return msg || error_description || '未知错误'
     }
 }

+ 25 - 26
src/api/request/index.js

@@ -1,24 +1,24 @@
-import axios from 'axios';
-import {Base64} from 'js-base64';
-import website from '~src/config';
-import router from '~src/router/index';
-import {getToken} from '~src/api/util/auth';
-import {toSerialize} from "js-fast-way"
+import axios from 'axios'
+import { Base64 } from 'js-base64'
+import website from '~src/config'
+import router from '~src/router/index'
+import { getToken } from '~src/api/util/auth'
+import { toSerialize } from 'js-fast-way'
 
 //默认超时时间
-axios.defaults.timeout = 300000;
+axios.defaults.timeout = 300000
 //返回其他状态码
 axios.defaults.validateStatus = function (status) {
-    return status >= 200 && status <= 500;
-};
+    return status >= 200 && status <= 500
+}
 //跨域请求,允许保存cookie
-axios.defaults.withCredentials = true;
+axios.defaults.withCredentials = true
 
 //http request拦截
 axios.interceptors.request.use(config => {
-    const meta = (config['meta'] || {});
-    const isToken = meta['isToken'] === false;
-    config.headers['Authorization'] = `Basic ${Base64.encode(`${website.clientId}:${website.clientSecret}`)}`;
+    const meta = (config['meta'] || {})
+    const isToken = meta['isToken'] === false
+    config.headers['Authorization'] = `Basic ${Base64.encode(`${website.clientId}:${website.clientSecret}`)}`
     //让每个请求携带token
     const token = getToken()
     if (token && !isToken) {
@@ -26,37 +26,36 @@ axios.interceptors.request.use(config => {
     }
     //headers中配置text请求
     if (config['text'] === true) {
-        config.headers["Content-Type"] = "text/plain";
+        config.headers['Content-Type'] = 'text/plain'
     }
     //headers中配置serialize为true开启序列化
     if (config.method === 'post' && meta['isSerialize'] === true) {
-        config.data = toSerialize(config.data);
+        config.data = toSerialize(config.data)
     }
-    config.metadata = {startTime: new Date()}
+    config.metadata = { startTime: new Date() }
     return config
 }, error => {
     return Promise.reject(error)
-});
+})
 
 //http response 拦截
 axios.interceptors.response.use(res => {
     //响应时间
     res.config.metadata.endTime = new Date()
     //获取状态码
-    const status = res.data?.code || res.status;
+    const status = res.data?.code || res.status
     //如果是401则跳转到登录页面
     if (status === 401) {
-        window.$message?.error('身份失效,请重新登录!');
-        router.push({path: '/login'})
+        window.$message?.error('身份失效,请重新登录!')
+        router.push({ path: '/login' })
     }
     // 如果请求为非200, 自行catch逻辑处理
     if (status !== 200) {
-        return Promise.reject(res);
+        return Promise.reject(res)
     }
-    return res;
+    return res
 }, error => {
-    window.$message?.error('请求异常!');
-    return Promise.reject(new Error(error));
-});
+    return Promise.reject(new Error(error))
+})
 
-export default axios;
+export default axios

+ 44 - 0
src/components/message/index.js

@@ -0,0 +1,44 @@
+import { h } from 'vue'
+import domView from './index.vue'
+
+//删除提醒
+export const delMessageV2 = (cbk) => {
+    window?.$messageBox({
+        center: true,
+        message: () => h(domView, {
+            type: 'delete',
+            title: '确认删除提醒',
+            text: '请谨慎考虑后,确认是否需要删除?',
+        }),
+        customClass: 'hc-message-view-box',
+        showCancelButton: true,
+        confirmButtonText: '确认删除',
+        cancelButtonText: '取消操作',
+        beforeClose: (action, instance, done) => {
+            if (cbk) {
+                cbk(action, instance, done)
+            } else {
+                done()
+            }
+        },
+    })
+}
+
+//请求异常
+export const apiErrorMessage = () => {
+    setTimeout(() => {
+        const doms = document.querySelector('.hc-message-view-box.warning')
+        if (doms) return
+        window?.$messageBox({
+            center: true,
+            message: () => h(domView, {
+                type: 'warning',
+                title: '服务器异常,请稍后重试',
+                text: '服务器异常了,如有需要,请联系管理员!',
+            }),
+            customClass: 'hc-message-view-box warning',
+            showCancelButton: false,
+            confirmButtonText: '关闭',
+        })
+    }, 1000)
+}

+ 71 - 0
src/components/message/index.vue

@@ -0,0 +1,71 @@
+<template>
+    <div class="hc-message-box">
+        <div class="hc-lottie-box delete">
+            <HcLottie v-if="isType === 'delete'" type="delete" style="height: 200px" />
+            <HcLottie v-if="isType === 'warning'" type="warning" style="height: 140px" />
+        </div>
+        <div class="title">{{ titles }}</div>
+        <div class="text">{{ text }}</div>
+    </div>
+</template>
+
+<script setup>
+import { ref, watch } from 'vue'
+import { HcLottie } from 'hc-vue3-ui'
+//参数
+const props = defineProps({
+    type: {
+        type: String,
+        default: 'warning',
+    },
+    title: {
+        type: String,
+        default: '',
+    },
+    text: {
+        type: String,
+        default: '',
+    },
+})
+
+//监听
+watch(() => [
+    props.type,
+    props.title,
+    props.text,
+], ([type, title, text]) => {
+    isType.value = type
+    titles.value = title
+    texts.value = text
+})
+
+//变量
+const isType = ref(props.type)
+const titles = ref(props.title)
+const texts = ref(props.text)
+</script>
+
+<style scoped lang="scss">
+.hc-message-box {
+    position: relative;
+    .hc-lottie-box {
+        position: relative;
+        height: 200px;
+        overflow: hidden;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+    }
+    .title {
+        position: relative;
+        font-size: 20px;
+        color: #101010;
+        margin-bottom: 20px;
+    }
+    .text {
+        color: #878a99;
+        font-size: 14px;
+        margin-bottom: 10px;
+    }
+}
+</style>

+ 6 - 0
src/styles/app/element.scss

@@ -1,3 +1,9 @@
 .el-popper {
     z-index: 20111048 !important;
 }
+.hc-message-view-box .el-message-box__btns {
+    padding: 15px;
+    .el-button + .el-button {
+        margin-left: 20px;
+    }
+}

+ 90 - 62
yarn.lock

@@ -137,22 +137,22 @@
   resolved "http://47.110.251.215:9000/@esbuild/win32-x64/-/win32-x64-0.18.16.tgz#5be58d31d0120c68af8e38b702e6937ce764cd68"
   integrity sha512-sCIVrrtcWN5Ua7jYXNG1xD199IalrbfV2+0k/2Zf2OyV2FtnQnMgdzgpRAbi4AWlKJj1jkX+M+fEGPQj6BQB4w==
 
-"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.3.0":
+"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
   version "4.4.0"
   resolved "http://47.110.251.215:9000/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz"
   integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==
   dependencies:
     eslint-visitor-keys "^3.3.0"
 
-"@eslint-community/regexpp@^4.4.0":
-  version "4.5.1"
-  resolved "http://47.110.251.215:9000/@eslint-community/regexpp/-/regexpp-4.5.1.tgz"
-  integrity sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==
+"@eslint-community/regexpp@^4.6.1":
+  version "4.6.2"
+  resolved "http://47.110.251.215:9000/@eslint-community/regexpp/-/regexpp-4.6.2.tgz#1816b5f6948029c5eaacb0703b850ee0cb37d8f8"
+  integrity sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==
 
-"@eslint/eslintrc@^2.1.0":
-  version "2.1.0"
-  resolved "http://47.110.251.215:9000/@eslint/eslintrc/-/eslintrc-2.1.0.tgz"
-  integrity sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==
+"@eslint/eslintrc@^2.1.1":
+  version "2.1.1"
+  resolved "http://47.110.251.215:9000/@eslint/eslintrc/-/eslintrc-2.1.1.tgz#18d635e24ad35f7276e8a49d135c7d3ca6a46f93"
+  integrity sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==
   dependencies:
     ajv "^6.12.4"
     debug "^4.3.2"
@@ -164,10 +164,10 @@
     minimatch "^3.1.2"
     strip-json-comments "^3.1.1"
 
-"@eslint/js@8.44.0":
-  version "8.44.0"
-  resolved "http://47.110.251.215:9000/@eslint/js/-/js-8.44.0.tgz"
-  integrity sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==
+"@eslint/js@^8.46.0":
+  version "8.46.0"
+  resolved "http://47.110.251.215:9000/@eslint/js/-/js-8.46.0.tgz#3f7802972e8b6fe3f88ed1aabc74ec596c456db6"
+  integrity sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==
 
 "@floating-ui/core@^1.3.1":
   version "1.3.1"
@@ -417,7 +417,7 @@ acorn@^8.9.0:
   resolved "http://47.110.251.215:9000/acorn/-/acorn-8.10.0.tgz"
   integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==
 
-ajv@^6.10.0, ajv@^6.12.4:
+ajv@^6.12.4:
   version "6.12.6"
   resolved "http://47.110.251.215:9000/ajv/-/ajv-6.12.6.tgz"
   integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
@@ -931,10 +931,10 @@ electron-to-chromium@^1.4.431:
   resolved "http://47.110.251.215:9000/electron-to-chromium/-/electron-to-chromium-1.4.440.tgz"
   integrity sha512-r6dCgNpRhPwiWlxbHzZQ/d9swfPaEJGi8ekqRBwQYaR3WmA5VkqQfBWSDDjuJU1ntO+W9tHx8OHV/96Q8e0dVw==
 
-element-plus@2.3.8, element-plus@^2.3.8:
-  version "2.3.8"
-  resolved "http://47.110.251.215:9000/element-plus/-/element-plus-2.3.8.tgz"
-  integrity sha512-yHQR0/tG2LvPkpGUt7Te/hPmP2XW/BytBNUbx+EFO54VnGCOE3upmQcVffNp1PLgwg9sthYDXontUWpnpmLPJw==
+element-plus@2.3.9, element-plus@^2.3.9:
+  version "2.3.9"
+  resolved "http://47.110.251.215:9000/element-plus/-/element-plus-2.3.9.tgz#4a3363c62e6cc9b0a2f40f4df5aaa7b6feb4e6e4"
+  integrity sha512-TIOLnPl4cnoCPXqK3QYh+jpkthUBQnAM21O7o3Lhbse8v9pfrRXRTaBJtoEKnYNa8GZ4lZptUfH0PeZgDCNLUg==
   dependencies:
     "@ctrl/tinycolor" "^3.4.1"
     "@element-plus/icons-vue" "^2.0.6"
@@ -1007,20 +1007,20 @@ escape-string-regexp@^4.0.0:
   resolved "http://47.110.251.215:9000/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz"
   integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
 
-eslint-plugin-vue@^9.15.1:
-  version "9.15.1"
-  resolved "http://47.110.251.215:9000/eslint-plugin-vue/-/eslint-plugin-vue-9.15.1.tgz"
-  integrity sha512-CJE/oZOslvmAR9hf8SClTdQ9JLweghT6JCBQNrT2Iel1uVw0W0OLJxzvPd6CxmABKCvLrtyDnqGV37O7KQv6+A==
+eslint-plugin-vue@^9.16.1:
+  version "9.16.1"
+  resolved "http://47.110.251.215:9000/eslint-plugin-vue/-/eslint-plugin-vue-9.16.1.tgz#3508d9279d797b40889db76da2fd26524e9144e6"
+  integrity sha512-2FtnTqazA6aYONfDuOZTk0QzwhAwi7Z4+uJ7+GHeGxcKapjqWlDsRWDenvyG/utyOfAS5bVRmAG3cEWiYEz2bA==
   dependencies:
-    "@eslint-community/eslint-utils" "^4.3.0"
+    "@eslint-community/eslint-utils" "^4.4.0"
     natural-compare "^1.4.0"
-    nth-check "^2.0.1"
-    postcss-selector-parser "^6.0.9"
-    semver "^7.3.5"
-    vue-eslint-parser "^9.3.0"
+    nth-check "^2.1.1"
+    postcss-selector-parser "^6.0.13"
+    semver "^7.5.4"
+    vue-eslint-parser "^9.3.1"
     xml-name-validator "^4.0.0"
 
-eslint-scope@^7.1.1, eslint-scope@^7.2.0:
+eslint-scope@^7.1.1:
   version "7.2.0"
   resolved "http://47.110.251.215:9000/eslint-scope/-/eslint-scope-7.2.0.tgz"
   integrity sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==
@@ -1028,32 +1028,45 @@ eslint-scope@^7.1.1, eslint-scope@^7.2.0:
     esrecurse "^4.3.0"
     estraverse "^5.2.0"
 
+eslint-scope@^7.2.2:
+  version "7.2.2"
+  resolved "http://47.110.251.215:9000/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f"
+  integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==
+  dependencies:
+    esrecurse "^4.3.0"
+    estraverse "^5.2.0"
+
 eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1:
   version "3.4.1"
   resolved "http://47.110.251.215:9000/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz"
   integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==
 
-eslint@^8.45.0:
-  version "8.45.0"
-  resolved "http://47.110.251.215:9000/eslint/-/eslint-8.45.0.tgz"
-  integrity sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==
+eslint-visitor-keys@^3.4.2:
+  version "3.4.2"
+  resolved "http://47.110.251.215:9000/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz#8c2095440eca8c933bedcadf16fefa44dbe9ba5f"
+  integrity sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==
+
+eslint@^8.46.0:
+  version "8.46.0"
+  resolved "http://47.110.251.215:9000/eslint/-/eslint-8.46.0.tgz#a06a0ff6974e53e643acc42d1dcf2e7f797b3552"
+  integrity sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==
   dependencies:
     "@eslint-community/eslint-utils" "^4.2.0"
-    "@eslint-community/regexpp" "^4.4.0"
-    "@eslint/eslintrc" "^2.1.0"
-    "@eslint/js" "8.44.0"
+    "@eslint-community/regexpp" "^4.6.1"
+    "@eslint/eslintrc" "^2.1.1"
+    "@eslint/js" "^8.46.0"
     "@humanwhocodes/config-array" "^0.11.10"
     "@humanwhocodes/module-importer" "^1.0.1"
     "@nodelib/fs.walk" "^1.2.8"
-    ajv "^6.10.0"
+    ajv "^6.12.4"
     chalk "^4.0.0"
     cross-spawn "^7.0.2"
     debug "^4.3.2"
     doctrine "^3.0.0"
     escape-string-regexp "^4.0.0"
-    eslint-scope "^7.2.0"
-    eslint-visitor-keys "^3.4.1"
-    espree "^9.6.0"
+    eslint-scope "^7.2.2"
+    eslint-visitor-keys "^3.4.2"
+    espree "^9.6.1"
     esquery "^1.4.2"
     esutils "^2.0.2"
     fast-deep-equal "^3.1.3"
@@ -1085,6 +1098,15 @@ espree@^9.3.1, espree@^9.6.0:
     acorn-jsx "^5.3.2"
     eslint-visitor-keys "^3.4.1"
 
+espree@^9.6.1:
+  version "9.6.1"
+  resolved "http://47.110.251.215:9000/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f"
+  integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==
+  dependencies:
+    acorn "^8.9.0"
+    acorn-jsx "^5.3.2"
+    eslint-visitor-keys "^3.4.1"
+
 esquery@^1.4.0, esquery@^1.4.2:
   version "1.5.0"
   resolved "http://47.110.251.215:9000/esquery/-/esquery-1.5.0.tgz"
@@ -1288,16 +1310,17 @@ has@^1.0.3:
   dependencies:
     function-bind "^1.1.1"
 
-hc-vue3-ui@^1.8.0:
-  version "1.8.0"
-  resolved "http://47.110.251.215:9000/hc-vue3-ui/-/hc-vue3-ui-1.8.0.tgz#0c4df97fec042ee6e2202a743ace5e00d26dad06"
-  integrity sha512-uNy5ohDhRs0/lj1B+Qix9Za1RR9k+KSws7x1yPS0r3G4a8+oNqDYFZ6LQaRFgEiXWYjxCLDl49YKz1RYGed99A==
+hc-vue3-ui@^1.8.1:
+  version "1.8.1"
+  resolved "http://47.110.251.215:9000/hc-vue3-ui/-/hc-vue3-ui-1.8.1.tgz#97f53e5dd7c7dc92117a6ccfb46924a2ea15a4cd"
+  integrity sha512-UXyfHqoZBWGTBatpMKvhUN3e8OB4T6QFM/eXMzViaUq5D/0bAaavtBh3gA/iWtHIR4mHjV+0K3s/ERnJLO2b7g==
   dependencies:
     axios "^1.4.0"
     dayjs "^1.11.9"
-    element-plus "2.3.8"
+    element-plus "2.3.9"
     js-fast-way "^0.2.5"
     js-md5 "^0.7.3"
+    lottie-web "^5.12.2"
     simple-uploader.js "^0.6.0"
     sortablejs "^1.15.0"
     vue "^3.3.4"
@@ -1534,6 +1557,11 @@ lodash@^4.17.21:
   resolved "http://47.110.251.215:9000/lodash/-/lodash-4.17.21.tgz"
   integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
 
+lottie-web@^5.12.2:
+  version "5.12.2"
+  resolved "http://47.110.251.215:9000/lottie-web/-/lottie-web-5.12.2.tgz#579ca9fe6d3fd9e352571edd3c0be162492f68e5"
+  integrity sha512-uvhvYPC8kGPjXT3MyKMrL3JitEAmDMp30lVkuq/590Mw9ok6pWcFCwXJveo0t5uqYw1UREQHofD+jVpdjBv8wg==
+
 lru-cache@^6.0.0:
   version "6.0.0"
   resolved "http://47.110.251.215:9000/lru-cache/-/lru-cache-6.0.0.tgz"
@@ -1661,7 +1689,7 @@ nprogress@^0.2.0:
   resolved "http://47.110.251.215:9000/nprogress/-/nprogress-0.2.0.tgz"
   integrity sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==
 
-nth-check@^2.0.1:
+nth-check@^2.0.1, nth-check@^2.1.1:
   version "2.1.1"
   resolved "http://47.110.251.215:9000/nth-check/-/nth-check-2.1.1.tgz"
   integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==
@@ -1978,7 +2006,7 @@ postcss-reduce-transforms@^6.0.0:
   dependencies:
     postcss-value-parser "^4.2.0"
 
-postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9:
+postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.13, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5:
   version "6.0.13"
   resolved "http://47.110.251.215:9000/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz"
   integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==
@@ -2083,10 +2111,10 @@ readdirp@~3.6.0:
   dependencies:
     picomatch "^2.2.1"
 
-remixicon@^3.4.0:
-  version "3.4.0"
-  resolved "http://47.110.251.215:9000/remixicon/-/remixicon-3.4.0.tgz"
-  integrity sha512-T1tJfMVNbmUIYdsrCJ//FOoQ/xgiWPuE3ZZvUeDRl5h/IZWKN2eTcKeUoro1g5aeJ/Rk1mZV6QPdF8qZxIu+3A==
+remixicon@^3.5.0:
+  version "3.5.0"
+  resolved "http://47.110.251.215:9000/remixicon/-/remixicon-3.5.0.tgz#ad3ea8e6cd80d6bc7a9a261fafc229f04a32ce5f"
+  integrity sha512-wNzWGKf4frb3tEmgvP5shry0n1OdTjjEk9RHLuRuAhfA50bvEdpKH1XWNUYrHUSjAQQkkdyIm+lf4mOuysIKTQ==
 
 resolve-from@^4.0.0:
   version "4.0.0"
@@ -2138,18 +2166,18 @@ safe-buffer@~5.2.0:
   resolved "http://47.110.251.215:9000/safe-buffer/-/safe-buffer-5.2.1.tgz"
   integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
 
-sass@^1.64.1:
-  version "1.64.1"
-  resolved "http://47.110.251.215:9000/sass/-/sass-1.64.1.tgz"
-  integrity sha512-16rRACSOFEE8VN7SCgBu1MpYCyN7urj9At898tyzdXFhC+a+yOX5dXwAR7L8/IdPJ1NB8OYoXmD55DM30B2kEQ==
+sass@^1.64.2:
+  version "1.64.2"
+  resolved "http://47.110.251.215:9000/sass/-/sass-1.64.2.tgz#0d9805ad6acf31c59c3acc725fcfb91b7fcc6909"
+  integrity sha512-TnDlfc+CRnUAgLO9D8cQLFu/GIjJIzJCGkE7o4ekIGQOH7T3GetiRR/PsTWJUHhkzcSPrARkPI+gNWn5alCzDg==
   dependencies:
     chokidar ">=3.0.0 <4.0.0"
     immutable "^4.0.0"
     source-map-js ">=0.6.2 <2.0.0"
 
-semver@^7.3.5, semver@^7.3.6:
+semver@^7.3.6, semver@^7.5.4:
   version "7.5.4"
-  resolved "http://47.110.251.215:9000/semver/-/semver-7.5.4.tgz"
+  resolved "http://47.110.251.215:9000/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e"
   integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
   dependencies:
     lru-cache "^6.0.0"
@@ -2388,10 +2416,10 @@ utrie@^1.0.2:
   dependencies:
     base64-arraybuffer "^1.0.2"
 
-vite@^4.4.7:
-  version "4.4.7"
-  resolved "http://47.110.251.215:9000/vite/-/vite-4.4.7.tgz#71b8a37abaf8d50561aca084dbb77fa342824154"
-  integrity sha512-6pYf9QJ1mHylfVh39HpuSfMPojPSKVxZvnclX1K1FyZ1PXDOcLBibdq5t1qxJSnL63ca8Wf4zts6mD8u8oc9Fw==
+vite@^4.4.8:
+  version "4.4.8"
+  resolved "http://47.110.251.215:9000/vite/-/vite-4.4.8.tgz#31e4a438f8748695c68bd57ffd262ba93540fdf7"
+  integrity sha512-LONawOUUjxQridNWGQlNizfKH89qPigK36XhMI7COMGztz8KNY0JHim7/xDd71CZwGT4HtSRgI7Hy+RlhG0Gvg==
   dependencies:
     esbuild "^0.18.10"
     postcss "^8.4.26"
@@ -2404,9 +2432,9 @@ vue-demi@*, vue-demi@>=0.14.5:
   resolved "http://47.110.251.215:9000/vue-demi/-/vue-demi-0.14.5.tgz"
   integrity sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==
 
-vue-eslint-parser@^9.3.0:
+vue-eslint-parser@^9.3.1:
   version "9.3.1"
-  resolved "http://47.110.251.215:9000/vue-eslint-parser/-/vue-eslint-parser-9.3.1.tgz"
+  resolved "http://47.110.251.215:9000/vue-eslint-parser/-/vue-eslint-parser-9.3.1.tgz#429955e041ae5371df5f9e37ebc29ba046496182"
   integrity sha512-Clr85iD2XFZ3lJ52/ppmUDG/spxQu6+MAeHXjjyI4I1NUYZ9xmenQp4N0oaHJhrA8OOxltCVxMRfANGa70vU0g==
   dependencies:
     debug "^4.3.4"