'初始化'

master
JayChou 4 weeks ago
commit d9f766a5c9
  1. 4
      .env.development
  2. 3
      .env.production
  3. 4
      .env.test
  4. 2
      .eslintignore
  5. 59
      .eslintrc.cjs
  6. 24
      .gitignore
  7. 7
      .prettierignore
  8. 9
      .prettierrc.json
  9. 4
      .stylelintignore
  10. 53
      .stylelintrc.cjs
  11. 3
      .vscode/extensions.json
  12. 483
      README.md
  13. 15
      index.html
  14. 61
      package.json
  15. 5756
      pnpm-lock.yaml
  16. 99
      public/data.json
  17. 1
      public/vite.svg
  18. 7
      scripts/preinstall.js
  19. 9
      src/App.vue
  20. 23
      src/Layout/footer/index.vue
  21. 31
      src/Layout/index.vue
  22. 7
      src/Layout/main/index.vue
  23. 155
      src/Layout/tabbar/index.vue
  24. 7
      src/api/login.ts
  25. 1
      src/assets/icons/copyright.svg
  26. 1
      src/assets/icons/exit-full.svg
  27. 1
      src/assets/icons/full-screen.svg
  28. 1
      src/assets/icons/home.svg
  29. 1
      src/assets/icons/loading.svg
  30. 1
      src/assets/icons/lock.svg
  31. 1
      src/assets/icons/logout.svg
  32. 1
      src/assets/icons/love.svg
  33. 1
      src/assets/icons/phone.svg
  34. 1
      src/assets/icons/refresh.svg
  35. 176
      src/assets/icons/welcome.svg
  36. BIN
      src/assets/images/banner2.png
  37. 1
      src/assets/vue.svg
  38. 35
      src/components/SvgIcon/index.vue
  39. 10
      src/components/index.ts
  40. 39
      src/main.ts
  41. 6
      src/permissions.ts
  42. 13
      src/router/index.ts
  43. 25
      src/router/module/constRouter/index.ts
  44. 6
      src/store/index.ts
  45. 33
      src/styles/index.scss
  46. 188
      src/styles/reset.scss
  47. 1
      src/styles/variable.scss
  48. 47
      src/utils/commen.js
  49. 136
      src/utils/rem.js
  50. 19
      src/utils/requset.ts
  51. 9
      src/views/404/index.vue
  52. 7
      src/views/home/index.vue
  53. 1
      src/vite-env.d.ts
  54. 36
      tsconfig.json
  55. 11
      tsconfig.node.json
  56. 51
      vite.config.ts

@ -0,0 +1,4 @@
# 变量必须以 VITE_ 为前缀才能暴露给外部读取
NODE_ENV = 'development'
VITE_APP_TITLE = '教学一体化平台'
VITE_APP_BASE_API = '/api'

@ -0,0 +1,3 @@
NODE_ENV = 'production'
VITE_APP_TITLE = '教学一体化平台'
VITE_APP_BASE_API = '/api'

@ -0,0 +1,4 @@
# 变量必须以 VITE_ 为前缀才能暴露给外部读取
NODE_ENV = 'test'
VITE_APP_TITLE = '教学一体化平台'
VITE_APP_BASE_API = '/api'

@ -0,0 +1,2 @@
dist
node_modules

@ -0,0 +1,59 @@
// @see https://eslint.bootcss.com/docs/rules/
module.exports = {
env: {
browser: true,
es2021: true,
node: true,
jest: true,
},
/* 指定如何解析语法 */
parser: 'vue-eslint-parser',
/** 优先级低于 parse 的语法解析配置 */
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
parser: '@typescript-eslint/parser',
jsxPragma: 'React',
ecmaFeatures: {
jsx: true,
},
},
/* 继承已有的规则 */
extends: [
'eslint:recommended',
'plugin:vue/vue3-essential',
'plugin:@typescript-eslint/recommended',
'plugin:prettier/recommended',
],
plugins: ['vue', '@typescript-eslint'],
/*
* "off" 或 0 ==> 关闭规则
* "warn" 或 1 ==> 打开的规则作为警告(不影响代码执行)
* "error" 或 2 ==> 规则作为一个错误(代码不能执行,界面报错)
*/
rules: {
// eslint(https://eslint.bootcss.com/docs/rules/)
'no-var': 'error', // 要求使用 let 或 const 而不是 var
'no-multiple-empty-lines': ['warn', { max: 1 }], // 不允许多个空行
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'no-unexpected-multiline': 'error', // 禁止空余的多行
'no-useless-escape': 'off', // 禁止不必要的转义字符
// typeScript (https://typescript-eslint.io/rules)
'@typescript-eslint/no-unused-vars': 'error', // 禁止定义未使用的变量
'@typescript-eslint/prefer-ts-expect-error': 'error', // 禁止使用 @ts-ignore
'@typescript-eslint/no-explicit-any': 'off', // 禁止使用 any 类型
'@typescript-eslint/no-non-null-assertion': 'off',
'@typescript-eslint/no-namespace': 'off', // 禁止使用自定义 TypeScript 模块和命名空间。
'@typescript-eslint/semi': 'off',
// eslint-plugin-vue (https://eslint.vuejs.org/rules/)
'vue/multi-word-component-names': 'off', // 要求组件名称始终为 “-” 链接的单词
'vue/script-setup-uses-vars': 'error', // 防止<script setup>使用的变量<template>被标记为未使用
'vue/no-mutating-props': 'off', // 不允许组件 prop的改变
'vue/attribute-hyphenation': 'off', // 对模板中的自定义组件强制执行属性命名样式
},
}

24
.gitignore vendored

@ -0,0 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
pnpm-lock.yaml
node_modules
dist
dist-ssr
*.local
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

@ -0,0 +1,7 @@
/dist/*
/html/*
.local
/node_modules/**
**/*.svg
**/*.sh
/public/*

@ -0,0 +1,9 @@
{
"singleQuote": true,
"semi": false,
"bracketSpacing": true,
"htmlWhitespaceSensitivity": "ignore",
"endOfLine": "auto",
"trailingComma": "all",
"tabWidth": 2
}

@ -0,0 +1,4 @@
/node_modules/*
/dist/*
/html/*
/public/*

@ -0,0 +1,53 @@
// @see https://stylelint.bootcss.com/
module.exports = {
extends: [
'stylelint-config-standard', // 配置stylelint拓展插件
'stylelint-config-html/vue', // 配置 vue 中 template 样式格式化
'stylelint-config-standard-scss', // 配置stylelint scss插件
'stylelint-config-recommended-vue/scss', // 配置 vue 中 scss 样式格式化
'stylelint-config-recess-order', // 配置stylelint css属性书写顺序插件,
'stylelint-config-prettier', // 配置stylelint和prettier兼容
],
overrides: [
{
files: ['**/*.(scss|css|vue|html)'],
customSyntax: 'postcss-scss',
},
{
files: ['**/*.(html|vue)'],
customSyntax: 'postcss-html',
},
],
ignoreFiles: [
'**/*.js',
'**/*.jsx',
'**/*.tsx',
'**/*.ts',
'**/*.json',
'**/*.md',
'**/*.yaml',
],
/**
* null => 关闭该规则
* always => 必须
*/
rules: {
'value-keyword-case': null, // 在 css 中使用 v-bind,不报错
'no-descending-specificity': null, // 禁止在具有较高优先级的选择器后出现被其覆盖的较低优先级的选择器
'function-url-quotes': 'always', // 要求或禁止 URL 的引号 "always(必须加上引号)"|"never(没有引号)"
'no-empty-source': null, // 关闭禁止空源码
'selector-class-pattern': null, // 关闭强制选择器类名的格式
'property-no-unknown': null, // 禁止未知的属性(true 为不允许)
'block-opening-brace-space-before': 'always', //大括号之前必须有一个空格或不能有空白符
'value-no-vendor-prefix': null, // 关闭 属性值前缀 --webkit-box
'property-no-vendor-prefix': null, // 关闭 属性前缀 -webkit-mask
'selector-pseudo-class-no-unknown': [
// 不允许未知的选择器
true,
{
ignorePseudoClasses: ['global', 'v-deep', 'deep'], // 忽略属性,修改element默认样式的时候能使用到
},
],
},
}

@ -0,0 +1,3 @@
{
"recommendations": ["Vue.volar"]
}

@ -0,0 +1,483 @@
## 教学一体化项目模板介绍
#### 目录
----`leachinontecration olattorm temolate` ----模板名称
----`node modules` ----依赖包
----`public` ----静态文件相关
----`scripts` ----项目钩子脚本文件
----`src` ----根目录开发主要文件
----`api` ----接口文件
----assets ----静态资源(图片图标)
----`copmonents` ----全局组件
----Layout ----layout固定组件
----`router` ----路由
----`store` ----仓库`pinia`
----styles ----全局样式文件
----`index.scss` ----全局样式
----`variable.scss` ----全局`scss`变量
----`utils` -----封装工具文件
----`request.ts` ----封装的请求文件
----`views` ----页面文件
----`App.vue` ----项目根组件
----`main.ts` ----项目入口文件
----`permission.ts` ----路由拦截器文件
----`.env.development` ----开发环境变量
----`.env.production` ----生产环境变量
----`.env.test` ----测试环境变量
----` .eslintignore` ----代码校验排除文件
----`.eslintrc.cjs` ----代码校验文件
----`.gitignore` ----`git`提交排除文件
----`.prettierignore` ----代码美化排除文件
----` .prettierrc.json` ----代码美化配置文件
----`.stylelintignore` ----`css`校验排除文件
----` .stylelintrc.cjs` ----`css`校验文件
----`index.html` ----挂载点
----`package.json` ----项目配置文件
----`tsconfig.json` ----`TypeScript`配置文件
----`vite.config.ts` ----打包配置文件
#### 图标组件
`components`文件下`SvgIcon` 为全局图标组件
用法:
```vue
<div><SvgIcon name="home" color="pink" width="50px" height="50px"/></div>
<!--
name:图标名称
color:图标颜色
width:图标宽度
height:图标高度
图标存放位置在src目录下 assets下icons文件取文件名即可 home.svg 取home即可
-->
```
`svg`图标下载 https://www.iconfont.cn/
选择图标下载`svg`格式修改文件名引入文件即可使用
#### vue3组件传值教程
不管是vue2还是vue3,组件通信方式很重要,不管是项目还是面试都是经常用到的知识点。
**比如:vue2组件通信方式**
**props:**可以实现父子组件、子父组件、甚至兄弟组件通信
**自定义事件**:可以实现子父组件通信
**全局事件总线$bus**:可以实现任意组件通信
**pubsub:**发布订阅模式实现任意组件通信
**vuex**:集中式状态管理容器,实现任意组件通信
**ref**:父组件获取子组件实例VC,获取子组件的响应式数据以及方法
**slot:**插槽(默认插槽、具名插槽、作用域插槽)实现父子组件通信........
### 1.1props
props可以实现父子组件通信,在vue3中我们可以通过defineProps获取父组件传递的数据。且在组件内部不需要引入defineProps方法可以直接使用!
**父组件给子组件传递数据**
```
<Child info="我爱祖国" :money="money"></Child>
```
**子组件获取父组件传递数据:方式1**
```
let props = defineProps({
info:{
type:String,//接受的数据类型
default:'默认参数',//接受默认数据
},
money:{
type:Number,
default:0
}})
```
**子组件获取父组件传递数据:方式2**
```
let props = defineProps(["info",'money']);
```
子组件获取到props数据就可以在模板中使用了,但是切记props是只读的(只能读取,不能修改)
### 1.2自定义事件
在vue框架中事件分为两种:一种是原生的DOM事件,另外一种自定义事件。
原生DOM事件可以让用户与网页进行交互,比如click、dbclick、change、mouseenter、mouseleave....
自定义事件可以实现子组件给父组件传递数据
#### 1.2.1原生DOM事件
代码如下:
```
<pre @click="handler">
我是祖国的老花骨朵
</pre>
```
当前代码级给pre标签绑定原生DOM事件点击事件,默认会给事件回调注入event事件对象。当然点击事件想注入多个参数可以按照下图操作。但是切记注入的事件对象务必叫做$event.
```
<div @click="handler1(1,2,3,$event)">我要传递多个参数</div>
```
在vue3框架click、dbclick、change(这类原生DOM事件),不管是在标签、自定义标签上(组件标签)都是原生DOM事件。
**<!--vue2中却不是这样的,在vue2中组件标签需要通过native修饰符才能变为原生DOM事件-->**
#### 1.2.2自定义事件
自定义事件可以实现子组件给父组件传递数据.在项目中是比较常用的。
比如在父组件内部给子组件(Event2)绑定一个自定义事件
```
<Event2 @xxx="handler3"></Event2>
```
在Event2子组件内部触发这个自定义事件
```
<template>
<div>
<h1>我是子组件2</h1>
<button @click="handler">点击我触发xxx自定义事件</button>
</div>
</template>
<script setup lang="ts">
let $emit = defineEmits(["xxx"]);
const handler = () => {
$emit("xxx", "法拉利", "茅台");
};
</script>
<style scoped>
</style>
```
我们会发现在script标签内部,使用了defineEmits方法,此方法是vue3提供的方法,不需要引入直接使用。defineEmits方法执行,传递一个数组,数组元素即为将来组件需要触发的自定义事件类型,此方执行会返回一个$emit方法用于触发自定义事件。
当点击按钮的时候,事件回调内部调用$emit方法去触发自定义事件,第一个参数为触发事件类型,第二个、三个、N个参数即为传递给父组件的数据。
需要注意的是:代码如下
```
<Event2 @xxx="handler3" @click="handler"></Event2>
```
正常说组件标签书写@click应该为原生DOM事件,但是如果子组件内部通过defineEmits定义就变为自定义事件了
```
let $emit = defineEmits(["xxx",'click']);
```
### 1.3全局事件总线
全局事件总线可以实现任意组件通信,在vue2中可以根据VM与VC关系推出全局事件总线。
但是在vue3中没有Vue构造函数,也就没有Vue.prototype.以及组合式API写法没有this,
那么在Vue3想实现全局事件的总线功能就有点不现实啦,如果想在Vue3中使用全局事件总线功能
可以使用插件mitt实现。
**mitt:官网地址:https://www.npmjs.com/package/mitt**
### 1.4v-model
v-model指令可是收集表单数据(数据双向绑定),除此之外它也可以实现父子组件数据同步。
而v-model实指利用props[modelValue]与自定义事件[update:modelValue]实现的。
下方代码:相当于给组件Child传递一个props(modelValue)与绑定一个自定义事件update:modelValue
实现父子组件数据同步
```
<Child v-model="msg"></Child>
```
在vue3中一个组件可以通过使用多个v-model,让父子组件多个数据同步,下方代码相当于给组件Child传递两个props分别是pageNo与pageSize,以及绑定两个自定义事件update:pageNo与update:pageSize实现父子数据同步
```
<Child v-model:pageNo="msg" v-model:pageSize="msg1"></Child>
```
### 1.5useAttrs
在Vue3中可以利用useAttrs方法获取组件的属性与事件(包含:原生DOM事件或者自定义事件),次函数功能类似于Vue2框架中$attrs属性与$listeners方法。
比如:在父组件内部使用一个子组件my-button
```
<my-button type="success" size="small" title='标题' @click="handler"></my-button>
```
子组件内部可以通过useAttrs方法获取组件属性与事件.因此你也发现了,它类似于props,可以接受父组件传递过来的属性与属性值。需要注意如果defineProps接受了某一个属性,useAttrs方法返回的对象身上就没有相应属性与属性值。
```
<script setup lang="ts">
import {useAttrs} from 'vue';
let $attrs = useAttrs();
</script>
```
### 1.6ref与$parent
ref,提及到ref可能会想到它可以获取元素的DOM或者获取子组件实例的VC。既然可以在父组件内部通过ref获取子组件实例VC,那么子组件内部的方法与响应式数据父组件可以使用的。
比如:在父组件挂载完毕获取组件实例
父组件内部代码:
```
<template>
<div>
<h1>ref与$parent</h1>
<Son ref="son"></Son>
</div>
</template>
<script setup lang="ts">
import Son from "./Son.vue";
import { onMounted, ref } from "vue";
const son = ref();
onMounted(() => {
console.log(son.value);
});
</script>
```
但是需要注意,如果想让父组件获取子组件的数据或者方法需要通过defineExpose对外暴露,因为vue3中组件内部的数据对外“关闭的”,外部不能访问
```
<script setup lang="ts">
import { ref } from "vue";
//数据
let money = ref(1000);
//方法
const handler = ()=>{
}
defineExpose({
money,
handler
})
</script>
```
$parent可以获取某一个组件的父组件实例VC,因此可以使用父组件内部的数据与方法。必须子组件内部拥有一个按钮点击时候获取父组件实例,当然父组件的数据与方法需要通过defineExpose方法对外暴露
```
<button @click="handler($parent)">点击我获取父组件实例</button>
```
### 1.7provide与inject
**provide[提供]**
**inject[注入]**
vue3提供两个方法provide与inject,可以实现隔辈组件传递参数
组件组件提供数据:
provide方法用于提供数据,此方法执需要传递两个参数,分别提供数据的key与提供数据value
```
<script setup lang="ts">
import {provide} from 'vue'
provide('token','admin_token');
</script>
```
后代组件可以通过inject方法获取数据,通过key获取存储的数值
```
<script setup lang="ts">
import {inject} from 'vue'
let token = inject('token');
</script>
```
### 1.8pinia
**pinia官网:https://pinia.web3doc.top/**
pinia也是集中式管理状态容器,类似于vuex。但是核心概念没有mutation、modules,使用方式参照官网
### 1.9slot
插槽:默认插槽、具名插槽、作用域插槽可以实现父子组件通信.
**默认插槽:**
在子组件内部的模板中书写slot全局组件标签
```
<template>
<div>
<slot></slot>
</div>
</template>
<script setup lang="ts">
</script>
<style scoped>
</style>
```
在父组件内部提供结构:Todo即为子组件,在父组件内部使用的时候,在双标签内部书写结构传递给子组件
注意开发项目的时候默认插槽一般只有一个
```
<Todo>
<h1>我是默认插槽填充的结构</h1>
</Todo>
```
**具名插槽:**
顾名思义,此插槽带有名字在组件内部留多个指定名字的插槽。
下面是一个子组件内部,模板中留两个插槽
```
<template>
<div>
<h1>todo</h1>
<slot name="a"></slot>
<slot name="b"></slot>
</div>
</template>
<script setup lang="ts">
</script>
<style scoped>
</style>
```
父组件内部向指定的具名插槽传递结构。需要注意v-slot:可以替换为#
```
<template>
<div>
<h1>slot</h1>
<Todo>
<template v-slot:a> //可以用#a替换
<div>填入组件A部分的结构</div>
</template>
<template v-slot:b>//可以用#b替换
<div>填入组件B部分的结构</div>
</template>
</Todo>
</div>
</template>
<script setup lang="ts">
import Todo from "./Todo.vue";
</script>
<style scoped>
</style>
```
**作用域插槽**
作用域插槽:可以理解为,子组件数据由父组件提供,但是子组件内部决定不了自身结构与外观(样式)
子组件Todo代码如下:
```
<template>
<div>
<h1>todo</h1>
<ul>
<!--组件内部遍历数组-->
<li v-for="(item,index) in todos" :key="item.id">
<!--作用域插槽将数据回传给父组件-->
<slot :$row="item" :$index="index"></slot>
</li>
</ul>
</div>
</template>
<script setup lang="ts">
defineProps(['todos']);//接受父组件传递过来的数据
</script>
<style scoped>
</style>
```
父组件内部代码如下:
```
<template>
<div>
<h1>slot</h1>
<Todo :todos="todos">
<template v-slot="{$row,$index}">
<!--父组件决定子组件的结构与外观-->
<span :style="{color:$row.done?'green':'red'}">{{$row.title}}</span>
</template>
</Todo>
</div>
</template>
<script setup lang="ts">
import Todo from "./Todo.vue";
import { ref } from "vue";
//父组件内部数据
let todos = ref([
{ id: 1, title: "吃饭", done: true },
{ id: 2, title: "睡觉", done: false },
{ id: 3, title: "打豆豆", done: true },
]);
</script>
<style scoped>
</style>
```
##

