Explorar o código

更新依赖和优化弹窗

ZaiZai %!s(int64=2) %!d(string=hai) anos
pai
achega
b9d4c94812

+ 8 - 8
package.json

@@ -17,14 +17,14 @@
         "crypto-js": "^4.1.1",
         "dayjs": "^1.11.9",
         "echarts": "^5.4.3",
-        "element-plus": "2.3.8",
-        "hc-vue3-ui": "^1.7.3",
+        "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",
         "js-md5": "^0.7.3",
         "nprogress": "^0.2.0",
-        "pinia": "^2.1.4",
+        "pinia": "^2.1.6",
         "vue": "^3.3.4",
         "vue-router": "^4.2.4",
         "vue3-tree-org": "^4.2.2"
@@ -35,11 +35,11 @@
         "@vue/compiler-sfc": "^3.3.4",
         "archiver": "^5.3.1",
         "autoprefixer": "^10.4.14",
-        "eslint": "^8.45.0",
-        "eslint-plugin-vue": "^9.15.1",
-        "postcss": "^8.4.26",
-        "sass": "^1.64.0",
+        "eslint": "^8.46.0",
+        "eslint-plugin-vue": "^9.16.1",
+        "postcss": "^8.4.27",
+        "sass": "^1.64.2",
         "tailwindcss": "3.3.3",
-        "vite": "^4.4.5"
+        "vite": "^4.4.8"
     }
 }

+ 1 - 1
public/version.json

@@ -1,3 +1,3 @@
 {
-  "value": "20230721160645"
+  "value": "20230721164735"
 }

+ 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 || '未知错误'
     }
 }

+ 28 - 29
src/api/request/index.js

@@ -1,30 +1,30 @@
-import axios from 'axios';
-import {Base64} from 'js-base64';
-import router from '~src/router/index';
-import website from '~src/config/index';
-import {getToken} from '~src/api/util/auth';
-import {toSerialize} from "js-fast-way"
+import axios from 'axios'
+import { Base64 } from 'js-base64'
+import router from '~src/router/index'
+import website from '~src/config/index'
+import { getToken } from '~src/api/util/auth'
+import { toSerialize } from 'js-fast-way'
 
 //状态管理
-import pinia from "~src/store/init"
-import {useAppStore} from "~src/store";
+import pinia from '~src/store/init'
+import { useAppStore } from '~src/store'
 const store = useAppStore(pinia)
 
 //默认超时时间
-axios.defaults.timeout = 0;
+axios.defaults.timeout = 0
 //返回其他状态码
 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}`)}`;
