Compare commits

..

26 Commits
v2.0 ... master

Author SHA1 Message Date
zjl
a607e8d4f5 新增微服务统一认证KEY 2024-12-27 13:41:12 +08:00
2c01bd70d1 修改 2024-12-24 14:25:53 +08:00
zjl
c02d3afc58 设置允许最大上传限制 2024-12-23 13:42:23 +08:00
zjl
fc16d8ca45 更新 2024-12-23 12:47:18 +08:00
d2a3e73fd3 头像裁剪 oss 2024-12-23 11:29:03 +08:00
zjl
b4a603cbec 设置多图上传最大允许张数 2024-12-23 10:12:38 +08:00
zjl
5f7ff57080 优化单图上传、多图上传、文件上传 2024-12-23 09:34:50 +08:00
fb3c4c070b edit 2024-12-21 15:51:43 +08:00
ec02f45937 oss 2024-12-21 15:02:34 +08:00
dc7e807115 我的消息 2024-12-20 10:21:10 +08:00
zjl
ea9859b523 新增用户注册功能 2024-12-20 09:07:01 +08:00
zjl
54881ca611 优化消息发送 2024-12-19 15:32:25 +08:00
7f4b329943 Merge branch 'master' of http://111.229.35.227:3000/gitadmin/wms-naivevue 2024-12-19 11:19:01 +08:00
d0d902a4da 消息 2024-12-19 11:18:34 +08:00
zjl
ceab393f37 优化WebSocket通知 2024-12-19 10:50:01 +08:00
58ee0eb3e3 推送消息 2024-12-19 10:34:23 +08:00
zjl
426a065197 删除关于文件 2024-12-19 09:12:36 +08:00
zjl
d91052914e 删除废弃资源文件 2024-12-19 09:08:24 +08:00
ce06847ca8 发送消息 2024-12-18 18:05:06 +08:00
7b001872a8 导入优化 2024-12-18 17:22:30 +08:00
e6c1599cb2 Merge branch 'master' of http://111.229.35.227:3000/gitadmin/wms-naivevue 2024-12-18 15:55:44 +08:00
ab50ef7786 上传 2024-12-18 15:55:19 +08:00
zjl
129cdcfd0c 优化WebSocket组件 2024-12-18 15:35:30 +08:00
zjl
b63b3267ef 优化字典、配置 2024-12-18 15:24:38 +08:00
05dd125357 字典、配置、websocket 2024-12-18 14:28:43 +08:00
zjl
aa8920f487 优化控制台、登录日志、用户 2024-12-18 09:18:51 +08:00
39 changed files with 1874 additions and 1799 deletions

View File

@ -15,7 +15,8 @@ VITE_DROP_CONSOLE = true
# 跨域代理,可以配置多个,请注意不要换行 # 跨域代理,可以配置多个,请注意不要换行
#VITE_PROXY = [["/appApi","http://localhost:8001"],["/upload","http://localhost:8001/upload"]] #VITE_PROXY = [["/appApi","http://localhost:8001"],["/upload","http://localhost:8001/upload"]]
VITE_PROXY=[["/api","http://192.168.124.203:8081/api"]] # VITE_PROXY=[["/api","http://192.168.124.203:8081/api"]]
VITE_PROXY=[["/api","http://192.168.124.60:8081/api"]]
# API 接口地址 # API 接口地址
VITE_GLOB_API_URL = VITE_GLOB_API_URL =

View File

@ -38,6 +38,7 @@
"@vueup/vue-quill": "1.0.0-beta.8", "@vueup/vue-quill": "1.0.0-beta.8",
"@vueuse/components": "^9.13.0", "@vueuse/components": "^9.13.0",
"@vueuse/core": "^8.9.4", "@vueuse/core": "^8.9.4",
"ali-oss": "^6.22.0",
"axios": "^1.7.7", "axios": "^1.7.7",
"cropperjs": "^1.6.2", "cropperjs": "^1.6.2",
"date-fns": "^2.30.0", "date-fns": "^2.30.0",
@ -61,7 +62,6 @@
"@commitlint/cli": "^12.1.4", "@commitlint/cli": "^12.1.4",
"@commitlint/config-conventional": "^12.1.4", "@commitlint/config-conventional": "^12.1.4",
"@tinymce/tinymce-vue": "^5.1.1", "@tinymce/tinymce-vue": "^5.1.1",
"tinymce": "5.10.3",
"@types/element-resize-detector": "^1.1.6", "@types/element-resize-detector": "^1.1.6",
"@types/intro.js": "^3.0.2", "@types/intro.js": "^3.0.2",
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
@ -101,6 +101,7 @@
"stylelint-order": "^4.1.0", "stylelint-order": "^4.1.0",
"stylelint-scss": "^3.21.0", "stylelint-scss": "^3.21.0",
"tailwindcss": "^3.4.10", "tailwindcss": "^3.4.10",
"tinymce": "5.10.3",
"ts-node": "^10.9.2", "ts-node": "^10.9.2",
"typescript": "^4.9.5", "typescript": "^4.9.5",
"unplugin-vue-components": "^0.26.0", "unplugin-vue-components": "^0.26.0",

View File

@ -41,15 +41,15 @@
import { useProjectSetting } from '@/hooks/setting/useProjectSetting'; import { useProjectSetting } from '@/hooks/setting/useProjectSetting';
import { lighten } from '@/utils'; import { lighten } from '@/utils';
/**
* 定义参数
*/
const route = useRoute(); const route = useRoute();
const useLockscreen = useLockscreenStore(); const useLockscreen = useLockscreenStore();
const designStore = useDesignSettingStore(); const designStore = useDesignSettingStore();
const isLock = computed(() => useLockscreen.isLock); const isLock = computed(() => useLockscreen.isLock);
const lockTime = computed(() => useLockscreen.lockTime); const lockTime = computed(() => useLockscreen.lockTime);
const proName = import.meta.env.VITE_GLOB_APP_TITLE; const proName = import.meta.env.VITE_GLOB_APP_TITLE;
const { getIsWaterMark } = useProjectSetting(); const { getIsWaterMark } = useProjectSetting();
/** /**
@ -96,6 +96,9 @@
}, 1000); }, 1000);
}; };
/**
* 钩子函数
*/
onMounted(() => { onMounted(() => {
// document.addEventListener('mousedown', timekeeping); // document.addEventListener('mousedown', timekeeping);
}); });

View File

@ -1,6 +1,10 @@
import { http } from '@/utils/http/axios'; import { http } from '@/utils/http/axios';
//图片上传 /**
*
* @param data
* @returns
*/
export function upload(data) { export function upload(data) {
return http.request({ return http.request({
url: '/upload/uploadFile', url: '/upload/uploadFile',
@ -11,3 +15,16 @@ export function upload(data) {
}, },
}); });
} }
/**
* OSS账号
* @param params
* @returns
*/
export function getOssConfig(params?) {
return http.request({
url: '/config/item/getItemList/config_oss',
method: 'GET',
params,
});
}

View File

@ -22,6 +22,22 @@ export function getUserInfo() {
}); });
} }
/**
* @description:
*/
export function register(params) {
return http.request(
{
url: '/register',
method: 'POST',
params,
},
{
isTransformResponse: false,
},
);
}
/** /**
* @description: * @description:
*/ */
@ -48,6 +64,7 @@ export function login2(data) {
formData.append('username', data.username); formData.append('username', data.username);
formData.append('password', data.password); formData.append('password', data.password);
formData.append('code', data.code); formData.append('code', data.code);
formData.append('key', data.key);
formData.append('grant_type', data.grant_type); formData.append('grant_type', data.grant_type);
return http.request<BasicResponseModel>( return http.request<BasicResponseModel>(
{ {
@ -239,3 +256,13 @@ export function getCityByList(pid: any) {
method: 'get', method: 'get',
}); });
} }
/**
* @description:
*/
export function sendMsg(data) {
return http.request({
url: '/websocket/sendMsg',
method: 'post',
data,
});
}

View File