@ -0,0 +1,15 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite + Vue + TS</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.ts"></script>
<script src="https://gw.alipayobjects.com/os/lib/antv/g6/3.8.3/dist/g6.min.js"></script>
<!-- <script src="https://unpkg.com/3d-force-graph@1.73.3/dist/3d-force-graph.min.js"></script> -->
</body>
</html>

@ -0,0 +1,61 @@
{
"name": "teaching-integration-platform-template",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite --open",
"build:test": "vue-tsc && vite build --mode test",
"build:pro": "vue-tsc && vite build --mode production",
"preview": "vite preview",
"lint": "eslint src",
"fix": "eslint src --fix",
"format": "prettier --write \"./**/*.{html,vue,ts,js,json,md}\"",
"lint:eslint": "eslint src/**/*.{ts,vue} --cache --fix",
"lint:style": "stylelint src/**/*.{css,scss,vue} --cache --fix",
"preinstall": "node ./scripts/preinstall.js"
},
"dependencies": {
"@element-plus/icons-vue": "^2.3.1",
"axios": "^1.6.8",
"element-plus": "^2.6.2",
"install": "^0.13.0",
"pinia": "^2.1.7",
"postcss-plugin-px2rem": "^0.8.1",
"px2rem-loader": "^0.1.9",
"vue": "^3.4.21",
"vue-router": "^4.3.0"
},
"devDependencies": {
"@babel/eslint-parser": "^7.24.1",
"@types/node": "^20.11.30",
"@typescript-eslint/eslint-plugin": "^7.4.0",
"@typescript-eslint/parser": "^7.4.0",
"@vitejs/plugin-vue": "^5.0.4",
"eslint": "^8.57.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-import": "^2.29.1",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-vue": "^9.24.0",
"postcss": "^8.4.38",
"postcss-html": "^1.6.0",
"postcss-scss": "^4.0.9",
"prettier": "^3.2.5",
"sass": "^1.72.0",
"sass-loader": "^14.1.1",
"stylelint": "^16.3.1",
"stylelint-config-prettier": "^9.0.5",
"stylelint-config-recess-order": "^5.0.0",
"stylelint-config-recommended-scss": "^14.0.0",
"stylelint-config-standard": "^36.0.0",
"stylelint-config-standard-scss": "^13.0.0",
"stylelint-config-standard-vue": "^1.0.0",
"stylelint-order": "^6.0.4",
"stylelint-scss": "^6.2.1",
"typescript": "^5.2.2",
"vite": "^5.2.0",
"vite-plugin-svg-icons": "^2.0.1",
"vue-tsc": "^2.0.6"
}
}

File diff suppressed because it is too large Load Diff

@ -0,0 +1,99 @@
{
"nodes": [
{ "id": "node1", "label": "计算机", "color": "#4682B4" },
{ "id": "node2", "label": "前端", "color": "rgba(254, 241, 0, 1)" },
{ "id": "node3", "label": "js", "color": "rgba(239, 242, 18, 1)" },
{ "id": "node4", "label": "html", "color": "rgba(230, 234, 10, 1)" },
{ "id": "node5", "label": "css", "color": "rgba(244, 231, 0, 1)" },
{ "id": "node6", "label": "less", "color": "rgba(15, 245, 57, 1)" },
{ "id": "node7", "label": "scss", "color": "rgba(133, 255, 11, 1)" },
{ "id": "node8", "label": "VUE", "color": "rgba(42, 255, 0, 1)" },
{ "id": "node9", "label": "React", "color": "rgba(76, 73, 245, 1)" },
{ "id": "node10", "label": "模块化", "color": "#4682B4" },
{ "id": "node11", "label": "webpack", "color": "#4682B4" },
{ "id": "node12", "label": "vite", "color": "#4682B4" },
{ "id": "node13", "label": "uniapp", "color": "rgba(77, 255, 0, 1)" },
{ "id": "node14", "label": "element", "color": "rgba(33, 162, 255, 1)" },
{ "id": "node15", "label": "web3", "color": "rgba(255, 0, 251, 1)" },
{ "id": "node16", "label": "webGl", "color": "rgba(208, 0, 249, 1)" },
{ "id": "node17", "label": "three", "color": "rgba(225, 0, 255, 1)" },
{ "id": "node18", "label": "后端", "color": "rgba(0, 229, 255, 1)" },
{ "id": "node19", "label": "java", "color": "rgba(237, 229, 85, 1)" },
{ "id": "node20", "label": "PHP", "color": "rgba(195, 206, 215, 1)" },
{ "id": "node21", "label": "Go", "color": "rgba(255, 0, 0, 1)" },
{ "id": "node22", "label": "Python", "color": "rgba(109, 238, 180, 1)" },
{ "id": "node23", "label": "MySQL", "color": "#4682B4" },
{ "id": "node24", "label": "人工智能", "color": "rgba(180, 5, 255, 1)" },
{ "id": "node25", "label": "python", "color": "rgba(255, 8, 8, 1)" },
{ "id": "node26", "label": "AI模型", "color": "rgba(10, 138, 244, 1)" },
{
"id": "node27",
"label": "Spring Framework",
"color": "rgba(242, 238, 14, 1)"
},
{ "id": "node29", "label": "Hibernate", "color": "rgba(242, 238, 14, 1)" },
{ "id": "node31", "label": "Spring MVC", "color": "rgba(242, 238, 14, 1)" },
{ "id": "node33", "label": "Gin", "color": "rgba(255, 0, 0, 1)" },
{ "id": "node34", "label": "Echo", "color": "rgba(255, 0, 0, 1)" },
{ "id": "node35", "label": "Beego", "color": "rgba(255, 8, 0, 1)" },
{ "id": "node36", "label": "Laravel", "color": "rgba(200, 209, 217, 1)" },
{ "id": "node37", "label": "Symfony", "color": "rgba(182, 194, 204, 1)" },
{
"id": "node38",
"label": "CodeIgniter",
"color": "rgba(188, 197, 204, 1)"
},
{ "id": "node39", "label": "Django", "color": "rgba(36, 245, 144, 1)" },
{ "id": "node40", "label": "Flask", "color": "rgba(41, 244, 176, 1)" },
{ "id": "node41", "label": "FastAPI", "color": "rgba(58, 244, 142, 1)" }
],
"links": [
{ "source": "node2", "target": "node3", "label": "" },
{ "source": "node2", "target": "node5", "label": "" },
{ "source": "node2", "target": "node4", "label": "" },
{ "source": "node1", "target": "node2", "label": "" },
{ "source": "node5", "target": "node6", "label": "" },
{ "source": "node5", "target": "node7", "label": "" },
{ "source": "node3", "target": "node8", "label": "" },
{ "source": "node3", "target": "node9", "label": "" },
{ "source": "node3", "target": "node10", "label": "" },
{ "source": "node10", "target": "node11", "label": "" },
{ "source": "node10", "target": "node12", "label": "" },
{ "source": "node11", "target": "node9", "label": "" },
{ "source": "node11", "target": "node8", "label": "" },
{ "source": "node12", "target": "node8", "label": "" },
{ "source": "node8", "target": "node13", "label": "" },
{ "source": "node8", "target": "node14", "label": "" },
{ "source": "node11", "target": "node13", "label": "" },
{ "source": "node12", "target": "node13", "label": "" },
{ "source": "node2", "target": "node15", "label": "" },
{ "source": "node15", "target": "node16", "label": "" },
{ "source": "node16", "target": "node17", "label": "" },
{ "source": "node1", "target": "node1", "label": "" },
{ "source": "node1", "target": "node18", "label": "" },
{ "source": "node18", "target": "node21", "label": "" },
{ "source": "node18", "target": "node20", "label": "" },
{ "source": "node18", "target": "node19", "label": "" },
{ "source": "node18", "target": "node22", "label": "" },
{ "source": "node22", "target": "node23", "label": "" },
{ "source": "node19", "target": "node23", "label": "" },
{ "source": "node20", "target": "node23", "label": "" },
{ "source": "node21", "target": "node23", "label": "" },
{ "source": "node1", "target": "node24", "label": "" },
{ "source": "node24", "target": "node25", "label": "" },
{ "source": "node24", "target": "node26", "label": "" },
{ "source": "node12", "target": "node9", "label": "" },
{ "source": "node19", "target": "node27", "label": "" },
{ "source": "node19", "target": "node29", "label": "" },
{ "source": "node19", "target": "node31", "label": "" },
{ "source": "node21", "target": "node33", "label": "" },
{ "source": "node21", "target": "node34", "label": "" },
{ "source": "node21", "target": "node35", "label": "" },
{ "source": "node20", "target": "node36", "label": "" },
{ "source": "node20", "target": "node37", "label": "" },
{ "source": "node20", "target": "node38", "label": "" },
{ "source": "node22", "target": "node39", "label": "" },
{ "source": "node22", "target": "node40", "label": "" },
{ "source": "node22", "target": "node41", "label": "" }
]
}

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

@ -0,0 +1,7 @@
if (!/pnpm/.test(process.env.npm_execpath || '')) {
console.warn(
`\u001b[33mThis repository must using pnpm as the package manager ` +
` for scripts to work properly.\u001b[39m\n`,
)
process.exit(1)
}

@ -0,0 +1,9 @@
<template>
<router-view></router-view>
</template>
<script lang="ts" setup>
import {} from 'vue'
</script>
<style lang="scss" scoped></style>

@ -0,0 +1,23 @@
<template>
<div class="footer">
<h1>FOOTER</h1>
</div>
</template>
<script lang="ts" setup>
import {} from 'vue'
</script>
<style lang="scss" scoped>
.footer {
// position: fixed;
// bottom: 0;
height: 300px;
width: 100%;
background-color: #252527;
display: flex;
align-items: center;
justify-content: center;
color: #fff;
}
</style>

@ -0,0 +1,31 @@
<template>
<Tabbar />
<div class="main-container">
<Main />
</div>
<Footer />
</template>
<script lang="ts" setup>
//
import Tabbar from './tabbar/index.vue'
//
import Main from './main/index.vue'
//
import Footer from './footer/index.vue'
import {} from 'vue'
</script>
<style lang="scss" scoped>
.main-container {
width: 100%;
min-height: 100vh;
background-color: #eef1fb;
padding-top: 140px;
// background-color: skyblue;
// .container {
// width: $base-container-width;
// margin: 0 auto;
// }
}
</style>

@ -0,0 +1,7 @@
<template>
<router-view></router-view>
</template>
<script lang="ts" setup></script>
<style lang="scss" scoped></style>

