首次提交
23
.gitignore
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
.DS_Store
|
||||
node_modules
|
||||
/dist
|
||||
|
||||
|
||||
# local env files
|
||||
.env.local
|
||||
.env.*.local
|
||||
|
||||
# Log files
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
|
||||
# Editor directories and files
|
||||
.idea
|
||||
.vscode
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
||||
17
cdTMP/.editorconfig
Normal file
@@ -0,0 +1,17 @@
|
||||
# http://editorconfig.org
|
||||
root = true # 当前配置在项目根
|
||||
|
||||
[*] # 表示所有文件适用
|
||||
charset = utf-8 # 设置文字字符集为utf-8
|
||||
indent-style = tab # 缩进风格(tab | space)
|
||||
indent-size = 4 # 缩进大小
|
||||
end_of_line = lf # 控制换行类型(lf | cr | crlf)
|
||||
# LF代表 行(\n)
|
||||
# CR代表 回车(\r)
|
||||
# CRLF 只是 CR 后跟 LF(即,\r\n)
|
||||
trim_trailing_whitespace = true # 去除行首的任意空白字符
|
||||
insert_final_newline = true # 始终在文件末尾插入一个新行
|
||||
|
||||
[*.md] # 表示仅.md文件适用以下规则
|
||||
max_line_length = off
|
||||
trim_trailing_whitespace = false
|
||||
5
cdTMP/.env
Normal file
@@ -0,0 +1,5 @@
|
||||
VITE_APP_TITLE = ChengduTestManagePlant
|
||||
VITE_APP_PORT = 3888
|
||||
VITE_APP_OPEN_PROXY = true
|
||||
VITE_APP_BASE = /
|
||||
VITE_APP_TOKEN_PREFIX = token
|
||||
6
cdTMP/.env.development
Normal file
@@ -0,0 +1,6 @@
|
||||
# .env.development
|
||||
VITE_APP_ENV = development
|
||||
# 开发访问的地址
|
||||
VITE_APP_BASE_URL = http://127.0.0.1:8000/api
|
||||
VITE_APP_WS_URL = ws://127.0.0.1:8000/message.io
|
||||
VITE_APP_PROXY_PREFIX = /api
|
||||
5
cdTMP/.env.production
Normal file
@@ -0,0 +1,5 @@
|
||||
# .env.production
|
||||
VITE_APP_ENV = production
|
||||
VITE_APP_BASE_URL = http://127.0.0.1:8000
|
||||
VITE_APP_WS_URL = ws://127.0.0.1:9502/message.io
|
||||
VITE_APP_PROXY_PREFIX = /api
|
||||
3
cdTMP/.eslintignore
Normal file
@@ -0,0 +1,3 @@
|
||||
/*.json
|
||||
/*.ts
|
||||
dist
|
||||
15
cdTMP/.eslintrc.cjs
Normal file
@@ -0,0 +1,15 @@
|
||||
module.exports = {
|
||||
env: {
|
||||
browser: true,
|
||||
es2015: true
|
||||
},
|
||||
extends: ["eslint:recommended", "plugin:vue/vue3-essential", "plugin:prettier/recommended"],
|
||||
parserOptions: {
|
||||
ecmaVersion: "latest",
|
||||
sourceType: "module"
|
||||
},
|
||||
plugins: ["vue"],
|
||||
rules: {
|
||||
"vue/multi-word-component-names": false
|
||||
}
|
||||
}
|
||||
24
cdTMP/.gitignore
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
lerna-debug.log*
|
||||
|
||||
node_modules
|
||||
dist
|
||||
dist-ssr
|
||||
*.local
|
||||
|
||||
# Editor directories and files
|
||||
.vscode/*
|
||||
!.vscode/extensions.json
|
||||
.idea
|
||||
.DS_Store
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
||||
8
cdTMP/.prettierrc
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"useTabs": false,
|
||||
"tabWidth": 4,
|
||||
"printWidth": 120,
|
||||
"singleQuote": false,
|
||||
"trailingComma": "none",
|
||||
"semi": false
|
||||
}
|
||||
7
cdTMP/README.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# Vue 3 + Vite
|
||||
|
||||
This template should help get you started developing with Vue 3 in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.
|
||||
|
||||
## Recommended IDE Setup
|
||||
|
||||
- [VS Code](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin).
|
||||
136
cdTMP/index.html
Normal file
@@ -0,0 +1,136 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="icon" type="image/svg+xml" href="/wxwx-logo.svg" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>成都测试管理平台</title>
|
||||
</head>
|
||||
<body>
|
||||
<noscript>
|
||||
<strong>你的浏览器未开启javascript支持,请开启后刷新页面访问!</strong>
|
||||
</noscript>
|
||||
<div id="app" class="ma-ui">
|
||||
<div class="app-loading">
|
||||
<div class="app-loading__logo"><img src="/logo.svg" style="" /></div>
|
||||
<div class="app-loading-text">
|
||||
<span class="app-loading-preloader">成</span>
|
||||
<span class="app-loading-preloader">都</span>
|
||||
<span class="app-loading-preloader">测</span>
|
||||
<span class="app-loading-preloader">试</span>
|
||||
<span class="app-loading-preloader">管</span>
|
||||
<span class="app-loading-preloader">理</span>
|
||||
<span class="app-loading-preloader">平</span>
|
||||
<span class="app-loading-preloader">台</span>
|
||||
<div class="app-loading-viewtext-container">
|
||||
<span class="app-loading-viewtext">成</span>
|
||||
<span class="app-loading-viewtext">都</span>
|
||||
<span class="app-loading-viewtext">测</span>
|
||||
<span class="app-loading-viewtext">试</span>
|
||||
<span class="app-loading-viewtext">管</span>
|
||||
<span class="app-loading-viewtext">理</span>
|
||||
<span class="app-loading-viewtext">平</span>
|
||||
<span class="app-loading-viewtext">台</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<style>
|
||||
html,
|
||||
body,
|
||||
#app {
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
transition-property: filter;
|
||||
transition-duration: 1s;
|
||||
}
|
||||
.app-loading {
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
right: 0px;
|
||||
bottom: 0px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.app-loading__logo {
|
||||
width: 78px;
|
||||
margin-left: -8%;
|
||||
margin-top: -5%;
|
||||
}
|
||||
|
||||
.app-loading-text {
|
||||
position: relative;
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
.app-loading-preloader,
|
||||
.app-loading-viewtext {
|
||||
font-size: 3.5rem;
|
||||
color: #ddd;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.app-loading-viewtext-container {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
position: absolute;
|
||||
letter-spacing: 4.3px;
|
||||
top: -5px;
|
||||
}
|
||||
|
||||
.app-loading-viewtext {
|
||||
color: #333;
|
||||
animation: loader 4s infinite;
|
||||
transform: rotateY(-90deg);
|
||||
}
|
||||
|
||||
.app-loading-viewtext-container span:nth-child(1) {
|
||||
animation-delay: 0.2s;
|
||||
}
|
||||
.app-loading-viewtext-container span:nth-child(2) {
|
||||
animation-delay: 0.4s;
|
||||
}
|
||||
.app-loading-viewtext-container span:nth-child(3) {
|
||||
animation-delay: 0.6s;
|
||||
}
|
||||
.app-loading-viewtext-container span:nth-child(4) {
|
||||
animation-delay: 0.8s;
|
||||
}
|
||||
.app-loading-viewtext-container span:nth-child(5) {
|
||||
animation-delay: 1s;
|
||||
}
|
||||
.app-loading-viewtext-container span:nth-child(6) {
|
||||
animation-delay: 1.2s;
|
||||
}
|
||||
.app-loading-viewtext-container span:nth-child(7) {
|
||||
animation-delay: 1.4s;
|
||||
}
|
||||
.app-loading-viewtext-container span:nth-child(8) {
|
||||
animation-delay: 1.6s;
|
||||
}
|
||||
.app-loading-viewtext-container span:nth-child(9) {
|
||||
animation-delay: 1.8s;
|
||||
}
|
||||
|
||||
@keyframes loader {
|
||||
0%,
|
||||
75%,
|
||||
100% {
|
||||
opacity: 0;
|
||||
transform: rotateY(-90deg);
|
||||
}
|
||||
|
||||
25%,
|
||||
50% {
|
||||
opacity: 1;
|
||||
transform: rotateY(0deg);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<script type="module" src="/src/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
11
cdTMP/jsconfig.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"baseUrl": ".",
|
||||
"paths": {
|
||||
"@/*": ["src/*"],
|
||||
"@cps/*": ["src/components/*"]
|
||||
},
|
||||
"jsx": "preserve"
|
||||
},
|
||||
"exclude": ["node_modules", "dist", "build"]
|
||||
}
|
||||
46
cdTMP/package.json
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"name": "cdtmp",
|
||||
"private": true,
|
||||
"version": "0.0.1",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
"build": "vite build",
|
||||
"preview": "vite preview",
|
||||
"prettier": "prettier --write ."
|
||||
},
|
||||
"dependencies": {
|
||||
"@arco-design/color": "^0.4.0",
|
||||
"@arco-design/web-vue": "^2.46.2",
|
||||
"axios": "^1.4.0",
|
||||
"crypto-js": "^4.1.1",
|
||||
"dayjs": "^1.11.7",
|
||||
"echarts": "^5.4.2",
|
||||
"lodash": "^4.17.21",
|
||||
"mitt": "^3.0.0",
|
||||
"nprogress": "^0.2.0",
|
||||
"pinia": "^2.1.3",
|
||||
"postcss-import": "^15.1.0",
|
||||
"qs": "^6.11.2",
|
||||
"sortablejs": "^1.15.0",
|
||||
"vue": "^3.3.0",
|
||||
"vue-clipboard3": "^2.0.0",
|
||||
"vue-color-kit": "^1.0.5",
|
||||
"vue-echarts": "^6.5.5",
|
||||
"vue-router": "^4.0.13",
|
||||
"vuedraggable": "^2.24.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vitejs/plugin-vue": "^4.1.0",
|
||||
"@vitejs/plugin-vue-jsx": "^3.0.1",
|
||||
"autoprefixer": "^10.4.14",
|
||||
"eslint": "^8.42.0",
|
||||
"eslint-plugin-vue": "^9.14.1",
|
||||
"less": "^4.1.3",
|
||||
"less-loader": "^11.1.2",
|
||||
"postcss": "^8.4.24",
|
||||
"prettier": "^2.8.8",
|
||||
"tailwindcss": "^3.3.2",
|
||||
"vite": "^4.3.9"
|
||||
}
|
||||
}
|
||||
3796
cdTMP/pnpm-lock.yaml
generated
Normal file
6
cdTMP/postcss.config.cjs
Normal file
@@ -0,0 +1,6 @@
|
||||
module.exports = {
|
||||
plugins: {
|
||||
tailwindcss: {},
|
||||
autoprefixer: {}
|
||||
}
|
||||
}
|
||||
1
cdTMP/public/logo.svg
Normal file
@@ -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="1683003273147" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6604" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M928 64H160a32 32 0 0 0-32 32v256a32 32 0 0 0 32 32h224v544a32 32 0 0 0 32 32h256a32 32 0 0 0 32-32V384h224a32 32 0 0 0 32-32V96a32 32 0 0 0-32-32z m-32 64v64H192v-64zM448 384h64v512h-64z m192 512h-64V352a32 32 0 0 0-32-32H192v-64h384a64.07 64.07 0 0 1 64 64z m64-576a127.23 127.23 0 0 0-17.18-64H896v64z" fill="#5C5C66" p-id="6605"></path></svg>
|
||||
|
After Width: | Height: | Size: 680 B |
1
cdTMP/public/wxwx-logo.svg
Normal file
@@ -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="1683003273147" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6604" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M928 64H160a32 32 0 0 0-32 32v256a32 32 0 0 0 32 32h224v544a32 32 0 0 0 32 32h256a32 32 0 0 0 32-32V384h224a32 32 0 0 0 32-32V96a32 32 0 0 0-32-32z m-32 64v64H192v-64zM448 384h64v512h-64z m192 512h-64V352a32 32 0 0 0-32-32H192v-64h384a64.07 64.07 0 0 1 64 64z m64-576a127.23 127.23 0 0 0-17.18-64H896v64z" fill="#5C5C66" p-id="6605"></path></svg>
|
||||
|
After Width: | Height: | Size: 680 B |
9
cdTMP/src/App.vue
Normal file
@@ -0,0 +1,9 @@
|
||||
<script setup></script>
|
||||
|
||||
<template>
|
||||
<a-config-provider>
|
||||
<router-view />
|
||||
</a-config-provider>
|
||||
</template>
|
||||
|
||||
<style scoped></style>
|
||||
176
cdTMP/src/assets/404.svg
Normal file
@@ -0,0 +1,176 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="770px" height="456px" viewBox="0 0 770 456" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 60.1 (88133) - https://sketch.com -->
|
||||
<title>6</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs>
|
||||
<path d="M451.167458,89.4511247 C403.062267,29.8170416 338.891681,0 258.655699,0 C138.301726,0 69.263862,60.1782766 27.9579265,152.101254 C-13.3480089,244.024231 -12.6661889,369.858107 55.6494632,409.696073 C123.965115,449.534039 210.08756,459.743134 340.957927,438.489218 C471.828293,417.235303 508.472089,464.890133 589.496232,451.689675 C670.520376,438.489218 748.359885,414.0324 766.111966,329.133852 C783.864046,244.235303 714.426288,177.226358 677.67078,152.101254 C640.915272,126.97615 569.728461,175.208649 519.030321,160.235303 C485.231561,150.253072 462.610607,126.658346 451.167458,89.4511247 Z" id="path-1"></path>
|
||||
<path d="M0.816264722,0 L370.714266,0 L370.714266,180.257104 L402.92544,180.257104 C424.638356,218.017298 440.878062,240.166012 451.644559,246.703245 L119.609274,243.521057 C112.14379,243.449507 105.100966,240.045172 100.407325,234.239285 C89.3772632,220.595444 81.4909058,210.013897 76.7482527,202.494643 C68.1135311,188.804698 66.7639588,180.257104 51.9095874,180.257104 C37.055216,180.257104 30.8879728,215.663472 26.2206784,229.536211 C21.5533841,243.408951 4.54747351e-13,240.685607 4.54747351e-13,229.536211 C4.54747351e-13,222.103281 0.272088241,145.59121 0.816264722,0 Z" id="path-3"></path>
|
||||
<polygon id="path-5" points="0 25.9764499 26.0411111 2.29150032e-13 52.9088048 25.9764499"></polygon>
|
||||
<polygon id="path-7" points="-2.27373675e-13 28.2395915 28.1433883 3.41060513e-13 54.0330976 28.2395915"></polygon>
|
||||
<path d="M3.53184776,0 L61.4681522,0 C63.1250065,4.9985658e-15 64.4681522,1.34314575 64.4681522,3 C64.4681522,3.16257855 64.4549364,3.32488807 64.4286352,3.48532508 L55.4122418,58.4853251 C55.1745077,59.9355031 53.921294,61 52.4517588,61 L12.5482412,61 C11.078706,61 9.82549232,59.9355031 9.58775821,58.4853251 L0.571364767,3.48532508 C0.303327126,1.85029547 1.41149307,0.307554646 3.04652268,0.0395170047 C3.20695969,0.0132158559 3.36926922,-1.30240244e-15 3.53184776,0 Z" id="path-9"></path>
|
||||
<path d="M-1.42108547e-14,115.48446 C1.32743544,94.0102656 2.89289856,78.9508436 4.69638937,70.3061937 C8.43003277,52.4097675 15.5176097,37.8448008 19.4787027,30.195863 C29.7253967,10.409323 39.7215535,5.31301339 44.6820442,2.63347577 C49.6425348,-0.0460618448 60.3007481,-1.62222357 66.327433,2.63347577 C72.3541179,6.88917511 74.5668372,13.0533931 73.7454921,23.1564165 C72.924147,33.2594398 65.469448,39.1497458 58.0193289,42.7343523 C50.5692098,46.3189588 31.0128594,60.1734323 19.4787027,74.1118722 C11.7892649,83.4041655 5.29636401,97.195028 -1.42108547e-14,115.48446 Z" id="path-11"></path>
|
||||
<path d="M0,61.382873 C12.627563,35.4721831 22.8842273,18.9178104 30.7699929,11.7197549 C42.5986412,0.922671591 57.9238693,-1.5327187 66.3547392,0.814866828 C74.7856091,3.16245236 78.9526569,14.6315037 74.3469666,21.3628973 C69.7412762,28.0942909 65.4378728,28.0568843 50.8423324,30.6914365 C36.246792,33.3259886 29.5659376,36.8930178 23.8425136,39.4010039 C21.5824174,40.3913708 15.331987,43.4769377 10.1725242,48.4356558 C7.80517763,50.7108935 4.41433624,55.0266325 0,61.382873 Z" id="path-13"></path>
|
||||
<path d="M-2.08995462,65.6474954 C12.5975781,38.2270573 23.8842273,20.9178104 31.7699929,13.7197549 C43.5986412,2.92267159 58.9238693,0.467281299 67.3547392,2.81486683 C75.7856091,5.16245236 79.9526569,16.6315037 75.3469666,23.3628973 C70.7412762,30.0942909 66.4378728,30.0568843 51.8423324,32.6914365 C37.246792,35.3259886 30.5659376,38.8930178 24.8425136,41.4010039 C22.5824174,42.3913708 13.2420323,47.7415601 8.08256956,52.7002782 C5.71522301,54.9755159 2.32438162,59.2912549 -2.08995462,65.6474954 Z" id="path-15"></path>
|
||||
<path d="M70.3618111,117.305105 C65.1514723,93.5149533 59.5592828,76.7727476 53.5852425,67.0784883 C44.6241821,52.5370993 33.2521675,43.1631445 21.9273327,38.7089848 C10.6024978,34.2548251 1.37005489,28.3143707 0.166250333,19.5991494 C-1.03755422,10.8839281 4.30184276,1.89650161 15.9982131,0.359853321 C27.6945835,-1.17679496 39.680528,1.89650161 50.3232751,15.6556441 C60.9660221,29.4147866 71.7898492,71.0503233 71.7898492,87.5111312 C71.7898492,98.4850031 71.3138365,108.416328 70.3618111,117.305105 Z" id="path-17"></path>
|
||||
<path d="M40.4361627,109.727577 C42.2080966,71.0333394 41.2052946,44.753324 37.4277569,30.8875312 C31.7614504,10.088842 22.8541813,-1.27827958 11.3728741,0.114578571 C-0.108432993,1.50743672 -2.5866861,11.539269 2.54272088,19.2423116 C7.67212787,26.9453541 22.1964111,48.5363293 27.3543068,61.4631547 C30.7929039,70.0810384 35.1535225,86.1691793 40.4361627,109.727577 Z" id="path-19"></path>
|
||||
<path d="M86.8630745,43.7959111 C72.5806324,23.5140129 56.8667378,10.125403 39.7213908,3.6300812 C14.0033702,-6.11290144 -7.10542736e-15,5.90110838 -7.10542736e-15,14.52167 C-7.10542736e-15,23.1422316 6.80949202,28.0268155 17.0489556,28.0268155 C27.2884192,28.0268155 43.7234658,26.0070237 58.8280258,34.5737997 C68.8977326,40.2849837 79.1842128,49.927944 89.6874666,63.5026805 L86.8630745,43.7959111 Z" id="path-21"></path>
|
||||
<circle id="path-23" cx="42" cy="42" r="42"></circle>
|
||||
</defs>
|
||||
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="画板" transform="translate(-2046.000000, -1809.000000)">
|
||||
<g id="6" transform="translate(2046.223123, 1809.764697)">
|
||||
<g id="编组-89" transform="translate(0.109175, 0.235303)">
|
||||
<mask id="mask-2" fill="white">
|
||||
<use xlink:href="#path-1"></use>
|
||||
</mask>
|
||||
<use id="路径-307" fill="#F3F7FF" xlink:href="#path-1"></use>
|
||||
<rect id="矩形" fill="#D0DEFE" mask="url(#mask-2)" x="0" y="362" width="791" height="112"></rect>
|
||||
<rect id="矩形" fill="#C4D6FF" mask="url(#mask-2)" transform="translate(395.500000, 353.500000) scale(1, -1) translate(-395.500000, -353.500000) " x="0" y="345" width="791" height="17"></rect>
|
||||
</g>
|
||||
<rect id="矩形" stroke="#979797" fill="#D8D8D8" x="632.609175" y="381.735303" width="39" height="10"></rect>
|
||||
<rect id="矩形" stroke="#979797" fill="#D8D8D8" x="632.609175" y="402.735303" width="39" height="10"></rect>
|
||||
<rect id="矩形" stroke="#979797" fill="#D8D8D8" x="628.609175" y="392.735303" width="39" height="10"></rect>
|
||||
<g id="编组-88" transform="translate(547.109175, 141.235303)">
|
||||
<rect id="矩形" fill="#BCD4FF" x="0" y="0" width="144" height="281"></rect>
|
||||
<rect id="矩形" fill="#EDF4FF" x="5" y="10.5" width="131" height="262"></rect>
|
||||
<rect id="矩形" fill="#9EBEF8" x="106" y="10.5" width="30" height="262"></rect>
|
||||
<rect id="矩形" fill="#BCD4FF" x="56" y="136" width="80" height="8"></rect>
|
||||
<rect id="矩形" fill="#BCD4FF" x="56" y="203" width="80" height="8"></rect>
|
||||
<g id="编组-87" transform="translate(63.000000, 153.000000)">
|
||||
<rect id="矩形" fill="#FFECC8" x="29" y="0" width="40" height="50"></rect>
|
||||
<rect id="矩形" fill="#FFE2AC" x="58" y="0" width="11" height="50"></rect>
|
||||
<rect id="矩形" fill="#D3E1FF" x="14" y="0" width="40" height="50"></rect>
|
||||
<rect id="矩形" fill="#BDD2FF" x="43" y="0" width="11" height="50"></rect>
|
||||
<rect id="矩形" fill="#FFECC8" x="0" y="8" width="40" height="42"></rect>
|
||||
<rect id="矩形" fill="#FFE2AC" x="29" y="8" width="11" height="42"></rect>
|
||||
</g>
|
||||
<g id="编组-87" transform="translate(63.000000, 222.000000)">
|
||||
<rect id="矩形" fill="#FFECC8" x="29" y="0" width="40" height="50"></rect>
|
||||
<rect id="矩形" fill="#FFE2AC" x="58" y="0" width="11" height="50"></rect>
|
||||
<rect id="矩形" fill="#D3E1FF" x="14" y="0" width="40" height="50"></rect>
|
||||
<rect id="矩形" fill="#BDD2FF" x="43" y="0" width="11" height="50"></rect>
|
||||
<rect id="矩形" fill="#FFECC8" x="0" y="8" width="40" height="42"></rect>
|
||||
<rect id="矩形" fill="#FFE2AC" x="29" y="8" width="11" height="42"></rect>
|
||||
</g>
|
||||
<g id="编组-87" transform="translate(63.000000, 86.000000)">
|
||||
<rect id="矩形" fill="#FFECC8" x="29" y="0" width="40" height="50"></rect>
|
||||
<rect id="矩形" fill="#FFE2AC" x="58" y="0" width="11" height="50"></rect>
|
||||
<rect id="矩形" fill="#D3E1FF" x="14" y="0" width="40" height="50"></rect>
|
||||
<rect id="矩形" fill="#BDD2FF" x="43" y="0" width="11" height="50"></rect>
|
||||
<rect id="矩形" fill="#FFECC8" x="0" y="8" width="40" height="42"></rect>
|
||||
<rect id="矩形" fill="#FFE2AC" x="29" y="8" width="11" height="42"></rect>
|
||||
</g>
|
||||
</g>
|
||||
<path d="M206.109175,130.235303 L586.109175,130.235303 C596.0503,130.235303 604.109175,138.294177 604.109175,148.235303 L604.109175,417.235303 L604.109175,417.235303 L188.109175,417.235303 L188.109175,148.235303 C188.109175,138.294177 196.168049,130.235303 206.109175,130.235303 Z" id="矩形" fill="#DDE9FF"></path>
|
||||
<path d="M206.109175,130.235303 L586.109175,130.235303 C596.0503,130.235303 604.109175,138.294177 604.109175,148.235303 L604.109175,163.235303 L604.109175,163.235303 L188.109175,163.235303 L188.109175,148.235303 C188.109175,138.294177 196.168049,130.235303 206.109175,130.235303 Z" id="矩形" fill="#FFECC8"></path>
|
||||
<path d="M206.109175,130.235303 L586.109175,130.235303 C596.0503,130.235303 604.109175,138.294177 604.109175,148.235303 L604.109175,160.235303 L604.109175,160.235303 L188.109175,160.235303 L188.109175,148.235303 C188.109175,138.294177 196.168049,130.235303 206.109175,130.235303 Z" id="矩形" fill="#A4C3FC"></path>
|
||||
<circle id="椭圆形" fill="#FFBB3C" cx="210" cy="146" r="4"></circle>
|
||||
<circle id="椭圆形" fill="#ECF2FF" cx="223.109175" cy="145.235303" r="4"></circle>
|
||||
<g id="编组-86" transform="translate(210.109175, 178.235303)">
|
||||
<mask id="mask-4" fill="white">
|
||||
<use xlink:href="#path-3"></use>
|
||||
</mask>
|
||||
<use id="路径-289" fill="#FFFFFF" xlink:href="#path-3"></use>
|
||||
<rect id="矩形" fill="#ECF2FF" mask="url(#mask-4)" x="50.8162647" y="180.401344" width="412" height="87"></rect>
|
||||
<polygon id="路径" fill="#FFEAC2" fill-rule="nonzero" mask="url(#mask-4)" points="361.449861 8.85304449 361.449861 180.761462 360.449861 180.761462 360.449 9.853 14.449 9.853 14.449 223.853 27.9199219 223.853044 27.9199219 224.853044 13.4498606 224.853044 13.4498606 8.85304449"></polygon>
|
||||
</g>
|
||||
<path d="M333.259175,333.235303 L333.259175,308.935303 L350.659175,308.935303 L350.659175,298.885303 L333.259175,298.885303 L333.259175,226.135303 L321.709175,226.135303 L267.709175,297.235303 L267.709175,308.935303 L321.559175,308.935303 L321.559175,333.235303 L333.259175,333.235303 Z M321.559175,298.885303 L278.059175,298.885303 L321.109175,242.185303 L321.559175,242.185303 L321.559175,298.885303 Z M399.109175,335.335303 C411.859175,335.335303 421.459175,329.635303 428.059175,318.385303 C433.759175,308.785303 436.609175,295.885303 436.609175,279.685303 C436.609175,263.485303 433.759175,250.585303 428.059175,240.985303 C421.459175,229.585303 411.859175,224.035303 399.109175,224.035303 C386.209175,224.035303 376.609175,229.585303 370.159175,240.985303 C364.459175,250.585303 361.609175,263.485303 361.609175,279.685303 C361.609175,295.885303 364.459175,308.785303 370.159175,318.385303 C376.609175,329.635303 386.209175,335.335303 399.109175,335.335303 Z M399.109175,324.835303 C389.509175,324.835303 382.609175,319.585303 378.409175,309.385303 C375.409175,302.035303 373.909175,292.135303 373.909175,279.685303 C373.909175,267.085303 375.409175,257.185303 378.409175,249.985303 C382.609175,239.635303 389.509175,234.535303 399.109175,234.535303 C408.709175,234.535303 415.609175,239.635303 419.809175,249.985303 C422.809175,257.185303 424.459175,267.085303 424.459175,279.685303 C424.459175,292.135303 422.809175,302.035303 419.809175,309.385303 C415.609175,319.585303 408.709175,324.835303 399.109175,324.835303 Z M513.259175,333.235303 L513.259175,308.935303 L530.659175,308.935303 L530.659175,298.885303 L513.259175,298.885303 L513.259175,226.135303 L501.709175,226.135303 L447.709175,297.235303 L447.709175,308.935303 L501.559175,308.935303 L501.559175,333.235303 L513.259175,333.235303 Z M501.559175,298.885303 L458.059175,298.885303 L501.109175,242.185303 L501.559175,242.185303 L501.559175,298.885303 Z" id="404" fill="#FFEAC2" fill-rule="nonzero"></path>
|
||||
<path d="M330.259175,330.235303 L330.259175,305.935303 L347.659175,305.935303 L347.659175,295.885303 L330.259175,295.885303 L330.259175,223.135303 L318.709175,223.135303 L264.709175,294.235303 L264.709175,305.935303 L318.559175,305.935303 L318.559175,330.235303 L330.259175,330.235303 Z M318.559175,295.885303 L275.059175,295.885303 L318.109175,239.185303 L318.559175,239.185303 L318.559175,295.885303 Z M396.109175,332.335303 C408.859175,332.335303 418.459175,326.635303 425.059175,315.385303 C430.759175,305.785303 433.609175,292.885303 433.609175,276.685303 C433.609175,260.485303 430.759175,247.585303 425.059175,237.985303 C418.459175,226.585303 408.859175,221.035303 396.109175,221.035303 C383.209175,221.035303 373.609175,226.585303 367.159175,237.985303 C361.459175,247.585303 358.609175,260.485303 358.609175,276.685303 C358.609175,292.885303 361.459175,305.785303 367.159175,315.385303 C373.609175,326.635303 383.209175,332.335303 396.109175,332.335303 Z M396.109175,321.835303 C386.509175,321.835303 379.609175,316.585303 375.409175,306.385303 C372.409175,299.035303 370.909175,289.135303 370.909175,276.685303 C370.909175,264.085303 372.409175,254.185303 375.409175,246.985303 C379.609175,236.635303 386.509175,231.535303 396.109175,231.535303 C405.709175,231.535303 412.609175,236.635303 416.809175,246.985303 C419.809175,254.185303 421.459175,264.085303 421.459175,276.685303 C421.459175,289.135303 419.809175,299.035303 416.809175,306.385303 C412.609175,316.585303 405.709175,321.835303 396.109175,321.835303 Z M510.259175,330.235303 L510.259175,305.935303 L527.659175,305.935303 L527.659175,295.885303 L510.259175,295.885303 L510.259175,223.135303 L498.709175,223.135303 L444.709175,294.235303 L444.709175,305.935303 L498.559175,305.935303 L498.559175,330.235303 L510.259175,330.235303 Z M498.559175,295.885303 L455.059175,295.885303 L498.109175,239.185303 L498.559175,239.185303 L498.559175,295.885303 Z" id="404" fill="#ACC9FF" fill-rule="nonzero"></path>
|
||||
<polygon id="路径-298" fill="#6EA1FF" fill-rule="nonzero" points="369.741481 26.3549544 369.741481 145.784171 368.741481 145.784171 368.741481 26.3549544"></polygon>
|
||||
<g id="编组-113" transform="translate(343.200370, 145.784171)">
|
||||
<mask id="mask-6" fill="white">
|
||||
<use xlink:href="#path-5"></use>
|
||||
</mask>
|
||||
<use id="路径-299" fill="#FFD078" xlink:href="#path-5"></use>
|
||||
<polygon id="路径-299" fill="#FFBB3C" mask="url(#mask-6)" points="-3 25.9764499 23.0411111 1.77635684e-15 49.9088048 25.9764499"></polygon>
|
||||
</g>
|
||||
<polygon id="路径-300" fill="#6EA1FF" fill-rule="nonzero" points="254.30695 -0.00143864693 255.306945 0.00143864694 255.109173 68.7367415 254.109177 68.7338642"></polygon>
|
||||
<g id="编组-112" transform="translate(226.663559, 65.717848)">
|
||||
<mask id="mask-8" fill="white">
|
||||
<use xlink:href="#path-7"></use>
|
||||
</mask>
|
||||
<use id="路径-301" fill="#D2E2FF" xlink:href="#path-7"></use>
|
||||
<polygon id="路径-301" fill="#A4C3FC" mask="url(#mask-8)" points="-3 28.2395915 25.1433883 -1.13686838e-13 51.0330976 28.2395915"></polygon>
|
||||
</g>
|
||||
<path d="M464.109175,72.2353029 L574.109175,72.2353029 C578.527453,72.2353029 582.109175,75.8170249 582.109175,80.2353029 L582.109175,152.269143 L582.109175,152.269143 L602.747625,174.760621 L464.163722,175.18059 C454.222643,175.210716 446.139383,167.1763 446.109258,157.23522 C446.109203,157.217038 446.109175,157.198855 446.109175,157.180672 L446.109175,90.2353029 C446.109175,80.2941774 454.168049,72.2353029 464.109175,72.2353029 Z" id="矩形" fill="#FFECC8"></path>
|
||||
<path d="M460.109175,69.2353029 L570.109175,69.2353029 C574.527453,69.2353029 578.109175,72.8170249 578.109175,77.2353029 L578.109175,149.269143 L578.109175,149.269143 L598.747625,171.760621 L460.163722,172.18059 C450.222643,172.210716 442.139383,164.1763 442.109258,154.23522 C442.109203,154.217038 442.109175,154.198855 442.109175,154.180672 L442.109175,87.2353029 C442.109175,77.2941774 450.168049,69.2353029 460.109175,69.2353029 Z" id="矩形" fill="#EBF2FF"></path>
|
||||
<rect id="矩形" fill="#FFFFFF" x="480" y="95" width="7" height="64"></rect>
|
||||
<rect id="矩形" fill="#FFFFFF" x="497.109175" y="95" width="7" height="64"></rect>
|
||||
<rect id="矩形" fill="#FFFFFF" x="514.109175" y="95" width="7" height="64"></rect>
|
||||
<rect id="矩形" fill="#FFFFFF" x="530.109175" y="95" width="7" height="64"></rect>
|
||||
<rect id="矩形" fill="#FFFFFF" x="546.109175" y="95" width="7" height="64"></rect>
|
||||
<polygon id="路径-302" fill="#A4C3FC" fill-rule="nonzero" points="466.970801 86.0695627 466.97 158.272 566.971883 158.272396 566.971883 159.272396 465.970801 159.272396 465.970801 86.0695627"></polygon>
|
||||
<polygon id="路径-304" fill="#979797" fill-rule="nonzero" points="559.240013 152.472555 559.909745 151.729952 567.687435 158.744424 559.937708 166.917681 559.21205 166.229626 566.256 158.8"></polygon>
|
||||
<path d="M547.776877,151.235303 L657.776877,151.235303 C662.195155,151.235303 665.776877,154.817025 665.776877,159.235303 L665.776877,231.269143 L665.776877,231.269143 L686.415326,253.760621 L547.831424,254.18059 C537.890344,254.210716 529.807085,246.1763 529.776959,236.23522 C529.776904,236.217038 529.776877,236.198855 529.776877,236.180672 L529.776877,169.235303 C529.776877,159.294177 537.835751,151.235303 547.776877,151.235303 Z" id="矩形" fill="#A4C3FC" transform="translate(608.096101, 202.735303) scale(-1, 1) translate(-608.096101, -202.735303) "></path>
|
||||
<path d="M542.776877,150.235303 L652.776877,150.235303 C657.195155,150.235303 660.776877,153.817025 660.776877,158.235303 L660.776877,230.269143 L660.776877,230.269143 L681.415326,252.760621 L542.831424,253.18059 C532.890344,253.210716 524.807085,245.1763 524.776959,235.23522 C524.776904,235.217038 524.776877,235.198855 524.776877,235.180672 L524.776877,168.235303 C524.776877,158.294177 532.835751,150.235303 542.776877,150.235303 Z" id="矩形" fill="#FFCA67" transform="translate(603.096101, 201.735303) scale(-1, 1) translate(-603.096101, -201.735303) "></path>
|
||||
<path d="M551.888365,105.031459 C555.290806,103.139777 558.513795,102.897668 562.237517,104.467631 L562.588104,104.620129 L562.17909,105.532657 C558.599379,103.928154 555.612548,104.105059 552.37429,105.905459 C550.368282,107.020755 548.58771,108.45472 545.16394,111.609463 L541.614214,114.898486 C538.015181,118.209826 536.087942,119.845252 533.11225,122.086913 C532.782184,122.335559 532.450805,122.581445 532.117803,122.824718 C528.104792,125.756407 523.934988,126.987135 519.313532,126.876779 C516.035171,126.798495 513.270144,126.221396 508.17289,124.737029 L505.737532,124.022849 C497.810115,121.733418 494.471662,121.366012 490.348408,122.889971 C482.286296,125.869735 475.026188,137.650266 468.664891,158.243664 L468.457777,158.918311 L467.501306,158.626481 C473.997113,137.336567 481.463921,125.107569 490.001728,121.951987 C494.55996,120.267261 498.129316,120.741123 506.945337,123.333314 L508.921,123.912647 C513.638819,125.272395 516.27064,125.803833 519.337404,125.877064 C523.744193,125.982294 527.697642,124.815424 531.527904,122.017241 L532.020296,121.654721 L532.510552,121.288189 C535.634194,118.935074 537.593599,117.254212 541.615416,113.537015 L544.497926,110.863327 C547.974881,107.659837 549.794043,106.195856 551.888365,105.031459 Z" id="路径-303" fill="#FFBB3C" fill-rule="nonzero"></path>
|
||||
<polygon id="路径-305" fill="#A4C3FC" fill-rule="nonzero" points="458.750713 92.4640098 466.468831 85.3932668 474.275626 92.4620486 473.604426 93.2033249 466.472 86.745 459.42622 93.2013637"></polygon>
|
||||
<g id="编组-81" transform="translate(50.109175, 134.235303)">
|
||||
<g id="编组-63" transform="translate(63.914093, 222.107327)">
|
||||
<mask id="mask-10" fill="white">
|
||||
<use xlink:href="#path-9"></use>
|
||||
</mask>
|
||||
<use id="矩形" fill="#DDE9FF" xlink:href="#path-9"></use>
|
||||
<path d="M1.20882698,0 L63.4052217,0 C64.4023405,3.36954592e-15 65.3342971,0.495421402 65.8920292,1.32196893 L67.6990928,4 C68.491521,5.17436234 68.1819023,6.76876112 67.0075399,7.56118935 C66.5836904,7.84719165 66.0840393,8 65.5727217,8 L2.06042429,8 C0.819095645,8 -0.294028853,7.23549708 -0.7396257,6.076903 L-1.5384054,4 C-2.12194354,2.48274545 -1.36501684,0.779716485 0.152237704,0.196178338 C0.489411271,0.0665009295 0.84757604,9.54539142e-16 1.20882698,0 Z" id="矩形" fill="#FFBB3C" mask="url(#mask-10)"></path>
|
||||
</g>
|
||||
<g id="编组-103" transform="translate(90.000000, 84.000000)">
|
||||
<mask id="mask-12" fill="white">
|
||||
<use xlink:href="#path-11"></use>
|
||||
</mask>
|
||||
<use id="路径-246" fill="#EAFFF3" xlink:href="#path-11"></use>
|
||||
<path d="M-1.42108547e-14,119.48446 C1.32743544,98.0102656 2.89289856,82.9508436 4.69638937,74.3061937 C8.43003277,56.4097675 15.5176097,41.8448008 19.4787027,34.195863 C29.7253967,14.409323 39.7215535,9.31301339 44.6820442,6.63347577 C49.6425348,3.95393816 60.3007481,2.37777643 66.327433,6.63347577 C72.3541179,10.8891751 74.5668372,17.0533931 73.7454921,27.1564165 C72.924147,37.2594398 65.469448,43.1497458 58.0193289,46.7343523 C50.5692098,50.3189588 31.0128594,64.1734323 19.4787027,78.1118722 C11.7892649,87.4041655 5.29636401,101.195028 -1.42108547e-14,119.48446 Z" id="路径-246" fill="#D3F0E0" mask="url(#mask-12)"></path>
|
||||
<path d="M61.0623172,22.0501917 C61.3287364,21.9775593 61.6035919,22.1346545 61.6762243,22.4010736 C61.7488567,22.6674927 61.5917615,22.9423483 61.3253424,23.0149807 C30.6460939,31.3788982 10.4195539,62.2160822 0.685726462,115.62224 C0.636212326,115.893907 0.375843567,116.073997 0.104176562,116.024483 C-0.167490443,115.974969 -0.347580926,115.7146 -0.29806679,115.442933 C9.49743654,61.6983811 29.9375632,30.535565 61.0623172,22.0501917 Z" id="路径-251" fill="#9FC8B1" fill-rule="nonzero" mask="url(#mask-12)"></path>
|
||||
<path d="M53.2988281,45.3242187 C23.2203776,62.4189453 5.8733724,84.8946126 1.2578125,112.751221 C31.0439453,72.423808 48.9638672,50.9959922 55.0175781,48.4677734 C61.0712891,45.9395547 60.4983724,44.8917031 53.2988281,45.3242187 Z" id="路径-358" fill="#C4E0D1" mask="url(#mask-12)"></path>
|
||||
</g>
|
||||
<g id="编组-102" transform="translate(112.698267, 46.543175)">
|
||||
<mask id="mask-14" fill="white">
|
||||
<use xlink:href="#path-13"></use>
|
||||
</mask>
|
||||
<use id="路径-247" fill="#EAFFF3" xlink:href="#path-13"></use>
|
||||
<mask id="mask-16" fill="white">
|
||||
<use xlink:href="#path-15"></use>
|
||||
</mask>
|
||||
<use id="路径-247" fill="#D3F0E0" xlink:href="#path-15"></use>
|
||||
<path d="M60.5426357,11.3128799 C60.8171154,11.2826219 61.064154,11.4806027 61.094412,11.7550823 C61.12467,12.0295619 60.9266892,12.2766006 60.6522096,12.3068585 C39.729997,14.6132741 18.9462607,31.6462845 -1.67037213,63.4563407 C-1.8205596,63.6880697 -2.13016408,63.7541722 -2.36189309,63.6039847 C-2.5936221,63.4537972 -2.65972458,63.1441927 -2.50953711,62.9124637 C18.2541689,30.8754836 39.2620175,13.6588053 60.5426357,11.3128799 Z" id="路径-253" fill="#9FC8B1" fill-rule="nonzero" mask="url(#mask-16)"></path>
|
||||
<path d="M77,14.004188 C76.1582967,19.0507483 74.4123575,22.6778642 71.7621824,24.8855357 C67.7869198,28.1970428 61.7621824,29.629188 56.5004637,30.6914365 C51.2387449,31.753685 28.3095457,36.4578462 17.2245848,45.7839732 L39.1176512,38.3640513 L70.2081638,30.6914365 L79.9838621,20.4621958 L77,14.004188 Z" id="路径-357" fill="#C4E0D1" mask="url(#mask-16)"></path>
|
||||
</g>
|
||||
<g id="编组-105" transform="translate(17.048956, 30.887531)">
|
||||
<mask id="mask-18" fill="white">
|
||||
<use xlink:href="#path-17"></use>
|
||||
</mask>
|
||||
<use id="路径-248" fill="#EAFFF3" xlink:href="#path-17"></use>
|
||||
<path d="M69.3618111,119.305105 C64.1514723,95.5149533 58.5592828,78.7727476 52.5852425,69.0784883 C43.6241821,54.5370993 32.2521675,45.1631445 20.9273327,40.7089848 C9.60249781,36.2548251 0.370054887,30.3143707 -0.833749667,21.5991494 C-2.03755422,12.8839281 3.30184276,3.89650161 14.9982131,2.35985332 C26.6945835,0.823205037 38.680528,3.89650161 49.3232751,17.6556441 C59.9660221,31.4147866 70.7898492,73.0503233 70.7898492,89.5111312 C70.7898492,100.485003 70.3138365,110.416328 69.3618111,119.305105 Z" id="路径-248" fill="#D3F0E0" mask="url(#mask-18)"></path>
|
||||
<path d="M23.8031025,13.6524169 C23.9507563,13.4197035 24.2596222,13.3495935 24.4929738,13.4972473 C53.619825,31.9273315 69.2261583,67.7464847 71.3453163,120.899853 C71.3559107,121.175776 71.1411468,121.408372 70.8652236,121.419775 C70.5893003,121.43037 70.3567042,121.215606 70.3457056,120.939683 C68.238827,68.0842278 52.7653698,32.5700476 23.9582721,14.3422882 C23.7249205,14.1946344 23.6554487,13.8857685 23.8031025,13.6524169 Z" id="路径-254" fill="#9FC8B1" fill-rule="nonzero" mask="url(#mask-18)"></path>
|
||||
<path d="M2.10955328,9.39371881 C-0.468124531,21.2459323 4.83890245,29.8251967 18.0306342,35.1315118 C37.8182319,43.0909844 45.0262397,50.6209933 54.8953803,65.9239922 C61.4748074,76.1259915 66.5415392,93.4846608 70.0955756,118 L-6.37610406,29.466961 L2.10955328,9.39371881 Z" id="路径-354" fill="#C4E0D1" mask="url(#mask-18)"></path>
|
||||
</g>
|
||||
<g id="编组-104" transform="translate(48.402642, -0.000000)">
|
||||
<mask id="mask-20" fill="white">
|
||||
<use xlink:href="#path-19"></use>
|
||||
</mask>
|
||||
<use id="路径-249" fill="#EAFFF3" xlink:href="#path-19"></use>
|
||||
<path d="M38.4361627,109.727577 C40.2080966,71.0333394 39.2052946,44.753324 35.4277569,30.8875312 C29.7614504,10.088842 20.8541813,-1.27827958 9.37287413,0.114578571 C-2.10843299,1.50743672 -4.5866861,11.539269 0.542720885,19.2423116 C5.67212787,26.9453541 20.1964111,48.5363293 25.3543068,61.4631547 C28.7929039,70.0810384 33.1535225,86.1691793 38.4361627,109.727577 Z" id="路径-249" fill="#D3F0E0" mask="url(#mask-20)" transform="translate(18.642412, 54.863789) rotate(-2.000000) translate(-18.642412, -54.863789) "></path>
|
||||
<path d="M1.96015082,4.87988281 C0.585845275,10.6699219 1.44620769,15.6948242 4.54123807,19.9545898 C9.18378363,26.3442383 28.9997016,54.6122295 32.8727485,77.5431753 L3.69550238,25.6259766 L-2.5784234,12.7954102 L1.96015082,4.87988281 Z" id="路径-356" fill="#C4E0D1" mask="url(#mask-20)"></path>
|
||||
</g>
|
||||
<g id="编组-106" transform="translate(-0.000000, 140.484501)">
|
||||
<mask id="mask-22" fill="white">
|
||||
<use xlink:href="#path-21"></use>
|
||||
</mask>
|
||||
<use id="路径-250" fill="#EAFFF3" xlink:href="#path-21"></use>
|
||||
<path d="M86.8630745,45.7959111 C72.5806324,25.5140129 56.8667378,12.125403 39.7213908,5.6300812 C14.0033702,-4.11290144 -7.10542736e-15,7.90110838 -7.10542736e-15,16.52167 C-7.10542736e-15,25.1422316 6.80949202,30.0268155 17.0489556,30.0268155 C27.2884192,30.0268155 43.7234658,28.0070237 58.8280258,36.5737997 C68.8977326,42.2849837 79.1842128,51.927944 89.6874666,65.5026805 L86.8630745,45.7959111 Z" id="路径-250" fill="#D3F0E0" mask="url(#mask-22)"></path>
|
||||
<path d="M1.1501319,20.1112023 C3.60224814,22.8815414 6.77648803,24.6116846 10.6728516,25.301632 C16.5173969,26.3365529 23.2104492,26.0726281 29.4458008,26.0726281 C47.5162559,26.0726281 66.1025391,30.4051476 89.6874666,63.5026805 L73.4389648,56.501339 L2.37988281,27.6380577 L1.1501319,20.1112023 Z" id="路径-355" fill="#C4E0D1" mask="url(#mask-22)"></path>
|
||||
</g>
|
||||
<path d="M63.5963011,11.6405216 C63.8094921,11.4650103 64.1245976,11.4955556 64.3001089,11.7087466 C74.8415791,24.513311 82.3205992,48.9543952 86.3331527,79.7677903 L86.4536838,80.7034746 C89.7765293,106.781999 90.2171879,135.285754 87.8968469,153.563607 L87.8038207,154.279761 C84.7801018,177.032488 87.8036828,199.576221 96.8773487,221.919195 C96.9812512,222.175044 96.858074,222.466681 96.6022247,222.570583 C96.3463753,222.674486 96.0547388,222.551308 95.9508363,222.295459 C86.945111,200.119782 83.8552445,177.733575 86.6839023,155.144723 L86.812536,154.148024 C89.2247883,135.99643 88.8179579,107.170593 85.4617038,80.8298697 L85.2198735,78.9727728 C81.2011719,48.7675619 73.814123,24.8386348 63.5280761,12.3443293 C63.3525648,12.1311384 63.3831102,11.8160329 63.5963011,11.6405216 Z" id="路径-245" fill="#9FC8B1" fill-rule="nonzero"></path>
|
||||
<path d="M19.210295,152.513695 C50.2079907,155.741553 73.2591803,169.485692 88.3189956,193.730479 C88.4647019,193.965052 88.3926616,194.273329 88.1580891,194.419035 C87.9235165,194.564741 87.6152396,194.492701 87.4695333,194.258128 C72.5772256,170.283012 49.8045783,156.704952 19.1067228,153.508317 C18.8320656,153.479717 18.6325973,153.233878 18.6611979,152.95922 C18.6866207,152.715081 18.8836888,152.530349 19.1200684,152.512399 L19.210295,152.513695 Z" id="路径-252" fill="#9FC8B1" fill-rule="nonzero"></path>
|
||||
</g>
|
||||
<g id="编组-76" transform="translate(570.109175, 160.235303)">
|
||||
<mask id="mask-24" fill="white">
|
||||
<use xlink:href="#path-23"></use>
|
||||
</mask>
|
||||
<use id="椭圆形" fill="#FFFFFF" xlink:href="#path-23"></use>
|
||||
<polygon id="路径-306" fill="#CCDEFF" mask="url(#mask-24)" points="42 44.0199101 77.9801299 18.2088648 90.719119 40.5 84 59.9151825"></polygon>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 31 KiB |
BIN
cdTMP/src/assets/BingWallpaper.jpg
Normal file
|
After Width: | Height: | Size: 666 KiB |
69
cdTMP/src/assets/img/login-bg.svg
Normal file
@@ -0,0 +1,69 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="1361px" height="609px" viewBox="0 0 1361 609" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 46.2 (44496) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>Group 21</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs></defs>
|
||||
<g id="Ant-Design-Pro-3.0" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="账户密码登录-校验" transform="translate(-79.000000, -82.000000)">
|
||||
<g id="Group-21" transform="translate(77.000000, 73.000000)">
|
||||
<g id="Group-18" opacity="0.8" transform="translate(74.901416, 569.699158) rotate(-7.000000) translate(-74.901416, -569.699158) translate(4.901416, 525.199158)">
|
||||
<ellipse id="Oval-11" fill="#CFDAE6" opacity="0.25" cx="63.5748792" cy="32.468367" rx="21.7830479" ry="21.766008"></ellipse>
|
||||
<ellipse id="Oval-3" fill="#CFDAE6" opacity="0.599999964" cx="5.98746479" cy="13.8668601" rx="5.2173913" ry="5.21330997"></ellipse>
|
||||
<path d="M38.1354514,88.3520215 C43.8984227,88.3520215 48.570234,83.6838647 48.570234,77.9254015 C48.570234,72.1669383 43.8984227,67.4987816 38.1354514,67.4987816 C32.3724801,67.4987816 27.7006688,72.1669383 27.7006688,77.9254015 C27.7006688,83.6838647 32.3724801,88.3520215 38.1354514,88.3520215 Z" id="Oval-3-Copy" fill="#CFDAE6" opacity="0.45"></path>
|
||||
<path d="M64.2775582,33.1704963 L119.185836,16.5654915" id="Path-12" stroke="#CFDAE6" stroke-width="1.73913043" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<path d="M42.1431708,26.5002681 L7.71190162,14.5640702" id="Path-16" stroke="#E0B4B7" stroke-width="0.702678964" opacity="0.7" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1.405357899873153,2.108036953469981"></path>
|
||||
<path d="M63.9262187,33.521561 L43.6721326,69.3250951" id="Path-15" stroke="#BACAD9" stroke-width="0.702678964" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1.405357899873153,2.108036953469981"></path>
|
||||
<g id="Group-17" transform="translate(126.850922, 13.543654) rotate(30.000000) translate(-126.850922, -13.543654) translate(117.285705, 4.381889)" fill="#CFDAE6">
|
||||
<ellipse id="Oval-4" opacity="0.45" cx="9.13482653" cy="9.12768076" rx="9.13482653" ry="9.12768076"></ellipse>
|
||||
<path d="M18.2696531,18.2553615 C18.2696531,13.2142826 14.1798519,9.12768076 9.13482653,9.12768076 C4.08980114,9.12768076 0,13.2142826 0,18.2553615 L18.2696531,18.2553615 Z" id="Oval-4" transform="translate(9.134827, 13.691521) scale(-1, -1) translate(-9.134827, -13.691521) "></path>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Group-14" transform="translate(216.294700, 123.725600) rotate(-5.000000) translate(-216.294700, -123.725600) translate(106.294700, 35.225600)">
|
||||
<ellipse id="Oval-2" fill="#CFDAE6" opacity="0.25" cx="29.1176471" cy="29.1402439" rx="29.1176471" ry="29.1402439"></ellipse>
|
||||
<ellipse id="Oval-2" fill="#CFDAE6" opacity="0.3" cx="29.1176471" cy="29.1402439" rx="21.5686275" ry="21.5853659"></ellipse>
|
||||
<ellipse id="Oval-2-Copy" stroke="#CFDAE6" opacity="0.4" cx="179.019608" cy="138.146341" rx="23.7254902" ry="23.7439024"></ellipse>
|
||||
<ellipse id="Oval-2" fill="#BACAD9" opacity="0.5" cx="29.1176471" cy="29.1402439" rx="10.7843137" ry="10.7926829"></ellipse>
|
||||
<path d="M29.1176471,39.9329268 L29.1176471,18.347561 C23.1616351,18.347561 18.3333333,23.1796097 18.3333333,29.1402439 C18.3333333,35.1008781 23.1616351,39.9329268 29.1176471,39.9329268 Z" id="Oval-2" fill="#BACAD9"></path>
|
||||
<g id="Group-9" opacity="0.45" transform="translate(172.000000, 131.000000)" fill="#E6A1A6">
|
||||
<ellipse id="Oval-2-Copy-2" cx="7.01960784" cy="7.14634146" rx="6.47058824" ry="6.47560976"></ellipse>
|
||||
<path d="M0.549019608,13.6219512 C4.12262681,13.6219512 7.01960784,10.722722 7.01960784,7.14634146 C7.01960784,3.56996095 4.12262681,0.670731707 0.549019608,0.670731707 L0.549019608,13.6219512 Z" id="Oval-2-Copy-2" transform="translate(3.784314, 7.146341) scale(-1, 1) translate(-3.784314, -7.146341) "></path>
|
||||
</g>
|
||||
<ellipse id="Oval-10" fill="#CFDAE6" cx="218.382353" cy="138.685976" rx="1.61764706" ry="1.61890244"></ellipse>
|
||||
<ellipse id="Oval-10-Copy-2" fill="#E0B4B7" opacity="0.35" cx="179.558824" cy="175.381098" rx="1.61764706" ry="1.61890244"></ellipse>
|
||||
<ellipse id="Oval-10-Copy" fill="#E0B4B7" opacity="0.35" cx="180.098039" cy="102.530488" rx="2.15686275" ry="2.15853659"></ellipse>
|
||||
<path d="M28.9985381,29.9671598 L171.151018,132.876024" id="Path-11" stroke="#CFDAE6" opacity="0.8"></path>
|
||||
</g>
|
||||
<g id="Group-10" opacity="0.799999952" transform="translate(1054.100635, 36.659317) rotate(-11.000000) translate(-1054.100635, -36.659317) translate(1026.600635, 4.659317)">
|
||||
<ellipse id="Oval-7" stroke="#CFDAE6" stroke-width="0.941176471" cx="43.8135593" cy="32" rx="11.1864407" ry="11.2941176"></ellipse>
|
||||
<g id="Group-12" transform="translate(34.596774, 23.111111)" fill="#BACAD9">
|
||||
<ellipse id="Oval-7" opacity="0.45" cx="9.18534718" cy="8.88888889" rx="8.47457627" ry="8.55614973"></ellipse>
|
||||
<path d="M9.18534718,17.4450386 C13.8657264,17.4450386 17.6599235,13.6143199 17.6599235,8.88888889 C17.6599235,4.16345787 13.8657264,0.332739156 9.18534718,0.332739156 L9.18534718,17.4450386 Z" id="Oval-7"></path>
|
||||
</g>
|
||||
<path d="M34.6597385,24.809694 L5.71666084,4.76878945" id="Path-2" stroke="#CFDAE6" stroke-width="0.941176471"></path>
|
||||
<ellipse id="Oval" stroke="#CFDAE6" stroke-width="0.941176471" cx="3.26271186" cy="3.29411765" rx="3.26271186" ry="3.29411765"></ellipse>
|
||||
<ellipse id="Oval-Copy" fill="#F7E1AD" cx="2.79661017" cy="61.1764706" rx="2.79661017" ry="2.82352941"></ellipse>
|
||||
<path d="M34.6312443,39.2922712 L5.06366663,59.785082" id="Path-10" stroke="#CFDAE6" stroke-width="0.941176471"></path>
|
||||
</g>
|
||||
<g id="Group-19" opacity="0.33" transform="translate(1282.537219, 446.502867) rotate(-10.000000) translate(-1282.537219, -446.502867) translate(1142.537219, 327.502867)">
|
||||
<g id="Group-17" transform="translate(141.333539, 104.502742) rotate(275.000000) translate(-141.333539, -104.502742) translate(129.333539, 92.502742)" fill="#BACAD9">
|
||||
<circle id="Oval-4" opacity="0.45" cx="11.6666667" cy="11.6666667" r="11.6666667"></circle>
|
||||
<path d="M23.3333333,23.3333333 C23.3333333,16.8900113 18.1099887,11.6666667 11.6666667,11.6666667 C5.22334459,11.6666667 0,16.8900113 0,23.3333333 L23.3333333,23.3333333 Z" id="Oval-4" transform="translate(11.666667, 17.500000) scale(-1, -1) translate(-11.666667, -17.500000) "></path>
|
||||
</g>
|
||||
<circle id="Oval-5-Copy-6" fill="#CFDAE6" cx="201.833333" cy="87.5" r="5.83333333"></circle>
|
||||
<path d="M143.5,88.8126685 L155.070501,17.6038544" id="Path-17" stroke="#BACAD9" stroke-width="1.16666667"></path>
|
||||
<path d="M17.5,37.3333333 L127.466252,97.6449735" id="Path-18" stroke="#BACAD9" stroke-width="1.16666667"></path>
|
||||
<polyline id="Path-19" stroke="#CFDAE6" stroke-width="1.16666667" points="143.902597 120.302281 174.935455 231.571342 38.5 147.510847 126.366941 110.833333"></polyline>
|
||||
<path d="M159.833333,99.7453842 L195.416667,89.25" id="Path-20" stroke="#E0B4B7" stroke-width="1.16666667" opacity="0.6"></path>
|
||||
<path d="M205.333333,82.1372105 L238.719406,36.1666667" id="Path-24" stroke="#BACAD9" stroke-width="1.16666667"></path>
|
||||
<path d="M266.723424,132.231988 L207.083333,90.4166667" id="Path-25" stroke="#CFDAE6" stroke-width="1.16666667"></path>
|
||||
<circle id="Oval-5" fill="#C1D1E0" cx="156.916667" cy="8.75" r="8.75"></circle>
|
||||
<circle id="Oval-5-Copy-3" fill="#C1D1E0" cx="39.0833333" cy="148.75" r="5.25"></circle>
|
||||
<circle id="Oval-5-Copy-2" fill-opacity="0.6" fill="#D1DEED" cx="8.75" cy="33.25" r="8.75"></circle>
|
||||
<circle id="Oval-5-Copy-4" fill-opacity="0.6" fill="#D1DEED" cx="243.833333" cy="30.3333333" r="5.83333333"></circle>
|
||||
<circle id="Oval-5-Copy-5" fill="#E0B4B7" cx="175.583333" cy="232.75" r="5.25"></circle>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 8.7 KiB |
1
cdTMP/src/assets/img/wxwx-logo.svg
Normal file
@@ -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="1683003273147" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6604" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M928 64H160a32 32 0 0 0-32 32v256a32 32 0 0 0 32 32h224v544a32 32 0 0 0 32 32h256a32 32 0 0 0 32-32V384h224a32 32 0 0 0 32-32V96a32 32 0 0 0-32-32z m-32 64v64H192v-64zM448 384h64v512h-64z m192 512h-64V352a32 32 0 0 0-32-32H192v-64h384a64.07 64.07 0 0 1 64 64z m64-576a127.23 127.23 0 0 0-17.18-64H896v64z" fill="#5C5C66" p-id="6605"></path></svg>
|
||||
|
After Width: | Height: | Size: 679 B |
1
cdTMP/src/assets/login_picture.svg
Normal file
|
After Width: | Height: | Size: 20 KiB |
8
cdTMP/src/assets/ma-icons/chenIcon-attach.vue
Normal file
@@ -0,0 +1,8 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 1024 1024" class="icon" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M645.51621918 141.21142578c21.36236596 0 41.79528808 4.04901123 61.4025879 12.06298852a159.71594214 159.71594214 0 0 1 54.26367236 35.87255836c15.84503198 16.07739258 27.76959252 34.13726783 35.78356909 54.13513184 7.86071778 19.30572486 11.76635766 39.80291724 11.76635767 61.53607177 0 21.68371583-3.90563989 42.22045875-11.76635767 61.54101586-8.01397729 19.99291992-19.95831275 38.02807617-35.78356909 54.08569313l-301.39672877 302.0839231c-9.21038818 9.22027564-20.15112281 16.48278832-32.74310277 21.77270508-12.29040503 4.81036401-24.54125953 7.19329834-36.82177783 7.19329834-12.29040503 0-24.56103516-2.38293433-36.85638427-7.19329834-12.63647461-5.28991675-23.53271461-12.55737281-32.7381587-21.77270508-9.55151367-9.58117675-16.69042992-20.44775367-21.50573731-32.57995583-4.7856443-11.61804223-7.15869117-23.91339135-7.15869188-36.9255979 0-13.14074708 2.37304688-25.55474854 7.16363524-37.19256639 4.81036401-11.94927954 11.94927954-22.78619408 21.50079395-32.55029274l278.11614966-278.46221923c6.45172119-6.51104737 14.22344971-9.75421118 23.27563501-9.75421119 8.8692627 0 16.54705787 3.24316383 23.03338622 9.75421119 6.47644019 6.49127173 9.73937964 14.18389916 9.73937964 23.08282495 0 9.0521853-3.26293945 16.81896972-9.73937964 23.32012891L366.97489888 629.73773218c-6.32812477 6.2935183-9.48724342 14.08007836-9.48724415 23.30529736 0 9.06701684 3.15417457 16.75964356 9.48724414 23.08776904 6.80273414 6.50610328 14.55963111 9.75915528 23.26574683 9.75915527 8.67150855 0 16.43334961-3.253052 23.27563501-9.76409935l301.37695313-302.04931665c18.93988037-18.96459937 28.40734887-42.04742432 28.40734814-69.25836158 0-27.16149926-9.4674685-50.26409912-28.40734815-69.22869849-19.44415283-19.13269043-42.55664086-28.72375464-69.31274438-28.72375536-26.97363258 0-49.99218727 9.59106422-69.1001587 28.72375536L274.3370815 536.89227319a159.99774146 159.99774146 0 0 0-35.80828883 54.33288526c-8.0337522 19.65179443-12.04321289 40.2824707-12.04321289 61.79809618 0 21.20910645 4.00451661 41.81011963 12.04321289 61.79809547 8.17218018 20.34393287 20.10168481 38.36920166 35.80828883 54.08569312 16.225708 16.06256104 34.30535888 28.13049292 54.23400854 36.15930176 19.91381813 8.0337522 40.47033667 12.06793189 61.64978002 12.0679326 21.13989281 0 41.70135474-4.03417969 61.63000513-12.0679326 19.91876221-8.02386474 38.01818872-20.09674073 54.2241211-36.15435768l300.86773656-301.53515601c6.47644019-6.50115991 14.23828125-9.76904273 23.28057912-9.76904344 8.88903833 0 16.56188941 3.26293945 23.04821776 9.76904344 6.48632836 6.48632836 9.7245481 14.17895508 9.7245481 23.06799269 0 9.09667992-3.23822046 16.8535769-9.7245481 23.37451172L552.40379244 815.35449242c-22.00012231 22.01989722-47.32745362 38.88336158-75.986938 50.49151564C449.10209565 877.14270043 420.37834101 882.78857422 390.21592671 882.78857422c-30.01904297 0-58.74279761-5.64587378-86.20587183-16.94256616-28.6842041-11.60815406-54.00659203-28.47161842-76.00671362-50.49151564a226.19586182 226.19586182 0 0 1-50.13061524-75.90289354A226.86328125 226.86328125 0 0 1 160.9697104 653.04797364c0-30.08331323 5.62115479-58.88122559 16.90795899-86.38385035 11.40545654-28.37768578 28.11566138-53.75939917 50.13061523-76.15997313h0.24719287L530.14164643 189.20135474c15.69177247-15.731323 33.68737817-27.70037818 53.98681641-35.89727735C604.09666377 145.26043701 624.55430562 141.23120141 645.51127583 141.23120141V141.21142578z"
|
||||
p-id="14389"
|
||||
></path>
|
||||
</svg>
|
||||
</template>
|
||||
8
cdTMP/src/assets/ma-icons/chenIcon-code.vue
Normal file
@@ -0,0 +1,8 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 1024 1024" class="icon" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M246.72 327.296c-12.032-12.032-31.424-12.032-43.456 0L9.024 521.344c-12.032 11.968-12.032 31.36 0 43.392l194.304 194.048c12.032 11.968 31.424 11.968 43.456 0 12.032-12.032 12.032-31.36 0-43.392L74.112 543.04l172.608-172.416C258.752 358.656 258.752 339.264 246.72 327.296zM954.368 521.344l-194.304-194.048c-12.032-12.032-31.488-12.032-43.456 0-12.032 11.968-12.032 31.36 0 43.328l172.608 172.416-172.608 172.352c-12.032 12.032-12.032 31.36 0 43.392 11.968 11.968 31.424 11.968 43.456 0l194.304-194.048C966.4 552.768 966.4 533.312 954.368 521.344zM689.664 132.608c-15.296-8.96-34.88-3.648-43.712 11.84l-384 766.848c-8.896 15.424-3.648 35.2 11.712 44.032 15.296 8.96 34.88 3.648 43.776-11.84l383.936-766.848C710.272 161.28 705.024 141.504 689.664 132.608z"
|
||||
p-id="21813"
|
||||
></path>
|
||||
</svg>
|
||||
</template>
|
||||
17
cdTMP/src/assets/ma-icons/chenIcon-db.vue
Normal file
@@ -0,0 +1,17 @@
|
||||
<!--
|
||||
- MineAdmin is committed to providing solutions for quickly building web applications
|
||||
- Please view the LICENSE file that was distributed with this source code,
|
||||
- For the full copyright and license information.
|
||||
- Thank you very much for using MineAdmin.
|
||||
-
|
||||
- @Author X.Mo<root@imoi.cn>
|
||||
- @Link https://gitee.com/xmo/mineadmin-vue
|
||||
-->
|
||||
<template>
|
||||
<svg viewBox="0 0 1024 1024" class="icon" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M554.666667 768v85.333333h128v85.333334H341.333333v-85.333334h128v-85.333333H170.666667a42.666667 42.666667 0 0 1-42.666667-42.666667V170.666667a42.666667 42.666667 0 0 1 42.666667-42.666667h682.666666a42.666667 42.666667 0 0 1 42.666667 42.666667v554.666666a42.666667 42.666667 0 0 1-42.666667 42.666667h-298.666666z m-341.333334-85.333333h597.333334V213.333333H213.333333v469.333334z m85.333334-384h426.666666v128H298.666667V298.666667z m0 170.666666h426.666666v42.666667H298.666667v-42.666667z m0 85.333334h426.666666v42.666666H298.666667v-42.666666z"
|
||||
p-id="4038"
|
||||
></path>
|
||||
</svg>
|
||||
</template>
|
||||
17
cdTMP/src/assets/ma-icons/chenIcon-dept.vue
Normal file
@@ -0,0 +1,17 @@
|
||||
<!--
|
||||
- MineAdmin is committed to providing solutions for quickly building web applications
|
||||
- Please view the LICENSE file that was distributed with this source code,
|
||||
- For the full copyright and license information.
|
||||
- Thank you very much for using MineAdmin.
|
||||
-
|
||||
- @Author X.Mo<root@imoi.cn>
|
||||
- @Link https://gitee.com/xmo/mineadmin-vue
|
||||
-->
|
||||
<template>
|
||||
<svg viewBox="0 0 1024 1024" class="icon" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M87.616 512h-0.512V448H480V256H320V0h384v256H544v192H960v320h64v256h-256v-256h128V512H544v256H640v256H384v-256h96V512H151.616v256H256v256H0v-256h87.616V512z"
|
||||
p-id="7884"
|
||||
></path>
|
||||
</svg>
|
||||
</template>
|
||||
17
cdTMP/src/assets/ma-icons/chenIcon-dict.vue
Normal file
@@ -0,0 +1,17 @@
|
||||
<!--
|
||||
- MineAdmin is committed to providing solutions for quickly building web applications
|
||||
- Please view the LICENSE file that was distributed with this source code,
|
||||
- For the full copyright and license information.
|
||||
- Thank you very much for using MineAdmin.
|
||||
-
|
||||
- @Author X.Mo<root@imoi.cn>
|
||||
- @Link https://gitee.com/xmo/mineadmin-vue
|
||||
-->
|
||||
<template>
|
||||
<svg viewBox="0 0 1024 1024" class="icon" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M728.544 158.016a100.16 100.16 0 0 1 100.096 94.304l0.16 5.696v411.968a100.128 100.128 0 0 1-94.56 99.84l-5.696 0.192-477.216-0.064v10.048c0 22.496 22.88 47.456 44.48 50.144l3.808 0.256h508.224c3.392 0 6.144 2.72 6.144 6.112v21.856a28 28 0 0 1-28 28h-56.8l-0.48 0.032H299.584c-52.256 0-100.928-48.608-104.192-100.8l-0.192-5.6V257.984a100.128 100.128 0 0 1 94.56-99.84l5.696-0.16h433.088z m0 56H295.456c-22.944 0-41.76 17.44-43.904 39.744l-0.224 4.256V713.92l477.216 0.064c22.944 0 41.76-17.472 43.904-39.776l0.224-4.256V258.016c0-22.848-17.504-41.664-39.872-43.776l-4.256-0.192zM515.776 323.2c44.48 0 77.952 10.432 100.48 31.328 22.528 20.864 33.792 50.464 33.792 88.768 0 23.328-4.192 45.216-12.576 65.664a153.792 153.792 0 0 1-37.248 54.016c-16.448 15.52-36.8 27.712-61.056 36.48-21.216 7.68-45.44 12.032-72.64 12.992l-11.84 0.192H361.6l61.504-289.44h92.672z m-17.76 53.568h-14.272l-38.112 181.888h17.312c23.36 0 43.104-4.992 59.104-14.912 16.032-9.92 28.16-23.264 36.384-39.968 8.224-16.704 12.352-35.552 12.352-56.576 0-24.48-5.92-42.336-17.76-53.6-11.84-11.2-30.176-16.832-55.008-16.832z"
|
||||
p-id="16241"
|
||||
></path>
|
||||
</svg>
|
||||
</template>
|
||||
21
cdTMP/src/assets/ma-icons/chenIcon-group.vue
Normal file
@@ -0,0 +1,21 @@
|
||||
<!--
|
||||
- MineAdmin is committed to providing solutions for quickly building web applications
|
||||
- Please view the LICENSE file that was distributed with this source code,
|
||||
- For the full copyright and license information.
|
||||
- Thank you very much for using MineAdmin.
|
||||
-
|
||||
- @Author X.Mo<root@imoi.cn>
|
||||
- @Link https://gitee.com/xmo/mineadmin-vue
|
||||
-->
|
||||
<template>
|
||||
<svg viewBox="0 0 1024 1024" class="icon" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M83.968 1010.924308c-39.936 0-71.916308-34.028308-71.916308-76.484923v-575.015385c0-42.535385 31.980308-76.484923 71.916308-76.484923H686.08c39.936 0 71.916308 34.028308 71.916308 76.484923v575.015385c0 42.456615-31.980308 76.484923-71.916308 76.484923H83.968z m0-677.336616c-13.312 0-24.339692 11.815385-24.339692 25.836308v583.443692h1.575384c3.072 10.003692 11.815385 17.329231 22.528 17.329231H686.08c13.312 0 24.260923-11.736615 24.260923-25.757538v-575.015385c0-14.020923-11.027692-25.836308-24.260923-25.836308H83.968z m753.664 464.896v-575.015384c0-14.020923-11.027692-25.836308-24.418462-25.836308h-538.781538a24.418462 24.418462 0 0 1-23.630769-25.048615c0-13.312 10.24-25.127385 23.630769-25.127385h538.072615c39.936 0 71.916308 34.107077 71.916308 76.563692v575.251693c0 13.312-10.24 25.048615-23.552 25.048615-13.312 0-23.236923-10.712615-23.236923-25.836308z m127.448615-134.931692V88.615385c0-14.099692-11.027692-25.836308-24.339692-25.836308h-538.781538a24.418462 24.418462 0 0 1-23.63077-25.127385c0-13.312 10.24-25.048615 23.63077-25.048615h537.993846c39.936 0 71.995077 34.028308 71.995077 76.563692V664.024615c0 13.312-10.24 25.048615-23.63077 25.048616a23.788308 23.788308 0 0 1-23.236923-25.6z"
|
||||
p-id="18978"
|
||||
></path>
|
||||
<path
|
||||
d="M0 934.439385v-575.015385c0-49.388308 37.651692-89.560615 83.968-89.560615H686.08c46.316308 0 83.968 40.172308 83.968 89.560615v575.015385C770.048 983.827692 732.396308 1024 686.08 1024H83.968C37.651692 1024 0 983.827692 0 934.439385z m83.968-638.739693c-33.083077 0-59.628308 28.672-59.628308 63.803077v574.936616c0 35.052308 26.860308 63.724308 59.628308 63.724307H686.08c33.004308 0 59.628308-28.672 59.628308-63.803077V359.502769c0-35.052308-26.860308-63.724308-59.628308-63.724307H83.968z m-30.247385 659.928616H47.576615V359.424c0-21.267692 16.384-38.596923 36.391385-38.596923H686.08c19.928615 0 36.312615 17.329231 36.312615 38.596923v575.015385c0 21.267692-16.384 38.596923-36.312615 38.596923H83.968a35.682462 35.682462 0 0 1-30.247385-17.329231z m30.247385-609.201231c-6.695385 0-12.051692 5.828923-12.051692 12.996923v576.275692l1.024 3.072c1.260308 4.096 4.883692 8.664615 11.264 8.664616h601.796923c6.695385 0 12.051692-5.828923 12.051692-12.996923v-575.015385c0-6.852923-5.592615-12.996923-11.972923-12.996923H83.968z m741.612308 452.056615v-575.015384c0-6.852923-5.671385-12.996923-12.051693-12.996923H274.432c-19.692308 0-35.603692-16.935385-35.603692-37.888 0-21.031385 15.911385-37.888 35.603692-37.888h538.072615c46.316308 0 83.968 40.172308 83.968 89.560615v575.015385c0 20.952615-15.832615 37.809231-35.603692 37.80923-19.928615 0-35.288615-16.541538-35.288615-38.596923zM274.432 160.689231c-6.931692 0-11.264 6.459077-11.264 12.051692 0 7.404308 5.907692 12.051692 11.264 12.051692h538.781538c20.007385 0 36.391385 17.329231 36.391385 38.596923v575.015385c0 7.640615 4.647385 13.075692 11.264 13.075692 6.931692 0 11.264-6.459077 11.264-12.051692v-575.015385c0-35.052308-26.860308-63.724308-59.628308-63.724307H274.432z m687.812923 529.408a37.257846 37.257846 0 0 1-9.452308-27.096616V88.615385c0-6.931692-5.671385-13.075692-12.051692-13.075693h-538.781538C382.109538 75.618462 366.276923 58.683077 366.276923 37.809231c0-21.031385 15.832615-37.651692 35.524923-37.651693h538.072616C986.348308 0 1024 40.172308 1024 89.639385v575.015384c0 20.952615-15.832615 37.809231-35.524923 37.809231a36.548923 36.548923 0 0 1-26.151385-12.288zM401.880615 25.678769c-6.852923 0-11.264 6.301538-11.264 11.972923 0 7.483077 5.907692 12.051692 11.264 12.051693h538.860308c20.007385 0 36.391385 17.408 36.391385 38.596923v576.039384a11.342769 11.342769 0 0 0 11.264 12.051693c6.852923 0 11.264-6.459077 11.264-12.051693v-575.015384c0-34.973538-26.939077-63.645538-59.707077-63.645539h-537.993846z"
|
||||
p-id="18979"
|
||||
></path>
|
||||
</svg>
|
||||
</template>
|
||||
17
cdTMP/src/assets/ma-icons/chenIcon-menu.vue
Normal file
@@ -0,0 +1,17 @@
|
||||
<!--
|
||||
- MineAdmin is committed to providing solutions for quickly building web applications
|
||||
- Please view the LICENSE file that was distributed with this source code,
|
||||
- For the full copyright and license information.
|
||||
- Thank you very much for using MineAdmin.
|
||||
-
|
||||
- @Author X.Mo<root@imoi.cn>
|
||||
- @Link https://gitee.com/xmo/mineadmin-vue
|
||||
-->
|
||||
<template>
|
||||
<svg viewBox="0 0 1024 1024" class="icon" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M383.068024 469.026256l-171.915441 0c-47.39238 0-85.957721-38.533618-85.957721-85.957721l0-171.915441c0-47.39238 38.566364-85.957721 85.957721-85.957721l171.915441 0c47.40773 0 85.957721 38.566364 85.957721 85.957721l0 171.915441C469.025745 430.492638 430.475753 469.026256 383.068024 469.026256L383.068024 469.026256zM426.046884 211.153094c0-23.695678-19.283182-42.97886-42.97886-42.97886l-171.915441 0c-23.680329 0-42.97886 19.283182-42.97886 42.97886l0 171.915441c0 23.712051 19.298532 42.97886 42.97886 42.97886l171.915441 0c23.695678 0 42.97886-19.266809 42.97886-42.97886L426.046884 211.153094 426.046884 211.153094zM383.068024 898.798487l-171.915441 0c-47.39238 0-85.957721-38.518269-85.957721-85.941348l0-171.915441c0-47.39238 38.566364-85.957721 85.957721-85.957721l171.915441 0c47.40773 0 85.957721 38.566364 85.957721 85.957721l0 171.915441C469.025745 860.281241 430.475753 898.798487 383.068024 898.798487L383.068024 898.798487zM426.046884 640.941698c0-23.695678-19.283182-42.97886-42.97886-42.97886l-171.915441 0c-23.680329 0-42.97886 19.283182-42.97886 42.97886l0 171.915441c0 23.712051 19.298532 42.97886 42.97886 42.97886l171.915441 0c23.695678 0 42.97886-19.266809 42.97886-42.97886L426.046884 640.941698 426.046884 640.941698zM877.35664 748.516762c-11.879562 0-21.521153-9.577123-21.521153-21.457708l0-86.117356c0-23.695678-19.283182-42.97886-42.97886-42.97886l-171.915441 0c-23.680329 0-42.97886 19.283182-42.97886 42.97886l0 171.915441c0 23.712051 19.298532 42.97886 42.97886 42.97886l86.117356 0c11.864212 0 21.48943 9.657964 21.48943 21.521153 0 11.83249-9.625218 21.441335-21.48943 21.441335L640.941186 898.798487c-47.39238 0-85.957721-38.518269-85.957721-85.941348l0-171.915441c0-47.39238 38.566364-85.957721 85.957721-85.957721l171.915441 0c47.40773 0 85.957721 38.566364 85.957721 85.957721l0 86.117356C898.814348 738.939639 889.188106 748.516762 877.35664 748.516762L877.35664 748.516762zM812.856627 469.026256l-171.915441 0c-47.39238 0-85.957721-38.533618-85.957721-85.957721l0-171.915441c0-47.39238 38.566364-85.957721 85.957721-85.957721l171.915441 0c47.40773 0 85.957721 38.566364 85.957721 85.957721l0 171.915441C898.814348 430.492638 860.264357 469.026256 812.856627 469.026256L812.856627 469.026256zM855.835488 211.153094c0-23.695678-19.283182-42.97886-42.97886-42.97886l-171.915441 0c-23.680329 0-42.97886 19.283182-42.97886 42.97886l0 171.915441c0 23.712051 19.298532 42.97886 42.97886 42.97886l171.915441 0c23.695678 0 42.97886-19.266809 42.97886-42.97886L855.835488 211.153094 855.835488 211.153094z"
|
||||
p-id="7047"
|
||||
></path>
|
||||
</svg>
|
||||
</template>
|
||||
48
cdTMP/src/assets/ma-icons/chenIcon-mineadmin.vue
Normal file
@@ -0,0 +1,48 @@
|
||||
<!--
|
||||
- MineAdmin is committed to providing solutions for quickly building web applications
|
||||
- Please view the LICENSE file that was distributed with this source code,
|
||||
- For the full copyright and license information.
|
||||
- Thank you very much for using MineAdmin.
|
||||
-
|
||||
- @Author X.Mo<root@imoi.cn>
|
||||
- @Link https://gitee.com/xmo/mineadmin-vue
|
||||
-->
|
||||
<template>
|
||||
<svg viewBox="0 0 1024 1024" class="icon" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M1109.12 786.49856a157.44 157.44 0 1 0 314.88 0 157.44 157.44 0 1 0-314.88 0Z"
|
||||
fill-opacity="null"
|
||||
p-id="621"
|
||||
></path>
|
||||
<path
|
||||
d="M359.81067 146.988593l282.234494 139.61771-284.910937 575.941934-282.234494-139.61771z"
|
||||
fill-opacity="null"
|
||||
p-id="622"
|
||||
></path>
|
||||
<path
|
||||
d="M357.540463 151.577771a157.44 157.44 0 1 0 282.234494 139.617711 157.44 157.44 0 1 0-282.234494-139.617711Z"
|
||||
fill-opacity="null"
|
||||
p-id="623"
|
||||
></path>
|
||||
<path
|
||||
d="M78.306178 716.044464a157.44 157.44 0 1 0 282.234494 139.61771 157.44 157.44 0 1 0-282.234494-139.61771Z"
|
||||
fill-opacity="null"
|
||||
p-id="624"
|
||||
></path>
|
||||
<path
|
||||
d="M897.31851 146.988593l282.234494 139.61771-284.910937 575.941934-282.234494-139.61771z"
|
||||
fill-opacity="null"
|
||||
p-id="625"
|
||||
></path>
|
||||
<path
|
||||
d="M895.048303 151.577771a157.44 157.44 0 1 0 282.234494 139.617711 157.44 157.44 0 1 0-282.234494-139.617711Z"
|
||||
fill-opacity="null"
|
||||
p-id="626"
|
||||
></path>
|
||||
<path
|
||||
d="M615.814018 716.044464a157.44 157.44 0 1 0 282.234494 139.61771 157.44 157.44 0 1 0-282.234494-139.61771Z"
|
||||
fill-opacity="null"
|
||||
p-id="627"
|
||||
></path>
|
||||
</svg>
|
||||
</template>
|
||||
21
cdTMP/src/assets/ma-icons/chenIcon-online.vue
Normal file
@@ -0,0 +1,21 @@
|
||||
<!--
|
||||
- MineAdmin is committed to providing solutions for quickly building web applications
|
||||
- Please view the LICENSE file that was distributed with this source code,
|
||||
- For the full copyright and license information.
|
||||
- Thank you very much for using MineAdmin.
|
||||
-
|
||||
- @Author X.Mo<root@imoi.cn>
|
||||
- @Link https://gitee.com/xmo/mineadmin-vue
|
||||
-->
|
||||
<template>
|
||||
<svg viewBox="0 0 1024 1024" class="icon" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M350.3 490.1l-6.4 6.4c-5.5 5.6-13.2 8.3-21.6 8.4-9-0.2-17.6-3.9-24.2-10.5L112.9 309.1c-13-13-14-34-2.1-45.8l152.5-152.5c11.9-11.8 32.8-10.9 45.8 2.1l185.3 185.3c6.6 6.6 10.3 15.1 10.5 24.2 0.2 8.4-2.8 16.1-8.4 21.6l-6.4 6.4c-16 16-16 41.9 0 57.9s41.9 16 57.9 0l6.4-6.3c21.5-21.5 33-50.3 32.3-81.2-0.6-30.3-12.8-58.9-34.4-80.4L367 54.9C321.9 9.8 249.3 8.8 205.3 52.8L52.8 205.3c-44 44-43 116.5 2.1 161.7l185.3 185.3c21.6 21.6 50.2 33.8 80.4 34.4h2.4c30 0 57.9-11.4 78.8-32.4l6.4-6.3c16-16 16-41.9 0-57.9s-41.9-16-57.9 0zM969 657L783.8 471.8c-21.6-21.6-50.2-33.8-80.4-34.4-30.9-0.6-59.8 10.9-81.2 32.3l-6.3 6.4c-16 16-16 41.9 0 57.9s41.9 16 57.9 0l6.4-6.3c5.5-5.6 12.8-8.5 21.6-8.4 9 0.2 17.6 3.9 24.2 10.5l185.3 185.3c13 13 14 34 2.1 45.8L760.8 913.2c-11.9 11.8-32.8 10.9-45.8-2.1L529.7 725.9c-6.6-6.6-10.3-15.2-10.5-24.2-0.2-8.4 2.8-16.1 8.4-21.7l6.3-6.3c16-16 16-41.9 0-57.9s-41.9-16-57.9 0l-6.4 6.3c-21.5 21.5-33 50.3-32.3 81.2 0.6 30.3 12.8 58.8 34.4 80.4L657 969c23 23 53 34.5 82.8 34.5 28.8 0 57.3-10.8 78.9-32.4l152.5-152.5c44-43.9 43-116.4-2.2-161.6z"
|
||||
p-id="2016"
|
||||
></path>
|
||||
<path
|
||||
d="M396.1 396.1c-15.9 15.9-15.9 42 0 57.9l173.8 173.8c15.9 15.9 42 15.9 57.9 0 15.9-15.9 15.9-42 0-57.9L454.1 396.1c-16-15.9-42-15.9-58 0z"
|
||||
p-id="2017"
|
||||
></path>
|
||||
</svg>
|
||||
</template>
|
||||
29
cdTMP/src/assets/ma-icons/chenIcon-permission.vue
Normal file
@@ -0,0 +1,29 @@
|
||||
<!--
|
||||
- MineAdmin is committed to providing solutions for quickly building web applications
|
||||
- Please view the LICENSE file that was distributed with this source code,
|
||||
- For the full copyright and license information.
|
||||
- Thank you very much for using MineAdmin.
|
||||
-
|
||||
- @Author X.Mo<root@imoi.cn>
|
||||
- @Link https://gitee.com/xmo/mineadmin-vue
|
||||
-->
|
||||
<template>
|
||||
<svg viewBox="0 0 1024 1024" class="icon" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M854.91 748.01c-75.59 0-137.09-61.49-137.09-137.09s61.49-137.09 137.09-137.09S992 535.33 992 610.92s-61.49 137.09-137.09 137.09z m0-205.63c-37.8 0-68.54 30.75-68.54 68.54s30.75 68.54 68.54 68.54c37.8 0 68.54-30.75 68.54-68.54s-30.74-68.54-68.54-68.54z"
|
||||
p-id="3006"
|
||||
></path>
|
||||
<path
|
||||
d="M538.86 991.15c-8.79 0-17.59-3.37-24.29-10.09-13.35-13.42-13.31-35.12 0.1-48.47L768.33 680c13.43-13.35 35.12-13.3 48.47 0.1 13.35 13.42 13.31 35.12-0.1 48.47l-253.66 252.6c-6.68 6.66-15.43 9.98-24.18 9.98z"
|
||||
p-id="3007"
|
||||
></path>
|
||||
<path
|
||||
d="M666.94 808.61c-8.74 0-17.47-3.31-24.15-9.95L598 754.17c-13.43-13.34-13.5-35.04-0.17-48.47 13.35-13.42 35.05-13.5 48.47-0.17l44.79 44.49c13.43 13.34 13.5 35.04 0.17 48.47a34.21 34.21 0 0 1-24.32 10.12zM580.87 917.97c-8.77 0-17.54-3.35-24.23-10.04L448.67 799.96c-13.39-13.38-13.39-35.09 0-48.46 13.39-13.39 35.07-13.39 48.46 0L605.1 859.47c13.39 13.38 13.39 35.09 0 48.46a34.199 34.199 0 0 1-24.23 10.04zM474.67 577.85c-150.26 0-272.51-123.01-272.51-274.19 0-149.32 122.25-270.81 272.51-270.81s272.5 121.49 272.5 270.81c0 151.19-122.24 274.19-272.5 274.19z m0-476.46c-112.46 0-203.97 90.74-203.97 202.27 0 113.4 91.5 205.65 203.97 205.65s203.95-92.25 203.95-205.65c0.01-111.53-91.48-202.27-203.95-202.27z"
|
||||
p-id="3008"
|
||||
></path>
|
||||
<path
|
||||
d="M381.13 989.8H66.27C47.34 989.8 32 974.46 32 955.53c0-245.97 198.58-446.07 442.66-446.07 18.93 0 34.27 15.34 34.27 34.27S493.59 578 474.66 578c-194.84 0-355.38 151.09-372.59 343.26h279.06c18.93 0 34.27 15.34 34.27 34.27s-15.34 34.27-34.27 34.27z"
|
||||
p-id="3009"
|
||||
></path>
|
||||
</svg>
|
||||
</template>
|
||||
17
cdTMP/src/assets/ma-icons/chenIcon-post.vue
Normal file
@@ -0,0 +1,17 @@
|
||||
<!--
|
||||
- MineAdmin is committed to providing solutions for quickly building web applications
|
||||
- Please view the LICENSE file that was distributed with this source code,
|
||||
- For the full copyright and license information.
|
||||
- Thank you very much for using MineAdmin.
|
||||
-
|
||||
- @Author X.Mo<root@imoi.cn>
|
||||
- @Link https://gitee.com/xmo/mineadmin-vue
|
||||
-->
|
||||
<template>
|
||||
<svg viewBox="0 0 1024 1024" class="icon" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M790.325095 174.650968l159.265884 95.55953a137.557944 137.557944 0 0 1 66.764259 117.952314v498.279244a137.557944 137.557944 0 0 1-137.557944 137.557944H145.170853A137.557944 137.557944 0 0 1 7.612909 886.442056V388.162812a137.557944 137.557944 0 0 1 66.796112-117.984167l159.265884-95.55953 47.190481 78.66142-159.265884 95.55953a45.852648 45.852648 0 0 0-22.297223 39.370527v498.231464a45.852648 45.852648 0 0 0 45.868574 45.788942h733.642367a45.852648 45.852648 0 0 0 45.852648-45.852648V388.162812a45.852648 45.852648 0 0 0-22.297223-39.338673l-159.265884-95.559531 47.158628-78.61364zM512.007963 0l183.410592 110.036799-78.040283 165.063162h-2.65974l50.1369 419.82487-152.895248 130.311346-152.895249-130.311346 50.168753-419.904503h-2.134162L328.613298 110.036799 512.02389 0z m22.042399 275.099961h-44.100724l-46.187106 386.824979 68.293211 58.195754 68.293211-58.195754-46.330446-386.824979zM512.007963 106.947041l-64.805288 38.876802 17.885559 37.570822h94.173917l17.726293-37.475262-64.948628-38.940509z"
|
||||
p-id="9542"
|
||||
></path>
|
||||
</svg>
|
||||
</template>
|
||||
18
cdTMP/src/assets/ma-icons/chenIcon-rely.vue
Normal file
@@ -0,0 +1,18 @@
|
||||
<!--
|
||||
- MineAdmin is committed to providing solutions for quickly building web applications
|
||||
- Please view the LICENSE file that was distributed with this source code,
|
||||
- For the full copyright and license information.
|
||||
- Thank you very much for using MineAdmin.
|
||||
-
|
||||
- @Author X.Mo<root@imoi.cn>
|
||||
- @Link https://gitee.com/xmo/mineadmin-vue
|
||||
-->
|
||||
<template>
|
||||
<svg viewBox="0 0 1024 1024" class="icon" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M977.1 238.9C946.9 208.6 906.7 192 864 192s-82.9 16.6-113.1 46.9C720.6 269.1 704 309.3 704 352c0 3.5 0.1 6.9 0.3 10.4L302.9 471.9c-7-13.9-16.1-26.8-27.2-38.4l128.6-185.1c13.8 5 28.6 7.6 43.7 7.6 70.6 0 128-57.4 128-128 0-34.2-13.3-66.3-37.5-90.5C514.3 13.3 482.2 0 448 0s-66.3 13.3-90.5 37.5S320 93.8 320 128c0 31.3 11.1 60.8 31.5 84.1L223.2 396.9c-19.7-8.5-41.1-12.9-63.2-12.9-42.7 0-82.9 16.6-113.1 46.9C16.6 461.1 0 501.3 0 544c0 42.7 16.6 82.9 46.9 113.1C77.1 687.4 117.3 704 160 704c46.6 0 88.6-20 117.9-51.9L461.1 762c-8.6 22-13.1 45.7-13.1 70 0 51.3 20 99.5 56.2 135.8 36.3 36.3 84.5 56.2 135.8 56.2 105.9 0 192-86.1 192-192 0-51.3-20-99.5-56.2-135.8C739.5 660 691.3 640 640 640s-99.5 20-135.8 56.2c-3.5 3.5-6.9 7.2-10.1 10.9L310.9 597.2c5.9-16.7 9.1-34.6 9.1-53.2 0-3.5-0.1-6.9-0.3-10.4l401.4-109.5c7.6 15 17.6 28.8 29.8 41C781.1 495.4 821.3 512 864 512c88.2 0 160-71.8 160-160 0-42.7-16.6-82.9-46.9-113.1zM640 704c34.2 0 66.3 13.3 90.5 37.5 24.2 24.2 37.5 56.3 37.5 90.5 0 70.6-57.4 128-128 128-34.2 0-66.3-13.3-90.5-37.5-24.2-24.2-37.5-56.3-37.5-90.5s13.3-66.3 37.5-90.5c24.2-24.2 56.3-37.5 90.5-37.5zM402.7 82.7C414.8 70.7 430.9 64 448 64s33.2 6.7 45.3 18.7c12 12.1 18.7 28.2 18.7 45.3 0 35.3-28.7 64-64 64-17.1 0-33.2-6.7-45.3-18.7S384 145.1 384 128s6.7-33.2 18.7-45.3zM160 640c-25.6 0-49.8-10-67.9-28.1C74 593.8 64 569.6 64 544s10-49.8 28.1-67.9C110.2 458 134.4 448 160 448s49.8 10 67.9 28.1C246 494.2 256 518.4 256 544c0 52.9-43.1 96-96 96z m704-192c-25.6 0-49.8-10-67.9-28.1C778 401.8 768 377.6 768 352s10-49.8 28.1-67.9C814.2 266 838.4 256 864 256s49.8 10 67.9 28.1C950 302.2 960 326.4 960 352c0 52.9-43.1 96-96 96z"
|
||||
fill=""
|
||||
p-id="19933"
|
||||
></path>
|
||||
</svg>
|
||||
</template>
|
||||
17
cdTMP/src/assets/ma-icons/chenIcon-role.vue
Normal file
@@ -0,0 +1,17 @@
|
||||
<!--
|
||||
- MineAdmin is committed to providing solutions for quickly building web applications
|
||||
- Please view the LICENSE file that was distributed with this source code,
|
||||
- For the full copyright and license information.
|
||||
- Thank you very much for using MineAdmin.
|
||||
-
|
||||
- @Author X.Mo<root@imoi.cn>
|
||||
- @Link https://gitee.com/xmo/mineadmin-vue
|
||||
-->
|
||||
<template>
|
||||
<svg viewBox="0 0 1024 1024" class="icon" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M477.867 588.8c64 0 123.733-25.6 166.4-68.267 46.933-42.666 68.266-102.4 68.266-166.4s-25.6-123.733-68.266-166.4c-42.667-46.933-102.4-68.266-166.4-68.266s-123.734 25.6-166.4 68.266c-46.934 38.4-72.534 98.134-72.534 162.134s25.6 123.733 68.267 166.4C354.133 563.2 413.867 588.8 477.867 588.8z m0-418.133c98.133 0 179.2 81.066 179.2 179.2 0 98.133-81.067 179.2-179.2 179.2-98.134 0-179.2-81.067-179.2-179.2 0-98.134 81.066-179.2 179.2-179.2z m-162.134 409.6c-46.933 21.333-93.866 51.2-132.266 89.6-38.4 38.4-68.267 81.066-89.6 132.266-12.8 34.134-21.334 64-29.867 98.134-4.267 17.066 12.8 34.133 29.867 34.133 12.8 0 25.6-8.533 29.866-25.6 4.267-29.867 12.8-59.733 25.6-85.333C166.4 780.8 192 742.4 226.133 712.533c34.134-34.133 72.534-59.733 115.2-76.8 17.067-8.533 21.334-25.6 17.067-38.4-8.533-17.066-25.6-21.333-42.667-17.066z m622.934-98.134c-12.8-12.8-34.134-8.533-46.934 4.267l-307.2 379.733-174.933-140.8c-12.8-12.8-34.133-8.533-46.933 4.267-12.8 12.8-8.534 34.133 4.266 46.933l200.534 162.134c4.266 4.266 12.8 8.533 21.333 8.533s17.067-4.267 25.6-12.8l328.533-401.067c12.8-21.333 12.8-38.4-4.266-51.2z"
|
||||
p-id="3999"
|
||||
></path>
|
||||
</svg>
|
||||
</template>
|
||||
17
cdTMP/src/assets/ma-icons/chenIcon-tool.vue
Normal file
@@ -0,0 +1,17 @@
|
||||
<!--
|
||||
- MineAdmin is committed to providing solutions for quickly building web applications
|
||||
- Please view the LICENSE file that was distributed with this source code,
|
||||
- For the full copyright and license information.
|
||||
- Thank you very much for using MineAdmin.
|
||||
-
|
||||
- @Author X.Mo<root@imoi.cn>
|
||||
- @Link https://gitee.com/xmo/mineadmin-vue
|
||||
-->
|
||||
<template>
|
||||
<svg viewBox="0 0 1024 1024" class="icon" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M248.768295 434.912297c15.133675 0 29.9358-2.030239 44.261063-5.529947 0.769526 1.051959 1.198292 2.275833 2.153036 3.230578l64.396659 64.396659c4.89345 4.89345 11.30344 7.339152 17.714454 7.339152 6.40999 0 12.821003-2.445702 17.714454-7.339152 9.7869-9.785877 9.7869-25.640983 0-35.427884l-52.420907-52.432163c13.237489-7.829316 25.690102-17.200754 36.859489-28.381397 5.088902-5.088902 9.750061-10.496052 14.165628-16.050558l53.962006 53.949726c4.892427 4.89345 11.30344 7.339152 17.71343 7.339152 6.412037 0 12.821003-2.446725 17.71343-7.339152 9.7869-9.7869 9.7869-25.640983 0-35.427884l-63.135946-63.124689c8.967232-21.922289 13.70207-45.581128 13.713326-69.999261 0-49.348941-19.230993-95.738481-54.132898-130.652665-38.143739-38.143739-90.698698-57.545624-144.757918-53.459562-9.762341 0.733711-18.190291 7.094582-21.592784 16.269545-3.388167 9.175987-1.136893 19.500123 5.786797 26.423813l32.847106 32.859385c14.887059 14.900362 23.096021 34.69315 23.096021 55.758931 0 21.042245-8.208962 40.859593-23.109324 55.759955-29.77514 29.751604-81.742722 29.751604-111.518886 0l-32.847106-32.859385c-6.924713-6.948249-17.23657-9.17394-26.412556-5.773494-9.187243 3.400446-15.536858 11.81714-16.282848 21.578458-4.097318 53.925167 15.378246 106.675578 53.460586 144.770198C153.017534 415.681304 199.41833 434.912297 248.768295 434.912297zM195.957509 326.280158c34.449603 0 66.831105-13.431917 91.186815-37.777395 24.369014-24.369014 37.777395-56.739259 37.789675-91.187839 0-25.176402-7.16826-49.251727-20.515243-69.877487 14.569834 6.581905 27.965935 15.830547 39.599903 27.452235 25.433252 25.445532 39.452547 59.258639 39.452547 95.224782 0 35.967166-14.020318 69.77925-39.452547 95.224782-25.445532 25.445532-59.270918 39.464827-95.249341 39.464827-35.966143 0-69.791529-14.019295-95.224782-39.441291-11.54801-11.54801-20.747533-24.955368-27.329439-39.538505C146.815275 319.134411 170.841481 326.280158 195.957509 326.280158zM902.606721 640.237663c-34.900881-34.889625-81.303724-54.120618-130.651642-54.120618-25.032116 0-49.27731 4.991688-71.66418 14.410198L580.586586 480.860792l201.484897-207.429283c22.790052-14.288424 45.300742-36.236296 50.755987-49.789986 5.65172-14.044878 7.878434-27.916816 4.929266-30.828123-2.933819-2.935865-7.742335-7.756661-10.69048-10.692526s-16.832364-0.733711-30.851659 4.919033c-13.726629 5.553483-36.150338 28.699646-50.426483 51.844785L403.263995 591.499635l-84.361363-8.489348c-7.52437-0.685615-14.729469 1.834788-20.026102 7.020904-18.300808 17.909905-176.210257 178.583305-182.76658 185.263447-41.886993 41.86141-43.99091 92.043323-5.614881 134.24754 18.803251 20.674878 43.049468 31.930223 70.134337 32.56672 0.795109 0 1.602498 0.023536 2.397606 0.023536 31.500435 0 59.992349-14.387685 74.855872-29.287023 62.965054-65.399499 162.178683-167.230746 177.48325-179.684382 10.739599-8.734942 12.355399-24.51637 3.631714-35.232432-8.733918-10.741645-24.538883-12.380982-35.243689-3.620457-22.582321 18.349927-165.713182 166.911474-181.640943 183.450149-6.15314 6.166443-22.680559 15.292288-40.321334 14.241352-13.408381-0.319272-24.613584-5.603625-34.228569-16.173354-13.554714-14.901385-25.360598-35.795251 4.134157-65.253166 1.493004-1.517563 136.084375-138.483005 173.983543-176.528506l84.61719 8.512884c7.695263 0.735757 15.145955-1.981121 20.478404-7.484462l32.945343-33.912367 128.267339 128.255059c-3.083222 13.481036-4.844332 27.330462-4.844332 41.49609 0 49.349965 19.232017 95.738481 54.133921 130.652665 34.814923 34.840506 81.20344 54.022381 130.615826 54.022381 4.709255 0 9.41851-0.170892 14.129812-0.537236 9.761318-0.733711 18.190291-7.096628 21.591761-16.269545 3.40147-9.175987 1.150196-19.501146-5.774517-26.423813l-32.847106-32.859385c-30.742165-30.754444-30.742165-80.789001 0.01228-111.544469 29.777187-29.751604 81.743746-29.751604 111.51991 0l32.847106 32.859385c6.91141 6.92369 17.21201 9.149381 26.411533 5.773494 9.187243-3.400446 15.536858-11.81714 16.282848-21.578458C960.164624 731.082694 940.689061 678.332283 902.606721 640.237663zM498.635109 565.222155l47.038316-48.419779 110.321618 110.296035c-5.089925 4.110621-10.019191 8.465812-14.71719 13.162788-11.584849 11.574616-21.263279 24.51637-29.263487 38.314631L498.635109 565.222155zM824.764841 694.773743c-34.449603 0-66.830081 13.407358-91.186815 37.751812-43.674709 43.674709-49.423643 111.152543-17.22429 161.088862-14.59644-6.605442-28.015054-15.8285-39.649022-27.475771-25.433252-25.445532-39.45357-59.258639-39.45357-95.224782 0-35.966143 14.019295-69.77925 39.45357-95.225805 25.444509-25.444509 59.269895-39.463804 95.250364-39.463804 35.96512 0 69.789483 14.019295 95.223758 39.440267 11.54801 11.54801 20.747533 24.956392 27.329439 39.538505C873.907075 701.892885 849.878822 694.773743 824.764841 694.773743z"
|
||||
p-id="10428"
|
||||
></path>
|
||||
</svg>
|
||||
</template>
|
||||
17
cdTMP/src/assets/ma-icons/chenIcon-user.vue
Normal file
@@ -0,0 +1,17 @@
|
||||
<!--
|
||||
- MineAdmin is committed to providing solutions for quickly building web applications
|
||||
- Please view the LICENSE file that was distributed with this source code,
|
||||
- For the full copyright and license information.
|
||||
- Thank you very much for using MineAdmin.
|
||||
-
|
||||
- @Author X.Mo<root@imoi.cn>
|
||||
- @Link https://gitee.com/xmo/mineadmin-vue
|
||||
-->
|
||||
<template>
|
||||
<svg viewBox="0 0 1024 1024" class="icon" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M637.953132 548.278251c71.730695-40.298821 120.348995-116.815519 120.348995-204.542536 0-129.46256-105.705484-234.781234-235.641835-234.781234-129.936351 0-235.628532 105.318674-235.628532 234.781234 0 84.393085 45.041846 158.307516 112.302739 199.683878-152.041812 47.787376-262.605953 189.523471-262.605953 356.600721 0 5.058203 0.560772 9.956769 0.762363 14.97404l52.356438 0c-0.230244-4.986571-0.76134-9.914814-0.76134-14.97404 0-177.279612 144.855132-321.502341 322.909387-321.502341 178.054255 0 322.910411 144.222729 322.910411 321.502341 0 5.058203-0.532119 9.987468-0.775666 14.97404l52.371788 0c0.200568-5.016247 0.760317-9.914814 0.760317-14.97404C887.263268 737.931682 783.009855 600.017636 637.953132 548.278251zM339.389222 343.735715c0-100.588953 82.208327-182.423773 183.27107-182.423773 101.06479 0 183.272094 81.83482 183.272094 182.423773 0 100.589976-82.207303 182.423773-183.272094 182.423773C421.597549 526.159488 339.389222 444.325691 339.389222 343.735715z"
|
||||
p-id="2260"
|
||||
></path>
|
||||
</svg>
|
||||
</template>
|
||||
18
cdTMP/src/assets/ma-icons/chenIcon-workflow.vue
Normal file
@@ -0,0 +1,18 @@
|
||||
<!--
|
||||
- MineAdmin is committed to providing solutions for quickly building web applications
|
||||
- Please view the LICENSE file that was distributed with this source code,
|
||||
- For the full copyright and license information.
|
||||
- Thank you very much for using MineAdmin.
|
||||
-
|
||||
- @Author X.Mo<root@imoi.cn>
|
||||
- @Link https://gitee.com/xmo/mineadmin-vue
|
||||
-->
|
||||
<template>
|
||||
<svg class="icon" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M480 384h320a96.11 96.11 0 0 0 96-96V160a96.11 96.11 0 0 0-96-96H480a96.11 96.11 0 0 0-96 96v32H224a96.11 96.11 0 0 0-96 96v160a96.11 96.11 0 0 0 96 96h576a32 32 0 0 1 32 32v160a32 32 0 0 1-32 32H640v-32a96.11 96.11 0 0 0-96-96H224a96.11 96.11 0 0 0-96 96v128a96.11 96.11 0 0 0 96 96h320a96.11 96.11 0 0 0 96-96v-32h160a96.11 96.11 0 0 0 96-96V576a96.11 96.11 0 0 0-96-96H224a32 32 0 0 1-32-32V288a32 32 0 0 1 32-32h160v32a96.11 96.11 0 0 0 96 96z m96 480a32 32 0 0 1-32 32H224a32 32 0 0 1-32-32V736a32 32 0 0 1 32-32h320a32 32 0 0 1 32 32zM448 160a32 32 0 0 1 32-32h320a32 32 0 0 1 32 32v128a32 32 0 0 1-32 32H480a32 32 0 0 1-32-32z"
|
||||
p-id="2451"
|
||||
fill="#515151"
|
||||
></path>
|
||||
</svg>
|
||||
</template>
|
||||
BIN
cdTMP/src/assets/userBanner.jpg
Normal file
|
After Width: | Height: | Size: 75 KiB |
3
cdTMP/src/components/index.js
Normal file
@@ -0,0 +1,3 @@
|
||||
// echarts的东西
|
||||
|
||||
// ma组件相关东西
|
||||
104
cdTMP/src/components/ma-verifyCode/index.vue
Normal file
@@ -0,0 +1,104 @@
|
||||
<template>
|
||||
<a-tooltip content="点击切换验证码">
|
||||
<canvas ref="verfiyCanvas" class="canvas" :width="props.width" :height="props.height" @click="refresh" />
|
||||
</a-tooltip>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, onMounted } from "vue"
|
||||
import { Message } from "@arco-design/web-vue"
|
||||
|
||||
|
||||
const codeText = ref("")
|
||||
const verfiyCanvas = ref(null)
|
||||
const props = defineProps({
|
||||
height: { type: Number, default: 36 },
|
||||
width: { type: Number, default: 120 },
|
||||
pool: { type: String, default: "abcdefghjkmnpqrstuvwxyz23456789" },
|
||||
size: { type: Number, default: 4 },
|
||||
showError: { type: Boolean, default: true }
|
||||
})
|
||||
|
||||
const checkResult = (verifyCode) => {
|
||||
if (!verifyCode || verifyCode.length === 0) {
|
||||
props.showError && Message.error("请输入验证码")
|
||||
return false
|
||||
}
|
||||
|
||||
if (verifyCode.toLowerCase() !== codeText.value.toLowerCase()) {
|
||||
props.showError && Message.error("验证码错误,请重新输入")
|
||||
generateCode()
|
||||
return false
|
||||
} else {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
const randomNum = (min, max) => {
|
||||
return parseInt(Math.random() * (max - min) + min)
|
||||
}
|
||||
|
||||
const randomColor = (min, max) => {
|
||||
const r = randomNum(min, max)
|
||||
const g = randomNum(min, max)
|
||||
const b = randomNum(min, max)
|
||||
return `rgb(${r},${g},${b})`
|
||||
}
|
||||
|
||||
const generateCode = () => {
|
||||
codeText.value = ""
|
||||
const ctx = verfiyCanvas.value.getContext("2d")
|
||||
ctx.fillStyle = randomColor(230, 255)
|
||||
ctx.fillRect(0, 0, props.width, props.height)
|
||||
|
||||
for (let i = 0; i < props.size; i++) {
|
||||
let currentText = "" + props.pool[randomNum(0, props.pool.length)]
|
||||
codeText.value += currentText
|
||||
ctx.font = "36px Simhei"
|
||||
ctx.textAlign = "center"
|
||||
ctx.fillStyle = randomColor(80, 150)
|
||||
ctx.fillText(currentText, (i + 1) * randomNum(20, 25), props.height / 2 + 13)
|
||||
}
|
||||
|
||||
for (let i = 0; i < 5; i++) {
|
||||
ctx.beginPath()
|
||||
ctx.moveTo(randomNum(0, props.width), randomNum(0, props.height))
|
||||
ctx.lineTo(randomNum(0, props.width), randomNum(0, props.height))
|
||||
ctx.strokeStyle = randomColor(180, 230)
|
||||
ctx.closePath()
|
||||
ctx.stroke()
|
||||
}
|
||||
|
||||
for (let i = 0; i < 40; i++) {
|
||||
ctx.beginPath()
|
||||
ctx.arc(randomNum(0, props.width), randomNum(0, props.height), 1, 0, 2 * Math.PI)
|
||||
ctx.closePath()
|
||||
ctx.fillStyle = randomColor(150, 200)
|
||||
ctx.fill()
|
||||
}
|
||||
|
||||
ctx.restore()
|
||||
ctx.save()
|
||||
|
||||
return codeText
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
generateCode()
|
||||
})
|
||||
|
||||
const refresh = () => {
|
||||
generateCode()
|
||||
}
|
||||
|
||||
defineExpose({ checkResult, refresh })
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
:deep(.arco-input-append) {
|
||||
padding: 0 !important;
|
||||
}
|
||||
.canvas {
|
||||
cursor: pointer;
|
||||
}
|
||||
</style>
|
||||
43
cdTMP/src/main.js
Normal file
@@ -0,0 +1,43 @@
|
||||
import { createApp } from "vue"
|
||||
import ArcoVue from "@arco-design/web-vue"
|
||||
import ArcoVueIcon from "@arco-design/web-vue/es/icon"
|
||||
// import globalComponents from "@/components"
|
||||
import App from "./App.vue"
|
||||
import router from "./router"
|
||||
import pinia from "@/store"
|
||||
// import directive from './directive'
|
||||
// arcodesign的样式全局引入
|
||||
import "@arco-design/web-vue/dist/arco.css"
|
||||
|
||||
// 导入全局样式
|
||||
import "@/style/skin.less"
|
||||
import "@/style/index.css"
|
||||
import "@/style/global.less"
|
||||
|
||||
// 读取package.json打印个软件名称和版本
|
||||
import tool from "@/utils/tool"
|
||||
import packageJson from "../package.json"
|
||||
const app = createApp(App)
|
||||
app.use(ArcoVue, {})
|
||||
app.use(ArcoVueIcon)
|
||||
app.use(router)
|
||||
app.use(pinia)
|
||||
// app.use(globalComponents)
|
||||
// app.use(directive)
|
||||
|
||||
// 注册ma-icon图标
|
||||
const modules = import.meta.glob("./assets/ma-icons/*.vue", { eager: true })
|
||||
for (const path in modules) {
|
||||
const name = path.match(/([A-Za-z0-9_-]+)/g)[2]
|
||||
const componentName = `MaIcon${name}`
|
||||
app.component(componentName, modules[path].default)
|
||||
}
|
||||
|
||||
// 全局注册变量和工具
|
||||
app.config.globalProperties.$tool = tool
|
||||
app.config.globalProperties.$title = import.meta.env.VITE_APP_TITLE
|
||||
app.config.globalProperties.$url = import.meta.env.VITE_APP_BASE
|
||||
app.mount("#app")
|
||||
|
||||
// 无用的东西:下面就打印一个东西
|
||||
tool.capsule("ChengduTestManagePlant", `v${packageJson.version} debug`)
|
||||
29
cdTMP/src/router/constants.js
Normal file
@@ -0,0 +1,29 @@
|
||||
/**
|
||||
* @description: 路由的白名单常量对象
|
||||
* @type: 数组
|
||||
*/
|
||||
export const WHITE_LIST = [
|
||||
{ name: "notFound", children: [] },
|
||||
{ name: "login", children: [] }
|
||||
]
|
||||
/**
|
||||
* @description: NOTFOUND常量对象{name:'notFound'}
|
||||
* @type: object
|
||||
*/
|
||||
export const NOT_FOUND = {
|
||||
name: "notFound"
|
||||
}
|
||||
|
||||
export const REDIRECT_ROUTE_NAME = "Redirect"
|
||||
|
||||
export const DEFAULT_ROUTE_NAME = "Workplace"
|
||||
|
||||
/**
|
||||
* @description: 默认路由对象没有component,固定在router/constants.js文件查看
|
||||
* @type: object
|
||||
*/
|
||||
export const DEFAULT_ROUTE = {
|
||||
title: "menu.dashboard.workplace",
|
||||
name: DEFAULT_ROUTE_NAME,
|
||||
fullPath: "/dashboard/workplace"
|
||||
}
|
||||
31
cdTMP/src/router/index.js
Normal file
@@ -0,0 +1,31 @@
|
||||
import { createRouter, createWebHistory } from "vue-router"
|
||||
// appRoutes为modules下面的所有路由
|
||||
import { appRoutes } from "./routes"
|
||||
// 引入基本重定向路由和notFound路由
|
||||
import { REDIRECT_MAIN, NOT_FOUND_ROUTE } from "./routes/base"
|
||||
|
||||
const router = createRouter({
|
||||
history: createWebHistory(),
|
||||
routes: [
|
||||
{
|
||||
path: "/",
|
||||
redirect: "login"
|
||||
},
|
||||
{
|
||||
path: "/login",
|
||||
name: "login",
|
||||
component: () => import("@/views/login.vue"),
|
||||
meta: {
|
||||
requiresAuth: false
|
||||
}
|
||||
},
|
||||
...appRoutes,
|
||||
REDIRECT_MAIN,
|
||||
NOT_FOUND_ROUTE
|
||||
],
|
||||
scrollBehavior() {
|
||||
// 页面跳转后滚动到顶部
|
||||
return { top: 0 }
|
||||
}
|
||||
})
|
||||
export default router
|
||||
34
cdTMP/src/router/routes/base.js
Normal file
@@ -0,0 +1,34 @@
|
||||
import { REDIRECT_ROUTE_NAME } from "@/router/constants"
|
||||
|
||||
/**
|
||||
* @description: 返回import("@/layout/default-layout.vue")
|
||||
* @type: Promise对象
|
||||
*/
|
||||
export const DEFAULT_LAYOUT = () => import("@/layout/default-layout.vue")
|
||||
|
||||
export const REDIRECT_MAIN = {
|
||||
path: "/redirect",
|
||||
name: "redirectWrapper",
|
||||
component: DEFAULT_LAYOUT, // () => import("@/layout/default-layout.vue")
|
||||
meta: {
|
||||
requiresAuth: true,
|
||||
hideInMenu: true
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: "/redirect/:path",
|
||||
name: REDIRECT_ROUTE_NAME, // 'Redirect'
|
||||
component: () => import("@/views/redirect/index.vue"),
|
||||
meta: {
|
||||
requiresAuth: true,
|
||||
hideInMenu: true
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
export const NOT_FOUND_ROUTE = {
|
||||
path: "/:pathMatch(.*)*",
|
||||
name: "notFound",
|
||||
component: () => import("@/views/not-found/index.vue")
|
||||
}
|
||||
1
cdTMP/src/router/routes/guard/index.js
Normal file
@@ -0,0 +1 @@
|
||||
import { setRouteEmitter } from "@/utils/route-listener"
|
||||
1
cdTMP/src/router/routes/guard/permisstion.js
Normal file
@@ -0,0 +1 @@
|
||||
import NProgress from 'nprogress'
|
||||
0
cdTMP/src/router/routes/guard/userLoginInfo.js
Normal file
24
cdTMP/src/router/routes/index.js
Normal file
@@ -0,0 +1,24 @@
|
||||
// 导入modules文件夹所有js文件
|
||||
const modules = import.meta.glob("./modules/*.js", { eager: true })
|
||||
// 导入externalModules下面所有js文件
|
||||
const externalMoudles = import.meta.glob("./externalModules/*.js", { eager: true })
|
||||
/**
|
||||
* @description: 传入一个路由文件和一个空数组
|
||||
* @return: 返回文件路由的数组
|
||||
*/
|
||||
function formatModules(_modules, result) {
|
||||
Object.keys(_modules).forEach((key) => {
|
||||
const defaultModule = _modules[key].default // 取文件值需要.default
|
||||
if (!defaultModule) return
|
||||
const moduleList = Array.isArray(defaultModule) ? [...defaultModule] : [defaultModule]
|
||||
result.push(...moduleList)
|
||||
})
|
||||
return result
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: 该变量直接获取moduels文件夹下路由数组
|
||||
* @return: 返回文件路由的数组
|
||||
*/
|
||||
export const appRoutes = formatModules(modules, [])
|
||||
export const appExternalRoutes = formatModules(externalMoudles, [])
|
||||
27
cdTMP/src/router/routes/modules/dashboard.js
Normal file
@@ -0,0 +1,27 @@
|
||||
import { DEFAULT_LAYOUT } from "../base"
|
||||
|
||||
const DASHBOARD = {
|
||||
path: "/dashboard",
|
||||
name: "dashboard",
|
||||
component: DEFAULT_LAYOUT, // () => import("@/layout/default-layout.vue")
|
||||
meta: {
|
||||
locale: "menu.dashboard",
|
||||
requiresAuth: true,
|
||||
icon: "icon-dashboard",
|
||||
order: 0
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: "workplace",
|
||||
name: "Workplace",
|
||||
component: () => import("@/views/dashboard/workplace/index.vue"),
|
||||
meta: {
|
||||
locale: "menu.dashboard.workplace",
|
||||
requiresAuth: true,
|
||||
roles: ["*"]
|
||||
}
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
export default DASHBOARD
|
||||
5
cdTMP/src/store/index.js
Normal file
@@ -0,0 +1,5 @@
|
||||
import { createPinia } from "pinia"
|
||||
|
||||
const pinia = createPinia()
|
||||
|
||||
export default pinia
|
||||
56
cdTMP/src/style/animation.less
Normal file
@@ -0,0 +1,56 @@
|
||||
.ma-fade-enter-active,
|
||||
.ma-fade-leave-active {
|
||||
transition: opacity 0.15s ease;
|
||||
}
|
||||
|
||||
.ma-fade-enter-from,
|
||||
.ma-fade-leave-to {
|
||||
opacity: 0;
|
||||
}
|
||||
.ma-slide-right-enter-active,
|
||||
.ma-slide-right-leave-active,
|
||||
.ma-slide-left-enter-active,
|
||||
.ma-slide-left-leave-active {
|
||||
will-change: transform;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
// ma-slide-right
|
||||
.ma-slide-right-enter-from {
|
||||
opacity: 0;
|
||||
transform: translateX(-10px);
|
||||
}
|
||||
.ma-slide-right-leave-to {
|
||||
opacity: 0;
|
||||
transform: translateX(10px);
|
||||
}
|
||||
// ma-slide-left
|
||||
.ma-slide-left-enter-from {
|
||||
&:extend(.ma-slide-right-leave-to);
|
||||
}
|
||||
.ma-slide-left-leave-to {
|
||||
&:extend(.ma-slide-right-enter-from);
|
||||
}
|
||||
|
||||
.ma-slide-down-enter-active,
|
||||
.ma-slide-down-leave-active,
|
||||
.ma-slide-up-enter-active,
|
||||
.ma-slide-up-leave-active {
|
||||
will-change: transform;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
// ma-slide-down
|
||||
.ma-slide-down-enter-from {
|
||||
opacity: 0;
|
||||
transform: translateY(-10px);
|
||||
}
|
||||
.ma-slide-down-leave-to {
|
||||
opacity: 0;
|
||||
transform: translateY(10px);
|
||||
}
|
||||
// ma-slide-up
|
||||
.ma-slide-up-enter-from {
|
||||
&:extend(.ma-slide-down-leave-to);
|
||||
}
|
||||
.ma-slide-up-leave-to {
|
||||
&:extend(.ma-slide-down-enter-from);
|
||||
}
|
||||
10
cdTMP/src/style/dark.less
Normal file
@@ -0,0 +1,10 @@
|
||||
[arco-theme="dark"] {
|
||||
.menu-title {
|
||||
color: #efefef;
|
||||
}
|
||||
.logo {
|
||||
span {
|
||||
color: #efefef;
|
||||
}
|
||||
}
|
||||
}
|
||||
306
cdTMP/src/style/global.less
Normal file
@@ -0,0 +1,306 @@
|
||||
@import "dark.less";
|
||||
@import "animation.less";
|
||||
|
||||
html,
|
||||
body {
|
||||
height: 100%;
|
||||
}
|
||||
.arco-layout-sider-children {
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
.arco-switch {
|
||||
background-color: var(--color-fill-4);
|
||||
}
|
||||
.arco-switch-checked {
|
||||
background-color: rgb(var(--primary-6));
|
||||
}
|
||||
|
||||
.layout,
|
||||
.layout-columns-left-panel,
|
||||
.layout-columns-right-panel {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.layout-columns-left-panel {
|
||||
.sider {
|
||||
padding: 5px;
|
||||
height: 100%;
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
.layout-menu {
|
||||
position: relative;
|
||||
z-index: 3;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.menu-title {
|
||||
height: 51px;
|
||||
padding-left: 10px;
|
||||
font-weight: bold;
|
||||
background-color: var(--color-bg-2);
|
||||
border-bottom: 1px solid var(--color-border-1);
|
||||
}
|
||||
}
|
||||
|
||||
.layout-columns-right-panel {
|
||||
width: 100%;
|
||||
background-color: var(--color-neutral-2);
|
||||
.layout-header {
|
||||
background-color: var(--color-bg-2);
|
||||
width: 100%;
|
||||
box-shadow: 1px 1px 2px var(--color-neutral-2);
|
||||
}
|
||||
}
|
||||
|
||||
.layout-banner-header {
|
||||
height: 52px;
|
||||
border-bottom: 1px solid var(--color-border-1);
|
||||
background-color: var(--color-bg-2);
|
||||
.logo {
|
||||
width: 220px;
|
||||
padding-bottom: 1px;
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
.banner-menus li {
|
||||
cursor: pointer;
|
||||
padding: 0px 15px;
|
||||
height: 40px;
|
||||
margin-left: 5px;
|
||||
border-radius: 4px;
|
||||
color: var(--color-neutral-10);
|
||||
fill: var(--color-neutral-10);
|
||||
|
||||
.icon {
|
||||
width: 1.1em;
|
||||
height: 1.1em;
|
||||
display: inline;
|
||||
}
|
||||
}
|
||||
|
||||
.banner-menus li:hover {
|
||||
background-color: var(--color-neutral-2);
|
||||
}
|
||||
.banner-menus li.active {
|
||||
background-color: rgb(var(--primary-4));
|
||||
color: var(--color-white);
|
||||
fill: var(--color-white);
|
||||
}
|
||||
}
|
||||
.layout-banner-content {
|
||||
.tags {
|
||||
border-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.layout-classic-sider {
|
||||
box-shadow: none;
|
||||
}
|
||||
.layout-classic-header {
|
||||
.layout-classic-header-container {
|
||||
background-color: var(--color-bg-2);
|
||||
height: 50px;
|
||||
}
|
||||
}
|
||||
|
||||
.ma-menu .arco-menu-inner::-webkit-scrollbar,
|
||||
.backend-setting .arco-drawer-body::-webkit-scrollbar,
|
||||
.arco-list::-webkit-scrollbar,
|
||||
.customer-scrollbar::-webkit-scrollbar {
|
||||
width: 6px; /*高宽分别对应横竖滚动条的尺寸*/
|
||||
height: 7px;
|
||||
}
|
||||
|
||||
.ma-menu .arco-menu-inner::-webkit-scrollbar-thumb,
|
||||
.backend-setting .arco-drawer-body::-webkit-scrollbar-thumb,
|
||||
.arco-list::-webkit-scrollbar-thumb,
|
||||
.customer-scrollbar::-webkit-scrollbar-thumb {
|
||||
border-radius: 10px;
|
||||
background: var(--color-text-4);
|
||||
}
|
||||
.ma-menu .arco-menu-inner::-webkit-scrollbar-thumb:hover,
|
||||
.backend-setting .arco-drawer-body::-webkit-scrollbar-thumb:hover,
|
||||
.arco-list::-webkit-scrollbar-thumb:hover,
|
||||
.customer-scrollbar::-webkit-scrollbar-thumb:hover {
|
||||
border-radius: 10px;
|
||||
background: var(--color-text-3);
|
||||
}
|
||||
.ma-menu .arco-menu-inner::-webkit-scrollbar-track,
|
||||
.backend-setting .arco-drawer-body::-webkit-scrollbar-track,
|
||||
.arco-list::-webkit-scrollbar-track,
|
||||
.customer-scrollbar::-webkit-scrollbar-track {
|
||||
border-radius: 0;
|
||||
background: var(--color-text-5);
|
||||
}
|
||||
|
||||
.tags-container {
|
||||
background-color: var(--color-bg-2);
|
||||
border-top: 1px solid var(--color-border-1);
|
||||
.tags {
|
||||
border-bottom: 1px solid var(--color-border-1);
|
||||
background-color: var(--color-bg-2);
|
||||
height: 35px;
|
||||
position: relative;
|
||||
padding: 1px 5px 0 1px;
|
||||
display: flex;
|
||||
overflow: hidden;
|
||||
width: 100%;
|
||||
a {
|
||||
background: var(--color-fill-3);
|
||||
color: var(--color-text-2);
|
||||
font-size: 13px;
|
||||
margin-top: 3px;
|
||||
position: relative;
|
||||
flex-shrink: 0;
|
||||
height: 27px;
|
||||
line-height: 27px;
|
||||
padding: 0 8px;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
margin-right: 4px;
|
||||
|
||||
.tag-icon {
|
||||
transition: all 0.2s;
|
||||
color: var(--color-text-2);
|
||||
}
|
||||
|
||||
.tag-icon:hover {
|
||||
color: rgb(var(--primary-4));
|
||||
background-color: var(--color-bg-2);
|
||||
border-radius: 4px;
|
||||
}
|
||||
}
|
||||
|
||||
a:hover {
|
||||
background: rgb(var(--primary-1));
|
||||
}
|
||||
|
||||
a.active {
|
||||
background: rgb(var(--primary-6));
|
||||
color: var(--color-white);
|
||||
.tag-icon {
|
||||
color: var(--color-white);
|
||||
}
|
||||
.tag-icon:hover {
|
||||
color: rgb(var(--primary-4));
|
||||
background-color: var(--color-bg-2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.tags-tool {
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
.tags-contextmenu {
|
||||
position: fixed;
|
||||
border: 1px solid var(--color-border-2);
|
||||
padding: 5px 0;
|
||||
z-index: 999;
|
||||
width: 170px;
|
||||
background-color: var(--color-bg-5);
|
||||
border-radius: 4px;
|
||||
|
||||
.arco-divider-horizontal {
|
||||
margin: 5px 0;
|
||||
}
|
||||
|
||||
li {
|
||||
padding: 7px 15px;
|
||||
color: var(--color-text-2);
|
||||
font-size: 13px;
|
||||
}
|
||||
li:hover {
|
||||
background-color: rgb(var(--primary-1));
|
||||
cursor: pointer;
|
||||
}
|
||||
li.disabled {
|
||||
color: var(--color-text-4);
|
||||
cursor: no-drop;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.work-area {
|
||||
background-color: var(--color-neutral-2);
|
||||
color: var(--color-text-2);
|
||||
height: 100%;
|
||||
overflow-y: auto;
|
||||
.content-block-title {
|
||||
color: var(--color-text-1);
|
||||
font-size: 1.3em;
|
||||
}
|
||||
|
||||
.ma-content-block {
|
||||
background-color: var(--color-bg-2);
|
||||
border-radius: 2px;
|
||||
}
|
||||
}
|
||||
|
||||
.button-menu {
|
||||
position: fixed;
|
||||
bottom: 30px;
|
||||
left: 20px;
|
||||
z-index: 100;
|
||||
.button-trigger {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
color: var(--color-white);
|
||||
font-size: 14px;
|
||||
border-radius: 50%;
|
||||
cursor: pointer;
|
||||
transition: all 0.1s;
|
||||
:deep(.icon) {
|
||||
margin-left: 1px !important;
|
||||
}
|
||||
}
|
||||
.button-trigger:nth-child(1) {
|
||||
background-color: var(--color-primary-light-4);
|
||||
}
|
||||
.button-trigger:nth-child(1).button-trigger-active {
|
||||
background-color: rgb(var(--primary-6));
|
||||
}
|
||||
}
|
||||
|
||||
.ma-ui.max-size {
|
||||
.max-size-exit {
|
||||
display: block;
|
||||
}
|
||||
.ma-ui-slider,
|
||||
.ma-ui-header,
|
||||
.ma-ui-menu,
|
||||
.ma-ui-tags {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.ma-ui {
|
||||
.max-size-exit {
|
||||
position: fixed;
|
||||
z-index: 9999;
|
||||
top: -45px;
|
||||
left: 50%;
|
||||
margin-left: -30px;
|
||||
cursor: pointer;
|
||||
display: none;
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
text-align: center;
|
||||
fill: var(--color-white);
|
||||
color: var(--color-white);
|
||||
font-size: 45px;
|
||||
border-radius: 50%;
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
transition: all 0.3s;
|
||||
}
|
||||
.max-size-exit:hover {
|
||||
top: 0px;
|
||||
}
|
||||
}
|
||||
3
cdTMP/src/style/index.css
Normal file
@@ -0,0 +1,3 @@
|
||||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
45
cdTMP/src/style/mine/index.less
Normal file
@@ -0,0 +1,45 @@
|
||||
[mine-skin="mine"] {
|
||||
.arco-menu-light .arco-menu-item .arco-icon,
|
||||
.arco-menu-inline-header .arco-icon {
|
||||
color: var(--color-text-1);
|
||||
}
|
||||
|
||||
.arco-trigger-menu .arco-trigger-menu-has-icon .arco-trigger-menu-icon,
|
||||
.sys-menus .arco-menu-icon .icon {
|
||||
fill: var(--color-text-2);
|
||||
}
|
||||
|
||||
.arco-menu-light .arco-menu-item.arco-menu-selected .arco-icon {
|
||||
color: rgb(var(--primary-6));
|
||||
}
|
||||
|
||||
.layout-banner-header .banner-menus li.active {
|
||||
background-color: rgb(var(--primary-1));
|
||||
color: rgb(var(--primary-6));
|
||||
fill: rgb(var(--primary-6));
|
||||
}
|
||||
|
||||
.layout-columns-left-panel .sider {
|
||||
background-color: var(--color-bg-1);
|
||||
}
|
||||
|
||||
.parent-menu {
|
||||
color: var(--color-text-2);
|
||||
fill: var(--color-text-2);
|
||||
}
|
||||
|
||||
.parent-menu:hover {
|
||||
background-color: var(--color-fill-2);
|
||||
fill: var(--color-text-2);
|
||||
}
|
||||
|
||||
.parent-menu.active {
|
||||
background-color: rgb(var(--primary-1));
|
||||
color: rgb(var(--primary-6));
|
||||
fill: rgb(var(--primary-6));
|
||||
}
|
||||
|
||||
.sys-menus .arco-menu-item.arco-menu-selected .icon {
|
||||
fill: rgb(var(--primary-6));
|
||||
}
|
||||
}
|
||||
1
cdTMP/src/style/skin.less
Normal file
@@ -0,0 +1 @@
|
||||
@import "./mine/index.less";
|
||||
27
cdTMP/src/utils/route-listener.js
Normal file
@@ -0,0 +1,27 @@
|
||||
/**
|
||||
* 功能:
|
||||
* 单独监听路由会浪费渲染性能,所以这里使用发布订阅模式(mitt)去进行分发管理。
|
||||
*/
|
||||
import mitt from "mitt"
|
||||
|
||||
const emitter = mitt()
|
||||
|
||||
const key = Symbol("ROUTE_CHANGE")
|
||||
|
||||
let latestRoute
|
||||
// 传入一个到达路由to,发出一个事件,然后把到达路由to传入latestRoute
|
||||
export function setRouteEmitter(to) {
|
||||
emitter.emit(key, to)
|
||||
latestRoute = to
|
||||
}
|
||||
// handler为路由变化后的处理函数
|
||||
export function listenerRouteChange(handler, immediate = true) {
|
||||
emitter.on(key, handler)
|
||||
if (immediate && latestRoute) {
|
||||
handler(latestRoute)
|
||||
}
|
||||
}
|
||||
|
||||
export function removeRouteListener() {
|
||||
emitter.off(key)
|
||||
}
|
||||
37
cdTMP/src/utils/tool.js
Normal file
@@ -0,0 +1,37 @@
|
||||
const typeColor = (type = "default") => {
|
||||
let color = ""
|
||||
switch (type) {
|
||||
case "default":
|
||||
color = "#35495E"
|
||||
break
|
||||
case "primary":
|
||||
color = "#3488ff"
|
||||
break
|
||||
case "success":
|
||||
color = "#43B883"
|
||||
break
|
||||
case "warning":
|
||||
color = "#e6a23c"
|
||||
break
|
||||
case "danger":
|
||||
color = "#f56c6c"
|
||||
break
|
||||
default:
|
||||
break
|
||||
}
|
||||
return color
|
||||
}
|
||||
|
||||
const tool = {}
|
||||
|
||||
// 仅仅是在浏览器调试栏打印版本信息
|
||||
tool.capsule = (title, info, type = "primary") => {
|
||||
console.log(
|
||||
`%c ${title} %c ${info} %c`,
|
||||
"background:#F6455E; padding: 1px; border-radius: 3px 0 0 3px; color: #fff;",
|
||||
`background:${typeColor(type)}; padding: 1px; border-radius: 0 3px 3px 0; color: #fff;`,
|
||||
"background:transparent"
|
||||
)
|
||||
}
|
||||
|
||||
export default tool
|
||||
176
cdTMP/src/views/login.vue
Normal file
@@ -0,0 +1,176 @@
|
||||
<template>
|
||||
<div id="background" class="fixed"></div>
|
||||
<div class="bg-backdrop-layout"></div>
|
||||
<div class="login-container">
|
||||
<div class="login-width md:w-10/12 mx-auto flex justify-between h-full items-center">
|
||||
<div class="w-6/12 mx-auto left-panel rounded-l pl-5 pr-5 hidden md:block">
|
||||
<div class="logo">
|
||||
<img src="@/assets/img/wxwx-logo.svg" width="45" /><span>{{ $title }}</span>
|
||||
</div>
|
||||
<div class="slogan flex justify-end">
|
||||
<span>---- 为测评服务,打造测评高地</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="md:w-6/12 w-11/12 md:rounded-r mx-auto pl-5 pr-5 pb-10">
|
||||
<h2 class="mt-10 text-3xl pb-0 mb-10">登录</h2>
|
||||
<a-form :model="form" @submit="handleSubmit">
|
||||
<a-form-item
|
||||
field="username"
|
||||
:hide-label="true"
|
||||
:rules="[{ required: true, message: '用户名不能为空' }]"
|
||||
>
|
||||
<a-input v-model="form.username" class="w-full" size="large" placeholder="用户名" allow-clear>
|
||||
<template #prefix><icon-user /></template>
|
||||
</a-input>
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item
|
||||
field="password"
|
||||
:hide-label="true"
|
||||
:rules="[{ required: true, message: '密码不能为空' }]"
|
||||
>
|
||||
<a-input-password v-model="form.password" placeholder="请输入密码" size="large" allow-clear>
|
||||
<template #prefix><icon-lock /></template>
|
||||
</a-input-password>
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item
|
||||
field="code"
|
||||
:hide-label="true"
|
||||
:rules="[
|
||||
{
|
||||
required: true,
|
||||
match: /^[a-zA-Z0-9]{4}$/,
|
||||
message: '验证码不符合要求'
|
||||
}
|
||||
]"
|
||||
>
|
||||
<a-input v-model="form.code" placeholder="请输入验证码" size="large" allow-clear>
|
||||
<template #prefix><icon-safe /></template>
|
||||
<template #append>
|
||||
<verify-code ref="Verify" />
|
||||
</template>
|
||||
</a-input>
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item :hide-label="true" class="mt-5">
|
||||
<a-button html-type="submit" type="primary" long size="large" :loading="loading">
|
||||
登录
|
||||
</a-button>
|
||||
</a-form-item>
|
||||
|
||||
<a-divider orientation="center">未来登录方式</a-divider>
|
||||
<div class="flex w-3/4 pt-2 mx-auto items-stretch justify-around">
|
||||
<a-avatar class="other-login wechat"><icon-wechat /></a-avatar>
|
||||
<a-avatar class="other-login alipay"><icon-alipay-circle /></a-avatar>
|
||||
<a-avatar class="other-login qq"><icon-qq /></a-avatar>
|
||||
<a-avatar class="other-login weibo"><icon-weibo /></a-avatar>
|
||||
</div>
|
||||
</a-form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { reactive, onMounted, ref } from "vue"
|
||||
import verifyCode from "@cps/ma-verifyCode/index.vue"
|
||||
import { Message } from "@arco-design/web-vue"
|
||||
// 绑定登录form的数据
|
||||
const form = reactive({ username: "superAdmin", password: "admin123", code: "" })
|
||||
// 获取验证码dom && arco表单loading
|
||||
const Verify = ref(null)
|
||||
const loading = ref(null)
|
||||
// handle登录按钮表单校验以及验证码
|
||||
const handleSubmit = async ({ values, errors }) => {
|
||||
if (loading.value) {
|
||||
return
|
||||
}
|
||||
loading.value = true
|
||||
if (Verify.value.checkResult(form.code) && !errors) {
|
||||
// 登录逻辑需要用到userStore
|
||||
}
|
||||
loading.value = false
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
#background {
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 1;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-image: url("@/assets/BingWallpaper.jpg");
|
||||
}
|
||||
.bg-backdrop-layout {
|
||||
top: 0;
|
||||
left: 0;
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 2;
|
||||
backdrop-filter: blur(0.01px); // 给背景图模糊
|
||||
}
|
||||
.login-container {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
background-size: cover;
|
||||
z-index: 3;
|
||||
.login-width {
|
||||
max-width: 950px;
|
||||
background: #fff;
|
||||
padding: 10px;
|
||||
height: 500px;
|
||||
position: relative;
|
||||
top: 50%;
|
||||
margin-top: -255px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.left-panel {
|
||||
height: 491px;
|
||||
background-image: url(@/assets/login_picture.svg);
|
||||
background-repeat: no-repeat;
|
||||
background-position: center 60px;
|
||||
background-size: contain;
|
||||
}
|
||||
|
||||
.logo {
|
||||
display: flex;
|
||||
margin-top: 20px;
|
||||
color: #333;
|
||||
span {
|
||||
font-size: 28px;
|
||||
margin-left: 15px;
|
||||
color: rgb(var(--primary-6));
|
||||
}
|
||||
}
|
||||
.slogan {
|
||||
font-size: 16px;
|
||||
line-height: 50px;
|
||||
}
|
||||
|
||||
:deep(.arco-input-append) {
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
.other-login {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.qq:hover,
|
||||
.alipay:hover {
|
||||
background: #165dff;
|
||||
}
|
||||
.wechat:hover {
|
||||
background: #0f9c02;
|
||||
}
|
||||
|
||||
.weibo:hover {
|
||||
background: #f3ce2b;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
27
cdTMP/tailwind.config.js
Normal file
@@ -0,0 +1,27 @@
|
||||
const colors = require("tailwindcss/colors")
|
||||
module.exports = {
|
||||
content: ["./src/**/*.{js,jxs,vue}"],
|
||||
darkMode: "media", // or 'media' or 'class'
|
||||
theme: {
|
||||
fontFamily: {
|
||||
sans: ["Graphik", "sans-serif"],
|
||||
serif: ["Merriweather", "serif"]
|
||||
},
|
||||
extend: {
|
||||
spacing: {
|
||||
128: "32rem",
|
||||
144: "36rem"
|
||||
},
|
||||
borderRadius: {
|
||||
"4xl": "2rem"
|
||||
}
|
||||
}
|
||||
},
|
||||
variants: {
|
||||
extend: {
|
||||
borderColor: ["focus-visible"],
|
||||
opacity: ["disabled"]
|
||||
}
|
||||
},
|
||||
plugins: []
|
||||
}
|
||||
57
cdTMP/tsconfig.json
Normal file
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"composite": false,
|
||||
"outDir": "./build",
|
||||
"declaration": true,
|
||||
"declarationMap": true,
|
||||
"esModuleInterop": true,
|
||||
"jsx": "preserve",
|
||||
"allowJs": true,
|
||||
"strictFunctionTypes": false,
|
||||
"allowSyntheticDefaultImports": true,
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"inlineSources": false,
|
||||
"isolatedModules": true,
|
||||
"moduleResolution": "node",
|
||||
"noUnusedLocals": false,
|
||||
"noUnusedParameters": false,
|
||||
"preserveWatchOutput": true,
|
||||
"skipLibCheck": true,
|
||||
"strict": true,
|
||||
"resolveJsonModule": true,
|
||||
"removeComments": true,
|
||||
"noImplicitAny": false,
|
||||
"experimentalDecorators": true,
|
||||
"target": "esnext",
|
||||
"module": "esnext",
|
||||
"baseUrl": ".",
|
||||
"paths": {
|
||||
"@/*": [
|
||||
"src/*"
|
||||
],
|
||||
"@cps/*": [
|
||||
"src/components/*"
|
||||
],
|
||||
},
|
||||
"lib": [
|
||||
"dom",
|
||||
"esnext",
|
||||
"ES2015"
|
||||
],
|
||||
"types": [
|
||||
"vite/client"
|
||||
]
|
||||
},
|
||||
"include": [
|
||||
"src/**/*",
|
||||
"mock",
|
||||
"vite.config.ts",
|
||||
"node_modules",
|
||||
"dist",
|
||||
"build"
|
||||
],
|
||||
"exclude": [
|
||||
"node_modules",
|
||||
"build/**/*",
|
||||
]
|
||||
}
|
||||
38
cdTMP/vite.config.js
Normal file
@@ -0,0 +1,38 @@
|
||||
import { defineConfig, loadEnv } from "vite"
|
||||
import vue from "@vitejs/plugin-vue"
|
||||
import { resolve } from "path"
|
||||
import vueJsx from "@vitejs/plugin-vue-jsx"
|
||||
export default ({ mode }) => {
|
||||
const env = loadEnv(mode, process.cwd())
|
||||
const proxyPrefix = env.VITE_APP_PROXY_PREFIX
|
||||
|
||||
return defineConfig({
|
||||
base: env.VITE_APP_BASE,
|
||||
plugins: [vue(), vueJsx()],
|
||||
resolve: {
|
||||
alias: {
|
||||
"@": resolve(__dirname, "src"),
|
||||
"@cps": resolve(__dirname, "src/components"),
|
||||
"vue-i18n": "vue-i18n/dist/vue-i18n.cjs.js"
|
||||
}
|
||||
},
|
||||
|
||||
build: {
|
||||
chunkSizeWarningLimit: 3000
|
||||
},
|
||||
|
||||
server: {
|
||||
host: "0.0.0.0",
|
||||
port: env.VITE_APP_PORT || process.env.port,
|
||||
proxy: {
|
||||
[proxyPrefix]: {
|
||||
target: env.VITE_APP_BASE_URL,
|
||||
changeOrigin: true,
|
||||
ws: true,
|
||||
toProxy: true,
|
||||
rewrite: (path) => path.replace(new RegExp(`^${proxyPrefix}`), "")
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
3
cdTMP/进度.md
Normal file
@@ -0,0 +1,3 @@
|
||||
### login页面样式
|
||||
1.把login页面的业务写完->包括store的和router逻辑
|
||||
2.login样式全理解
|
||||
2
cdtestplant/.env.development
Normal file
@@ -0,0 +1,2 @@
|
||||
# 后端接口
|
||||
VITE_API_BASE_URL= 'http://localhost:8080'
|
||||
2
cdtestplant/.env.production
Normal file
@@ -0,0 +1,2 @@
|
||||
# 后端接口
|
||||
VITE_API_BASE_URL= 'http://localhost:8080'
|
||||
3
cdtestplant/.eslintignore
Normal file
@@ -0,0 +1,3 @@
|
||||
/*.json
|
||||
/*.js
|
||||
dist
|
||||
74
cdtestplant/.eslintrc.js
Normal file
@@ -0,0 +1,74 @@
|
||||
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||
const path = require('path')
|
||||
|
||||
module.exports = {
|
||||
root: true,
|
||||
parser: 'vue-eslint-parser',
|
||||
parserOptions: {
|
||||
// Parser that checks the content of the <script> tag
|
||||
parser: '@typescript-eslint/parser',
|
||||
sourceType: 'module',
|
||||
ecmaVersion: 2020,
|
||||
ecmaFeatures: {
|
||||
jsx: true,
|
||||
},
|
||||
},
|
||||
env: {
|
||||
'browser': true,
|
||||
'node': true,
|
||||
'vue/setup-compiler-macros': true,
|
||||
},
|
||||
plugins: ['@typescript-eslint'],
|
||||
extends: [
|
||||
// Airbnb JavaScript Style Guide https://github.com/airbnb/javascript
|
||||
'airbnb-base',
|
||||
'plugin:@typescript-eslint/recommended',
|
||||
'plugin:import/recommended',
|
||||
'plugin:import/typescript',
|
||||
'plugin:vue/vue3-recommended',
|
||||
'plugin:prettier/recommended',
|
||||
],
|
||||
settings: {
|
||||
'import/resolver': {
|
||||
typescript: {
|
||||
project: path.resolve(__dirname, './tsconfig.json'),
|
||||
},
|
||||
},
|
||||
},
|
||||
rules: {
|
||||
// 用户定义
|
||||
'no-console': 0,
|
||||
'prettier/prettier': 1,
|
||||
// Vue: Recommended rules to be closed or modify
|
||||
'vue/require-default-prop': 0,
|
||||
'vue/singleline-html-element-content-newline': 0,
|
||||
'vue/max-attributes-per-line': 0,
|
||||
// Vue: Add extra rules
|
||||
'vue/custom-event-name-casing': [2, 'camelCase'],
|
||||
'vue/no-v-text': 1,
|
||||
'vue/padding-line-between-blocks': 1,
|
||||
'vue/require-direct-export': 1,
|
||||
'vue/multi-word-component-names': 0,
|
||||
// Allow @ts-ignore comment
|
||||
'@typescript-eslint/ban-ts-comment': 0,
|
||||
'@typescript-eslint/no-unused-vars': 1,
|
||||
'@typescript-eslint/no-empty-function': 1,
|
||||
'@typescript-eslint/no-explicit-any': 0,
|
||||
'import/extensions': [
|
||||
2,
|
||||
'ignorePackages',
|
||||
{
|
||||
js: 'never',
|
||||
jsx: 'never',
|
||||
ts: 'never',
|
||||
tsx: 'never',
|
||||
},
|
||||
],
|
||||
'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
|
||||
'no-param-reassign': 0,
|
||||
'prefer-regex-literals': 0,
|
||||
'import/no-extraneous-dependencies': 0,
|
||||
'import/prefer-default-export': 0,
|
||||
'@typescript-eslint/no-non-null-assertion': 0,
|
||||
},
|
||||
}
|
||||
10
cdtestplant/.gitignore
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
node_modules
|
||||
.DS_Store
|
||||
dist
|
||||
dist-ssr
|
||||
*.local
|
||||
node_modules
|
||||
.DS_Store
|
||||
dist
|
||||
dist-ssr
|
||||
*.local
|
||||
7
cdtestplant/.prettierignore
Normal file
@@ -0,0 +1,7 @@
|
||||
/dist/*
|
||||
.local
|
||||
.output.js
|
||||
/node_modules/**
|
||||
|
||||
**/*.svg
|
||||
**/*.sh
|
||||
10
cdtestplant/.prettierrc.js
Normal file
@@ -0,0 +1,10 @@
|
||||
module.exports = {
|
||||
useTabs: false,
|
||||
tabWidth: 4,
|
||||
semi: false,
|
||||
printWidth: 120,
|
||||
singleQuote: true,
|
||||
quoteProps: 'consistent',
|
||||
htmlWhitespaceSensitivity: 'strict',
|
||||
vueIndentScriptAndStyle: true,
|
||||
}
|
||||
30
cdtestplant/.stylelintrc.js
Normal file
@@ -0,0 +1,30 @@
|
||||
module.exports = {
|
||||
extends: [
|
||||
'stylelint-config-standard',
|
||||
'stylelint-config-rational-order',
|
||||
'stylelint-config-prettier',
|
||||
'stylelint-config-recommended-vue',
|
||||
],
|
||||
defaultSeverity: 'warning',
|
||||
plugins: ['stylelint-order'],
|
||||
rules: {
|
||||
'at-rule-no-unknown': [
|
||||
true,
|
||||
{
|
||||
ignoreAtRules: ['plugin'],
|
||||
},
|
||||
],
|
||||
'rule-empty-line-before': [
|
||||
'always',
|
||||
{
|
||||
except: ['after-single-line-comment', 'first-nested'],
|
||||
},
|
||||
],
|
||||
'selector-pseudo-class-no-unknown': [
|
||||
true,
|
||||
{
|
||||
ignorePseudoClasses: ['deep'],
|
||||
},
|
||||
],
|
||||
},
|
||||
}
|
||||
3
cdtestplant/babel.config.js
Normal file
@@ -0,0 +1,3 @@
|
||||
module.exports = {
|
||||
plugins: ['@vue/babel-plugin-jsx'],
|
||||
}
|
||||
3
cdtestplant/commitlint.config.js
Normal file
@@ -0,0 +1,3 @@
|
||||
module.exports = {
|
||||
extends: ['@commitlint/config-conventional'],
|
||||
}
|
||||
15
cdtestplant/components.d.ts
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
/* eslint-disable */
|
||||
/* prettier-ignore */
|
||||
// @ts-nocheck
|
||||
// Generated by unplugin-vue-components
|
||||
// Read more: https://github.com/vuejs/core/pull/3399
|
||||
import '@vue/runtime-core'
|
||||
|
||||
export {}
|
||||
|
||||
declare module '@vue/runtime-core' {
|
||||
export interface GlobalComponents {
|
||||
RouterLink: typeof import('vue-router')['RouterLink']
|
||||
RouterView: typeof import('vue-router')['RouterView']
|
||||
}
|
||||
}
|
||||
19
cdtestplant/config/plugin/arcoResolver.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
/**
|
||||
* If you use the template method for development, you can use the unplugin-vue-components plugin to enable on-demand loading support.
|
||||
* 按需引入
|
||||
* https://github.com/antfu/unplugin-vue-components
|
||||
* https://arco.design/vue/docs/start
|
||||
* Although the Pro project is full of imported components, this plugin will be used by default.
|
||||
* 虽然Pro项目中是全量引入组件,但此插件会默认使用。
|
||||
*/
|
||||
import Components from 'unplugin-vue-components/vite'
|
||||
import { ArcoResolver } from 'unplugin-vue-components/resolvers'
|
||||
|
||||
export default function configArcoResolverPlugin() {
|
||||
const arcoResolverPlugin = Components({
|
||||
dirs: [], // Avoid parsing src/components. 避免解析到src/components
|
||||
deep: false,
|
||||
resolvers: [ArcoResolver()],
|
||||
})
|
||||
return arcoResolverPlugin
|
||||
}
|
||||
12
cdtestplant/config/plugin/arcoStyleImport.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
/**
|
||||
* Theme import
|
||||
* 样式按需引入
|
||||
* https://github.com/arco-design/arco-plugins/blob/main/packages/plugin-vite-vue/README.md
|
||||
* https://arco.design/vue/docs/start
|
||||
*/
|
||||
import { vitePluginForArco } from '@arco-plugins/vite-vue'
|
||||
|
||||
export default function configArcoStyleImportPlugin() {
|
||||
const arcoResolverPlugin = vitePluginForArco({})
|
||||
return arcoResolverPlugin
|
||||
}
|
||||
31
cdtestplant/config/plugin/compress.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
/**
|
||||
* Used to package and output gzip. Note that this does not work properly in Vite, the specific reason is still being investigated
|
||||
* gzip压缩
|
||||
* https://github.com/anncwb/vite-plugin-compression
|
||||
*/
|
||||
import type { Plugin } from 'vite'
|
||||
import compressPlugin from 'vite-plugin-compression'
|
||||
|
||||
export default function configCompressPlugin(compress: 'gzip' | 'brotli', deleteOriginFile = false): Plugin | Plugin[] {
|
||||
const plugins: Plugin[] = []
|
||||
|
||||
if (compress === 'gzip') {
|
||||
plugins.push(
|
||||
compressPlugin({
|
||||
ext: '.gz',
|
||||
deleteOriginFile,
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
if (compress === 'brotli') {
|
||||
plugins.push(
|
||||
compressPlugin({
|
||||
ext: '.br',
|
||||
algorithm: 'brotliCompress',
|
||||
deleteOriginFile,
|
||||
})
|
||||
)
|
||||
}
|
||||
return plugins
|
||||
}
|
||||
37
cdtestplant/config/plugin/imagemin.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
/**
|
||||
* Image resource files used to compress the output of the production environment
|
||||
* 图片压缩
|
||||
* https://github.com/anncwb/vite-plugin-imagemin
|
||||
*/
|
||||
import viteImagemin from 'vite-plugin-imagemin'
|
||||
|
||||
export default function configImageminPlugin() {
|
||||
const imageminPlugin = viteImagemin({
|
||||
gifsicle: {
|
||||
optimizationLevel: 7,
|
||||
interlaced: false,
|
||||
},
|
||||
optipng: {
|
||||
optimizationLevel: 7,
|
||||
},
|
||||
mozjpeg: {
|
||||
quality: 20,
|
||||
},
|
||||
pngquant: {
|
||||
quality: [0.8, 0.9],
|
||||
speed: 4,
|
||||
},
|
||||
svgo: {
|
||||
plugins: [
|
||||
{
|
||||
name: 'removeViewBox',
|
||||
},
|
||||
{
|
||||
name: 'removeEmptyAttrs',
|
||||
active: false,
|
||||
},
|
||||
],
|
||||
},
|
||||
})
|
||||
return imageminPlugin
|
||||
}
|
||||
18
cdtestplant/config/plugin/visualizer.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
/**
|
||||
* Generation packaging analysis
|
||||
* 生成打包分析
|
||||
*/
|
||||
import visualizer from 'rollup-plugin-visualizer'
|
||||
import { isReportMode } from '../utils'
|
||||
|
||||
export default function configVisualizerPlugin() {
|
||||
if (isReportMode()) {
|
||||
return visualizer({
|
||||
filename: './node_modules/.cache/visualizer/stats.html',
|
||||
open: true,
|
||||
gzipSize: true,
|
||||
brotliSize: true,
|
||||
})
|
||||
}
|
||||
return []
|
||||
}
|
||||
9
cdtestplant/config/utils/index.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
/**
|
||||
* Whether to generate package preview
|
||||
* 是否生成打包报告
|
||||
*/
|
||||
export default {}
|
||||
|
||||
export function isReportMode(): boolean {
|
||||
return process.env.REPORT === 'true'
|
||||
}
|
||||
44
cdtestplant/config/vite.config.base.ts
Normal file
@@ -0,0 +1,44 @@
|
||||
import { resolve } from 'path'
|
||||
import { defineConfig } from 'vite'
|
||||
import vue from '@vitejs/plugin-vue'
|
||||
import vueJsx from '@vitejs/plugin-vue-jsx'
|
||||
import svgLoader from 'vite-svg-loader'
|
||||
import configArcoStyleImportPlugin from './plugin/arcoStyleImport'
|
||||
|
||||
export default defineConfig({
|
||||
plugins: [vue(), vueJsx(), svgLoader({ svgoConfig: {} }), configArcoStyleImportPlugin()],
|
||||
resolve: {
|
||||
alias: [
|
||||
{
|
||||
find: '@',
|
||||
replacement: resolve(__dirname, '../src'),
|
||||
},
|
||||
{
|
||||
find: 'assets',
|
||||
replacement: resolve(__dirname, '../src/assets'),
|
||||
},
|
||||
{
|
||||
find: 'vue-i18n',
|
||||
replacement: 'vue-i18n/dist/vue-i18n.cjs.js', // Resolve the i18n warning issue
|
||||
},
|
||||
{
|
||||
find: 'vue',
|
||||
replacement: 'vue/dist/vue.esm-bundler.js', // compile template
|
||||
},
|
||||
],
|
||||
extensions: ['.ts', '.js'],
|
||||
},
|
||||
define: {
|
||||
'process.env': {},
|
||||
},
|
||||
css: {
|
||||
preprocessorOptions: {
|
||||
less: {
|
||||
modifyVars: {
|
||||
hack: `true; @import (reference) "${resolve('src/assets/style/breakpoint.less')}";`,
|
||||
},
|
||||
javascriptEnabled: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
23
cdtestplant/config/vite.config.dev.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import { mergeConfig } from 'vite'
|
||||
import eslint from 'vite-plugin-eslint'
|
||||
import baseConfig from './vite.config.base'
|
||||
|
||||
export default mergeConfig(
|
||||
{
|
||||
mode: 'development',
|
||||
server: {
|
||||
open: true,
|
||||
fs: {
|
||||
strict: true,
|
||||
},
|
||||
},
|
||||
plugins: [
|
||||
eslint({
|
||||
cache: false,
|
||||
include: ['src/**/*.ts', 'src/**/*.tsx', 'src/**/*.vue'],
|
||||
exclude: ['node_modules'],
|
||||
}),
|
||||
],
|
||||
},
|
||||
baseConfig
|
||||
)
|
||||
31
cdtestplant/config/vite.config.prod.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
import { mergeConfig } from 'vite'
|
||||
import baseConfig from './vite.config.base'
|
||||
import configCompressPlugin from './plugin/compress'
|
||||
import configVisualizerPlugin from './plugin/visualizer'
|
||||
import configArcoResolverPlugin from './plugin/arcoResolver'
|
||||
import configImageminPlugin from './plugin/imagemin'
|
||||
|
||||
export default mergeConfig(
|
||||
{
|
||||
mode: 'production',
|
||||
plugins: [
|
||||
configCompressPlugin('gzip'),
|
||||
configVisualizerPlugin(),
|
||||
configArcoResolverPlugin(),
|
||||
configImageminPlugin(),
|
||||
],
|
||||
build: {
|
||||
rollupOptions: {
|
||||
output: {
|
||||
manualChunks: {
|
||||
arco: ['@arco-design/web-vue'],
|
||||
chart: ['echarts', 'vue-echarts'],
|
||||
vue: ['vue', 'vue-router', 'pinia', '@vueuse/core', 'vue-i18n'],
|
||||
},
|
||||
},
|
||||
},
|
||||
chunkSizeWarningLimit: 2000,
|
||||
},
|
||||
},
|
||||
baseConfig
|
||||
)
|
||||
18
cdtestplant/index.html
Normal file
@@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<link
|
||||
rel="shortcut icon"
|
||||
type="image/x-icon"
|
||||
href="https://unpkg.byted-static.com/latest/byted/arco-config/assets/favicon.ico"
|
||||
/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>成都测试管理平台</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
<script type="module" src="/src/main.ts"></script>
|
||||
</body>
|
||||
</html>
|
||||
104
cdtestplant/package.json
Normal file
@@ -0,0 +1,104 @@
|
||||
{
|
||||
"name": "cdtest-plant",
|
||||
"description": "a arcovue test plant",
|
||||
"version": "1.0.0",
|
||||
"private": true,
|
||||
"author": "ArcoDesign Team",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
"dev": "vite --config ./config/vite.config.dev.ts",
|
||||
"build": "vue-tsc --noEmit && vite build --config ./config/vite.config.prod.ts",
|
||||
"report": "cross-env REPORT=true npm run build",
|
||||
"preview": "npm run build && vite preview --host",
|
||||
"type:check": "vue-tsc --noEmit --skipLibCheck",
|
||||
"lint-staged": "npx lint-staged",
|
||||
"prepare": "husky install",
|
||||
"prettier": "prettier --write ."
|
||||
},
|
||||
"lint-staged": {
|
||||
"*.{js,ts,jsx,tsx}": [
|
||||
"prettier --write",
|
||||
"eslint --fix"
|
||||
],
|
||||
"*.vue": [
|
||||
"stylelint --fix",
|
||||
"prettier --write",
|
||||
"eslint --fix"
|
||||
],
|
||||
"*.{less,css}": [
|
||||
"stylelint --fix",
|
||||
"prettier --write"
|
||||
]
|
||||
},
|
||||
"dependencies": {
|
||||
"@arco-design/web-vue": "^2.44.7",
|
||||
"@vueuse/core": "^9.3.0",
|
||||
"arco-design-pro-vue": "^2.7.2",
|
||||
"axios": "^0.24.0",
|
||||
"dayjs": "^1.11.5",
|
||||
"echarts": "^5.4.0",
|
||||
"lodash": "^4.17.21",
|
||||
"mitt": "^3.0.0",
|
||||
"nprogress": "^0.2.0",
|
||||
"pinia": "^2.0.23",
|
||||
"query-string": "^8.0.3",
|
||||
"sortablejs": "^1.15.0",
|
||||
"vue": "^3.2.40",
|
||||
"vue-echarts": "^6.2.3",
|
||||
"vue-i18n": "^9.2.2",
|
||||
"vue-router": "^4.0.14"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@arco-plugins/vite-vue": "^1.4.5",
|
||||
"@commitlint/cli": "^17.1.2",
|
||||
"@commitlint/config-conventional": "^17.1.0",
|
||||
"@types/lodash": "^4.14.186",
|
||||
"@types/mockjs": "^1.0.7",
|
||||
"@types/nprogress": "^0.2.0",
|
||||
"@types/sortablejs": "^1.15.0",
|
||||
"@typescript-eslint/eslint-plugin": "^5.40.0",
|
||||
"@typescript-eslint/parser": "^5.40.0",
|
||||
"@vitejs/plugin-vue": "^3.1.2",
|
||||
"@vitejs/plugin-vue-jsx": "^2.0.1",
|
||||
"@vue/babel-plugin-jsx": "^1.1.1",
|
||||
"consola": "^2.15.3",
|
||||
"cross-env": "^7.0.3",
|
||||
"eslint": "^8.25.0",
|
||||
"eslint-config-airbnb-base": "^15.0.0",
|
||||
"eslint-config-prettier": "^8.5.0",
|
||||
"eslint-import-resolver-typescript": "^3.5.1",
|
||||
"eslint-plugin-import": "^2.26.0",
|
||||
"eslint-plugin-prettier": "^4.2.1",
|
||||
"eslint-plugin-vue": "^9.6.0",
|
||||
"husky": "^8.0.1",
|
||||
"less": "^4.1.3",
|
||||
"lint-staged": "^13.0.3",
|
||||
"mockjs": "^1.1.0",
|
||||
"postcss-html": "^1.5.0",
|
||||
"prettier": "^2.7.1",
|
||||
"rollup": "^3.9.1",
|
||||
"rollup-plugin-visualizer": "^5.8.2",
|
||||
"stylelint": "^14.13.0",
|
||||
"stylelint-config-prettier": "^9.0.3",
|
||||
"stylelint-config-rational-order": "^0.1.2",
|
||||
"stylelint-config-recommended-vue": "^1.4.0",
|
||||
"stylelint-config-standard": "^29.0.0",
|
||||
"stylelint-order": "^5.0.0",
|
||||
"typescript": "^4.8.4",
|
||||
"unplugin-vue-components": "^0.24.1",
|
||||
"vite": "^3.2.5",
|
||||
"vite-plugin-compression": "^0.5.1",
|
||||
"vite-plugin-eslint": "^1.8.1",
|
||||
"vite-plugin-imagemin": "^0.6.1",
|
||||
"vite-svg-loader": "^3.6.0",
|
||||
"vue-tsc": "^1.0.14"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
},
|
||||
"resolutions": {
|
||||
"bin-wrapper": "npm:bin-wrapper-china",
|
||||
"rollup": "^2.56.3",
|
||||
"gifsicle": "5.2.0"
|
||||
}
|
||||
}
|
||||
14858
cdtestplant/pnpm-lock.yaml
generated
Normal file
26
cdtestplant/src/App.vue
Normal file
@@ -0,0 +1,26 @@
|
||||
<template>
|
||||
<a-config-provider :locale="locale">
|
||||
<router-view />
|
||||
<global-setting />
|
||||
</a-config-provider>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { computed } from 'vue'
|
||||
import enUS from '@arco-design/web-vue/es/locale/lang/en-us'
|
||||
import zhCN from '@arco-design/web-vue/es/locale/lang/zh-cn'
|
||||
import GlobalSetting from '@/components/global-setting/index.vue'
|
||||
import useLocale from '@/hooks/locale'
|
||||
|
||||
const { currentLocale } = useLocale()
|
||||
const locale = computed(() => {
|
||||
switch (currentLocale.value) {
|
||||
case 'zh-CN':
|
||||
return zhCN
|
||||
case 'en-US':
|
||||
return enUS
|
||||
default:
|
||||
return enUS
|
||||
}
|
||||
})
|
||||
</script>
|
||||
22
cdtestplant/src/api/dashboard.ts
Normal file
@@ -0,0 +1,22 @@
|
||||
import axios from 'axios'
|
||||
import type { TableData } from '@arco-design/web-vue/es/table/interface'
|
||||
|
||||
export interface ContentDataRecord {
|
||||
x: string
|
||||
y: number
|
||||
}
|
||||
|
||||
export function queryContentData() {
|
||||
return axios.get<ContentDataRecord[]>('/api/content-data')
|
||||
}
|
||||
|
||||
export interface PopularRecord {
|
||||
key: number
|
||||
clickNumber: string
|
||||
title: string
|
||||
increases: number
|
||||
}
|
||||
|
||||
export function queryPopularList(params: { type: string }) {
|
||||
return axios.get<TableData[]>('/api/popular/list', { params })
|
||||
}
|
||||
74
cdtestplant/src/api/interceptor.ts
Normal file
@@ -0,0 +1,74 @@
|
||||
import axios from 'axios'
|
||||
import type { AxiosRequestConfig, AxiosResponse } from 'axios'
|
||||
import { Message, Modal } from '@arco-design/web-vue'
|
||||
import { useUserStore } from '@/store'
|
||||
import { getToken } from '@/utils/auth'
|
||||
|
||||
export interface HttpResponse<T = unknown> {
|
||||
status: number
|
||||
msg: string
|
||||
code: number
|
||||
data: T
|
||||
}
|
||||
|
||||
if (import.meta.env.VITE_API_BASE_URL) {
|
||||
axios.defaults.baseURL = import.meta.env.VITE_API_BASE_URL
|
||||
}
|
||||
|
||||
// 添加请求拦截器
|
||||
axios.interceptors.request.use(
|
||||
(config: AxiosRequestConfig) => {
|
||||
// 让每个请求携带令牌
|
||||
// 使用JWT token
|
||||
// 授权是一个自定义header密钥
|
||||
// 获取localStorage中token,如果有token,头没有则加上
|
||||
const token = getToken()
|
||||
if (token) {
|
||||
if (!config.headers) {
|
||||
config.headers = {}
|
||||
}
|
||||
config.headers.Authorization = `Bearer ${token}`
|
||||
}
|
||||
return config
|
||||
},
|
||||
(error) => {
|
||||
// 做点什么
|
||||
return Promise.reject(error)
|
||||
}
|
||||
)
|
||||
// 添加响应拦截器
|
||||
axios.interceptors.response.use(
|
||||
(response: AxiosResponse<HttpResponse>) => {
|
||||
const res = response.data
|
||||
// 如果自定义代码不是20000,则判断为错误
|
||||
if (res.code !== 20000) {
|
||||
Message.error({
|
||||
content: res.msg || 'Error',
|
||||
duration: 5 * 1000,
|
||||
})
|
||||
// 50008: 非法令牌;50012:其他客户端登录;50014:令牌过期
|
||||
if ([50008, 50012, 50014].includes(res.code) && response.config.url !== '/api/user/info') {
|
||||
Modal.error({
|
||||
title: 'Confirm logout',
|
||||
content: '您已注销,您可以取消以留在此页面,也可以重新登录',
|
||||
okText: 'Re-Login',
|
||||
async onOk() {
|
||||
const userStore = useUserStore()
|
||||
|
||||
await userStore.logout()
|
||||
window.location.reload()
|
||||
},
|
||||
})
|
||||
}
|
||||
return Promise.reject(new Error(res.msg || 'Error'))
|
||||
}
|
||||
return res
|
||||
},
|
||||
(error) => {
|
||||
Message.error({
|
||||
content: error.msg || '请求错误',
|
||||
duration: 5 * 1000,
|
||||
})
|
||||
return Promise.reject(error)
|
||||
}
|
||||
)
|
||||
38
cdtestplant/src/api/message.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
import axios from 'axios'
|
||||
|
||||
export interface MessageRecord {
|
||||
id: number
|
||||
type: string
|
||||
title: string
|
||||
subTitle: string
|
||||
avatar?: string
|
||||
content: string
|
||||
time: string
|
||||
status: 0 | 1
|
||||
messageType?: number
|
||||
}
|
||||
export type MessageListType = MessageRecord[]
|
||||
|
||||
export function queryMessageList() {
|
||||
return axios.post<MessageListType>('/api/message/list')
|
||||
}
|
||||
|
||||
interface MessageStatus {
|
||||
ids: number[]
|
||||
}
|
||||
|
||||
export function setMessageStatus(data: MessageStatus) {
|
||||
return axios.post<MessageListType>('/api/message/read', data)
|
||||
}
|
||||
|
||||
export interface ChatRecord {
|
||||
id: number
|
||||
username: string
|
||||
content: string
|
||||
time: string
|
||||
isCollect: boolean
|
||||
}
|
||||
|
||||
export function queryChatList() {
|
||||
return axios.post<ChatRecord[]>('/api/chat/list')
|
||||
}
|
||||
27
cdtestplant/src/api/user.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
import axios from 'axios'
|
||||
import type { RouteRecordNormalized } from 'vue-router'
|
||||
import { UserState } from '@/store/modules/user/types'
|
||||
|
||||
export interface LoginData {
|
||||
username: string
|
||||
password: string
|
||||
}
|
||||
|
||||
export interface LoginRes {
|
||||
token: string
|
||||
}
|
||||
export function login(data: LoginData) {
|
||||
return axios.post<LoginRes>('/api/user/login', data)
|
||||
}
|
||||
|
||||
export function logout() {
|
||||
return axios.post<LoginRes>('/api/user/logout')
|
||||
}
|
||||
|
||||
export function getUserInfo() {
|
||||
return axios.post<UserState>('/api/user/info')
|
||||
}
|
||||
|
||||
export function getMenuList() {
|
||||
return axios.post<RouteRecordNormalized[]>('/api/user/menu')
|
||||
}
|
||||
27
cdtestplant/src/api/userAbout.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
import axios from 'axios'
|
||||
import qs from 'query-string'
|
||||
|
||||
export interface PolicyParams {
|
||||
current: number
|
||||
pageSize: number
|
||||
}
|
||||
|
||||
// 请求用户列表接口
|
||||
export function getUserList(params: PolicyParams) {
|
||||
return axios.get<any>('/api/user/list', {
|
||||
params,
|
||||
paramsSerializer: (obj) => {
|
||||
return qs.stringify(obj)
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
// 请求用户列表删除接口
|
||||
export function deleteUserList(data: any) {
|
||||
return axios.post<any>('/api/user/delete', data)
|
||||
}
|
||||
|
||||
// 全条件搜索接口
|
||||
export function getUserListAll(data: any) {
|
||||
return axios.post<any>('/api/user/all', data)
|
||||
}
|
||||
BIN
cdtestplant/src/assets/images/login-banner.png
Normal file
|
After Width: | Height: | Size: 62 KiB |
12
cdtestplant/src/assets/logo.svg
Normal file
@@ -0,0 +1,12 @@
|
||||
<svg width="33" height="33" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0)">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.37754 16.9795L12.7498 9.43027C14.7163 7.41663 17.9428 7.37837 19.9564 9.34482C19.9852 9.37297 20.0137 9.40145 20.0418 9.43027L20.1221 9.51243C22.1049 11.5429 22.1049 14.7847 20.1221 16.8152L12.7498 24.3644C10.7834 26.378 7.55686 26.4163 5.54322 24.4498C5.5144 24.4217 5.48592 24.3932 5.45777 24.3644L5.37754 24.2822C3.39468 22.2518 3.39468 19.0099 5.37754 16.9795Z" fill="#12D2AC"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M20.0479 9.43034L27.3399 16.8974C29.3674 18.9735 29.3674 22.2883 27.3399 24.3644C25.3735 26.3781 22.147 26.4163 20.1333 24.4499C20.1045 24.4217 20.076 24.3933 20.0479 24.3644L12.7558 16.8974C10.7284 14.8213 10.7284 11.5065 12.7558 9.43034C14.7223 7.4167 17.9488 7.37844 19.9624 9.34489C19.9912 9.37304 20.0197 9.40152 20.0479 9.43034Z" fill="#307AF2"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M20.1321 9.52163L23.6851 13.1599L16.3931 20.627L9.10103 13.1599L12.6541 9.52163C14.6707 7.45664 17.9794 7.4174 20.0444 9.434C20.074 9.46286 20.1032 9.49207 20.1321 9.52163Z" fill="#0057FE"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0">
|
||||
<rect width="26" height="19" fill="white" transform="translate(3.5 7)"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
19
cdtestplant/src/assets/style/breakpoint.less
Normal file
@@ -0,0 +1,19 @@
|
||||
// ==============breakpoint============
|
||||
|
||||
// Extra small screen / phone
|
||||
@screen-xs: 480px;
|
||||
|
||||
// Small screen / tablet
|
||||
@screen-sm: 576px;
|
||||
|
||||
// Medium screen / desktop
|
||||
@screen-md: 768px;
|
||||
|
||||
// Large screen / wide desktop
|
||||
@screen-lg: 992px;
|
||||
|
||||
// Extra large screen / full hd
|
||||
@screen-xl: 1200px;
|
||||
|
||||
// Extra extra large screen / large desktop
|
||||
@screen-xxl: 1600px;
|
||||
90
cdtestplant/src/assets/style/global.less
Normal file
@@ -0,0 +1,90 @@
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html,
|
||||
body {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-size: 14px;
|
||||
background-color: var(--color-bg-1);
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
|
||||
.echarts-tooltip-diy {
|
||||
background: linear-gradient(304.17deg, rgba(253, 254, 255, 0.6) -6.04%, rgba(244, 247, 252, 0.6) 85.2%) !important;
|
||||
border: none !important;
|
||||
backdrop-filter: blur(10px) !important;
|
||||
/* Note: backdrop-filter has minimal browser support */
|
||||
|
||||
border-radius: 6px !important;
|
||||
.content-panel {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 0 9px;
|
||||
background: rgba(255, 255, 255, 0.8);
|
||||
width: 164px;
|
||||
height: 32px;
|
||||
line-height: 32px;
|
||||
box-shadow: 6px 0px 20px rgba(34, 87, 188, 0.1);
|
||||
border-radius: 4px;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
.tooltip-title {
|
||||
margin: 0 0 10px 0;
|
||||
}
|
||||
p {
|
||||
margin: 0;
|
||||
}
|
||||
.tooltip-title,
|
||||
.tooltip-value {
|
||||
font-size: 13px;
|
||||
line-height: 15px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
text-align: right;
|
||||
color: #1d2129;
|
||||
font-weight: bold;
|
||||
}
|
||||
.tooltip-item-icon {
|
||||
display: inline-block;
|
||||
margin-right: 8px;
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
border-radius: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
.general-card {
|
||||
border-radius: 4px;
|
||||
border: none;
|
||||
& > .arco-card-header {
|
||||
height: auto;
|
||||
padding: 20px;
|
||||
border: none;
|
||||
}
|
||||
& > .arco-card-body {
|
||||
padding: 0 20px 20px 20px;
|
||||
}
|
||||
}
|
||||
|
||||
.split-line {
|
||||
border-color: rgb(var(--gray-2));
|
||||
}
|
||||
|
||||
.arco-table-cell {
|
||||
.circle {
|
||||
display: inline-block;
|
||||
margin-right: 4px;
|
||||
width: 6px;
|
||||
height: 6px;
|
||||
border-radius: 50%;
|
||||
background-color: rgb(var(--blue-6));
|
||||
&.pass {
|
||||
background-color: rgb(var(--green-6));
|
||||
}
|
||||
}
|
||||
}
|
||||
12822
cdtestplant/src/assets/world.json
Normal file
3
cdtestplant/src/base-ui/from/index.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
import chenForm from '@/base-ui/from/src/form.vue'
|
||||
|
||||
export default chenForm
|
||||