@ -1,474 +0,0 @@
<svg width="1052" height="652" viewBox="0 0 1052 652" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path
d="M909.026 641.482H254.027H209.272V338.044C209.272 316.552 226.717 299.128 248.235 299.128C269.754 299.128 287.198 281.705 287.198 260.212V227.344C287.198 187.699 319.376 155.56 359.069 155.56H683.672C717.986 155.56 745.803 183.343 745.803 217.615C745.803 251.887 773.62 279.67 807.933 279.67H827.414C872.487 279.67 909.026 316.165 909.026 361.183V641.482Z"
fill="#F3F6FF"/>
<path
d="M809.512 139.783C812.42 139.783 814.778 137.429 814.778 134.524C814.778 131.62 812.42 129.265 809.512 129.265C806.604 129.265 804.247 131.62 804.247 134.524C804.247 137.429 806.604 139.783 809.512 139.783Z"
fill="#54B7FF"/>
<path
d="M841.63 165.552C848.609 165.552 854.267 159.901 854.267 152.93C854.267 145.96 848.609 140.309 841.63 140.309C834.651 140.309 828.994 145.96 828.994 152.93C828.994 159.901 834.651 165.552 841.63 165.552Z"
stroke="#54B7FF" stroke-width="1.053"/>
<path
d="M319.062 107.54C328.382 109.316 337.377 103.208 339.151 93.8978C340.925 84.5874 334.807 75.5999 325.486 73.8237C316.166 72.0475 307.171 78.1553 305.397 87.4657C303.623 96.7761 309.741 105.764 319.062 107.54Z"
fill="#54B7FF"/>
<path
d="M294.367 140.737C310.392 143.791 325.857 133.289 328.907 117.281C331.958 101.274 321.439 85.821 305.413 82.7671C289.387 79.7132 273.923 90.2145 270.872 106.222C267.822 122.23 278.341 137.683 294.367 140.737Z"
stroke="#7268F5" stroke-width="1.053"/>
<path fill-rule="evenodd" clip-rule="evenodd"
d="M316.007 651.438C313.858 651.438 312.182 649.581 312.405 647.447L338.901 393.717L349.371 394.84L319.603 648.243C319.389 650.065 317.843 651.438 316.007 651.438Z"
fill="#627AC1"/>
<path fill-rule="evenodd" clip-rule="evenodd"
d="M433.809 651.438C435.957 651.438 437.634 649.581 437.411 647.447L410.915 393.717L400.444 394.84L430.212 648.243C430.427 650.065 431.973 651.438 433.809 651.438Z"
fill="#627AC1"/>
<path fill-rule="evenodd" clip-rule="evenodd"
d="M602.437 651.438C600.289 651.438 598.612 649.581 598.835 647.447L625.331 393.717L635.802 394.84L606.034 648.243C605.819 650.065 604.273 651.438 602.437 651.438Z"
fill="#627AC1"/>
<path fill-rule="evenodd" clip-rule="evenodd"
d="M720.24 651.438C722.388 651.438 724.064 649.581 723.841 647.447L697.345 393.717L686.875 394.84L716.642 648.243C716.857 650.065 718.403 651.438 720.24 651.438Z"
fill="#627AC1"/>
<path d="M419.399 382.744H323.572V398.521H419.399V382.744Z" fill="#A3BAFF"/>
<path d="M716.36 382.744H419.399V398.521H716.36V382.744Z" fill="#CCD9FF"/>
<path
d="M487.278 2H373.548C369.477 2 366.177 5.30011 366.177 9.371V82.9785C366.177 87.0494 369.477 90.3495 373.548 90.3495H487.278C491.349 90.3495 494.649 87.0494 494.649 82.9785V9.371C494.649 5.30011 491.349 2 487.278 2Z"
fill="white" stroke="#E5E5E5" stroke-width="2.106"/>
<path
d="M387.238 32.5017C390.728 32.5017 393.556 29.6763 393.556 26.1911C393.556 22.7058 390.728 19.8804 387.238 19.8804C383.749 19.8804 380.92 22.7058 380.92 26.1911C380.92 29.6763 383.749 32.5017 387.238 32.5017Z"
fill="#A3B7FF"/>
<path d="M393.556 61.9514H380.92V79.8317H393.556V61.9514Z" fill="#5FFFD8"/>
<path d="M393.556 49.3301H380.92V67.2103H393.556V49.3301Z" fill="#1BE3B3"/>
<path d="M415.67 64.0549H403.034V80.8834H415.67V64.0549Z" fill="#5FFFD8"/>
<path d="M415.67 56.6926H403.034V71.4175H415.67V56.6926Z" fill="#1BE3B3"/>
<path d="M437.785 53.5371H425.148V80.8834H437.785V53.5371Z" fill="#5FFFD8"/>
<path d="M437.785 44.0713H425.148V61.9515H437.785V44.0713Z" fill="#1BE3B3"/>
<path d="M459.899 53.5371H447.262V80.8834H459.899V53.5371Z" fill="#5FFFD8"/>
<path d="M459.899 29.3462H447.262V56.6925H459.899V29.3462Z" fill="#1BE3B3"/>
<path d="M482.013 53.5371H469.376V80.8834H482.013V53.5371Z" fill="#5FFFD8"/>
<path d="M482.013 37.7605H469.376V65.1068H482.013V37.7605Z" fill="#1BE3B3"/>
<path
d="M453.408 200.823C453.408 196.155 457.196 192.372 461.868 192.372H656.464C661.136 192.372 664.924 196.155 664.924 200.823V336.029C664.924 340.696 661.136 344.479 656.464 344.479H461.868C457.196 344.479 453.408 340.696 453.408 336.029V200.823Z"
fill="#706AC7"/>
<path
d="M460.176 205.893C460.176 201.226 463.964 197.442 468.637 197.442H649.695C654.368 197.442 658.156 201.226 658.156 205.893V330.959C658.156 335.627 654.368 339.41 649.695 339.41H468.637C463.964 339.41 460.176 335.627 460.176 330.959V205.893Z"
fill="#282F48"/>
<path d="M580.318 344.479H538.015V374.057H580.318V344.479Z" fill="#2C2770"/>
<path
d="M488.942 378.282C488.942 375.949 490.836 374.057 493.172 374.057H626.005C628.341 374.057 630.235 375.949 630.235 378.282C630.235 380.616 628.341 382.507 626.005 382.507H493.172C490.836 382.507 488.942 380.616 488.942 378.282Z"
fill="#706AC7"/>
<path fill-rule="evenodd" clip-rule="evenodd"
d="M461.281 203.262C460.574 204.676 460.175 206.272 460.175 207.96V328.892C460.175 334.7 464.89 339.41 470.706 339.41H647.624C653.44 339.41 658.155 334.7 658.155 328.892V313.635C656.039 304.339 638.271 277.722 601.469 294.622C564.665 311.523 516.862 288.707 506.286 248.145C498.271 217.406 473.681 205.726 461.281 203.262Z"
fill="#2F3B67"/>
<mask id="mask0" mask-type="alpha" maskUnits="userSpaceOnUse" x="591" y="249" width="34"
height="34">
<path
d="M608.094 282.802C617.395 282.802 624.936 275.27 624.936 265.979C624.936 256.688 617.395 249.156 608.094 249.156C598.791 249.156 591.25 256.688 591.25 265.979C591.25 275.27 598.791 282.802 608.094 282.802ZM608.094 277.034C614.207 277.034 619.162 272.085 619.162 265.979C619.162 259.874 614.207 254.924 608.094 254.924C601.981 254.924 597.025 259.874 597.025 265.979C597.025 272.085 601.981 277.034 608.094 277.034Z"
fill="white"/>
</mask>
<g mask="url(#mask0)">
<path
d="M608.094 282.802C617.396 282.802 624.937 275.27 624.937 265.979C624.937 256.688 617.396 249.156 608.094 249.156C598.792 249.156 591.251 256.688 591.251 265.979C591.251 275.27 598.792 282.802 608.094 282.802Z"
fill="#324178"/>
</g>
<mask id="mask1" mask-type="alpha" maskUnits="userSpaceOnUse" x="591" y="249" width="34"
height="34">
<path
d="M608.094 282.802C617.395 282.802 624.936 275.27 624.936 265.979C624.936 256.688 617.395 249.156 608.094 249.156C598.791 249.156 591.25 256.688 591.25 265.979C591.25 275.27 598.791 282.802 608.094 282.802ZM608.094 277.034C614.207 277.034 619.162 272.085 619.162 265.979C619.162 259.874 614.207 254.924 608.094 254.924C601.981 254.924 597.025 259.874 597.025 265.979C597.025 272.085 601.981 277.034 608.094 277.034Z"
fill="white"/>
</mask>
<g mask="url(#mask1)">
<path
d="M624.936 265.979C624.936 262.652 623.949 259.399 622.098 256.633C620.247 253.866 617.617 251.71 614.54 250.437C611.462 249.164 608.075 248.831 604.808 249.48C601.541 250.129 598.54 251.731 596.184 254.084L608.094 265.979H624.936Z"
fill="white"/>
</g>
<mask id="mask2" mask-type="alpha" maskUnits="userSpaceOnUse" x="543" y="249" width="35"
height="34">
<path
d="M560.225 282.802C569.527 282.802 577.068 275.27 577.068 265.979C577.068 256.688 569.527 249.156 560.225 249.156C550.923 249.156 543.382 256.688 543.382 265.979C543.382 275.27 550.923 282.802 560.225 282.802ZM560.225 277.034C566.338 277.034 571.294 272.085 571.294 265.979C571.294 259.874 566.338 254.924 560.225 254.924C554.112 254.924 549.157 259.874 549.157 265.979C549.157 272.085 554.112 277.034 560.225 277.034Z"
fill="white"/>
</mask>
<g mask="url(#mask2)">
<path
d="M560.225 282.802C569.527 282.802 577.068 275.27 577.068 265.979C577.068 256.688 569.527 249.156 560.225 249.156C550.923 249.156 543.382 256.688 543.382 265.979C543.382 275.27 550.923 282.802 560.225 282.802Z"
fill="#324178"/>
</g>
<mask id="mask3" mask-type="alpha" maskUnits="userSpaceOnUse" x="543" y="249" width="35"
height="34">
<path
d="M560.225 282.802C569.527 282.802 577.068 275.27 577.068 265.979C577.068 256.688 569.527 249.156 560.225 249.156C550.923 249.156 543.382 256.688 543.382 265.979C543.382 275.27 550.923 282.802 560.225 282.802ZM560.225 277.034C566.338 277.034 571.294 272.085 571.294 265.979C571.294 259.874 566.338 254.924 560.225 254.924C554.112 254.924 549.157 259.874 549.157 265.979C549.157 272.085 554.112 277.034 560.225 277.034Z"
fill="white"/>
</mask>
<g mask="url(#mask3)">
<path
d="M577.068 265.979C577.068 263.213 576.385 260.489 575.079 258.049C573.774 255.609 571.886 253.529 569.582 251.992C567.279 250.455 564.632 249.509 561.876 249.237C559.119 248.966 556.338 249.378 553.779 250.437C551.22 251.496 548.962 253.168 547.205 255.307C545.448 257.445 544.246 259.984 543.706 262.697C543.165 265.411 543.303 268.215 544.107 270.863C544.911 273.51 546.356 275.918 548.315 277.875L560.225 265.979H577.068Z"
fill="white"/>
</g>
<mask id="mask4" mask-type="alpha" maskUnits="userSpaceOnUse" x="493" y="249" width="35"
height="34">
<path
d="M510.582 282.802C519.885 282.802 527.425 275.27 527.425 265.979C527.425 256.688 519.885 249.156 510.582 249.156C501.28 249.156 493.739 256.688 493.739 265.979C493.739 275.27 501.28 282.802 510.582 282.802ZM510.582 277.034C516.695 277.034 521.651 272.085 521.651 265.979C521.651 259.874 516.695 254.924 510.582 254.924C504.47 254.924 499.514 259.874 499.514 265.979C499.514 272.085 504.47 277.034 510.582 277.034Z"
fill="white"/>
</mask>
<g mask="url(#mask4)">
<path
d="M510.582 282.802C519.884 282.802 527.425 275.27 527.425 265.979C527.425 256.688 519.884 249.156 510.582 249.156C501.28 249.156 493.739 256.688 493.739 265.979C493.739 275.27 501.28 282.802 510.582 282.802Z"
fill="#324178"/>
</g>
<mask id="mask5" mask-type="alpha" maskUnits="userSpaceOnUse" x="493" y="249" width="35"
height="34">
<path
d="M510.582 282.802C519.885 282.802 527.425 275.27 527.425 265.979C527.425 256.688 519.885 249.156 510.582 249.156C501.28 249.156 493.739 256.688 493.739 265.979C493.739 275.27 501.28 282.802 510.582 282.802ZM510.582 277.034C516.695 277.034 521.651 272.085 521.651 265.979C521.651 259.874 516.695 254.924 510.582 254.924C504.47 254.924 499.514 259.874 499.514 265.979C499.514 272.085 504.47 277.034 510.582 277.034Z"
fill="white"/>
</mask>
<g mask="url(#mask5)">
<path
d="M527.425 265.979C527.425 262.652 526.438 259.399 524.587 256.633C522.736 253.866 520.106 251.71 517.028 250.437C513.95 249.164 510.564 248.831 507.296 249.48C504.029 250.129 501.028 251.731 498.672 254.084C496.317 256.436 494.713 259.434 494.063 262.697C493.413 265.961 493.747 269.343 495.021 272.417C496.296 275.491 498.455 278.118 501.225 279.967C503.995 281.815 507.251 282.802 510.582 282.802V265.979H527.425Z"
fill="white"/>
</g>
<path
d="M490.193 311.467C490.193 310.306 491.135 309.364 492.298 309.364H532.307C533.47 309.364 534.413 310.306 534.413 311.467C534.413 312.628 533.47 313.571 532.307 313.571H492.298C491.135 313.571 490.193 312.628 490.193 311.467Z"
fill="white"/>
<path
d="M490.193 322.706C490.193 321.544 491.135 320.602 492.298 320.602H521.778C522.941 320.602 523.884 321.544 523.884 322.706C523.884 323.867 522.941 324.809 521.778 324.809H492.298C491.135 324.809 490.193 323.867 490.193 322.706Z"
fill="white"/>
<path
d="M605.434 230.01C605.434 228.849 606.376 227.907 607.54 227.907H622.837C623.999 227.907 624.942 228.849 624.942 230.01C624.942 231.172 623.999 232.113 622.837 232.113H607.54C606.376 232.113 605.434 231.172 605.434 230.01Z"
fill="white"/>
<path
d="M594.798 321.76C597.736 321.76 600.117 319.381 600.117 316.447C600.117 313.513 597.736 311.135 594.798 311.135C591.86 311.135 589.479 313.513 589.479 316.447C589.479 319.381 591.86 321.76 594.798 321.76Z"
fill="white"/>
<path
d="M614.299 321.76C617.237 321.76 619.618 319.381 619.618 316.447C619.618 313.513 617.237 311.135 614.299 311.135C611.362 311.135 608.981 313.513 608.981 316.447C608.981 319.381 611.362 321.76 614.299 321.76Z"
fill="white"/>
<path
d="M522.998 222.594H498.166C495.721 222.594 493.739 224.576 493.739 227.021C493.739 229.466 495.721 231.448 498.166 231.448H522.998C525.443 231.448 527.425 229.466 527.425 227.021C527.425 224.576 525.443 222.594 522.998 222.594Z"
fill="white"/>
<path fill-rule="evenodd" clip-rule="evenodd"
d="M619.618 209.313H499.057C489.755 209.313 482.214 216.845 482.214 226.136V281.031C482.214 290.322 489.755 297.854 499.057 297.854H619.618C628.92 297.854 636.461 290.322 636.461 281.031V226.136C636.461 216.845 628.92 209.313 619.618 209.313ZM499.057 208.428C489.266 208.428 481.328 216.356 481.328 226.136V281.031C481.328 290.811 489.266 298.74 499.057 298.74H619.618C629.41 298.74 637.348 290.811 637.348 281.031V226.136C637.348 216.356 629.41 208.428 619.618 208.428H499.057Z"
fill="white"/>
<path d="M481.608 329.104H403.034L413.968 382.744H492.543L481.608 329.104Z" fill="#BE7430"/>
<path d="M403.404 329.104H480.96L470.06 382.744H392.503L403.404 329.104Z" fill="#FF9330"/>
<path
d="M407.977 337.512C408.237 336.289 409.317 335.414 410.567 335.414H469.886C471.571 335.414 472.827 336.966 472.476 338.614L464.432 376.439C464.172 377.663 463.093 378.537 461.843 378.537H402.523C400.839 378.537 399.583 376.985 399.934 375.337L407.977 337.512Z"
fill="#FFB36C"/>
<path
d="M470.429 351.191L464.68 377.776C464.584 378.22 464.186 378.537 463.724 378.537H392.775C392.68 378.537 392.589 378.524 392.503 378.499V378.462C402.695 378.718 425.032 376.271 431.283 368.661C435.428 363.615 440.391 364.24 445.219 364.37C449.495 364.485 453.358 364.589 455.606 361.069C457.694 357.8 460.339 357.548 462.878 357.305C465.94 357.012 468.847 356.735 470.429 351.191Z"
fill="#F2A864"/>
<path fill-rule="evenodd" clip-rule="evenodd"
d="M407.799 326.419C408.124 327.047 408.299 327.802 408.299 328.578H407.096C407.096 327.474 406.457 326.579 405.669 326.579C404.88 326.579 404.241 327.474 404.241 328.578C404.241 329.681 404.88 330.576 405.669 330.576C405.816 330.576 405.958 330.545 406.091 330.487L406.448 332.093C405.919 332.323 405.351 332.314 404.825 332.066C404.3 331.818 403.844 331.345 403.522 330.713C403.2 330.082 403.029 329.324 403.034 328.549C403.038 327.773 403.218 327.02 403.546 326.395C403.875 325.771 404.337 325.307 404.865 325.071C405.393 324.835 405.961 324.838 406.488 325.08C407.015 325.322 407.473 325.791 407.799 326.419Z"
fill="#C4C4C4"/>
<path fill-rule="evenodd" clip-rule="evenodd"
d="M468.875 326.419C469.201 327.047 469.376 327.802 469.376 328.578H468.173C468.173 327.474 467.534 326.579 466.745 326.579C465.957 326.579 465.318 327.474 465.318 328.578C465.318 329.681 465.957 330.576 466.745 330.576C466.892 330.576 467.035 330.545 467.168 330.487L467.525 332.093C466.996 332.323 466.428 332.314 465.902 332.066C465.377 331.818 464.921 331.345 464.599 330.713C464.278 330.082 464.107 329.324 464.111 328.549C464.116 327.773 464.295 327.02 464.624 326.395C464.952 325.771 465.414 325.307 465.942 325.071C466.47 324.835 467.038 324.838 467.565 325.08C468.092 325.322 468.55 325.791 468.875 326.419Z"
fill="#C4C4C4"/>
<path fill-rule="evenodd" clip-rule="evenodd"
d="M448.868 326.419C449.193 327.047 449.368 327.802 449.368 328.578H448.164C448.164 327.474 447.526 326.579 446.738 326.579C445.949 326.579 445.311 327.474 445.311 328.578C445.311 329.681 445.949 330.576 446.738 330.576C446.885 330.576 447.026 330.545 447.16 330.487L447.517 332.093C446.988 332.323 446.42 332.314 445.895 332.066C445.369 331.818 444.913 331.345 444.591 330.713C444.269 330.082 444.099 329.324 444.103 328.549C444.107 327.773 444.287 327.02 444.615 326.395C444.944 325.771 445.406 325.307 445.934 325.071C446.462 324.835 447.03 324.838 447.557 325.08C448.084 325.322 448.542 325.791 448.868 326.419Z"
fill="#C4C4C4"/>
<path fill-rule="evenodd" clip-rule="evenodd"
d="M428.86 326.419C429.185 327.047 429.36 327.802 429.36 328.578H428.157C428.157 327.474 427.518 326.579 426.73 326.579C425.941 326.579 425.303 327.474 425.303 328.578C425.303 329.681 425.941 330.576 426.73 330.576C426.877 330.576 427.019 330.545 427.152 330.487L427.509 332.093C426.98 332.323 426.412 332.314 425.886 332.066C425.361 331.818 424.905 331.345 424.583 330.713C424.261 330.082 424.091 329.324 424.095 328.549C424.099 327.773 424.279 327.02 424.607 326.395C424.936 325.771 425.398 325.307 425.926 325.071C426.454 324.835 427.022 324.838 427.549 325.08C428.076 325.322 428.534 325.791 428.86 326.419Z"
fill="#C4C4C4"/>
<path
d="M412.929 343.52C413.143 342.475 414.06 341.725 415.123 341.725H418.696C420.113 341.725 421.174 343.03 420.889 344.423L420.518 346.24C420.304 347.285 419.387 348.036 418.324 348.036H414.751C413.334 348.036 412.273 346.731 412.558 345.338L412.929 343.52Z"
fill="#FFDAB8"/>
<path
d="M428.725 343.52C428.939 342.475 429.855 341.725 430.919 341.725H434.492C435.909 341.725 436.97 343.03 436.685 344.423L436.313 346.24C436.1 347.285 435.183 348.036 434.12 348.036H430.547C429.13 348.036 428.069 346.731 428.354 345.338L428.725 343.52Z"
fill="#FFDAB8"/>
<path
d="M443.468 343.52C443.682 342.475 444.598 341.725 445.661 341.725H449.235C450.652 341.725 451.713 343.03 451.428 344.423L451.056 346.24C450.843 347.285 449.926 348.036 448.863 348.036H445.29C443.872 348.036 442.811 346.731 443.096 345.338L443.468 343.52Z"
fill="#FFDAB8"/>
<path
d="M459.264 343.52C459.477 342.475 460.394 341.725 461.457 341.725H465.03C466.448 341.725 467.508 343.03 467.223 344.423L466.852 346.24C466.638 347.285 465.722 348.036 464.659 348.036H461.085C459.668 348.036 458.607 346.731 458.892 345.338L459.264 343.52Z"
fill="#FFDAB8"/>
<path
d="M409.77 355.09C409.984 354.045 410.9 353.294 411.964 353.294H415.537C416.954 353.294 418.015 354.599 417.73 355.992L417.359 357.81C417.145 358.855 416.228 359.605 415.165 359.605H411.592C410.175 359.605 409.114 358.3 409.399 356.907L409.77 355.09Z"
fill="#FFDAB8"/>
<path
d="M425.566 355.09C425.78 354.045 426.696 353.294 427.759 353.294H431.333C432.75 353.294 433.811 354.599 433.526 355.992L433.154 357.81C432.941 358.855 432.024 359.605 430.961 359.605H427.388C425.97 359.605 424.91 358.3 425.194 356.907L425.566 355.09Z"
fill="#FFDAB8"/>
<path
d="M440.309 355.09C440.522 354.045 441.439 353.294 442.502 353.294H446.075C447.493 353.294 448.554 354.599 448.269 355.992L447.897 357.81C447.683 358.855 446.767 359.605 445.703 359.605H442.13C440.713 359.605 439.652 358.3 439.937 356.907L440.309 355.09Z"
fill="#FFDAB8"/>
<path
d="M456.105 355.09C456.318 354.045 457.235 353.294 458.298 353.294H461.871C463.289 353.294 464.349 354.599 464.064 355.992L463.693 357.81C463.479 358.855 462.563 359.605 461.5 359.605H457.926C456.509 359.605 455.448 358.3 455.733 356.907L456.105 355.09Z"
fill="#FFDAB8"/>
<path
d="M406.611 366.659C406.825 365.614 407.741 364.864 408.804 364.864H412.378C413.795 364.864 414.856 366.169 414.571 367.562L414.199 369.38C413.986 370.425 413.069 371.175 412.006 371.175H408.433C407.015 371.175 405.955 369.87 406.239 368.477L406.611 366.659Z"
fill="#FFDAB8"/>
<path
d="M422.407 366.659C422.62 365.614 423.537 364.864 424.6 364.864H428.173C429.591 364.864 430.652 366.169 430.367 367.562L429.995 369.38C429.781 370.425 428.865 371.175 427.802 371.175H424.229C422.811 371.175 421.75 369.87 422.035 368.477L422.407 366.659Z"
fill="#FFDAB8"/>
<path
d="M437.15 366.659C437.363 365.614 438.28 364.864 439.343 364.864H442.916C444.334 364.864 445.394 366.169 445.11 367.562L444.738 369.38C444.524 370.425 443.608 371.175 442.545 371.175H438.971C437.554 371.175 436.493 369.87 436.778 368.477L437.15 366.659Z"
fill="#FFDAB8"/>
<path
d="M452.945 366.659C453.159 365.614 454.076 364.864 455.139 364.864H458.712C460.13 364.864 461.19 366.169 460.905 367.562L460.534 369.38C460.32 370.425 459.404 371.175 458.34 371.175H454.767C453.35 371.175 452.289 369.87 452.574 368.477L452.945 366.659Z"
fill="#FFDAB8"/>
<path
d="M322.344 639.673L309.917 629.034C303.305 623.375 304.57 606.09 304.57 606.09L286.798 605.129V624.32L283.915 634.396L320.903 641.592L322.344 639.673Z"
fill="#FFAE64"/>
<path
d="M316.14 651.188H328.015C329.56 651.188 330.988 650.368 331.767 649.036C332.943 647.023 332.322 644.436 330.381 643.145C328.032 641.584 324.606 639.264 320.423 636.315C312.256 630.557 308.894 626.719 308.894 626.719C308.894 626.719 304.09 629.598 296.885 629.598C289.68 629.598 285.837 624.32 285.837 624.32C282.745 632.04 282.634 640.632 285.526 648.429L285.837 649.268L299.767 650.229L302.169 648.309L308.522 650.122C311 650.829 313.563 651.188 316.14 651.188Z"
fill="#2C2770"/>
<path
d="M193.609 639.673L206.036 629.034C212.647 623.375 211.382 606.09 211.382 606.09L229.155 605.129V624.32L232.037 634.396L195.05 641.592L193.609 639.673Z"
fill="#FFAE64"/>
<path
d="M199.813 651.188H187.938C186.393 651.188 184.964 650.368 184.186 649.036C183.01 647.023 183.63 644.436 185.573 643.145C187.92 641.584 191.347 639.264 195.53 636.315C203.696 630.557 207.059 626.719 207.059 626.719C207.059 626.719 211.862 629.598 219.068 629.598C226.273 629.598 230.116 624.32 230.116 624.32C233.208 632.04 233.319 640.632 230.427 648.429L230.116 649.268L216.186 650.229L213.784 648.309L207.431 650.122C204.953 650.829 202.389 651.188 199.813 651.188Z"
fill="#2C2770"/>
<path
d="M234.813 339.669L238.762 320.144L318.981 317.745L323.936 355.358C325.433 366.723 325.917 378.198 325.381 389.649L314.658 618.564H286.317L280.553 389.231L238.762 618.564H208.5L232.037 398.347L231.822 396.055C230.054 377.215 231.061 358.217 234.813 339.669Z"
fill="#2C2770"/>
<mask id="mask6" mask-type="alpha" maskUnits="userSpaceOnUse" x="207" y="317" width="118"
height="302">
<path
d="M233.852 339.669L237.802 320.144L318.021 317.745L322.976 355.358C324.473 366.723 324.956 378.198 324.42 389.649L313.698 618.564H285.357L279.592 389.231L237.802 618.564H207.539L231.077 398.347L230.861 396.055C229.093 377.215 230.101 358.217 233.852 339.669Z"
fill="white"/>
</mask>
<g mask="url(#mask6)">
<path
d="M243.566 318.225C241.004 331.019 235.88 367.737 235.88 412.26C235.88 412.26 219.869 568.987 211.863 619.523"
stroke="white" stroke-width="1.053"/>
<path
d="M281.034 389.711C283.916 396.908 289.776 420.896 290.16 459.278C290.545 497.661 290.32 581.461 290.16 618.564"
stroke="white" stroke-width="1.053"/>
</g>
<path
d="M378.719 192.924L355.485 204.712L358.039 230.283L382.401 219.544C395.64 213.707 404.953 201.493 407.064 187.194L415.407 130.703L422.123 123.064L427.336 116.313C429.122 114 429.782 111.012 429.137 108.164C428.669 106.097 427.271 104.362 425.35 103.464L415.653 98.9286L422.041 83.5395C422.662 82.045 421.801 80.3499 420.227 79.9672C419.08 79.6881 417.887 80.2039 417.305 81.2303L407.51 98.5094L404.769 98.0523C403.406 97.8248 402.051 98.5103 401.429 99.7439L398.25 106.04C397.369 107.784 397.124 109.78 397.555 111.685L400.057 122.731L378.719 192.924Z"
fill="#FF9330"/>
<path
d="M422.313 102.109L416.552 113.152C415.98 114.249 414.656 114.715 413.522 114.22C412.445 113.749 411.881 112.555 412.202 111.425L413.157 108.062"
stroke="black" stroke-width="1.053"/>
<path
d="M427.57 104.689L420.619 115.143C419.964 116.127 418.658 116.437 417.63 115.852C416.586 115.257 416.194 113.946 416.742 112.876L417.017 112.338"
stroke="black" stroke-width="1.053"/>
<path
d="M428.461 112.699L422.809 120.618C422.093 121.622 420.732 121.922 419.658 121.311C418.622 120.721 418.175 119.461 418.609 118.35L419.654 115.67"
stroke="black" stroke-width="1.053"/>
<path
d="M409.459 99.3599L419.27 103.524C420.097 103.875 420.509 104.806 420.213 105.653C419.574 107.484 417.779 108.652 415.843 108.496L406.869 107.771C408.608 108.894 410.978 115.099 411.22 121.53"
stroke="black" stroke-width="1.053"/>
<path
d="M237.552 215.097L259.298 209.397H315.578C322.361 209.397 329.111 208.462 335.637 206.618L368.551 197.322L374.315 226.814L325.801 256.206L321.44 274.167L325.256 301.206C326.799 312.132 318.162 321.833 307.118 321.578L242.002 320.078C237.235 319.969 233.51 315.932 233.786 311.178L235.913 274.651L228.227 289.406L200.427 283.419L210.341 242.761C213.636 229.248 224.083 218.627 237.552 215.097Z"
fill="#54B7FF"/>
<path fill-rule="evenodd" clip-rule="evenodd"
d="M259.298 209.397L237.552 215.097C224.083 218.627 213.636 229.248 210.341 242.761L200.427 283.419L228.227 289.406L235.913 274.651L201.395 486.704C200.883 489.851 203.27 492.726 206.461 492.806L231.97 493.441L264.031 374.856V216.563H291.937L298.255 374.856L316.099 495.535L342.187 496.185C345.397 496.265 347.931 493.482 347.546 490.298L321.44 274.167L325.801 256.206L374.315 226.814L368.551 197.322L335.637 206.618C329.111 208.462 322.361 209.397 315.578 209.397H259.298Z"
fill="#FFE071"/>
<path d="M301.941 166.078L288.251 163.974" stroke="black" stroke-width="1.053"/>
<path
d="M259.448 204.591C261.426 199.656 261.097 183.615 260.684 176.211C269.752 177.857 287.516 183.985 286.032 195.337C284.549 206.688 288.711 209.527 290.979 209.527C293.451 214.873 295.058 226.184 281.704 228.651C268.351 231.119 257.181 219.396 253.266 213.228C254.502 212.405 257.47 209.527 259.448 204.591Z"
fill="#FF9330"/>
<mask id="mask7" mask-type="alpha" maskUnits="userSpaceOnUse" x="253" y="176" width="40"
height="53">
<path
d="M259.779 204.582C261.745 199.708 261.417 183.866 261.008 176.555C270.018 178.179 287.669 184.232 286.195 195.443C284.72 206.654 288.857 209.457 291.109 209.457C293.567 214.737 295.163 225.908 281.895 228.345C268.625 230.782 257.527 219.206 253.636 213.113C254.865 212.3 257.813 209.457 259.779 204.582Z"
fill="white"/>
</mask>
<g mask="url(#mask7)">
<path
d="M287.883 205.331C267.879 203.159 261.428 186.328 260.703 178.184L287.883 193.386C296.218 198.273 307.887 207.503 287.883 205.331Z"
fill="#D76767"/>
</g>
<path
d="M261.228 177.896C260.825 184.659 269.081 196.955 284.185 196.34C293.003 195.982 295.23 185.913 297.476 174.822C299.078 166.915 302.106 158.489 301.101 152.688L287.81 148.386C289.622 150.845 289.027 150.301 282.986 150.301C277.008 150.301 274.671 146.887 272.455 145.042C271.248 152.42 261.925 144.696 261.925 148.386C261.925 151.336 264.031 170.66 264.031 172.914C261.925 172.914 263.018 166.078 261.228 164.985C259.214 163.755 255.187 162.895 255.187 169.289C255.187 175.682 259.214 177.691 261.228 177.896Z"
fill="#FF9330"/>
<path
d="M261.925 172.914C261.925 172.914 262.978 164.5 259.819 164.5C253.159 164.5 255.607 172.388 255.607 172.388C249.464 160.819 251.394 139.257 269.296 133.998C296.315 126.061 308.786 151.132 300.888 152.404C284.565 155.034 272.455 147.145 270.349 148.723C268.243 150.301 266.137 165.026 265.084 170.285C264.241 174.492 262.802 174.141 261.925 172.914Z"
fill="#2C2770"/>
<path
d="M279.641 180.967L286.366 184.325C285.886 185.284 284.348 186.532 282.043 185.764C279.737 184.996 279.481 182.565 279.641 180.967Z"
fill="white"/>
<path
d="M294.051 160.815H298.858C299.653 160.815 300.297 161.46 300.297 162.255C300.297 163.05 299.653 163.694 298.858 163.694H294.051C293.256 163.694 292.611 163.05 292.611 162.255C292.611 161.46 293.256 160.815 294.051 160.815Z"
fill="#2C2770"/>
<path
d="M274.837 160.815H279.644C280.439 160.815 281.083 161.46 281.083 162.255C281.083 163.05 280.439 163.694 279.644 163.694H274.837C274.042 163.694 273.397 163.05 273.397 162.255C273.397 161.46 274.042 160.815 274.837 160.815Z"
fill="#2C2770"/>
<path
d="M277.72 169.544C276.924 169.544 276.279 168.899 276.279 168.104C276.279 167.309 276.924 166.665 277.72 166.665C278.515 166.665 279.161 167.309 279.161 168.104C279.161 168.899 278.515 169.544 277.72 169.544Z"
fill="black"/>
<path d="M288.768 162.735V180.006H284.445" stroke="black" stroke-width="1.053"/>
<path
d="M293.867 169.544C293.071 169.544 292.426 168.899 292.426 168.104C292.426 167.309 293.071 166.665 293.867 166.665C294.663 166.665 295.308 167.309 295.308 168.104C295.308 168.899 294.663 169.544 293.867 169.544Z"
fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd"
d="M286.145 167.655C286.145 171.141 283.317 173.966 279.827 173.966C276.338 173.966 273.508 171.141 273.508 167.655C273.508 166.782 273.685 166.147 273.971 165.677C274.254 165.21 274.667 164.866 275.21 164.613C276.33 164.089 277.928 163.974 279.827 163.974C281.726 163.974 283.325 164.089 284.443 164.613C284.987 164.866 285.401 165.21 285.684 165.677C285.968 166.147 286.145 166.782 286.145 167.655Z"
stroke="black" stroke-width="1.053"/>
<path d="M289.767 165.677C288.587 164.58 287.226 164.58 285.684 165.677" stroke="black"
stroke-width="1.053"/>
<path fill-rule="evenodd" clip-rule="evenodd"
d="M301.941 167.655C301.941 171.141 299.112 173.966 295.623 173.966C292.134 173.966 289.304 171.141 289.304 167.655C289.304 166.782 289.481 166.147 289.766 165.677C290.05 165.21 290.463 164.866 291.006 164.613C292.125 164.089 293.724 163.974 295.623 163.974C297.522 163.974 299.121 164.089 300.239 164.613C300.782 164.866 301.196 165.21 301.48 165.677C301.764 166.147 301.941 166.782 301.941 167.655Z"
stroke="black" stroke-width="1.053"/>
<path d="M273.508 166.078L259.819 163.974" stroke="black" stroke-width="1.053"/>
<path
d="M367.471 266.481L313.731 273.985C312.968 274.091 312.325 274.604 312.052 275.324L297.379 314.084C296.815 315.573 298.049 317.125 299.629 316.912L352.76 309.783C353.497 309.684 354.128 309.204 354.419 308.52L370.742 270.079C371.137 269.148 370.814 268.069 369.971 267.507L368.931 266.815C368.501 266.529 367.982 266.41 367.471 266.481Z"
fill="#2C2770"/>
<path
d="M368.604 268.71L317.691 275.829C315.785 276.095 314.177 277.379 313.496 279.177L301.357 311.24C299.947 314.964 303.033 318.842 306.984 318.312L353.041 312.132C354.906 311.882 356.496 310.656 357.211 308.918L371.965 273.034C372.891 270.78 371.02 268.373 368.604 268.71Z"
fill="#6B8CFF"/>
<path
d="M339.734 297.607C342.056 295.858 342.661 292.746 341.087 290.658C339.513 288.57 336.355 288.295 334.034 290.044C331.713 291.794 331.107 294.905 332.681 296.993C334.256 299.082 337.413 299.357 339.734 297.607Z"
fill="#2C2770"/>
<path
d="M283.391 298.021L226.648 289.136L200.848 283.351L198.171 297.062C196.272 306.786 203.71 315.83 213.629 315.858L279.17 316.046L285.646 319.763C285.838 319.872 286.038 319.967 286.244 320.046L295.107 323.421C295.211 323.46 295.317 323.491 295.425 323.514L310.126 326.643C310.892 326.806 311.681 326.506 312.142 325.875C312.976 324.734 312.382 323.113 311.008 322.78L300.918 320.334H316.606C317.206 320.334 317.758 320.005 318.042 319.478C318.598 318.451 317.925 317.191 316.761 317.078L304.181 315.872L322.734 314.236C323.45 314.172 324.074 313.72 324.355 313.06C324.883 311.822 324.023 310.435 322.679 310.356L305.92 309.362L321.532 306.904C322.598 306.735 323.425 305.883 323.561 304.814C323.741 303.394 322.655 302.127 321.222 302.086L300.918 301.511L302.448 300.553L305.608 292.139L296.113 293.724C295.644 293.803 295.181 293.92 294.732 294.077L283.391 298.021Z"
fill="#FF9330"/>
<path
d="M724.215 119.799H566.257C562.186 119.799 558.886 123.099 558.886 127.17V206.037C558.886 210.108 562.186 213.408 566.257 213.408H724.215C728.286 213.408 731.586 210.108 731.586 206.037V127.17C731.586 123.099 728.286 119.799 724.215 119.799Z"
fill="white" stroke="#E5E5E5" stroke-width="2.106"/>
<path d="M608.379 161.87H635.759C634.758 146.66 623.044 134.509 608.379 133.472V161.87Z"
fill="#1BE3B3"/>
<path d="M633.09 187.113C637.616 182.343 640.541 176.115 641.024 169.233H614.697L633.09 187.113Z"
fill="#FFAE64"/>
<path
d="M603.926 166.04V133.472C588.179 134.555 575.734 147.774 575.734 163.934C575.734 180.801 589.292 194.476 606.015 194.476C613.313 194.476 620.002 191.865 625.228 187.526L603.926 166.04Z"
fill="#FF8282"/>
<path d="M702.101 174.492H655.766V182.906H702.101V174.492Z" fill="#A3B7FF"/>
<path d="M689.464 159.767H654.714V168.181H689.464V159.767Z" fill="#A3B7FF"/>
<path d="M721.056 143.99H655.766V152.404H721.056V143.99Z" fill="#A3B7FF"/>
<path d="M856.9 524.735H841.104V635.172H856.9V524.735Z" fill="#CCD9FF"/>
<path d="M830.573 498.44H868.483L864.271 535.253H834.786L830.573 498.44Z" fill="#A3BAFF"/>
<mask id="mask8" mask-type="alpha" maskUnits="userSpaceOnUse" x="830" y="498" width="39"
height="38">
<path d="M830.573 498.44H868.483L864.271 535.253H834.786L830.573 498.44Z" fill="white"/>
</mask>
<g mask="url(#mask8)">
<path d="M874.802 499.492L822.149 496.863L827.414 507.906L870.589 517.373L874.802 499.492Z"
fill="black"/>
</g>
<path d="M897.969 479.508H798.982V503.699H897.969V479.508Z" fill="#CCD9FF"/>
<path d="M906.393 632.016H790.557V641.482H906.393V632.016Z" fill="#CCD9FF"/>
<path d="M906.393 638.327H790.557V641.482H906.393V638.327Z" fill="#2C2770"/>
<path
d="M621.18 605.706L637.237 602.537C645.778 600.851 653.179 585.174 653.179 585.174L669.132 593.059L659.692 609.775L657.247 619.965L621.491 608.084L621.18 605.706Z"
fill="#FFAE64"/>
<path
d="M624.078 608.186L656.753 616.933C657.997 620.625 656.859 624.703 653.882 627.221L648.258 631.976L635.652 625.977L636.467 622.581L628.977 621.413C625.886 620.932 622.906 619.899 620.181 618.363L610.535 612.93C609.215 612.186 608.39 610.798 608.368 609.284C608.334 606.948 610.193 605.02 612.531 604.968L628.979 604.591L624.302 605.132C623.351 605.242 622.722 606.176 622.979 607.099C623.127 607.63 623.545 608.043 624.078 608.186Z"
fill="#2C2770"/>
<path
d="M901.669 411.982L900.032 406.935H854.224L846.23 429.353L765.917 453.277C742.196 458.293 721.389 472.395 707.958 492.557L642.034 591.523L664.674 604.144L764.714 497.914L854.533 486.325C867.614 484.637 879.711 478.49 888.779 468.923C903.181 453.728 908.125 431.889 901.669 411.982Z"
fill="#2C2770"/>
<path
d="M893.714 406.935V430.527C893.714 454.91 875.548 475.483 851.327 478.53L755.763 490.552L662.042 603.092"
stroke="white" stroke-width="1.053"/>
<path
d="M744.722 627.888L754.036 614.446C758.992 607.295 753.373 590.897 753.373 590.897L770.32 585.461L775.2 604.023L780.548 613.037L746.604 629.378L744.722 627.888Z"
fill="#FFAE64"/>
<path
d="M748.531 627.652L778.08 611.204C781.548 612.99 783.574 616.708 783.192 620.585L782.472 627.91L769.242 632.371L767.459 629.366L761.269 633.738C758.714 635.543 755.856 636.873 752.83 637.666L742.118 640.476C740.652 640.86 739.093 640.438 738.022 639.367C736.368 637.714 736.358 635.038 738 633.373L749.542 621.664L746.563 625.304C745.956 626.045 746.157 627.154 746.984 627.637C747.461 627.914 748.049 627.921 748.531 627.652Z"
fill="#2C2770"/>
<path
d="M739.08 440.618L820.526 407.987H855.804L845.8 436.385L763.135 454.265L776.298 596.782H750.498L718.791 481.45C716.497 473.104 717.453 464.2 721.468 456.53C725.251 449.299 731.498 443.656 739.08 440.618Z"
fill="#2C2770"/>
<path d="M765.767 455.317L753.657 462.154L769.453 598.359" stroke="white" stroke-width="1.053"/>
<path d="M850.538 419.031L854.224 407.987H841.587L765.767 455.317L850.538 419.031Z" fill="black"
stroke="black" stroke-width="1.053"/>
<path
d="M943.937 346.555L921.943 336.144L904.457 352.576L924.918 363.656C937.67 370.561 953.088 370.465 965.752 363.401L1010.97 338.181L1020.47 338.781H1028.44C1031.17 338.781 1033.77 337.567 1035.51 335.471C1036.77 333.95 1037.26 331.933 1036.83 330.006L1034.65 320.281L1049.7 316.232C1051.16 315.839 1051.93 314.24 1051.31 312.862C1050.86 311.859 1049.8 311.273 1048.71 311.429L1030.32 314.044L1029.17 311.904C1028.51 310.686 1027.14 310.035 1025.77 310.296L1019.65 311.467C1017.73 311.836 1015.99 312.861 1014.74 314.366L1008.12 322.334L943.937 346.555Z"
fill="#FFAE64"/>
<path
d="M1036.1 326.998L1024.63 329.037C1023.49 329.239 1022.39 328.529 1022.11 327.412C1021.84 326.35 1022.4 325.255 1023.42 324.849L1026.46 323.64"
stroke="black" stroke-width="1.053"/>
<path
d="M1037.19 332.339L1025.47 333.166C1024.37 333.243 1023.4 332.458 1023.24 331.368C1023.09 330.26 1023.84 329.225 1024.94 329.021L1025.5 328.917"
stroke="black" stroke-width="1.053"/>
<path
d="M1031.76 337.553L1022.67 337.895C1021.52 337.939 1020.52 337.107 1020.36 335.969C1020.2 334.868 1020.88 333.822 1021.95 333.51L1024.53 332.755"
stroke="black" stroke-width="1.053"/>
<path
d="M1030.8 315.963L1033.31 325.561C1033.52 326.37 1033.07 327.203 1032.27 327.467C1030.55 328.038 1028.66 327.38 1027.67 325.866L1023.09 318.841C1023.25 320.761 1020 326.039 1015.38 329.877"
stroke="black" stroke-width="1.053"/>
<path
d="M771.586 297.811L794.912 304.775L796.816 328.642L774.176 323.197C760.066 319.804 748.694 309.435 744.057 295.74L727.501 246.834L720.056 240.941L714.139 235.614C712.112 233.789 711.008 231.159 711.127 228.441C711.214 226.469 712.211 224.647 713.828 223.506L721.993 217.745L713.558 204.693C712.739 203.425 713.248 201.729 714.632 201.118C715.641 200.672 716.824 200.948 717.53 201.792L729.41 216.014L731.704 215.195C733.011 214.729 734.47 215.164 735.304 216.267L739.054 221.222C740.234 222.782 740.833 224.702 740.747 226.654L740.292 236.987L771.586 297.811Z"
fill="#FFAE64"/>
<path
d="M716.396 221.762L723.531 230.934C724.238 231.844 725.533 232.053 726.494 231.411C727.407 230.802 727.727 229.614 727.244 228.63L725.806 225.706"
stroke="black" stroke-width="1.053"/>
<path
d="M711.99 224.996L720.122 233.431C720.887 234.225 722.139 234.293 722.988 233.587C723.85 232.868 723.991 231.602 723.31 230.712L722.967 230.264"
stroke="black" stroke-width="1.053"/>
<path
d="M712.504 232.487L719.017 238.813C719.843 239.615 721.145 239.664 722.03 238.927C722.885 238.214 723.087 236.985 722.504 236.039L721.096 233.755"
stroke="black" stroke-width="1.053"/>
<path
d="M727.76 217.116L719.43 222.556C718.729 223.014 718.504 223.936 718.917 224.663C719.808 226.236 721.655 227.011 723.408 226.547L731.54 224.399C730.128 225.715 728.98 231.797 729.826 237.733"
stroke="black" stroke-width="1.053"/>
<path
d="M899.247 311.13L879.427 304.094C873.536 304.094 858.218 303.798 844.079 302.613C829.941 301.428 804.314 302.613 783.695 299.651L779.277 326.313C788.113 330.757 801.368 335.201 819.041 338.164C819.041 351.467 821.988 358.553 821.988 364.825L826.406 384.082L815.699 409.039H902.991L893.954 381.693L899.255 351.467L917.719 363.344L935.393 341.125L908.552 316.702C905.855 314.247 902.691 312.353 899.247 311.13Z"
fill="#6B8CFF"/>
<mask id="mask9" mask-type="alpha" maskUnits="userSpaceOnUse" x="779" y="299" width="157"
height="111">
<path
d="M899.247 311.13L879.427 304.094C873.536 304.094 858.218 303.798 844.079 302.613C829.94 301.428 804.314 302.613 783.695 299.651L779.277 326.313C788.113 330.757 801.368 335.201 819.041 338.164C813.15 355.939 817.078 358.901 821.988 364.825L826.406 384.082L815.699 409.039H902.991L893.954 381.693L899.255 351.467L917.719 363.344L935.393 341.125L908.552 316.702C905.855 314.247 902.691 312.353 899.247 311.13Z"
fill="white"/>
</mask>
<g mask="url(#mask9)">
<path
d="M810.113 286.217C817.342 315.003 738.802 333.235 744.101 367.779C749.402 402.322 883.354 483.884 931.056 458.935C978.758 433.987 976.831 390.328 886.245 392.247C795.659 394.167 774.458 354.345 796.141 333.235C817.824 312.125 881.426 376.894 883.354 350.027C885.281 323.16 803.85 315.003 836.615 295.333C863.466 279.213 874.199 329.397 903.591 335.634C927.105 340.624 940.051 331.956 943.584 326.998C965.909 337.712 999.863 362.117 957.076 374.016C914.288 385.914 841.273 370.657 810.113 361.542"
stroke="#A3B7FF" stroke-width="7.371"/>
</g>
<path
d="M833.91 410.461L840.452 301.757L773.376 295.447L742.743 236.021L724.257 246.539L740.317 297.781C744.794 312.067 756.232 323.124 770.706 327.16L813.516 339.096L820.91 382.219L814.413 410.423L833.91 410.461Z"
fill="#FF6767"/>
<path
d="M884.817 440.067L888.514 305.439L899.161 308.7C905.714 310.708 911.739 314.135 916.806 318.734L945.027 344.355L1002.6 321.741L1008.93 341.199L968.178 366.442C952.072 376.418 931.665 376.384 915.592 366.356L902.246 358.028L898.021 382.745L909.112 445.325L884.817 440.067Z"
fill="#FF6767"/>
<path d="M832.001 301.231L825.135 323.319L838.867 322.267" stroke="black" stroke-width="1.053"/>
<path d="M895.908 307.542L902.774 324.371L887.986 322.267" stroke="black" stroke-width="1.053"/>
<path
d="M834.133 243.2C835.319 233.751 844.511 232.373 848.959 232.866C851.43 231.389 856.373 225.484 866.751 226.96C877.13 228.437 888.992 234.342 886.026 247.628C886.026 247.628 888.514 273.213 869.538 273.213C869.538 279.144 854.712 309.266 854.712 291.24C854.712 273.213 857.251 286.792 845.205 273.213C837.811 270.584 832.65 255.01 834.133 243.2Z"
fill="#2C2770"/>
<path
d="M846.262 234.444C836.636 234.444 828.832 226.674 828.832 217.089C828.832 207.505 836.636 199.735 846.262 199.735C855.887 199.735 863.691 207.505 863.691 217.089C863.691 226.674 855.887 234.444 846.262 234.444Z"
fill="#2C2770"/>
<path
d="M841.546 253.534V257.963C839.569 257.471 835.615 257.372 835.615 260.915C835.615 265.344 838.581 268.297 841.546 266.821C841.931 271.422 844.417 280.505 851.809 284.292C851.544 287.761 850.77 292.742 848.959 296.346C846.587 301.071 842.04 303.235 840.063 303.727C843.028 307.172 851.332 314.062 860.821 314.062C870.31 314.062 877.625 307.172 880.095 303.727C878.612 303.235 874.758 301.366 871.199 297.823C868.398 295.033 867.863 288.402 868.004 283.546C874.165 279.419 876.044 271.142 877.13 266.821C879.107 267.313 883.06 267.116 883.06 262.391C883.06 257.667 878.612 257.471 877.13 257.963V253.534C874.164 254.026 866.455 253.829 859.338 249.105C852.221 244.381 850.442 242.216 850.442 241.723C850.442 244.184 849.352 248.714 847.476 250.581C844.511 253.534 842.535 253.042 841.546 253.534Z"
fill="#FFAE64"/>
<path
d="M853.961 273.743L860.708 277.102C860.225 278.061 858.684 279.308 856.371 278.54C854.058 277.774 853.801 275.342 853.961 273.743Z"
fill="white"/>
<path
d="M868.411 253.593H873.241C874.036 253.593 874.681 254.237 874.681 255.032C874.681 255.827 874.036 256.471 873.241 256.471H868.411C867.616 256.471 866.971 255.827 866.971 255.032C866.971 254.237 867.616 253.593 868.411 253.593Z"
fill="#2C2770"/>
<path
d="M849.137 253.593H853.968C854.763 253.593 855.407 254.237 855.407 255.032C855.407 255.827 854.763 256.471 853.968 256.471H849.137C848.342 256.471 847.698 255.827 847.698 255.032C847.698 254.237 848.342 253.593 849.137 253.593Z"
fill="#2C2770"/>
<path
d="M852.034 261.269C851.236 261.269 850.589 260.624 850.589 259.829C850.589 259.035 851.236 258.39 852.034 258.39C852.833 258.39 853.48 259.035 853.48 259.829C853.48 260.624 852.833 261.269 852.034 261.269Z"
fill="black"/>
<path d="M863.116 255.512V272.784H858.78" stroke="black" stroke-width="1.053"/>
<path
d="M870.345 261.269C869.546 261.269 868.899 260.624 868.899 259.829C868.899 259.035 869.546 258.39 870.345 258.39C871.143 258.39 871.79 259.035 871.79 259.829C871.79 260.624 871.143 261.269 870.345 261.269Z"
fill="black"/>
<path d="M839.025 260.789C838.543 261.909 838.446 264.244 841.916 264.628" stroke="black"
stroke-width="1.053"/>
<path d="M880.219 260.789C880.701 261.909 880.797 264.244 877.328 264.628" stroke="black"
stroke-width="1.053"/>
<mask id="mask10" mask-type="alpha" maskUnits="userSpaceOnUse" x="835" y="241" width="49"
height="74">
<path
d="M841.546 253.534V257.963C839.569 257.471 835.615 257.372 835.615 260.915C835.615 265.344 838.581 268.297 841.546 266.821C841.931 271.422 844.417 280.505 851.809 284.292C851.544 287.761 850.77 292.742 848.959 296.346C846.587 301.071 842.04 303.235 840.063 303.728C843.028 307.172 851.332 314.062 860.821 314.062C870.31 314.062 877.625 307.172 880.095 303.728C878.612 303.235 874.758 301.366 871.199 297.823C868.398 295.033 867.863 288.402 868.004 283.546C874.165 279.419 876.044 271.142 877.13 266.821C879.107 267.313 883.06 267.116 883.06 262.391C883.06 257.667 878.612 257.471 877.13 257.963V253.534C874.164 254.026 866.455 253.829 859.338 249.105C852.221 244.381 850.442 242.216 850.442 241.723C850.442 244.184 849.352 248.714 847.476 250.581C844.511 253.534 842.535 253.042 841.546 253.534Z"
fill="white"/>
</mask>
<g mask="url(#mask10)">
<path
d="M869.38 282.859C868.095 283.658 863.983 285.738 859.743 285.738C855.719 285.738 851.954 284.441 850.758 283.898L850.588 283.818C850.638 283.843 850.694 283.87 850.758 283.898L869.863 292.934L869.38 282.859Z"
fill="#FF8282"/>
</g>
<path
d="M211.002 351.121C218.795 341.921 238.471 345.3 245.605 348.881C226.761 383.129 210.138 358.943 204.364 394.166C201.893 409.241 183.472 394.904 184.889 421.359C186.118 444.313 170.367 446.303 168.529 458.675C166.692 471.046 161.718 481.552 151.015 485.153C135.374 490.414 123.357 471.394 135.169 462.449C146.981 453.506 123.973 440.259 142.083 429.681C160.195 419.103 140.781 394.609 163.6 388.277C186.419 381.943 178.027 368.444 185.4 361.34C192.774 354.235 201.26 362.622 211.002 351.121Z"
fill="#6B8CFF"/>
<path
d="M129.734 279.587C133.699 266.522 152.104 268.017 160.002 273.802C148.945 283.794 132.324 283.411 142.046 322.78C146.207 339.629 123.104 332.605 136.359 359.627C147.859 383.075 129.537 392.058 133.149 405.8C136.76 419.544 139.205 432.535 129.734 441.035C115.893 453.458 99.5566 437.731 107.795 423.155C116.033 408.579 89.1912 405.94 103.219 386.868C117.247 367.797 87.0038 354.68 107.795 337.961C128.586 321.241 106.57 312.889 111.035 302.2C115.499 291.512 124.777 295.919 129.734 279.587Z"
fill="#1BE3B3"/>
<path
d="M29.6166 351.997C22.49 344.585 5.89418 348.5 0 351.922C17.8609 380.054 30.7637 358.604 37.5336 388.257C40.4312 400.947 55.383 387.779 55.5636 410.355C55.7203 429.943 69.2517 430.802 71.4672 441.227C73.6826 451.652 78.4739 460.325 87.7874 462.82C101.398 466.468 110.644 449.654 100.105 442.673C89.5659 435.691 108.485 423.206 92.4912 415.167C76.4967 407.129 91.7613 385.27 71.9759 381.091C52.1907 376.911 58.6363 364.986 51.9776 359.334C45.319 353.681 38.5248 361.263 29.6166 351.997Z"
fill="#54B7FF"/>
<path
d="M121.354 501.296C119.515 459.863 111.884 345.785 135.255 289.694C137.293 284.804 141.573 274.328 152.63 274.328"
stroke="#4F4F4F" stroke-width="1.053"/>
<path d="M99.6992 512.335C98.6375 472.751 81.7297 386.336 22.5924 357.345" stroke="#4F4F4F"
stroke-width="1.053"/>
<path d="M139.647 512.669C143.381 469.708 167.393 376.868 233.568 349.198" stroke="#4F4F4F"
stroke-width="1.053"/>
<path
d="M86.8145 493.624H149.998L166.29 615.667C168.815 634.584 154.082 651.391 134.975 651.391H101.837C82.7306 651.391 67.9972 634.584 70.5224 615.667L86.8145 493.624Z"
fill="#A3BAFF"/>
<path d="M158.422 493.624H77.337V505.194H158.422V493.624Z" fill="#CCD9FF"/>
</svg>