@ -0,0 +1,155 @@
<template>
<div :class="!flog ? 'tabbar' : 'tabbar-active'">
<div class="container">
<div class="logo">LOGO</div>
<div class="menu">
<ul>
<li
class="active"
v-for="(item, index) in constRouter[0].children"
:key="item.path"
@click="goToRouter(item)"
>
{{ item.meta.title }}
</li>
</ul>
</div>
</div>
</div>
</template>
<script lang="ts" setup>
import { constRouter } from '@/router/module/constRouter'
import { useRouter } from 'vue-router'
import { onMounted, ref } from 'vue'
const $router = useRouter()
const goToRouter = (item: any) => {
$router.push({ path: `${item.path}` })
}
const flog = ref(false)
onMounted(() => {
window.addEventListener('scroll', () => {
if (window.scrollY >= 50) {
flog.value = true
} else if (flog.value && window.scrollY <= 50) {
flog.value = false
}
})
})
</script>
<style lang="scss" scoped>
.tabbar {
position: fixed;
top: 0;
height: 120px;
width: 100%;
// background-color: transparent;
background-color: #6da0ff;
animation-duration: 0.3s;
animation-name: tabber-to;
}
.tabbar-active {
position: fixed;
top: 0;
height: 120px;
width: 100%;
background-color: #6da0ff;
animation-duration: 0.3s;
animation-name: tabber;
z-index: 999;
box-shadow: 0px 0px 43px rgba(0, 0, 0, 0.2);
}
@keyframes tabber {
0% {
// transform: translateY(-120px);
// background-color: transparent;
background-color: #6da0ff;
}
100% {
// transform: translateY(0);
background-color: #6da0ff;
}
}
@keyframes tabber-to {
0% {
// transform: translateY(-120px);
background-color: #6da0ff;
}
100% {
// transform: translateY(0);
// background-color: transparent;
background-color: #6da0ff;
}
}
.container {
height: 100%;
display: flex;
align-items: center;
justify-content: space-between;
margin: 0 auto;
width: $base-container-width;
.menu {
position: relative;
padding: 0 20px;
height: 100%;
display: flex;
align-items: center;
ul {
display: flex;
align-items: center;
li {
padding: 20px;
color: #ffffff;
font-size: 14px;
cursor: pointer;
transition: all 0.2s;
position: relative;
}
li:hover {
color: #7aa4ff;
transform: translateY(-5px);
}
.active::before {
content: ' ';
display: block;
position: absolute;
top: 0px;
left: 50%;
transform: translateX(-50%);
width: 5px;
height: 5px;
border-radius: 50%;
background-color: #fff;
}
}
.entry {
position: absolute;
top: 5px;
right: 30px;
display: flex;
align-content: center;
div {
// padding: 5px;
margin: 5px;
margin-right: 0;
padding: 0 10px;
border-right: 1px solid #fff;
color: #fff;
font-size: 14px;
cursor: pointer;
}
div:last-child {
border-right: none;
}
}
}
.logo {
height: 100%;
display: flex;
align-items: center;
}
}
</style>

@ -0,0 +1,7 @@
import request from '@/utils/requset'
export const login = () => {
return request({
url: '/',
})
}

@ -0,0 +1 @@
<?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="1677552825392" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2782" xmlns:xlink="http://www.w3.org/1999/xlink" width="78" height="78"><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64z m0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z" p-id="2783"></path><path d="M517.6 351.3c53 0 89 33.8 93 83.4 0.3 4.2 3.8 7.4 8 7.4h56.7c2.6 0 4.7-2.1 4.7-4.7 0-86.7-68.4-147.4-162.7-147.4C407.4 290 344 364.2 344 486.8v52.3C344 660.8 407.4 734 517.3 734c94 0 162.7-58.8 162.7-141.4 0-2.6-2.1-4.7-4.7-4.7h-56.8c-4.2 0-7.6 3.2-8 7.3-4.2 46.1-40.1 77.8-93 77.8-65.3 0-102.1-47.9-102.1-133.6v-52.6c0.1-87 37-135.5 102.2-135.5z" p-id="2784"></path></svg>

After

Width:  |  Height:  |  Size: 908 B

@ -0,0 +1 @@
<?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="1678348729454" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9639" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><path d="M344.056 647.377c9.149-1.422 18.828 1.391 25.877 8.44 6.054 6.054 8.983 14.05 8.797 21.982v174.763h-60.074l-0.001-104.389-150.176 150.176L126 855.87l148.342-148.343-112.305 0.002v-60.075h181.546z m310.783 7.358c7.17-7.17 17.062-9.957 26.35-8.362h181.545v60.074l-108.816-0.001 143.631 143.631-42.479 42.48-148.954-148.955V851.48h-60.075V676.718c-0.186-7.933 2.744-15.928 8.798-21.983z m51.278 51.711l-0.001 2.954 2.954-2.954h-2.953z m-387.462 1.082l-1.164-0.001 1.164 1.164v-1.163zM853.94 127.93l42.48 42.48L747.88 318.946h114.853v60.074H681.188c-9.287 1.595-19.18-1.192-26.349-8.362-6.054-6.054-8.984-14.05-8.788-21.983h-0.01V173.914h60.075v101.839l147.823-147.822zM173.472 126l145.805 145.805 0.001-97.891h60.075v174.762c0.186 7.933-2.744 15.929-8.798 21.983-7.048 7.048-16.728 9.861-25.876 8.44l-0.473-0.078H162.66v-60.074h118.8L130.993 168.479 173.472 126z m145.805 190.166l-2.781 2.781h2.781v-2.781z" fill="#000000" p-id="9640"></path></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@ -0,0 +1 @@
<?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="1678348709283" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9406" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M853.333333 640a42.666667 42.666667 0 1 1 0 85.333333h-128v128a42.666667 42.666667 0 1 1-85.333333 0v-170.666666a42.666667 42.666667 0 0 1 42.666667-42.666667h170.666666zM170.666667 640h170.666666a42.666667 42.666667 0 0 1 42.368 37.674667L384 682.666667v170.666666a42.666667 42.666667 0 0 1-85.034667 4.992L298.666667 853.333333v-128H170.666667a42.666667 42.666667 0 0 1-4.992-85.034666L170.666667 640h170.666666-170.666666zM682.666667 128a42.666667 42.666667 0 0 1 42.368 37.674667L725.333333 170.666667v128h128a42.666667 42.666667 0 0 1 4.992 85.034666L853.333333 384h-170.666666a42.666667 42.666667 0 0 1-42.368-37.674667L640 341.333333V170.666667a42.666667 42.666667 0 0 1 42.666667-42.666667zM341.333333 128a42.666667 42.666667 0 0 1 42.666667 42.666667v170.666666a42.666667 42.666667 0 0 1-42.666667 42.666667H170.666667a42.666667 42.666667 0 0 1 0-85.333333h128V170.666667a42.666667 42.666667 0 0 1 42.666666-42.666667z" fill="#212121" p-id="9407"></path></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@ -0,0 +1 @@
<svg t="1675566477499" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1093" width="400" height="400"><path d="M512.2 171.2l210.4 171.2 111.1 90.4H724.6v431.4h-80.3V800c0-36.5-29.7-66.1-66.2-66.1H444.3c-36.5 0-66.2 29.7-66.2 66.1v64.3h-79.4V432.8H190.5l111.1-90.4 210.6-171.2m0-73c-7.3 0-14.7 2.4-20.6 7.2L261.4 292.8 75.3 444.2c-22.3 18.1-8.7 52.7 20.6 52.7h138.9v383.6c0 26.4 22.3 47.8 49.8 47.8h107.7c27.5 0 49.8-21.4 49.8-47.9V800c0-1.2 1-2.1 2.2-2.1h133.8c1.2 0 2.2 1 2.2 2.1v83.7c0 24.7 20.8 44.7 46.5 44.7h111.5c27.8 0 50.4-21.7 50.4-48.4V497h139.8c29.3 0 42.9-34.6 20.6-52.7L763 292.8 532.8 105.5c-5.9-4.9-13.3-7.3-20.6-7.3z" p-id="1094"></path></svg>

After

Width:  |  Height:  |  Size: 703 B

@ -0,0 +1 @@
<svg t="1675579061907" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2751" width="400" height="400"><path d="M876.864 782.592c3.264 0 6.272-3.2 6.272-6.656 0-3.456-3.008-6.592-6.272-6.592-3.264 0-6.272 3.2-6.272 6.592 0 3.456 3.008 6.656 6.272 6.656z m-140.544 153.344c2.304 2.432 5.568 3.84 8.768 3.84a12.16 12.16 0 0 0 8.832-3.84 13.76 13.76 0 0 0 0-18.56 12.224 12.224 0 0 0-8.832-3.84 12.16 12.16 0 0 0-8.768 3.84 13.696 13.696 0 0 0 0 18.56zM552.32 1018.24c3.456 3.648 8.32 5.76 13.184 5.76a18.368 18.368 0 0 0 13.184-5.76 20.608 20.608 0 0 0 0-27.968 18.368 18.368 0 0 0-13.184-5.824 18.368 18.368 0 0 0-13.184 5.76 20.608 20.608 0 0 0 0 28.032z m-198.336-5.76c4.608 4.8 11.072 7.68 17.6 7.68a24.448 24.448 0 0 0 17.536-7.68 27.456 27.456 0 0 0 0-37.248 24.448 24.448 0 0 0-17.536-7.68 24.448 24.448 0 0 0-17.6 7.68 27.52 27.52 0 0 0 0 37.184z m-175.68-91.84c5.76 6.08 13.824 9.6 21.952 9.6a30.592 30.592 0 0 0 22.016-9.6 34.368 34.368 0 0 0 0-46.592 30.592 30.592 0 0 0-22.016-9.6 30.592 30.592 0 0 0-21.952 9.6 34.368 34.368 0 0 0 0 46.592z m-121.152-159.36c6.912 7.36 16.64 11.648 26.368 11.648a36.736 36.736 0 0 0 26.432-11.584 41.28 41.28 0 0 0 0-55.936 36.736 36.736 0 0 0-26.432-11.584 36.8 36.8 0 0 0-26.368 11.52 41.28 41.28 0 0 0 0 56zM12.736 564.672a42.88 42.88 0 0 0 30.784 13.44 42.88 42.88 0 0 0 30.784-13.44 48.128 48.128 0 0 0 0-65.216 42.88 42.88 0 0 0-30.72-13.44 42.88 42.88 0 0 0-30.848 13.44 48.128 48.128 0 0 0 0 65.216z m39.808-195.392a48.96 48.96 0 0 0 35.2 15.36 48.96 48.96 0 0 0 35.2-15.36 54.976 54.976 0 0 0 0-74.56 48.96 48.96 0 0 0-35.2-15.424 48.96 48.96 0 0 0-35.2 15.424 54.976 54.976 0 0 0 0 74.56zM168.32 212.48c10.368 11.008 24.96 17.408 39.68 17.408 14.592 0 29.184-6.4 39.552-17.408a61.888 61.888 0 0 0 0-83.84 55.104 55.104 0 0 0-39.616-17.408c-14.656 0-29.248 6.4-39.616 17.408a61.888 61.888 0 0 0 0 83.84zM337.344 124.8c11.52 12.16 27.712 19.264 43.968 19.264 16.256 0 32.448-7.04 43.968-19.264a68.672 68.672 0 0 0 0-93.184 61.248 61.248 0 0 0-43.968-19.264 61.248 61.248 0 0 0-43.968 19.264 68.736 68.736 0 0 0 0 93.184z m189.632-1.088c12.672 13.44 30.528 21.248 48.448 21.248s35.712-7.808 48.384-21.248a75.584 75.584 0 0 0 0-102.464A67.392 67.392 0 0 0 575.36 0c-17.92 0-35.776 7.808-48.448 21.248a75.584 75.584 0 0 0 0 102.464z m173.824 86.592c13.824 14.592 33.28 23.104 52.736 23.104 19.584 0 39.04-8.512 52.8-23.104a82.432 82.432 0 0 0 0-111.744 73.472 73.472 0 0 0-52.8-23.168c-19.52 0-38.912 8.512-52.736 23.168a82.432 82.432 0 0 0 0 111.744z m124.032 158.528c14.976 15.872 36.032 25.088 57.216 25.088 21.12 0 42.24-9.216 57.152-25.088a89.344 89.344 0 0 0 0-121.088 79.616 79.616 0 0 0-57.152-25.088c-21.184 0-42.24 9.216-57.216 25.088a89.344 89.344 0 0 0 0 121.088z m50.432 204.032c16.128 17.088 38.784 27.008 61.632 27.008 22.784 0 45.44-9.92 61.568-27.008a96.256 96.256 0 0 0 0-130.432 85.76 85.76 0 0 0-61.568-27.072c-22.848 0-45.44 9.984-61.632 27.072a96.192 96.192 0 0 0 0 130.432z" fill="#262626" p-id="2752"></path></svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

@ -0,0 +1 @@
<?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="1677806684596" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6373" xmlns:xlink="http://www.w3.org/1999/xlink" width="78" height="78"><path d="M768 341.333333h-42.666667v-85.333333c0-117.76-95.573333-213.333333-213.333333-213.333333S298.666667 138.24 298.666667 256v85.333333h-42.666667c-47.146667 0-85.333333 38.186667-85.333333 85.333334v426.666666c0 47.146667 38.186667 85.333333 85.333333 85.333334h512c47.146667 0 85.333333-38.186667 85.333333-85.333334V426.666667c0-47.146667-38.186667-85.333333-85.333333-85.333334zM512 725.333333c-47.146667 0-85.333333-38.186667-85.333333-85.333333s38.186667-85.333333 85.333333-85.333333 85.333333 38.186667 85.333333 85.333333-38.186667 85.333333-85.333333 85.333333z m132.266667-384H379.733333v-85.333333c0-72.96 59.306667-132.266667 132.266667-132.266667 72.96 0 132.266667 59.306667 132.266667 132.266667v85.333333z" p-id="6374"></path></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

@ -0,0 +1 @@
<?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="1677593736699" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2765" xmlns:xlink="http://www.w3.org/1999/xlink" width="78" height="78"><path d="M868 732h-70.3c-4.8 0-9.3 2.1-12.3 5.8-7 8.5-14.5 16.7-22.4 24.5-32.6 32.5-70.5 58.1-112.7 75.9-43.6 18.4-90 27.8-137.9 27.8-47.9 0-94.3-9.4-137.9-27.8-42.2-17.8-80.1-43.4-112.7-75.9-32.6-32.5-58.1-70.4-76-112.5C167.3 606.2 158 559.9 158 512s9.4-94.2 27.8-137.8c17.8-42.1 43.4-80 76-112.5s70.5-58.1 112.7-75.9c43.6-18.4 90-27.8 137.9-27.8 47.9 0 94.3 9.3 137.9 27.8 42.2 17.8 80.1 43.4 112.7 75.9 7.9 7.9 15.3 16.1 22.4 24.5 3 3.7 7.6 5.8 12.3 5.8H868c6.3 0 10.2-7 6.7-12.3C798 160.5 663.8 81.6 511.3 82 271.7 82.6 79.6 277.1 82 516.4 84.4 751.9 276.2 942 512.4 942c152.1 0 285.7-78.8 362.3-197.7 3.4-5.3-0.4-12.3-6.7-12.3z" p-id="2766"></path><path d="M956.9 505.7L815 393.7c-5.3-4.2-13-0.4-13 6.3v76H488c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h314v76c0 6.7 7.8 10.5 13 6.3l141.9-112c4.1-3.2 4.1-9.4 0-12.6z" p-id="2767"></path></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