-    config.headers['Tenantid'] = store.tenantId ? store.tenantId : website.tenantId;
+    const meta = (config['meta'] || {})
+    const isToken = meta['isToken'] === false
+    config.headers['Authorization'] = `Basic ${Base64.encode(`${website.clientId}:${website.clientSecret}`)}`
+    config.headers['Tenantid'] = store.tenantId ? store.tenantId : website.tenantId
     //让每个请求携带token
     const token = getToken()
     if (token && !isToken) {
@@ -32,37 +32,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>

+ 7 - 0
src/styles/index.scss

@@ -258,3 +258,10 @@ html, body, #app {
 .el-overlay.is-message-box {
     z-index: 29002 !important;
 }
+
+.hc-message-view-box .el-message-box__btns {
+    padding: 15px;
+    .el-button + .el-button {
+        margin-left: 20px;
+    }
+}

+ 97 - 60
yarn.lock

@@ -137,22 +137,22 @@
   resolved "http://47.110.251.215:9000/@esbuild/win32-x64/-/win32-x64-0.18.11.tgz#6526c7e1b40d5b9f0a222c6b767c22f6fb97aa57"
   integrity sha512-rQI4cjLHd2hGsM1LqgDI7oOCYbQ6IBOVsX9ejuRMSze0GqXUG2ekwiKkiBU1pRGSeCqFFHxTrcEydB2Hyoz9CA==
 
-"@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#a23514e8fb9af1269d5f7788aa556798d61c6b59"
   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#cdd35dce4fa1a89a4fd42b1599eb35b3af408884"
-  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#82256f164cc9e0b59669efc19d57f8092706841d"
-  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#961a5903c74139390478bdc808bcde3fc45ab7af"
-  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.2.6":
   version "1.2.6"
@@ -412,7 +412,7 @@ acorn@^8.9.0:
   resolved "http://47.110.251.215:9000/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5"
   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#baf5a62e802b07d977034586f8c3baf5adf26df4"
   integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
@@ -777,10 +777,10 @@ electron-to-chromium@^1.4.284:
   resolved "http://47.110.251.215:9000/electron-to-chromium/-/electron-to-chromium-1.4.384.tgz#5c23b5579930dec9af2a93edafddbe991542eace"
   integrity sha512-I97q0MmRAAqj53+a8vZsDkEXBZki+ehYAOPzwtQzALip52aEp2+BJqHFtTlsfjoqVZYwPpHC8wM6MbsSZQ/Eqw==
 
-element-plus@2.3.8:
-  version "2.3.8"
-  resolved "http://47.110.251.215:9000/element-plus/-/element-plus-2.3.8.tgz#46032abe1a712abfb65932f146ee19281312a9cf"
-  integrity sha512-yHQR0/tG2LvPkpGUt7Te/hPmP2XW/BytBNUbx+EFO54VnGCOE3upmQcVffNp1PLgwg9sthYDXontUWpnpmLPJw==
+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"
@@ -848,20 +848,20 @@ escape-string-regexp@^4.0.0:
   resolved "http://47.110.251.215:9000/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
   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#3c09e0edab444b5d4d9239a12a645a0e2e2ea5be"
-  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#f21ebdafda02352f103634b96dd47d9f81ca117b"
   integrity sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==
@@ -869,32 +869,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#c22c48f48942d08ca824cc526211ae400478a994"
   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#bab660f90d18e1364352c0a6b7c6db8edb458b78"
-  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"
@@ -926,6 +939,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#6ce17738de8577694edd7361c57182ac8cb0db0b"
@@ -1129,16 +1151,17 @@ has@^1.0.3:
   dependencies:
     function-bind "^1.1.1"
 
-hc-vue3-ui@^1.7.3:
-  version "1.7.3"
-  resolved "http://47.110.251.215:9000/hc-vue3-ui/-/hc-vue3-ui-1.7.3.tgz#47fa89873a8728071bc54c6c2a93b6173612f63b"
-  integrity sha512-dLe1z+9SviK3a0gl1IIz5z1NWlm0+u+DJxAhjq1jekczcEhUabXYRS4Ch+/RbjLic9K8xCK5s2UkjQSaad0YHg==
+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"
@@ -1350,6 +1373,11 @@ lodash@^4.17.21:
   resolved "http://47.110.251.215:9000/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
   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#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
@@ -1457,7 +1485,7 @@ nprogress@^0.2.0:
   resolved "http://47.110.251.215:9000/nprogress/-/nprogress-0.2.0.tgz#cb8f34c53213d895723fcbab907e9422adbcafb1"
   integrity sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==
 
-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#c9eab428effce36cd6b92c924bdb000ef1f1ed1d"
   integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==
@@ -1549,10 +1577,10 @@ pify@^2.3.0:
   resolved "http://47.110.251.215:9000/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
   integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==
 
-pinia@^2.1.4:
-  version "2.1.4"
-  resolved "http://47.110.251.215:9000/pinia/-/pinia-2.1.4.tgz#a642adfe6208e10c36d3dc16184a91064788142a"
-  integrity sha512-vYlnDu+Y/FXxv1ABo1vhjC+IbqvzUdiUC3sfDRrRyY2CQSrqqaa+iiHmqtARFxJVqWQMCJfXx1PBvFs9aJVLXQ==
+pinia@^2.1.6:
+  version "2.1.6"
+  resolved "http://47.110.251.215:9000/pinia/-/pinia-2.1.6.tgz#e88959f14b61c4debd9c42d0c9944e2875cbe0fa"
+  integrity sha512-bIU6QuE5qZviMmct5XwCesXelb5VavdOWKWaB17ggk++NUwQWWbP5YnsONTk3b752QkW9sACiR81rorpeOMSvQ==
   dependencies:
     "@vue/devtools-api" "^6.5.0"
     vue-demi ">=0.14.5"
@@ -1601,7 +1629,7 @@ postcss-selector-parser@^6.0.11:
     cssesc "^3.0.0"
     util-deprecate "^1.0.2"
 
-postcss-selector-parser@^6.0.9:
+postcss-selector-parser@^6.0.13:
   version "6.0.13"
   resolved "http://47.110.251.215:9000/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b"
   integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==
@@ -1632,6 +1660,15 @@ postcss@^8.4.26:
     picocolors "^1.0.0"
     source-map-js "^1.0.2"
 
+postcss@^8.4.27:
+  version "8.4.27"
+  resolved "http://47.110.251.215:9000/postcss/-/postcss-8.4.27.tgz#234d7e4b72e34ba5a92c29636734349e0d9c3057"
+  integrity sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==
+  dependencies:
+    nanoid "^3.3.6"
+    picocolors "^1.0.0"
+    source-map-js "^1.0.2"
+
 prelude-ls@^1.2.1:
   version "1.2.1"
   resolved "http://47.110.251.215:9000/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
@@ -1750,16 +1787,16 @@ safe-buffer@~5.2.0:
   resolved "http://47.110.251.215:9000/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
   integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
 
-sass@^1.64.0:
-  version "1.64.0"
-  resolved "http://47.110.251.215:9000/sass/-/sass-1.64.0.tgz#9ca8d0acb1a704b86b7f1197dc310f568fb34638"
-  integrity sha512-m7YtAGmQta9uANIUJwXesAJMSncqH+3INc8kdVXs6eV6GUC8Qu2IYKQSN8PRLgiQfpca697G94klm2leYMxSHw==
+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#483986ec4ed38e1c6c48c34894a9182dbff68a6e"
   integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
@@ -1956,10 +1993,10 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1:
   resolved "http://47.110.251.215:9000/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
   integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
 
-vite@^4.4.5:
-  version "4.4.5"
-  resolved "http://47.110.251.215:9000/vite/-/vite-4.4.5.tgz#ce9ae1a03841d2ec90f560744712495bf914f698"
-  integrity sha512-4m5kEtAWHYr0O1Fu7rZp64CfO1PsRGZlD3TAB32UmQlpd7qg15VF7ROqGN5CyqN7HFuwr7ICNM2+fDWRqFEKaA==
+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"
@@ -1977,7 +2014,7 @@ vue-demi@>=0.14.5:
   resolved "http://47.110.251.215:9000/vue-demi/-/vue-demi-0.14.5.tgz#676d0463d1a1266d5ab5cba932e043d8f5f2fbd9"
   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#429955e041ae5371df5f9e37ebc29ba046496182"
   integrity sha512-Clr85iD2XFZ3lJ52/ppmUDG/spxQu6+MAeHXjjyI4I1NUYZ9xmenQp4N0oaHJhrA8OOxltCVxMRfANGa70vU0g==