Before

Width:  |  Height:  |  Size: 48 KiB

View File

@ -1,255 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
x="0px" y="0px"
viewBox="0 0 600 600" enable-background="new 0 0 600 600" xml:space="preserve">
<g id="LEFT_ARM_1">
<g id="XMLID_46_">
<path id="XMLID_290_" fill="#FFB96C" d="M294.4,485.5c-1.2,0.3-2.4,0.4-3.6,0.4c-0.2,0-0.4,0-0.6,0c-8.4-0.3-16.2-6.9-21-15.7
c-21.3-39.2-27.1-63.4-34.8-89.9c-1.9-6.6-1.4-13.3,1.4-18.1c2.2-3.7,5.7-6.4,10.5-6.9c0.6-0.1,1.1-0.1,1.7-0.1
c8.5,0,17.4,6.8,20.9,15.6l36.5,89.4C310,471.5,305,483.1,294.4,485.5z"/>
<path id="XMLID_280_" fill="#FCAF63" d="M290.2,485.9c-8.4-0.3-16.2-6.9-21-15.7c-21.3-39.2-27.1-63.4-34.8-89.9
c-1.9-6.6-1.4-13.3,1.4-18.1c9.5,23,40.7,98.5,50.3,116.1C287.6,481.1,289,483.6,290.2,485.9z"/>
</g>
</g>
<g id="LEFT_ARM_2">
<g id="XMLID_10_">
<g id="XMLID_42_">
<path id="XMLID_293_" fill="#FFB96C" d="M340.2,472c-0.9,2.3-2.1,4.1-3.3,5c-7.2,5.7-14.3,7-26.2,9.6c-11.9,2.6-24.2,2-29.9-3.4
c-1.9-1.8-3.3-3.8-4.1-5.9c-2.5-6-0.3-12.3,6.8-15c4.2-1.6,42.4-10.6,48.7-9.4C343.1,455,342.9,465.3,340.2,472z"/>
<path id="XMLID_279_" fill="#FCAF63" d="M340.2,472c-0.9,2.3-2.1,4.1-3.3,5c-7.2,5.7-14.3,7-26.2,9.6c-11.9,2.6-24.2,2-29.9-3.4
c-1.9-1.8-3.3-3.8-4.1-5.9c3.2,0.9,9.6,2.1,20.5,0.9C306.4,477.2,325.3,474.3,340.2,472z"/>
</g>
<g id="XMLID_41_">
<path id="XMLID_49_" fill="#FEA691" d="M330.2,453.6c-11.9,4-10.6,11.9-8.8,19.6c1.8,7.7,16.6,27.5,21.1,28.5s4.8-0.8,3.6-4.5
c-1.2-3.7-9.7-16.6-9.7-16.6s9.4,12.8,13.3,16.6c3.9,3.8,7.2,3.5,7.1-0.7c-0.2-4.2-9.5-18.3-9.5-18.3s8.2,10.8,11.6,14.5
s7.9,3.1,6.3-1.9c-1.5-5-8.3-15.9-8.3-15.9s6.6,11,11,12.1c4.4,1.1,1.7-5.5-3-13.9C360.3,464.5,345,448.6,330.2,453.6z"/>
<path id="XMLID_50_" fill="#FEA691" d="M320.2,464.6c0,0-2.5,9.8-0.9,18.4s4.3,10.3,6.1,10.7s2.4-1.9,1.5-5.6
c-0.9-3.7,1.5-11,1.5-11S325.8,462.4,320.2,464.6z"/>
</g>
</g>
</g>
<g id="BODY">
<g id="XMLID_70_">
<path id="XMLID_45_" fill="#FEC272" d="M273.1,496H172.2c0,0-13.9-97.2-5.1-121.1c2.5-6.8,5.8-12.3,9.6-16.9
c9.5-11.6,21.7-16.9,30-19c10.9-2.8,20.4-2.9,28.6-0.9c21.8,5.2,33.9,25.1,37.8,46.8C278.5,414.8,273.1,496,273.1,496z"/>
<path id="XMLID_43_" fill="#F9B35F" d="M207.6,358.5c-13.2,3.4-25.3,3-31-0.5c9.5-11.6,21.7-16.9,30-19
c10.9-2.8,20.4-2.9,28.6-0.9C237,344.9,224.6,354.1,207.6,358.5z"/>
</g>
</g>
<g id="RIGHT_ARM_1">
<g id="XMLID_16_">
<path id="XMLID_278_" fill="#FFCD92" d="M199,381.3c0,1.6-0.1,3.2-0.4,4.7c-4.1,26.6-27.7,90.6-27.7,90.6c-1.7,5.1-5.3,8.9-9.7,11
c-4.4,2-9.5,2.4-14.4,0.5c-7.6-3-11.2-10.2-11.2-18.1c0-1.7,0.2-3.4,0.5-5.1c6.9-37.3,19.2-68.2,29.3-90
c4.4-9.6,15.2-15.6,24.7-10.8c2.9,1.4,4.9,3.7,6.4,6.3C198.3,373.6,199,377.4,199,381.3z"/>
<path id="XMLID_273_" fill="#FCB765" d="M199,381.3c0,1.6-0.1,3.2-0.4,4.7c-4.1,26.6-27.7,90.6-27.7,90.6c-1.7,5.1-5.3,8.9-9.7,11
l35.2-117.3C198.3,373.6,199,377.4,199,381.3z"/>
</g>
</g>
<g id="RIGHT_ARM_2">
<g id="XMLID_17_">
<g id="XMLID_20_">
<path id="XMLID_285_" fill="#FFCD92" d="M230.5,487.4c-2.2,5.4-9.4,5.6-9.4,5.6s-20.2,1.2-37.7,1.2c-17.5,0-34.7,0-41.7-7.9
c-1.4-1.6-2.5-3.4-3.1-5.3c-2.6-7.3,0.7-16,11.1-20.4c7.5-3.2,16.1-2.1,25.5-1.2c9.4,0.9,27.5,5.1,38,7.9
c10.6,2.7,16.9,5.4,17.8,15.4C231.3,484.6,231,486.1,230.5,487.4z"/>
<path id="XMLID_284_" fill="#FCB765" d="M230.5,487.4c-2.2,5.4-9.4,5.6-9.4,5.6s-20.2,1.2-37.7,1.2c-17.5,0-34.7,0-41.7-7.9
c-1.4-1.6-2.5-3.4-3.1-5.3c7.8,2.4,18.3,5.2,26.7,5.9C189,488.9,220.4,487.9,230.5,487.4z"/>
</g>
<g id="XMLID_2_">
<g id="XMLID_18_">
<path id="XMLID_47_" fill="#FEA691" d="M251.6,471.3c0,1.6-0.2,3.3-0.6,5.1c-2.1,8.6-13.2,15.2-30.1,16.1
c-7.5,0.4-12.6,0.4-16-0.4c-4.4-1.1-6.1-3.7-6.5-9.1c-0.5-6.9,4.7-13.2,8.6-15.9c11.7-7.9,22.6-8.5,32.1-7.6
C247.6,460.4,251.5,465.1,251.6,471.3z"/>
<path id="XMLID_44_" fill="#FC8172" d="M251.6,471.3c0,1.6-0.2,3.3-0.6,5.1c-2.1,8.6-13.2,15.2-30.1,16.1
c-7.5,0.4-12.6,0.4-16-0.4c-0.4-1-0.7-2.2-0.8-3.7c-0.5-5.9,4.4-11.4,8.2-13.7c11.1-6.8,21.5-7.4,30.5-6.5
C246.8,468.5,249.7,469.6,251.6,471.3z"/>
</g>
<g id="XMLID_19_">
<path id="XMLID_48_" fill="#C7DCF9" d="M264.7,488.7c0,1.1-0.2,2.1-0.5,3.2h-55c-0.3-1-0.5-2.1-0.5-3.2c0-9.6,12.5-17.4,28-17.4
C252.2,471.3,264.7,479.1,264.7,488.7z"/>
<path id="XMLID_254_" opacity="0.55" fill="#C7DCF9" d="M263.5,490.2c0,0.6-0.1,1.1-0.4,1.7h-50.3c-0.3-0.6-0.4-1.1-0.4-1.7
c0-5.1,11.4-9.3,25.5-9.3C252.1,480.9,263.5,485.1,263.5,490.2z"/>
</g>
<g id="XMLID_37_">
<path id="XMLID_28_" fill="#FEA691" d="M252.6,456.6c3.6,0.4,6.1,2.7,7.5,7.5c1.4,4.8,1.7,11.9,0.2,14.4
c-1.5,2.5-4.3,3.6-7.4,1.1c-3.1-2.5-4.8-9.5-5.8-13C245.9,462,244.5,455.8,252.6,456.6z"/>
<g id="XMLID_4_">
<path id="XMLID_38_" fill="#FEA691" d="M239.2,454.3c3.9,0.4,5.5,3.7,7,8.7c1.5,5,1.8,12.6,0.2,15.3c-1.6,2.6-4.6,3.8-7.9,1.2
c-3.3-2.6-5.2-10.1-6.2-13.8C231,460.8,230.4,453.5,239.2,454.3z"/>
<path id="XMLID_79_" fill="#FF8D76" d="M243.1,480.8c-1.4,0.3-3,0-4.6-1.4c-3.3-2.6-5.1-10.1-6.2-13.8c-1.1-4-1.7-9.7,3-11.1
c-0.9,2.7-0.4,6.4,0.3,9.2c1,4.3,2.9,13,6.2,16C242.3,480.2,242.7,480.6,243.1,480.8z"/>
</g>
<path id="XMLID_39_" fill="#FEA691" d="M224.6,456.6c3.9,0.4,6.5,2.9,8,7.9s1.8,12.6,0.2,15.3c-1.6,2.6-4.6,3.8-7.9,1.2
c-3.3-2.6-5.2-10.1-6.2-13.8C217.4,462.3,215.9,455.7,224.6,456.6z"/>
<path id="XMLID_81_" fill="#FF8D76" d="M228.5,482.4c-1.1,0-2.3-0.5-3.5-1.5c-3.3-2.6-5.1-10.1-6.2-13.8
c-1-3.8-2.2-8.6,1.5-10.2c-0.3,2.5,0.4,5.7,1.1,8.3c1.2,4.5,3.3,13.7,7,17C228.4,482.4,228.4,482.4,228.5,482.4z"/>
<path id="XMLID_40_" fill="#FEA691" d="M211.5,459.4c3.4-1,6,2.7,7.3,7.3c1.3,4.6,1.7,11.6,0.2,14c-1.4,2.4-4.2,3.5-7.2,1.1
c-3-2.4-3.8-7-4.7-10.4C205.9,467,204.9,461.4,211.5,459.4z"/>
<path id="XMLID_82_" fill="#FF8D76" d="M215.2,483.2c-1.1,0-2.2-0.4-3.4-1.4c-3-2.4-3.8-7-4.7-10.4c-1.1-3.8-1.9-8.5,2.1-11
c-0.3,2.7,0.2,5.6,0.7,8.2c0.9,4.6,1.6,10.9,5,14.3C215,483,215.1,483.1,215.2,483.2z"/>
<path id="XMLID_78_" fill="#FF8D76" d="M256.8,480.9c-1.2,0.1-2.5-0.3-3.8-1.4c-3.1-2.5-4.8-9.5-5.8-13c-1-3.7-2.2-8.5,1.8-9.7
c0,2.2,0.5,4.7,1,6.9c1,4.5,2.9,13.5,6.1,16.7C256.4,480.6,256.6,480.8,256.8,480.9z"/>
</g>
</g>
</g>
</g>
<g id="HEAD">
<g id="XMLID_89_">
<path id="XMLID_6_" fill="#FF8D76"
d="M208.8,235c0,0,9.3-3.8,15.6,8.8c6.3,12.7-0.5,20.8-0.5,20.8S217.7,246.3,208.8,235z"/>
<path id="XMLID_173_" fill="#FEA691" d="M215.2,350.9c-8.8,4.1-14.9-1.6-14.9-1.6l-5.5-11.9l-9.9-21.4c14.9-3.2,27.9-5.7,27.9-5.7
l2.3,9.5l4.3,17.7C219.2,337.6,224,346.9,215.2,350.9z"/>
<path id="XMLID_171_" fill="#FF8D76" d="M215,319.9c-1.3,1.9-2.7,3.9-4.4,5.8c-4.3,5.1-10.5,9-15.9,11.7l-9.9-21.4
c14.9-3.2,27.9-5.7,27.9-5.7L215,319.9z"/>
<ellipse id="XMLID_3_" transform="matrix(0.8545 -0.5194 0.5194 0.8545 -114.0092 131.008)"
fill="#FEA691" cx="176.9" cy="269" rx="47.2" ry="57.7"/>
<path id="XMLID_12_" fill="#FF8D76" d="M217.4,308.8c-2.9,3.7-6.5,6.9-10.6,9.5c-22.3,13.5-53.7,2.4-70.3-24.8
c-16.4-26.9-12-59.6,9.7-73.4c-12.6,16.2-13.2,42.2,0.3,64.3c16.5,27.2,48,38.3,70.3,24.8C217,309.1,217.2,309,217.4,308.8z"/>
<path id="XMLID_5_" fill="#283575" d="M157.2,309.5c0,0-17-13.4-21.3-37.4s0.5-33.7,20.2-45.3c19.7-11.5,34.4-7.4,34.4-7.4
s-14-10.5-36.9-6.6c-22.9,3.8-46.2,25.6-41.4,58.4C117.2,306.2,138,316.5,157.2,309.5z"/>
<path id="XMLID_11_" fill="#F76F59" d="M177.8,246.8c-2.7,1.9,1.1,12,9.3,19.5c8.2,7.5,16.1,3.6,16.3-3.8
C203.6,254.9,187.1,240.2,177.8,246.8z"/>
<path id="XMLID_7_" fill="#FF8D76"
d="M137.5,291.4c0,0-16,15.7-1.6,29.4c13.8,13.1,31.2-4.5,31.2-4.5S142.7,303.2,137.5,291.4z"
/>
<path id="XMLID_250_" fill="#F76F59"
d="M139.4,300.5c0,0-9,8.8-0.9,16.6c7.8,7.4,17.6-2.5,17.6-2.5S142.3,307.2,139.4,300.5z"/>
</g>
</g>
<g id="HAIR">
<g id="XMLID_84_">
<path id="XMLID_8_" fill="#283575" d="M188.5,218.1c0,0,1.7-30.2-15.5-42.5c-19.4-13.8-30.3,6.1-23.9,22.4
c2.8,7.3,5.8,11.7,8.2,14.3c2.2,2.4,5.2,3.8,8.4,4L188.5,218.1z"/>
<path id="XMLID_9_" fill="#283575" d="M122.7,192.6c-15.3,12.2-2.1,29.7,4.2,34.4c2.7,2,5.6,3.6,8.1,4.8c3.4,1.6,7.4,1.4,10.6-0.6
l21.6-13.7C167.2,217.6,143,176.5,122.7,192.6z"/>
<path id="XMLID_51_" fill="#3C4E8E"
d="M159,172.3c-4.8,0.6,0.5,9.8,7.5,11S171.3,170.8,159,172.3z"/>
<path id="XMLID_61_" fill="#3C4E8E"
d="M128.7,192.8c-2.8,3.2,4.5,7.3,10.4,5.3C145.1,196.2,134.9,185.8,128.7,192.8z"/>
</g>
</g>
<g id="MOUTH">
<g id="XMLID_83_">
<path id="XMLID_177_" fill="#F76F59" d="M217.7,285c-0.5,1-1.2,1.9-2.2,2.7c-3.7,2.9-6.5,7.1-8.5,11.5c-1.8,3.9-6.4,8.5-10.7,5.2
c-0.5-0.4-1-0.8-1.4-1.4c-4.5-5.7-2.8-20.4,4.2-26.9c5.4-5,12.1-3.7,15.5-0.9C217.9,277.7,219.3,281.7,217.7,285z"/>
<path id="XMLID_175_" fill="#FF6EA9" d="M217.7,285c-0.5,1-1.2,1.9-2.2,2.7c-3.7,2.9-6.5,7.1-8.5,11.5c-1.8,3.9-6.4,8.5-10.7,5.2
c0-6.3,2.3-13.7,6.7-17.7C208.1,282.1,214.1,282.7,217.7,285z"/>
</g>
</g>
<g id="EYE_1">
<g id="XMLID_14_">
<path id="XMLID_86_" fill="#1C3177" d="M155.8,267.7c-3.2,0-5.7-1-5.9-1.1c-1.3-0.5-1.9-2-1.4-3.3c0.5-1.3,2-1.9,3.3-1.4
c0.1,0,5.6,2.2,8.6-1.1c3.9-4.1-0.2-9.4-0.3-9.6c-0.9-1.1-0.7-2.7,0.4-3.6c1.1-0.9,2.7-0.7,3.6,0.4c2.4,3.1,5.5,10.4,0,16.2
C161.6,266.9,158.5,267.7,155.8,267.7z"/>
</g>
</g>
<g id="EYE_2">
<g id="XMLID_15_">
<path id="XMLID_85_" fill="#1C3177" d="M193,242.6c-5.1,0-9.4-3.8-9.7-4c-1.1-0.9-1.1-2.6-0.2-3.6c0.9-1,2.5-1.1,3.6-0.2
c0,0,4.6,3.9,8,2.4c1.5-0.7,0.4-3.8,0.3-3.9c-0.5-1.3,0.1-2.8,1.5-3.3c1.3-0.5,2.8,0.1,3.3,1.4c1.5,3.7,1.1,8.6-3,10.4
C195.5,242.4,194.2,242.6,193,242.6z"/>
</g>
</g>
<g id="EYEBROW_1">
<g id="XMLID_1_">
<path id="XMLID_88_" fill="#1C3177" d="M142.4,261.7c-0.1,0-0.2,0-0.3,0c-1.4-0.2-2.4-1.4-2.3-2.8c0-0.3,0.7-6.3,4.9-12.4
c4.1-6.1,8.3-8.2,8.5-8.3c1.3-0.6,2.8-0.1,3.4,1.2c0.6,1.3,0.1,2.8-1.2,3.4c0,0-3.2,1.7-6.5,6.5c-3.4,5-4,10-4,10.1
C144.8,260.7,143.7,261.7,142.4,261.7z"/>
</g>
</g>
<g id="EYEBROW_2">
<g id="XMLID_13_">
<path id="XMLID_87_" fill="#1C3177" d="M179,232.1c-0.7,0-1.5-0.3-2-0.9c-0.9-1.1-0.7-2.7,0.4-3.6c0.3-0.2,2.6-2.1,6.7-3.3
c4.1-1.2,7.5-1.1,7.6-1.1c1.4,0,2.5,1.2,2.5,2.6c0,1.4-1.3,2.5-2.6,2.5c0,0-2.7-0.1-6,0.9c-3.2,1-5,2.4-5,2.4
C180.1,231.9,179.6,232.1,179,232.1z"/>
</g>
</g>
<g id="TABLE">
<g id="XMLID_248_">
<path id="XMLID_22_" fill="#99ADF9" d="M505.9,506.3H98.3c-4,0-7.2-3.2-7.2-7.2l0,0c0-4,3.2-7.2,7.2-7.2h407.6
c4,0,7.2,3.2,7.2,7.2l0,0C513.1,503,509.9,506.3,505.9,506.3z"/>
<path id="XMLID_198_" fill="#789FEF" d="M505.2,506.3H157.1c-4,0-7.2-3.2-7.2-7.2l0,0c0-4,3.2-7.2,7.2-7.2h348.1
c4,0,7.2,3.2,7.2,7.2l0,0C512.5,503,509.2,506.3,505.2,506.3z"/>
</g>
</g>
<g id="DESKTOP">
<g id="XMLID_186_">
<g id="XMLID_182_">
<path id="XMLID_25_" fill="#E1ECFF" d="M457.6,444.7h-186c-3.3,0-5.9-3-5.3-6.3l19.8-118.7c0.4-2.6,2.7-4.5,5.3-4.5h186
c3.3,0,5.9,3,5.3,6.3L463,440.2C462.5,442.8,460.3,444.7,457.6,444.7z"/>
<path id="XMLID_29_" fill="#C7DCF9" d="M461.6,444.7H278c-3.3,0-5.9-3-5.3-6.3l19.8-118.7c0.4-2.6,2.7-4.5,5.3-4.5h183.6
c3.3,0,5.9,3,5.3,6.3l-19.8,118.7C466.5,442.8,464.2,444.7,461.6,444.7z"/>
<path id="XMLID_31_" fill="#B7D4F7" d="M442.2,432H302c-2.6,0-4.5-2.3-4.1-4.8l15.1-90.6c0.3-2,2.1-3.5,4.1-3.5h140.1
c2.6,0,4.5,2.3,4.1,4.8l-15.1,90.6C445.9,430.5,444.2,432,442.2,432z"/>
</g>
<g id="XMLID_183_">
<path id="XMLID_24_" fill="#E1ECFF" d="M382.3,484.5h-25.5c-2.4,0-4.2-2-4-4.4l6.7-66.5c0.2-2,1.9-3.6,4-3.6H389
c2.4,0,4.2,2,4,4.4l-6.7,66.5C386.1,483,384.4,484.5,382.3,484.5z"/>
<path id="XMLID_26_" fill="#C7DCF9" d="M384.1,484.5h-23.4c-1.5,0-2.7-1.3-2.6-2.8l7-69.4c0.1-1.3,1.2-2.3,2.6-2.3h23.4
c1.5,0,2.7,1.3,2.6,2.8l-7,69.4C386.5,483.5,385.4,484.5,384.1,484.5z"/>
</g>
<g id="XMLID_185_">
<path id="XMLID_27_" fill="#E1ECFF" d="M424.7,491.8H318.5c-2.2,0-4-1.8-4-4V479c0-2.2,1.8-4,4-4h106.2c2.2,0,4,1.8,4,4v8.8
C428.7,490,426.9,491.8,424.7,491.8z"/>
<path id="XMLID_30_" fill="#C7DCF9" d="M426.9,491.8H327c-2.3,0-4.2-1.9-4.2-4.2v-8.4c0-2.3,1.9-4.2,4.2-4.2h99.9
c2.3,0,4.2,1.9,4.2,4.2v8.4C431,489.9,429.2,491.8,426.9,491.8z"/>
</g>
</g>
</g>
<g id="SIGN">
<g id="XMLID_21_">
<path id="XMLID_77_" fill="#FF97C9" d="M501.5,298.7c-1,0.7-2.3,1.2-3.7,1.2H402c-4.8,0-7.8-5-5.6-9.3l34.8-66.9l12.8-24.6
c2.4-4.5,8.8-4.5,11.2,0l48.2,91.5C505,293.6,503.9,297,501.5,298.7z"/>
<path id="XMLID_74_" fill="#FC72BB" d="M501.5,298.7c-1,0.7-2.3,1.2-3.7,1.2H402c-4.8,0-7.8-5-5.6-9.3l34.8-66.9L420.6,280
c-0.9,4.8,2.4,9.3,7.3,9.9L501.5,298.7z"/>
<g id="XMLID_32_">
<g id="XMLID_34_">
<path id="XMLID_35_" fill="#FFFFFF" d="M445.2,264.1l-5-35.8c-0.2-1.2,0.8-2.3,2-2.3h14.2c1.2,0,2.1,1.1,2,2.3l-5,35.8
c-0.1,1-1,1.7-2,1.7h-4.3C446.1,265.9,445.3,265.1,445.2,264.1z"/>
</g>
<circle id="XMLID_33_" fill="#FFFFFF" cx="449.3" cy="279.1" r="7.1"/>
</g>
</g>
</g>
<g id="STAR">
<path id="XMLID_195_" fill="#FEC272" d="M189.7,141.2l1.8,3.7c0.2,0.5,0.7,0.8,1.2,0.8l4,0.6c1.3,0.2,1.8,1.7,0.8,2.6l-2.9,2.8
c-0.4,0.4-0.5,0.9-0.4,1.4l0.7,4c0.2,1.2-1.1,2.2-2.2,1.6l-3.6-1.9c-0.4-0.2-1-0.2-1.4,0l-3.6,1.9c-1.1,0.6-2.4-0.4-2.2-1.6l0.7-4
c0.1-0.5-0.1-1-0.4-1.4l-2.9-2.8c-0.9-0.9-0.4-2.4,0.8-2.6l4-0.6c0.5-0.1,0.9-0.4,1.2-0.8l1.8-3.7
C187.5,140.1,189.1,140.1,189.7,141.2"/>
</g>
<g id="BUBBLE_1">
<path id="XMLID_23_" fill="#F0F6FF" d="M384.3,170.2c0,13.8-4,26.6-10.9,37.5c0,0,0,0,0,0c-2.5,5.8-15.1,30.3-57.9,49.9
c-44.9,20.6-84.7,5.9-84.7,5.9s24.5-16.1,19.9-43c-3.6-21.2-6.1-36.4-5.9-49.2c0-0.4,0-0.7,0-1.1c0-38.5,31.2-69.7,69.7-69.7
S384.3,131.7,384.3,170.2z"/>
</g>
<g id="BUBBLE_2">
<path id="XMLID_187_" fill="#C7DCF9" d="M238.1,216.5c-3.7-9.5-7.4-9.1-9.9-7.3c-2.3,1.7-2.8,7.6,0,13.2s5.6,5.2,8.4,3.7
S239.8,220.9,238.1,216.5z"/>
</g>
<g id="BUBBLE_3">
<path id="XMLID_249_" fill="#C7DCF9" d="M361.6,237.5c-15.4,8.2-14,14.5-10.4,18.3c3.4,3.6,13.5,3.2,22.4-2.6s7.8-10.5,4.7-15
C375.2,233.7,368.7,233.6,361.6,237.5z"/>
</g>
<g id="Layer_23">
<g id="XMLID_75_">
<g id="XMLID_73_">
<path id="XMLID_274_" fill="#99ADF9" d="M364.6,191.8c0,3.8-1.8,7.6-5.2,9.9c-7.4,5.2-19.2,12.9-32.2,19.7
c-8.3,4.4-15.5,7.8-21.3,10.3c-4.8,2.1-10.1,1.7-14.4-0.7c-2.9-1.6-5.3-4.1-6.8-7.3c-1-2.2-1.6-4.6-1.6-7c0-2,0.4-4,1.1-6
l0.4-1.1l17.2-43.6l-23,12.4c-6.4,3.4-14.3,1.2-18-5.1c-0.1-0.2-0.2-0.4-0.3-0.6c-1-2-1.5-4.1-1.5-6.2c0-4.4,2.2-8.8,6.2-11.3
c7.3-4.7,17.9-11.1,30.5-17.8c24.2-12.9,36.2-11.3,39.6-4.8c3.4,6.6-16.1,61.8-16.1,61.8s26.1-13.1,28.9-14.1
c6-2.3,12.7,0.5,15.4,6.3c0.6,1.3,0.9,2.7,1,4.1C364.6,191.2,364.6,191.5,364.6,191.8z"/>
<path id="XMLID_267_" fill="#7D9AF9" d="M309.1,158.8c-5.8,14.3-19.5,47.2-24.3,50.9l17.2-43.6l-23,12.4
c-6.4,3.5-14.5,1.2-18.1-5.2c0.2-0.2,0,0,0.2-0.2c2.3,1.1,6.4,2.1,12.5-0.9c11.4-5.4,24.4-12.5,31.9-16.6
C307.6,154.5,310,156.6,309.1,158.8z"/>
<path id="XMLID_264_" fill="#7D9AF9" d="M364.6,191.8c0,3.8-1.8,7.6-5.2,9.9c-7.4,5.2-19.2,12.9-32.2,19.7
c-8.3,4.4-15.5,7.8-21.3,10.3c-4.8,2.1-10.1,1.7-14.4-0.7c0.9-0.2,1.8-0.4,2.6-0.7c4.5-1.5,24.8-12.2,44.7-22.9
c13-7,21.8-12.6,25.7-16.4C364.6,191.2,364.6,191.5,364.6,191.8z"/>
</g>
<path id="XMLID_76_" opacity="0.49" fill="#FFFFFF" d="M314.2,131.6c-9,3-13.6,8.6-2.8,8s16.5-6.1,14.6-7.9
C324.1,130,318.3,130.2,314.2,131.6z"/>
<path id="XMLID_80_" opacity="0.49" fill="#FFFFFF" d="M348.7,182.6c-5.7,1.9-8.7,5.5-1.8,5.1c6.9-0.4,10.5-3.9,9.3-5
C354.9,181.6,351.3,181.7,348.7,182.6z"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 16 KiB

View File