@ -0,0 +1 @@
<svg t="1709818053027" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="922" width="200" height="200"><path d="M693.849 119.798l-2.303 0.027a286.336 286.336 0 0 0-177.152 64.967l-1.05 0.867-1.047-0.867a286.336 286.336 0 0 0-177.152-64.967l-2.295-0.027a263.802 263.802 0 0 0-189.462 77.25l-1.499 1.511a263.808 263.808 0 0 0-75.766 185.823l0.013 1.629c0 83.92 34.65 161.412 104.426 246.778l1.776 2.165 1.792 2.17 1.808 2.176 1.824 2.181 1.841 2.187 2.793 3.291 1.884 2.202 1.9 2.209 1.919 2.215 1.935 2.223 1.954 2.23 1.971 2.236 1.99 2.245 3.02 3.382 3.06 3.401 2.065 2.278 2.083 2.287 2.103 2.296 2.123 2.305 2.142 2.315 2.162 2.325 2.182 2.334 2.202 2.345 2.781 2.946 2.814 2.963 3.42 3.579 2.307 2.4 2.327 2.41 2.35 2.424 2.371 2.436 2.393 2.448 2.415 2.46 3.665 3.715 2.471 2.494 2.495 2.506 2.517 2.52 2.54 2.534 3.855 3.828 2.599 2.57 2.623 2.584 3.98 3.905 2.682 2.623 4.071 3.963 2.745 2.661 4.165 4.023 4.264 4.103 4.24 4.067 5.847 5.584 4.9 4.657 5.955 5.634 5.059 4.762 3.09 2.9 6.33 5.917 7.693 7.158 5.74 5.317 7.202 6.647 6.296 5.792 9.32 8.55 9.981 9.126 9.14 8.339 11.414 10.392 15.982 14.524 19.667 17.846 24.596 22.391c36.25 33 91.655 33 127.905 0l24.66-22.45 21.263-19.294 15.31-13.917 12.286-11.188 9.783-8.93 9.16-8.38 8.599-7.892 8.1-7.458 7.664-7.086 6.099-5.66 7.027-6.552 4.537-4.249 4.44-4.172 5.443-5.137 4.291-4.066 5.315-5.058 4.235-4.047 4.24-4.067 3.195-3.073 3.852-3.716 2.757-2.67 4.09-3.974 4.034-3.94 2.659-2.607 2.635-2.592 2.61-2.577 3.873-3.838 2.552-2.541 2.529-2.528 2.505-2.513 2.483-2.5 2.46-2.486 2.438-2.474 2.415-2.46 2.393-2.448 2.371-2.436 3.516-3.63 2.317-2.406 3.436-3.587 2.264-2.377 2.243-2.366 2.223-2.356 2.202-2.345 2.182-2.334 3.236-3.484 2.132-2.31 2.113-2.3 2.613-2.863 2.583-2.849 2.046-2.27 2.027-2.26 2.008-2.253 1.99-2.245 1.971-2.237 1.954-2.23 1.935-2.222 1.918-2.215 1.901-2.209 1.883-2.202 1.867-2.195 1.85-2.19 1.832-2.184 1.816-2.178 2.248-2.716 2.222-2.707 2.083-2.559c67.691-83.505 101.653-159.586 102.332-241.703l0.008-2.017A263.802 263.802 0 0 0 695.97 119.781l-2.12 0.017z m0.99 89.995a173.802 173.802 0 0 1 124.824 50.895A173.818 173.818 0 0 1 870.57 384.11l-0.016 1.651v0.25c0 60.234-26.343 119.146-84.11 189.82l-1.622 1.977-1.638 1.984-1.655 1.991-0.834 0.998-1.68 2.002-1.699 2.009-1.715 2.017-1.734 2.024-2.191 2.542-2.22 2.555-1.796 2.054-1.814 2.063-2.757 3.11-1.862 2.086-1.88 2.095-1.9 2.104-1.918 2.115-1.939 2.125-2.944 3.206-1.988 2.151-3.02 3.247-3.065 3.272-2.07 2.196-2.09 2.207-3.175 3.334-2.143 2.237-3.255 3.38-2.197 2.268-2.219 2.282-3.37 3.448-2.273 2.315-2.297 2.328-3.487 3.52-3.54 3.55-2.387 2.385-3.626 3.606-3.68 3.64-3.732 3.673-2.518 2.469-2.543 2.484-2.567 2.5-2.592 2.517-2.616 2.534-2.642 2.55-4.159 4.001-4.14 3.97-3.102 2.967-5.692 5.42-4.566 4.327-4.634 4.374-5.684 5.341-5.855 5.477-6.068 5.651-6.322 5.862-5.49 5.074-9.267 8.533-9.945 9.122-9.334 8.535-9.991 9.113-10.713 9.753-18.446 16.762-16.71 15.16-24.726 22.51a5 5 0 0 1-6.731 0l-24.662-22.451-27.05-24.551-17.368-15.803-11.483-10.473-10.624-9.715-8.666-7.95-4.714-4.337-7.878-7.268-6.417-5.943-6.15-5.718-4.95-4.621-4.816-4.514-5.635-5.304-4.605-4.354-4.546-4.315-4.914-4.686-2.068-1.978a3275.25 3275.25 0 0 1-5.523-5.3l-4.1-3.949-3.933-3.806-3.879-3.769-3.823-3.732-3.769-3.697-2.482-2.446-2.459-2.43-2.435-2.415-2.41-2.4-2.39-2.385-2.364-2.37-3.504-3.53-2.308-2.336-2.286-2.322-2.263-2.308-2.24-2.295-3.32-3.418-3.271-3.389-3.223-3.36-2.122-2.226-2.1-2.213-2.08-2.201-2.06-2.19-2.038-2.179-2.018-2.167-1.998-2.157-1.978-2.145-1.958-2.135-1.939-2.125-1.919-2.115-1.9-2.104-1.88-2.095-1.86-2.086-1.843-2.076-1.824-2.067-1.806-2.058-2.23-2.56-3.077-3.563-2.593-3.034-1.706-2.013-2.528-3.005-1.664-1.994-1.647-1.987-1.63-1.981-0.808-0.988c-57.19-69.967-83.58-128.407-84.102-188.013l-0.008-2.057-0.003-0.25a173.802 173.802 0 0 1 50.895-124.823 173.826 173.826 0 0 1 123.422-50.91l1.582 0.017a196.326 196.326 0 0 1 147.244 68.06c16.237 18.815 44.652 20.906 63.468 4.67a45 45 0 0 0 4.125-4.05l0.546-0.62a196.326 196.326 0 0 1 145.547-68.041l1.877-0.021z" fill="#2E2B26" p-id="923"></path><path d="M662.108 314.362c4.965-19.852 25.084-31.92 44.937-26.954l0.818 0.21 0.423 0.115 0.876 0.246a73.3 73.3 0 0 1 1.382 0.414l0.967 0.306c1.148 0.372 2.369 0.794 3.655 1.27l1.119 0.423 1.15 0.449 1.181 0.476 1.211 0.505 1.24 0.532a124.374 124.374 0 0 1 31.856 20.09c16.335 14.16 29.03 32.572 36.399 55.274 8.439 26 9.343 56.1 2.108 90.125-4.257 20.016-23.934 32.792-43.95 28.536-20.017-4.257-32.793-23.934-28.536-43.95 4.638-21.81 4.128-38.78-0.109-51.833-3.049-9.393-7.98-16.544-14.452-22.154a50.774 50.774 0 0 0-12.132-7.8 38.66 38.66 0 0 0-3.12-1.272l-0.445-0.153-0.227-0.073-0.579-0.16c-18.95-5.4-30.404-24.766-25.916-44.026l0.144-0.596z" fill="#FFCC00" p-id="924"></path></svg>

After

Width:  |  Height:  |  Size: 4.7 KiB

@ -0,0 +1 @@
<svg t="1681103142996" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1227" width="16" height="16"><path d="M764.197547 1013.987556h-13.084445a529.180444 529.180444 0 0 1-255.829333-88.234667A1139.939556 1139.939556 0 0 1 40.855324 424.106667 448.682667 448.682667 0 0 1 1.715769 275.911111a171.804444 171.804444 0 0 1 53.646222-150.528l16.099556-15.758222a311.751111 311.751111 0 0 1 52.906666-44.373333 135.68 135.68 0 0 1 168.049778 6.997333A351.118222 351.118222 0 0 1 398.231324 212.195556a141.937778 141.937778 0 0 1-34.872888 164.010666c-9.045333 8.988444-17.408 18.602667-25.031112 28.842667 5.859556 10.865778 12.572444 21.276444 20.024889 31.118222a909.937778 909.937778 0 0 0 229.489778 225.735111c7.566222 5.290667 15.416889 10.126222 23.608889 14.506667 5.518222-4.266667 15.303111-13.767111 21.048889-19.342222 62.179556-60.871111 121.173333-69.176889 197.404444-27.306667 41.528889 22.016 78.506667 51.825778 108.828445 87.779556 44.657778 48.981333 47.900444 122.88 7.793778 175.559111a405.048889 405.048889 0 0 1-90.282667 94.094222 144.497778 144.497778 0 0 1-92.046222 26.794667z m-10.069334-75.207112a88.746667 88.746667 0 0 0 56.945778-10.808888 326.030222 326.030222 0 0 0 73.216-75.207112 63.431111 63.431111 0 0 0-3.015111-87.324444 285.184 285.184 0 0 0-86.755556-69.176889c-46.876444-25.088-70.200889-22.584889-108.600888 15.018667-50.176 50.176-75.264 56.718222-138.922667 13.824a984.405333 984.405333 0 0 1-248.604445-244.280889c-48.924444-67.697778-46.648889-95.573333 12.060445-156.273778a67.697778 67.697778 0 0 0 19.057778-82.261333 272.611556 272.611556 0 0 0-83.057778-110.136889 61.952 61.952 0 0 0-81.180445-2.730667c-14.620444 10.012444-28.103111 21.617778-40.163555 34.588445l-18.033778 17.351111c-24.007111 22.926222-35.100444 56.263111-29.582222 89.031111 3.811556 42.382222 14.848 83.854222 32.597333 122.595555 87.779556 193.137778 225.678222 346.168889 426.325334 468.536889a456.476444 456.476444 0 0 0 217.713777 76.970667v0.284444z" p-id="1228"></path></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

@ -0,0 +1 @@
<svg t="1675579852089" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1242" width="400" height="400"><path d="M850.8 576c-14.3 0-26.9 9.5-30.8 23.2-3.6 12.7-8 25.1-13.1 37.3-16.1 38.1-39.2 72.3-68.6 101.7-29.4 29.4-63.6 52.5-101.7 68.6C597.1 823.6 555.2 832 512 832s-85.1-8.5-124.5-25.1c-38.1-16.1-72.3-39.2-101.7-68.6-29.4-29.4-52.5-63.6-68.6-101.7-4.1-9.7-7.7-19.6-10.8-29.5h55.1l-93.3-125.8L74.9 607h64.9C182.2 773.1 332.7 896 512 896c175.8 0 324-118.1 369.5-279.3 5.8-20.4-9.5-40.7-30.7-40.7zM173.2 448.7c14.3 0 26.9-9.5 30.8-23.2 3.6-12.7 8-25.3 13.2-37.5 16.1-38.1 39.2-72.3 68.6-101.7 29.4-29.4 63.6-52.5 101.7-68.6 39.4-16.7 81.3-25.1 124.5-25.1s85.1 8.5 124.5 25.1c38.1 16.1 72.3 39.2 101.7 68.6 29.4 29.4 52.5 63.6 68.6 101.7 4.7 11.2 8.8 22.6 12.2 34.2h-58L854.3 548l93.3-125.8h-62.3C844.7 253.6 693 128.4 512 128.4c-175.9 0-324.1 118.2-369.6 279.5-5.8 20.5 9.6 40.8 30.8 40.8z" p-id="1243" fill="#bfbfbf"></path></svg>

After

Width:  |  Height:  |  Size: 975 B

