Compare commits
21 Commits
e16afd1696
...
feature-lo
| Author | SHA1 | Date | |
|---|---|---|---|
| f93057e4d1 | |||
| d995251d7b | |||
| 4ecbc2e630 | |||
| 9a82496769 | |||
| 327ffcc235 | |||
| c623db8a72 | |||
| aa20111600 | |||
| 922fb4ca4a | |||
| 3eadf4a27a | |||
| b4029677cf | |||
| 82edc407db | |||
| 0b79a94bda | |||
| c3ebdbf7c9 | |||
| 75c0ed90ca | |||
| 1064fce554 | |||
| 3b1fbf611e | |||
| 1c25e18d0f | |||
| 47c5327c54 | |||
| c96aad3b0d | |||
| 7e3af7a1e8 | |||
| 1eae5068fe |
@@ -2,7 +2,7 @@
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-15 11:11:21
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-16 22:02:03
|
||||
* @LastEditTime: 2023-01-11 09:18:29
|
||||
* @FilePath: \AdminSys\src\main\java\com\cpic\xim\web\controllers\account\P13AccountCheckController.java
|
||||
* @Description: P13账号验证用Controller。
|
||||
*
|
||||
@@ -25,15 +25,15 @@ import com.cpic.xim.myutils.account.CpicXIMStaffInfo;
|
||||
import com.cpic.xim.myutils.account.LdapAccountCheck;
|
||||
|
||||
@Controller
|
||||
@RequestMapping( path = "/account")
|
||||
@SuppressWarnings( "unused")
|
||||
@RequestMapping( path = "/account" )
|
||||
@SuppressWarnings( "unused" )
|
||||
public class P13AccountCheckController
|
||||
{
|
||||
/*****************************************************
|
||||
*
|
||||
*****************************************************/
|
||||
@ResponseBody
|
||||
@RequestMapping( path = "/p13_account_check.do")
|
||||
@RequestMapping( path = "/p13_account_check.do" )
|
||||
public P13AccountCheckResult checkP13Account( @RequestBody P13AccountCheckRequest param,
|
||||
HttpServletRequest request, HttpServletResponse response )
|
||||
throws IllegalSelectorException, IOException
|
||||
@@ -64,7 +64,7 @@ public class P13AccountCheckController
|
||||
}
|
||||
|
||||
// 查询结果是null,说明没有查询到结果,工号或p13账号不存在,返回结果。
|
||||
if ( staff == null)
|
||||
if ( staff == null )
|
||||
{
|
||||
result.setMessage( "人员工号或P13账号不存在!" );
|
||||
result.setSuccess( false );
|
||||
@@ -73,7 +73,7 @@ public class P13AccountCheckController
|
||||
}
|
||||
|
||||
// 判断一下p13是否存在,如果不存在就结束过程
|
||||
if ( staff.getP13UID().isEmpty() == true)
|
||||
if ( staff.getP13UID().isEmpty() == true )
|
||||
{
|
||||
result.setMessage( "P13账号不存在,请联系信息技术部申请账号!" );
|
||||
result.setSuccess( false );
|
||||
@@ -85,7 +85,7 @@ public class P13AccountCheckController
|
||||
boolean ldapCheckResult =
|
||||
LdapAccountCheck.ldapLogin( staff.getP13UID(), param.getPassword() );
|
||||
|
||||
if ( ldapCheckResult == true)
|
||||
if ( ldapCheckResult == true )
|
||||
{
|
||||
result.setSuccess( true );
|
||||
result.setMessage( "验证成功!" );
|
||||
@@ -95,12 +95,15 @@ public class P13AccountCheckController
|
||||
HttpSession session = request.getSession();
|
||||
|
||||
session.setAttribute( "staff_info", staff );
|
||||
} else
|
||||
}
|
||||
else
|
||||
{
|
||||
result.setSuccess( false );
|
||||
result.setMessage( "验证失败,密码错误!" );
|
||||
result.setMessage( "密码错误!" );
|
||||
}
|
||||
|
||||
result.setToken( param.getP13Account() );
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-15 11:17:26
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-16 21:53:30
|
||||
* @LastEditTime: 2023-01-10 14:58:53
|
||||
* @FilePath: \AdminSys\src\main\java\com\cpic\xim\web\controllers\account\P13AccountCheckResult.java
|
||||
* @Description:
|
||||
*
|
||||
@@ -49,6 +49,17 @@ public class P13AccountCheckResult
|
||||
this.staffInfo = staffInfo;
|
||||
}
|
||||
|
||||
|
||||
public String getToken()
|
||||
{
|
||||
return token;
|
||||
}
|
||||
|
||||
public void setToken( String token )
|
||||
{
|
||||
this.token = token;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
@@ -80,12 +91,20 @@ public class P13AccountCheckResult
|
||||
return true;
|
||||
}
|
||||
|
||||
// 验证结果状态,true为成功,false为失败
|
||||
@JsonProperty( "success")
|
||||
private boolean success;
|
||||
|
||||
// 验证结果消息字符串,用来提示前端。
|
||||
@JsonProperty( "message")
|
||||
private String message;
|
||||
|
||||
// 用户的token
|
||||
@JsonProperty( "token")
|
||||
private String token;
|
||||
|
||||
// 验证成功后查询到的人员信息。
|
||||
@JsonProperty( "staff_info")
|
||||
CpicXIMStaffInfo staffInfo;
|
||||
|
||||
}
|
||||
|
||||
1
企业级管理系统/web/admin_system/.env.development
Normal file
@@ -0,0 +1 @@
|
||||
VUE_APP_API_URL_LOGIN = "http://localhost:8080/admin-system/account/p13_account_check.do"
|
||||
3470
企业级管理系统/web/admin_system/package-lock.json
generated
@@ -8,6 +8,7 @@
|
||||
"lint": "vue-cli-service lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"@element-plus/icons-vue": "^2.0.10",
|
||||
"axios": "^1.2.1",
|
||||
"core-js": "^3.8.3",
|
||||
"element-plus": "^2.2.26",
|
||||
@@ -29,6 +30,7 @@
|
||||
"@vue/cli-service": "~5.0.0",
|
||||
"eslint": "^7.32.0",
|
||||
"eslint-plugin-vue": "^8.0.3",
|
||||
"svg-sprite-loader": "^2.1.0",
|
||||
"vue-cli-plugin-element-plus": "~0.0.13"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,13 @@
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-17 11:08:18
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-01-07 20:54:14
|
||||
* @FilePath: \admin_system\public\index.html
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
-->
|
||||
<!DOCTYPE html>
|
||||
<html lang="">
|
||||
<head>
|
||||
@@ -22,6 +32,12 @@
|
||||
.v-cloak {
|
||||
display: none;
|
||||
}
|
||||
|
||||
body {
|
||||
overflow: hidden;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
max-height: 100vh;
|
||||
}
|
||||
</style>
|
||||
</html>
|
||||
|
||||
|
||||
24
企业级管理系统/web/admin_system/src/assets/css/colors.css
Normal file
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-11-12 23:22:59
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-05 01:07:18
|
||||
* @FilePath: \hello-cli\src\assets\css\colors.css
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
|
||||
html {
|
||||
--backupground-color: #f4f5f7ff;
|
||||
--btn-color-blue: #307dbe;
|
||||
--btn-color-yellow: #f7b24d;
|
||||
--btn-color-green: #5bad60;
|
||||
--btn-color-red: #e56651;
|
||||
--btn-font-color: #fff;
|
||||
|
||||
--input-focus-color: #e56651;
|
||||
|
||||
/* 标题栏背景色 */
|
||||
--banner-background-color: #1d74b2;
|
||||
}
|
||||
17
企业级管理系统/web/admin_system/src/assets/css/global.css
Normal file
@@ -0,0 +1,17 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-05 00:07:49
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-05 00:48:04
|
||||
* @FilePath: \hello-cli\src\assets\css\global.css
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
html,
|
||||
body,
|
||||
#app {
|
||||
/* padding: 0px; */
|
||||
margin: 0px;
|
||||
overflow: hidden;
|
||||
}
|
||||
36
企业级管理系统/web/admin_system/src/components/svg/SvgIcon.vue
Normal file
@@ -0,0 +1,36 @@
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2023-01-06 20:33:57
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-01-07 17:10:07
|
||||
* @FilePath: \admin_system\src\components\svg\SvgIcon.vue
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
-->
|
||||
<template>
|
||||
svg-icon:{{ this.iconName }}
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "svg-icon",
|
||||
data()
|
||||
{
|
||||
return {
|
||||
iconName: ""
|
||||
};
|
||||
},
|
||||
props: ["icon"],
|
||||
created()
|
||||
{
|
||||
console.log("svg");
|
||||
console.log(this.icon);
|
||||
this.iconName = this.icon;
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M757.76 102.4a122.88 122.88 0 0 1 122.88 122.88v376.8832l-1.4336-0.1536A89.6 89.6 0 0 1 960 691.2v153.6A89.6 89.6 0 0 1 870.4 934.4H153.6a89.6 89.6 0 0 1-89.6-89.6v-153.6a89.6 89.6 0 0 1 80.7936-89.1904l-1.4336 0.1536V225.28A122.88 122.88 0 0 1 266.24 102.4h491.52zM280.064 678.4H153.6a12.8 12.8 0 0 0-12.4416 9.8816l-0.3584 2.9184v153.6c0 7.0656 5.7344 12.8 12.8 12.8h716.8a12.8 12.8 0 0 0 12.8-12.8v-153.6a12.8 12.8 0 0 0-12.8-12.8h-126.5152l-84.992 68.352a38.4 38.4 0 0 1-24.0128 8.448H389.12a38.4 38.4 0 0 1-24.064-8.448L280.064 678.4zM757.76 179.2H266.24a46.08 46.08 0 0 0-45.7216 40.2944L220.16 225.28v376.32h73.3696a38.4 38.4 0 0 1 24.064 8.448l85.0432 68.352h218.6752l85.0944-68.352a38.4 38.4 0 0 1 18.8416-8.0896l5.2224-0.3584H803.84V225.28a46.08 46.08 0 0 0-40.2944-45.7216L757.76 179.2z m-114.1248 280.9344a38.4 38.4 0 0 1 5.2224 76.4416l-5.2224 0.3584H380.416a38.4 38.4 0 0 1-5.2224-76.4416l5.2224-0.3584h263.2704z m0-153.6a38.4 38.4 0 0 1 5.2224 76.4416l-5.2224 0.3584H380.416a38.4 38.4 0 0 1-5.2224-76.4416l5.2224-0.3584h263.2704z" fill="#595959" /></svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M512 76.8a435.2 435.2 0 1 1 0 870.4 435.2 435.2 0 0 1 0-870.4zM512 153.6a358.4 358.4 0 1 0 0 716.8 358.4 358.4 0 0 0 0-716.8z m168.0384 141.2608a38.4 38.4 0 0 1 49.152 49.1008l-95.5904 266.4448a38.4 38.4 0 0 1-23.1936 23.1936L343.9616 729.088a38.4 38.4 0 0 1-49.152-49.1008l95.5904-266.4448a38.4 38.4 0 0 1 23.1936-23.1936zM440.832 500.4288l-46.1312 128.9216 128.8192-46.2336-82.688-82.688z m188.6208-105.8304l-136.8576 48.9984 87.7568 87.7568 49.1008-136.7552z" fill="#595959" /></svg>
|
||||
|
After Width: | Height: | Size: 753 B |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M665.6 448c49.4592 0 89.6 40.1408 89.6 89.6v307.2A89.6 89.6 0 0 1 665.6 934.4H358.4a89.6 89.6 0 0 1-89.6-89.6v-307.2c0-49.4592 40.1408-89.6 89.6-89.6z m12.8 281.6h-332.8v115.2a12.8 12.8 0 0 0 9.8816 12.4416L358.4 857.6h307.2a12.8 12.8 0 0 0 12.8-12.8v-115.2z m-250.88 25.6a38.4 38.4 0 1 1 0 76.8 38.4 38.4 0 0 1 0-76.8zM512 102.4a307.3536 307.3536 0 0 1 292.2496 212.3264 256.0512 256.0512 0 0 1 27.8016 488.3456v-84.6336a179.4048 179.4048 0 0 0 89.2928-145.408L921.6 563.2a179.3024 179.3024 0 0 0-126.464-171.3152l-9.3696-2.56-41.3696-10.2912-13.1584-40.6016a230.5024 230.5024 0 0 0-434.7904-10.3936l-3.584 10.3424-13.2096 40.6016-41.4208 10.24a179.3024 179.3024 0 0 0-46.2336 329.216v84.6336a256.1024 256.1024 0 0 1 27.7504-488.3456A307.2512 307.2512 0 0 1 512 102.4z m153.6 422.4H358.4a12.8 12.8 0 0 0-12.8 12.8v115.2h332.8V537.6a12.8 12.8 0 0 0-9.8816-12.4416L665.6 524.8z m-238.08 25.6a38.4 38.4 0 1 1 0 76.8 38.4 38.4 0 0 1 0-76.8z" fill="#595959" /></svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M333.0048 113.664a153.6 153.6 0 0 1 153.6 153.6v174.1824a45.1584 45.1584 0 0 1-45.1584 45.1584H267.264a153.6 153.6 0 0 1-153.6-153.6V267.264a153.6 153.6 0 0 1 153.6-153.6h65.7408z m7.424 77.1584l-7.424-0.3584H267.264a76.8 76.8 0 0 0-76.4416 69.4272l-0.3584 7.3728v65.7408a76.8 76.8 0 0 0 69.4272 76.4416l7.3728 0.3584h142.5408V267.264a76.8 76.8 0 0 0-62.208-75.4176l-7.168-1.024zM441.4464 537.6c24.9344 0 45.1584 20.224 45.1584 45.1584v174.1824a153.6 153.6 0 0 1-153.6 153.6H267.264a153.6 153.6 0 0 1-153.6-153.6V691.2a153.6 153.6 0 0 1 153.6-153.6h174.1824z m-31.6416 76.7488L267.264 614.4a76.8 76.8 0 0 0-76.4416 69.4272l-0.3584 7.3728v65.7408a76.8 76.8 0 0 0 69.4272 76.4416l7.3728 0.3584h65.7408a76.8 76.8 0 0 0 76.4416-69.376l0.3584-7.424v-142.592z m347.136-500.6848a153.6 153.6 0 0 1 153.6 153.6v65.7408a153.6 153.6 0 0 1-153.6 153.6h-174.1824a45.1584 45.1584 0 0 1-45.1584-45.1584V267.264a153.6 153.6 0 0 1 153.6-153.6h65.7408z m0 76.8H691.2a76.8 76.8 0 0 0-76.4416 69.4272L614.4 267.264l-0.0512 142.5408h142.592a76.8 76.8 0 0 0 76.4416-69.376l0.3584-7.424V267.264a76.8 76.8 0 0 0-69.376-76.4416l-7.424-0.3584z m0 347.136a153.6 153.6 0 0 1 153.6 153.6v65.7408a153.6 153.6 0 0 1-153.6 153.6H691.2a153.6 153.6 0 0 1-153.6-153.6v-174.1824c0-24.9344 20.224-45.1584 45.1584-45.1584h174.1824zM614.4 756.9408a76.8 76.8 0 0 0 69.4272 76.4416l7.3728 0.3584h65.7408a76.8 76.8 0 0 0 76.4416-69.376l0.3584-7.424V691.2a76.8 76.8 0 0 0-69.376-76.4416L756.9408 614.4l-142.592-0.0512 0.0512 142.592z" fill="#595959" /></svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M773.12 102.4a122.88 122.88 0 0 1 122.88 122.88v573.44a122.88 122.88 0 0 1-122.88 122.88H250.88a122.88 122.88 0 0 1-122.88-122.88V225.28A122.88 122.88 0 0 1 250.88 102.4h522.24z m0 76.8H250.88a46.08 46.08 0 0 0-45.7216 40.2944L204.8 225.28v573.44a46.08 46.08 0 0 0 40.2944 45.7216l5.7856 0.3584h522.24a46.08 46.08 0 0 0 45.7216-40.2944L819.2 798.72V225.28a46.08 46.08 0 0 0-40.2944-45.7216L773.12 179.2zM436.6336 247.1424c6.3488 0.2048 12.6976 0.9216 18.9952 2.1504 38.8096 7.5264 68.7104 32.256 89.8048 71.8336 19.6608 37.0176 26.88 67.4816 20.48 97.3824a99.4816 99.4816 0 0 1-30.5664 53.248l-0.9216 0.768 5.0176 8.3968 9.6768 14.4896 6.8608 9.9328 9.216 12.1856 6.8608 8.2432 3.7888-1.2288c50.688-15.5136 97.28 1.4336 140.544 47.616l7.6288 8.448c38.7584 45.8752 41.728 86.3744 26.2656 115.456l-3.2768 6.8096c-8.6528 16.0768-23.4496 33.1264-44.288 49.6128-29.3888 23.1424-71.0144 39.424-105.3696 38.0928l-8.448-0.8704-12.6976-1.5872a215.3984 215.3984 0 0 1-74.9568-27.4944c-47.9744-28.16-95.232-77.312-142.3872-152.4736-31.4368-50.0736-51.5072-89.4464-64.3584-130.3552a234.752 234.752 0 0 1-9.0112-124.8256 111.616 111.616 0 0 1 55.296-74.752l13.0048-7.0656c32.6144-17.92 55.6032-24.9856 82.8416-24.064z m-2.6624 76.7488c-11.3664-0.4096-21.7088 2.7648-43.3664 14.6432l-12.544 6.8608a34.5088 34.5088 0 0 0-17.3056 22.784c-5.632 27.9552-3.4816 56.832 6.6048 85.248 10.9568 34.816 28.3136 68.864 56.5248 113.92 71.0656 113.3568 117.248 140.4928 180.736 146.7904l-1.4848-0.2048 4.4544-0.256c11.1104-1.4336 27.8016-8.0384 41.1648-16.896l6.4-4.608c14.336-11.3152 22.2208-21.0432 25.9584-29.3376 2.56-4.864 2.048-11.5712-15.4624-32.256-28.3648-32.8192-47.9744-40.0384-70.912-31.4368l-8.1408 3.4304-6.656 3.3792a38.4 38.4 0 0 1-41.472-4.5568 104.0896 104.0896 0 0 1-8.192-7.424c-13.312-13.7216-25.6-28.3648-37.0688-44.3904l-15.9744-23.3472c-8.6528-13.312-16.4864-27.136-23.808-41.984l-3.4304-7.4752a38.4 38.4 0 0 1 16.7424-50.1248c16.0768-8.4992 22.2208-15.616 24.064-24.2176 1.9456-9.216-1.2288-22.7328-13.1584-45.2096-10.8544-20.2752-22.272-29.7472-36.5568-32.5632a46.4896 46.4896 0 0 0-7.168-0.768z" fill="#595959" /></svg>
|
||||
|
After Width: | Height: | Size: 2.3 KiB |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M798.72 102.4A122.88 122.88 0 0 1 921.6 225.28v573.44a122.88 122.88 0 0 1-122.88 122.88H225.28A122.88 122.88 0 0 1 102.4 798.72V225.28A122.88 122.88 0 0 1 225.28 102.4h573.44z m0 76.8H225.28a46.08 46.08 0 0 0-45.7216 40.2944L179.2 225.28v573.44a46.08 46.08 0 0 0 40.2944 45.7216l5.7856 0.3584h573.44a46.08 46.08 0 0 0 45.7216-40.2944l0.3584-5.7856V225.28a46.08 46.08 0 0 0-40.2944-45.7216L798.72 179.2z" fill="#595959" /><path d="M368.7936 248.32a38.4 38.4 0 0 1 38.0416 33.1776l0.3584 5.2224v204.032a102.4 102.4 0 0 1 0 189.8496V737.28a38.4 38.4 0 0 1-76.4928 5.2224l-0.3072-5.2224v-56.6784a102.4 102.4 0 0 1 0-189.9008V286.72a38.4 38.4 0 0 1 38.4-38.4z m0 311.7568a25.6 25.6 0 1 0 0 51.2 25.6 25.6 0 0 0 0-51.2zM655.36 248.32a38.4 38.4 0 0 1 38.0416 33.1776l0.3584 5.2224 0.0512 56.6272a102.4 102.4 0 0 1 0 189.8496L693.76 737.28a38.4 38.4 0 0 1-76.4416 5.2224l-0.3584-5.2224v-204.032a102.4 102.4 0 0 1 0-189.952V286.72a38.4 38.4 0 0 1 38.4-38.4z m0 164.352a25.6 25.6 0 1 0 0 51.2 25.6 25.6 0 0 0 0-51.2z" fill="#595959" /></svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M773.12 102.4a122.88 122.88 0 0 1 122.88 122.88v573.44a122.88 122.88 0 0 1-122.88 122.88H250.88a122.88 122.88 0 0 1-122.88-122.88v-84.5824H102.4a38.4 38.4 0 0 1-5.2224-76.3904L102.4 637.3888l25.6-0.0512v-87.04H102.4a38.4 38.4 0 0 1-5.2224-76.3904L102.4 473.5488l25.6-0.0512v-87.04H102.4a38.4 38.4 0 0 1-5.2224-76.3904L102.4 309.7088l25.6-0.0512V225.28A122.88 122.88 0 0 1 250.88 102.4h522.24z m0 76.8H250.88a46.08 46.08 0 0 0-45.7216 40.2944L204.8 225.28v84.4288a38.4 38.4 0 0 1 5.2224 76.4416L204.8 386.5088v87.04a38.4 38.4 0 0 1 5.2224 76.4416L204.8 550.3488v87.04a38.4 38.4 0 0 1 5.2224 76.4416L204.8 714.1888V798.72a46.08 46.08 0 0 0 40.2944 45.7216l5.7856 0.3584h522.24a46.08 46.08 0 0 0 45.7216-40.2944L819.2 798.72V225.28a46.08 46.08 0 0 0-40.2944-45.7216L773.12 179.2z m-235.52 104.96a140.8 140.8 0 0 1 106.6496 232.704A217.4464 217.4464 0 0 1 755.2 706.56a38.4 38.4 0 1 1-76.8 0 140.8 140.8 0 1 0-281.6 0 38.4 38.4 0 1 1-76.8 0c0-81.408 44.7488-152.4224 111.0016-189.7472A140.8 140.8 0 0 1 537.6 284.16z m0 76.8a64 64 0 1 0 0 128 64 64 0 0 0 0-128z" fill="#595959" /></svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M652.8 43.52c45.568 0 83.2 34.048 88.8832 78.08l-0.1024-0.6656 44.3392 0.0512a122.88 122.88 0 0 1 122.88 122.88v573.44a122.88 122.88 0 0 1-122.88 122.88H238.08a122.88 122.88 0 0 1-122.88-122.88v-573.44a122.88 122.88 0 0 1 122.88-122.88l44.3392-0.0512-0.1024 0.6656A89.6 89.6 0 0 1 371.2 43.52z m86.7328 153.088a89.6 89.6 0 0 1-86.7328 67.072h-281.6a89.6 89.6 0 0 1-86.7328-67.072l0.3072 1.1776H238.08a46.08 46.08 0 0 0-45.7216 40.2944l-0.3584 5.7856v573.44a46.08 46.08 0 0 0 40.2944 45.7216l5.7856 0.3584h547.84a46.08 46.08 0 0 0 45.7216-40.2944l0.3584-5.7856v-573.44a46.08 46.08 0 0 0-40.2944-45.7216l-5.7856-0.3584h-46.6944zM512 335.36a140.8 140.8 0 0 1 104.192 235.52 191.6928 191.6928 0 0 1 87.808 161.28 38.4 38.4 0 0 1-76.4416 5.2224l-0.3584-5.2224a115.2 115.2 0 1 0-230.4 0 38.4 38.4 0 1 1-76.8 0c0-67.6352 34.9696-127.1296 87.808-161.28A140.8 140.8 0 0 1 512 335.36z m0 76.8a64 64 0 1 0 0 128 64 64 0 0 0 0-128z m140.8-291.84h-281.6A12.8 12.8 0 0 0 358.4 133.12v40.96c0 7.0656 5.7344 12.8 12.8 12.8h281.6A12.8 12.8 0 0 0 665.6 174.08v-40.96a12.8 12.8 0 0 0-12.8-12.8z" fill="#595959" /></svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M665.6 89.6a38.4 38.4 0 0 1 38.0416 33.1776l0.3584 5.2224v30.6688l120.32 0.0512a122.88 122.88 0 0 1 122.88 122.88v496.64a122.88 122.88 0 0 1-122.88 122.88H199.68a122.88 122.88 0 0 1-122.88-122.88V281.6a122.88 122.88 0 0 1 122.88-122.88l120.32-0.0512V128a38.4 38.4 0 0 1 76.4416-5.2224l0.3584 5.2224v30.6688h230.4V128a38.4 38.4 0 0 1 38.4-38.4zM320 235.4688L199.68 235.52a46.08 46.08 0 0 0-45.7216 40.2944L153.6 281.6v496.64a46.08 46.08 0 0 0 40.2944 45.7216l5.7856 0.3584h624.64a46.08 46.08 0 0 0 45.7216-40.2944L870.4 778.24V281.6a46.08 46.08 0 0 0-40.2944-45.7216L824.32 235.52l-120.32-0.0512v17.2032a38.4 38.4 0 0 1-76.4416 5.2224l-0.3584-5.2224v-17.2032h-230.4v17.2032a38.4 38.4 0 0 1-76.4416 5.2224l-0.3584-5.2224v-17.2032zM384 367.36a120.064 120.064 0 0 1 87.552 202.24 164.2496 164.2496 0 0 1 72.448 136.96 32 32 0 1 1-64 0c0-52.5312-39.0656-95.3344-88.3712-99.328l-7.6288 0.256c-2.56 0-5.12-0.1024-7.68-0.256-49.2544 3.9936-88.32 46.7968-88.32 99.328a32 32 0 1 1-64 0c0-57.2416 28.7744-107.776 72.4992-137.0624A120.064 120.064 0 0 1 384 367.36z m362.6496 209.5104a38.4 38.4 0 0 1 5.1712 76.4928l-5.1712 0.3072H614.4a38.4 38.4 0 0 1-5.2224-76.4416l5.2224-0.3584h132.2496zM384 431.36a56.064 56.064 0 0 0-6.5024 111.7696l6.5024-0.2048 6.5024 0.2048A56.064 56.064 0 0 0 384 431.36z m362.6496-8.0896a38.4 38.4 0 0 1 5.1712 76.4928l-5.1712 0.3072H614.4a38.4 38.4 0 0 1-5.2224-76.4416L614.4 423.2704h132.2496z" fill="#595959" /></svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M716.8 460.8a256 256 0 1 1 0 512 256 256 0 0 1 0-512z m30.72-358.4A122.88 122.88 0 0 1 870.4 225.28l0.0512 196.2496a330.496 330.496 0 0 0-76.8-28.6208L793.6 225.28a46.08 46.08 0 0 0-40.2944-45.7216L747.52 179.2H225.28a46.08 46.08 0 0 0-45.7216 40.2944L179.2 225.28v573.44a46.08 46.08 0 0 0 40.2944 45.7216l5.7856 0.3584h184.2176c11.5712 27.7504 26.7776 53.5552 45.0048 76.8H225.28A122.88 122.88 0 0 1 102.4 798.72V225.28A122.88 122.88 0 0 1 225.28 102.4h522.24z m-30.72 435.2a179.2 179.2 0 1 0 0 358.4 179.2 179.2 0 0 0 0-358.4z m0 31.1296a38.4 38.4 0 0 1 38.0416 33.1776l0.3584 5.2224v78.5408h48.64a38.4 38.4 0 0 1 38.0416 33.28l0.3584 5.12a38.4 38.4 0 0 1-33.1776 38.0928l-5.2224 0.3584H716.8a38.4 38.4 0 0 1-38.0416-33.1776l-0.3584-5.2224v-116.992a38.4 38.4 0 0 1 38.4-38.4zM431.2064 435.2a38.4 38.4 0 0 1 5.2224 76.4416L431.2064 512h-153.6a38.4 38.4 0 0 1-5.2224-76.4416l5.2224-0.3584h153.6z m177.3568-153.6a38.4 38.4 0 0 1 5.2224 76.4416L608.5632 358.4H277.6064a38.4 38.4 0 0 1-5.2224-76.4416l5.2224-0.3584h330.9568z" fill="#595959" /></svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M665.6 115.2a38.4 38.4 0 0 1 38.0416 33.1776L704 153.6v30.6688l94.72 0.0512A122.88 122.88 0 0 1 921.6 307.2v471.04a122.88 122.88 0 0 1-122.88 122.88H225.28A122.88 122.88 0 0 1 102.4 778.24V307.2a122.88 122.88 0 0 1 122.88-122.88l94.72-0.0512V153.6a38.4 38.4 0 0 1 76.4416-5.2224L396.8 153.6v30.6688h230.4V153.6a38.4 38.4 0 0 1 38.4-38.4zM320 261.0688L225.28 261.12a46.08 46.08 0 0 0-45.7216 40.2944L179.2 307.2v471.04a46.08 46.08 0 0 0 40.2944 45.7216l5.7856 0.3584h573.44a46.08 46.08 0 0 0 45.7216-40.2944l0.3584-5.7856V307.2a46.08 46.08 0 0 0-40.2944-45.7216L798.72 261.12l-94.72-0.0512v17.2032a38.4 38.4 0 0 1-76.4416 5.2224l-0.3584-5.2224v-17.2032h-230.4v17.2032a38.4 38.4 0 0 1-76.4416 5.2224l-0.3584-5.2224v-17.2032zM307.2 588.8a51.2 51.2 0 1 1 0 102.4 51.2 51.2 0 0 1 0-102.4z m409.6 12.544a38.4 38.4 0 0 1 5.2224 76.4416l-5.2224 0.3584H460.8a38.4 38.4 0 0 1-5.2224-76.4416L460.8 601.344h256zM307.2 424.96a51.2 51.2 0 1 1 0 102.4 51.2 51.2 0 0 1 0-102.4z m409.6 12.544a38.4 38.4 0 0 1 5.2224 76.4416l-5.2224 0.3584H460.8a38.4 38.4 0 0 1-5.2224-76.4416L460.8 437.504h256z" fill="#595959" /></svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M495.0528 78.1824a38.4 38.4 0 0 1 33.8944 0l384 189.0304a41.3184 41.3184 0 0 1 6.4 3.9424l1.536 1.28a26.4192 26.4192 0 0 1 2.4576 2.2016l0.9728 1.024a24.9344 24.9344 0 0 1 2.304 2.7136l0.7168 1.024a34.816 34.816 0 0 1 4.096 7.2192l1.6384 4.9152a38.912 38.912 0 0 1 1.3312 10.1376v441.1392a38.4 38.4 0 0 1-21.4528 34.4576l-384 189.0304a39.0656 39.0656 0 0 1-9.728 3.2768l-4.7616 0.6144h-4.9152l-4.8128-0.6144a37.888 37.888 0 0 1-9.472-3.1744l-0.2048-0.1024-384-189.0304a38.4 38.4 0 0 1-21.4528-34.4576V301.6704c0-3.584 0.512-6.9632 1.3312-10.1376l1.6896-4.9152a37.5808 37.5808 0 0 1 3.9936-7.168l0.8192-1.024a25.3952 25.3952 0 0 1 2.2016-2.7648l1.024-1.024a24.2176 24.2176 0 0 1 2.4064-2.2016l1.6384-1.28a37.0688 37.0688 0 0 1 6.3488-3.9424l-4.096 2.3552a39.0656 39.0656 0 0 1 3.072-1.8432l1.024-0.512zM166.4 363.4176v355.4304l307.2 151.296v-355.5328l-307.2-151.1936z m691.2 0l-307.2 151.1936v355.5328l307.2-151.296V363.4176zM512 155.392L214.9376 301.6704 512 447.8976l297.0112-146.2272L512 155.392z" fill="#595959" /></svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 4.9 KiB |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M579.2256 95.1808l286.72 187.4432A122.88 122.88 0 0 1 921.6 385.536V798.72a122.88 122.88 0 0 1-122.88 122.88H225.28A122.88 122.88 0 0 1 102.4 798.72V385.4848A122.88 122.88 0 0 1 158.0544 282.624l286.72-187.4432a122.88 122.88 0 0 1 134.4512 0zM492.032 156.4672l-5.2736 2.9696-286.72 187.4944a46.08 46.08 0 0 0-20.48 32.768L179.2 385.536V798.72a46.08 46.08 0 0 0 40.2944 45.7216l5.7856 0.3584h573.44a46.08 46.08 0 0 0 45.7216-40.2944l0.3584-5.7856V385.4848a46.08 46.08 0 0 0-16.2304-35.1232l-4.608-3.4304-286.72-187.4944a46.08 46.08 0 0 0-45.2096-2.9696z m202.1376 516.4544a38.4 38.4 0 0 1 0 76.8H329.8304a38.4 38.4 0 1 1 0-76.8h364.3392z" fill="#595959" /></svg>
|
||||
|
After Width: | Height: | Size: 928 B |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M870.4 832a38.4 38.4 0 0 1 5.2224 76.4416L870.4 908.8H153.6a38.4 38.4 0 0 1-5.2224-76.4416L153.6 832h716.8z m-71.68-716.8a122.88 122.88 0 0 1 122.88 122.88v419.84a122.88 122.88 0 0 1-122.88 122.88H225.28a122.88 122.88 0 0 1-122.88-122.88v-419.84a122.88 122.88 0 0 1 122.88-122.88h573.44z m0 76.8H225.28a46.08 46.08 0 0 0-45.7216 40.2944L179.2 238.08v419.84a46.08 46.08 0 0 0 40.2944 45.7216l5.7856 0.3584h573.44a46.08 46.08 0 0 0 45.7216-40.2944l0.3584-5.7856v-419.84a46.08 46.08 0 0 0-40.2944-45.7216L798.72 192z m-13.824 98.304a38.4 38.4 0 0 1 3.7376 49.9712l-3.7376 4.3008-222.0032 222.0032a38.4 38.4 0 0 1-50.0224 3.7376l-4.3008-3.7376-108.544-108.544-108.544 108.544a38.4 38.4 0 0 1-50.0224 3.7376l-4.3008-3.7376a38.4 38.4 0 0 1-3.7376-49.9712l3.7376-4.3008 135.68-135.7312a38.4 38.4 0 0 1 50.0224-3.7376l4.3008 3.7376 108.544 108.544 194.8672-194.816a38.4 38.4 0 0 1 54.272 0z" fill="#595959" /></svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M481.536 199.4752a38.4 38.4 0 0 1 39.0656 38.4l-0.0512 300.3904h300.4416a38.4 38.4 0 0 1 38.0416 33.2288l0.3584 5.1712A377.2416 377.2416 0 1 1 469.6064 199.68z m-37.7856 79.2576l-6.144 0.8192a300.544 300.544 0 0 0 44.544 597.5552 300.4928 300.4928 0 0 0 297.216-256l0.7168-6.0416H482.2016a38.4 38.4 0 0 1-38.0928-33.1776l-0.3072-5.2224-0.0512-297.9328z m171.776-204.4416l5.0688 0.0512a371.4048 371.4048 0 0 1 342.528 357.5808l0.2048 11.8784a38.4 38.4 0 0 1-38.4 39.0656h-307.2a38.4 38.4 0 0 1-38.4-38.4V112.64a38.4 38.4 0 0 1 41.2672-38.2976z m40.5504 82.7904v248.9856h227.84l-0.8704-7.0656a294.7584 294.7584 0 0 0-222.3616-240.896l-4.608-1.024z" fill="#595959" /></svg>
|
||||
|
After Width: | Height: | Size: 937 B |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M512 153.6a307.3536 307.3536 0 0 1 292.2496 212.3264 256.0512 256.0512 0 0 1-36.1984 503.1936L768 870.4H256v-1.28a256 256 0 0 1-36.2496-503.1936A307.2512 307.2512 0 0 1 512 153.6z m0 76.8a230.4512 230.4512 0 0 0-215.552 148.8384l-3.584 10.3424-13.2096 40.6016-41.4208 10.24a179.3024 179.3024 0 0 0 15.6672 351.0784l9.728 1.2288 9.216 0.8704h478.3104l9.2672-0.8704a179.2 179.2 0 0 0 160.9216-168.4992L921.6 614.4a179.3024 179.3024 0 0 0-126.464-171.3152l-9.3696-2.56-41.3696-10.2912-13.1584-40.6016A230.5024 230.5024 0 0 0 512 230.4z" fill="#595959" /><path d="M512 371.2a38.4 38.4 0 0 1 38.0416 33.1776L550.4 409.6v170.2912l27.2896-27.2896a38.4 38.4 0 0 1 50.3808-3.4304l3.9424 3.4304a38.4 38.4 0 0 1 3.4304 50.3808l-3.4304 3.9424-94.1056 94.1056a38.4 38.4 0 0 1-50.3808 3.4304l-3.9424-3.4304-94.1568-94.1056a38.4 38.4 0 0 1 50.3808-57.7536l3.9424 3.4304 29.8496 29.8496V409.6a38.4 38.4 0 0 1 38.4-38.4z" fill="#595959" /></svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M358.4 205.4144c19.2 0 37.632 3.2256 54.784 9.0624a267.3664 267.3664 0 0 0-31.5904 70.656A91.904 91.904 0 0 0 358.4 282.2656c-49.664 0-89.6 39.0656-89.6 86.784S308.736 455.68 358.4 455.68a92.16 92.16 0 0 0 29.4912-4.8128c8.96 24.576 21.4528 47.4624 36.8128 68.096-20.2752 8.704-42.752 13.5168-66.304 13.5168-91.6992 0-166.4-73.0112-166.4-163.5328S266.7008 205.4144 358.4 205.4144zM283.5456 633.5488H227.5328a48.384 48.384 0 0 0-48.0256 42.7008l-0.3072 5.632v43.2128a5.12 5.12 0 0 0 3.1232 4.7104l1.9968 0.4096h72.2944a234.1376 234.1376 0 0 0-0.3584 12.1856v51.2c0 4.5056 0.2048 9.0112 0.512 13.4144H184.32a81.92 81.92 0 0 1-81.92-81.92v-43.2128a125.1328 125.1328 0 0 1 125.1328-125.184h122.7264a231.4752 231.4752 0 0 0-66.7136 76.8zM793.856 588.8a153.6 153.6 0 0 1 153.6 153.6v51.2a102.4 102.4 0 0 1-102.4 102.4h-409.6a102.4 102.4 0 0 1-102.4-102.4v-51.2a153.6 153.6 0 0 1 153.6-153.6h307.2z m0 76.8h-307.2a76.8 76.8 0 0 0-76.4416 69.4272l-0.3584 7.3728v51.2a25.6 25.6 0 0 0 20.992 25.1904l4.608 0.4096h409.6a25.6 25.6 0 0 0 25.1904-20.992l0.4096-4.608v-51.2a76.8 76.8 0 0 0-69.376-76.4416L793.856 665.6zM640.256 166.4a192 192 0 1 0 0 384 192 192 0 0 0 0-384z m0 76.8a115.2 115.2 0 1 1 0 230.4 115.2 115.2 0 0 1 0-230.4z" fill="#595959" /><path d="M793.856 588.8a153.6 153.6 0 0 1 153.6 153.6v51.2a102.4 102.4 0 0 1-102.4 102.4h-409.6a102.4 102.4 0 0 1-102.4-102.4v-51.2a153.6 153.6 0 0 1 153.6-153.6h307.2z m0 76.8h-307.2a76.8 76.8 0 0 0-76.4416 69.4272l-0.3584 7.3728v51.2a25.6 25.6 0 0 0 20.992 25.1904l4.608 0.4096h409.6a25.6 25.6 0 0 0 25.1904-20.992l0.4096-4.608v-51.2a76.8 76.8 0 0 0-69.376-76.4416L793.856 665.6z" fill="#595959" /></svg>
|
||||
|
After Width: | Height: | Size: 1.9 KiB |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M711.9872 115.2l8.192 0.256a120.0128 120.0128 0 0 1 111.8208 119.7568l-0.0512-1.9968h10.2912A130.56 130.56 0 0 1 972.8 363.776v427.264A130.56 130.56 0 0 1 842.24 921.6H232.96A130.56 130.56 0 0 1 102.4 791.04V235.2128l0.256-8.192A120.0128 120.0128 0 0 1 222.4128 115.2h489.5744z m130.2528 194.816H232.96c-27.6992 0-50.5344 20.992-53.4528 47.9232l-0.3072 5.8368v427.264c0 27.6992 20.992 50.5344 47.9232 53.4528l5.8368 0.3072h609.28c27.6992 0 50.5344-20.992 53.4528-47.9232l0.3072-5.8368v-48.4352h-220.416a165.2224 165.2224 0 0 1 0-330.3936H896v-48.4352c0-27.648-20.992-50.4832-47.9232-53.4016l-5.8368-0.3584z m53.76 178.9952h-220.416c-46.2336 0-84.1728 35.5328-88.064 80.7936l-0.3072 7.6288c0 46.2336 35.5328 84.224 80.7424 88.064l7.68 0.3072H896V489.0112z m-211.2 50.1248a38.4 38.4 0 1 1 0 76.8 38.4 38.4 0 0 1 0-76.8z m27.1872-347.136H222.4128l-5.4272 0.3584a43.2128 43.2128 0 0 0-37.7856 42.8544v9.5744a130.048 130.048 0 0 1 53.76-11.5712h522.0864l-0.2048-3.4304a43.2128 43.2128 0 0 0-37.376-37.4272l-5.4784-0.3584z" fill="#595959" /></svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M512 51.2c19.5584 0 48.2304 6.656 85.9136 19.968l21.4528 7.9872 23.2448 9.216 12.288 5.12 25.9584 11.264 27.7504 12.5952 29.5424 13.8752 31.3344 15.2064 33.1264 16.5376 53.0432 27.2896A122.88 122.88 0 0 1 921.6 299.1104V537.6a409.6 409.6 0 0 1-396.8 409.3952L512 947.2a409.6 409.6 0 0 1-409.6-409.6V299.1104a122.88 122.88 0 0 1 65.9456-108.8512l35.84-18.5344 33.9968-17.152 32.256-15.872 30.4128-14.592 28.672-13.2096 26.8288-11.9296c8.6528-3.7376 16.9984-7.2704 25.0368-10.5472l23.2448-9.2672 21.504-7.936C463.7184 57.856 492.3904 51.2 512 51.2z m0 76.8c-5.632 0-13.4144 1.2288-23.1936 3.6864L476.16 135.168l-14.4896 4.7104-16.384 5.8368-28.0064 10.9056-31.8976 13.5168-23.4496 10.4448-38.2976 17.8176-27.5456 13.312-29.184 14.336-30.72 15.616-32.256 16.6912a46.08 46.08 0 0 0-24.2688 34.4064l-0.4608 6.3488V537.6c0 179.8144 142.592 326.2976 319.744 332.5952l11.8784 0.2048 11.5712-0.1536a332.8 332.8 0 0 0 322.2016-320.7168l0.2048-11.9296V299.1104a46.0288 46.0288 0 0 0-24.6784-40.7552l-32.256-16.6912-45.568-22.9376-28.3648-13.824-39.5264-18.688a2152.5504 2152.5504 0 0 0-12.288-5.632l-23.5008-10.4448-31.8976-13.5168-28.0064-10.9056-16.384-5.8368-14.4896-4.7104-12.6464-3.4816A101.6832 101.6832 0 0 0 512 128z m39.0656 176.3328a38.4 38.4 0 0 1 17.2032 47.4624l-2.2016 4.7104-70.8608 127.8976H593.92a38.4 38.4 0 0 1 35.84 52.1728l-2.2528 4.864-102.4 184.7808a38.4 38.4 0 0 1-69.376-32.512l2.2016-4.7616 70.7584-127.744H430.08a38.4 38.4 0 0 1-35.84-52.1216l2.2528-4.864 102.4-184.8832a38.4 38.4 0 0 1 52.224-15.0016z" fill="#595959" /></svg>
|
||||
|
After Width: | Height: | Size: 1.8 KiB |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M824.32 128a122.88 122.88 0 0 1 122.88 122.88v522.24a122.88 122.88 0 0 1-122.88 122.88H199.68a122.88 122.88 0 0 1-122.88-122.88V250.88a122.88 122.88 0 0 1 122.88-122.88h624.64z m0 76.8H199.68a46.08 46.08 0 0 0-45.7216 40.2944L153.6 250.88v522.24a46.08 46.08 0 0 0 40.2944 45.7216L199.68 819.2h624.64a46.08 46.08 0 0 0 45.7216-40.2944L870.4 773.12V250.88a46.08 46.08 0 0 0-40.2944-45.7216L824.32 204.8zM512 350.72a38.4 38.4 0 0 1 5.2224 76.4416L512 427.52l-79.36-0.0512v235.5712a38.4 38.4 0 0 1-76.4416 5.2224l-0.3584-5.2224V427.4688L276.48 427.52a38.4 38.4 0 0 1-5.2224-76.4416L276.48 350.72H512z m234.6496 256a38.4 38.4 0 0 1 5.1712 76.4416l-5.1712 0.3584h-102.4a38.4 38.4 0 0 1-5.2224-76.4416l5.2224-0.3584h102.4z m0-122.4192a38.4 38.4 0 0 1 5.1712 76.4416l-5.1712 0.3584h-102.4a38.4 38.4 0 0 1-5.2224-76.4416l5.2224-0.3584h102.4z m0-122.4704a38.4 38.4 0 0 1 5.1712 76.4928l-5.1712 0.3072h-102.4a38.4 38.4 0 0 1-5.2224-76.4416l5.2224-0.3584h102.4z" fill="#595959" /></svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M680.3456 935.7312l-10.1888 0.256H522.24a38.4 38.4 0 0 1-5.2224-76.4416l5.2224-0.3584h147.968c36.352 0 68.7616-16.8448 89.9072-43.1616h49.5104c14.2336 0 28.0064-2.0992 40.96-6.144a192 192 0 0 1-170.24 125.8496zM531.2 115.2a330.9568 330.9568 0 0 1 330.752 319.0784l0.2048 11.8784 0.0512 17.408a137.216 137.216 0 0 0-52.6336-10.4448l-24.2176-0.0512v-6.912a254.1568 254.1568 0 0 0-243.1488-253.952l-11.008-0.2048h-38.4a254.1568 254.1568 0 0 0-253.952 243.1488l-0.2048 11.008v6.912l-24.2688 0.0512a137.216 137.216 0 0 0-52.6336 10.4448l0.1024-17.408a330.9568 330.9568 0 0 1 319.0784-330.752l11.8784-0.2048h38.4z" fill="#595959" /><path d="M262.4 453.12h-48.0256A137.5744 137.5744 0 0 0 76.8 590.7456v87.7056a137.5744 137.5744 0 0 0 137.6256 137.6256h47.9744a89.6 89.6 0 0 0 89.6-89.6V542.72a89.6 89.6 0 0 0-89.6-89.6z m-48.0256 76.8h48.0256a12.8 12.8 0 0 1 12.8 12.8v183.7568a12.8 12.8 0 0 1-12.8 12.8h-48.0256A60.8256 60.8256 0 0 1 153.6 678.4v-87.7056c0-33.5872 27.2384-60.8256 60.8256-60.8256zM761.6 453.12h48.0256a137.5744 137.5744 0 0 1 137.5744 137.6256v87.7056a137.5744 137.5744 0 0 1-137.6256 137.6256h-47.9744a89.6 89.6 0 0 1-89.6-89.6V542.72c0-49.4592 40.1408-89.6 89.6-89.6z m48.0256 76.8h-48.0256a12.8 12.8 0 0 0-12.8 12.8v183.7568c0 7.0656 5.7344 12.8 12.8 12.8h48.0256c33.536 0 60.7744-27.2384 60.7744-60.8256v-87.7056c0-33.5872-27.2384-60.8256-60.8256-60.8256z" fill="#595959" /></svg>
|
||||
|
After Width: | Height: | Size: 1.6 KiB |
22
企业级管理系统/web/admin_system/src/components/svg/svg.js
Normal file
@@ -0,0 +1,22 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-01-06 20:49:04
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-01-07 12:17:28
|
||||
* @FilePath: \admin_system\src\components\svg\svg.js
|
||||
* @Description: 导入svg图标
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
const context = require.context("./icons", false, /\.svg$/);
|
||||
console.log(context);
|
||||
|
||||
function requireAll(context)
|
||||
{
|
||||
return context.keys().map(context);
|
||||
}
|
||||
|
||||
const svgMap = requireAll(context);
|
||||
|
||||
console.log("导入svg");
|
||||
console.log(svgMap);
|
||||
79
企业级管理系统/web/admin_system/src/layout/Index.vue
Normal file
@@ -0,0 +1,79 @@
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2023-01-04 11:05:44
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-01-09 15:50:52
|
||||
* @FilePath: \admin_system\src\layout\Index.vue
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
-->
|
||||
<template>
|
||||
<el-container id="layout-container">
|
||||
<el-header id="layout-header">
|
||||
<LayoutHeader />
|
||||
</el-header>
|
||||
<el-container id="layout-container-down">
|
||||
<el-aside :width="asideWidth" id="layout-aside">
|
||||
<LayoutAside />
|
||||
</el-aside>
|
||||
<el-main id="layout-main">
|
||||
<LayoutMain />
|
||||
</el-main>
|
||||
</el-container>
|
||||
</el-container>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import LayoutAside from "./components/Aside.vue";
|
||||
import LayoutHeader from "./components/Header.vue";
|
||||
import LayoutMain from "./components/Main.vue";
|
||||
|
||||
export default {
|
||||
name: "layoutPage",
|
||||
components: {
|
||||
LayoutAside, LayoutHeader, LayoutMain,
|
||||
},
|
||||
computed: {
|
||||
asideWidth()
|
||||
{
|
||||
const collapse = this.$store.state.app.asideBarCollapse;
|
||||
|
||||
return collapse === true ? "65px" : "175px";
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
#layout-container {
|
||||
height: 100vh;
|
||||
max-height: 100vh;
|
||||
/* overflow: hiddens; */
|
||||
}
|
||||
|
||||
#layout-aside {
|
||||
/* width: 175px; */
|
||||
background-color: #223142;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
#layout-header {
|
||||
height: 50px;
|
||||
/* background-color: #77bc99; */
|
||||
padding: 0px;
|
||||
flex-grow: 0;
|
||||
}
|
||||
|
||||
#layout-main {
|
||||
background-color: #ddd;
|
||||
/* height: 0; */
|
||||
/* flex-grow: 1; */
|
||||
}
|
||||
|
||||
#layout-container-down {
|
||||
height: calc(100vh - 50px);
|
||||
/* max-height: calc(100vh - 50px); */
|
||||
|
||||
}
|
||||
</style>
|
||||
141
企业级管理系统/web/admin_system/src/layout/components/Aside.vue
Normal file
@@ -0,0 +1,141 @@
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2023-01-04 11:30:33
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-01-09 15:24:55
|
||||
* @FilePath: \admin_system\src\layout\components\Aside.vue
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
-->
|
||||
<template>
|
||||
<el-menu id="side-bar" router :default-active="currentPath" background-color="#223142" text-color="#fff"
|
||||
active-text-color="#ffd04b" :collapse="asideCollapse">
|
||||
<template v-for="route in this.routers" :key="route.path">
|
||||
<template v-if="!route.hidden">
|
||||
<template v-if="hasOnlyChild(route.children)">
|
||||
<!-- 当只有一个子路由时,直接渲染子路由 -->
|
||||
<el-menu-item :index="route.children[0].path">
|
||||
<component :is="route.children[0].meta.icon" class="icons">
|
||||
</component>
|
||||
<!-- <el-icon v-html="route.children[0].meta && route.children[0].meta.icon"></el-icon> -->
|
||||
<template #title>{{ route.children[0].meta && route.children[0].meta.title }}</template>
|
||||
</el-menu-item>
|
||||
</template>
|
||||
<template v-else>
|
||||
<!-- 不是一个子路由时,有可能没有子路由,或者是多个子路由 -->
|
||||
<el-sub-menu v-if="route.children && route.children.length" :index="route.path">
|
||||
<template #title>
|
||||
<component :is="route.children[0].meta.icon" class="icons"></component>
|
||||
<span>{{ route.meta && route.meta.title }}</span>
|
||||
</template>
|
||||
<template v-for="child in route.children" :key="child.path">
|
||||
<el-menu-item v-if="!child.hidden" :index="child.path">
|
||||
<component :is="route.children[0].meta.icon" class="icons"></component>
|
||||
<template #title>{{ child.meta && child.meta.title }}</template>
|
||||
</el-menu-item>
|
||||
</template>
|
||||
</el-sub-menu>
|
||||
</template>
|
||||
</template>
|
||||
</template>
|
||||
</el-menu>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { useRouter, useRoute } from "vue-router";
|
||||
|
||||
export default {
|
||||
name: "LayoutAside",
|
||||
data()
|
||||
{
|
||||
return {
|
||||
routers: null,
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
//用于判断一个路由是否只有一项子路由
|
||||
hasOnlyChild: function (children)
|
||||
{
|
||||
//防御验证
|
||||
if (!children)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
//剔除掉hidden的路由
|
||||
const routes = children.filter((item) =>
|
||||
{
|
||||
return item.hidden ? false : true;
|
||||
});
|
||||
|
||||
if (routes.length === 1)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
},
|
||||
computed: {
|
||||
//获取当前的路由
|
||||
currentPath()
|
||||
{
|
||||
return useRoute().path;
|
||||
},
|
||||
//获取导航栏是否折叠的标志
|
||||
asideCollapse()
|
||||
{
|
||||
return this.$store.state.app.asideBarCollapse;
|
||||
}
|
||||
},
|
||||
created()
|
||||
{
|
||||
this.routers = useRouter().options.routes;
|
||||
|
||||
console.log(this.routers);
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.el-menu {
|
||||
border-right: none;
|
||||
/* border-left: 5px solid #1d74b2; */
|
||||
overflow: auto;
|
||||
|
||||
-webkit-touch-callout: none;
|
||||
-moz-user-select: none;
|
||||
/*火狐*/
|
||||
-webkit-user-select: none;
|
||||
/*webkit浏览器*/
|
||||
-ms-user-select: none;
|
||||
/*IE10*/
|
||||
-khtml-user-select: none;
|
||||
/*早期浏览器*/
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.is-active {
|
||||
background-color: #ffffff4f !important;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.is-opened {
|
||||
border-left: 5px solid #1d74b2;
|
||||
/* background-color: #344a5f !important; */
|
||||
}
|
||||
|
||||
.icons {
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
/* .el-menu-item {
|
||||
padding: 5px;
|
||||
border: 1px solid red;
|
||||
} */
|
||||
</style>
|
||||
99
企业级管理系统/web/admin_system/src/layout/components/Header.vue
Normal file
@@ -0,0 +1,99 @@
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2023-01-04 11:39:04
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-01-11 17:07:13
|
||||
* @FilePath: \admin_system\src\layout\components\Header.vue
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
-->
|
||||
<template>
|
||||
<div class="app_banner no_select">
|
||||
<span class="company_name">CPIC</span>
|
||||
<div class="version_div">
|
||||
<div>测试版</div>
|
||||
<div>3.6.7 x64 Build 202208301257</div>
|
||||
</div>
|
||||
<div class="buttons_div">
|
||||
<User style="width: 25px; height; 25px; margin-right: 8px" />
|
||||
<SwitchButton style="width: 25px; height; 25px; margin-right: 8px; cursor:pointer;" @click="logout" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
//import { ElMessage } from "element-plus";
|
||||
import { Logout } from "../../utils/api/info/account";
|
||||
|
||||
export default {
|
||||
name: "AppBanner",
|
||||
data()
|
||||
{
|
||||
return {};
|
||||
},
|
||||
// created() {
|
||||
// console.log("banner请求数据!");
|
||||
// },
|
||||
mounted()
|
||||
{
|
||||
//console.log("banner请求数据!");
|
||||
},
|
||||
methods: {
|
||||
logout()
|
||||
{
|
||||
this.$confirm("是否退出系统?", "提示", {
|
||||
confirmButtonText: "是",
|
||||
cancelButtonText: "否",
|
||||
type: "warning",
|
||||
}).then(() =>
|
||||
{
|
||||
Logout();
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style scoped>
|
||||
.app_banner {
|
||||
background-color: var(--banner-background-color);
|
||||
color: #fff;
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
align-items: center;
|
||||
padding: 0px 15px 0px 15px;
|
||||
height: 100%;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.no_select {
|
||||
-webkit-touch-callout: none;
|
||||
-moz-user-select: none;
|
||||
/*火狐*/
|
||||
-webkit-user-select: none;
|
||||
/*webkit浏览器*/
|
||||
-ms-user-select: none;
|
||||
/*IE10*/
|
||||
-khtml-user-select: none;
|
||||
/*早期浏览器*/
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.app_banner>*+* {
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.company_name {
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
.version_div {
|
||||
font-size: 0.5rem;
|
||||
}
|
||||
|
||||
.buttons_div {
|
||||
margin-left: auto;
|
||||
padding-top: 5px;
|
||||
/* border: 1px solid salmon; */
|
||||
}
|
||||
</style>
|
||||
26
企业级管理系统/web/admin_system/src/layout/components/Main.vue
Normal file
@@ -0,0 +1,26 @@
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2023-01-04 11:40:03
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-01-11 21:27:22
|
||||
* @FilePath: \admin_system\src\layout\components\Main.vue
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
-->
|
||||
<template>
|
||||
<div><router-view /></div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "LayoutMain"
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.main_content {
|
||||
min-height: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
</style>
|
||||
@@ -2,7 +2,7 @@
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-14 15:12:46
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-22 21:13:59
|
||||
* @LastEditTime: 2023-01-07 16:44:45
|
||||
* @FilePath: \admin_system\src\main.js
|
||||
* @Description:
|
||||
*
|
||||
@@ -12,14 +12,30 @@ import { createApp } from 'vue';
|
||||
import App from './App.vue';
|
||||
import router from './router';
|
||||
import store from './store';
|
||||
//import "@/components/svg/svg";
|
||||
|
||||
import("./css/root.css");
|
||||
import("./css/normalize.css");
|
||||
import("./css/colors.css");
|
||||
import("element-plus/dist/index.css");
|
||||
|
||||
// import "./assets/css/root.css";
|
||||
// import "./assets/css/normalize.css";
|
||||
// import "./assets/css/global.css";
|
||||
// import "./assets/css/colors.css";
|
||||
|
||||
import ElementPlus from "element-plus";
|
||||
import * as ElementPlusIconsVue from "@element-plus/icons-vue";
|
||||
import SvgIcon from "./components/svg/SvgIcon";
|
||||
|
||||
const app = createApp(App);
|
||||
|
||||
app.component("SvgIcon", SvgIcon);
|
||||
|
||||
for (const [key, component] of Object.entries(ElementPlusIconsVue))
|
||||
{
|
||||
app.component(key, component);
|
||||
}
|
||||
|
||||
app.use(ElementPlus);
|
||||
app.use(store).use(router).mount('#app');
|
||||
@@ -2,30 +2,119 @@
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-14 15:12:46
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-14 16:19:17
|
||||
* @LastEditTime: 2023-01-11 10:28:24
|
||||
* @FilePath: \admin_system\src\router\index.js
|
||||
* @Description:
|
||||
* @Description: 定义应用路由配置
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
import { createRouter, createWebHashHistory } from 'vue-router'
|
||||
import { createRouter, createWebHashHistory } from 'vue-router';
|
||||
|
||||
const routes = [
|
||||
//框架路由
|
||||
{
|
||||
path: "/",
|
||||
name: "Home",
|
||||
redirect: "Login",
|
||||
name: "Root",
|
||||
redirect: "Login", //默认路由指向登录页面
|
||||
hidden: true,
|
||||
},
|
||||
{
|
||||
path: "/login",
|
||||
name: "Login",
|
||||
component: () => import("../views/account/Login.vue"),
|
||||
}
|
||||
hidden: true,
|
||||
},
|
||||
{
|
||||
path: "/home",
|
||||
name: "Home",
|
||||
hidden: true,
|
||||
meta: {
|
||||
title: "控制台"
|
||||
},
|
||||
component: () => import("../layout/Index.vue"),
|
||||
},
|
||||
//侧边导航栏路由
|
||||
{ //首页
|
||||
path: "/console",
|
||||
name: "Console",
|
||||
meta: {
|
||||
title: "总览",
|
||||
icon: "house",
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: "/desktop",
|
||||
name: "DeskTop",
|
||||
meta: {
|
||||
title: "工作台",
|
||||
icon: "house",
|
||||
},
|
||||
component: () => import("../views/overview/OverView.vue"),
|
||||
},
|
||||
],
|
||||
component: () => import("../layout/Index.vue"),
|
||||
},
|
||||
{//信息管理
|
||||
path: "/news",
|
||||
name: "News",
|
||||
meta: {
|
||||
title: "信息管理",
|
||||
icon: "edit",
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: "/newsIndex",
|
||||
name: "NewsIndex",
|
||||
meta: {
|
||||
title: "信息列表",
|
||||
icon: "edit",
|
||||
},
|
||||
component: () => import("../views/news/News.vue"),
|
||||
},
|
||||
{
|
||||
path: "/newsedit",
|
||||
name: "NewsEdit",
|
||||
meta: {
|
||||
title: "信息编辑",
|
||||
icon: "edit",
|
||||
},
|
||||
component: () => import("../views/news/NewsEdit.vue"),
|
||||
},
|
||||
],
|
||||
component: () => import("../layout/Index.vue"),
|
||||
},
|
||||
{
|
||||
path: "/user",
|
||||
name: "User",
|
||||
meta: {
|
||||
title: "人员管理",
|
||||
icon: "edit",
|
||||
},
|
||||
component: () => import("../layout/Index.vue"),
|
||||
},
|
||||
];
|
||||
|
||||
const router = createRouter({
|
||||
history: createWebHashHistory(),
|
||||
routes
|
||||
})
|
||||
});
|
||||
|
||||
export default router
|
||||
//前置路由守卫
|
||||
router.beforeEach((to) =>
|
||||
{
|
||||
const token = window.localStorage.getItem("token");
|
||||
|
||||
if (!token)
|
||||
{
|
||||
//如果token不存在,判断路由是否走向login,如果不是则指向login
|
||||
//走向login则不干预
|
||||
if (to.name !== "Login")
|
||||
{
|
||||
return {
|
||||
name: "Login",
|
||||
};
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
export default router;
|
||||
|
||||
@@ -1,14 +1,20 @@
|
||||
import { createStore } from 'vuex'
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-14 15:12:46
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-01-11 14:20:04
|
||||
* @FilePath: \admin_system\src\store\index.js
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
import { createStore } from 'vuex';
|
||||
import app from "./modules/app";
|
||||
|
||||
export default createStore({
|
||||
state: {
|
||||
},
|
||||
getters: {
|
||||
},
|
||||
mutations: {
|
||||
},
|
||||
actions: {
|
||||
},
|
||||
const store = createStore({
|
||||
modules: {
|
||||
app,
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
export default store;
|
||||
39
企业级管理系统/web/admin_system/src/store/modules/app.js
Normal file
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-01-07 22:25:43
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-01-11 09:44:46
|
||||
* @FilePath: \admin_system\src\store\modules\app.js
|
||||
* @Description: vuex中存放全局数据的模块
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
const state = {
|
||||
count: 1001,
|
||||
asideBarCollapse: false, //侧边栏折叠标志位
|
||||
userInfo: null, //用户信息和token
|
||||
};
|
||||
const getters = {};
|
||||
const mutations = {
|
||||
SET_COUNT(state, newCount)
|
||||
{
|
||||
state.count = newCount;
|
||||
},
|
||||
SET_ASIDE_COLLAPSE(state)
|
||||
{
|
||||
state.asideBarCollapse = !state.asideBarCollapse;
|
||||
},
|
||||
SET_USERINFO(state, userInfo)
|
||||
{
|
||||
state.userInfo = userInfo;
|
||||
}
|
||||
};
|
||||
const actions = {};
|
||||
|
||||
export default {
|
||||
namespaced: true,
|
||||
state,
|
||||
getters,
|
||||
mutations,
|
||||
actions,
|
||||
};
|
||||
14
企业级管理系统/web/admin_system/src/utils/api/config.js
Normal file
@@ -0,0 +1,14 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-23 11:10:23
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-23 11:11:58
|
||||
* @FilePath: \admin_system\src\utils\api\config.js
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
|
||||
export const API_URL = {
|
||||
URL_LOGIN: process.env.VUE_APP_API_URL_LOGIN,
|
||||
};
|
||||
@@ -2,23 +2,46 @@
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-22 09:10:20
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-22 20:54:10
|
||||
* @LastEditTime: 2023-01-11 17:02:15
|
||||
* @FilePath: \admin_system\src\utils\api\info\account.js
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
import instance from "@/utils/api/request";
|
||||
|
||||
const URL_LOGIN = "http://localhost:8000/admin-sys/";
|
||||
import { API_URL } from "@/utils/api/config"; //所有API的地址
|
||||
import router from "../../../router/index";
|
||||
import store from "../../../store/index";
|
||||
|
||||
export function Login(userInfo)
|
||||
{
|
||||
//debugger;
|
||||
console.log(API_URL.URL_LOGIN);
|
||||
|
||||
return instance.request(
|
||||
{
|
||||
method: "post",
|
||||
url: URL_LOGIN,
|
||||
userInfo,
|
||||
url: API_URL.URL_LOGIN,
|
||||
data: userInfo,
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
export function Logout()
|
||||
{
|
||||
// if (this.$store && this.$store.state.app)
|
||||
// {
|
||||
// //this.$store.commit();
|
||||
// }
|
||||
|
||||
//const store = useStore();
|
||||
|
||||
//console.log(store);
|
||||
|
||||
console.log(store);
|
||||
|
||||
window.localStorage.removeItem("token");
|
||||
window.localStorage.removeItem("user_info");
|
||||
|
||||
router.replace("/login");
|
||||
}
|
||||
|
||||
@@ -2,13 +2,14 @@
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-22 17:18:10
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-22 20:47:10
|
||||
* @LastEditTime: 2023-01-11 14:58:44
|
||||
* @FilePath: \admin_system\src\utils\api\request.js
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
import axios from "axios";
|
||||
import store from "../../store/index";
|
||||
|
||||
const service = axios.create(
|
||||
{
|
||||
@@ -21,6 +22,23 @@ const service = axios.create(
|
||||
service.interceptors.request.use(
|
||||
function (config)
|
||||
{
|
||||
//axios拦截器请求,在请求的header加上用户名和token
|
||||
if (store.state.app.userInfo)
|
||||
{
|
||||
//如果userInfo存在,则加上用户名和token
|
||||
const username = store.state.app.userInfo.user_info.p13uid;
|
||||
const token = store.state.app.userInfo.token;
|
||||
|
||||
config.headers["token"] = token;
|
||||
config.headers["username"] = username;
|
||||
|
||||
console.log("拦截器,加上username和token!", username, token);
|
||||
}
|
||||
else
|
||||
{
|
||||
console.log("拦截器,userinfo为空!");
|
||||
}
|
||||
|
||||
return config;
|
||||
},
|
||||
function (error)
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
<!-- eslint-disable no-unused-vars -->
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-14 15:23:54
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-21 11:14:57
|
||||
* @LastEditTime: 2023-01-11 14:40:11
|
||||
* @FilePath: \admin_system\src\views\account\Login.vue
|
||||
* @Description:
|
||||
*
|
||||
@@ -13,11 +14,11 @@
|
||||
<div class="form-warp">
|
||||
<ul class="menu-tab">
|
||||
<li :class="{ 'current': current_menu === item.type }" @click="onToggleMenu(item.type)" v-for="item in tab_menu"
|
||||
:key="item.type">{{ item.label
|
||||
}}
|
||||
:key="item.type">{{ item.label }}
|
||||
</li>
|
||||
</ul>
|
||||
<el-form ref="form" :model="form">
|
||||
<!-- <el-form ref="form" :model="form"> -->
|
||||
<el-form ref="form">
|
||||
<el-form-item>
|
||||
<label class="form-label">用户名</label>
|
||||
<el-input type="text" v-model.lazy.trim="loginForm.username"></el-input>
|
||||
@@ -42,7 +43,10 @@
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" class="el-button-block">立即创建</el-button>
|
||||
<el-button type="primary" class="el-button-block" @click="login" :disabled="submit_btn_disable"
|
||||
:loading="submit_btn_loading">
|
||||
{{ current_menu === "login" ? "登录" : "注册" }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
@@ -50,35 +54,141 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
// import { ref } from "vue";
|
||||
import { Login } from "@/utils/api/info/account";
|
||||
import { ElMessage } from "element-plus";
|
||||
import router from "../../router/index";
|
||||
|
||||
export default {
|
||||
name: "loginPage",
|
||||
data() {
|
||||
data()
|
||||
{
|
||||
return {
|
||||
loginForm: {
|
||||
username: "",
|
||||
password: "",
|
||||
confirm_password: "",
|
||||
validateCode: "",
|
||||
},
|
||||
tab_menu: [
|
||||
{ type: "login", label: "登录" },
|
||||
{ type: "regiester", label: "注册" },
|
||||
],
|
||||
current_menu: "",
|
||||
}
|
||||
staffInfo: null,
|
||||
submit_btn_disable: false,
|
||||
submit_btn_loading: false,
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
onToggleMenu(type) {
|
||||
onToggleMenu(type)
|
||||
{
|
||||
this.current_menu = type;
|
||||
console.log(process.env.VUE_APP_API_URL_LOGIN);
|
||||
},
|
||||
getValidateCode() {
|
||||
console.log(this.$axios);
|
||||
getValidateCode()
|
||||
{
|
||||
ElMessage({
|
||||
message: "测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字",
|
||||
center: true,
|
||||
type: "error",
|
||||
});
|
||||
},
|
||||
login()
|
||||
{
|
||||
if (this.loginForm.username.length === 0 || this.loginForm.password === 0)
|
||||
{
|
||||
ElMessage({
|
||||
message: "请填写您的P13账号和密码!",
|
||||
type: "error",
|
||||
});
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
this.submit_btn_disable = true;
|
||||
this.submit_btn_loading = true;
|
||||
|
||||
const userInfo = {
|
||||
p13account: this.loginForm.username,
|
||||
password: this.loginForm.password,
|
||||
};
|
||||
|
||||
Login(userInfo)
|
||||
.then((response) =>
|
||||
{
|
||||
//成功获取到返回值时的响应函数,要判断返回值的成功标志
|
||||
//验证成功,将获取到的token和用户信息保存到vuex和localStoreage
|
||||
//然后router.push,进行路由跳转到控制台
|
||||
const data = response.data;
|
||||
|
||||
//判断是否成功,显示提示信息
|
||||
if (data.success === true)
|
||||
{
|
||||
ElMessage({
|
||||
message: data.message,
|
||||
type: "success",
|
||||
center: true,
|
||||
});
|
||||
|
||||
this.staffInfo = data.staffInfo;
|
||||
|
||||
//保存用户信息和token
|
||||
this.saveUserInfo(data);
|
||||
|
||||
//验证成功,跳转路由
|
||||
router.push("/home");
|
||||
}
|
||||
else
|
||||
{
|
||||
//验证失败
|
||||
ElMessage({
|
||||
message: data.message,
|
||||
type: "error",
|
||||
center: true,
|
||||
});
|
||||
|
||||
this.submit_btn_disable = false;
|
||||
this.submit_btn_loading = false;
|
||||
}
|
||||
})
|
||||
.catch((error) =>
|
||||
{
|
||||
//没有获取到响应数据
|
||||
console.log(error);
|
||||
|
||||
ElMessage({
|
||||
message: error.message,
|
||||
type: "error",
|
||||
center: true,
|
||||
});
|
||||
|
||||
this.submit_btn_disable = false;
|
||||
this.submit_btn_loading = false;
|
||||
});
|
||||
},
|
||||
saveUserInfo(userInfo) //将获取到的用户信息和token保存到vuex和localStorage
|
||||
{
|
||||
//保存到vuex
|
||||
this.$store.commit("app/SET_USERINFO", userInfo);
|
||||
|
||||
//保存到localStorage
|
||||
const token = userInfo.token;
|
||||
const userInfoJson = JSON.stringify(userInfo);
|
||||
|
||||
window.localStorage.setItem("token", token);
|
||||
window.localStorage.setItem("user_info", userInfoJson);
|
||||
}
|
||||
},
|
||||
created() {
|
||||
created()
|
||||
{
|
||||
//初始化菜单选项
|
||||
this.current_menu = this.tab_menu[0].type;
|
||||
}
|
||||
},
|
||||
mounted()
|
||||
{
|
||||
//清理状态
|
||||
this.$store.state.app.userInfo = null;
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
|
||||
23
企业级管理系统/web/admin_system/src/views/news/News.vue
Normal file
@@ -0,0 +1,23 @@
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2023-01-06 15:26:44
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-01-06 15:26:46
|
||||
* @FilePath: \admin_system\src\views\news\News.vue
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
-->
|
||||
<template>
|
||||
信息管理
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "NewsPage"
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
52
企业级管理系统/web/admin_system/src/views/news/NewsEdit.vue
Normal file
@@ -0,0 +1,52 @@
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2023-01-06 19:05:53
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-01-08 19:26:26
|
||||
* @FilePath: \admin_system\src\views\news\NewsEdit.vue
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
-->
|
||||
<template>
|
||||
信息编辑:{{ getCount }}
|
||||
<br>
|
||||
<el-button type="danger" @click="this.add">计数加一</el-button>
|
||||
<SvgIcon icon="house"></SvgIcon>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
//import { ElMessage } from 'element-plus';
|
||||
|
||||
export default {
|
||||
name: "NewsEdit",
|
||||
data()
|
||||
{
|
||||
return {
|
||||
store: null,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
getCount()
|
||||
{
|
||||
return this.$store.state.app.count;
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
add()
|
||||
{
|
||||
let count = this.store.state.app.count + 1;
|
||||
|
||||
this.store.commit("app/SET_COUNT", count);
|
||||
},
|
||||
},
|
||||
created()
|
||||
{
|
||||
this.store = this.$store;
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
33
企业级管理系统/web/admin_system/src/views/news/NewsTest.vue
Normal file
@@ -0,0 +1,33 @@
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2023-01-06 19:23:12
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-01-06 19:23:29
|
||||
* @FilePath: \admin_system\src\views\news\NewsTest.vue
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
-->
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2023-01-06 15:26:44
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-01-06 15:26:46
|
||||
* @FilePath: \admin_system\src\views\news\News.vue
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
-->
|
||||
<template>
|
||||
信息管理
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "NewsPage"
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
27
企业级管理系统/web/admin_system/src/views/overview/OverView.vue
Normal file
@@ -0,0 +1,27 @@
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2023-01-06 15:30:12
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-01-07 20:37:55
|
||||
* @FilePath: \admin_system\src\views\overview\OverView.vue
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
-->
|
||||
<template>
|
||||
<div class="fill"></div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "OverVue"
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.fill {
|
||||
border: 1px solid salmon;
|
||||
height: 2000px;
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
@@ -2,20 +2,50 @@
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-17 11:08:18
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-22 23:47:51
|
||||
* @LastEditTime: 2023-01-07 12:08:14
|
||||
* @FilePath: \admin_system\vue.config.js
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
const { defineConfig } = require('@vue/cli-service');
|
||||
module.exports = defineConfig(
|
||||
// const { defineConfig } = require('@vue/cli-service');
|
||||
// module.exports = defineConfig(
|
||||
// {
|
||||
// transpileDependencies: true,
|
||||
// devServer: {
|
||||
// open: true,
|
||||
// host: "localhost",
|
||||
// port: 8000,
|
||||
// },
|
||||
// }
|
||||
// );
|
||||
module.exports = {
|
||||
transpileDependencies: true,
|
||||
devServer: {
|
||||
open: true,
|
||||
host: "localhost",
|
||||
port: 8000,
|
||||
},
|
||||
chainWebpack: (config) =>
|
||||
{
|
||||
transpileDependencies: true,
|
||||
devServer: {
|
||||
open: true,
|
||||
host: "localhost",
|
||||
port: 8000,
|
||||
}
|
||||
}
|
||||
);
|
||||
// svg 图标解析
|
||||
const svgRule = config.module.rule("svg"); //默认规则赋给 subRule 变量
|
||||
svgRule.uses.clear(); // 清除已有的所有规则。
|
||||
svgRule // 添加要替换的规则
|
||||
.use("svg-sprite-loader")
|
||||
.loader("svg-sprite-loader")
|
||||
.options({
|
||||
symbolId: "icon-[name]",
|
||||
include: ["./src/components/svg/icons"] // 特别注意的目录路径
|
||||
});
|
||||
// 配置base64转换规则
|
||||
// config.module
|
||||
// .rule('images')
|
||||
// .use('url-loader')
|
||||
// .loader('url-loader')
|
||||
// .tap(options => Object.assign(options, { limit: 1 }));
|
||||
|
||||
// 载入项目分析工具
|
||||
// config.plugin('webpack-bundle-analyzer').use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)
|
||||
},
|
||||
};
|
||||
@@ -5,7 +5,7 @@ export const routes = [
|
||||
redirect: "Login",
|
||||
hidden: true,
|
||||
aaa: "",
|
||||
bbb:""
|
||||
bbb: ""
|
||||
},
|
||||
// 登录
|
||||
{
|
||||
@@ -105,11 +105,9 @@ export const routes = [
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
];
|
||||
|
||||
|
||||
|
||||
const router = createRouter({
|
||||
history: createWebHashHistory(),
|
||||
routes
|
||||
|
||||