@ -1,156 +0,0 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 400 300">
<defs>
<linearGradient id="linear-gradient" x1="274.42" y1="197.65" x2="291.62" y2="184.57"
gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#acf4e6"/>
<stop offset="1" stop-color="#8ecdc6"/>
</linearGradient>
<linearGradient id="linear-gradient-2" x1="145.65" y1="256.8" x2="185.96" y2="233.19"
xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-3" x1="122.66" y1="227.34" x2="157.79" y2="200.62"
xlink:href="#linear-gradient"/>
</defs>
<title>-</title>
<path
d="M235.66,90.93l131,75.5a5.32,5.32,0,0,1,0,9.22L181.85,281.74a14.88,14.88,0,0,1-14.52.16L39.89,212.48a5.32,5.32,0,0,1-.12-9.28L237.46,88.8"
fill="#acf4e6"/>
<path d="M295.47,182.17l-42.59,15.21s-3.77,7.15,17.65,19.88l34.09-31.44"
fill="url(#linear-gradient)"/>
<polyline points="200.92 213.28 123.74 254.5 150.57 269.05 223.99 223.1"
fill="url(#linear-gradient-2)"/>
<path d="M157.86,190.2l-80.61,44s14,1.49,35.44,14.21l74.06-42" fill="url(#linear-gradient-3)"/>
<path
d="M188.52,173.18l29.85,11.2s1.25.81.45,2.75c-.46,1.11-2.93,2.71-2.93,2.71l-25.77,15a14.86,14.86,0,0,1-4.44,1.2c-2.06.12-5.51-1.55-5.51-1.55l-24-13.9Z"
fill="#34323d"/>
<path
d="M188.94,171.79l28.52,11.66s2,1.09,1.47,2.57a6.16,6.16,0,0,1-2.55,2.59l-25.84,14.85a14.86,14.86,0,0,1-4.44,1.2c-2.06.12-5.51-1.55-5.51-1.55L157.86,190.2Z"
fill="#435950"/>
<path
d="M121.49,211a2.75,2.75,0,0,1-3.19-.77s-.56-.11-.56-2.56V94a7,7,0,0,1,2.49-5.14,82.23,82.23,0,0,1,8.7-5.32L255.28,10.61l1.42-.72a2.23,2.23,0,0,1,2.82.72,4.54,4.54,0,0,1,.62,2.07c.05,1.19,0,12.68,0,12.68v102.3a7.07,7.07,0,0,1-2.3,5.22Z"
fill="#334c42"/>
<path
d="M120.06,193.82V95.71c0-3.26.45-5.08,3-6.44L256.31,12.07a1.76,1.76,0,0,1,2.81,1.42l-.33,100.88Z"
fill="#9a6cff"/>
<path
d="M148.83,243.59a11.19,11.19,0,0,0,4.29,2.59c2.81,1,12.11,4.64,12.11,4.64s6.58,2.69,8.28,2.28-19.37-9.51-19.37-9.51Z"
fill="#34323d"/>
<path
d="M170.2,252.19a11.53,11.53,0,0,0,1.65.64,8.07,8.07,0,0,0,5.81-.66c4.22-2.14,4.67-4.87,3.73-7.11s-11.93-7.26-16.75-8a19.27,19.27,0,0,0-8.82.77,17.31,17.31,0,0,0-4.28,2.06c-.88.6-3.64,2.25-2.72,3.65a1.52,1.52,0,0,0,.91.51c3.6,1,7.19,2.13,10.7,3.45,2,.76,4,1.64,5.92,2.6C167.63,250.78,168.89,251.58,170.2,252.19Z"
fill="#334c42"/>
<path
d="M171,230.67,171,232.8s0,.33.81.71,20,8,20,8a1.87,1.87,0,0,0,1.63,0c.81-.43,77-44.46,77-44.46s.37-.23.09-1.16l-1.19-.47"
fill="#2f2e36"/>
<path
d="M171.54,230.12s-.75.36-.44.75,7.32,3.64,7.32,3.64l13.23,6a1.83,1.83,0,0,0,1.6.19c.86-.33,77-44.24,77-44.24a.62.62,0,0,0,.17-.58s0-.18-.38-.35-19.92-9.58-19.92-9.58a1.78,1.78,0,0,0-1.37-.07C248.19,186.18,171.54,230.12,171.54,230.12Z"
fill="#334c42"/>
<path
d="M77.25,95.06v30.57a4.3,4.3,0,0,0,6.36,3.78L124.73,107a4.3,4.3,0,0,0,2.24-3.78V71.32a4.3,4.3,0,0,0-6.45-3.73L79.4,91.34A4.3,4.3,0,0,0,77.25,95.06Z"
fill="#68e1fd"/>
<polyline points="126.97 95.36 126.97 116 118.19 108.1" fill="#68e1fd"/>
<ellipse cx="245.61" cy="35.65" rx="5.79" ry="5.07"
transform="translate(114.94 246.64) rotate(-66.49)" fill="#ffe427"/>
<polygon points="144.55 124.91 144.55 161.71 152.18 157.25 152.25 120.46 144.55 124.91"
fill="#ffe427"/>
<polygon points="157.37 111.32 157.23 154.57 165.23 149.93 165.23 106.88 157.37 111.32"
fill="#ffe427"/>
<polygon points="170.28 99.62 170.15 147.35 177.28 143.21 177.28 95.36 170.28 99.62"
fill="#ffe427"/>
<ellipse cx="245.61" cy="50.86" rx="5.79" ry="5.07"
transform="translate(101 255.79) rotate(-66.49)" fill="#ffe427"/>
<ellipse cx="245.61" cy="65.58" rx="5.79" ry="5.07"
transform="translate(54.5 233.22) rotate(-56.21)" fill="#ffe427"/>
<path
d="M206.43,117.45a17.49,17.49,0,0,1-5.31-.82c-6.07-1.93-10.63-7-12.85-14.18a37.46,37.46,0,0,1,.56-22c5.23-16.47,18.81-26.36,30.93-22.51S237.27,77.65,232,94.12h0a37.46,37.46,0,0,1-12.26,18.33A22,22,0,0,1,206.43,117.45Zm8.05-51.63c-6.66,0-14.13,7.18-17.32,17.22a28.69,28.69,0,0,0-.53,16.84c1.35,4.39,3.88,7.38,7.14,8.41s7,.05,10.68-2.76a28.68,28.68,0,0,0,9.27-14.06c3.62-11.4.59-23-6.6-25.25A8.68,8.68,0,0,0,214.48,65.82Z"
fill="#68e1fd"/>
<path
d="M145.22,166.22v0a1.76,1.76,0,0,0,2.63,1.52l32.78-18.72a1.76,1.76,0,0,0,.88-1.52h0a1.76,1.76,0,0,0-2.62-1.53L146.11,164.7A1.76,1.76,0,0,0,145.22,166.22Z"
fill="#ffe427"/>
<path
d="M138.08,94.39v13.27a1.86,1.86,0,0,0,2.79,1.61l36.08-20.84a1.86,1.86,0,0,0,.93-1.61V73.56a1.86,1.86,0,0,0-2.79-1.61L139,92.77A1.86,1.86,0,0,0,138.08,94.39Z"
fill="#ffe427"/>
<ellipse cx="146.15" cy="97.72" rx="5.88" ry="4.7"
transform="translate(8.8 207.47) rotate(-72.39)" fill="#fff"/>
<path d="M152.63,90.85,173.72,79a.75.75,0,0,0-.76-1.3L151.87,89.55a.75.75,0,0,0,.76,1.3Z"
fill="#7f47dd"/>
<path d="M153.42,96l13.11-7.34a.75.75,0,0,0-.76-1.3l-13.11,7.34a.75.75,0,0,0,.76,1.3Z"
fill="#7f47dd"/>
<polygon points="222.68 100.54 231.34 94.97 226.13 80.1 217.29 85.65 221.63 97.16 222.68 100.54"
fill="#ffe427"/>
<path
d="M224.1,101.89l-.56-2.49a4.32,4.32,0,0,0-1.11-4.76,11.42,11.42,0,0,0,.65-3.26.47.47,0,0,0-.18-.41.56.56,0,0,0-1,.08c-.25.78-.46,1.57-.66,2.37a14.28,14.28,0,0,0-.51,1.8c-.13-.52-.27-1-.42-1.55v0a.5.5,0,0,0-.07-.19l-.13-.42q-.35-1.43-.83-2.82l0-.06a.4.4,0,0,0-.18-.21,46.72,46.72,0,0,0,.82,8.38,26.74,26.74,0,0,0,1.35,3.31.47.47,0,0,0,.17.18c.1.31.2.61.33.91l0,.06.08.28a.55.55,0,0,0,1,0c.37.24,1,0,.84-.48A.54.54,0,0,0,224.1,101.89Z"
fill="#fcbf81"/>
<path
d="M237.59,87.61c.28-.17-3.43-3.1-3.75-3.38a69.23,69.23,0,0,1-5.31-5.32.47.47,0,0,0-.2-.13,11.82,11.82,0,0,0-1-1,.56.56,0,0,0-.93.54,6.52,6.52,0,0,0,1.85,3.29c-.18.36-.38.76-.53,1.16a.23.23,0,0,1,.15.22,1.69,1.69,0,0,1-.13.57,1.21,1.21,0,0,1-.16.36.27.27,0,0,1-.13.1,1.75,1.75,0,0,0,.75,1.32,2.23,2.23,0,0,0,.33,1.57l.06.05.09,0a16.32,16.32,0,0,1,2.28.78.25.25,0,0,1,0,.41,14.62,14.62,0,0,0,1.75.19.47.47,0,0,0,.36-.12l.26.14a.57.57,0,0,0,.84-.48.65.65,0,0,0,0-.2l.25.16a.64.64,0,0,0,.78.62.65.65,0,0,0,.55-.69.76.76,0,0,0-.06-.25l.59.51a.15.15,0,0,0,.26-.12.13.13,0,0,0,0-.07,8.71,8.71,0,0,1,.88,1C241.32,92.16,237.7,87.73,237.59,87.61Zm-2.41.56a.35.35,0,0,1-.42-.22.58.58,0,0,0,.43-.22h0a.15.15,0,0,0,.21-.08l0,0A.35.35,0,0,1,235.18,88.16Z"
fill="#fcbf81"/>
<path
d="M236.84,87.72a6.07,6.07,0,0,1-1.91-1.23,1.17,1.17,0,0,0-1.68,0,6.84,6.84,0,0,1-.32-.88,1.23,1.23,0,0,0-2.37.65,6,6,0,0,0,1.87,3.12,10,10,0,0,0,3.22,1.54,1.26,1.26,0,0,0,1.54-1.42l.08-.11A1.24,1.24,0,0,0,236.84,87.72Z"
fill="#fcbf81"/>
<path
d="M233.39,89.4a4.31,4.31,0,0,1-3.12-4.09.14.14,0,0,0,0-.11l0,0L229,84c-.18-.18-.37-.35-.53-.54s-.89-1.72.33-1.41c.37.09,1,.8,1.33,1.06s.84.72,1.25,1.09c.15.13.36-.08.22-.22q-1.13-1-2.34-2c-.38-.29-.76-.6-1.2-.22a1,1,0,0,0-.26,1.16c-.09.4-.4.78-.34,1.21a2.1,2.1,0,0,0,.69,1.07l.19.19a.15.15,0,0,0,0,.08c0,.5-.21,1.09.26,1.43a2.29,2.29,0,0,0,.65.28l1.12.37a.14.14,0,0,0,.18-.1,5,5,0,0,0,2.8,2.23C233.5,89.76,233.58,89.46,233.39,89.4Zm-5.31-4.72a.93.93,0,0,1-.23-1c0-.12.09-.24.14-.35a11.66,11.66,0,0,0,2,2s0,.07,0,.1a.14.14,0,0,0-.16,0C229.27,86,228.41,85.08,228.08,84.68Zm1,2.14a.64.64,0,0,1-.5-.56,3.38,3.38,0,0,1,0-.64c.43.32,1,.53,1.39.14a4.29,4.29,0,0,0,.43,1.52C230,87.12,229.5,87,229.06,86.82Z"
fill="#34323d"/>
<path
d="M250.61,97.15c-.43-.78-15.69-11.42-16.57-12.68a8.31,8.31,0,0,0-1.23,9.29s8.22,11,12.8,12.23"
fill="#22b68e"/>
<path
d="M219.22,104.51s2.35-4.27,6.77-5.34c0,0,4.55,10.47,7.82,9.62s3.63-9.82,11.09-12,2.08,24-7.64,24.12S221.88,113.56,219.22,104.51Z"
fill="#22b68e"/>
<path
d="M248.13,197.24l-3.48,1.57a2,2,0,0,1-1.34,1.44.8.8,0,0,1-.48.32,9.42,9.42,0,0,1-4.31-.35c-1.76-.4-8.66-2.43-6.42,2.24,1.29.76,2.72,1.39,4,2.05.74.37,1.48.74,2.23,1.08a4.25,4.25,0,0,0,1.3.48c1,.07,3.25-.84,3.33-.6s.44,2.07.44,2.07,6.29,1.84,6.22-2.27C249.65,204.73,248.13,197.24,248.13,197.24Z"
fill="#e55600"/>
<path
d="M251.29,191.4s-6.25-2.2-7.71-2.19-3.85.7-1.51,3.2c0,0,6.68,3.64,7.53,3.7s2.83-.73,2.9-.52.39,1.8.39,1.8,5.47,1.6,5.41-2c0-.47-1.33-7-1.33-7"
fill="#e55600"/>
<path
d="M250.22,160.17c-.22-12.11-.78-24.27.81-36.32-.14-3.09,2-1.28,1.78-2.49-1.88-9.83-15.38,3.13-15.38,3.13-.55.52-.37,3.57-.43,4.27q-.52,5.79-.76,11.6c-.83,19.55,1.6,38.74,4.13,58.08,3.32,2.89,5.4,3.66,10.19,1.24,0-12.79-.12-25.58-.33-38.36Q250.23,160.74,250.22,160.17Z"
fill="#ffe427"/>
<path
d="M258.24,181.49c-.31-4.81-.9-9.61-1.31-14.37-.63-7.3-.45-14.61-.54-21.92-.91-9.06-1.83-20.58-1.83-20.58l-7.5,2.09s-4.87,63.16,2.61,65.84,8.63-2.19,8.63-2.19S258.29,186.65,258.24,181.49Z"
fill="#ffe427"/>
<path
d="M255.17,124.19a20.15,20.15,0,0,0-.48-3.77,44.91,44.91,0,0,1,0-12.1c.46-3.88.49-7.89-1.9-11.2-3.45-2-8.25-.21-11.16,1.93-3.93,2.9-5.25,22.59-5.2,28.68,0,.86,5.22,1.3,5.8,1.34a24.53,24.53,0,0,0,8.08-.6c1.88-.51,4.22-1.44,4.75-3.54A3.92,3.92,0,0,0,255.17,124.19Z"
fill="#22b68e"/>
<path
d="M250.3,129.87a.55.55,0,0,0-1,.34c3.56,10.9-2.34,22.17-1.2,33.28.6,5.85,1.64,11.62,2,17.51a140.44,140.44,0,0,1-.19,18.77c-.05.7,1,.64,1.09-.05a140.44,140.44,0,0,0,.19-18.77c-.36-6.21-1.57-12.3-2.07-18.48C248.18,151.54,253.82,140.65,250.3,129.87Z"
fill="#34323d"/>
<path
d="M243.44,112.82a9.22,9.22,0,0,1-6.78,8.1c0,.37-.12,2.67-.15,3,4.36-1,7.57-6.51,8-11.14C244.6,112.12,243.51,112.12,243.44,112.82Z"
fill="#06825e"/>
<path d="M246.07,86c-.33.07-3.32,6.26-2.4,10.13s7.58.2,9.33-2.65S252.28,84.63,246.07,86Z"
fill="#fcbf81"/>
<path
d="M246.12,86.85a3,3,0,0,0,1.71,2.83c1.8.74,3.29,1.26,3.15,2.1s-3.29-.25-3.37,1.67a14.37,14.37,0,0,0,.36,3.86c.16,1,5.74-1.72,7.74-6.58s-2.45-6.35-2.67-6.4a4.58,4.58,0,0,0-2.76-2c-2.19-.57-2.85.26-2.85.26a2.68,2.68,0,0,0-3.24.22,3.41,3.41,0,0,0,.55,5.8Z"
fill="#34323d"/>
<path
d="M283.55,135.38a8.38,8.38,0,0,1,4.08.8,6.63,6.63,0,0,1,2.88,3.28c.63,1.32.9,3.2,2.21,4a3.83,3.83,0,0,1,1.29,1.12,3.36,3.36,0,0,1,.4,3.13c-.58,1.16-3,1.87-4.09,1.66"
fill="#8fdb5e"/>
<path
d="M282.48,135.52a7.87,7.87,0,0,0-6.95,6,10.39,10.39,0,0,0-.05,4.91c.31,1.3,1.08,3.56,2.67,3.66,2.15.13,2.84-1.88,3.52-3.53s1.39-3.47,3.11-4.12a4.63,4.63,0,0,1,5,1.12Z"
fill="#1e8c0e"/>
<path
d="M292.31,144.25c-1.3-1.68-2.38-3.51-3.63-5.22a15.55,15.55,0,0,0-2.52-3c-3-1.45-6.75-.12-9,2.42.3.09.72.11,1,.19a8.51,8.51,0,0,1,3.42,2.42c1.32,1.46,2.35,3.25,3.52,4.81,1.9,2.52,4.42,4.6,7.67,3.09C294.85,147.95,293.22,145.43,292.31,144.25Z"
fill="#8fdb5e"/>
<path d="M302.85,122.64s6.73-.53,6.6,10.12-10.18,3.64-8-2.77" fill="#1e8c0e"/>
<path
d="M301.88,133.12c-.07-3.24,3.57-5.6,6.64-6a6.22,6.22,0,0,0-6.09-4.76c-4.61.12-8.06,4.8-8.84,10.32a10.56,10.56,0,0,0,3.39,9l2.22,1.9C303.3,142,301.78,136.07,301.88,133.12Z"
fill="#8fdb5e"/>
<path
d="M320.21,140.73a14.06,14.06,0,0,0-1.56-5.78,6.37,6.37,0,0,0-4.38-3.39l-3.79,7.3s5.65-9.88,3.34-2.27,5.3,16.13,6.34,4.79C320.18,141.16,320.19,140.95,320.21,140.73Z"
fill="#1e8c0e"/>
<path
d="M293.43,159.73s-5.06,3.3-3.66,11a42.32,42.32,0,0,0,2.25,7.82c1,2.51,1.7,5.74,4.23,7.16a9,9,0,0,0,8.37.11c2.17-1.33,2.95-4.34,3.74-6.58a40.85,40.85,0,0,0,1.94-8.51C312.7,152.1,293.43,159.73,293.43,159.73Z"
fill="#68e1fd"/>
<ellipse cx="300.25" cy="160.86" rx="7.39" ry="2.67" fill="#34323d"/>
<path
d="M300.85,146.62c-1-2.49-3-4.58-3.57-7.25a9.49,9.49,0,0,1,3.78-9.69c.56-.41,0-1.36-.55-.94-4.72,3.43-5.64,9.29-2.88,14.28a26,26,0,0,1,2.49,4.73c.68,2.22-.08,3.83-1.12,5.5a6.33,6.33,0,0,0-1.64-4.48c-1.23-1.14-3-1.33-4.56-1.84-2.94-1-5.53-2.67-6-6-.11-.69-1.16-.4-1.05.29a7.88,7.88,0,0,0,4.54,5.82,31.64,31.64,0,0,0,4.38,1.52,5.1,5.1,0,0,1,2.89,2.83c.7,1.61.22,2.71-.17,4.27-.51,2-1.32,3.76.07,5.68.41.56,1.36,0,.94-.55-2.21-3.05,1.32-6,2.52-8.58A6.75,6.75,0,0,0,300.85,146.62Z"
fill="#1e8c0e"/>
<path
d="M314.48,139.93c-4.67-.82-7.85,2.79-7.57,7.31a17.14,17.14,0,0,0,.63,3.35,8.76,8.76,0,0,1,.62,2.9,4.41,4.41,0,0,1-2.67,3.12,6.36,6.36,0,0,0-3.94,4.33.55.55,0,0,0,1.05.29c1.08-4,6.6-3.38,6.64-7.74,0-2.13-1.11-4.12-1.24-6.25-.23-3.72,2.2-7,6.19-6.26C314.87,141.1,315.17,140.05,314.48,139.93Z"
fill="#1e8c0e"/>
<path
d="M318.65,135c-1.81-3.34-5.1-4.12-8.32-3.13a10.61,10.61,0,0,0-1.3.63c-8.11,6-2.35,19.57-1.1,19.46,4.13-.34,3.7-2.77,5.09-9.57a6.42,6.42,0,0,1,6.45-5.44A12,12,0,0,0,318.65,135Z"
fill="#8fdb5e"/>
<path
d="M316.87,132.74A6.76,6.76,0,0,0,310,136c-3,5-2.28,10.73-1.89,16.2.05.7,1.14.7,1.09,0-.29-4-.84-7.87.23-11.75.53-1.9,1.16-4,2.68-5.38a5.6,5.6,0,0,1,6.1-.87l-.41-.56C317.46,133.37,317.17,133.06,316.87,132.74Z"
fill="#1e8c0e"/>
</svg>

Before

Width:  |  Height:  |  Size: 13 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 136 KiB

View File

@ -1,127 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1361px"
height="609px" viewBox="0 0 1361 609" version="1.1">
<!-- Generator: Sketch 46.2 (44496) - http://www.bohemiancoding.com/sketch -->
<title>Group 21</title>
<desc>Created with Sketch.</desc>
<defs/>
<g id="Ant-Design-Pro-3.0" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="账户密码登录-校验" transform="translate(-79.000000, -82.000000)">
<g id="Group-21" transform="translate(77.000000, 73.000000)">
<g id="Group-18" opacity="0.8"
transform="translate(74.901416, 569.699158) rotate(-7.000000) translate(-74.901416, -569.699158) translate(4.901416, 525.199158)">
<ellipse id="Oval-11" fill="#CFDAE6" opacity="0.25" cx="63.5748792" cy="32.468367"
rx="21.7830479" ry="21.766008"/>
<ellipse id="Oval-3" fill="#CFDAE6" opacity="0.599999964" cx="5.98746479" cy="13.8668601"
rx="5.2173913" ry="5.21330997"/>
<path
d="M38.1354514,88.3520215 C43.8984227,88.3520215 48.570234,83.6838647 48.570234,77.9254015 C48.570234,72.1669383 43.8984227,67.4987816 38.1354514,67.4987816 C32.3724801,67.4987816 27.7006688,72.1669383 27.7006688,77.9254015 C27.7006688,83.6838647 32.3724801,88.3520215 38.1354514,88.3520215 Z"
id="Oval-3-Copy" fill="#CFDAE6" opacity="0.45"/>
<path d="M64.2775582,33.1704963 L119.185836,16.5654915" id="Path-12" stroke="#CFDAE6"
stroke-width="1.73913043" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M42.1431708,26.5002681 L7.71190162,14.5640702" id="Path-16" stroke="#E0B4B7"
stroke-width="0.702678964" opacity="0.7" stroke-linecap="round"
stroke-linejoin="round" stroke-dasharray="1.405357899873153,2.108036953469981"/>
<path d="M63.9262187,33.521561 L43.6721326,69.3250951" id="Path-15" stroke="#BACAD9"
stroke-width="0.702678964" stroke-linecap="round" stroke-linejoin="round"
stroke-dasharray="1.405357899873153,2.108036953469981"/>
<g id="Group-17"
transform="translate(126.850922, 13.543654) rotate(30.000000) translate(-126.850922, -13.543654) translate(117.285705, 4.381889)"
fill="#CFDAE6">
<ellipse id="Oval-4" opacity="0.45" cx="9.13482653" cy="9.12768076" rx="9.13482653"
ry="9.12768076"/>
<path
d="M18.2696531,18.2553615 C18.2696531,13.2142826 14.1798519,9.12768076 9.13482653,9.12768076 C4.08980114,9.12768076 0,13.2142826 0,18.2553615 L18.2696531,18.2553615 Z"
id="Oval-4"
transform="translate(9.134827, 13.691521) scale(-1, -1) translate(-9.134827, -13.691521) "/>
</g>
</g>
<g id="Group-14"
transform="translate(216.294700, 123.725600) rotate(-5.000000) translate(-216.294700, -123.725600) translate(106.294700, 35.225600)">
<ellipse id="Oval-2" fill="#CFDAE6" opacity="0.25" cx="29.1176471" cy="29.1402439"
rx="29.1176471" ry="29.1402439"/>
<ellipse id="Oval-2" fill="#CFDAE6" opacity="0.3" cx="29.1176471" cy="29.1402439"
rx="21.5686275" ry="21.5853659"/>
<ellipse id="Oval-2-Copy" stroke="#CFDAE6" opacity="0.4" cx="179.019608" cy="138.146341"
rx="23.7254902" ry="23.7439024"/>
<ellipse id="Oval-2" fill="#BACAD9" opacity="0.5" cx="29.1176471" cy="29.1402439"
rx="10.7843137" ry="10.7926829"/>
<path
d="M29.1176471,39.9329268 L29.1176471,18.347561 C23.1616351,18.347561 18.3333333,23.1796097 18.3333333,29.1402439 C18.3333333,35.1008781 23.1616351,39.9329268 29.1176471,39.9329268 Z"
id="Oval-2" fill="#BACAD9"/>
<g id="Group-9" opacity="0.45" transform="translate(172.000000, 131.000000)"
fill="#E6A1A6">
<ellipse id="Oval-2-Copy-2" cx="7.01960784" cy="7.14634146" rx="6.47058824"
ry="6.47560976"/>
<path
d="M0.549019608,13.6219512 C4.12262681,13.6219512 7.01960784,10.722722 7.01960784,7.14634146 C7.01960784,3.56996095 4.12262681,0.670731707 0.549019608,0.670731707 L0.549019608,13.6219512 Z"
id="Oval-2-Copy-2"
transform="translate(3.784314, 7.146341) scale(-1, 1) translate(-3.784314, -7.146341) "/>
</g>
<ellipse id="Oval-10" fill="#CFDAE6" cx="218.382353" cy="138.685976" rx="1.61764706"
ry="1.61890244"/>
<ellipse id="Oval-10-Copy-2" fill="#E0B4B7" opacity="0.35" cx="179.558824" cy="175.381098"
rx="1.61764706" ry="1.61890244"/>
<ellipse id="Oval-10-Copy" fill="#E0B4B7" opacity="0.35" cx="180.098039" cy="102.530488"
rx="2.15686275" ry="2.15853659"/>
<path d="M28.9985381,29.9671598 L171.151018,132.876024" id="Path-11" stroke="#CFDAE6"
opacity="0.8"/>
</g>
<g id="Group-10" opacity="0.799999952"
transform="translate(1054.100635, 36.659317) rotate(-11.000000) translate(-1054.100635, -36.659317) translate(1026.600635, 4.659317)">
<ellipse id="Oval-7" stroke="#CFDAE6" stroke-width="0.941176471" cx="43.8135593" cy="32"
rx="11.1864407" ry="11.2941176"/>
<g id="Group-12" transform="translate(34.596774, 23.111111)" fill="#BACAD9">
<ellipse id="Oval-7" opacity="0.45" cx="9.18534718" cy="8.88888889" rx="8.47457627"
ry="8.55614973"/>
<path
d="M9.18534718,17.4450386 C13.8657264,17.4450386 17.6599235,13.6143199 17.6599235,8.88888889 C17.6599235,4.16345787 13.8657264,0.332739156 9.18534718,0.332739156 L9.18534718,17.4450386 Z"
id="Oval-7"/>
</g>
<path d="M34.6597385,24.809694 L5.71666084,4.76878945" id="Path-2" stroke="#CFDAE6"
stroke-width="0.941176471"/>
<ellipse id="Oval" stroke="#CFDAE6" stroke-width="0.941176471" cx="3.26271186"
cy="3.29411765" rx="3.26271186" ry="3.29411765"/>
<ellipse id="Oval-Copy" fill="#F7E1AD" cx="2.79661017" cy="61.1764706" rx="2.79661017"
ry="2.82352941"/>
<path d="M34.6312443,39.2922712 L5.06366663,59.785082" id="Path-10" stroke="#CFDAE6"
stroke-width="0.941176471"/>
</g>
<g id="Group-19" opacity="0.33"
transform="translate(1282.537219, 446.502867) rotate(-10.000000) translate(-1282.537219, -446.502867) translate(1142.537219, 327.502867)">
<g id="Group-17"
transform="translate(141.333539, 104.502742) rotate(275.000000) translate(-141.333539, -104.502742) translate(129.333539, 92.502742)"
fill="#BACAD9">
<circle id="Oval-4" opacity="0.45" cx="11.6666667" cy="11.6666667" r="11.6666667"/>
<path
d="M23.3333333,23.3333333 C23.3333333,16.8900113 18.1099887,11.6666667 11.6666667,11.6666667 C5.22334459,11.6666667 0,16.8900113 0,23.3333333 L23.3333333,23.3333333 Z"
id="Oval-4"
transform="translate(11.666667, 17.500000) scale(-1, -1) translate(-11.666667, -17.500000) "/>
</g>
<circle id="Oval-5-Copy-6" fill="#CFDAE6" cx="201.833333" cy="87.5" r="5.83333333"/>
<path d="M143.5,88.8126685 L155.070501,17.6038544" id="Path-17" stroke="#BACAD9"
stroke-width="1.16666667"/>
<path d="M17.5,37.3333333 L127.466252,97.6449735" id="Path-18" stroke="#BACAD9"
stroke-width="1.16666667"/>
<polyline id="Path-19" stroke="#CFDAE6" stroke-width="1.16666667"
points="143.902597 120.302281 174.935455 231.571342 38.5 147.510847 126.366941 110.833333"/>
<path d="M159.833333,99.7453842 L195.416667,89.25" id="Path-20" stroke="#E0B4B7"
stroke-width="1.16666667" opacity="0.6"/>
<path d="M205.333333,82.1372105 L238.719406,36.1666667" id="Path-24" stroke="#BACAD9"
stroke-width="1.16666667"/>
<path d="M266.723424,132.231988 L207.083333,90.4166667" id="Path-25" stroke="#CFDAE6"
stroke-width="1.16666667"/>
<circle id="Oval-5" fill="#C1D1E0" cx="156.916667" cy="8.75" r="8.75"/>
<circle id="Oval-5-Copy-3" fill="#C1D1E0" cx="39.0833333" cy="148.75" r="5.25"/>
<circle id="Oval-5-Copy-2" fill-opacity="0.6" fill="#D1DEED" cx="8.75" cy="33.25"
r="8.75"/>
<circle id="Oval-5-Copy-4" fill-opacity="0.6" fill="#D1DEED" cx="243.833333"
cy="30.3333333" r="5.83333333"/>
<circle id="Oval-5-Copy-5" fill="#E0B4B7" cx="175.583333" cy="232.75" r="5.25"/>
</g>
</g>
</g>
</g>
<div xmlns="" id="divScriptsUsed" style="display: none"/>
<script xmlns="" id="globalVarsDetection"
src="chrome-extension://cmkdbmfndkfgebldhnkbfhlneefdaaip/js/wrs_env.js"/>
</svg>

Before

Width:  |  Height:  |  Size: 10 KiB

View File

@ -1 +0,0 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1631454216260" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2219" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><defs><style type="text/css"></style></defs><path d="M697.652 256c-23.565 0-42.667-19.103-42.667-42.667s19.102-42.666 42.667-42.666h124.651c40.288 0 73.697 31.956 73.697 72.347v85.783c0 23.564-19.103 42.667-42.667 42.667s-42.666-19.103-42.666-42.667V256H697.652z m113.015 597.333V496.565c0-23.564 19.102-42.666 42.666-42.666C876.897 453.899 896 473 896 496.565V866.32c0 40.391-33.41 72.348-73.697 72.348H201.697c-40.288 0-73.697-31.957-73.697-72.348V243.014c0-40.39 33.41-72.347 73.697-72.347h124.727c23.564 0 42.667 19.102 42.667 42.666 0 23.564-19.103 42.667-42.667 42.667h-113.09v597.333h597.333zM368.485 541.418c-23.564 0-42.667-19.102-42.667-42.666 0-23.564 19.103-42.667 42.667-42.667h320c23.564 0 42.667 19.103 42.667 42.667s-19.103 42.666-42.667 42.666h-320z m58.182-370.751c-23.564 0-42.667 19.102-42.667 42.666C384 236.897 403.103 256 426.667 256h170.666C620.897 256 640 236.897 640 213.333s-19.103-42.666-42.667-42.666H426.667z m0-85.334h170.666c70.693 0 128 57.308 128 128 0 70.693-57.307 128-128 128H426.667c-70.693 0-128-57.307-128-128 0-70.692 57.307-128 128-128zM368.485 696.57c-23.564 0-42.667-19.103-42.667-42.667s19.103-42.666 42.667-42.666h320c23.564 0 42.667 19.102 42.667 42.666 0 23.564-19.103 42.667-42.667 42.667h-320z" p-id="2220" fill="#f49776"></path></svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -1 +0,0 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1631454148586" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1906" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M826.666667 644.266667A341.333333 341.333333 0 0 0 342.613333 215.594667l-42.325333-74.112A426.666667 426.666667 0 0 1 900.992 687.36l57.258667 33.024-177.706667 94.549333-7.04-201.130666 53.162667 30.677333zM197.333333 379.733333A341.333333 341.333333 0 0 0 681.386667 808.405333l42.325333 74.112A426.666667 426.666667 0 0 1 123.008 336.64L65.706667 303.658667 243.2 209.066667l7.253333 201.258666L197.290667 379.733333zM554.666667 577.536h128v85.333333h-128v85.333334h-85.333334v-85.333334H341.333333v-85.333333h128v-42.666667H341.333333v-85.333333h110.336L361.130667 358.997333 421.546667 298.666667 512 389.162667 602.496 298.666667l60.373333 60.330666-90.538666 90.538667H682.666667v85.333333h-128v42.666667z" p-id="1907" fill="#b37feb"></path></svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -1 +0,0 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1631453917190" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1531" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M300.032 558.08V427.52c0-19.968 13.312-35.84 29.696-35.84s29.696 15.872 29.696 35.84V558.08c0 19.968-13.312 35.84-29.696 35.84s-29.696-15.872-29.696-35.84zM480.256 558.08V363.52c0-19.968 13.312-35.84 29.696-35.84 16.384 0 29.696 15.872 29.696 35.84v194.56c0 19.968-13.312 35.84-29.696 35.84-16.384 0-29.696-15.872-29.696-35.84zM660.48 558.08V299.52c0-19.968 13.312-35.84 29.696-35.84s29.696 15.872 29.696 35.84V558.08c0 19.968-13.312 35.84-29.696 35.84s-29.696-15.872-29.696-35.84z" p-id="1532" fill="#2d8cf0"></path><path d="M861.696 781.312H568.32v117.248h146.944c16.384 0 29.184 13.312 29.184 29.184 0 16.384-13.312 29.184-29.184 29.184H362.496c-16.384-1.024-28.672-14.848-27.648-30.72 1.024-14.848 12.8-27.136 27.648-27.648h146.944v-117.248H157.184c-65.024 0-117.248-52.736-117.248-117.248V194.048C39.936 129.024 92.16 76.8 157.184 76.8h704.512c65.024 0 117.248 52.736 117.248 117.248v470.016c0.512 64.512-52.224 117.248-117.248 117.248z m58.88-587.264c0-32.256-26.112-58.88-58.88-58.88H157.184c-32.256 0-58.88 26.112-58.88 58.88v470.016c0 32.256 26.112 58.88 58.88 58.88h704.512c32.256 0 58.88-26.112 58.88-58.88V194.048z" p-id="1533" fill="#2d8cf0"></path></svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -1 +0,0 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1631454355958" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2654" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><defs><style type="text/css"></style></defs><path d="M931.707 868.351H853.75v-36.85c0-9.742-3.977-18.707-10.501-25.23-6.528-6.521-15.485-10.609-25.271-10.609h-15.913v-36.704c0-9.818-4.163-18.921-10.576-25.237-6.452-6.522-15.521-10.533-25.373-10.533h-309.94c-9.931 0-18.711 4.011-25.309 10.533-6.412 6.453-10.571 15.419-10.571 25.237v36.704h-15.914c-9.855 0-18.924 4.088-25.271 10.609l-1.613 1.721c-5.483 6.308-8.89 14.551-8.89 23.51v36.85h-77.959c-18.604 0-33.62 14.985-33.62 33.624 0 18.638 15.017 33.623 33.62 33.623h641.058c18.536 0 33.549-14.985 33.549-33.623 0-18.64-15.013-33.625-33.549-33.625z m-118.206 0H408.827v-32.328h31.687c11.111 0 20.179-8.89 20.179-20.071V763.47h300.904v52.481c0 11.182 9.144 20.071 20.248 20.071h31.656v32.329zM443.2 512.495a65.26 65.26 0 0 0-4.518 23.806c0 17.2 6.599 34.408 19.643 47.596l22.113 22.156 1.26 1.072c12.9 12.397 29.604 18.493 46.307 18.493 16.99 0 34.338-6.453 47.207-19.565h0.18L706.29 475.081l1.221-1.073c12.33-13.052 18.35-29.758 18.35-46.455 0-17.206-6.521-34.193-19.57-47.245h-0.072l0.072-0.359-22.078-22.01c-13.049-12.975-30.252-19.498-47.566-19.498-8.136 0-16.306 1.432-24.012 4.376L471.446 201.664c3.082-7.74 4.548-15.915 4.548-24.012 0-17.207-6.702-34.415-19.746-47.604l-22.116-22.01c-13.048-13.044-30.214-19.636-47.387-19.636-17.204 0-34.518 6.592-47.563 19.636L208.28 239.009l-1.107 1.155c-12.261 12.9-18.46 29.751-18.46 46.091 0 17.345 6.523 34.552 19.567 47.673l22.082 22.078 1.29 1.08c13.046 12.467 29.641 18.563 46.275 18.563 8.133 0 16.237-1.582 24.013-4.444l14.015 14.117L82.044 619.385c-15.522 15.48-23.3 35.916-23.3 56.272 0 20.647 7.777 41.075 23.3 56.563 15.662 15.556 36.093 23.364 56.562 23.364 20.499 0 40.86-7.809 56.451-23.364L428.9 498.308l14.3 14.187z m174.484-126.024c5.271-5.159 12.116-7.808 18.962-7.808 6.991 0 13.836 2.648 19.072 7.808l22.112 22.155c5.16 5.159 7.778 12.253 7.778 18.927 0 6.66-2.364 13.183-6.987 18.274l-0.791 0.79-130.901 130.979a26.943 26.943 0 0 1-18.924 7.809c-6.522 0-13.227-2.29-18.136-7.093l-0.898-0.716-22.185-22.153c-5.088-5.092-7.778-12.117-7.778-19.142 0-6.386 2.367-12.839 6.99-17.998l0.788-0.931 130.898-130.901z m-37.668-19.209L467.467 479.883 334.559 346.835 447.18 234.282l132.836 132.98z m-283.167-39.72c-5.088 5.161-11.896 7.748-18.921 7.748-6.525 0-13.192-2.223-18.14-7.032l-0.859-0.716-22.186-22.291c-5.091-4.946-7.743-11.972-7.743-18.996 0-6.453 2.329-12.9 6.953-18.06l0.79-0.867 130.899-130.827c5.266-5.166 12.078-7.739 19.103-7.739 6.812 0 13.767 2.573 18.927 7.739l22.112 22.079c5.165 5.16 7.782 12.191 7.782 19.072 0 6.453-2.295 13.044-6.846 18.204l-0.937 0.716-130.934 130.97zM166.597 703.765c-7.633 7.595-17.885 11.461-27.991 11.461-10.183 0-20.469-3.866-27.996-11.461-7.637-7.679-11.545-17.93-11.545-28.107 0-10.105 3.908-20.22 11.545-27.815l233.987-233.98 55.806 55.84-233.806 234.062zM466 685.625v9.75c0 8.076 5.373 14.625 12 14.625h272c6.627 0 12-6.549 12-14.625v-9.75c0-8.076-5.373-14.625-12-14.625H478c-6.627 0-12 6.549-12 14.625z" p-id="2655" fill="#2ccb98"></path></svg>