@ -0,0 +1,176 @@
<svg width="1024" height="626" viewBox="0 0 1024 626" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M863.229 616H241.229H198.729V327.5C198.729 307.066 215.295 290.5 235.729 290.5C256.164 290.5 272.729 273.935 272.729 253.5V222.25C272.729 184.557 303.286 154 340.979 154H649.229C681.814 154 708.229 180.415 708.229 213C708.229 245.585 734.645 272 767.229 272H785.729C828.531 272 863.229 306.698 863.229 349.5V616Z" fill="#F3F6FF"/>
<path d="M612.117 149.535L611.108 184.712C610.421 208.697 622.613 231.18 643.02 243.562L651.699 243.802C678.003 232.902 695.483 207.446 696.302 178.845L697.075 151.887L692.176 151.752C677.186 151.337 663.322 143.684 654.927 131.191L646.248 130.95C642.675 142.404 631.977 150.085 620.056 149.754L612.117 149.535Z" fill="#FFBD32"/>
<path d="M603.068 149.522L602.292 176.819C601.488 205.101 617.297 231.214 642.678 243.526C668.978 232.665 686.449 207.289 687.26 178.772L688.025 151.893L683.126 151.757C668.136 151.338 654.27 143.703 645.871 131.244C636.625 143.223 622.237 150.057 607.148 149.635L603.068 149.522Z" fill="#54B7FF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M611.229 157.979L610.605 179.823C609.955 202.601 622.679 223.625 643.1 233.515C664.261 224.788 678.328 204.353 678.983 181.386L679.598 159.88L675.618 159.77C663.576 159.435 652.435 153.303 645.676 143.29C638.233 152.918 626.671 158.409 614.549 158.071L611.229 157.979Z" stroke="black" stroke-width="2"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M666.567 176.778L639.576 204.99L625.931 190.302L631.854 184.606L639.683 193.034L660.746 171.017L666.567 176.778Z" fill="white"/>
<path d="M768.729 139C771.49 139 773.729 136.761 773.729 134C773.729 131.239 771.49 129 768.729 129C765.968 129 763.729 131.239 763.729 134C763.729 136.761 765.968 139 768.729 139Z" fill="#54B7FF"/>
<path d="M799.229 163.5C805.856 163.5 811.229 158.127 811.229 151.5C811.229 144.873 805.856 139.5 799.229 139.5C792.602 139.5 787.229 144.873 787.229 151.5C787.229 158.127 792.602 163.5 799.229 163.5Z" stroke="#54B7FF"/>
<path d="M302.984 108.343C311.835 110.03 320.379 104.222 322.065 95.37C323.752 86.5183 317.944 77.9752 309.092 76.2884C300.24 74.6017 291.697 80.41 290.011 89.2616C288.324 98.1133 294.132 106.656 302.984 108.343Z" fill="#54B7FF"/>
<path d="M279.53 139.906C294.75 142.806 309.438 132.819 312.338 117.6C315.238 102.381 305.252 87.6922 290.033 84.7921C274.814 81.8919 260.125 91.8785 257.225 107.098C254.325 122.317 264.311 137.005 279.53 139.906Z" stroke="#7268F5"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M300.086 625.466C298.046 625.466 296.454 623.7 296.666 621.671L321.827 380.432L331.77 381.5L303.502 622.428C303.298 624.16 301.83 625.466 300.086 625.466Z" fill="#627AC1"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M411.954 625.466C413.994 625.466 415.586 623.7 415.374 621.671L390.213 380.432L380.27 381.5L408.538 622.428C408.742 624.16 410.21 625.466 411.954 625.466Z" fill="#627AC1"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M572.086 625.466C570.046 625.466 568.454 623.7 568.666 621.671L593.827 380.432L603.77 381.5L575.502 622.428C575.298 624.16 573.83 625.466 572.086 625.466Z" fill="#627AC1"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M683.954 625.466C685.994 625.466 687.586 623.7 687.374 621.671L662.213 380.432L652.27 381.5L680.538 622.428C680.742 624.16 682.21 625.466 683.954 625.466Z" fill="#627AC1"/>
<path d="M398.27 370H307.27V385H398.27V370Z" fill="#A3BAFF"/>
<path d="M680.27 370H398.27V385H680.27V370Z" fill="#CCD9FF"/>
<path d="M433.241 247.786C433.241 246.127 434.587 244.783 436.247 244.786L451.432 244.815L443.512 352.628H433.241V247.786Z" fill="#706AC7"/>
<path d="M443.512 249.78C443.512 247.019 445.751 244.78 448.512 244.78H582.31C585.071 244.78 587.31 247.019 587.31 249.78V352.628H443.512V249.78Z" fill="#CFCCFF"/>
<path d="M575.463 249.916H455.36C452.598 249.916 450.36 252.154 450.36 254.916V342.493C450.36 345.254 452.598 347.493 455.36 347.493H575.463C578.224 347.493 580.463 345.254 580.463 342.493V254.916C580.463 252.154 578.224 249.916 575.463 249.916Z" fill="#282F48"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M565.3 249.916C568.349 260.905 571.067 284.71 559.063 292.713C552.851 296.854 543.301 296.125 533.889 295.407C519.956 294.345 506.327 293.305 504.283 308.119C504.045 309.849 503.823 311.528 503.608 313.156C500.735 334.898 499.071 347.493 475.181 347.493H575.462C578.223 347.493 580.462 345.254 580.462 342.493V254.916C580.462 252.154 578.223 249.916 575.462 249.916H565.3Z" fill="#2F3B67"/>
<path d="M501.139 268.746H471.478C469.269 268.746 467.478 270.537 467.478 272.746V275.018C467.478 277.227 469.269 279.018 471.478 279.018H501.139C503.348 279.018 505.139 277.227 505.139 275.018V272.746C505.139 270.537 503.348 268.746 501.139 268.746Z" fill="#5FFFD8"/>
<path d="M562.768 268.746H550.225C548.016 268.746 546.225 270.537 546.225 272.746V275.018C546.225 277.227 548.016 279.018 550.225 279.018H562.768C564.977 279.018 566.768 277.227 566.768 275.018V272.746C566.768 270.537 564.977 268.746 562.768 268.746Z" fill="#5FFFD8"/>
<path d="M565.055 296.136H469.19C468.244 296.136 467.478 296.903 467.478 297.848C467.478 298.794 468.244 299.56 469.19 299.56H565.055C566 299.56 566.767 298.794 566.767 297.848C566.767 296.903 566 296.136 565.055 296.136Z" fill="#5FFFD8"/>
<path d="M565.055 308.12H469.19C468.244 308.12 467.478 308.886 467.478 309.831C467.478 310.777 468.244 311.543 469.19 311.543H565.055C566 311.543 566.767 310.777 566.767 309.831C566.767 308.886 566 308.12 565.055 308.12Z" fill="#5FFFD8"/>
<path d="M525.682 320.103H469.19C468.244 320.103 467.478 320.869 467.478 321.815C467.478 322.76 468.244 323.526 469.19 323.526H525.682C526.627 323.526 527.394 322.76 527.394 321.815C527.394 320.869 526.627 320.103 525.682 320.103Z" fill="#5FFFD8"/>
<path d="M433.241 352.628H479.461V369.747H438.241C435.479 369.747 433.241 367.508 433.241 364.747V352.628Z" fill="#706AC7"/>
<path d="M479.461 352.628H628.395V364.747C628.395 367.508 626.156 369.747 623.395 369.747H479.461V352.628Z" fill="#2C2770"/>
<path d="M457.345 319H382.729L393.113 370H467.729L457.345 319Z" fill="#BE7430"/>
<path d="M383.08 319H456.729L446.378 370H372.729L383.08 319Z" fill="#FF9330"/>
<path d="M387.424 326.994C387.67 325.831 388.696 325 389.883 325H446.213C447.813 325 449.006 326.476 448.673 328.042L441.034 364.005C440.787 365.168 439.762 366 438.575 366H382.244C380.645 366 379.452 364.524 379.785 362.957L387.424 326.994Z" fill="#FFB36C"/>
<path d="M446.729 340L441.269 365.276C441.178 365.698 440.8 366 440.362 366H372.987C372.897 366 372.811 365.988 372.729 365.964V365.928C382.407 366.172 403.619 363.845 409.555 356.61C413.491 351.813 418.204 352.407 422.789 352.53C426.849 352.64 430.518 352.739 432.653 349.392C434.636 346.284 437.147 346.044 439.558 345.813C442.466 345.535 445.226 345.271 446.729 340Z" fill="#F2A864"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M387.254 316.447C387.563 317.044 387.729 317.763 387.729 318.5L386.586 318.5C386.586 317.451 385.979 316.6 385.231 316.6C384.483 316.6 383.876 317.451 383.876 318.5C383.876 319.549 384.483 320.4 385.231 320.4C385.371 320.4 385.505 320.37 385.632 320.315L385.971 321.842C385.469 322.061 384.929 322.052 384.43 321.817C383.931 321.581 383.498 321.131 383.193 320.53C382.887 319.93 382.725 319.21 382.729 318.472C382.733 317.735 382.904 317.019 383.216 316.425C383.528 315.831 383.966 315.391 384.468 315.166C384.969 314.942 385.509 314.945 386.009 315.175C386.509 315.405 386.945 315.85 387.254 316.447Z" fill="#C4C4C4"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M445.253 316.447C445.563 317.044 445.729 317.763 445.729 318.5L444.586 318.5C444.586 317.451 443.979 316.6 443.231 316.6C442.483 316.6 441.876 317.451 441.876 318.5C441.876 319.549 442.483 320.4 443.231 320.4C443.37 320.4 443.505 320.37 443.632 320.315L443.971 321.842C443.469 322.061 442.929 322.052 442.43 321.817C441.931 321.581 441.498 321.131 441.193 320.53C440.888 319.93 440.725 319.21 440.729 318.472C440.734 317.735 440.904 317.019 441.216 316.425C441.528 315.831 441.966 315.391 442.468 315.166C442.969 314.942 443.509 314.945 444.009 315.175C444.509 315.405 444.945 315.85 445.253 316.447Z" fill="#C4C4C4"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M426.254 316.447C426.563 317.044 426.729 317.763 426.729 318.5L425.586 318.5C425.586 317.451 424.979 316.6 424.231 316.6C423.482 316.6 422.876 317.451 422.876 318.5C422.876 319.549 423.482 320.4 424.231 320.4C424.371 320.4 424.505 320.37 424.632 320.315L424.971 321.842C424.469 322.061 423.929 322.052 423.43 321.817C422.931 321.581 422.498 321.131 422.193 320.53C421.887 319.93 421.725 319.21 421.729 318.472C421.733 317.735 421.904 317.019 422.216 316.425C422.528 315.831 422.966 315.391 423.468 315.166C423.969 314.942 424.509 314.945 425.009 315.175C425.509 315.405 425.945 315.85 426.254 316.447Z" fill="#C4C4C4"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M407.254 316.447C407.563 317.044 407.729 317.763 407.729 318.5L406.586 318.5C406.586 317.451 405.98 316.6 405.231 316.6C404.483 316.6 403.876 317.451 403.876 318.5C403.876 319.549 404.483 320.4 405.231 320.4C405.371 320.4 405.505 320.37 405.632 320.315L405.971 321.842C405.469 322.061 404.929 322.052 404.43 321.817C403.931 321.581 403.498 321.131 403.193 320.53C402.887 319.93 402.725 319.21 402.729 318.472C402.733 317.735 402.904 317.019 403.216 316.425C403.528 315.831 403.966 315.391 404.468 315.166C404.969 314.942 405.509 314.945 406.009 315.175C406.509 315.405 406.945 315.85 407.254 316.447Z" fill="#C4C4C4"/>
<path d="M392.126 332.707C392.329 331.713 393.199 331 394.209 331H397.602C398.948 331 399.955 332.241 399.685 333.565L399.332 335.293C399.129 336.287 398.259 337 397.249 337H393.856C392.51 337 391.503 335.759 391.773 334.435L392.126 332.707Z" fill="#FFDAB8"/>
<path d="M407.126 332.707C407.329 331.713 408.199 331 409.209 331H412.602C413.948 331 414.955 332.241 414.685 333.565L414.332 335.293C414.129 336.287 413.259 337 412.249 337H408.856C407.51 337 406.503 335.759 406.773 334.435L407.126 332.707Z" fill="#FFDAB8"/>
<path d="M421.126 332.707C421.329 331.713 422.199 331 423.209 331H426.602C427.948 331 428.955 332.241 428.685 333.565L428.332 335.293C428.129 336.287 427.259 337 426.249 337H422.856C421.51 337 420.503 335.759 420.773 334.435L421.126 332.707Z" fill="#FFDAB8"/>
<path d="M436.126 332.707C436.329 331.713 437.199 331 438.209 331H441.602C442.948 331 443.955 332.241 443.685 333.565L443.332 335.293C443.129 336.287 442.259 337 441.249 337H437.856C436.51 337 435.503 335.759 435.773 334.435L436.126 332.707Z" fill="#FFDAB8"/>
<path d="M389.126 343.707C389.329 342.713 390.199 342 391.209 342H394.602C395.948 342 396.955 343.241 396.685 344.565L396.332 346.293C396.129 347.287 395.259 348 394.249 348H390.856C389.51 348 388.503 346.759 388.773 345.435L389.126 343.707Z" fill="#FFDAB8"/>
<path d="M404.126 343.707C404.329 342.713 405.199 342 406.209 342H409.602C410.948 342 411.955 343.241 411.685 344.565L411.332 346.293C411.129 347.287 410.259 348 409.249 348H405.856C404.51 348 403.503 346.759 403.773 345.435L404.126 343.707Z" fill="#FFDAB8"/>
<path d="M418.126 343.707C418.329 342.713 419.199 342 420.209 342H423.602C424.948 342 425.955 343.241 425.685 344.565L425.332 346.293C425.129 347.287 424.259 348 423.249 348H419.856C418.51 348 417.503 346.759 417.773 345.435L418.126 343.707Z" fill="#FFDAB8"/>
<path d="M433.126 343.707C433.329 342.713 434.199 342 435.209 342H438.602C439.948 342 440.955 343.241 440.685 344.565L440.332 346.293C440.129 347.287 439.259 348 438.249 348H434.856C433.51 348 432.503 346.759 432.773 345.435L433.126 343.707Z" fill="#FFDAB8"/>
<path d="M386.126 354.707C386.329 353.713 387.199 353 388.209 353H391.602C392.948 353 393.955 354.241 393.685 355.565L393.332 357.293C393.129 358.287 392.259 359 391.249 359H387.856C386.51 359 385.503 357.759 385.773 356.435L386.126 354.707Z" fill="#FFDAB8"/>
<path d="M401.126 354.707C401.329 353.713 402.199 353 403.209 353H406.602C407.948 353 408.955 354.241 408.685 355.565L408.332 357.293C408.129 358.287 407.259 359 406.249 359H402.856C401.51 359 400.503 357.759 400.773 356.435L401.126 354.707Z" fill="#FFDAB8"/>
<path d="M415.126 354.707C415.329 353.713 416.199 353 417.209 353H420.602C421.948 353 422.955 354.241 422.685 355.565L422.332 357.293C422.129 358.287 421.259 359 420.249 359H416.856C415.51 359 414.503 357.759 414.773 356.435L415.126 354.707Z" fill="#FFDAB8"/>
<path d="M430.126 354.707C430.329 353.713 431.199 353 432.209 353H435.602C436.948 353 437.955 354.241 437.685 355.565L437.332 357.293C437.129 358.287 436.259 359 435.249 359H431.856C430.51 359 429.503 357.759 429.773 356.435L430.126 354.707Z" fill="#FFDAB8"/>
<path d="M601.298 18.0682H370.729C362.445 18.0682 355.729 24.784 355.729 33.0682V90.5387C355.729 98.823 362.445 105.539 370.729 105.539H601.298C609.582 105.539 616.298 98.823 616.298 90.5387V33.0682C616.298 24.784 609.582 18.0682 601.298 18.0682Z" fill="#0B86DF"/>
<path d="M605.729 18.0682H375.16C366.876 18.0682 360.16 24.784 360.16 33.0682V90.5387C360.16 98.823 366.876 105.539 375.16 105.539H605.729C614.013 105.539 620.729 98.823 620.729 90.5387V33.0682C620.729 24.784 614.013 18.0682 605.729 18.0682Z" fill="#54B7FF"/>
<path d="M469.63 36.9486L473.212 44.2004L481.222 45.3636L475.426 51.008L476.794 58.9788L469.63 55.2157L462.465 58.9788L463.833 51.008L458.038 45.3636L466.048 44.2004L469.63 36.9486Z" fill="#FFE071"/>
<path d="M499.091 36.9485L502.673 44.2003L510.683 45.3634L504.886 51.0078L506.255 58.9786L499.091 55.2155L491.926 58.9786L493.294 51.0078L487.498 45.3634L495.509 44.2003L499.091 36.9485Z" fill="#FFE071"/>
<path d="M528.552 36.9485L532.134 44.2003L540.144 45.3634L534.348 51.0078L535.716 58.9786L528.552 55.2155L521.388 58.9786L522.756 51.0078L516.96 45.3634L524.97 44.2003L528.552 36.9485Z" fill="#FFE071"/>
<path d="M558.013 36.9485L561.595 44.2003L569.605 45.3634L563.809 51.0078L565.177 58.9786L558.013 55.2155L550.849 58.9786L552.217 51.0078L546.421 45.3634L554.431 44.2003L558.013 36.9485Z" fill="#FFE071"/>
<path d="M587.475 36.9485L591.057 44.2003L599.067 45.3634L593.27 51.0078L594.639 58.9786L587.475 55.2155L580.311 58.9786L581.679 51.0078L575.882 45.3634L583.893 44.2003L587.475 36.9485Z" fill="#FFE071"/>
<path d="M585.374 70.0244H462.949C461.864 70.0244 460.984 70.9044 460.984 71.99V72.0049C460.984 73.0904 461.864 73.9704 462.949 73.9704H585.374C586.46 73.9704 587.34 73.0904 587.34 72.0049V71.99C587.34 70.9044 586.46 70.0244 585.374 70.0244Z" fill="white"/>
<path d="M549.366 83.1775H462.949C461.864 83.1775 460.984 84.0575 460.984 85.1431V85.158C460.984 86.2435 461.864 87.1235 462.949 87.1235H549.366C550.451 87.1235 551.331 86.2435 551.331 85.158V85.1431C551.331 84.0575 550.451 83.1775 549.366 83.1775Z" fill="white"/>
<path d="M406.316 93.0429C422.949 93.0429 436.432 79.4982 436.432 62.79C436.432 46.0818 422.949 32.5371 406.316 32.5371C389.684 32.5371 376.2 46.0818 376.2 62.79C376.2 79.4982 389.684 93.0429 406.316 93.0429Z" fill="#71DCFF"/>
<mask id="mask0" mask-type="alpha" maskUnits="userSpaceOnUse" x="376" y="32" width="61" height="62">
<path d="M406.316 93.0429C422.949 93.0429 436.432 79.4982 436.432 62.79C436.432 46.0818 422.949 32.5371 406.316 32.5371C389.684 32.5371 376.2 46.0818 376.2 62.79C376.2 79.4982 389.684 93.0429 406.316 93.0429Z" fill="white"/>
</mask>
<g mask="url(#mask0)">
<path d="M397.697 59.0227C390.023 58.3 380.51 67.354 376.713 71.9716C376.913 75.4846 377.672 82.9932 379.111 84.9205C380.55 86.8477 395.299 92.75 402.494 95.4602C417.982 93.754 446.441 86.667 436.368 71.9716C423.778 53.6022 407.29 59.9261 397.697 59.0227Z" fill="white"/>
</g>
<path d="M422.018 24.8889C421.345 19.4786 416.127 18.6896 413.603 18.9714C412.2 18.126 409.395 14.7445 403.504 15.5899C397.613 16.4352 390.881 19.8167 392.564 27.4249C392.564 27.4249 391.152 42.0753 401.922 42.0753C401.922 45.4716 410.338 62.7201 410.338 52.3978C410.338 42.0753 408.896 49.8507 415.734 42.0753C419.93 40.5697 422.859 31.6518 422.018 24.8889Z" fill="#2C2770"/>
<path d="M415.134 19.875C420.597 19.875 425.027 15.4258 425.027 9.9375C425.027 4.44917 420.597 0 415.134 0C409.67 0 405.241 4.44917 405.241 9.9375C405.241 15.4258 409.67 19.875 415.134 19.875Z" fill="#2C2770"/>
<path d="M417.81 30.8064V33.3424C418.932 33.0607 421.176 33.0043 421.176 35.0332C421.176 37.5692 419.493 39.26 417.81 38.4146C417.592 41.0495 416.181 46.2508 411.985 48.4191C412.136 50.4058 412.575 53.2576 413.602 55.3218C414.949 58.027 417.53 59.2668 418.652 59.5486C416.969 61.521 412.256 65.4665 406.87 65.4665C401.484 65.4665 397.333 61.521 395.93 59.5486C396.772 59.2668 398.96 58.1961 400.979 56.1672C402.569 54.5701 402.873 50.7729 402.793 47.9919C399.296 45.6288 398.229 40.8896 397.613 38.4146C396.491 38.6964 394.247 38.5837 394.247 35.8785C394.247 33.1734 396.772 33.0607 397.613 33.3424V30.8064C399.296 31.0882 403.672 30.9754 407.712 28.2703C411.751 25.5651 412.761 24.3253 412.761 24.0435C412.761 25.4524 413.379 28.0463 414.444 29.1156C416.127 30.8064 417.249 30.5246 417.81 30.8064Z" fill="#FFAE64"/>
<path d="M410.763 42.3788L406.935 44.3019C407.208 44.8514 408.083 45.5657 409.396 45.1261C410.709 44.6865 410.855 43.2946 410.763 42.3788Z" fill="white"/>
<path d="M402.558 30.8402H399.825C399.371 30.8402 399.004 31.2078 399.004 31.6613V31.6675C399.004 32.121 399.371 32.4886 399.825 32.4886H402.558C403.012 32.4886 403.379 32.121 403.379 31.6675V31.6613C403.379 31.2078 403.012 30.8402 402.558 30.8402Z" fill="#2C2770"/>
<path d="M413.498 30.8402H410.764C410.31 30.8402 409.943 31.2078 409.943 31.6613V31.6675C409.943 32.121 410.31 32.4886 410.764 32.4886H413.498C413.951 32.4886 414.319 32.121 414.319 31.6675V31.6613C414.319 31.2078 413.951 30.8402 413.498 30.8402Z" fill="#2C2770"/>
<path d="M411.857 35.4116C412.409 35.4116 412.857 34.9639 412.857 34.4116C412.857 33.8593 412.409 33.4116 411.857 33.4116C411.305 33.4116 410.857 33.8593 410.857 34.4116C410.857 34.9639 411.305 35.4116 411.857 35.4116Z" fill="black"/>
<path d="M405.567 31.9391V41.8293H408.028" stroke="black" stroke-width="0.6"/>
<path d="M401.465 35.4116C402.017 35.4116 402.465 34.9639 402.465 34.4116C402.465 33.8593 402.017 33.4116 401.465 33.4116C400.913 33.4116 400.465 33.8593 400.465 34.4116C400.465 34.9639 400.913 35.4116 401.465 35.4116Z" fill="black"/>
<path d="M419.242 34.9611C419.515 35.6021 419.57 36.9391 417.601 37.1589" stroke="black" stroke-width="0.6"/>
<path d="M395.86 34.9611C395.587 35.6021 395.532 36.9391 397.501 37.1589" stroke="black" stroke-width="0.6"/>
<mask id="mask1" mask-type="alpha" maskUnits="userSpaceOnUse" x="394" y="24" width="28" height="42">
<path d="M417.81 30.8064V33.3424C418.932 33.0607 421.176 33.0043 421.176 35.0332C421.176 37.5692 419.493 39.26 417.81 38.4146C417.592 41.0495 416.181 46.2508 411.985 48.4191C412.136 50.4058 412.575 53.2576 413.602 55.3218C414.949 58.027 417.53 59.2668 418.652 59.5486C416.969 61.521 412.256 65.4664 406.87 65.4664C401.484 65.4664 397.333 61.521 395.93 59.5486C396.772 59.2668 398.96 58.1961 400.979 56.1672C402.569 54.5701 402.873 50.7729 402.793 47.9919C399.296 45.6288 398.229 40.8896 397.613 38.4146C396.491 38.6964 394.247 38.5837 394.247 35.8785C394.247 33.1734 396.772 33.0607 397.613 33.3424V30.8064C399.296 31.0882 403.672 30.9754 407.712 28.2703C411.751 25.5651 412.761 24.3253 412.761 24.0435C412.761 25.4524 413.379 28.0463 414.444 29.1156C416.127 30.8064 417.249 30.5246 417.81 30.8064Z" fill="white"/>
</mask>
<g mask="url(#mask1)">
<path d="M402.012 47.5986C402.741 48.0565 405.075 49.247 407.482 49.247C409.766 49.247 411.903 48.5044 412.582 48.194L412.678 48.1481C412.65 48.162 412.618 48.1774 412.582 48.194L401.739 53.3679L402.012 47.5986Z" fill="#FF8282"/>
</g>
<path d="M306.104 614.28L294.303 604.165C288.025 598.784 289.226 582.35 289.226 582.35L272.348 581.437V599.683L269.612 609.263L304.736 616.105L306.104 614.28Z" fill="#FFAE64"/>
<path d="M300.213 625.228H311.49C312.957 625.228 314.313 624.449 315.053 623.182C316.169 621.268 315.58 618.809 313.736 617.581C311.506 616.097 308.252 613.891 304.28 611.087C296.525 605.613 293.332 601.964 293.332 601.964C293.332 601.964 288.77 604.701 281.928 604.701C275.086 604.701 271.436 599.683 271.436 599.683C268.5 607.023 268.395 615.192 271.141 622.605L271.436 623.403L284.665 624.316L286.946 622.491L292.979 624.215C295.332 624.887 297.766 625.228 300.213 625.228Z" fill="#2C2770"/>
<path d="M183.854 614.28L195.656 604.165C201.933 598.784 200.732 582.35 200.732 582.35L217.61 581.437V599.683L220.347 609.263L185.223 616.105L183.854 614.28Z" fill="#FFAE64"/>
<path d="M189.746 625.228H178.469C177.002 625.228 175.646 624.449 174.906 623.182C173.79 621.268 174.379 618.809 176.223 617.581C178.453 616.097 181.707 613.891 185.679 611.087C193.434 605.613 196.627 601.964 196.627 601.964C196.627 601.964 201.189 604.701 208.031 604.701C214.873 604.701 218.522 599.683 218.522 599.683C221.458 607.023 221.564 615.192 218.818 622.605L218.522 623.403L205.294 624.316L203.013 622.491L196.98 624.215C194.627 624.887 192.193 625.228 189.746 625.228Z" fill="#2C2770"/>
<path d="M222.983 329.045L226.733 310.482L302.911 308.201L307.616 343.962C309.038 354.768 309.497 365.678 308.988 376.565L298.806 594.21H271.892L266.418 376.168L226.733 594.21H197.995L220.347 384.835L220.143 382.656C218.463 364.743 219.42 346.68 222.983 329.045Z" fill="#2C2770"/>
<mask id="mask2" mask-type="alpha" maskUnits="userSpaceOnUse" x="197" y="308" width="112" height="287">
<path d="M222.071 329.045L225.821 310.482L301.999 308.201L306.704 343.962C308.126 354.768 308.585 365.678 308.076 376.565L297.894 594.21H270.98L265.506 376.168L225.821 594.21H197.083L219.435 384.835L219.23 382.656C217.551 364.743 218.508 346.68 222.071 329.045Z" fill="white"/>
</mask>
<g mask="url(#mask2)">
<path d="M231.295 308.657C228.862 320.821 223.996 355.732 223.996 398.063C223.996 398.063 208.791 547.074 201.189 595.122" stroke="white"/>
<path d="M266.875 376.624C269.612 383.466 275.177 406.274 275.542 442.766C275.907 479.259 275.694 558.934 275.542 594.21" stroke="white"/>
</g>
<path d="M359.639 189.525L337.576 200.732L340.001 225.045L363.136 214.834C375.708 209.285 384.551 197.672 386.556 184.077L394.479 130.367L400.856 123.104L405.807 116.685C407.503 114.486 408.13 111.646 407.517 108.937C407.073 106.972 405.745 105.323 403.921 104.469L394.712 100.157L400.779 85.5254C401.368 84.1044 400.551 82.4928 399.056 82.1289C397.967 81.8636 396.834 82.354 396.281 83.3298L386.98 99.7583L384.377 99.3237C383.082 99.1074 381.796 99.7591 381.205 100.932L378.186 106.918C377.35 108.577 377.117 110.474 377.526 112.285L379.902 122.787L359.639 189.525Z" fill="#FF9330"/>
<path d="M401.037 103.181L395.566 113.68C395.023 114.723 393.766 115.166 392.689 114.695C391.666 114.248 391.13 113.113 391.435 112.038L392.342 108.841" stroke="black"/>
<path d="M406.029 105.634L399.428 115.573C398.806 116.509 397.566 116.803 396.59 116.247C395.598 115.681 395.226 114.435 395.746 113.418L396.008 112.906" stroke="black"/>
<path d="M406.875 113.25L401.508 120.779C400.828 121.733 399.535 122.018 398.516 121.438C397.532 120.876 397.107 119.678 397.519 118.622L398.512 116.074" stroke="black"/>
<path d="M388.83 100.567L398.147 104.526C398.932 104.86 399.324 105.745 399.043 106.55C398.436 108.291 396.731 109.402 394.893 109.253L386.371 108.564C388.022 109.631 390.273 115.532 390.503 121.646" stroke="black"/>
<path d="M225.584 210.606L246.234 205.187H299.679C306.12 205.187 312.53 204.298 318.728 202.545L349.983 193.706L355.457 221.746L309.387 249.691L305.246 266.768L308.87 292.476C310.335 302.864 302.133 312.087 291.645 311.845L229.81 310.419C225.283 310.315 221.745 306.477 222.008 301.957L224.027 267.228L216.729 281.257L190.329 275.565L199.744 236.908C202.873 224.06 212.793 213.962 225.584 210.606Z" fill="#54B7FF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M246.234 205.187L225.584 210.606C212.793 213.962 202.873 224.06 199.744 236.908L190.329 275.565L216.729 281.257L224.027 267.228L191.249 468.842C190.762 471.834 193.029 474.567 196.059 474.643L220.283 475.247L250.729 362.5V212H277.229L283.229 362.5L300.174 477.238L324.948 477.856C327.996 477.932 330.402 475.286 330.037 472.259L305.246 266.768L309.387 249.691L355.457 221.746L349.983 193.706L318.728 202.545C312.53 204.298 306.12 205.187 299.679 205.187H246.234Z" fill="#FFE071"/>
<path d="M286.729 164L273.729 162" stroke="black"/>
<path d="M246.377 200.617C248.255 195.925 247.942 180.674 247.551 173.635C256.162 175.2 273.031 181.026 271.622 191.819C270.213 202.611 274.166 205.31 276.319 205.31C278.667 210.393 280.193 221.147 267.512 223.493C254.831 225.839 244.224 214.694 240.506 208.829C241.68 208.047 244.498 205.31 246.377 200.617Z" fill="#FF9330"/>
<mask id="mask3" mask-type="alpha" maskUnits="userSpaceOnUse" x="240" y="173" width="39" height="51">
<path d="M246.691 200.609C248.558 195.975 248.247 180.913 247.858 173.962C256.414 175.506 273.176 181.261 271.776 191.92C270.376 202.579 274.304 205.244 276.443 205.244C278.777 210.264 280.293 220.885 267.693 223.202C255.092 225.519 244.552 214.513 240.858 208.72C242.024 207.947 244.825 205.244 246.691 200.609Z" fill="white"/>
</mask>
<g mask="url(#mask3)">
<path d="M273.379 201.321C254.383 199.256 248.257 183.253 247.568 175.51L273.379 189.964C281.294 194.61 292.376 203.386 273.379 201.321Z" fill="#D76767"/>
</g>
<path d="M248.067 175.237C247.685 181.667 255.525 193.357 269.868 192.773C278.241 192.432 280.356 182.859 282.489 172.314C284.01 164.796 286.886 156.785 285.931 151.27L273.31 147.179C275.031 149.517 274.466 149 268.729 149C263.052 149 260.833 145.754 258.729 144C257.582 151.015 248.729 143.671 248.729 147.179C248.729 149.984 250.729 168.357 250.729 170.5C248.729 170.5 249.767 164 248.067 162.961C246.155 161.792 242.331 160.974 242.331 167.053C242.331 173.132 246.155 175.042 248.067 175.237Z" fill="#FF9330"/>
<path d="M248.729 170.5C248.729 170.5 249.729 162.5 246.729 162.5C240.405 162.5 242.729 170 242.729 170C236.896 159 238.729 138.5 255.729 133.5C281.387 125.954 293.229 149.79 285.729 151C270.229 153.5 258.729 146 256.729 147.5C254.729 149 252.729 163 251.729 168C250.929 172 249.562 171.667 248.729 170.5Z" fill="#2C2770"/>
<path d="M265.553 178.156L271.939 181.349C271.483 182.261 270.023 183.447 267.834 182.717C265.644 181.987 265.401 179.676 265.553 178.156Z" fill="white"/>
<path d="M279.238 158.997H283.8C284.555 158.997 285.168 159.61 285.168 160.365C285.168 161.121 284.555 161.734 283.8 161.734H279.238C278.482 161.734 277.869 161.121 277.869 160.365C277.869 159.61 278.482 158.997 279.238 158.997Z" fill="#2C2770"/>
<path d="M260.992 158.997H265.553C266.309 158.997 266.922 159.61 266.922 160.365C266.922 161.121 266.309 161.734 265.553 161.734H260.992C260.236 161.734 259.623 161.121 259.623 160.365C259.623 159.61 260.236 158.997 260.992 158.997Z" fill="#2C2770"/>
<path d="M263.728 167.295C262.972 167.295 262.36 166.683 262.36 165.927C262.36 165.171 262.972 164.559 263.728 164.559C264.484 164.559 265.096 165.171 265.096 165.927C265.096 166.683 264.484 167.295 263.728 167.295Z" fill="black"/>
<path d="M274.22 160.822V177.243H270.115" stroke="black"/>
<path d="M279.062 167.295C278.306 167.295 277.693 166.683 277.693 165.927C277.693 165.171 278.306 164.559 279.062 164.559C279.818 164.559 280.43 165.171 280.43 165.927C280.43 166.683 279.818 167.295 279.062 167.295Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M271.729 165.5C271.729 168.814 269.043 171.5 265.729 171.5C262.416 171.5 259.729 168.814 259.729 165.5C259.729 164.67 259.897 164.066 260.168 163.619C260.437 163.175 260.829 162.848 261.345 162.607C262.408 162.109 263.926 162 265.729 162C267.533 162 269.051 162.109 270.113 162.607C270.629 162.848 271.022 163.175 271.291 163.619C271.561 164.066 271.729 164.67 271.729 165.5Z" stroke="black"/>
<path d="M275.168 163.619C274.048 162.576 272.756 162.576 271.291 163.619" stroke="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M286.729 165.5C286.729 168.814 284.043 171.5 280.729 171.5C277.416 171.5 274.729 168.814 274.729 165.5C274.729 164.67 274.897 164.066 275.168 163.619C275.437 163.175 275.829 162.848 276.345 162.607C277.408 162.109 278.926 162 280.729 162C282.533 162 284.051 162.109 285.113 162.607C285.629 162.848 286.022 163.175 286.291 163.619C286.561 164.066 286.729 164.67 286.729 165.5Z" stroke="black"/>
<path d="M259.729 164L246.729 162" stroke="black"/>
<path d="M348.958 259.461L297.925 266.595C297.201 266.696 296.59 267.184 296.331 267.868L282.397 304.72C281.861 306.136 283.033 307.611 284.534 307.409L334.988 300.631C335.688 300.537 336.287 300.08 336.563 299.43L352.064 262.881C352.439 261.996 352.132 260.97 351.332 260.436L350.344 259.778C349.936 259.506 349.443 259.393 348.958 259.461Z" fill="#2C2770"/>
<path d="M350.034 261.58L301.686 268.348C299.876 268.601 298.349 269.822 297.702 271.531L286.175 302.016C284.836 305.557 287.766 309.244 291.518 308.74L335.255 302.864C337.026 302.626 338.536 301.461 339.215 299.808L353.225 265.691C354.105 263.548 352.328 261.259 350.034 261.58Z" fill="#6B8CFF"/>
<path d="M322.62 289.053C324.826 287.39 325.401 284.434 323.905 282.449C322.409 280.465 319.409 280.203 317.203 281.865C314.998 283.527 314.423 286.484 315.919 288.468C317.415 290.453 320.415 290.715 322.62 289.053Z" fill="#2C2770"/>
<path d="M269.114 289.448L215.229 281L190.729 275.5L188.187 288.536C186.383 297.781 193.447 306.38 202.866 306.407L265.105 306.585L271.255 310.119C271.437 310.223 271.627 310.313 271.823 310.388L280.239 313.597C280.338 313.634 280.439 313.664 280.541 313.686L294.502 316.661C295.229 316.816 295.978 316.53 296.416 315.93C297.208 314.846 296.644 313.304 295.339 312.988L285.758 310.662H300.655C301.225 310.662 301.749 310.349 302.019 309.848C302.547 308.872 301.908 307.674 300.803 307.567L288.856 306.42L306.475 304.864C307.155 304.804 307.747 304.374 308.014 303.746C308.515 302.569 307.699 301.251 306.422 301.175L290.508 300.23L305.333 297.893C306.345 297.733 307.131 296.923 307.26 295.906C307.431 294.556 306.4 293.352 305.039 293.313L285.758 292.766L287.211 291.855L290.211 283.855L281.195 285.362C280.749 285.437 280.31 285.549 279.883 285.698L269.114 289.448Z" fill="#FF9330"/>
<path d="M200.372 339.934C207.772 331.187 226.457 334.399 233.231 337.804C215.337 370.366 199.551 347.371 194.068 380.859C191.722 395.192 174.229 381.561 175.574 406.714C176.741 428.538 161.784 430.43 160.039 442.193C158.294 453.955 153.571 463.943 143.407 467.367C128.554 472.369 117.142 454.285 128.359 445.781C139.576 437.278 117.727 424.683 134.925 414.626C152.124 404.569 133.689 381.281 155.358 375.26C177.027 369.238 169.058 356.404 176.06 349.649C183.062 342.895 191.121 350.868 200.372 339.934Z" fill="#6B8CFF"/>
<path d="M123.198 271.921C126.963 259.499 144.441 260.921 151.941 266.421C141.441 275.921 125.658 275.557 134.89 312.988C138.841 329.008 116.902 322.329 129.489 348.021C140.41 370.314 123.011 378.855 126.441 391.921C129.87 404.988 132.192 417.339 123.198 425.421C110.054 437.232 94.5409 422.28 102.364 408.421C110.187 394.563 84.6977 392.054 98.0187 373.921C111.34 355.788 82.6205 343.318 102.364 327.421C122.108 311.525 101.201 303.584 105.441 293.421C109.68 283.259 118.491 287.449 123.198 271.921Z" fill="#1BE3B3"/>
<path d="M28.1245 340.767C21.357 333.719 5.59723 337.441 0 340.695C16.9611 367.442 29.2138 347.048 35.6427 375.241C38.3943 387.307 52.5928 374.787 52.7643 396.251C52.9131 414.875 65.7628 415.692 67.8667 425.604C69.9705 435.515 74.5204 443.761 83.3647 446.134C96.2894 449.602 105.07 433.616 95.0618 426.978C85.0536 420.34 103.02 408.47 87.8315 400.827C72.6428 393.184 87.1384 372.401 68.3498 368.428C49.5613 364.454 55.6822 353.116 49.359 347.742C43.0358 342.368 36.5839 349.576 28.1245 340.767Z" fill="#54B7FF"/>
<path d="M115.24 482.715C113.494 443.322 106.247 334.86 128.441 281.531C130.376 276.881 134.441 266.921 144.941 266.921" stroke="#4F4F4F"/>
<path d="M94.6762 493.211C93.668 455.576 77.612 373.415 21.4541 345.851" stroke="#4F4F4F"/>
<path d="M132.612 493.528C136.158 452.682 158.96 364.413 221.801 338.105" stroke="#4F4F4F"/>
<path d="M82.4409 475.421H142.441L157.912 591.456C160.31 609.441 146.319 625.421 128.175 625.421H96.7064C78.5627 625.421 64.5716 609.441 66.9696 591.456L82.4409 475.421Z" fill="#A3BAFF"/>
<path d="M150.441 475.421H73.4407V486.421H150.441V475.421Z" fill="#CCD9FF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M889.401 620.568C891.433 620.568 893.025 618.82 892.836 616.797L876.631 443L866.688 444.068L885.972 617.499C886.166 619.246 887.643 620.568 889.401 620.568Z" fill="#627AC1"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M860.401 620.568C862.433 620.568 864.025 618.82 863.836 616.797L847.631 443L837.688 444.068L856.972 617.499C857.166 619.246 858.643 620.568 860.401 620.568Z" fill="#627AC1"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M773.475 620.568C771.443 620.568 769.851 618.82 770.04 616.797L786.245 443L796.188 444.068L776.904 617.499C776.71 619.246 775.233 620.568 773.475 620.568Z" fill="#627AC1"/>
<path d="M771.188 431H880.188C884.606 431 888.188 434.582 888.188 439C888.188 443.418 884.606 447 880.188 447H771.188C766.77 447 763.188 443.418 763.188 439C763.188 434.582 766.77 431 771.188 431Z" fill="#A3BAFF"/>
<path d="M739.499 614.052L751.3 603.937C757.578 598.556 756.377 582.122 756.377 582.122L773.255 581.209V599.455L775.992 609.035L740.868 615.877L739.499 614.052Z" fill="#FFAE64"/>
<path d="M743.055 614.754L774.167 606.754C776.921 609.232 777.884 613.14 776.597 616.614L774.167 623.175L760.939 624.088L760.026 620.895L753.286 623.422C750.504 624.466 747.557 625 744.585 625H734.069C732.63 625 731.299 624.236 730.574 622.992C729.454 621.073 730.091 618.611 732.001 617.475L745.429 609.491L741.814 612.12C741.078 612.656 740.994 613.723 741.638 614.367C742.009 614.737 742.548 614.885 743.055 614.754Z" fill="#2C2770"/>
<path d="M792.499 614.435L804.3 604.32C810.578 598.939 809.377 582.505 809.377 582.505L826.254 581.592V599.838L828.991 609.418L793.867 616.26L792.499 614.435Z" fill="#FFAE64"/>
<path d="M796.055 615.137L827.166 607.137C829.92 609.615 830.883 613.523 829.596 616.997L827.166 623.559L813.938 624.471L813.026 621.278L806.285 623.805C803.503 624.849 800.556 625.383 797.585 625.383H787.068C785.629 625.383 784.298 624.619 783.573 623.376C782.453 621.456 783.09 618.994 785 617.858L798.429 609.874L794.814 612.503C794.077 613.039 793.993 614.106 794.638 614.75C795.008 615.12 795.547 615.268 796.055 615.137Z" fill="#2C2770"/>
<path d="M804.246 594.911H829.228V461L861.484 444.328C879.808 434.857 888.59 413.519 882.242 393.893L807.228 392.5L744.855 432.304C736.562 437.596 732.144 447.26 733.567 456.995L753.729 594.911H776.229L777.729 463L785.232 459.07C785.176 460.305 785.234 461.556 785.412 462.807L804.246 594.911Z" fill="#2C2770"/>
<path d="M882.728 394C879.728 420.5 869.728 436 820.228 454.5L825.728 595.5" stroke="white"/>
<path d="M786.229 447L768.229 458L771.729 594.5" stroke="white"/>
<path d="M921.697 337.592L900.876 327.694L884.322 343.317L903.692 353.851C915.764 360.416 930.36 360.325 942.349 353.609L985.159 329.63L994.145 330.201H1001.7C1004.28 330.201 1006.74 329.047 1008.39 327.054C1009.58 325.608 1010.04 323.69 1009.64 321.858L1007.58 312.612L1021.82 308.762C1023.2 308.388 1023.93 306.868 1023.35 305.558C1022.92 304.604 1021.92 304.047 1020.88 304.195L1003.47 306.682L1002.38 304.647C1001.76 303.489 1000.46 302.87 999.17 303.118L993.378 304.232C991.554 304.582 989.909 305.557 988.725 306.988L982.456 314.564L921.697 337.592Z" fill="#FFAE64"/>
<path d="M1008.94 318.998L998.087 320.937C997.009 321.129 995.966 320.454 995.701 319.392C995.448 318.382 995.981 317.341 996.947 316.955L999.822 315.805" stroke="black"/>
<path d="M1009.98 324.076L998.888 324.862C997.844 324.936 996.921 324.189 996.776 323.153C996.629 322.099 997.337 321.115 998.383 320.921L998.909 320.823" stroke="black"/>
<path d="M1004.84 329.033L996.232 329.359C995.14 329.4 994.194 328.609 994.043 327.527C993.897 326.481 994.539 325.486 995.552 325.189L997.997 324.472" stroke="black"/>
<path d="M1003.93 308.506L1006.31 317.632C1006.51 318.401 1006.08 319.193 1005.32 319.444C1003.7 319.987 1001.91 319.361 1000.97 317.922L996.629 311.243C996.781 313.068 993.709 318.086 989.33 321.735" stroke="black"/>
<path d="M758.534 291.248L780.617 297.869L782.419 320.561L760.986 315.384C747.629 312.158 736.863 302.3 732.473 289.279L716.8 242.78L709.752 237.178L704.15 232.113C702.231 230.378 701.186 227.877 701.299 225.293C701.381 223.418 702.325 221.686 703.856 220.601L711.585 215.123L703.6 202.714C702.825 201.509 703.307 199.896 704.617 199.315C705.572 198.891 706.692 199.153 707.36 199.956L718.607 213.478L720.779 212.699C722.016 212.256 723.397 212.669 724.187 213.718L727.737 218.429C728.854 219.912 729.421 221.738 729.34 223.594L728.909 233.419L758.534 291.248Z" fill="#FFAE64"/>
<path d="M706.287 218.943L713.041 227.663C713.711 228.528 714.937 228.727 715.846 228.117C716.711 227.537 717.014 226.408 716.556 225.473L715.195 222.692" stroke="black"/>
<path d="M702.116 222.018L709.814 230.037C710.538 230.792 711.724 230.857 712.527 230.186C713.343 229.503 713.477 228.298 712.832 227.452L712.507 227.026" stroke="black"/>
<path d="M702.602 229.14L708.768 235.154C709.55 235.917 710.783 235.964 711.62 235.263C712.43 234.585 712.621 233.417 712.069 232.517L710.736 230.345" stroke="black"/>
<path d="M717.045 214.525L709.159 219.698C708.495 220.134 708.282 221.01 708.673 221.701C709.517 223.197 711.265 223.933 712.925 223.493L720.623 221.45C719.287 222.702 718.2 228.483 719.001 234.127" stroke="black"/>
<path d="M879.39 303.911L860.626 297.222C855.049 297.222 840.548 296.94 827.163 295.814C813.778 294.687 789.518 295.814 769.998 292.997L765.815 318.347C774.18 322.572 786.729 326.797 803.46 329.614C797.883 346.514 801.601 349.33 806.249 354.963L810.432 373.272L800.296 397H882.934L874.379 371L879.397 342.262L896.877 353.555L913.609 332.43L888.199 309.209C885.645 306.875 882.65 305.074 879.39 303.911Z" fill="#6B8CFF"/>
<mask id="mask4" mask-type="alpha" maskUnits="userSpaceOnUse" x="765" y="292" width="149" height="105">
<path d="M879.39 303.911L860.626 297.222C855.049 297.222 840.548 296.94 827.163 295.814C813.778 294.687 789.518 295.814 769.998 292.997L765.815 318.347C774.18 322.572 786.729 326.797 803.46 329.614C797.883 346.514 801.601 349.33 806.249 354.963L810.432 373.272L800.296 397H882.934L874.379 371L879.397 342.262L896.877 353.555L913.609 332.43L888.199 309.209C885.645 306.875 882.65 305.074 879.39 303.911Z" fill="white"/>
</mask>
<g mask="url(#mask4)">
<path d="M795.008 280.225C801.851 307.594 727.498 324.928 732.515 357.771C737.533 390.614 864.344 468.16 909.503 444.44C954.662 420.72 952.837 379.21 867.081 381.035C781.324 382.86 761.253 344.999 781.78 324.928C802.307 304.857 862.519 366.438 864.344 340.893C866.168 315.349 789.078 307.594 820.097 288.892C845.516 273.566 855.677 321.279 883.502 327.209C905.763 331.953 918.018 323.712 921.363 318.998C942.498 329.185 974.642 352.388 934.135 363.701C893.629 375.014 824.506 360.508 795.008 351.841" stroke="#A3B7FF" stroke-width="7"/>
</g>
<path d="M817.747 239.325C818.87 230.342 827.572 229.032 831.783 229.5C834.122 228.096 838.801 222.482 848.626 223.885C858.452 225.289 869.681 230.903 866.874 243.536C866.874 243.536 873.424 259.444 875.295 265.994C880.91 280.03 872.786 290.211 861.259 291.259C845.819 292.662 852.837 291.259 828.976 294.066C805.114 296.873 803.711 277.223 809.325 264.59C814.94 251.958 816.343 250.554 817.747 239.325Z" fill="#2C2770"/>
<path d="M824.765 249.15V253.361C822.893 252.893 819.15 252.8 819.15 256.168C819.15 260.379 821.958 263.187 824.765 261.783C825.129 266.158 827.483 274.794 834.481 278.394C834.23 281.693 833.497 286.428 831.783 289.855C829.537 294.347 825.233 296.405 823.361 296.873C826.168 300.148 834.029 306.699 843.012 306.699C851.995 306.699 858.92 300.148 861.259 296.873C859.855 296.405 856.206 294.628 852.837 291.259C850.185 288.607 849.679 282.302 849.812 277.685C855.645 273.761 857.424 265.892 858.452 261.783C860.323 262.251 864.066 262.064 864.066 257.572C864.066 253.08 859.855 252.893 858.452 253.361V249.15C855.644 249.618 848.346 249.431 841.608 244.939C834.871 240.448 833.187 238.389 833.187 237.921C833.187 240.261 832.155 244.568 830.379 246.343C827.572 249.15 825.701 248.682 824.765 249.15Z" fill="#FFAE64"/>
<path d="M836.518 268.365L842.905 271.558C842.448 272.47 840.989 273.656 838.799 272.926C836.61 272.197 836.366 269.885 836.518 268.365Z" fill="white"/>
<path d="M850.203 249.206H854.764C855.52 249.206 856.133 249.819 856.133 250.575C856.133 251.331 855.52 251.943 854.764 251.943H850.203C849.447 251.943 848.834 251.331 848.834 250.575C848.834 249.819 849.447 249.206 850.203 249.206Z" fill="#2C2770"/>
<path d="M831.957 249.206H836.518C837.274 249.206 837.887 249.819 837.887 250.575C837.887 251.331 837.274 251.943 836.518 251.943H831.957C831.201 251.943 830.588 251.331 830.588 250.575C830.588 249.819 831.201 249.206 831.957 249.206Z" fill="#2C2770"/>
<path d="M834.694 256.505C833.938 256.505 833.326 255.892 833.326 255.136C833.326 254.381 833.938 253.768 834.694 253.768C835.45 253.768 836.062 254.381 836.062 255.136C836.062 255.892 835.45 256.505 834.694 256.505Z" fill="black"/>
<path d="M845.185 251.031V267.453H841.08" stroke="black"/>
<path d="M852.028 256.505C851.272 256.505 850.66 255.892 850.66 255.136C850.66 254.381 851.272 253.768 852.028 253.768C852.784 253.768 853.396 254.381 853.396 255.136C853.396 255.892 852.784 256.505 852.028 256.505Z" fill="black"/>
<path d="M822.378 256.049C821.922 257.113 821.83 259.333 825.115 259.698" stroke="black"/>
<path d="M861.376 256.049C861.832 257.113 861.923 259.333 858.639 259.698" stroke="black"/>
<mask id="mask5" mask-type="alpha" maskUnits="userSpaceOnUse" x="819" y="237" width="46" height="70">
<path d="M824.765 249.15V253.361C822.893 252.893 819.15 252.8 819.15 256.168C819.15 260.379 821.958 263.187 824.765 261.783C825.129 266.158 827.483 274.794 834.481 278.394C834.23 281.693 833.497 286.428 831.783 289.855C829.537 294.347 825.233 296.405 823.361 296.873C826.168 300.148 834.029 306.699 843.012 306.699C851.995 306.699 858.92 300.148 861.259 296.873C859.855 296.405 856.206 294.628 852.837 291.259C850.185 288.607 849.679 282.302 849.812 277.685C855.645 273.761 857.424 265.892 858.452 261.783C860.323 262.251 864.066 262.064 864.066 257.572C864.066 253.08 859.855 252.893 858.452 253.361V249.15C855.644 249.618 848.346 249.431 841.608 244.939C834.871 240.448 833.187 238.389 833.187 237.921C833.187 240.261 832.155 244.568 830.379 246.343C827.572 249.15 825.701 248.682 824.765 249.15Z" fill="white"/>
</mask>
<g mask="url(#mask5)">
<path d="M851.115 277.032C849.899 277.792 846.006 279.769 841.992 279.769C838.182 279.769 834.618 278.536 833.486 278.02L833.325 277.944C833.372 277.967 833.425 277.993 833.486 278.02L851.572 286.611L851.115 277.032Z" fill="#FF8282"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 555 KiB

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="37.07" height="36" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 198"><path fill="#41B883" d="M204.8 0H256L128 220.8L0 0h97.92L128 51.2L157.44 0h47.36Z"></path><path fill="#41B883" d="m0 0l128 220.8L256 0h-51.2L128 132.48L50.56 0H0Z"></path><path fill="#35495E" d="M50.56 0L128 133.12L204.8 0h-47.36L128 51.2L97.92 0H50.56Z"></path></svg>

After

Width:  |  Height:  |  Size: 496 B

@ -0,0 +1,35 @@
<template>
<div>
<svg :style="{ width: width, height: height }">
<use :xlink:href="prefix + name" :fill="color"></use>
</svg>
</div>
</template>
<script setup lang="ts">
defineProps({
//xlink:href
prefix: {
type: String,
default: '#icon-',
},
//svg
name: String,
//svg
color: {
type: String,
default: '',
},
//svg
width: {
type: String,
default: '16px',
},
//svg
height: {
type: String,
default: '16px',
},
})
</script>
<style scoped></style>

@ -0,0 +1,10 @@
import SvgIcon from './SvgIcon/index.vue'
import type { App, Component } from 'vue'
const components: { [name: string]: Component } = { SvgIcon }
export default {
install(app: App) {
Object.keys(components).forEach((key: string) => {
app.component(key, components[key])
})
},
}

@ -0,0 +1,39 @@
import { createApp } from 'vue'
// import G6 from '@antv/g6'
// 导入svg插件
import 'virtual:svg-icons-register'
import App from './App.vue'
// 引入elementplus组件库
import ElementPlus from 'element-plus'
// 样式;
import 'element-plus/dist/index.css'
//@ts-expect-error忽略当前文件ts类型的检测否则有红色提示(打包会失败)
import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
import gloablComponent from './components/index'
// 引入全局样式
import '@/styles/index.scss'
// 引入路由
import router from '@/router/index'
// 引入路由拦截器
// import './permissions'
// 引入仓库
import pinia from '@/store/index'
import '@/utils/rem.js'
// 创建vue实例
const app = createApp(App)
// 注册element plus组件库
app.use(ElementPlus, {
locale: zhCn,
})
// 注册全局组件
app.use(gloablComponent)
app.use(router)
app.use(pinia)
// app.use(G6)
// 挂载点
app.mount('#app')
import * as ElementPlusIconsVue from '@element-plus/icons-vue'
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
app.component(key, component)
}

@ -0,0 +1,6 @@
// 引入路由
import router from '@/router/index'
router.beforeEach((to, from, next) => {
next()
})

@ -0,0 +1,13 @@
import { createRouter, createWebHashHistory } from 'vue-router'
import { constRouter } from './module/constRouter'
const router = createRouter({
history: createWebHashHistory(),
routes: constRouter,
scrollBehavior() {
return {
left: 0,
top: 0,
}
},
})
export default router

@ -0,0 +1,25 @@
export const constRouter: any = [
{
path: '/',
component: () => import('@/Layout/index.vue'),
name: 'Layout',
redirect: '/home',
meta: {
icon: '',
title: '',
hidden: false,
},
children: [
{
path: '/home',
component: () => import('@/views/home/index.vue'),
name: 'Home',
meta: {
icon: '',
title: '首页',
hidden: false,
},
},
],
},
]

@ -0,0 +1,6 @@
// 引入仓库
import { createPinia } from 'pinia'
// 创建仓库
const pinia = createPinia()
// 暴露仓库
export default pinia

@ -0,0 +1,33 @@
// 引入清除浏览器默认样式文件
@import './reset.scss';
.banner{
width: 100%;
height: 410px;
background: url('../assets/images/banner2.png') no-repeat;
background-size: cover
}
/* 设置滚动条的宽度和颜色 */
::-webkit-scrollbar {
width: 10px; /* 滚动条宽度 */
}
/* 设置滚动条的轨道背景色 */
::-webkit-scrollbar-track {
background-color: #f1f1f1;
}
/* 设置滚动条上下按钮的样式 */
::-webkit-scrollbar-button {
background-color: #ccc;
}
/* 设置滚动条的滑块样式 */
::-webkit-scrollbar-thumb {
background-color: #ccc;
border-radius: 5px; /* 滑块圆角 */
}
/* 设置滑块在hover状态下的样式 */
::-webkit-scrollbar-thumb:hover {
background-color: #555;
}

@ -0,0 +1,188 @@
/**
* ENGINE
* v0.2 | 20150615
* License: none (public domain)
*/
*,
*:after,
*:before {
box-sizing: border-box;
outline: none;
}
html,
body,
div,
span,
applet,
object,
iframe,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
a,
abbr,
acronym,
address,
big,
cite,
code,
del,
dfn,
em,
img,
ins,
kbd,
q,
s,
samp,
small,
strike,
strong,
sub,
sup,
tt,
var,
b,
u,
i,
center,
dl,
dt,
dd,
ol,
ul,
li,
fieldset,
form,
label,
legend,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td,
article,
aside,
canvas,
details,
embed,
figure,
figcaption,
footer,
header,
hgroup,
menu,
nav,
output,
ruby,
section,
summary,
time,
mark,
audio,
video {
font: inherit;
font-size: 100%;
margin: 0;
padding: 0;
vertical-align: baseline;
border: 0;
}
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
menu,
nav,
section {
display: block;
}
body {
line-height: 1;
}
ol,
ul {
list-style: none;
}
blockquote,
q {
quotes: none;
&:before,
&:after {
content: '';
content: none;
}
}
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sup {
top: -.5em;
}
sub {
bottom: -.25em;
}
table {
border-spacing: 0;
border-collapse: collapse;
}
input,
textarea,
button {
font-family: inhert;
font-size: inherit;
color: inherit;
}
select {
text-indent: .01px;
text-overflow: '';
border: 0;
border-radius: 0;
-webkit-appearance: none;
-moz-appearance: none;
}
select::-ms-expand {
display: none;
}
code,
pre {
font-family: monospace, monospace;
font-size: 1em;
}

@ -0,0 +1 @@
$base-container-width:1620px;

@ -0,0 +1,47 @@
// 通用方法
// 判断字符、数组、对象是否为空 空返回true
const isNullAndEmpty = (param) => {
if (param instanceof Array) {
// 数组
if (param.length > 0) {
return false
} else {
return true
}
} else if (typeof param === 'string') {
// 字符串
if (param === undefined || param === null || param.trim() === '') {
return true
} else {
return false
}
} else if (Object.prototype.toString.call(param) === '[object Object]') {
// 对象
for (let key in param) {
return false
}
return true
}
}
const objectJS = {
// 对象相关方法
deepClone(obj, hash = new WeakMap()) {
// 深拷贝对象
if (obj === null) return obj
if (obj instanceof Date) return new Date(obj)
if (obj instanceof RegExp) return new RegExp(obj)
if (typeof obj !== 'object') return obj
if (hash.get(obj)) return hash.get(obj)
let cloneObj = new obj.constructor()
hash.set(obj, cloneObj)
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
cloneObj[key] = this.deepClone(obj[key], hash)
}
}
return cloneObj
},
}
export { isNullAndEmpty, objectJS }

@ -0,0 +1,136 @@
;(function (win, lib) {
let doc = win.document
let docEl = doc.documentElement
let metaEl = doc.querySelector('meta[name="viewport"]')
let flexibleEl = doc.querySelector('meta[name="flexible"]')
let dpr = 0
let scale = 0
let tid
let flexible = lib.flexible || (lib.flexible = {})
if (metaEl) {
console.warn('将根据已有的meta标签来设置缩放比例')
let match = metaEl.getAttribute('content').match(/initial\-scale=([\d\.]+)/)
if (match) {
scale = parseFloat(match[1])
dpr = parseInt(1 / scale)
}
} else if (flexibleEl) {
let content = flexibleEl.getAttribute('content')
if (content) {
let initialDpr = content.match(/initial\-dpr=([\d\.]+)/)
let maximumDpr = content.match(/maximum\-dpr=([\d\.]+)/)
if (initialDpr) {
dpr = parseFloat(initialDpr[1])
scale = parseFloat((1 / dpr).toFixed(2))
}
if (maximumDpr) {
dpr = parseFloat(maximumDpr[1])
scale = parseFloat((1 / dpr).toFixed(2))
}
}
}
if (!dpr && !scale) {
let isAndroid = win.navigator.appVersion.match(/android/gi)
let isIPhone = win.navigator.appVersion.match(/iphone/gi)
let devicePixelRatio = win.devicePixelRatio
if (isIPhone) {
// iOS下,对于2和3的屏,用2倍的方案,其余的用1倍方案
if (devicePixelRatio >= 3 && (!dpr || dpr >= 3)) {
dpr = 3
} else if (devicePixelRatio >= 2 && (!dpr || dpr >= 2)) {
dpr = 2
} else {
dpr = 1
}
} else {
// 其他设备下,仍旧使用1倍的方案
dpr = 1
}
scale = 1 / dpr
}
docEl.setAttribute('data-dpr', dpr)
if (!metaEl) {
metaEl = doc.createElement('meta')
metaEl.setAttribute('name', 'viewport')
metaEl.setAttribute(
'content',
'initial-scale=' +
scale +
', maximum-scale=' +
scale +
', minimum-scale=' +
scale +
', user-scalable=no',
)
if (docEl.firstElementChild) {
docEl.firstElementChild.appendChild(metaEl)
} else {
let wrap = doc.createElement('div')
wrap.appendChild(metaEl)
doc.write(wrap.innerHTML)
}
}
function refreshRem() {
let width = docEl.getBoundingClientRect().width
if (width / dpr > 1920) {
width = 1920 * dpr
}
let rem = width / 10
docEl.style.fontSize = rem + 'px'
flexible.rem = win.rem = rem
}
win.addEventListener(
'resize',
function () {
clearTimeout(tid)
tid = setTimeout(refreshRem, 300)
},
false,
)
win.addEventListener(
'pageshow',
function (e) {
if (e.persisted) {
clearTimeout(tid)
tid = setTimeout(refreshRem, 300)
}
},
false,
)
if (doc.readyState === 'complete') {
doc.body.style.fontSize = 12 * dpr + 'px'
} else {
doc.addEventListener(
'DOMContentLoaded',
function (e) {
doc.body.style.fontSize = 12 * dpr + 'px'
},
false,
)
}
refreshRem()
flexible.dpr = win.dpr = dpr
flexible.refreshRem = refreshRem
flexible.rem2px = function (d) {
let val = parseFloat(d) * this.rem
if (typeof d === 'string' && d.match(/rem$/)) {
val += 'px'
}
return val
}
flexible.px2rem = function (d) {
let val = parseFloat(d) / this.rem
if (typeof d === 'string' && d.match(/px$/)) {
val += 'rem'
}
return val
}
})(window, window['lib'] || (window['lib'] = {}))

@ -0,0 +1,19 @@
// 引入第三方请求库axios
import axios from 'axios'
// 创建axios实例
const server = axios.create({
baseURL: '/',
timeout: 10000,
})
// 创建请求拦截器
server.interceptors.request.use((config) => {
return config
})
// 创建相应拦截器
server.interceptors.response.use((response) => {
return response
})
// 暴露axios实例
export default server

@ -0,0 +1,9 @@
<template>
<h1>404</h1>
</template>
<script lang="ts" setup>
import {} from 'vue'
</script>
<style lang="scss" scoped></style>

@ -0,0 +1,7 @@
<template>
<div>111</div>
</template>
<script setup></script>
<style scoped lang="scss"></style>

1
src/vite-env.d.ts vendored

@ -0,0 +1 @@
/// <reference types="vite/client" />

@ -0,0 +1,36 @@
{
"compilerOptions": {
"target": "ES2020",
"useDefineForClassFields": true,
"module": "ESNext",
"lib": ["ES2020", "DOM", "DOM.Iterable"],
"skipLibCheck": true,
/* Bundler mode */
"moduleResolution": "bundler",
"allowImportingTsExtensions": true,
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "preserve",
/* Linting */
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true,
"baseUrl": "./", //
"paths": {
//baseUrl
"@/*": ["src/*"]
},
"types": ["vite/client"]
},
"include": [
"src/**/*.ts",
"src/**/*.tsx",
"src/**/*.vue",
"src/utils/rem.js"
],
"references": [{ "path": "./tsconfig.node.json" }]
}

@ -0,0 +1,11 @@
{
"compilerOptions": {
"composite": true,
"skipLibCheck": true,
"module": "ESNext",
"moduleResolution": "bundler",
"allowSyntheticDefaultImports": true,
"strict": true
},
"include": ["vite.config.ts"]
}

@ -0,0 +1,51 @@
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path'
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
//@ts-ignore
import postcssPluginPx2rem from 'postcss-plugin-px2rem' //引入插件
//配置参数
const px2remOptions = {
rootValue: 192, //换算基数, 默认100 ,也就是1440px ,这样的话把根标签的字体规定为1rem为50px,这样就可以从设计稿上量出多少个px直接在代码中写多少px了
unitPrecision: 5, //允许REM单位增长到的十进制数字,其实就是精度控制
// propWhiteList: [], // 默认值是一个空数组,这意味着禁用白名单并启用所有属性。
// propBlackList: [], // 黑名单
// exclude:false, //默认false,可以(reg)利用正则表达式排除某些文件夹的方法,例如/(node_module)/ 。如果想把前端UI框架内的px也转换成rem,请把此属性设为默认值
// selectorBlackList: [], //要忽略并保留为px的选择器
// ignoreIdentifier: false, //(boolean/string)忽略单个属性的方法,启用ignoreidentifier后,replace将自动设置为true。
// replace: true, // (布尔值)替换包含REM的规则,而不是添加回退。
mediaQuery: false, //(布尔值)允许在媒体查询中转换px
minPixelValue: 0, //设置要替换的最小像素值(3px会被转rem)。 默认 0
}
export default defineConfig({
plugins: [
vue(),
// 配置svg插件
createSvgIconsPlugin({
// Specify the icon folder to be cached
iconDirs: [path.resolve(process.cwd(), 'src/assets/icons')],
// Specify symbolId format
symbolId: 'icon-[dir]-[name]',
}),
],
resolve: {
alias: {
'@': path.resolve('./src'), // 相对路径别名配置,使用 @ 代替 src
},
},
css: {
preprocessorOptions: {
scss: {
javascriptEnabled: true,
additionalData: '@import "./src/styles/variable.scss";',
},
},
postcss: {
plugins: [
// 配置响应式插件
postcssPluginPx2rem(px2remOptions),
],
},
},
})
Loading…
Cancel
Save