Before

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -1,5 +1,11 @@
<template> <template>
<basicModal ref="modalRef" class="cropperModal" @register="modalRegister" @on-ok="handleOk" @on-close="handleClose"> <basicModal
ref="modalRef"
class="cropperModal"
@register="modalRegister"
@on-ok="handleOk"
@on-close="handleClose"
>
<template #default> <template #default>
<div class="cropper-box"> <div class="cropper-box">
<div class="cropper-box-left"> <div class="cropper-box-left">
@ -184,8 +190,10 @@
import { useMessage } from 'naive-ui'; import { useMessage } from 'naive-ui';
import { basicModal, useModal } from '@/components/Modal'; import { basicModal, useModal } from '@/components/Modal';
import CropperImage from './CropperImage.vue'; import CropperImage from './CropperImage.vue';
import { dataURLtoBlob,base64ToFile } from '@/utils/file/base64Conver'; import { dataURLtoBlob, base64ToFile } from '@/utils/file/base64Conver';
import { isFunction } from '@/utils/is'; import { isFunction } from '@/utils/is';
import OSS from 'ali-oss';
import { getOssConfig } from '@/api/common';
import { import {
UploadOutlined, UploadOutlined,
ReloadOutlined, ReloadOutlined,
@ -256,35 +264,108 @@
cropper?.value?.[event]?.(arg); cropper?.value?.[event]?.(arg);
} }
/**
* 执行上传
*/
async function handleOk() { async function handleOk() {
if (!src.value) { if (!src.value) {
setSubLoading(false); setSubLoading(false);
return message.error('请先上传图片'); return message.error('请先上传图片');
} }
const uploadApi = props.uploadApi; const uploadApi = props.uploadApi;
const name = props.name const name = props.name;
const file = base64ToFile(previewSource.value, filename);
//
if (uploadApi && isFunction(uploadApi)) { if (uploadApi && isFunction(uploadApi)) {
const file = base64ToFile(previewSource.value, filename); //
console.log(file)
try { try {
setSubLoading(true); setSubLoading(true);
const formData = new window.FormData(); const formData = new window.FormData();
formData.append('file', file); formData.append('file', file);
formData.append('name', name); formData.append('name', name);
console.log(formData)
const result = await uploadApi(formData); const result = await uploadApi(formData);
emit('uploadSuccess', result); emit('uploadSuccess', result);
closeModal(); closeModal();
} finally { } finally {
setSubLoading(false); setSubLoading(false);
} }
} else {
// OSS
actionFiles(file);
} }
} }
/**
* 阿里云OSS上传
* @param fileChild 文件
*/
const actionFiles = async (fileChild: any) => {
const configData = await getOssConfig();
let date = new Date();
let year = date.getFullYear();
let month: string | number = date.getMonth() + 1;
month = month < 10 ? '0' + month : month;
let day: string | number = date.getDate();
day = day < 10 ? '0' + day : day;
let h: string | number = date.getHours();
h = h < 10 ? '0' + h : h;
let minute: string | number = date.getMinutes();
minute = minute < 10 ? '0' + minute : minute;
let second: string | number = date.getSeconds();
second = second < 10 ? '0' + second : second;
let time = h + '' + minute + '' + second;
let filterFileName = time + '-' + fileChild.name;
filterFileName = filterFileName.replace(
/[\+\_\,\!\|\~\`\(\)\#\$\%\^\&\*\{\}\:\;\"\<\>\?]/g,
'',
);
let filePath = props.name + '/' + year + '/' + month + '/' + day + '/' + filterFileName;
setSubLoading(true);
try {
const headers = {
'Access-Control-Allow-Origin': '*',
};
const client = new OSS({
// yourRegionBucket1yourRegionoss-cn-hangzhou
endpoint: configData.oss_endpoint,
// STS访AccessKey IDAccessKey Secret
secure: true,
region: configData.oss_region,
accessKeyId: configData.oss_accessKeyId,
accessKeySecret: configData.oss_accessKeySecret,
// Bucket
bucket: configData.oss_bucketName,
timeout: 600000,
});
const res = await client.multipartUpload(filePath, fileChild, {
headers: headers,
//
parallel: 4,
// 1 MB100 KB
partSize: 1024 * 1024,
// headers,
mime: fileChild.type,
});
emit('uploadSuccess', { fileUrl: configData.oss_domain + res.name });
closeModal();
} catch (error) {
emit('uploadSuccess', {});
} finally {
setSubLoading(false);
}
};
/**
* 执行关闭
*/
function handleClose() { function handleClose() {
src.value = ''; src.value = '';
previewSource.value = ''; previewSource.value = '';
} }
/**
* 定义函数
*/
defineExpose({ defineExpose({
showModal, showModal,
beforeUpload, beforeUpload,

View File

@ -19,17 +19,17 @@
<div class="upload-handle" @click.stop> <div class="upload-handle" @click.stop>
<div class="handle-icon" @click="editImg" v-if="!self_disabled"> <div class="handle-icon" @click="editImg" v-if="!self_disabled">
<n-icon size="20"> <n-icon size="20">
<EditOutlined/> <EditOutlined />
</n-icon> </n-icon>
</div> </div>
<div class="handle-icon" @click="viewImg"> <div class="handle-icon" @click="viewImg">
<n-icon size="20"> <n-icon size="20">
<ZoomInOutlined/> <ZoomInOutlined />
</n-icon> </n-icon>
</div> </div>
<div class="handle-icon" @click="deleteImg" v-if="!self_disabled"> <div class="handle-icon" @click="deleteImg" v-if="!self_disabled">
<n-icon size="20"> <n-icon size="20">
<DeleteOutlined/> <DeleteOutlined />
</n-icon> </n-icon>
</div> </div>
</div> </div>
@ -38,7 +38,7 @@
<div class="upload-empty"> <div class="upload-empty">
<slot name="empty"> <slot name="empty">
<n-icon size="40" color="#666666" v-if="!loading"> <n-icon size="40" color="#666666" v-if="!loading">
<PlusOutlined/> <PlusOutlined />
</n-icon> </n-icon>
<span v-else>上传中{{ progress }}%</span> <span v-else>上传中{{ progress }}%</span>
</slot> </slot>
@ -54,14 +54,10 @@
<script setup lang="ts" name="UploadImg"> <script setup lang="ts" name="UploadImg">
import { ref, computed, inject } from 'vue'; import { ref, computed, inject } from 'vue';
import { generateUUID } from '@/utils/auth'; import { generateUUID } from '@/utils/auth';
import { upload } from '@/api/common'; import { upload, getOssConfig } from '@/api/common';
import { import { PlusOutlined, EditOutlined, DeleteOutlined, ZoomInOutlined } from '@vicons/antd';
PlusOutlined, import { useNotification } from 'naive-ui';
EditOutlined, import OSS from 'ali-oss';
DeleteOutlined,
ZoomInOutlined,
} from '@vicons/antd';
import { useNotification } from 'naive-ui'
interface UploadFileProps { interface UploadFileProps {
imageUrl?: string; // ==> imageUrl?: string; // ==>
@ -88,12 +84,14 @@ import { useNotification } from 'naive-ui'
height: '120px', height: '120px',
width: '120px', width: '120px',
borderRadius: '8px', borderRadius: '8px',
name: '' name: '',
}); });
const handleHttpUploadOptions = ref({});
// id // id
const uuid = ref('id-' + generateUUID()); const uuid = ref('id-' + generateUUID());
const notification = useNotification() const notification = useNotification();
const viewImg = () => { const viewImg = () => {
window.open(props.imageUrl); window.open(props.imageUrl);
}; };
@ -114,12 +112,17 @@ import { useNotification } from 'naive-ui'
(e: 'changeFileName', value: string): void; (e: 'changeFileName', value: string): void;
} }
const fileName = ref(''); /**
const oImg = ref(''); * 定义参数
*/
const emit = defineEmits<UploadEmits>(); const emit = defineEmits<UploadEmits>();
const loading = ref(false); const loading = ref(false);
const progress = ref(0); const progress = ref(0);
/**
* 本地接口上传
* @param fileChild 文件
*/
const actionFile = async (fileChild: any) => { const actionFile = async (fileChild: any) => {
loading.value = true; loading.value = true;
try { try {
@ -139,7 +142,81 @@ import { useNotification } from 'naive-ui'
} }
}; };
/**
* 阿里云OSS上传
* @param fileChild 文件
*/
const actionFiles = async (fileChild: any) => {
console.log(fileChild);
const configData = await getOssConfig();
let date = new Date();
let year = date.getFullYear();
let month: string | number = date.getMonth() + 1;
month = month < 10 ? '0' + month : month;
let day: string | number = date.getDate();
day = day < 10 ? '0' + day : day;
let h: string | number = date.getHours();
h = h < 10 ? '0' + h : h;
let minute: string | number = date.getMinutes();
minute = minute < 10 ? '0' + minute : minute;
let second: string | number = date.getSeconds();
second = second < 10 ? '0' + second : second;
let time = h + '' + minute + '' + second;
let filterFileName = time + '-' + fileChild.name;
filterFileName = filterFileName.replace(
/[\+\_\,\!\|\~\`\(\)\#\$\%\^\&\*\{\}\:\;\"\<\>\?]/g,
'',
);
let filePath = props.name + '/' + year + '/' + month + '/' + day + '/' + filterFileName;
loading.value = true;
try {
const headers = {
'Access-Control-Allow-Origin': '*',
};
const client = new OSS({
// yourRegionBucket1yourRegionoss-cn-hangzhou
endpoint: configData.oss_endpoint,
// STS访AccessKey IDAccessKey Secret
secure: true,
region: configData.oss_region,
accessKeyId: configData.oss_accessKeyId,
accessKeySecret: configData.oss_accessKeySecret,
// Bucket
bucket: configData.oss_bucketName,
timeout: 600000,
});
const res = await client.multipartUpload(filePath, fileChild, {
headers: headers,
//
progress: (p, cpt, res) => {
progress.value = parseFloat(parseFloat(p * 100).toFixed(2));
handleHttpUploadOptions.value.onProgress({ percent: progress.value });
},
//
parallel: 4,
// 1 MB100 KB
partSize: 1024 * 1024,
// headers,
mime: fileChild.type,
});
console.log(res);
emit('update:imageUrl', configData.oss_domain + res.name);
emit('changeFileName', fileChild.name);
} catch (error) {
emit('update:imageUrl', '');
emit('changeFileName', '');
} finally {
progress.value = 0;
loading.value = false;
}
};
/**
* 执行文件上传
* @param options 参数
*/
const handleHttpUpload = async (options) => { const handleHttpUpload = async (options) => {
handleHttpUploadOptions.value = options;
actionFile(options.file.file); actionFile(options.file.file);
}; };
@ -164,20 +241,19 @@ import { useNotification } from 'naive-ui'
* @param rawFile 选择的文件 * @param rawFile 选择的文件
* */ * */
const beforeUpload = (rawFile) => { const beforeUpload = (rawFile) => {
console.log(rawFile)
const imgSize = rawFile.file.file.size / 1024 / 1024 < props.fileSize; const imgSize = rawFile.file.file.size / 1024 / 1024 < props.fileSize;
const imgType = props.fileType.includes(rawFile.file.file.type as File.ImageMimeType); const imgType = props.fileType.includes(rawFile.file.file.type as File.ImageMimeType);
if (!imgType) if (!imgType)
notification.warning({ notification.warning({
content: '温馨提示', content: '温馨提示',
duration:2000, duration: 2000,
meta: '上传图片不符合所需的格式!', meta: '上传图片不符合所需的格式!',
}); });
if (!imgSize) if (!imgSize)
setTimeout(() => { setTimeout(() => {
notification.warning({ notification.warning({
content: '温馨提示', content: '温馨提示',
duration:2000, duration: 2000,
meta: `上传图片大小不能超过 ${props.fileSize}M`, meta: `上传图片大小不能超过 ${props.fileSize}M`,
}); });
}, 0); }, 0);
@ -190,7 +266,7 @@ import { useNotification } from 'naive-ui'
const uploadError = () => { const uploadError = () => {
notification.error({ notification.error({
content: '温馨提示', content: '温馨提示',
duration:2000, duration: 2000,
meta: '图片上传失败,请您重新上传!', meta: '图片上传失败,请您重新上传!',
}); });
}; };
@ -214,10 +290,10 @@ import { useNotification } from 'naive-ui'
border-radius: 4px; border-radius: 4px;
padding: 0; padding: 0;
padding: 5px; padding: 5px;
border:1px dashed #d9d9d9; border: 1px dashed #d9d9d9;
cursor: pointer; cursor: pointer;
.n-upload-trigger { .n-upload-trigger {
width:100%; width: 100%;
height: 100%; height: 100%;
display: flex; display: flex;
align-items: center; align-items: center;

View File

@ -1,65 +1,67 @@
<template> <template>
<div class="upload-box"> <div class="upload-box">
<div v-for="(item, index) in fileList" class="items"> <div class="img-box">
<img v-if="item.filePath" :src="item.filePath" class="upload-image" /> <div v-for="(item, index) in fileList" class="items">
<div class="upload-handle" @click.stop> <img v-if="item.filePath" :src="item.filePath" class="upload-image" />
<div class="handle-icon" @click="handleEdit(index)" v-if="!self_disabled"> <div class="upload-handle" @click.stop>
<n-icon size="20"> <div class="handle-icon" @click="handleEdit(index)" v-if="!self_disabled">
<EditOutlined/> <n-icon size="20">
</n-icon> <EditOutlined />
</div> </n-icon>
<div class="handle-icon" @click="onPreview(index)"> </div>
<n-icon size="20"> <div class="handle-icon" @click="onPreview(index)">
<ZoomInOutlined/> <n-icon size="20">
</n-icon> <ZoomInOutlined />
</div> </n-icon>
<div class="handle-icon" @click="handleRemove(index)" v-if="!self_disabled"> </div>
<n-icon size="20"> <div class="handle-icon" @click="handleRemove(index)" v-if="!self_disabled">
<DeleteOutlined/> <n-icon size="20">
</n-icon> <DeleteOutlined />
</n-icon>
</div>
</div> </div>
</div> </div>
<n-upload
action="#"
:id="uuid"
class="upload-demo my-upload-images"
:multiple="multiple"
ref="uploadRef"
:style="{ width: width, height: height }"
:disabled="loading ? true : self_disabled || fileList.length >= props.limit"
@before-upload="beforeUpload"
@change="handleUploadChange"
:max="limit"
v-model:file-list="fileList"
:show-file-list="false"
v-if="!self_disabled"
:accept="props.fileType"
>
<n-icon size="40" color="#666666" v-if="!loading">
<PlusOutlined />
</n-icon>
<n-progress type="circle" v-else :percentage="progress" />
</n-upload>
</div>
<div class="n-upload__tip">
<slot name="tip"></slot><span v-if="limit">,最多{{ limit }}</span>
</div> </div>
<n-upload
action="#"
:id="uuid"
class="upload-demo my-upload-images"
:multiple="multiple"
ref="uploadRef"
:style="{ width: width, height: height }"
:disabled="loading ? true : self_disabled || fileList.length >= props.limit"
@before-upload="beforeUpload"
@change="handleUploadChange"
:max="limit"
v-model:file-list="fileList"
:show-file-list="false"
v-if="!self_disabled"
:accept="props.fileType"
>
<n-icon size="40" color="#666666" v-if="!loading" >
<PlusOutlined/>
</n-icon>
<n-progress type="circle" v-else :percentage="progress" />
</n-upload>
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { computed, ref } from 'vue'; import { computed, ref } from 'vue';
import { generateUUID } from '@/utils/auth'; import { generateUUID } from '@/utils/auth';
import type { UploadFileInfo } from 'naive-ui' import type { UploadFileInfo } from 'naive-ui';
import { import { PlusOutlined, EditOutlined, DeleteOutlined, ZoomInOutlined } from '@vicons/antd';
PlusOutlined, import { useNotification } from 'naive-ui';
EditOutlined, import OSS from 'ali-oss';
DeleteOutlined,
ZoomInOutlined,
} from '@vicons/antd';
import { useNotification } from 'naive-ui'
const uploadRef = ref(); const uploadRef = ref();
import { upload } from '@/api/common'; import { upload, getOssConfig } from '@/api/common';
// /**
* 接受父组件参数
*/
const props = defineProps({ const props = defineProps({
zIndex: { zIndex: {
default: -1, default: -1,
@ -99,9 +101,6 @@ import { useNotification } from 'naive-ui'
fileSize: { fileSize: {
default: 200, default: 200,
}, },
orderNo: {
default: '',
},
fileType: { fileType: {
default: '', default: '',
}, },
@ -112,30 +111,41 @@ import { useNotification } from 'naive-ui'
// id // id
const uuid = ref('id-' + generateUUID()); const uuid = ref('id-' + generateUUID());
const notification = useNotification() const notification = useNotification();
// //
const self_disabled = computed(() => { const self_disabled = computed(() => {
return props.disabled; return props.disabled;
}); });
/**
* 文件列表
*/
const fileList = computed({ const fileList = computed({
get: () => { get: () => {
console.log(props.fileLists) return props.fileLists;
return props.fileLists; },
}, set: (val) => {
set: (val) => { emit('update:modelValue', fileList.value);
emit('update:modelValue', fileList.value); },
}, });
});
let editIndex = '';
/**
* 定义参数
*/
let editIndex = '';
const emit = defineEmits(['upload']); const emit = defineEmits(['upload']);
const progress = ref(0); const progress = ref(0);
const loading = ref(false); const loading = ref(false);
/**
* 本地接口上传
* @param options 参数
*/
const handleHttpUpload = async (options) => { const handleHttpUpload = async (options) => {
loading.value = true; loading.value = true;
try { try {
//
const formData = new FormData(); const formData = new FormData();
formData.append('file', options.file.file); formData.append('file', options.file.file);
formData.append('name', props.name); formData.append('name', props.name);
@ -165,13 +175,13 @@ import { useNotification } from 'naive-ui'
} catch (error) { } catch (error) {
notification.error({ notification.error({
message: '温馨提示', message: '温馨提示',
duration:2000, duration: 2000,
description: '上传文件失败!', description: '上传文件失败!',
}); });
if (props.multiple) { if (props.multiple) {
emit('upload', fileList.value, props.zIndex); emit('upload', fileList.value, props.zIndex);
} else { } else {
uploadRef.value!.clear(); uploadRef.value?.clear();
emit('upload', '', props.zIndex); emit('upload', '', props.zIndex);
} }
options.onError(error as any); options.onError(error as any);
@ -180,18 +190,131 @@ import { useNotification } from 'naive-ui'
loading.value = false; loading.value = false;
} }
}; };
const handleUploadChange= (data: { fileList: UploadFileInfo[] })=> {
handleHttpUpload(data) /**
}; * 阿里云OSS上传
* @param options 参数
*/
const handleHttpUploads = async (options: UploadRequestOptions) => {
const configData = await getOssConfig();
let date = new Date();
let year = date.getFullYear();
let month: string | number = date.getMonth() + 1;
month = month < 10 ? '0' + month : month;
let day: string | number = date.getDate();
day = day < 10 ? '0' + day : day;
let h: string | number = date.getHours();
h = h < 10 ? '0' + h : h;
let minute: string | number = date.getMinutes();
minute = minute < 10 ? '0' + minute : minute;
let second: string | number = date.getSeconds();
second = second < 10 ? '0' + second : second;
let time = h + '' + minute + '' + second;
let fileName = time + '-' + options.file.name;
fileName = fileName.replace(/[\+\_\,\!\|\~\`\(\)\#\$\%\^\&\*\{\}\:\;\"\<\>\?]/g, '');
let filePath = props.name + '/' + year + '/' + month + '/' + day + '/' + fileName;
loading.value = true;
try {
//
const headers = {
'Access-Control-Allow-Origin': '*',
};
const client = new OSS({
// yourRegionBucket1yourRegionoss-cn-hangzhou
endpoint: configData.oss_endpoint,
// STS访AccessKey IDAccessKey Secret
secure: true,
region: configData.oss_region,
accessKeyId: configData.oss_accessKeyId,
accessKeySecret: configData.oss_accessKeySecret,
// Bucket
bucket: configData.oss_bucketName,
timeout: 600000,
});
const res = await client.multipartUpload(filePath, options.file.file, {
headers: headers,
//
progress: (p, cpt, res) => {
progress.value = parseFloat(parseFloat(p * 100).toFixed(2));
},
//
parallel: 4,
// 1 MB100 KB
partSize: 1024 * 1024,
// headers,
mime: options.file.type,
});
//
const fileUrl = configData.oss_domain + res.name;
if (props.multiple) {
let list = JSON.parse(JSON.stringify(fileList.value));
if (editIndex !== '') {
list.splice(editIndex, 1, {
url: fileUrl,
name: options.file.name,
filePath: fileUrl,
fileName: options.file.name,
});
editIndex = '';
} else {
list.push({
url: fileUrl,
name: options.file.name,
filePath: fileUrl,
fileName: options.file.name,
});
}
emit('upload', list, props.zIndex);
} else {
emit('upload', fileUrl, options.file.name, props.zIndex);
}
} catch (error) {
notification.error({
message: '温馨提示',
description: '上传文件失败!',
});
if (props.multiple) {
emit('upload', props.fileList, props.zIndex);
} else {
uploadRef.value!.clearFiles();
emit('upload', '', props.zIndex);
}
} finally {
progress.value = 0;
loading.value = false;
}
};
/**
* 执行文件上传
* @param data 参数
*/
const handleUploadChange = (data: { fileList: UploadFileInfo[] }) => {
handleHttpUpload(data);
};
/**
* 文件预览
* @param index 参数
*/
const onPreview = (index: any) => { const onPreview = (index: any) => {
window.open(fileList.value[index].filePath); window.open(fileList.value[index].filePath);
}; };
/**
* 执行编辑
* @param index 参数
*/
const handleEdit = (index: any) => { const handleEdit = (index: any) => {
editIndex = index; editIndex = index;
const dom = document.querySelector(`#${uuid.value} .n-upload-file-input`); const dom = document.querySelector(`#${uuid.value} .n-upload-file-input`);
dom && dom.dispatchEvent(new MouseEvent('click')); dom && dom.dispatchEvent(new MouseEvent('click'));
}; };
/**
* 执行删除
* @param index 参数
*/
const handleRemove = (index: any) => { const handleRemove = (index: any) => {
editIndex = index; editIndex = index;
if (props.multiple) { if (props.multiple) {
@ -201,18 +324,22 @@ const handleUploadChange= (data: { fileList: UploadFileInfo[] })=> {
props.zIndex, props.zIndex,
); );
} else { } else {
uploadRef.value!.clear(); uploadRef.value?.clear();
emit('upload', '', props.zIndex); emit('upload', '', props.zIndex);
} }
}; };
/**
* 最大上传张数限制
*/
const onExceed = () => { const onExceed = () => {
if (props.limit) { if (props.limit && fileList.value.length >= props.limit) {
notification.warning({ notification.warning({
message: '温馨提示', message: '温馨提示',
duration:2000, duration: 2000,
description: `最多支持上传${props.limit}`, description: `最多支持上传${props.limit}`,
}); });
return false;
} }
}; };
@ -221,12 +348,12 @@ const handleUploadChange= (data: { fileList: UploadFileInfo[] })=> {
* @param rawFile 选择的文件 * @param rawFile 选择的文件
* */ * */
const beforeUpload = (rawFile) => { const beforeUpload = (rawFile) => {
console.log(rawFile) console.log(rawFile);
const imgSize = rawFile.file.file.size / 1024 / 1024 < props.fileSize; const imgSize = rawFile.file.file.size / 1024 / 1024 < props.fileSize;
if (!imgSize) { if (!imgSize) {
notification.warning({ notification.warning({
message: '温馨提示', message: '温馨提示',
duration:2000, duration: 2000,
description: `上传文件大小不能超过 ${props.fileSize}M`, description: `上传文件大小不能超过 ${props.fileSize}M`,
}); });
return false; return false;
@ -239,7 +366,7 @@ const handleUploadChange= (data: { fileList: UploadFileInfo[] })=> {
if (fileType.indexOf(substrName) == -1) { if (fileType.indexOf(substrName) == -1) {
notification.warning({ notification.warning({
message: '温馨提示', message: '温馨提示',
duration:2000, duration: 2000,
description: '上传文件不符合所需的格式!', description: '上传文件不符合所需的格式!',
}); });
return false; return false;
@ -251,27 +378,64 @@ const handleUploadChange= (data: { fileList: UploadFileInfo[] })=> {
<style scoped lang="less"> <style scoped lang="less">
.upload-box { .upload-box {
position: relative; position: relative;
display: flex;
flex-wrap: wrap;
> div {
margin-right: 10px;
margin-bottom: 10px;
position: relative;
&.items { .img-box {
width: v-bind(width); display: flex;
height: v-bind(height); flex-wrap: wrap;
border: 1px dashed #d9d9d9; > div {
border-radius: 4px; margin-right: 10px;
padding: 5px; margin-bottom: 10px;
position: relative;
&.items {
width: v-bind(width);
height: v-bind(height);
border: 1px dashed #d9d9d9;
border-radius: 4px;
padding: 5px;
}
&:hover {
.upload-handle {
opacity: 1;
}
}
}
.upload-image {
width: 100%;
height: 100%;
object-fit: contain;
} }
&:hover { .upload-handle {
.upload-handle { position: absolute;
opacity: 1; top: 0;
right: 0;
box-sizing: border-box;
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
cursor: pointer;
background: rgb(0 0 0 / 60%);
opacity: 0;
.handle-icon {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 0 6%;
color: aliceblue;
span {
font-size: 85%;
line-height: 85%;
}
} }
} }
} }
:deep(.n-upload) { :deep(.n-upload) {
position: relative; position: relative;
display: flex; display: flex;
@ -281,48 +445,20 @@ const handleUploadChange= (data: { fileList: UploadFileInfo[] })=> {
height: v-bind(height); height: v-bind(height);
overflow: hidden; overflow: hidden;
border-radius: 4px; border-radius: 4px;
border:1px dashed #d9d9d9; border: 1px dashed #d9d9d9;
cursor: pointer; cursor: pointer;
.n-upload-trigger { .n-upload-trigger {
width:100%; width: 100%;
height: 100%; height: 100%;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
} }
} }
.upload-image { .n-upload__tip {
width: 100%; line-height: 18px;
height: 100%; font-size: 12px;
object-fit: contain; margin-top: 7px;
}
.upload-handle {
position: absolute;
top: 0;
right: 0;
box-sizing: border-box;
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
cursor: pointer;
background: rgb(0 0 0 / 60%);
opacity: 0;
.handle-icon {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 0 6%;
color: aliceblue;
span {
font-size: 85%;
line-height: 85%;
}
}
} }
} }
</style> </style>

View File

@ -1,30 +1,47 @@
<template> <template>
<div :class="isBtn?'file-upload-box2':'file-upload-box'"> <div :class="isBtn ? 'file-upload-box2' : 'file-upload-box'">
<n-upload action="#" :id="uuid" class="upload-demo my-upload-file" <n-upload
:class="fileList.length > 0 && !loading ? 'success-file' : ''" :multiple="multiple" ref="uploadRef" directory-dnd action="#"
:disabled="loading ? true : self_disabled" v-model:file-list="fileList" :id="uuid"
@change="handleUploadChange" @remove="handleRemove" @before-upload="beforeUpload" :show-file-list="showFileList" class="upload-demo my-upload-file"
:max="limit" > :class="fileList.length > 0 && !loading ? 'success-file' : ''"
:multiple="multiple"
ref="uploadRef"
directory-dnd
:disabled="loading ? true : self_disabled"
v-model:file-list="fileList"
@change="handleUploadChange"
@remove="handleRemove"
@before-upload="beforeUpload"
:show-file-list="showFileList"
:max="limit"
>
<template v-if="isBtn"> <template v-if="isBtn">
<n-tooltip v-if="isBtn && btnTip" class="box-item" effect="dark" :content="btnTip" placement="top"> <n-tooltip
v-if="isBtn && btnTip"
class="box-item"
effect="dark"
:content="btnTip"
placement="top"
>
<n-button icon="Upload" type="primary">点击上传</n-button> <n-button icon="Upload" type="primary">点击上传</n-button>
</n-tooltip> </n-tooltip>
<n-button v-else icon="Upload" type="primary">点击上传</n-button> <n-button v-else icon="Upload" type="primary">点击上传</n-button>
</template> </template>
<template v-else> <template v-else>
<n-upload-dragger> <n-upload-dragger>
<div> <div>
<n-icon size="40" color="#67c23a" v-if="fileList.length > 0 && !loading"> <n-icon size="40" color="#67c23a" v-if="fileList.length > 0 && !loading">
<FileDoneOutlined/> <FileDoneOutlined />
</n-icon> </n-icon>
<n-icon size="40" v-else> <n-icon size="40" v-else>
<CloudUploadOutlined/> <CloudUploadOutlined />
</n-icon> </n-icon>
</div> </div>
<div v-if="!self_disabled">{{ <div v-if="!self_disabled">{{
loading ? '上传中' : fileList.length > 0 ? '上传成功' : '点击或将文件拖拽到这里上传' loading ? '上传中' : fileList.length > 0 ? '上传成功' : '点击或将文件拖拽到这里上传'
}}</div> }}</div>
</n-upload-dragger> </n-upload-dragger>
</template> </template>
</n-upload> </n-upload>
<div v-if="!isBtn" class="n-upload__tip"> <div v-if="!isBtn" class="n-upload__tip">
@ -35,235 +52,329 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { computed, ref } from 'vue'; import { computed, ref } from 'vue';
import { import {
CloudUploadOutlined, CloudUploadOutlined,
FileDoneOutlined, FileDoneOutlined,
UploadOutlined, UploadOutlined,
PlusOutlined, PlusOutlined,
EditOutlined, EditOutlined,
DeleteOutlined, DeleteOutlined,
ZoomInOutlined, ZoomInOutlined,
} from '@vicons/antd'; } from '@vicons/antd';
import { useNotification } from 'naive-ui' import { useNotification } from 'naive-ui';
import type { UploadFileInfo } from 'naive-ui' import type { UploadFileInfo } from 'naive-ui';
import { generateUUID } from '@/utils/auth'; import { generateUUID } from '@/utils/auth';
import OSS from 'ali-oss';
const uploadRef = ref();
import { upload, getOssConfig } from '@/api/common';
const uploadRef = ref(); /**
import { upload } from '@/api/common'; * 接受父组件参数
*/
const props = defineProps({
zIndex: {
default: -1,
},
width: {
default: '220px',
},
height: {
default: '120px',
},
multiple: {
type: Boolean,
default: false,
},
isBtn: {
type: Boolean,
default: false,
},
showFileList: {
type: Boolean,
default: true,
},
btnTip: {
type: String,
default: '',
},
limit: {
type: Number,
default: undefined,
},
fileLists: {
type: Array,
required: true,
default: [],
},
disabled: {
default: false,
},
fileSize: {
default: 200,
},
fileType: {
default: '',
},
name: {
default: '',
},
autoUpload: {
default: true,
},
});
// // id
const props = defineProps({ const uuid = ref('id-' + generateUUID());
zIndex: {
default: -1,
},
width: {
default: '220px',
},
height: {
default: '120px',
},
multiple: {
type: Boolean,
default: false,
},
isBtn: {
type: Boolean,
default: false,
},
showFileList: {
type: Boolean,
default: true,
},
btnTip: {
type: String,
default: '',
},
limit: {
type: Number,
default: undefined,
},
fileLists: {
type: Array,
required: true,
default: [],
},
disabled: {
default: false,
},
fileSize: {
default: 200,
},
orderNo: {
default: '',
},
fileType: {
default: '',
},
name: {
default: '',
},
autoUpload: {
default: true,
},
});
// id const delFlag = ref(false);
const uuid = ref('id-' + generateUUID());
const delFlag= ref(false) const fileList = computed({
get: () => {
props.fileLists.map((item) => (item.status = 'finished'));
return props.fileLists;
},
set: (val) => {
emit('update:modelValue', fileList.value);
},
});
const fileList = computed({ const notification = useNotification();
get: () => {
props.fileLists.map(item=>item.status='finished')
return props.fileLists;
},
set: (val) => {
emit('update:modelValue', fileList.value);
},
});
const notification = useNotification() //
const self_disabled = computed(() => {
return props.disabled;
});
// const emit = defineEmits(['upload']);
const self_disabled = computed(() => {
return props.disabled;
});
const emit = defineEmits(['upload']); const loading = ref(false);
const loading = ref(false); /**
const handleHttpUpload = async (options) => { * 接口上传
if (!props.autoUpload) { * @param options 参数
emit('upload', options); */
return; const handleHttpUpload = async (options) => {
} if (!props.autoUpload) {
loading.value = true; emit('upload', options);
try { return;
const formData = new FormData();
formData.append('file', options.file.file);
formData.append('name', props.name);
const res = await upload(formData);
if (props.multiple) {
let list = JSON.parse(JSON.stringify(fileList.value));
list.push({
url: res.fileUrl,
name: res.originalName,
filePath: res.fileUrl,
fileName: res.originalName,
status:'finished'
});
emit('upload', list, props.zIndex);
} else {
emit('upload', res.fileUrl, res.originalName, props.zIndex);
} }
} catch (error) { loading.value = true;
notification.error({ try {
message: '温馨提示', const formData = new FormData();
duration:2000, formData.append('file', options.file.file);
description: '上传文件失败!', formData.append('name', props.name);
}); const res = await upload(formData);
if (props.multiple) {
let list = JSON.parse(JSON.stringify(fileList.value));
list.push({
url: res.fileUrl,
name: res.originalName,
filePath: res.fileUrl,
fileName: res.originalName,
status: 'finished',
});
emit('upload', list, props.zIndex);
} else {
emit('upload', res.fileUrl, res.originalName, props.zIndex);
}
} catch (error) {
notification.error({
message: '温馨提示',
duration: 2000,
description: '上传文件失败!',
});
if (props.multiple) {
emit('upload', fileList.value, props.zIndex);
} else {
uploadRef.value?.clear();
emit('upload', '', '', props.zIndex);
}
} finally {
loading.value = false;
}
};
/**
* 阿里云OSS上传
* @param options 参数
*/
const handleHttpUploads = async (options: UploadRequestOptions) => {
console.log(options);
if (!props.autoUpload) {
emit('upload', options);
return;
}
const configData = await getOssConfig();
let date = new Date();
let year = date.getFullYear();
let month: string | number = date.getMonth() + 1;
month = month < 10 ? '0' + month : month;
let day: string | number = date.getDate();
day = day < 10 ? '0' + day : day;
let h: string | number = date.getHours();
h = h < 10 ? '0' + h : h;
let minute: string | number = date.getMinutes();
minute = minute < 10 ? '0' + minute : minute;
let second: string | number = date.getSeconds();
second = second < 10 ? '0' + second : second;
let time = h + '' + minute + '' + second;
let name =
props.name + '/' + year + '/' + month + '/' + day + '/' + time + '-' + options.file.name;
loading.value = true;
try {
const headers = {
'Access-Control-Allow-Origin': '*',
};
const client = new OSS({
// yourRegionBucket1yourRegionoss-cn-hangzhou
endpoint: configData.oss_endpoint,
// STS访AccessKey IDAccessKey Secret
secure: true,
region: configData.oss_region,
accessKeyId: configData.oss_accessKeyId,
accessKeySecret: configData.oss_accessKeySecret,
// Bucket
bucket: configData.oss_bucketName,
timeout: 600000,
});
const res = await client.multipartUpload(name, options.file.file, {
headers: headers,
//
parallel: 4,
// 1 MB100 KB
partSize: 1024 * 1024,
// headers,
mime: options.file.type,
});
//
const fileUrl = configData.oss_domain + res.name;
if (props.multiple) {
let list = JSON.parse(JSON.stringify(fileList.value));
list.push({
url: fileUrl,
name: options.file.name,
filePath: fileUrl,
fileName: options.file.name,
});
emit('upload', list, props.zIndex);
} else {
emit('upload', fileUrl, options.file.name, props.zIndex);
}
} catch (error) {
notification.error({
message: '温馨提示',
duration: 2000,
description: '上传文件失败!',
});
if (props.multiple) {
emit('upload', fileList.value, props.zIndex);
} else {
uploadRef.value?.clear();
emit('upload', '', '', props.zIndex);
}
} finally {
loading.value = false;
}
};
/**
* 执行文件上传
* @param data 参数
*/
const handleUploadChange = (data: { fileList: UploadFileInfo[] }) => {
if (!delFlag.value) {
handleHttpUpload(data);
}
};
/**
* 执行删除
* @param file 参数
*/
const handleRemove = (file: any) => {
delFlag.value = true;
if (props.multiple) { if (props.multiple) {
emit('upload', fileList.value, props.zIndex); emit(
'upload',
fileList.value.filter((f) => !(f.url === file.file.url)),
props.zIndex,
);
} else { } else {
uploadRef.value!.clear(); uploadRef.value?.clear();
emit('upload', '', '', props.zIndex); emit('upload', '', '', props.zIndex);
} }
options.onError(error as any); };
} finally {
loading.value = false;
}
};
const handleUploadChange= (data: { fileList: UploadFileInfo[] })=> {
console.log(data)
if(!delFlag.value) {
handleHttpUpload(data)
}
};
const handleRemove = (file: any) => { /**
delFlag.value = true * @description 文件上传之前判断
if (props.multiple) { * @param rawFile 选择的文件
emit( * */
'upload', const beforeUpload = (rawFile) => {
fileList.value.filter((f) => !(f.url === file.file.url)), const imgSize = rawFile.file.file.size / 1024 / 1024 < props.fileSize;
props.zIndex, if (!imgSize) {
);
} else {
uploadRef.value!.clear();
emit('upload', '', '', props.zIndex);
}
};
/**
* @description 文件上传之前判断
* @param rawFile 选择的文件
* */
const beforeUpload = (rawFile) => {
const imgSize = rawFile.file.file.size / 1024 / 1024 < props.fileSize;
if (!imgSize) {
notification.warning({
message: '温馨提示',
duration:2000,
description: `上传文件大小不能超过 ${props.fileSize}M`,
});
return false;
}
if (props.fileType) {
let fileType = props.fileType.replace(/\s/g, '');
fileType.split('.').join('|');
let fileIndex = rawFile.file.file.name.lastIndexOf('.');
let substrName = rawFile.file.file.name.substr(fileIndex);
if (fileType.indexOf(substrName) == -1) {
notification.warning({ notification.warning({
message: '温馨提示', message: '温馨提示',
duration:2000, duration: 2000,
description: '上传文件不符合所需的格式!', description: `上传文件大小不能超过 ${props.fileSize}M`,
}); });
return false; return false;
} }
} if (props.fileType) {
return true; let fileType = props.fileType.replace(/\s/g, '');
}; fileType.split('.').join('|');
</script> let fileIndex = rawFile.file.file.name.lastIndexOf('.');
<style lang="less" scoped> let substrName = rawFile.file.file.name.substr(fileIndex);
.file-upload-box { if (fileType.indexOf(substrName) == -1) {
flex:1; notification.warning({
:deep { message: '温馨提示',
.n-upload { duration: 2000,
>div.n-upload-trigger { description: '上传文件不符合所需的格式!',
width: v-bind(width); });
height: v-bind(height); return false;
}
}
return true;
};
</script>
<style lang="less" scoped>
.file-upload-box {
flex: 1;
:deep {
.n-upload {
> div.n-upload-trigger {
width: v-bind(width);
height: v-bind(height);
}
} }
} }
}
.n-upload__tip { .n-upload__tip {
line-height: 18px; line-height: 18px;
font-size: 12px; font-size: 12px;
margin-top: 12px; margin-top: 12px;
} }
} }
// .success-file.n-upload.n-upload-drag { // .success-file.n-upload.n-upload-drag {
// border-width: 3px; // border-width: 3px;
// border-color: #67c23a !important; // border-color: #67c23a !important;
// } // }
// .file-upload-box { // .file-upload-box {
// .my-upload-file.n-upload.n-upload-drag { // .my-upload-file.n-upload.n-upload-drag {
// height: 160px !important; // height: 160px !important;
// .n-upload { // .n-upload {
// display: flex; // display: flex;
// flex-direction: column; // flex-direction: column;
// align-items: center; // align-items: center;
// justify-content: center; // justify-content: center;
// } // }
// } // }
// .n-upload__tip { // .n-upload__tip {
// line-height: 18px; // line-height: 18px;
// font-size: 12px; // font-size: 12px;
// margin-top: 7px; // margin-top: 7px;
// } // }
// } // }
</style> </style>

View File

@ -0,0 +1,180 @@
<template>
<div></div>
</template>
<script setup lang="ts" name="global-websocket">
import { reactive, ref, computed, onMounted, onUnmounted } from 'vue';
import { useUserStore } from '@/store/modules/user';
const emit = defineEmits(['rollback']);
/**
* 定义接收的参数
*/
const props = defineProps({
uri: {
type: String,
},
});
/**
* 定义Socket状态
*/
const state = reactive({
webSocket: ref(), // webSocket
lockReconnect: false, //
maxReconnect: 6, // -1
reconnectTime: 0, //
heartbeat: {
interval: 30 * 1000, //
timeout: 10 * 1000, //
pingTimeoutObj: ref(), //
pongTimeoutObj: ref(), //
pingMessage: JSON.stringify({ type: 'ping' }), //
},
});
/**
* 获取Token令牌
*/
const token = computed(() => {
return useUserStore().getToken;
});
const tenant = computed(() => {
return Session.getTenant();
});
/**
* 钩子函数
*/
onMounted(() => {
initWebSocket();
});
onUnmounted(() => {
state.webSocket.close();
clearTimeoutObj(state.heartbeat);
});
/**
* 初始化WebSocket对象
*/
const initWebSocket = () => {
// ws
let host = window.location.host;
let wsUri = `${location.protocol === 'https:' ? 'wss' : 'ws'}://${host}${props.uri}`;
//
state.webSocket = new WebSocket(wsUri);
//
state.webSocket.onopen = onOpen;
//
state.webSocket.onerror = onError;
//
state.webSocket.onmessage = onMessage;
//
state.webSocket.onclose = onClose;
};
/**
* 重连机制
*/
const reconnect = () => {
if (!token.value) {
return;
}
if (
state.lockReconnect ||
(state.maxReconnect !== -1 && state.reconnectTime > state.maxReconnect)
) {
return;
}
state.lockReconnect = true;
setTimeout(() => {
state.reconnectTime++;
//
initWebSocket();
state.lockReconnect = false;
}, 5000);
};
/**
* 清空定时器
*/
const clearTimeoutObj = (heartbeat: any) => {
heartbeat.pingTimeoutObj && clearTimeout(heartbeat.pingTimeoutObj);
heartbeat.pongTimeoutObj && clearTimeout(heartbeat.pongTimeoutObj);
};
/**
* 开启心跳
*/
const startHeartbeat = () => {
const webSocket = state.webSocket;
const heartbeat = state.heartbeat;
//
clearTimeoutObj(heartbeat);
//
heartbeat.pingTimeoutObj = setTimeout(() => {
//
if (webSocket.readyState === 1) {
//
webSocket.send(heartbeat.pingMessage);
//
heartbeat.pongTimeoutObj = setTimeout(() => {
webSocket.close();
}, heartbeat.timeout);
} else {
//
reconnect();
}
}, heartbeat.interval);
};
/**
* 连接成功事件
*/
const onOpen = () => {
//
startHeartbeat();
state.reconnectTime = 0;
};
/**
* 连接失败事件
* @param e
*/
const onError = () => {
//
reconnect();
};
/**
* 连接关闭事件
* @param e
*/
const onClose = () => {
//
reconnect();
};
/**
* 接收服务器推送的信息
* @param msgEvent 消息事件
*/
const onMessage = (msgEvent: any) => {
//
startHeartbeat();
// if (msgEvent.data.indexOf('pong') > 0) {
// return;
// }
// let text =''
// try{
// text = JSON.parse(msgEvent.data);
// }catch(e){
// return
// }
emit('rollback', msgEvent.data);
};
</script>

View File

@ -71,18 +71,22 @@
</n-icon> </n-icon>
</div> </div>
</template> </template>
<!-- 全局WebSocket通讯组件 -->
<global-websocket :uri="'/api/websocket/' + userInfo.id" @rollback="rollback" />
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { ref, unref, computed, onMounted, watch, provide } from 'vue'; import { ref, unref, computed, onMounted, watch, provide, defineAsyncComponent, h } from 'vue';
import { Logo } from './components/Logo'; import { Logo } from './components/Logo';
import { TabsView } from './components/TagsView'; import { TabsView } from './components/TagsView';
import { MainView } from './components/Main'; import { MainView } from './components/Main';
import { AsideMenu } from './components/Menu'; import { AsideMenu } from './components/Menu';
import { PageHeader } from './components/Header'; import { PageHeader } from './components/Header';
import { PageFooter } from './components/Footer'; import { PageFooter } from './components/Footer';
import { useUserStore } from '@/store/modules/user';
import { useProjectSetting } from '@/hooks/setting/useProjectSetting'; import { useProjectSetting } from '@/hooks/setting/useProjectSetting';
import { useDesignSetting } from '@/hooks/setting/useDesignSetting'; import { useDesignSetting } from '@/hooks/setting/useDesignSetting';
import { useNotification } from 'naive-ui';
import { useRoute } from 'vue-router'; import { useRoute } from 'vue-router';
import { useProjectSettingStore } from '@/store/modules/projectSetting'; import { useProjectSettingStore } from '@/store/modules/projectSetting';
import ProjectSetting from './components/Header/ProjectSetting.vue'; import ProjectSetting from './components/Header/ProjectSetting.vue';
@ -90,7 +94,12 @@
import { SettingOutlined } from '@vicons/antd'; import { SettingOutlined } from '@vicons/antd';
import { useDesignSettingStore } from '@/store/modules/designSetting'; import { useDesignSettingStore } from '@/store/modules/designSetting';
/**
* 定义参数
*/
const GlobalWebsocket = defineAsyncComponent(() => import('@/components/Websocket/index.vue'));
const { getDarkTheme } = useDesignSetting(); const { getDarkTheme } = useDesignSetting();
const notification = useNotification();
const { const {
getNavMode, getNavMode,
getNavTheme, getNavTheme,
@ -99,22 +108,23 @@
getMultiTabsSetting, getMultiTabsSetting,
getIsProjectSetting, getIsProjectSetting,
} = useProjectSetting(); } = useProjectSetting();
const settingStore = useProjectSettingStore(); const settingStore = useProjectSettingStore();
const designStore = useDesignSettingStore(); const designStore = useDesignSettingStore();
const userStore = useUserStore();
const userInfo: object = userStore.getUserInfo || {};
const navMode = getNavMode; const navMode = getNavMode;
const drawerSetting = ref(); const drawerSetting = ref();
const collapsed = ref<boolean>(false); const collapsed = ref<boolean>(false);
const adminBodyRef = ref<MaybeElement>(); const adminBodyRef = ref<MaybeElement>();
const { isFullscreen, toggle } = useFullscreen(adminBodyRef); const { isFullscreen, toggle } = useFullscreen(adminBodyRef);
provide('isPageFullScreen', isFullscreen); provide('isPageFullScreen', isFullscreen);
provide('collapsed', collapsed); provide('collapsed', collapsed);
provide('openSetting', openSetting); provide('openSetting', openSetting);
/**
* 侦听器
*/
watch( watch(
() => collapsed.value, () => collapsed.value,
(to) => { (to) => {
@ -207,6 +217,21 @@
} }
}; };
/**
* 消息通知回调
* @param msg 消息
*/
const rollback = (msg) => {
notification.info({
title: '通知',
content: () => h('div', msg),
duration: 5000,
});
};
/**
* 钩子函数
*/
onMounted(() => { onMounted(() => {
window.addEventListener('resize', watchWidth); window.addEventListener('resize', watchWidth);
}); });

View File

@ -1,99 +0,0 @@
<template>
<div>
<div class="n-layout-page-header">
<n-card :bordered="false" title="关于">
{{ name }} 是一个基于 vue3vite2TypeScript
的中后台解决方案它可以帮助你快速搭建企业级中后台项目相信不管是从新技术使用还是其他方面都能帮助到你持续更新中
</n-card>
</div>
<n-card
:bordered="false"
title="项目信息"
class="mt-3 proCard"
size="small"
:segmented="{ content: true }"
>
<n-descriptions bordered label-placement="left" class="py-2">
<n-descriptions-item label="版本">
<n-tag type="info"> {{ version }} </n-tag>
</n-descriptions-item>
<n-descriptions-item label="最后编译时间">
<n-tag type="info"> {{ lastBuildTime }} </n-tag>
</n-descriptions-item>
<n-descriptions-item label="文档地址">
<div class="flex items-center">
<a href="https://www.baidu.com" class="py-2" target="_blank">查看文档地址</a>
</div>
</n-descriptions-item>
<n-descriptions-item label="预览地址">
<div class="flex items-center">
<a href="https://www.baidu.com" class="py-2" target="_blank">查看预览地址</a>
</div>
</n-descriptions-item>
<n-descriptions-item label="Github">
<div class="flex items-center">
<a href="https://github.com/" class="py-2" target="_blank">查看Github地址</a>
</div>
</n-descriptions-item>
<n-descriptions-item label="QQ交流群">
<div class="flex items-center">
<a href="https://www.baidu.com" class="py-2" target="_blank"
>点击链接加入群聊</a
>
</div>
</n-descriptions-item>
</n-descriptions>
</n-card>
<n-card
:bordered="false"
title="开发环境依赖"
class="mt-3 proCard"
size="small"
:segmented="{ content: true }"
>
<n-descriptions bordered label-placement="left" class="py-2">
<n-descriptions-item v-for="item in devSchema" :key="item.field" :label="item.field">
{{ item.label }}
</n-descriptions-item>
</n-descriptions>
</n-card>
<n-card
:bordered="false"
title="生产环境依赖"
class="mt-3 proCard"
size="small"
:segmented="{ content: true }"
>
<n-descriptions bordered label-placement="left" class="py-2">
<n-descriptions-item v-for="item in schema" :key="item.field" :label="item.field">
{{ item.label }}
</n-descriptions-item>
</n-descriptions>
</n-card>
</div>
</template>
<script lang="ts" setup>
export interface schemaItem {
field: string;
label: string;
}
const { pkg, lastBuildTime } = __APP_INFO__;
const { dependencies, devDependencies, name, version } = pkg;
const schema: schemaItem[] = [];
const devSchema: schemaItem[] = [];
Object.keys(dependencies).forEach((key) => {
schema.push({ field: key, label: dependencies[key] });
});
Object.keys(devDependencies).forEach((key) => {
devSchema.push({ field: key, label: devDependencies[key] });
});
</script>
<style lang="less" scoped></style>

View File

@ -78,8 +78,9 @@
@upload="fileUploads" @upload="fileUploads"
file-type=".jpeg,.png,.jpg,.gif" file-type=".jpeg,.png,.jpg,.gif"
name="article" name="article"
:fileSize="200" :fileSize="20"
:multiple="true" :multiple="true"
:limit="5"
:fileLists="formData.imagesList" :fileLists="formData.imagesList"
/> />
</n-form-item> </n-form-item>

View File

@ -10,7 +10,7 @@
:bordered="false" :bordered="false"
> >
<template #header-extra> <template #header-extra>
<n-tag type="success"></n-tag> <n-tag type="success" :bordered="false"></n-tag>
</template> </template>
<div class="flex justify-between px-1 py-1"> <div class="flex justify-between px-1 py-1">
<n-skeleton v-if="loading" :width="100" size="medium" /> <n-skeleton v-if="loading" :width="100" size="medium" />
@ -59,7 +59,7 @@
:bordered="false" :bordered="false"
> >
<template #header-extra> <template #header-extra>
<n-tag type="info"></n-tag> <n-tag type="info" :bordered="false"></n-tag>
</template> </template>
<div class="flex justify-between px-1 py-1"> <div class="flex justify-between px-1 py-1">
<n-skeleton v-if="loading" :width="100" size="medium" /> <n-skeleton v-if="loading" :width="100" size="medium" />
@ -102,7 +102,7 @@
:bordered="false" :bordered="false"
> >
<template #header-extra> <template #header-extra>
<n-tag type="warning"></n-tag> <n-tag type="warning" :bordered="false"></n-tag>
</template> </template>
<div class="flex justify-between px-1 py-1"> <div class="flex justify-between px-1 py-1">
<n-skeleton v-if="loading" :width="100" size="medium" /> <n-skeleton v-if="loading" :width="100" size="medium" />
@ -151,7 +151,7 @@
:bordered="false" :bordered="false"
> >
<template #header-extra> <template #header-extra>
<n-tag type="error"></n-tag> <n-tag type="error" :bordered="false"></n-tag>
</template> </template>
<div class="flex justify-between px-1 py-1"> <div class="flex justify-between px-1 py-1">
<n-skeleton v-if="loading" :width="100" size="medium" /> <n-skeleton v-if="loading" :width="100" size="medium" />

View File

@ -107,8 +107,9 @@
const loadDataTable = async (res: any) => { const loadDataTable = async (res: any) => {
selectionData.value = []; selectionData.value = [];
const result = await getMessageProfile({ ...formParams, ...res }); const result = await getMessageProfile({ ...formParams, ...res });
let item = messageTypeList.value.find((item, index) => item.value == activeName.value); messageTypeList.value[0].number = result.systemNum;
item.number = result.number; messageTypeList.value[1].number = result.profileNum;
messageTypeList.value[2].number = result.projectNum;
return result; return result;
}; };
@ -199,15 +200,17 @@
* 执行设置已读 * 执行设置已读
* @param id 参数 * @param id 参数
*/ */
async function handleSetRead(id) { async function handleSetRead(record) {
dialog.warning({ dialog.warning({
title: '提示', title: '提示',
content: '确定标记为已读?', content: '确定标记为已读?',
positiveText: '确定', positiveText: '确定',
negativeText: '取消', negativeText: '取消',
onPositiveClick: async () => { onPositiveClick: async () => {
record.id ? await setRead(record.id) : await setRead(rowKeys.value); record
message.success('删除成功'); ? await setRead({ idList: [record.id] })
: await setRead({ idList: selectionData.value });
message.success('标记成功');
reloadTable(); reloadTable();
}, },
}); });

View File

@ -6,12 +6,6 @@ export const columns = [
width: 50, width: 50,
fixed: 'left', fixed: 'left',
}, },
{
title: 'ID',
key: 'id',
fixed: 'left',
width: 50,
},
{ {
title: '配置名称', title: '配置名称',
key: 'name', key: 'name',
@ -20,11 +14,6 @@ export const columns = [
{ {
title: '配置编码', title: '配置编码',
key: 'code', key: 'code',
width: 100, width: 200,
},
{
title: '排序',
key: 'sort',
width: 100,
}, },
]; ];

View File

@ -1,81 +1,64 @@
<template> <template>
<PageWrapper> <PageWrapper>
<n-grid x-gap="12" cols="1 s:1 m:1 l:24 xl:24 2xl:24" responsive="screen"> <n-grid x-gap="12" cols="1 s:1 m:1 l:24 xl:24 2xl:24" responsive="screen">
<n-grid-item span="7"> <n-grid-item span="8">
<n-card shadow="hover" class="border-0"> <n-card shadow="hover" class="border-0">
<template #header> <n-space>
<n-input
type="text"
v-model:value="params.name"
placeholder="请输入配置名称"
clearable
/>
<n-button type="primary" @click="reloadTable">
<template #icon>
<n-icon>
<SearchOutlined />
</n-icon> </template
>查询
</n-button>
</n-space>
<div style="margin-top: 15px">
<n-space> <n-space>
<n-input <n-button type="primary" @click="handleAdd" v-perm="['sys:config:add']">
type="text" <template #icon>
v-model:value="params.name" <n-icon>
placeholder="请输入配置名称" <PlusOutlined />
clearable </n-icon>
/> </template>
新建
</n-button>
<n-button <n-button
type="primary" type="error"
@click=" @click="handleDelete()"
pager.page = 1; v-perm="['sys:config:delete']"
loadDataTable(); :disabled="!selectionData.length"
"
> >
<template #icon> <template #icon>
<n-icon> <n-icon>
<SearchOutlined /> <DeleteOutlined />
</n-icon> </template </n-icon> </template
>查询 >删除
</n-button> </n-button>
</n-space> </n-space>
<div style="margin-top: 15px"> </div>
<n-space> <BasicTable
<n-button type="primary" @click="handleAdd" v-perm="['sys:config:add']"> :columns="columns"
<template #icon> :actionColumn="actionColumn"
<n-icon> :request="loadDataTable"
<PlusOutlined /> :row-key="(row) => row.id"
</n-icon> ref="tableRef"
</template> :showTableSetting="false"
新建 @update:checked-row-keys="onSelectionChange"
</n-button> :pagination="{ showQuickJumper: false, showSizePicker: false }"
<n-button type="warning" @click="handleEdit" v-perm="['sys:config:edit']"> :row-props="rowProps"
<template #icon> :row-class-name="getRowClassName"
<n-icon> :autoScrollX="true"
<FormOutlined /> >
</n-icon> </template </BasicTable>
>编辑
</n-button>
<n-button type="error" @click="handleDelete()" v-perm="['sys:config:delete']">
<template #icon>
<n-icon>
<DeleteOutlined />
</n-icon> </template
>删除
</n-button>
</n-space>
</div>
</template>
<template #default>
<div :style="{ height: fwbHeight + 'px' }" class="dict-list-box">
<div
v-for="(item, index) in configDataList"
:key="index"
@click="onCheckedRow(item)"
class="dict-item"
:class="item.id == configId ? 'active' : ''"
>
<span class="t1"
>{{ item.name }}<span class="t2">({{ item.code }})</span></span
>
</div>
</div>
<pagination
style="justify-content: flex-end"
class="mt-10 flex"
@change="loadDataTable"
v-model="pager"
/>
</template>
</n-card> </n-card>
</n-grid-item> </n-grid-item>
<n-grid-item span="17"> <n-grid-item span="16">
<n-card shadow="hover" class="mb-4 border-0 proCard"> <n-card shadow="hover" class="mb-4 border-0 proCard">
<configItem :configId="configId" v-if="configItemShow" /> <configItem :configId="configId" v-if="configItemShow" />
</n-card> </n-card>
@ -86,23 +69,27 @@
:configId="configId" :configId="configId"
v-model:visible="editVisible" v-model:visible="editVisible"
ref="createModalRef" ref="createModalRef"
@success="loadDataTable()" @success="reloadTable('noRefresh')"
/> />
</PageWrapper> </PageWrapper>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { ref, nextTick, defineAsyncComponent, onMounted } from 'vue'; import { ref, nextTick, defineAsyncComponent, onMounted, reactive, h } from 'vue';
import { getConfigList, configDelete } from '@/api/data/config'; import { getConfigList, configDelete } from '@/api/data/config';
import { PlusOutlined, FormOutlined, DeleteOutlined, SearchOutlined } from '@vicons/antd'; import { PlusOutlined, FormOutlined, DeleteOutlined, SearchOutlined } from '@vicons/antd';
import editDialog from './edit.vue'; import editDialog from './edit.vue';
import configItem from './configItem.vue'; import configItem from './configItem.vue';
import { TableAction } from '@/components/Table';
import { columns } from './columns';
import { renderIcon } from '@/utils';
import { useMessage, useDialog } from 'naive-ui'; import { useMessage, useDialog } from 'naive-ui';
/** /**
* 定义参数变量 * 定义参数变量
*/ */
const configId = ref(0); const configId = ref(0);
const tableRef = ref();
const createModalRef = ref(); const createModalRef = ref();
const configItemShow = ref(false); const configItemShow = ref(false);
const editVisible = ref(false); const editVisible = ref(false);
@ -115,18 +102,47 @@
const params = ref({ const params = ref({
name: '', name: '',
}); });
const configDataList = ref([]); const selectionData = ref([]);
const actionColumn = reactive({
width: 200,
title: '操作',
align: 'center',
key: 'action',
fixed: 'right',
render(record) {
return h(TableAction as any, {
style: 'button',
actions: [
{
label: '编辑',
icon: renderIcon(FormOutlined),
type: 'warning',
auth: ['sys:config:update'],
onClick: handleEdit.bind(null, record),
},
{
label: '删除',
icon: renderIcon(DeleteOutlined),
type: 'error',
auth: ['sys:config:delete'],
onClick: handleDelete.bind(null, record),
},
],
select: (key) => {
message.info(`您点击了,${key} 按钮`);
},
});
},
});
/** /**
* 定义分页参数 * 刷新配置项值列表
* @param noRefresh 参数
*/ */
const pager = ref({ function reloadTable(noRefresh = '') {
page: 1, tableRef.value.reload(noRefresh ? {} : { pageNo: 1 });
size: 10, }
count: configDataList.value.length,
});
const fwbHeight = document.body.clientHeight - 335;
/** /**
* 执行添加 * 执行添加
*/ */
@ -140,52 +156,58 @@
/** /**
* 执行编辑 * 执行编辑
*/ */
const handleEdit = async () => { const handleEdit = async (row) => {
configId.value = row.id;
editVisible.value = true; editVisible.value = true;
await nextTick(); await nextTick();
createModalRef.value.openModal(); createModalRef.value.openModal();
}; };
/** /**
* 数据行选中事件 * 选项发生变化
* @param row 参数 * @param value 参数
*/ */
function onCheckedRow(row) { function onSelectionChange(value) {
configId.value = row.id; selectionData.value = value;
} }
/** /**
* 加载数据列表 * 加载数据列表
*/ */
const loadDataTable = async () => { const loadDataTable = async (res) => {
let result = await getConfigList({ const result = await getConfigList({ ...params.value, ...res });
...params.value,
pageNo: pager.value.page,
pageSize: pager.value.size,
});
configId.value = result?.records[0]?.id; configId.value = result?.records[0]?.id;
configItemShow.value = true; configItemShow.value = true;
configDataList.value = result.records; return result;
pager.value.count = result.total;
}; };
/** /**
* 执行删除 * 执行删除
*/ */
async function handleDelete() { async function handleDelete(row) {
dialog.warning({ dialog.warning({
title: '提示', title: '提示',
content: '确定要删除?', content: '确定要删除?',
positiveText: '确定', positiveText: '确定',
negativeText: '取消', negativeText: '取消',
onPositiveClick: async () => { onPositiveClick: async () => {
configDelete(configId.value); row ? await configDelete(row.id) : await configBatchDelete(selectionData.value);
message.success('删除成功'); message.success('删除成功');
pager.value.page = 1; reloadTable();
loadDataTable();
}, },
}); });
} }
const getRowClassName = (row) => {
return configId.value === row.id ? 'clickRowStyle' : '';
};
const rowProps = (row) => {
return {
style: 'cursor: pointer;',
onClick: () => {
configId.value = row.id;
},
};
};
/** /**
* 钩子函数 * 钩子函数
@ -243,3 +265,18 @@
} }
} }
</style> </style>
<style lang="less">
.n-data-table-tbody {
.n-data-table-tr.clickRowStyle,
.n-data-table-tr.clickRowStyle {
td {
background-color: #e7eeff !important;
}
&:hover {
td {
background-color: #e7eeff !important;
}
}
}
}
</style>

View File

@ -6,16 +6,14 @@ export const columns = [
width: 50, width: 50,
fixed: 'left', fixed: 'left',
}, },
{
title: 'ID',
key: 'id',
},
{ {
title: '字典名称', title: '字典名称',
key: 'name', key: 'name',
width: 100,
}, },
{ {
title: '字典编码', title: '字典编码',
key: 'code', key: 'code',
width: 200,
}, },
]; ];

View File

@ -1,84 +1,67 @@
<template> <template>
<PageWrapper> <PageWrapper>
<n-grid x-gap="12" cols="1 s:1 m:1 l:24 xl:24 2xl:24" responsive="screen"> <n-grid x-gap="12" cols="1 s:1 m:1 l:24 xl:24 2xl:24" responsive="screen">
<n-grid-item span="7"> <n-grid-item span="8">
<n-card shadow="hover" class="border-0" size="small"> <n-card shadow="hover" class="border-0" size="small">
<template #header> <n-space :size="4">
<n-space :size="4"> <n-input
<n-input type="text"
type="text" v-model:value="params.name"
v-model:value="params.name" placeholder="请输入字典名称"
placeholder="请输入字典名称" clearable
clearable />
/> <n-button type="primary" @click="reloadTable">
<n-button <template #icon>
type="primary" <n-icon>
@click=" <SearchOutlined />
pager.page = 1; </n-icon> </template
loadDataTable(); >查询
" </n-button>
> </n-space>
<template #icon> <div style="margin-top: 15px">
<n-icon> <n-space>
<SearchOutlined />
</n-icon> </template
>查询
</n-button>
<n-button type="primary" @click="dictRefresh" v-perm="['sys:dict:cache']"> <n-button type="primary" @click="dictRefresh" v-perm="['sys:dict:cache']">
<template #icon> <RedoOutlined /> </template>刷新缓存</n-button <template #icon> <RedoOutlined /> </template>刷新缓存</n-button
> >
</n-space> <n-button type="primary" @click="handleAdd" v-perm="['sys:dict:add']">
<div style="margin-top: 15px"> <template #icon>
<n-space> <n-icon>
<n-button type="primary" @click="handleAdd" v-perm="['sys:dict:add']"> <PlusOutlined />
<template #icon> </n-icon>
<n-icon> </template>
<PlusOutlined /> 新建
</n-icon> </n-button>
</template> <n-button
新建 type="error"
</n-button> @click="handleDelete()"
<n-button type="warning" @click="handleEdit" v-perm="['sys:dict:edit']"> v-perm="['sys:dict:delete']"
<template #icon> :disabled="!selectionData.length"
<n-icon>
<FormOutlined />
</n-icon> </template
>编辑
</n-button>
<n-button type="error" @click="handleDelete()" v-perm="['sys:dict:delete']">
<template #icon>
<n-icon>
<DeleteOutlined />
</n-icon> </template
>删除
</n-button>
</n-space>
</div>
</template>
<template #default>
<div :style="{ height: fwbHeight + 'px' }" class="dict-list-box">
<div
v-for="(item, index) in dictDataList"
:key="index"
@click="onCheckedRow(item)"
class="dict-item"
:class="item.id == dictId ? 'active' : ''"
> >
<span class="t1" <template #icon>
>{{ item.name }}<span class="t2">({{ item.code }})</span></span <n-icon>
> <DeleteOutlined />
</div> </n-icon> </template
</div> >删除
<pagination </n-button>
style="justify-content: flex-end" </n-space>
class="mt-10 flex" </div>
@change="loadDataTable" <BasicTable
v-model="pager" :columns="columns"
/> :actionColumn="actionColumn"
</template> :request="loadDataTable"
:row-key="(row) => row.id"
ref="tableRef"
:showTableSetting="false"
@update:checked-row-keys="onSelectionChange"
:pagination="{ showQuickJumper: false, showSizePicker: false }"
:row-props="rowProps"
:row-class-name="getRowClassName"
:autoScrollX="true"
>
</BasicTable>
</n-card> </n-card>
</n-grid-item> </n-grid-item>
<n-grid-item span="17"> <n-grid-item span="16">
<n-card shadow="hover" class="border-0 proCard" size="small"> <n-card shadow="hover" class="border-0 proCard" size="small">
<dictItem :dictId="dictId" v-if="dictItemShow" /> <dictItem :dictId="dictId" v-if="dictItemShow" />
</n-card> </n-card>
@ -89,13 +72,13 @@
:dictId="dictId" :dictId="dictId"
v-model:visible="editVisible" v-model:visible="editVisible"
ref="createModalRef" ref="createModalRef"
@success="loadDataTable()" @success="reloadTable('noRefresh')"
/> />
</PageWrapper> </PageWrapper>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { ref, nextTick, defineAsyncComponent, onMounted } from 'vue'; import { ref, nextTick, defineAsyncComponent, onMounted, reactive, h } from 'vue';
import { getDictList, refreshCache, dictDelete } from '@/api/data/dictionary'; import { getDictList, refreshCache, dictDelete } from '@/api/data/dictionary';
import { import {
PlusOutlined, PlusOutlined,
@ -104,37 +87,71 @@
SearchOutlined, SearchOutlined,
RedoOutlined, RedoOutlined,
} from '@vicons/antd'; } from '@vicons/antd';
import { TableAction } from '@/components/Table';
import { columns } from './columns';
import editDialog from './edit.vue'; import editDialog from './edit.vue';
import dictItem from './dictItem.vue'; import dictItem from './dictItem.vue';
import { renderIcon } from '@/utils';
import { useMessage, useDialog } from 'naive-ui'; import { useMessage, useDialog } from 'naive-ui';
/** /**
* 定义参数变量 * 定义参数变量
*/ */
const dictId = ref(0); const dictId = ref(0);
const tableRef = ref();
const createModalRef = ref(); const createModalRef = ref();
const dictItemShow = ref(false); const dictItemShow = ref(false);
const editVisible = ref(false); const editVisible = ref(false);
const selectionData = ref([]);
const message = useMessage(); const message = useMessage();
const dialog = useDialog(); const dialog = useDialog();
const actionColumn = reactive({
width: 200,
title: '操作',
align: 'center',
key: 'action',
fixed: 'right',
render(record) {
return h(TableAction as any, {
style: 'button',
actions: [
{
label: '编辑',
icon: renderIcon(FormOutlined),
type: 'warning',
auth: ['sys:dict:update'],
onClick: handleEdit.bind(null, record),
},
{
label: '删除',
icon: renderIcon(DeleteOutlined),
type: 'error',
auth: ['sys:dict:delete'],
onClick: handleDelete.bind(null, record),
},
],
select: (key) => {
message.info(`您点击了,${key} 按钮`);
},
});
},
});
/** /**
* 定义查询参数 * 定义查询参数
*/ */
const params = ref({ const params = ref({
name: '', name: '',
}); });
const dictDataList = ref([]);
/** /**
* 定义分页参数 * 刷新配置项值列表
* @param noRefresh 参数
*/ */
const pager = ref({ function reloadTable(noRefresh = '') {
page: 1, tableRef.value.reload(noRefresh ? {} : { pageNo: 1 });
size: 10, }
count: dictDataList.value.length,
});
const fwbHeight = document.body.clientHeight - 335;
/** /**
* 执行添加 * 执行添加
@ -149,7 +166,8 @@
/** /**
* 执行编辑 * 执行编辑
*/ */
const handleEdit = async () => { const handleEdit = async (row) => {
dictId.value = row.id;
editVisible.value = true; editVisible.value = true;
await nextTick(); await nextTick();
createModalRef.value.openModal(); createModalRef.value.openModal();
@ -163,46 +181,50 @@
} }
/** /**
* 数据行选中事件 * 选项发生变化
* @param row 参数 * @param value 参数
*/ */
function onCheckedRow(row) { function onSelectionChange(value) {
dictId.value = row.id; selectionData.value = value;
} }
/** /**
* 加载数据列表 * 加载数据列表
*/ */
const loadDataTable = async () => { const loadDataTable = async (res) => {
let result = await getDictList({ const result = await getDictList({ ...params.value, ...res });
...params.value,
pageNo: pager.value.page,
pageSize: pager.value.size,
});
dictId.value = result?.records[0]?.id; dictId.value = result?.records[0]?.id;
dictItemShow.value = true; dictItemShow.value = true;
dictDataList.value = result.records; return result;
pager.value.count = result.total;
}; };
/** /**
* 执行删除 * 执行删除
*/ */
async function handleDelete() { async function handleDelete(row) {
dialog.warning({ dialog.warning({
title: '提示', title: '提示',
content: '确定要删除?', content: '确定要删除?',
positiveText: '确定', positiveText: '确定',
negativeText: '取消', negativeText: '取消',
onPositiveClick: async () => { onPositiveClick: async () => {
dictDelete(dictId.value); row ? await dictDelete(row.id) : await dictBatchDelete(selectionData.value);
message.success('删除成功'); message.success('删除成功');
pager.value.page = 1; reloadTable();
loadDataTable();
}, },
}); });
} }
const getRowClassName = (row) => {
return dictId.value === row.id ? 'clickRowStyle' : '';
};
const rowProps = (row) => {
return {
style: 'cursor: pointer;',
onClick: () => {
dictId.value = row.id;
},
};
};
/** /**
* 钩子函数 * 钩子函数
*/ */
@ -259,3 +281,18 @@
} }
} }
</style> </style>
<style lang="less">
.n-data-table-tbody {
.n-data-table-tr.clickRowStyle,
.n-data-table-tr.clickRowStyle {
td {
background-color: #e7eeff !important;
}
&:hover {
td {
background-color: #e7eeff !important;
}
}
}
}
</style>

View File

@ -4,12 +4,12 @@
:show-label="false" :show-label="false"
:show-require-mark="false" :show-require-mark="false"
size="large" size="large"
:model="formInline" :model="formData"
:rules="rules" :rules="rules"
class="register-form" class="register-form"
> >
<n-form-item path="username"> <n-form-item path="username">
<n-input v-model:value="formInline.username" placeholder="请输入用户名"> <n-input v-model:value="formData.username" placeholder="请输入用户名">
<template #prefix> <template #prefix>
<n-icon size="18" color="#808695"> <n-icon size="18" color="#808695">
<UserOutlined /> <UserOutlined />
@ -18,7 +18,7 @@
</n-input> </n-input>
</n-form-item> </n-form-item>
<n-form-item path="mobile"> <n-form-item path="mobile">
<n-input v-model:value="formInline.mobile" placeholder="请输入手机号码"> <n-input v-model:value="formData.mobile" placeholder="请输入手机号码">
<template #prefix> <template #prefix>
<n-icon size="18" color="#808695"> <n-icon size="18" color="#808695">
<MobileOutlined /> <MobileOutlined />
@ -27,7 +27,7 @@
</n-input> </n-input>
</n-form-item> </n-form-item>
<n-form-item path="code"> <n-form-item path="code">
<n-input v-model:value.trim="formInline.code" placeholder="验证码"> <n-input v-model:value.trim="formData.code" placeholder="验证码">
<template #prefix> <template #prefix>
<n-icon size="18" color="#808695"> <n-icon size="18" color="#808695">
<SafetyCertificateOutlined /> <SafetyCertificateOutlined />
@ -42,7 +42,7 @@
</n-form-item> </n-form-item>
<n-form-item path="password"> <n-form-item path="password">
<n-input <n-input
v-model:value="formInline.password" v-model:value="formData.password"
type="password" type="password"
show-password-on="mousedown" show-password-on="mousedown"
placeholder="请输入密码" placeholder="请输入密码"
@ -56,7 +56,7 @@
</n-form-item> </n-form-item>
<n-form-item path="retPassword"> <n-form-item path="retPassword">
<n-input <n-input
v-model:value="formInline.retPassword" v-model:value="formData.retPassword"
type="password" type="password"
show-password-on="mousedown" show-password-on="mousedown"
placeholder="请再次输入密码" placeholder="请再次输入密码"
@ -74,7 +74,7 @@
<n-form-item class="default-color" path="agreement"> <n-form-item class="default-color" path="agreement">
<div class="flex items-center justify-between"> <div class="flex items-center justify-between">
<div class="flex-initial"> <div class="flex-initial">
<n-checkbox v-model:checked="formInline.agreement">我同意隐私协议</n-checkbox> <n-checkbox v-model:checked="formData.agreement">我同意隐私协议</n-checkbox>
</div> </div>
</div> </div>
</n-form-item> </n-form-item>
@ -85,6 +85,8 @@
import { reactive, ref } from 'vue'; import { reactive, ref } from 'vue';
import { useMessage } from 'naive-ui'; import { useMessage } from 'naive-ui';
import { rule } from '@/utils/validate'; import { rule } from '@/utils/validate';
import { ResultEnum } from '@/enums/httpEnum';
import { register } from '@/api/system/user';
import { import {
UserOutlined, UserOutlined,
MobileOutlined, MobileOutlined,
@ -100,13 +102,12 @@
const loading = ref(false); const loading = ref(false);
const codeMsg: any = ref('获取验证码'); const codeMsg: any = ref('获取验证码');
const isGetCode = ref(false); const isGetCode = ref(false);
const emit = defineEmits(['backLogin']); const emit = defineEmits(['backLogin']);
/** /**
* 定义表单参数 * 定义表单参数
*/ */
const formInline = reactive({ const formData = reactive({
username: '', username: '',
password: '', password: '',
retPassword: '', retPassword: '',
@ -162,10 +163,21 @@
.validate() .validate()
.then(async () => { .then(async () => {
loading.value = true; loading.value = true;
backLogin();
loading.value = false; try {
const { code, msg } = await register(formData);
if (code == ResultEnum.SUCCESS) {
message.success('注册成功,请登录');
backLogin();
} else {
message.error(msg || '注册失败');
}
} finally {
loading.value = false;
}
}) })
.catch((error) => { .catch((error) => {
console.log(error);
message.error('请填写完整信息'); message.error('请填写完整信息');
}); });
}; };
@ -181,7 +193,7 @@
* 获取验证码 * 获取验证码
*/ */
function getCode() { function getCode() {
if (!formInline.mobile) { if (!formData.mobile) {
formRef.value?.validate( formRef.value?.validate(
(errors) => {}, (errors) => {},
(rule) => { (rule) => {

View File

@ -79,7 +79,9 @@
:multiple="true" :multiple="true"
:fileLists="item.filePath" :fileLists="item.filePath"
:z-index="index" :z-index="index"
/> >
<template #tip>支持扩展名: jpg png jpeg;文件大小不超过200M</template>
</UploadImgs>
</template> </template>
<template v-else-if="item.type == 'file'"> <template v-else-if="item.type == 'file'">
<UploadFile <UploadFile

View File

@ -1,14 +1,5 @@
<template> <template>
<n-modal <n-modal v-model:show="props.visible" preset="dialog" style="width: 450px" @close="dialogClose">
v-model:show="props.visible"
preset="dialog"
style="width: 450px"
@close="dialogClose"
positive-text="确定"
negative-text="取消"
@positive-click="dialogSubmit"
@negative-click="dialogClose"
>
<template #header> <template #header>
{{ dialogTitle }} {{ dialogTitle }}
</template> </template>
@ -17,7 +8,6 @@
:headers="uploadHeaders" :headers="uploadHeaders"
name="file" name="file"
ref="uploadRef" ref="uploadRef"
:default-upload="false"
@change="handleChange" @change="handleChange"
@before-upload="beforeUpload" @before-upload="beforeUpload"
v-model:file-list="fileList" v-model:file-list="fileList"
@ -39,7 +29,7 @@
<script lang="ts" setup> <script lang="ts" setup>
import { getTemplateByCode } from '@/api/system/user'; import { getTemplateByCode } from '@/api/system/user';
import { computed, reactive, ref } from 'vue'; import { computed, reactive, ref, nextTick } from 'vue';
import { CloudUploadOutlined } from '@vicons/antd'; import { CloudUploadOutlined } from '@vicons/antd';
import { useMessage } from 'naive-ui'; import { useMessage } from 'naive-ui';
import { useUserStore } from '@/store/modules/user'; import { useUserStore } from '@/store/modules/user';
@ -83,13 +73,13 @@
/** /**
* 上传文件之前验证 * 上传文件之前验证
*/ */
const beforeUpload = (file) => { const beforeUpload = (rawFile) => {
const isLt2M = file.size / 1024 / 1024 < 200; const isLt2M = rawFile.file.file.size / 1024 / 1024 < 200;
if (!isLt2M) { if (!isLt2M) {
message.warning('大小不能超过200MB!'); message.warning('大小不能超过200MB!');
return false; return false;
} }
if (!/\.(xlsx|xls|XLSX|XLS)$/.test(file.name)) { if (!/\.(xlsx|xls|XLSX|XLS)$/.test(rawFile.file.name)) {
message.warning('请上传.xlsx .xls'); message.warning('请上传.xlsx .xls');
return false; return false;
} }
@ -100,18 +90,19 @@
* 执行上传文件 * 执行上传文件
* @param param0 参数 * @param param0 参数
*/ */
const handleChange = ({ file }) => { const handleChange = async (file) => {
const status = file.status; if (file.file.status === 'finished') {
if (status === 'done') { let data = JSON.parse(file.event.target.response);
let data = file.response;
if (data.code != 0) { if (data.code != 0) {
await nextTick();
fileList.value = [];
message.error(data.msg || '导入失败'); message.error(data.msg || '导入失败');
} else { } else {
message.success('导入成功'); message.success('导入成功');
emit('update:visible', false); emit('update:visible', false);
emit('success'); emit('success');
} }
} else if (status === 'error') { } else if (file.file.status === 'error') {
message.error('导入失败'); message.error('导入失败');
} }
}; };

View File

@ -28,7 +28,7 @@
{{ formData.requestMethod }} {{ formData.requestMethod }}
</n-descriptions-item> </n-descriptions-item>
<n-descriptions-item label="请求状态"> <n-descriptions-item label="请求状态">
<n-tag :color="formData.status ? 'danger' : 'success'">{{ <n-tag :color="formData.status ? 'danger' : 'success'" :bordered="false">{{
formData.status ? '异常' : '正常' formData.status ? '异常' : '正常'
}}</n-tag> }}</n-tag>
</n-descriptions-item> </n-descriptions-item>

View File

@ -17,16 +17,17 @@ export const columns: BasicColumn[] = [
{ {
title: '登录账号', title: '登录账号',
key: 'username', key: 'username',
width: 150, width: 100,
}, },
{ {
title: '用户姓名', title: '用户姓名',
key: 'realname', key: 'realname',
width: 150, width: 100,
}, },
{ {
title: '头像', title: '头像',
key: 'avatar', key: 'avatar',
width: 100,
render(row) { render(row) {
return h(NImage, { return h(NImage, {
width: 48, width: 48,
@ -35,11 +36,10 @@ export const columns: BasicColumn[] = [
fit: 'fill', fit: 'fill',
}); });
}, },
width: 100,
}, },
{ {
title: '性别', title: '性别',
width: 100, width: 80,
key: 'gender', key: 'gender',
render(row) { render(row) {
let typeText = ''; let typeText = '';
@ -78,19 +78,32 @@ export const columns: BasicColumn[] = [
{ {
title: '手机号', title: '手机号',
key: 'mobile', key: 'mobile',
width: 160, width: 120,
}, },
{ {
title: '用户角色', title: '用户角色',
key: 'role', key: 'role',
width: 250,
render(row) { render(row) {
let roleNames = ''; let roleNames = '';
if (row.roles.length > 0) { if (row.roles.length > 0) {
roleNames = row.roles.map((role) => role.name).join(','); roleNames = row.roles.map((role) => role.name).join(',');
} }
return h('span', roleNames || '-'); // return h('span', roleNames || '-');
return h(
NTag,
{
style: {
marginRight: '6px',
},
type: 'info',
bordered: false,
},
{
default: () => roleNames,
},
);
}, },
width: 100,
}, },
{ {
title: '职级', title: '职级',
@ -105,7 +118,7 @@ export const columns: BasicColumn[] = [
{ {
title: '部门', title: '部门',
key: 'deptName', key: 'deptName',
width: 160, width: 100,
}, },
{ {
title: '状态', title: '状态',

View File

@ -353,7 +353,6 @@
* 执行提交表单 * 执行提交表单
*/ */
const handleSubmit = () => { const handleSubmit = () => {
console.log(formData);
formRef.value formRef.value
.validate() .validate()
.then(async () => { .then(async () => {

View File

@ -61,6 +61,14 @@
</template> </template>
导出 导出
</n-button> </n-button>
<n-button type="primary" @click="sendMessage">
<template #icon>
<n-icon>
<CommentOutlined />
</n-icon>
</template>
发送消息
</n-button>
</n-space> </n-space>
</template> </template>
</BasicTable> </BasicTable>
@ -74,6 +82,13 @@
/> />
<!-- 上传文件 --> <!-- 上传文件 -->
<userUpload v-if="importVisible" v-model:visible="importVisible" @success="reloadTable()" /> <userUpload v-if="importVisible" v-model:visible="importVisible" @success="reloadTable()" />
<!-- 发送WebSocket消息 -->
<sendMsgDialog
v-if="sendMsgVisible"
v-model:visible="sendMsgVisible"
:receiveId="receiveId"
ref="sendModalRef"
/>
</div> </div>
</template> </template>
@ -99,8 +114,10 @@
PrinterOutlined, PrinterOutlined,
ToTopOutlined, ToTopOutlined,
FormOutlined, FormOutlined,
CommentOutlined,
} from '@vicons/antd'; } from '@vicons/antd';
import editDialog from './edit.vue'; import editDialog from './edit.vue';
import sendMsgDialog from './sendMsg.vue';
import userUpload from './userUpload.vue'; import userUpload from './userUpload.vue';
import { downloadByData } from '@/utils/file/download'; import { downloadByData } from '@/utils/file/download';
import { schemas } from './querySchemas'; import { schemas } from './querySchemas';
@ -114,7 +131,10 @@
const dialog = useDialog(); const dialog = useDialog();
const basicTableRef = ref(); const basicTableRef = ref();
const createModalRef = ref(); const createModalRef = ref();
const sendModalRef = ref();
const receiveId = ref('');
const editVisible = ref(false); const editVisible = ref(false);
const sendMsgVisible = ref(false);
const userId = ref(0); const userId = ref(0);
const rowKeys = ref([]); const rowKeys = ref([]);
const importVisible = ref(false); const importVisible = ref(false);
@ -245,7 +265,6 @@
* @param id 参数 * @param id 参数
*/ */
const handleResetPassword = (record) => { const handleResetPassword = (record) => {
console.log(rowKeys.value);
dialog.warning({ dialog.warning({
title: '提示', title: '提示',
content: '确定重置密码?', content: '确定重置密码?',
@ -319,6 +338,20 @@
showModal: true, showModal: true,
}); });
}; };
/**
* 发送消息
* 此处写的是Socket消息发送案例实际业务研发时根据实际需求自行接入模板消息
*/
const sendMessage = async () => {
if (rowKeys.value.length == 0) {
message.error('请选择数据');
return;
}
receiveId.value = rowKeys.value.join();
sendMsgVisible.value = true;
await nextTick();
sendModalRef.value.openModal();
};
</script> </script>
<style lang="less" scoped></style> <style lang="less" scoped></style>

View File

@ -0,0 +1,98 @@
<template>
<basicModal
@register="modalRegister"
ref="modalRef"
class="basicModal basicFormModal"
@on-ok="handleSubmit"
@on-close="handleClose"
>
<template #default>
<n-form :model="formData" label-placement="left" label-width="100px" ref="formRef">
<n-form-item
label="消息内容"
path="message"
:rule="{ required: true, message: '请输入消息内容', trigger: 'blur' }"
>
<n-input v-model:value="formData.message" type="textarea" rows="4" />
</n-form-item>
</n-form>
</template>
</basicModal>
</template>
<script lang="ts" setup>
import { sendMsg } from '@/api/system/user';
import { useUserStore } from '@/store/modules/user';
import { onMounted, reactive, ref } from 'vue';
import { useModal } from '@/components/Modal';
import { useMessage } from 'naive-ui';
/**
* 定义参数
*/
const message = useMessage();
const userStore = useUserStore();
const userInfo: object = userStore.getUserInfo || {};
const emit = defineEmits(['update:visible']);
const formRef = ref();
/**
* 定义接收的参数
*/
const props = defineProps({
visible: {
type: Boolean,
required: true,
default: false,
},
receiveId: {
type: String,
default: '',
},
});
/**
* 定义表单参数
*/
const formData = reactive({
message: '',
});
/**
* 定义模态
*/
const [modalRegister, { openModal, setSubLoading }] = useModal({
title: '发送消息',
subBtuText: '确定',
width: 600,
});
/**
* 关闭窗体
*/
const handleClose = () => {
emit('update:visible', false);
};
/**
* 执行提交表单数据
*/
const handleSubmit = async () => {
formRef.value
.validate()
.then(async () => {
await sendMsg({
formId: userInfo.id,
receiveId: props.receiveId,
message: formData.message,
});
setSubLoading(false);
message.success('发送成功');
emit('update:visible', false);
})
.catch((error) => {
setSubLoading(false);
});
};
defineExpose({
openModal,
});
</script>

View File

@ -1,14 +1,5 @@
<template> <template>
<n-modal <n-modal v-model:show="props.visible" preset="dialog" style="width: 450px" @close="dialogClose">
v-model:show="props.visible"
preset="dialog"
style="width: 450px"
@close="dialogClose"
positive-text="确定"
negative-text="取消"
@positive-click="dialogSubmit"
@negative-click="dialogClose"
>
<template #header> <template #header>
{{ dialogTitle }} {{ dialogTitle }}
</template> </template>
@ -17,7 +8,6 @@
:headers="uploadHeaders" :headers="uploadHeaders"
name="file" name="file"
ref="uploadRef" ref="uploadRef"
:default-upload="false"
@change="handleChange" @change="handleChange"
@before-upload="beforeUpload" @before-upload="beforeUpload"
v-model:file-list="fileList" v-model:file-list="fileList"
@ -40,7 +30,7 @@
<script lang="ts" setup> <script lang="ts" setup>
import { getTemplateByCode } from '@/api/system/user'; import { getTemplateByCode } from '@/api/system/user';
import { computed, reactive, ref } from 'vue'; import { computed, reactive, ref, nextTick } from 'vue';
import { CloudUploadOutlined } from '@vicons/antd'; import { CloudUploadOutlined } from '@vicons/antd';
import { useMessage } from 'naive-ui'; import { useMessage } from 'naive-ui';
import { useUserStore } from '@/store/modules/user'; import { useUserStore } from '@/store/modules/user';
@ -84,13 +74,13 @@
/** /**
* 上传文件之前验证 * 上传文件之前验证
*/ */
const beforeUpload = (file) => { const beforeUpload = (rawFile) => {
const isLt2M = file.size / 1024 / 1024 < 200; const isLt2M = rawFile.file.file.size / 1024 / 1024 < 200;
if (!isLt2M) { if (!isLt2M) {
message.warning('大小不能超过200MB!'); message.warning('大小不能超过200MB!');
return false; return false;
} }
if (!/\.(xlsx|xls|XLSX|XLS)$/.test(file.name)) { if (!/\.(xlsx|xls|XLSX|XLS)$/.test(rawFile.file.name)) {
message.warning('请上传.xlsx .xls'); message.warning('请上传.xlsx .xls');
return false; return false;
} }
@ -101,18 +91,19 @@
* 执行上传文件 * 执行上传文件
* @param param0 参数 * @param param0 参数
*/ */
const handleChange = ({ file }) => { const handleChange = async (file) => {
const status = file.status; if (file.file.status === 'finished') {
if (status === 'done') { let data = JSON.parse(file.event.target.response);
let data = file.response;
if (data.code != 0) { if (data.code != 0) {
await nextTick();
fileList.value = [];
message.error(data.msg || '导入失败'); message.error(data.msg || '导入失败');
} else { } else {
message.success('导入成功'); message.success('导入成功');
emit('update:visible', false); emit('update:visible', false);
emit('success'); emit('success');
} }
} else if (status === 'error') { } else if (file.file.status === 'error') {
message.error('导入失败'); message.error('导入失败');
} }
}; };

360
yarn.lock
View File

@ -1348,6 +1348,11 @@ acorn@^8.11.0, acorn@^8.14.0, acorn@^8.4.1, acorn@^8.8.2:
resolved "https://registry.npmmirror.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" resolved "https://registry.npmmirror.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0"
integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==
address@^1.2.2:
version "1.2.2"
resolved "https://registry.npmmirror.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e"
integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==
adler-32@~1.2.0: adler-32@~1.2.0:
version "1.2.0" version "1.2.0"
resolved "https://registry.npmmirror.com/adler-32/-/adler-32-1.2.0.tgz#6a3e6bf0a63900ba15652808cb15c6813d1a5f25" resolved "https://registry.npmmirror.com/adler-32/-/adler-32-1.2.0.tgz#6a3e6bf0a63900ba15652808cb15c6813d1a5f25"
@ -1361,6 +1366,13 @@ adler-32@~1.3.0:
resolved "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz#1dbf0b36dda0012189a32b3679061932df1821e2" resolved "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz#1dbf0b36dda0012189a32b3679061932df1821e2"
integrity sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A== integrity sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==
agentkeepalive@^3.4.1:
version "3.5.3"
resolved "https://registry.npmmirror.com/agentkeepalive/-/agentkeepalive-3.5.3.tgz#c210afce942b4287e2df2fbfe6c0d57eda2ce634"
integrity sha512-yqXL+k5rr8+ZRpOAntkaaRgWgE5o8ESAj5DyRmVTCSoZxXmqemb9Dd7T4i5UzwuERdLAJUy6XzR9zFVuf0kzkw==
dependencies:
humanize-ms "^1.2.1"
aggregate-error@^3.0.0: aggregate-error@^3.0.0:
version "3.1.0" version "3.1.0"
resolved "https://registry.npmmirror.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" resolved "https://registry.npmmirror.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a"
@ -1389,6 +1401,37 @@ ajv@^8.0.1, ajv@^8.11.0:
json-schema-traverse "^1.0.0" json-schema-traverse "^1.0.0"
require-from-string "^2.0.2" require-from-string "^2.0.2"
ali-oss@^6.22.0:
version "6.22.0"
resolved "https://registry.npmmirror.com/ali-oss/-/ali-oss-6.22.0.tgz#084a20b54f2fc0ef607701cb8b2aaf1cfb4019bb"
integrity sha512-X8CHo+wsjCBvDaEvuibFOi3SZxiCBZSRUURrXH0upoVwu3SuW3e+PTVK7xw+uN6EyTcAESqrngrQimhp8iBzsQ==
dependencies:
address "^1.2.2"
agentkeepalive "^3.4.1"
bowser "^1.6.0"
copy-to "^2.0.1"
dateformat "^2.0.0"
debug "^4.3.4"
destroy "^1.0.4"
end-or-error "^1.0.1"
get-ready "^1.0.0"
humanize-ms "^1.2.0"
is-type-of "^1.4.0"
js-base64 "^2.5.2"
jstoxml "^2.0.0"
lodash "^4.17.21"
merge-descriptors "^1.0.1"
mime "^2.4.5"
platform "^1.3.1"
pump "^3.0.0"
qs "^6.4.0"
sdk-base "^2.0.1"
stream-http "2.8.2"
stream-wormhole "^1.0.4"
urllib "^2.44.0"
utility "^1.18.0"
xml2js "^0.6.2"
ansi-colors@^4.1.1: ansi-colors@^4.1.1:
version "4.1.3" version "4.1.3"
resolved "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" resolved "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b"
@ -1430,7 +1473,7 @@ ansi-styles@^6.1.0:
resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5"
integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
any-promise@^1.0.0: any-promise@^1.0.0, any-promise@^1.3.0:
version "1.3.0" version "1.3.0"
resolved "https://registry.npmmirror.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" resolved "https://registry.npmmirror.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==
@ -1619,6 +1662,11 @@ boolbase@^1.0.0:
resolved "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" resolved "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==
bowser@^1.6.0:
version "1.9.4"
resolved "https://registry.npmmirror.com/bowser/-/bowser-1.9.4.tgz#890c58a2813a9d3243704334fa81b96a5c150c9a"
integrity sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ==
brace-expansion@^1.1.7: brace-expansion@^1.1.7:
version "1.1.11" version "1.1.11"
resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
@ -1664,6 +1712,11 @@ buffer@^5.5.0:
base64-js "^1.3.1" base64-js "^1.3.1"
ieee754 "^1.1.13" ieee754 "^1.1.13"
builtin-status-codes@^3.0.0:
version "3.0.0"
resolved "https://registry.npmmirror.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==
cachedir@2.3.0: cachedir@2.3.0:
version "2.3.0" version "2.3.0"
resolved "https://registry.npmmirror.com/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8" resolved "https://registry.npmmirror.com/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8"
@ -2038,6 +2091,11 @@ constantinople@^4.0.1:
"@babel/parser" "^7.6.0" "@babel/parser" "^7.6.0"
"@babel/types" "^7.6.1" "@babel/types" "^7.6.1"
content-type@^1.0.2:
version "1.0.5"
resolved "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918"
integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==
conventional-changelog-angular@^5.0.11: conventional-changelog-angular@^5.0.11:
version "5.0.13" version "5.0.13"
resolved "https://registry.npmmirror.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz#896885d63b914a70d4934b59d2fe7bde1832b28c" resolved "https://registry.npmmirror.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz#896885d63b914a70d4934b59d2fe7bde1832b28c"
@ -2084,11 +2142,21 @@ copy-anything@^2.0.1:
dependencies: dependencies:
is-what "^3.14.1" is-what "^3.14.1"
copy-to@^2.0.1:
version "2.0.1"
resolved "https://registry.npmmirror.com/copy-to/-/copy-to-2.0.1.tgz#2680fbb8068a48d08656b6098092bdafc906f4a5"
integrity sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w==
core-js@^3.38.1: core-js@^3.38.1:
version "3.39.0" version "3.39.0"
resolved "https://registry.npmmirror.com/core-js/-/core-js-3.39.0.tgz#57f7647f4d2d030c32a72ea23a0555b2eaa30f83" resolved "https://registry.npmmirror.com/core-js/-/core-js-3.39.0.tgz#57f7647f4d2d030c32a72ea23a0555b2eaa30f83"
integrity sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g== integrity sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==
core-util-is@^1.0.2, core-util-is@~1.0.0:
version "1.0.3"
resolved "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
cosmiconfig-typescript-loader@^5.0.0: cosmiconfig-typescript-loader@^5.0.0:
version "5.1.0" version "5.1.0"
resolved "https://registry.npmmirror.com/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-5.1.0.tgz#d8d02bff04e63faa2dc794d618168bd764c704be" resolved "https://registry.npmmirror.com/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-5.1.0.tgz#d8d02bff04e63faa2dc794d618168bd764c704be"
@ -2223,6 +2291,11 @@ date-fns@^3.6.0:
resolved "https://registry.npmmirror.com/date-fns/-/date-fns-3.6.0.tgz#f20ca4fe94f8b754951b24240676e8618c0206bf" resolved "https://registry.npmmirror.com/date-fns/-/date-fns-3.6.0.tgz#f20ca4fe94f8b754951b24240676e8618c0206bf"
integrity sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww== integrity sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==
dateformat@^2.0.0:
version "2.2.0"
resolved "https://registry.npmmirror.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062"
integrity sha512-GODcnWq3YGoTnygPfi02ygEiRxqUxpJwuRHjdhJYuxpcZmDq4rjBiXYmbCCzStxo176ixfLT6i4NPwQooRySnw==
debug@2.6.9: debug@2.6.9:
version "2.6.9" version "2.6.9"
resolved "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" resolved "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
@ -2272,6 +2345,13 @@ deep-is@^0.1.3:
resolved "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" resolved "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
default-user-agent@^1.0.0:
version "1.0.0"
resolved "https://registry.npmmirror.com/default-user-agent/-/default-user-agent-1.0.0.tgz#16c46efdcaba3edc45f24f2bd4868b01b7c2adc6"
integrity sha512-bDF7bg6OSNcSwFWPu4zYKpVkJZQYVrAANMYB8bc9Szem1D0yKdm4sa/rOCs2aC9+2GMqQ7KnwtZRvDhmLF0dXw==
dependencies:
os-name "~1.0.3"
defaults@^1.0.3: defaults@^1.0.3:
version "1.0.4" version "1.0.4"
resolved "https://registry.npmmirror.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" resolved "https://registry.npmmirror.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a"
@ -2307,6 +2387,11 @@ delayed-stream@~1.0.0:
resolved "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" resolved "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
destroy@^1.0.4:
version "1.2.0"
resolved "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
detect-file@^1.0.0: detect-file@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.npmmirror.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" resolved "https://registry.npmmirror.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7"
@ -2327,6 +2412,11 @@ diff@^4.0.1:
resolved "https://registry.npmmirror.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" resolved "https://registry.npmmirror.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
digest-header@^1.0.0:
version "1.1.0"
resolved "https://registry.npmmirror.com/digest-header/-/digest-header-1.1.0.tgz#e16ab6cf4545bc4eea878c8c35acd1b89664d800"
integrity sha512-glXVh42vz40yZb9Cq2oMOt70FIoWiv+vxNvdKdU8CwjLad25qHM3trLxhl9bVjdr6WaslIXhWpn0NO8T/67Qjg==
dijkstrajs@^1.0.1: dijkstrajs@^1.0.1:
version "1.0.3" version "1.0.3"
resolved "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz#4c8dbdea1f0f6478bff94d9c49c784d623e4fc23" resolved "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz#4c8dbdea1f0f6478bff94d9c49c784d623e4fc23"
@ -2457,7 +2547,7 @@ echarts@^5.5.1:
tslib "2.3.0" tslib "2.3.0"
zrender "5.6.0" zrender "5.6.0"
ee-first@1.1.1: ee-first@1.1.1, ee-first@~1.1.1:
version "1.1.1" version "1.1.1"
resolved "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" resolved "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
@ -2516,6 +2606,11 @@ end-of-stream@^1.1.0:
dependencies: dependencies:
once "^1.4.0" once "^1.4.0"
end-or-error@^1.0.1:
version "1.0.1"
resolved "https://registry.npmmirror.com/end-or-error/-/end-or-error-1.0.1.tgz#dc7a6210fe78d372fee24a8b4899dbd155414dcb"
integrity sha512-OclLMSug+k2A0JKuf494im25ANRBVW8qsjmwbgX7lQ8P82H21PQ1PWkoYwb9y5yMBS69BPlwtzdIFClo3+7kOQ==
enquirer@^2.3.5, enquirer@^2.3.6: enquirer@^2.3.5, enquirer@^2.3.6:
version "2.4.1" version "2.4.1"
resolved "https://registry.npmmirror.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" resolved "https://registry.npmmirror.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56"
@ -2756,7 +2851,7 @@ escalade@^3.1.1, escalade@^3.2.0:
resolved "https://registry.npmmirror.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" resolved "https://registry.npmmirror.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5"
integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==
escape-html@~1.0.3: escape-html@^1.0.3, escape-html@~1.0.3:
version "1.0.3" version "1.0.3"
resolved "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" resolved "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
@ -3002,6 +3097,13 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2:
dependencies: dependencies:
homedir-polyfill "^1.0.1" homedir-polyfill "^1.0.1"
extend-shallow@^2.0.1:
version "2.0.1"
resolved "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==
dependencies:
is-extendable "^0.1.0"
extend@^3.0.0, extend@^3.0.2: extend@^3.0.0, extend@^3.0.2:
version "3.0.2" version "3.0.2"
resolved "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" resolved "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
@ -3213,6 +3315,16 @@ form-data@^4.0.0:
combined-stream "^1.0.8" combined-stream "^1.0.8"
mime-types "^2.1.12" mime-types "^2.1.12"
formstream@^1.1.0:
version "1.5.1"
resolved "https://registry.npmmirror.com/formstream/-/formstream-1.5.1.tgz#b25f8121aa434cc82e8b36cdd765338b7b8df4de"
integrity sha512-q7ORzFqotpwn3Y/GBK2lK7PjtZZwJHz9QE9Phv8zb5IrL9ftGLyi2zjGURON3voK8TaZ+mqJKERYN4lrHYTkUQ==
dependencies:
destroy "^1.0.4"
mime "^2.5.2"
node-hex "^1.0.1"
pause-stream "~0.0.11"
frac@~1.1.2: frac@~1.1.2:
version "1.1.2" version "1.1.2"
resolved "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz#3d74f7f6478c88a1b5020306d747dc6313c74d0b" resolved "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz#3d74f7f6478c88a1b5020306d747dc6313c74d0b"
@ -3302,6 +3414,11 @@ get-own-enumerable-property-symbols@^3.0.0:
resolved "https://registry.npmmirror.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" resolved "https://registry.npmmirror.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664"
integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==
get-ready@^1.0.0, get-ready@~1.0.0:
version "1.0.0"
resolved "https://registry.npmmirror.com/get-ready/-/get-ready-1.0.0.tgz#f91817f1e9adecfea13a562adfc8de883ab34782"
integrity sha512-mFXCZPJIlcYcth+N8267+mghfYN9h3EhsDa6JSnbA3Wrhh/XFpuowviFcsDeYZtKspQyWyJqfs4O6P8CHeTwzw==
get-stdin@^8.0.0: get-stdin@^8.0.0:
version "8.0.0" version "8.0.0"
resolved "https://registry.npmmirror.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53" resolved "https://registry.npmmirror.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53"
@ -3628,6 +3745,13 @@ human-signals@^2.1.0:
resolved "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" resolved "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
humanize-ms@^1.2.0, humanize-ms@^1.2.1:
version "1.2.1"
resolved "https://registry.npmmirror.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed"
integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==
dependencies:
ms "^2.0.0"
husky@^6.0.0: husky@^6.0.0:
version "6.0.0" version "6.0.0"
resolved "https://registry.npmmirror.com/husky/-/husky-6.0.0.tgz#810f11869adf51604c32ea577edbc377d7f9319e" resolved "https://registry.npmmirror.com/husky/-/husky-6.0.0.tgz#810f11869adf51604c32ea577edbc377d7f9319e"
@ -3703,7 +3827,7 @@ inflight@^1.0.4:
once "^1.3.0" once "^1.3.0"
wrappy "1" wrappy "1"
inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4: inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3:
version "2.0.4" version "2.0.4"
resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@ -3777,6 +3901,11 @@ is-buffer@^2.0.0:
resolved "https://registry.npmmirror.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" resolved "https://registry.npmmirror.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191"
integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==
is-class-hotfix@~0.0.6:
version "0.0.6"
resolved "https://registry.npmmirror.com/is-class-hotfix/-/is-class-hotfix-0.0.6.tgz#a527d31fb23279281dde5f385c77b5de70a72435"
integrity sha512-0n+pzCC6ICtVr/WXnN2f03TK/3BfXY7me4cjCAqT8TYXEl0+JBRoqBo94JJHXcyDSLUeWbNX8Fvy5g5RJdAstQ==
is-core-module@^2.13.0, is-core-module@^2.5.0: is-core-module@^2.13.0, is-core-module@^2.5.0:
version "2.15.1" version "2.15.1"
resolved "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37" resolved "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37"
@ -3809,6 +3938,11 @@ is-expression@^4.0.0:
acorn "^7.1.1" acorn "^7.1.1"
object-assign "^4.1.1" object-assign "^4.1.1"
is-extendable@^0.1.0:
version "0.1.1"
resolved "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==
is-extglob@^2.1.1: is-extglob@^2.1.1:
version "2.1.1" version "2.1.1"
resolved "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" resolved "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
@ -3901,6 +4035,15 @@ is-text-path@^1.0.1:
dependencies: dependencies:
text-extensions "^1.0.0" text-extensions "^1.0.0"
is-type-of@^1.4.0:
version "1.4.0"
resolved "https://registry.npmmirror.com/is-type-of/-/is-type-of-1.4.0.tgz#3ed175a0eee888b1da4983332e7714feb8a8fb2b"
integrity sha512-EddYllaovi5ysMLMEN7yzHEKh8A850cZ7pykrY1aNRQGn/CDjRDE9qEWbIdt7xGEVJmjBXzU/fNnC4ABTm8tEQ==
dependencies:
core-util-is "^1.0.2"
is-class-hotfix "~0.0.6"
isstream "~0.1.2"
is-typedarray@^1.0.0: is-typedarray@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.npmmirror.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" resolved "https://registry.npmmirror.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
@ -3933,11 +4076,21 @@ is-wsl@^2.2.0:
dependencies: dependencies:
is-docker "^2.0.0" is-docker "^2.0.0"
isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==
isexe@^2.0.0: isexe@^2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" resolved "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
isstream@~0.1.2:
version "0.1.2"
resolved "https://registry.npmmirror.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==
jackspeak@^3.1.2: jackspeak@^3.1.2:
version "3.4.3" version "3.4.3"
resolved "https://registry.npmmirror.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" resolved "https://registry.npmmirror.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a"
@ -3962,6 +4115,11 @@ jiti@^1.21.0, jiti@^1.21.6:
resolved "https://registry.npmmirror.com/jiti/-/jiti-1.21.6.tgz#6c7f7398dd4b3142767f9a168af2f317a428d268" resolved "https://registry.npmmirror.com/jiti/-/jiti-1.21.6.tgz#6c7f7398dd4b3142767f9a168af2f317a428d268"
integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==
js-base64@^2.5.2:
version "2.6.4"
resolved "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz#f4e686c5de1ea1f867dbcad3d46d969428df98c4"
integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==
js-stringify@^1.0.2: js-stringify@^1.0.2:
version "1.0.2" version "1.0.2"
resolved "https://registry.npmmirror.com/js-stringify/-/js-stringify-1.0.2.tgz#1736fddfd9724f28a3682adc6230ae7e4e9679db" resolved "https://registry.npmmirror.com/js-stringify/-/js-stringify-1.0.2.tgz#1736fddfd9724f28a3682adc6230ae7e4e9679db"
@ -4053,6 +4211,11 @@ jsonparse@^1.2.0:
resolved "https://registry.npmmirror.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" resolved "https://registry.npmmirror.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280"
integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==
jstoxml@^2.0.0:
version "2.2.9"
resolved "https://registry.npmmirror.com/jstoxml/-/jstoxml-2.2.9.tgz#2eebd5e55383fe66a375022ca0aa88f77bc4fb84"
integrity sha512-OYWlK0j+roh+eyaMROlNbS5cd5R25Y+IUpdl7cNdB8HNrkgwQzIS7L9MegxOiWNBj9dQhA/yAxiMwCC5mwNoBw==
jstransformer@1.0.0: jstransformer@1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.npmmirror.com/jstransformer/-/jstransformer-1.0.0.tgz#ed8bf0921e2f3f1ed4d5c1a44f68709ed24722c3" resolved "https://registry.npmmirror.com/jstransformer/-/jstransformer-1.0.0.tgz#ed8bf0921e2f3f1ed4d5c1a44f68709ed24722c3"
@ -4399,6 +4562,11 @@ meow@^9.0.0:
type-fest "^0.18.0" type-fest "^0.18.0"
yargs-parser "^20.2.3" yargs-parser "^20.2.3"
merge-descriptors@^1.0.1:
version "1.0.3"
resolved "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5"
integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==
merge-stream@^2.0.0: merge-stream@^2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" resolved "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
@ -4447,6 +4615,11 @@ mime@^1.4.1:
resolved "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" resolved "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
mime@^2.4.5, mime@^2.5.2:
version "2.6.0"
resolved "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367"
integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==
mimic-fn@^2.1.0: mimic-fn@^2.1.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" resolved "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
@ -4492,7 +4665,7 @@ minimist@1.2.7:
resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18"
integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==
minimist@^1.2.5: minimist@^1.1.0, minimist@^1.2.5, minimist@^1.2.6:
version "1.2.8" version "1.2.8"
resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
@ -4502,6 +4675,13 @@ minimist@^1.2.5:
resolved "https://registry.npmmirror.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" resolved "https://registry.npmmirror.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707"
integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
mkdirp@^0.5.1:
version "0.5.6"
resolved "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
dependencies:
minimist "^1.2.6"
mockjs@^1.1.0: mockjs@^1.1.0:
version "1.1.0" version "1.1.0"
resolved "https://registry.npmmirror.com/mockjs/-/mockjs-1.1.0.tgz#e6a0c378e91906dbaff20911cc0273b3c7d75b06" resolved "https://registry.npmmirror.com/mockjs/-/mockjs-1.1.0.tgz#e6a0c378e91906dbaff20911cc0273b3c7d75b06"
@ -4519,7 +4699,7 @@ ms@2.0.0:
resolved "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" resolved "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
ms@^2.1.3: ms@^2.0.0, ms@^2.1.3:
version "2.1.3" version "2.1.3"
resolved "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" resolved "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
@ -4589,6 +4769,11 @@ no-case@^3.0.4:
lower-case "^2.0.2" lower-case "^2.0.2"
tslib "^2.0.3" tslib "^2.0.3"
node-hex@^1.0.1:
version "1.0.1"
resolved "https://registry.npmmirror.com/node-hex/-/node-hex-1.0.1.tgz#606208e91f9c02b9b81531b692b9f1da4860fb24"
integrity sha512-iwpZdvW6Umz12ICmu9IYPRxg0tOLGmU3Tq2tKetejCj3oZd7b2nUXwP3a7QA5M9glWy8wlPS1G3RwM/CdsUbdQ==
node-html-parser@^5.3.3: node-html-parser@^5.3.3:
version "5.4.2" version "5.4.2"
resolved "https://registry.npmmirror.com/node-html-parser/-/node-html-parser-5.4.2.tgz#93e004038c17af80226c942336990a0eaed8136a" resolved "https://registry.npmmirror.com/node-html-parser/-/node-html-parser-5.4.2.tgz#93e004038c17af80226c942336990a0eaed8136a"
@ -4741,11 +4926,26 @@ ora@^5.4.1:
strip-ansi "^6.0.0" strip-ansi "^6.0.0"
wcwidth "^1.0.1" wcwidth "^1.0.1"
os-name@~1.0.3:
version "1.0.3"
resolved "https://registry.npmmirror.com/os-name/-/os-name-1.0.3.tgz#1b379f64835af7c5a7f498b357cb95215c159edf"
integrity sha512-f5estLO2KN8vgtTRaILIgEGBoBrMnZ3JQ7W9TMZCnOIGwHe8TRGSpcagnWDo+Dfhd/z08k9Xe75hvciJJ8Qaew==
dependencies:
osx-release "^1.0.0"
win-release "^1.0.0"
os-tmpdir@~1.0.2: os-tmpdir@~1.0.2:
version "1.0.2" version "1.0.2"
resolved "https://registry.npmmirror.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" resolved "https://registry.npmmirror.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==
osx-release@^1.0.0:
version "1.1.0"
resolved "https://registry.npmmirror.com/osx-release/-/osx-release-1.1.0.tgz#f217911a28136949af1bf9308b241e2737d3cd6c"
integrity sha512-ixCMMwnVxyHFQLQnINhmIpWqXIfS2YOXchwQrk+OFzmo6nDjQ0E4KXAyyUh0T0MZgV4bUhkRrAbVqlE4yLVq4A==
dependencies:
minimist "^1.1.0"
p-limit@^2.2.0: p-limit@^2.2.0:
version "2.3.0" version "2.3.0"
resolved "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" resolved "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
@ -4907,6 +5107,13 @@ pathe@^0.2.0:
resolved "https://registry.npmmirror.com/pathe/-/pathe-0.2.0.tgz#30fd7bbe0a0d91f0e60bae621f5d19e9e225c339" resolved "https://registry.npmmirror.com/pathe/-/pathe-0.2.0.tgz#30fd7bbe0a0d91f0e60bae621f5d19e9e225c339"
integrity sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw== integrity sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==
pause-stream@~0.0.11:
version "0.0.11"
resolved "https://registry.npmmirror.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445"
integrity sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==
dependencies:
through "~2.3"
perfect-scrollbar@^1.5.5: perfect-scrollbar@^1.5.5:
version "1.5.6" version "1.5.6"
resolved "https://registry.npmmirror.com/perfect-scrollbar/-/perfect-scrollbar-1.5.6.tgz#f1aead2588ba896435ee41b246812b2080573b7c" resolved "https://registry.npmmirror.com/perfect-scrollbar/-/perfect-scrollbar-1.5.6.tgz#f1aead2588ba896435ee41b246812b2080573b7c"
@ -4979,6 +5186,11 @@ pkg-dir@^4.1.0:
dependencies: dependencies:
find-up "^4.0.0" find-up "^4.0.0"
platform@^1.3.1:
version "1.3.6"
resolved "https://registry.npmmirror.com/platform/-/platform-1.3.6.tgz#48b4ce983164b209c2d45a107adb31f473a6e7a7"
integrity sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==
please-upgrade-node@^3.2.0: please-upgrade-node@^3.2.0:
version "3.2.0" version "3.2.0"
resolved "https://registry.npmmirror.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" resolved "https://registry.npmmirror.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942"
@ -5151,6 +5363,11 @@ printj@~1.1.0:
resolved "https://registry.npmmirror.com/printj/-/printj-1.1.2.tgz#d90deb2975a8b9f600fb3a1c94e3f4c53c78a222" resolved "https://registry.npmmirror.com/printj/-/printj-1.1.2.tgz#d90deb2975a8b9f600fb3a1c94e3f4c53c78a222"
integrity sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ== integrity sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==
process-nextick-args@~2.0.0:
version "2.0.1"
resolved "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
progress@^2.0.0: progress@^2.0.0:
version "2.0.3" version "2.0.3"
resolved "https://registry.npmmirror.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" resolved "https://registry.npmmirror.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
@ -5310,6 +5527,13 @@ qs@^6.13.0:
dependencies: dependencies:
side-channel "^1.0.6" side-channel "^1.0.6"
qs@^6.4.0:
version "6.13.1"
resolved "https://registry.npmmirror.com/qs/-/qs-6.13.1.tgz#3ce5fc72bd3a8171b85c99b93c65dd20b7d1b16e"
integrity sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==
dependencies:
side-channel "^1.0.6"
queue-microtask@^1.2.2: queue-microtask@^1.2.2:
version "1.2.3" version "1.2.3"
resolved "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" resolved "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
@ -5385,6 +5609,19 @@ readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.1.1, readable-stre
string_decoder "^1.1.1" string_decoder "^1.1.1"
util-deprecate "^1.0.1" util-deprecate "^1.0.1"
readable-stream@^2.3.6:
version "2.3.8"
resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b"
integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==
dependencies:
core-util-is "~1.0.0"
inherits "~2.0.3"
isarray "~1.0.0"
process-nextick-args "~2.0.0"
safe-buffer "~5.1.1"
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
readdirp@~3.6.0: readdirp@~3.6.0:
version "3.6.0" version "3.6.0"
resolved "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" resolved "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
@ -5588,6 +5825,11 @@ rxjs@^7.5.1, rxjs@^7.5.5:
dependencies: dependencies:
tslib "^2.1.0" tslib "^2.1.0"
safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2"
resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
safe-buffer@~5.2.0: safe-buffer@~5.2.0:
version "5.2.1" version "5.2.1"
resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
@ -5598,11 +5840,18 @@ safe-buffer@~5.2.0:
resolved "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" resolved "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
sax@^1.2.4: sax@>=0.6.0, sax@^1.2.4:
version "1.4.1" version "1.4.1"
resolved "https://registry.npmmirror.com/sax/-/sax-1.4.1.tgz#44cc8988377f126304d3b3fc1010c733b929ef0f" resolved "https://registry.npmmirror.com/sax/-/sax-1.4.1.tgz#44cc8988377f126304d3b3fc1010c733b929ef0f"
integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg== integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==
sdk-base@^2.0.1:
version "2.0.1"
resolved "https://registry.npmmirror.com/sdk-base/-/sdk-base-2.0.1.tgz#ba40289e8bdf272ed11dd9ea97eaf98e036d24c6"
integrity sha512-eeG26wRwhtwYuKGCDM3LixCaxY27Pa/5lK4rLKhQa7HBjJ3U3Y+f81MMZQRsDw/8SC2Dao/83yJTXJ8aULuN8Q==
dependencies:
get-ready "~1.0.0"
seemly@^0.3.6, seemly@^0.3.8: seemly@^0.3.6, seemly@^0.3.8:
version "0.3.9" version "0.3.9"
resolved "https://registry.npmmirror.com/seemly/-/seemly-0.3.9.tgz#e38628f6c9c1f7d3a49c266156d983e951a5ceac" resolved "https://registry.npmmirror.com/seemly/-/seemly-0.3.9.tgz#e38628f6c9c1f7d3a49c266156d983e951a5ceac"
@ -5613,7 +5862,7 @@ semver-compare@^1.0.0:
resolved "https://registry.npmmirror.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" resolved "https://registry.npmmirror.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc"
integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==
"semver@2 || 3 || 4 || 5", semver@^5.6.0: "semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.6.0:
version "5.7.2" version "5.7.2"
resolved "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" resolved "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8"
integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
@ -5817,11 +6066,27 @@ ssf@~0.11.2:
dependencies: dependencies:
frac "~1.1.2" frac "~1.1.2"
statuses@~1.5.0: statuses@^1.3.1, statuses@~1.5.0:
version "1.5.0" version "1.5.0"
resolved "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" resolved "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==
stream-http@2.8.2:
version "2.8.2"
resolved "https://registry.npmmirror.com/stream-http/-/stream-http-2.8.2.tgz#4126e8c6b107004465918aa2fc35549e77402c87"
integrity sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==
dependencies:
builtin-status-codes "^3.0.0"
inherits "^2.0.1"
readable-stream "^2.3.6"
to-arraybuffer "^1.0.0"
xtend "^4.0.0"
stream-wormhole@^1.0.4:
version "1.1.0"
resolved "https://registry.npmmirror.com/stream-wormhole/-/stream-wormhole-1.1.0.tgz#300aff46ced553cfec642a05251885417693c33d"
integrity sha512-gHFfL3px0Kctd6Po0M8TzEvt3De/xu6cnRrjlfYNhwbhLPLwigI2t1nc6jrzNuaYg5C4YF78PPFuQPzRiqn9ew==
string-argv@0.3.1: string-argv@0.3.1:
version "0.3.1" version "0.3.1"
resolved "https://registry.npmmirror.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" resolved "https://registry.npmmirror.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da"
@ -5852,6 +6117,13 @@ string_decoder@^1.1.1:
dependencies: dependencies:
safe-buffer "~5.2.0" safe-buffer "~5.2.0"
string_decoder@~1.1.1:
version "1.1.1"
resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
dependencies:
safe-buffer "~5.1.0"
stringify-object@3.3.0: stringify-object@3.3.0:
version "3.3.0" version "3.3.0"
resolved "https://registry.npmmirror.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" resolved "https://registry.npmmirror.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629"
@ -6131,7 +6403,7 @@ through2@^4.0.0:
dependencies: dependencies:
readable-stream "3" readable-stream "3"
"through@>=2.2.7 <3", through@^2.3.6, through@^2.3.8: "through@>=2.2.7 <3", through@^2.3.6, through@^2.3.8, through@~2.3:
version "2.3.8" version "2.3.8"
resolved "https://registry.npmmirror.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" resolved "https://registry.npmmirror.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
@ -6153,6 +6425,11 @@ tmp@^0.0.33:
dependencies: dependencies:
os-tmpdir "~1.0.2" os-tmpdir "~1.0.2"
to-arraybuffer@^1.0.0:
version "1.0.1"
resolved "https://registry.npmmirror.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
integrity sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==
to-regex-range@^5.0.1: to-regex-range@^5.0.1:
version "5.0.1" version "5.0.1"
resolved "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" resolved "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
@ -6282,6 +6559,13 @@ undici-types@~6.19.2, undici-types@~6.19.8:
resolved "https://registry.npmmirror.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" resolved "https://registry.npmmirror.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02"
integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==
unescape@^1.0.1:
version "1.0.1"
resolved "https://registry.npmmirror.com/unescape/-/unescape-1.0.1.tgz#956e430f61cad8a4d57d82c518f5e6cc5d0dda96"
integrity sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ==
dependencies:
extend-shallow "^2.0.1"
unified@^9.1.0: unified@^9.1.0:
version "9.2.2" version "9.2.2"
resolved "https://registry.npmmirror.com/unified/-/unified-9.2.2.tgz#67649a1abfc3ab85d2969502902775eb03146975" resolved "https://registry.npmmirror.com/unified/-/unified-9.2.2.tgz#67649a1abfc3ab85d2969502902775eb03146975"
@ -6386,11 +6670,40 @@ uri-js@^4.2.2:
dependencies: dependencies:
punycode "^2.1.0" punycode "^2.1.0"
util-deprecate@^1.0.1, util-deprecate@^1.0.2: urllib@^2.44.0:
version "2.44.0"
resolved "https://registry.npmmirror.com/urllib/-/urllib-2.44.0.tgz#0da4b037550bdc03eb9a408de498fb4025ddc0b4"
integrity sha512-zRCJqdfYllRDA9bXUtx+vccyRqtJPKsw85f44zH7zPD28PIvjMqIgw9VwoTLV7xTBWZsbebUFVHU5ghQcWku2A==
dependencies:
any-promise "^1.3.0"
content-type "^1.0.2"
default-user-agent "^1.0.0"
digest-header "^1.0.0"
ee-first "~1.1.1"
formstream "^1.1.0"
humanize-ms "^1.2.0"
iconv-lite "^0.6.3"
pump "^3.0.0"
qs "^6.4.0"
statuses "^1.3.1"
utility "^1.16.1"
util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1:
version "1.0.2" version "1.0.2"
resolved "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" resolved "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
utility@^1.16.1, utility@^1.18.0:
version "1.18.0"
resolved "https://registry.npmmirror.com/utility/-/utility-1.18.0.tgz#af55f62e6d5a272e0cb02b0ab3e7f37c46435f36"
integrity sha512-PYxZDA+6QtvRvm//++aGdmKG/cI07jNwbROz0Ql+VzFV1+Z0Dy55NI4zZ7RHc9KKpBePNFwoErqIuqQv/cjiTA==
dependencies:
copy-to "^2.0.1"
escape-html "^1.0.3"
mkdirp "^0.5.1"
mz "^2.7.0"
unescape "^1.0.1"
utils-merge@1.0.1: utils-merge@1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" resolved "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
@ -6758,6 +7071,13 @@ which@^2.0.1:
dependencies: dependencies:
isexe "^2.0.0" isexe "^2.0.0"
win-release@^1.0.0:
version "1.1.1"
resolved "https://registry.npmmirror.com/win-release/-/win-release-1.1.1.tgz#5fa55e02be7ca934edfc12665632e849b72e5209"
integrity sha512-iCRnKVvGxOQdsKhcQId2PXV1vV3J/sDPXKA4Oe9+Eti2nb2ESEsYHRYls/UjoUW3bIc5ZDO8dTH50A/5iVN+bw==
dependencies:
semver "^5.0.1"
with@^7.0.0: with@^7.0.0:
version "7.0.2" version "7.0.2"
resolved "https://registry.npmmirror.com/with/-/with-7.0.2.tgz#ccee3ad542d25538a7a7a80aad212b9828495bac" resolved "https://registry.npmmirror.com/with/-/with-7.0.2.tgz#ccee3ad542d25538a7a7a80aad212b9828495bac"
@ -6838,6 +7158,24 @@ xlsx@^0.17.5:
wmf "~1.0.1" wmf "~1.0.1"
word "~0.3.0" word "~0.3.0"
xml2js@^0.6.2:
version "0.6.2"
resolved "https://registry.npmmirror.com/xml2js/-/xml2js-0.6.2.tgz#dd0b630083aa09c161e25a4d0901e2b2a929b499"
integrity sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==
dependencies:
sax ">=0.6.0"
xmlbuilder "~11.0.0"
xmlbuilder@~11.0.0:
version "11.0.1"
resolved "https://registry.npmmirror.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3"
integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==
xtend@^4.0.0:
version "4.0.2"
resolved "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
y18n@^4.0.0: y18n@^4.0.0:
version "4.0.3" version "4.0.3"
resolved "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" resolved "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf"