物联管控平台归档,该版本将不再进行维护,后续将在超融合物联平台提供物联服务

master
zhengpengju 4 years ago
parent 94b7a59140
commit 2f9859a9a0

@ -0,0 +1,16 @@
# http://editorconfig.org
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false
[Makefile]
indent_style = tab

@ -0,0 +1,4 @@
/lambda/
/scripts
/config
.history

@ -0,0 +1,8 @@
module.exports = {
extends: [require.resolve('@umijs/fabric/dist/eslint')],
globals: {
ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION: true,
page: true,
REACT_APP_ENV: true,
},
};

41
.gitignore vendored

@ -0,0 +1,41 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
**/node_modules
# roadhog-api-doc ignore
/src/utils/request-temp.js
_roadhog-api-doc
# production
/dist
/.vscode
# misc
.DS_Store
npm-debug.log*
yarn-error.log
/coverage
.idea
yarn.lock
package-lock.json
*bak
.vscode
# visual studio code
.history
*.log
functions/*
.temp/**
# umi
.umi
.umi-production
# screenshot
screenshot
.firebase
.eslintcache
build
/public/sso

@ -0,0 +1,22 @@
**/*.svg
package.json
.umi
.umi-production
/dist
.dockerignore
.DS_Store
.eslintignore
*.png
*.toml
docker
.editorconfig
Dockerfile*
.gitignore
.prettierignore
LICENSE
.eslintcache
*.lock
yarn-error.log
.history
CNAME
/build

@ -0,0 +1,5 @@
const fabric = require('@umijs/fabric');
module.exports = {
...fabric.prettier,
};

@ -0,0 +1,5 @@
const fabric = require('@umijs/fabric');
module.exports = {
...fabric.stylelint,
};

@ -0,0 +1,3 @@
PORT=8002
# HTTPS=true
BROWSER=none

@ -0,0 +1,34 @@
import { name } from './package.json';
export default {
history: { type: 'hash' },
base: name,
publicPath: '/classInfo/',
outputPath: './dist/classInfo',
mountElementId: 'classInfo',
qiankun: {
slave: {},
},
proxy: {
'/IoTCenter': {
// "target": "http://222.168.49.126:59996",
//"target": "http://10.10.22.26:9976",
target: 'http://221.194.113.154:8100',
changeOrigin: true,
secure: false
},
'/platform': {
// "target": "http://222.168.49.126:59996",
//"target": "http://10.10.22.26:9976",
target: 'http://221.194.113.154:8100',
changeOrigin: true,
secure: false
},
},
plugins: [
require.resolve('../../node_modules/@umijs/plugin-dva/lib'),
require.resolve('../../node_modules/@umijs/plugin-model/lib'),
require.resolve('../../node_modules/@umijs/plugin-antd/lib'),
require.resolve('../../node_modules/@umijs/plugin-qiankun/lib'),
],
};

@ -0,0 +1,14 @@
export const qiankun = {
// 应用加载之前
async bootstrap(props) {
console.log('app2 bootstrap', props);
},
// 应用 render 之前触发
async mount(props) {
console.log('app2 mount', props);
},
// 应用卸载之后触发
async unmount(props) {
console.log('app2 unmount', props);
},
};

@ -0,0 +1,26 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"
/>
<link rel="stylesheet" href="/helloworld/umi.css" />
<script>
window.routerBase = "helloworld";
</script>
<script>
window.publicPath =
window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__ || "/helloworld/";
</script>
<script>
//! umi version: 3.2.14
</script>
</head>
<body>
<div id="helloworld"></div>
<script src="/helloworld/umi.js" entry></script>
</body>
</html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,3 @@
#app2 {
height: 100%;
}

@ -0,0 +1,50 @@
import { Layout, Menu } from 'antd';
import { Link,useModel } from 'umi';
import style from './style.less';
const { SubMenu } = Menu;
const { Header, Content, Sider } = Layout;
// alert('join')
// const { id } = useModel('@@qiankunStateFromMaster') || {};
// alert('id')
// console.log(id,'idididididdidi')
export default ({ children }) => {
const { id } = useModel('@@qiankunStateFromMaster') || {};
debugger
return (
<Layout className={style.layout}>
{/* <Sider width={200} className={style.sider}>
<Menu
mode="inline"
defaultSelectedKeys={['dashboard']}
style={{ height: '100%', borderRight: 0 }}
>
<Menu.Item key="dashboard">
<Link to="/">App2 Dashboard</Link>
</Menu.Item>
<Menu.Item key="user">
<Link to="/user">User</Link>
</Menu.Item>
</Menu>
</Sider> */}
<Content
style={{
background: '#fff',
padding: 24,
margin: 0,
minHeight: 280,
}}
>
{/* {children} */}
{
React.Children.map(children, child => {
console.log(child,'children2222')
return React.cloneElement(child, {"test": id})
})
}
</Content>
</Layout>
)
};

@ -0,0 +1,9 @@
.layout {
height: 100%;
}
.sider {
ul {
background: rgba(243, 250, 255, 1);
}
}

@ -0,0 +1,13 @@
import mockjs from 'mockjs';
export default {
'GET /api/app1/users': mockjs.mock({
'data|100': [
{
'id|+1': 1,
name: '@cname',
email: '@email',
},
],
}),
};

@ -0,0 +1,6 @@
export interface TagType {
name: string;
value: string;
type: string;
}

@ -0,0 +1,3 @@
import { EventEmitter } from 'events';
export default new EventEmitter();

@ -0,0 +1,145 @@
import { Effect, Reducer, Subscription } from 'umi';
import { TagType } from './data.d';
import { queryTags,getClassInfo,execApi,execScene, } from './service';
import emitter from './events';
export interface StateType {
tags: TagType[];
classInfo:any
}
export interface ModelType {
namespace: string;
state: StateType;
effects: {
fetchTags: Effect;
getClassInfo: Effect;
exec: Effect;
execScene: Effect;
};
reducers: {
saveTags: Reducer<StateType>;
save: Reducer<StateType>;
};
subscriptions: { setup: Subscription };
}
const Model: ModelType = {
namespace: 'dashboardAndmonitor',
state: {
tags: [],
classInfo:{}
},
effects: {
*fetchTags(_, { call, put }) {
const response = yield call(queryTags);
yield put({
type: 'saveTags',
payload: response.list,
});
},
//获取教室设备信息通过Rest API
*getClassInfo({ payload, callback }, { call, put }) {
const response = yield call(getClassInfo, payload);
yield put({
type: 'save',
payload: {
classInfo: response,
},
});
},
//开关设备
*exec({ payload, callback }, { call, put }) {
const response = yield call(execApi, payload);
},
//场景开关
*execScene({ payload, callback }, { call, put }) {
const response = yield call(execScene, payload);
},
},
reducers: {
saveTags(state, action) {
return {
...state,
tags: action.payload,
};
},
save(state, { payload }) {
return {
...state,
...payload,
};
},
update(state:any, action:any) {
if(state.classInfo.devices && state.classInfo.devices.length > 0){
state.classInfo.devices.map((item:any)=>{
if(item.number == action.payload.model.device.number){
item.data.map((item1:any)=>{
if(item1.key == 'State'){
item1.value = action.payload.model.value
}
})
}
})
}
// alert(JSON.stringify(action.payload.model))
debugger
console.log(state)
let val = '';
// switch( action.payload.model.value ) {
// case '开':
// val = 'on';
// break;
// case '关':
// val = 'off';
// break;
// default:
// '';
// }
return {
...state,
status: val,
};
},
},
subscriptions: {
setup({ dispatch, history }): void {
emitter.on('message', function (payload) {
/**
* deviceId: "75bae534-a2ff-4355-97cf-06e7acbacc57"
* id: "f9f71b12-134e-4b18-ba33-335620ea6bc5"
*/
if(payload.event === "dataEntityUpdated"){
// debugger
if (dispatch) {
dispatch({
type: 'update',
payload
});
}
//console.log('message::::', payload)
}
})
},
},
};
export default Model;

@ -0,0 +1,59 @@
/**
* request
* api : https://github.com/umijs/umi-request
*/
import { extend } from 'umi-request';
import { notification } from 'antd';
const codeMessage = {
200: '服务器成功返回请求的数据。',
201: '新建或修改数据成功。',
202: '一个请求已经进入后台排队(异步任务)。',
204: '删除数据成功。',
400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。',
401: '用户没有权限(令牌、用户名、密码错误)。',
403: '用户得到授权,但是访问是被禁止的。',
404: '发出的请求针对的是不存在的记录,服务器没有进行操作。',
406: '请求的格式不可得。',
410: '请求的资源被永久删除,且不会再得到的。',
422: '当创建一个对象时,发生一个验证错误。',
500: '服务器发生错误,请检查服务器。',
502: '网关错误。',
503: '服务不可用,服务器暂时过载或维护。',
504: '网关超时。',
};
/**
*
*/
const errorHandler = (error: { response: Response }): Response => {
const { response } = error;
if (response && response.status) {
const errorText = codeMessage[response.status] || response.statusText;
const { status, url } = response;
notification.error({
message: `请求错误 ${status}: ${url}`,
description: errorText,
});
} else if (!response) {
notification.error({
description: '您的网络发生异常,无法连接服务器',
message: '网络异常',
});
}
return response;
};
/**
* request
*/
const request = extend({
errorHandler, // 默认错误处理
credentials: 'include', // 默认请求是否带上cookie
headers: {
'Content-Type': 'application/json;charset=UTF-8',
},
});
export default request;

@ -0,0 +1,34 @@
import request from './request';
export async function queryTags() {
return request('/api/tags');
}
// 单个教室设备信息
export async function getClassInfo(params: { [key: string]: string }) {
return request(`/IoTCenter/api/v1/node/getNode?number=${params.number}`, {
method: 'post',
});
}
//开关设备方法
export async function execApi(params: { [key: string]: string }) {
console.log('params',params);
return request(`/IoTCenter/api/v1/api/execApi`, {
method: 'post',
data: params,
});
}
//场景操作方法
export async function execScene(id: string) {
return request(`/IoTCenter/api/v1/api/execScene`, {
method: 'post',
data:id
});
}

@ -0,0 +1,53 @@
{
"name": "classInfo",
"scripts": {
"start": "umi dev",
"build": "COMPRESS=none umi build",
"test": "umi test"
},
"dependencies": {
"@ant-design/icons": "^4.0.0",
"@ant-design/pro-layout": "^5.0.8",
"@aspnet/signalr": "^1.1.4",
"@types/lodash.debounce": "^4.0.6",
"@types/lodash.isequal": "^4.5.5",
"antd": "^4.0.0",
"classnames": "^2.2.6",
"dva": "^2.4.0",
"events": "^3.2.0",
"gg-editor": "^2.0.2",
"jwt-decode": "^2.2.0",
"lodash": "^4.17.11",
"lodash-decorators": "^6.0.0",
"lodash.debounce": "^4.0.8",
"lodash.isequal": "^4.5.0",
"mockjs": "^1.0.1-beta3",
"moment": "^2.24.0",
"numeral": "^2.0.6",
"nzh": "^1.0.3",
"omit.js": "^1.0.2",
"path-to-regexp": "2.4.0",
"prop-types": "^15.5.10",
"qiankun": "^2.0.20",
"qs": "^6.9.0",
"react": "^16.8.6",
"react-dom": "^16.8.6",
"react-fittext": "^1.0.0",
"react-helmet-async": "^1.0.4",
"react-router": "^4.3.1",
"umi": "^3.2.14",
"umi-request": "^1.0.8",
"use-merge-value": "^1.0.1"
},
"engines": {
"node": ">=10.0.0"
},
"checkFiles": [
"src/**/*.js*",
"src/**/*.ts*",
"src/**/*.less",
"config/**/*.js*",
"scripts/**/*.js"
]
}

@ -0,0 +1,345 @@
import { Link, useModel } from 'umi';
import { Card, Col, Row, Statistic, Tree, Modal } from 'antd';
import { FormattedMessage, formatMessage, } from 'umi';
import React, { Component } from 'react';
import { PoweroffOutlined } from '@ant-design/icons';
import { Dispatch, Action } from 'redux';
import { connect } from 'dva';
import { StateType } from '../models/model';
import style from './style.less'
// export default function(props) {
// alert('join')
// const { id } = useModel('@@qiankunStateFromMaster') || {};
// alert(id)
// // const { id } = props;
// return (
// <div>
// <h1>Dashboard 2#</h1>
// <div>参数传递:</div>
// <div>{id}</div>
// </div>
// );
// }
const { confirm } = Modal;
interface ClassInfoComProps {
dashboardAndmonitor: StateType;
loading: boolean;
}
interface ClassInfoComState {
}
class ClassInfoCom extends Component<ClassInfoComProps,ClassInfoComState> {
state:ClassInfoComState = {
}
componentDidMount() {
debugger
// const { dispatch } = this.props;
// console.log(this.props.id,'ididididdi')
// dispatch({
// type: 'dashboardAndmonitor/getClassInfo',
// payload: {
// number: this.props.id
// },
// })
}
getStatusDevice(data:any){
let dom:any = [];
data.map((item1:any)=>{
if(item1.key == "Light"){
dom.push(
<p className={style.sensingValue}>{`${item1.name}: ${item1.value}${item1.unit}`}</p>
)
}
if(item1.key == "Warning"){
dom.push(
<p className={style.sensingValue}>{`${item1.name}: ${item1.value}`}</p>
)
}
})
return dom
}
getStatusDeviceHum(data:any){
let dom:any = [];
data.map((item1:any)=>{
if(item1.key == "Temperature"){
dom.push(
<p className={style.sensingValue}>{`${item1.name}: ${item1.description} ${item1.value}${item1.unit}`}</p>
)
}
if(item1.key == "Humidity"){
dom.push(
<p className={style.sensingValue}>{`${item1.name}: ${item1.description} ${item1.value}${item1.unit}`}</p>
)
}
if(item1.key == "Warning"){
dom.push(
<p className={style.sensingValue}>{`${item1.name}: ${item1.value}`}</p>
)
}
})
return dom
}
//获取传感设备列表
getSensingList = () => {
let dom:any = [];
if(this.props.dashboardAndmonitor.classInfo.devices){
this.props.dashboardAndmonitor.classInfo.devices.map((item:any)=>{
if(item.product.number == 'fbee:0106:01'){ //光强传感器
dom.push(
<div className={style.sensingItem}>
<img src='../images/light.svg' className={style.sensingImg}/>
{this.getStatusDevice(item.data)}
</div>
)
}
if(item.product.number == 'fbee:0302:01'){ //温湿度传感器
dom.push(
<div className={style.sensingItem}>
<img src='../images/humiture.svg' className={style.sensingImg}/>
{this.getStatusDeviceHum(item.data)}
</div>
)
}
if(item.product.number == 'fbee:0402:0d'){ //人体感应器
dom.push(
<div className={style.sensingItem}>
<img src='../images/person.svg' className={style.sensingImg}/>
<p className={style.sensingValue}>{`${item.data[0].name}: ${item.data[0].value}`}</p>
</div>
)
}
})
}
return dom;
}
//开关设备方法
handleDevices = (data:any) => {
const { dispatch } = this.props;
let status = this.getDevicesOn(data.data)
dispatch({
type: 'dashboardAndmonitor/exec',
payload: {connectionId: window['connectionId'], number:data.number, method:status == '开' ? '/Switch/Off' : '/Switch/On'}
});
}
//获取设备开关状态
getDevicesOn = (data:any) => {
let status = "";
data.map((item:any)=>{
if(item.key == 'State'){
status = item.value
}
})
return status
}
//获取设备列表
getEquList = () => {
let dom:any = [];
if(this.props.dashboardAndmonitor.classInfo.devices){
this.props.dashboardAndmonitor.classInfo.devices.map((item:any)=>{
if(item.product.number == 'fbee:0002:01'){ //一路开关
dom.push(
<Card className={style.equItem} bordered={true}>
<div className={style.equItemTop}>
{`${item.displayName}`}
</div>
<div className={style.equContent}>
<img src='/images/switch1.svg' className={style.equImgs}/>
<PoweroffOutlined style={{color:this.getDevicesOn(item.data) == "开" ? '#00DB00' : '#FF0000',fontSize:'1.8rem',marginTop:'0.7rem',cursor:'pointer'}}
onClick={() => this.handleDevices(item)}
/>
</div>
</Card>
)
}
if(item.product.number == 'fbee:0009:01'){ //插座
dom.push(
<Card className={style.equItem} bordered={true}>
<div className={style.equItemTop}>
{`${item.displayName}`}
</div>
<div className={style.equContent}>
<img src='/images/socket.svg' className={style.equImgs}/>
<PoweroffOutlined style={{color:this.getDevicesOn(item.data) == "开" ? '#00DB00' : '#FF0000',fontSize:'1.8rem',marginTop:'0.7rem',cursor:'pointer'}}
onClick={() => this.handleDevices(item)}
/>
</div>
</Card>
)
}
if(item.product.number == 'fbee:0051:01'){ //智能插座
dom.push(
<Card className={style.equItem} bordered={true}>
<div className={style.equItemTop}>
{`${item.displayName}`}
</div>
<div className={style.equContent}>
<img src='/images/socket.svg' className={style.equImgs}/>
<PoweroffOutlined style={{color:this.getDevicesOn(item.data) == "开" ? '#00DB00' : '#FF0000',fontSize:'1.8rem',marginTop:'0.7rem',cursor:'pointer'}}
onClick={() => this.handleDevices(item)}
/>
</div>
</Card>
)
}
if(item.product.number == 'fbee:000a:01'){ //门锁
dom.push(
<Card className={style.equItem} bordered={true}>
<div className={style.equItemTop}>
{`${item.displayName}`}
</div>
<div className={style.equContent}>
<img src='/images/doors.svg' className={style.equImgs}/>
<PoweroffOutlined style={{color:this.getDevicesOn(item.data) == "开" ? '#00DB00' : '#FF0000',fontSize:'1.8rem',marginTop:'0.7rem',cursor:'pointer'}}
onClick={() => this.handleDevices(item)}
/>
</div>
</Card>
)
}
});
}
return dom;
}
//场景操作方法
handleScenes = (data:any) => {
const { dispatch } = this.props;
dispatch({
type: 'dashboardAndmonitor/execScene',
payload: '"' + data.id + '"'
});
}
//获取场景操作列表
getOperInfoList = () => {
let dom:any = [];
if( this.props.dashboardAndmonitor.classInfo.scenes){
this.props.dashboardAndmonitor.classInfo.scenes.map((item:any)=>{
dom.push(
<div className={style.sensingItem} style={{minHeight:'5rem',cursor:'pointer'}} title={item.name}>
<img src='../images/button.svg' className={style.sensingImg} onClick={()=>this.handleScenes(item)}/>
<p className={style.sensingValue}>{item.name}</p>
</div>
)
})
}
return dom;
}
render() {
debugger
alert('join')
console.log(this.props.dashboardAndmonitor.classInfo)
return (
<div style={{width:'100%'}}>
<Card bordered={true}>
<Row className={style.operSpanStyle}>
</Row>
<Row className={style.operSensing}>
{this.getSensingList()}
</Row>
</Card>
<Card bordered={true} style={{marginTop:'1rem'}}>
<Row className={style.operSpanStyle}>
</Row>
<Row className={style.operSensing}>
{this.getOperInfoList()}
</Row>
</Card>
<Card bordered={true} style={{marginTop:'1rem'}}>
<Row className={style.operSpanStyle}>
</Row>
</Card>
<Row className={style.equipmentList}>
{this.getEquList()}
</Row>
</div>
);
}
}
export default connect(
({
dashboardAndmonitor,
loading,
}: {
dashboardAndmonitor: StateType;
loading: {
models: { [key: string]: boolean };
};
}) => ({
dashboardAndmonitor,
loading: loading.models.dashboardAndmonitor,
}),
)(ClassInfoCom);

@ -0,0 +1,146 @@
@import '~antd/es/style/themes/default.less';
.mapChart {
height: 452px;
padding-top: 24px;
img {
display: inline-block;
max-width: 100%;
max-height: 437px;
}
}
.pieCard :global(.pie-stat) {
font-size: 24px !important;
}
@media screen and (max-width: @screen-lg) {
.mapChart {
height: auto;
}
}
.treeStyle{
padding: 1rem;
font-size: 0.875rem;
}
.operSpanStyle{
border-bottom: 1px solid #ccc;
padding-bottom: 0.5rem;
font-weight: bold;
padding-left: 1rem;
}
.operSensing{
padding-top: 1rem;
.sensingItem{
width: 10rem;
min-height: 6rem;
display: flex;
flex-direction: column;
text-align: center;
.sensingImg{
width: 100%;
height: 3rem;
margin-bottom: 0.5rem;
}
.sensingValue{
width: 100%;
margin-bottom: 0;
margin-top: 0;
}
}
}
.equipmentList{
width: 100%;
padding-top: 1.5rem;
.equItem{
min-height: 9rem;
border-radius: 0.2rem;
display: inline-block;
margin-right: 2rem;
margin-bottom: 1rem;
.equItemTop{
width: 100%;
line-height: 3rem;
color: #555;
font-weight: bold;
border-bottom: 1px solid #ccc;
}
.equContent{
width: 100%;
display: flex;
justify-content: space-around;
padding-top: 1.2rem;
.equImgs{
width: 3rem;
height: 3rem;
}
.equOffOn{
color:'#00DB00';
font-size:1.8rem;
cursor:pointer;
margin-top: 0.7rem;
}
}
}
}
.allOperStyle{
display: flex;
flex-direction: column;
margin-right:8rem;
cursor: pointer;
}
.operButtonStyle{
margin-top: 1rem;
padding-bottom: 1rem;
padding-left:6rem;
}
.classDiv{
display: flex;
margin-top: 2rem;
}
.classItem{
width: 20%;
min-height: 20rem;
border-radius: 0.2rem;
margin-bottom: 1rem;
.classItemTitle{
width: 100%;
height: 6rem;
border-bottom: 1px solid #ccc;
border-top-left-radius: 0.2rem;
border-top-right-radius: 0.2rem;
}
.classItemContent{
width: 100%;
border-bottom: 1px solid #ccc;
min-height: 9rem;
padding-bottom: 1rem;
.tempStyle{
padding-top: 1rem;
padding-left: 1rem;
color: #999;
margin-bottom: 0;
}
}
.classItemButton{
width: 100%;
display: flex;
justify-content: space-around;
padding-top: 1rem;
.itemOperStyle{
width: 30%;
display: flex;
flex-direction: column;
text-align: center;
cursor: pointer;
}
}
}

@ -0,0 +1,39 @@
import React from 'react';
import { Button, Table } from 'antd';
import { connect } from 'dva';
@connect(({ user }) => ({ user }))
export default class extends React.PureComponent {
constructor(props) {
super(props);
const { dispatch } = props;
dispatch({
type: 'user/query',
});
}
render() {
const { user } = this.props;
const { list } = user;
const columns = [
{
dataIndex: 'id',
title: 'ID',
},
{
dataIndex: 'name',
title: 'Name',
},
{
dataIndex: 'email',
title: 'Email',
},
];
return (
<div>
<Table rowKey="id" columns={columns} dataSource={list} />
</div>
);
}
}

@ -0,0 +1,30 @@
import { query } from '@/services/user';
export default {
namespace: 'user',
state: {
list: [],
},
effects: {
*query(_, { put }) {
const { data } = yield query();
yield put({
type: 'querySuccess',
payload: {
list: data,
},
});
},
},
reducers: {
querySuccess(state, { payload }) {
state.list = payload.list;
return {
...state,
};
},
},
};

@ -0,0 +1,9 @@
{
"public": "dist",
"rewrites": [
{
"source": "/app2/*",
"destination": "/app2/index.html"
}
]
}

@ -0,0 +1,5 @@
import { extend } from 'umi-request';
export default extend({
prefix: '/api/app1',
});

@ -0,0 +1,5 @@
import request from './request';
export async function query() {
return request('/users');
}

@ -0,0 +1,3 @@
PORT=8002
# HTTPS=true
BROWSER=none

@ -0,0 +1,18 @@
import { name } from './package.json';
export default {
history: { type: 'hash' },
base: name,
publicPath: '/helloworld/',
outputPath: './dist/helloworld',
mountElementId: 'helloworld',
qiankun: {
slave: {},
},
plugins: [
require.resolve('../../node_modules/@umijs/plugin-dva/lib'),
require.resolve('../../node_modules/@umijs/plugin-model/lib'),
require.resolve('../../node_modules/@umijs/plugin-antd/lib'),
require.resolve('../../node_modules/@umijs/plugin-qiankun/lib'),
],
};

@ -0,0 +1,14 @@
export const qiankun = {
// 应用加载之前
async bootstrap(props) {
console.log('app2 bootstrap', props);
},
// 应用 render 之前触发
async mount(props) {
console.log('app2 mount', props);
},
// 应用卸载之后触发
async unmount(props) {
console.log('app2 unmount', props);
},
};

@ -0,0 +1,26 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"
/>
<link rel="stylesheet" href="/helloworld/umi.css" />
<script>
window.routerBase = "helloworld";
</script>
<script>
window.publicPath =
window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__ || "/helloworld/";
</script>
<script>
//! umi version: 3.2.14
</script>
</head>
<body>
<div id="helloworld"></div>
<script src="/helloworld/umi.js" entry></script>
</body>
</html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,47 @@
import { Layout, Menu } from 'antd';
import { Link, useModel} from 'umi';
import style from './style.less';
const { SubMenu } = Menu;
const { Header, Content, Sider } = Layout;
export default ({ children }) => {
const { id } = useModel('@@qiankunStateFromMaster') || {};
global.constants = {id:id}
// 存储
sessionStorage.setItem("helloworld-id", id);
return (
<Layout className={style.layout}>
<Sider width={200} className={style.sider}>
<Menu
mode="inline"
defaultSelectedKeys={['dashboard']}
style={{ height: '100%', borderRight: 0 }}
>
<Menu.Item key="dashboard">
<Link to="/">App2 Dashboard</Link>
</Menu.Item>
<Menu.Item key="user">
<Link to="/user">User</Link>
</Menu.Item>
</Menu>
</Sider>
<Content
style={{
background: '#fff',
padding: 24,
margin: 0,
minHeight: 280,
}}
><div>{id}</div>
{/*children*/}
{
React.Children.map(children, child => {
return React.cloneElement(child, {"test": id})
})
}
</Content>
</Layout>
)};

@ -0,0 +1,9 @@
.layout {
height: 100%;
}
.sider {
ul {
background: rgba(243, 250, 255, 1);
}
}

@ -0,0 +1,13 @@
import mockjs from 'mockjs';
export default {
'GET /api/app1/users': mockjs.mock({
'data|100': [
{
'id|+1': 1,
name: '@cname',
email: '@email',
},
],
}),
};

@ -0,0 +1,8 @@
{
"name": "helloworld",
"scripts": {
"start": "umi dev",
"build": "COMPRESS=none umi build",
"test": "umi test"
}
}

@ -0,0 +1,24 @@
import { useRootExports, Link, useModel } from 'umi';
export default function(props) {
// const rootExports = useRootExports();
// const { id, nameValue, globalState } = useModel('@@qiankunStateFromMaster') || {};
// const { id } = props;
// console.log('globalState:',globalState)
const {test} = props;
return (
<div>
<h1>Dashboard 2#</h1>
{/*
<div>主程参数传递</div>
<div>{id}</div>
<div>JSON参数传递</div>
<div>{nameValue}</div>
*/}
id:
{global.constants.id}
test:{test}
</div>
);
}

@ -0,0 +1,44 @@
import React from 'react';
import { Button, Table } from 'antd';
import { connect } from 'dva';
@connect(({ user }) => ({ user }))
export default class extends React.PureComponent {
constructor(props) {
super(props);
const { dispatch, id } = props;
this.state = {id:sessionStorage.getItem("helloworld-id")}
dispatch({
type: 'user/query',
});
}
render() {
const { user, test } = this.props;
const { list } = user;
const columns = [
{
dataIndex: 'id',
title: 'ID',
},
{
dataIndex: 'name',
title: 'Name',
},
{
dataIndex: 'email',
title: 'Email',
},
];
return (
<div>
<strong style={{color:'red'}}>000{test}</strong>
<Table rowKey="id" columns={columns} dataSource={list} />
</div>
);
}
}

@ -0,0 +1,37 @@
import { query } from '@/services/user';
export default {
namespace: 'user',
state: {
id:0,
list: [],
},
effects: {
*query(_, { put }) {
const { data } = yield query();
yield put({
type: 'querySuccess',
payload: {
list: data,
},
});
},
},
reducers: {
querySuccess(state, { payload }) {
state.list = payload.list;
return {
...state,
};
},
setID(state, { payload }){
state.id = payload.id
return {
...state,
};
},
},
};

@ -0,0 +1,9 @@
{
"public": "dist",
"rewrites": [
{
"source": "/app2/*",
"destination": "/app2/index.html"
}
]
}

@ -0,0 +1,5 @@
import { extend } from 'umi-request';
export default extend({
prefix: '/api/app1',
});

@ -0,0 +1,5 @@
import request from './request';
export async function query() {
return request('/users');
}

@ -0,0 +1,279 @@
// https://umijs.org/config/
import { defineConfig, utils } from 'umi';
import defaultSettings from './defaultSettings';
import proxy from './proxy';
import webpackPlugin from './plugin.config';
const { winPath } = utils; // preview.pro.ant.design only do not use in your production ;
// preview.pro.ant.design 专用环境变量,请不要在你的项目中使用它。
const { ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION, REACT_APP_ENV, GA_KEY } = process.env;
export default defineConfig({
hash: true,
history: { type: 'hash' },
antd: {
dark: false,
compact: false
},
analytics: GA_KEY
? {
ga: GA_KEY,
}
: false,
dva: {
hmr: true,
},
locale: {
// default zh-CN
default: 'zh-CN',
// default true, when it is true, will use `navigator.language` overwrite default
antd: true,
baseNavigator: true,
},
dynamicImport: {
loading: '@/components/PageLoading/index',
},
targets: {
ie: 11,
},
proxy: {
'/IoTCenter': {
// "target": "http://222.168.49.126:59996",
target: "https://iot.edusoa.com",
// target: 'http://221.194.113.154:8100',
changeOrigin: true,
"secure": false, //配置关闭证书签名验证 跳过https证书验证
},
'/platform': {
// "target": "http://222.168.49.126:59996",
target: "https://iot.edusoa.com",
// target: 'http://221.194.113.154:8100',
changeOrigin: true,
"secure": false, //配置关闭证书签名验证
},
},
qiankun: {
master: {},
},
// umi routes: https://umijs.org/docs/routing
routes: [
{
path: '/',
component: '../layouts/BlankLayout',
routes: [
// 手动设置微应用路由,(后续需要动态匹配)
{
path: '/app1',
microApp: 'app1',
settings: { singular: false },
},
{
path:'/cas',
component: './cas',
},
{
path: '/user',
component: '../layouts/UserLayout',
routes: [
{
name: 'login',
icon: 'smile',
path: '/user/login',
component: './user/login',
},
{
name: 'register-result',
icon: 'smile',
path: '/user/register-result',
component: './user/register-result',
},
{
name: 'register',
icon: 'smile',
path: '/user/register',
component: './user/register',
},
{
component: './exception/404',
},
],
},
{
path: '/dashboard',
component: '../layouts/BasicLayout',
routes: [
{
name: '学校数据',
icon: 'smile',
path: '/dashboard/schoolMain',
component: './dashboard/main/mainState'
},
{
name: '教室管理',
icon: 'HomeOutlined',
path: '/dashboard/monitor',
component: './dashboard/monitor',
},
{
name: '设备管理',
icon: 'SettingOutlined',
path: '/dashboard/workplace',
component: './dashboard/workplace',
},
{
component: './exception/404',
},
],
},
{
path: '/',
component: '../layouts/MainLayout',
Routes: ['src/pages/Authorized'],
authority: ['admin', 'user'],
routes: [
{
name: 'data-center',
icon: 'FundOutlined',
path: '/main',
component: './dashboard/main',
},
{
path: '/',
redirect: '/main',
},
]
},
// {
// path: '/dashboard',
// component: '../layouts/BasicLayout',
// Routes: ['src/pages/Authorized'],
// authority: ['admin', 'user'],
// routes: [
// {
// path: '/dashboard',
// name: 'dashboard',
// icon: 'dashboard',
// routes: [
// {
// name: '数据中心',
// icon: 'FundOutlined',
// path: '/dashboard/main',
// component: './dashboard/main',
// },
// {
// name: '学校数据',
// icon: 'FundOutlined',
// path: '/dashboard/schoolMain',
// component: './dashboard/main/mainState'
// },
// // {
// // name: 'analysis',
// // icon: 'smile',
// // path: '/dashboard/analysis',
// // component: './dashboard/analysis',
// // },
// {
// name: 'monitor',
// icon: 'HomeOutlined',
// path: '/dashboard/monitor',
// component: './dashboard/monitor',
// },
// {
// name: 'workplace',
// icon: 'SettingOutlined',
// path: '/dashboard/workplace',
// component: './dashboard/workplace',
// },
// // {
// // name: 'classOne',
// // path: '/dashboard/monitor/classInfoCom',
// // component: './dashboard/monitor/components/ClassInfoCom',
// // },
// // {
// // name: 'classTwo',
// // path: '/dashboard/monitor/classInfoComTwo',
// // component: './dashboard/monitor/components/ClassInfoComTwo',
// // },
// ],
// },
// /*{
// path: '/',
// redirect: '/dashboard/main',
// },*/
// {
// path: '/',
// redirect: '/dashboard/main',
// },
{
name: 'DEMO',
icon: 'smile',
path: '/demo',
component: './demo',
},
{
component: './exception/404',
},
// ],
// },
],
},
],
// Theme for antd: https://ant.design/docs/react/customize-theme-cn
theme: {
// ...darkTheme,
'primary-color': defaultSettings.primaryColor,
},
define: {
REACT_APP_ENV: REACT_APP_ENV || false,
ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION:
ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION || '', // preview.pro.ant.design only do not use in your production ; preview.pro.ant.design 专用环境变量,请不要在你的项目中使用它。
},
ignoreMomentLocale: true,
lessLoader: {
javascriptEnabled: true,
},
cssLoader: {
modules: {
getLocalIdent: (
context: {
resourcePath: string;
},
_: string,
localName: string,
) => {
if (
context.resourcePath.includes('node_modules') ||
context.resourcePath.includes('ant.design.pro.less') ||
context.resourcePath.includes('global.less')
) {
return localName;
}
const match = context.resourcePath.match(/src(.*)/);
if (match && match[1]) {
const antdProPath = match[1].replace('.less', '');
const arr = winPath(antdProPath)
.split('/')
.map((a: string) => a.replace(/([A-Z])/g, '-$1'))
.map((a: string) => a.toLowerCase());
return `antd-pro${arr.join('-')}-${localName}`.replace(/--/g, '-');
}
return localName;
},
},
},
base: '/',
publicPath: './',
manifest: {
basePath: './',
},
// proxy: proxy[REACT_APP_ENV || 'dev'],
chainWebpack: webpackPlugin,
});

@ -0,0 +1,59 @@
import { MenuTheme } from 'antd/es/menu/MenuContext';
export type ContentWidth = 'Fluid' | 'Fixed';
export interface DefaultSettings {
/**
* theme for nav menu
*/
navTheme: MenuTheme;
/**
* primary color of ant design
*/
primaryColor: string;
/**
* nav menu position: `sidemenu` or `topmenu`
*/
layout: 'sidemenu' | 'topmenu';
/**
* layout of content: `Fluid` or `Fixed`, only works when layout is topmenu
*/
contentWidth: ContentWidth;
/**
* sticky header
*/
fixedHeader: boolean;
/**
* auto hide header
*/
autoHideHeader: boolean;
/**
* sticky siderbar
*/
fixSiderbar: boolean;
menu: { locale: boolean };
title: string;
pwa: boolean;
// Your custom iconfont Symbol script Url
// eg//at.alicdn.com/t/font_1039637_btcrd5co4w.js
// 注意如果需要图标多色Iconfont 图标项目里要进行批量去色处理
// Usage: https://github.com/ant-design/ant-design-pro/pull/3517
iconfontUrl: string;
}
export default {
"navTheme": "realDark",
"primaryColor": "#1890ff",
"layout": "sidemenu",
"contentWidth": "Fluid",
"fixedHeader": false,
"autoHideHeader": false,
"fixSiderbar": false,
"menu": {
"locale": true
},
"title": '物联中心',
"pwa": false,
"iconfontUrl": ""
} as unknown as DefaultSettings;

@ -0,0 +1,65 @@
import path from 'path';
import * as IWebpackChainConfig from 'webpack-chain';
function getModulePackageName(module: { context: string }) {
if (!module.context) return null;
const nodeModulesPath = path.join(__dirname, '../node_modules/');
if (module.context.substring(0, nodeModulesPath.length) !== nodeModulesPath) {
return null;
}
const moduleRelativePath = module.context.substring(nodeModulesPath.length);
const [moduleDirName] = moduleRelativePath.split(path.sep);
let packageName: string | null = moduleDirName;
// handle tree shaking
if (packageName && packageName.match('^_')) {
// eslint-disable-next-line prefer-destructuring
packageName = packageName.match(/^_(@?[^@]+)/)![1];
}
return packageName;
}
const webpackPlugin = (config: IWebpackChainConfig) => {
// optimize chunks
config.optimization
// share the same chunks across different modules
.runtimeChunk(false)
.splitChunks({
chunks: 'async',
name: 'vendors',
maxInitialRequests: Infinity,
minSize: 0,
cacheGroups: {
vendors: {
test: (module: { context: string }) => {
const packageName = getModulePackageName(module) || '';
if (packageName) {
return [
'bizcharts',
'gg-editor',
'g6',
'@antv',
'l7',
'gg-editor-core',
'bizcharts-plugin-slider',
].includes(packageName);
}
return false;
},
name(module: { context: string }) {
const packageName = getModulePackageName(module);
if (packageName) {
if (['bizcharts', '@antv_data-set'].indexOf(packageName) >= 0) {
return 'viz'; // visualization package
}
}
return 'misc';
},
},
},
});
};
export default webpackPlugin;

@ -0,0 +1,30 @@
/**
*
* The agent cannot take effect in the production environment
* so there is no configuration of the production environment
* For details, please see
* https://pro.ant.design/docs/deploy
*/
export default {
dev: {
'/api/': {
target: 'https://preview.pro.ant.design',
changeOrigin: true,
pathRewrite: { '^': '' },
},
},
test: {
'/api/': {
target: 'https://preview.pro.ant.design',
changeOrigin: true,
pathRewrite: { '^': '' },
},
},
pre: {
'/api/': {
target: 'your pre url',
changeOrigin: true,
pathRewrite: { '^': '' },
},
},
};

@ -0,0 +1,129 @@
{
"theme": [
{
"key": "dark",
"fileName": "dark.css",
"theme": "dark",
"modifyVars": {
"dark": true
}
},
{
"key": "dust",
"fileName": "dust.css",
"modifyVars": {
"@primary-color": "#F5222D"
}
},
{
"key": "volcano",
"fileName": "volcano.css",
"modifyVars": {
"@primary-color": "#FA541C"
}
},
{
"key": "sunset",
"fileName": "sunset.css",
"modifyVars": {
"@primary-color": "#FAAD14"
}
},
{
"key": "cyan",
"fileName": "cyan.css",
"modifyVars": {
"@primary-color": "#13C2C2"
}
},
{
"key": "green",
"fileName": "green.css",
"modifyVars": {
"@primary-color": "#52C41A"
}
},
{
"key": "geekblue",
"fileName": "geekblue.css",
"modifyVars": {
"@primary-color": "#2F54EB"
}
},
{
"key": "purple",
"fileName": "purple.css",
"modifyVars": {
"@primary-color": "#722ED1"
}
},
{
"key": "dust",
"theme": "dark",
"fileName": "dark-dust.css",
"modifyVars": {
"@primary-color": "#F5222D",
"dark": true
}
},
{
"key": "volcano",
"theme": "dark",
"fileName": "dark-volcano.css",
"modifyVars": {
"@primary-color": "#FA541C",
"dark": true
}
},
{
"key": "sunset",
"theme": "dark",
"fileName": "dark-sunset.css",
"modifyVars": {
"@primary-color": "#FAAD14",
"dark": true
}
},
{
"key": "cyan",
"theme": "dark",
"fileName": "dark-cyan.css",
"modifyVars": {
"@primary-color": "#13C2C2",
"dark": true
}
},
{
"key": "green",
"theme": "dark",
"fileName": "dark-green.css",
"modifyVars": {
"@primary-color": "#52C41A",
"dark": true
}
},
{
"key": "geekblue",
"theme": "dark",
"fileName": "dark-geekblue.css",
"modifyVars": {
"@primary-color": "#2F54EB",
"dark": true
}
},
{
"key": "purple",
"theme": "dark",
"fileName": "dark-purple.css",
"modifyVars": {
"@primary-color": "#722ED1",
"dark": true
}
}
],
"min": true,
"isModule": true,
"ignoreAntd": false,
"ignoreProLayout": false,
"cache": true
}

@ -0,0 +1,9 @@
module.exports = {
testURL: 'http://localhost:8000',
testEnvironment: './tests/PuppeteerEnvironment',
verbose: false,
globals: {
ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION: false,
localStorage: null,
},
};

@ -0,0 +1,10 @@
{
"compilerOptions": {
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"baseUrl": ".",
"paths": {
"@/*": ["./src/*"]
}
}
}

@ -0,0 +1,153 @@
// eslint-disable-next-line import/no-extraneous-dependencies
import { Request, Response } from 'express';
import { parse } from 'url';
import { TableListItem, TableListParams } from '@/pages/ListTableList/data';
// mock tableListDataSource
const genList = (current: number, pageSize: number) => {
const tableListDataSource: TableListItem[] = [];
for (let i = 0; i < pageSize; i += 1) {
const index = (current - 1) * 10 + i;
tableListDataSource.push({
key: index,
disabled: i % 6 === 0,
href: 'https://ant.design',
avatar: [
'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png',
'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png',
][i % 2],
name: `TradeCode ${index}`,
owner: '曲丽丽',
desc: '这是一段描述',
callNo: Math.floor(Math.random() * 1000),
status: Math.floor(Math.random() * 10) % 4,
updatedAt: new Date(),
createdAt: new Date(),
progress: Math.ceil(Math.random() * 100),
});
}
tableListDataSource.reverse();
return tableListDataSource;
};
let tableListDataSource = genList(1, 100);
function getRule(req: Request, res: Response, u: string) {
let realUrl = u;
if (!realUrl || Object.prototype.toString.call(realUrl) !== '[object String]') {
realUrl = req.url;
}
const { current = 1, pageSize = 10 } = req.query;
const params = (parse(realUrl, true).query as unknown) as TableListParams;
let dataSource = [...tableListDataSource].slice((current - 1) * pageSize, current * pageSize);
if (params.sorter) {
const s = params.sorter.split('_');
dataSource = dataSource.sort((prev, next) => {
if (s[1] === 'descend') {
return next[s[0]] - prev[s[0]];
}
return prev[s[0]] - next[s[0]];
});
}
if (params.status) {
const status = params.status.split(',');
let filterDataSource: TableListItem[] = [];
status.forEach((s: string) => {
filterDataSource = filterDataSource.concat(
dataSource.filter((item) => {
if (parseInt(`${item.status}`, 10) === parseInt(s.split('')[0], 10)) {
return true;
}
return false;
}),
);
});
dataSource = filterDataSource;
}
if (params.name) {
dataSource = dataSource.filter((data) => data.name.includes(params.name || ''));
}
const result = {
data: dataSource,
total: tableListDataSource.length,
success: true,
pageSize,
current: parseInt(`${params.currentPage}`, 10) || 1,
};
return res.json(result);
}
function postRule(req: Request, res: Response, u: string, b: Request) {
let realUrl = u;
if (!realUrl || Object.prototype.toString.call(realUrl) !== '[object String]') {
realUrl = req.url;
}
const body = (b && b.body) || req.body;
const { method, name, desc, key } = body;
switch (method) {
/* eslint no-case-declarations:0 */
case 'delete':
tableListDataSource = tableListDataSource.filter((item) => key.indexOf(item.key) === -1);
break;
case 'post':
(() => {
const i = Math.ceil(Math.random() * 10000);
const newRule = {
key: tableListDataSource.length,
href: 'https://ant.design',
avatar: [
'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png',
'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png',
][i % 2],
name,
owner: '曲丽丽',
desc,
callNo: Math.floor(Math.random() * 1000),
status: Math.floor(Math.random() * 10) % 2,
updatedAt: new Date(),
createdAt: new Date(),
progress: Math.ceil(Math.random() * 100),
};
tableListDataSource.unshift(newRule);
return res.json(newRule);
})();
return;
case 'update':
(() => {
let newRule = {};
tableListDataSource = tableListDataSource.map((item) => {
if (item.key === key) {
newRule = { ...item, desc, name };
return { ...item, desc, name };
}
return item;
});
return res.json(newRule);
})();
return;
default:
break;
}
const result = {
list: tableListDataSource,
pagination: {
total: tableListDataSource.length,
},
};
res.json(result);
}
export default {
'GET /api/rule': getRule,
'POST /api/rule': postRule,
};

@ -0,0 +1,105 @@
import { Request, Response } from 'express';
const getNotices = (req: Request, res: Response) => {
res.json([
{
id: '000000001',
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png',
title: '你收到了 14 份新周报',
datetime: '2017-08-09',
type: 'notification',
},
{
id: '000000002',
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png',
title: '你推荐的 曲妮妮 已通过第三轮面试',
datetime: '2017-08-08',
type: 'notification',
},
{
id: '000000003',
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/kISTdvpyTAhtGxpovNWd.png',
title: '这种模板可以区分多种通知类型',
datetime: '2017-08-07',
read: true,
type: 'notification',
},
{
id: '000000004',
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png',
title: '左侧图标用于区分不同的类型',
datetime: '2017-08-07',
type: 'notification',
},
{
id: '000000005',
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png',
title: '内容不要超过两行字,超出时自动截断',
datetime: '2017-08-07',
type: 'notification',
},
{
id: '000000006',
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg',
title: '曲丽丽 评论了你',
description: '描述信息描述信息描述信息',
datetime: '2017-08-07',
type: 'message',
clickClose: true,
},
{
id: '000000007',
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg',
title: '朱偏右 回复了你',
description: '这种模板用于提醒谁与你发生了互动,左侧放『谁』的头像',
datetime: '2017-08-07',
type: 'message',
clickClose: true,
},
{
id: '000000008',
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg',
title: '标题',
description: '这种模板用于提醒谁与你发生了互动,左侧放『谁』的头像',
datetime: '2017-08-07',
type: 'message',
clickClose: true,
},
{
id: '000000009',
title: '任务名称',
description: '任务需要在 2017-01-12 20:00 前启动',
extra: '未开始',
status: 'todo',
type: 'event',
},
{
id: '000000010',
title: '第三方紧急代码变更',
description: '冠霖提交于 2017-01-06需在 2017-01-07 前完成代码变更任务',
extra: '马上到期',
status: 'urgent',
type: 'event',
},
{
id: '000000011',
title: '信息安全考试',
description: '指派竹尔于 2017-01-09 前完成更新并发布',
extra: '已耗时 8 天',
status: 'doing',
type: 'event',
},
{
id: '000000012',
title: 'ABCD 版本发布',
description: '冠霖提交于 2017-01-06需在 2017-01-07 前完成代码变更任务',
extra: '进行中',
status: 'processing',
type: 'event',
},
]);
};
// export default {
// 'GET /api/notices': getNotices,
// };

@ -0,0 +1,5 @@
export default {
'/api/auth_routes': {
'/form/advanced-form': { authority: ['admin', 'user'] },
},
};

@ -0,0 +1,154 @@
import { Request, Response } from 'express';
function getFakeCaptcha(req: Request, res: Response) {
return res.json('captcha-xxx');
}
// 代码中会兼容本地 service mock 以及部署站点的静态数据
export default {
// 支持值为 Object 和 Array
// 'GET /api/currentUser': {
// name: 'Serati Ma',
// avatar: 'https://gw.alipayobjects.com/zos/antfincdn/XAosXuNZyF/BiazfanxmamNRoxxVxka.png',
// userid: '00000001',
// email: 'antdesign@alipay.com',
// signature: '海纳百川,有容乃大',
// title: '交互专家',
// group: '蚂蚁金服某某某事业群某某平台部某某技术部UED',
// tags: [
// {
// key: '0',
// label: '很有想法的',
// },
// {
// key: '1',
// label: '专注设计',
// },
// {
// key: '2',
// label: '辣~',
// },
// {
// key: '3',
// label: '大长腿',
// },
// {
// key: '4',
// label: '川妹子',
// },
// {
// key: '5',
// label: '海纳百川',
// },
// ],
// notifyCount: 12,
// unreadCount: 11,
// country: 'China',
// geographic: {
// province: {
// label: '浙江省',
// key: '330000',
// },
// city: {
// label: '杭州市',
// key: '330100',
// },
// },
// address: '西湖区工专路 77 号',
// phone: '0752-268888888',
// },
// GET POST 可省略
'GET /api/users': [
{
key: '1',
name: 'John Brown',
age: 32,
address: 'New York No. 1 Lake Park',
},
{
key: '2',
name: 'Jim Green',
age: 42,
address: 'London No. 1 Lake Park',
},
{
key: '3',
name: 'Joe Black',
age: 32,
address: 'Sidney No. 1 Lake Park',
},
],
'POST /api/login/account': (req: Request, res: Response) => {
const { password, userName, type } = req.body;
if (password === 'ant.design' && userName === 'admin') {
res.send({
status: 'ok',
type,
currentAuthority: 'admin',
});
return;
}
if (password === 'ant.design' && userName === 'user') {
res.send({
status: 'ok',
type,
currentAuthority: 'user',
});
return;
}
if (type === 'mobile') {
res.send({
status: 'ok',
type,
currentAuthority: 'admin',
});
return;
}
res.send({
status: 'error',
type,
currentAuthority: 'guest',
});
},
'POST /api/register': (req: Request, res: Response) => {
res.send({ status: 'ok', currentAuthority: 'user' });
},
'GET /api/500': (req: Request, res: Response) => {
res.status(500).send({
timestamp: 1513932555104,
status: 500,
error: 'error',
message: 'error',
path: '/base/category/list',
});
},
'GET /api/404': (req: Request, res: Response) => {
res.status(404).send({
timestamp: 1513932643431,
status: 404,
error: 'Not Found',
message: 'No message available',
path: '/base/category/list/2121212',
});
},
'GET /api/403': (req: Request, res: Response) => {
res.status(403).send({
timestamp: 1513932555104,
status: 403,
error: 'Unauthorized',
message: 'Unauthorized',
path: '/base/category/list',
});
},
'GET /api/401': (req: Request, res: Response) => {
res.status(401).send({
timestamp: 1513932555104,
status: 401,
error: 'Unauthorized',
message: 'Unauthorized',
path: '/base/category/list',
});
},
'GET /api/login/captcha': getFakeCaptcha,
};

@ -0,0 +1,137 @@
{
"name": "ant-design-pro",
"version": "4.0.0",
"private": true,
"description": "An out-of-box UI solution for enterprise applications",
"scripts": {
"analyze": "cross-env ANALYZE=1 umi build",
"build": "umi build",
"deploy": "npm run site && npm run gh-pages",
"dev": "npm run start:dev",
"fetch:blocks": "pro fetch-blocks --branch=umi@3 && npm run prettier",
"gh-pages": "cp CNAME ./dist/ && gh-pages -d dist",
"i18n-remove": "pro i18n-remove --locale=zh-CN --write",
"postinstall": "umi g tmp",
"lint": "umi g tmp && npm run lint:js && npm run lint:style && npm run lint:prettier",
"lint-staged": "lint-staged",
"lint-staged:js": "eslint --ext .js,.jsx,.ts,.tsx ",
"lint:fix": "eslint --fix --cache --ext .js,.jsx,.ts,.tsx --format=pretty ./src && npm run lint:style",
"lint:js": "eslint --cache --ext .js,.jsx,.ts,.tsx --format=pretty ./src",
"lint:prettier": "prettier --check \"**/*\" --end-of-line auto",
"lint:style": "stylelint --fix \"src/**/*.less\" --syntax less",
"prettier": "prettier -c --write \"**/*\"",
"start": "umi dev",
"start:dev": "cross-env REACT_APP_ENV=dev MOCK=none umi dev",
"start:no-mock": "cross-env MOCK=none umi dev",
"start:no-ui": "cross-env UMI_UI=none umi dev",
"start:pre": "cross-env REACT_APP_ENV=pre umi dev",
"start:test": "cross-env REACT_APP_ENV=test MOCK=none umi dev",
"pretest": "node ./tests/beforeTest",
"test": "umi test",
"test:all": "node ./tests/run-tests.js",
"test:component": "umi test ./src/components",
"tsc": "tsc"
},
"husky": {
"hooks": {
"pre-commit": "npm run lint-staged"
}
},
"lint-staged": {
"**/*.less": "stylelint --syntax less",
"**/*.{js,jsx,ts,tsx}": "npm run lint-staged:js",
"**/*.{js,jsx,tsx,ts,less,md,json}": [
"prettier --write"
]
},
"browserslist": [
"> 1%",
"last 2 versions",
"not ie <= 10"
],
"dependencies": {
"@ant-design/icons": "^4.0.0",
"@ant-design/pro-layout": "^5.0.8",
"@ant-design/pro-table": "^2.1.11",
"@antv/data-set": "^0.11.0",
"@antv/l7": "^2.0.0",
"@antv/l7-maps": "^2.0.0",
"@aspnet/signalr": "^1.1.4",
"@types/lodash.debounce": "^4.0.6",
"@types/lodash.isequal": "^4.5.5",
"antd": "^4.0.0",
"bizcharts": "^3.5.3-beta.0",
"bizcharts-plugin-slider": "^2.1.1-beta.1",
"classnames": "^2.2.6",
"dva": "^2.4.0",
"events": "^3.2.0",
"gg-editor": "^2.0.2",
"jwt-decode": "^2.2.0",
"lodash": "^4.17.11",
"lodash-decorators": "^6.0.0",
"lodash.debounce": "^4.0.8",
"lodash.isequal": "^4.5.0",
"mockjs": "^1.0.1-beta3",
"moment": "^2.24.0",
"numeral": "^2.0.6",
"nzh": "^1.0.3",
"omit.js": "^1.0.2",
"path-to-regexp": "2.4.0",
"prop-types": "^15.5.10",
"qiankun": "^2.0.20",
"qs": "^6.9.0",
"react": "^16.8.6",
"react-dom": "^16.8.6",
"react-fittext": "^1.0.0",
"react-helmet-async": "^1.0.4",
"react-router": "^4.3.1",
"umi": "^3.2.14",
"umi-request": "^1.0.8",
"use-merge-value": "^1.0.1"
},
"devDependencies": {
"@ant-design/pro-cli": "^1.0.18",
"@types/classnames": "^2.2.7",
"@types/express": "^4.17.0",
"@types/history": "^4.7.2",
"@types/jest": "^25.1.0",
"@types/lodash": "^4.14.144",
"@types/qs": "^6.5.3",
"@types/react": "^16.9.17",
"@types/react-dom": "^16.8.4",
"@types/react-helmet": "^5.0.13",
"@umijs/fabric": "^2.0.5",
"@umijs/plugin-blocks": "^2.0.5",
"@umijs/plugin-qiankun": "^2.8.1",
"@umijs/preset-ant-design-pro": "^1.0.1",
"@umijs/preset-react": "^1.4.8",
"@umijs/preset-ui": "^2.0.9",
"carlo": "^0.9.46",
"chalk": "^4.0.0",
"cross-env": "^7.0.0",
"cross-port-killer": "^1.1.1",
"detect-installer": "^1.0.1",
"enzyme": "^3.11.0",
"eslint": "^6.8.0",
"express": "^4.17.1",
"gh-pages": "^2.0.1",
"husky": "^4.0.7",
"jsdom-global": "^3.0.2",
"lint-staged": "^10.0.0",
"mockjs": "^1.0.1-beta3",
"prettier": "^2.0.1",
"pro-download": "1.0.1",
"puppeteer-core": "^2.1.1",
"stylelint": "^13.0.0"
},
"engines": {
"node": ">=10.0.0"
},
"checkFiles": [
"src/**/*.js*",
"src/**/*.ts*",
"src/**/*.less",
"config/**/*.js*",
"scripts/**/*.js"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

@ -0,0 +1 @@
preview.pro.ant.design

@ -0,0 +1,12 @@
[
{
"name": "classInfo",
"entry": "http://localhost:8002",
"to": "/classInfo"
},
{
"name": "helloWord",
"entry": "http://localhost:8001",
"to": "/helloWord"
}
]

@ -0,0 +1,78 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://static.runoob.com/assets/jquery/2.0.3/jquery.min.js"></script>
<script type="text/javascript">
function getQueryString(name) {
let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
let r = window.location.search.substr(1).match(reg);
if (r != null) {
return decodeURIComponent(r[2]);
};
return null;
}
var ds_access_token = getQueryString("ds_access_token");
var person_id = getQueryString("person_id");
var token = getQueryString("token");
var identity_id = getQueryString("identity_id");
if(ds_access_token!=""){
document.cookie = "ds_access_token=" + ds_access_token;
}
if(person_id!=""){
document.cookie = "person_id=" + person_id;
}
if(token!=""){
document.cookie = "token=" + token;
}
if(identity_id!=""){
document.cookie = "identity_id=" + identity_id;
}
</script>
<style>
body {
font-size: 20px;
}
input {
height: 35px;
width: 400px;
}
</style>
</head>
<body>
<form action="#" method="GET">
ds_access_token<input type="text" id="ds_access_token" name="ds_access_token" value=""><br>
<!-- <script>document.write(document.cookie.split(";")[0].split("=")[1]); </script><br><br> -->
person_id<input type="text" name="person_id"><br>
<!-- <script>document.write(document.cookie.split(";")[3].split("=")[1]); </script><br><br> -->
token<input type="text" name="token"><br>
<!-- <script>document.write(document.cookie.split(";")[1].split("=")[1]); </script><br><br> -->
identity_id<input type="text" name="identity_id"><br>
<!-- <script>document.write(document.cookie.split(";")[2].split("=")[1]); </script><br><br> -->
<input type="submit" />
</form>
<script>
document.write(document.cookie)
// alert(getQueryString("ds_access_token"))
</script>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

@ -0,0 +1,13 @@
<svg width="1024" height="1024" xmlns="http://www.w3.org/2000/svg" p-id="5702" version="1.1" class="icon" t="1578371831778">
<defs>
<style type="text/css"/>
</defs>
<g>
<title>background</title>
<rect fill="none" id="canvas_background" height="514" width="1073" y="-1" x="-1"/>
</g>
<g>
<title>Layer 1</title>
<path stroke="null" id="svg_1" p-id="5703" fill="#8a8a8a" d="m900.922221,989.073926c0,19.692269 -15.753817,35.446077 -35.446077,35.446077l-706.952312,0c-19.69226,0 -35.446077,-15.753808 -35.446077,-35.446077c0,0 5.907682,-122.092038 102.399778,-169.353479c61.046019,-29.538394 37.415307,-15.753808 112.245912,-45.292211c74.830605,-29.538394 92.553644,-51.199885 92.553644,-51.199885l-3.938452,-39.384529s-82.707518,-23.630721 -96.492096,-114.215134c-25.599951,5.907674 -33.476855,-27.569173 -35.446077,-49.230663c-1.96923,-21.66149 -15.753817,-88.615192 15.753808,-82.707518c-5.907682,-45.292202 -11.815356,-84.676731 -7.876904,-106.33823c3.938452,-35.446077 -5.907682,-41.35375 27.569173,-68.922923c7.876904,-7.876904 -7.876913,-41.353759 -1.96923,-51.199885c9.846134,-19.692269 76.799836,-11.815365 86.645961,-15.753817c27.569173,-11.815356 59.076797,-19.69226 92.553652,-21.66149c141.784307,5.907682 196.922643,82.707509 204.799547,157.538115c1.96923,21.661499 -1.969222,61.046028 -9.846126,106.33823c31.507616,-5.907674 17.723038,61.046028 15.753808,82.707518c-1.96923,21.66149 -9.846134,57.107567 -35.446077,49.230663c-13.784586,90.584413 -80.738288,114.215134 -80.738288,114.215134l-3.938452,37.415298s17.723038,19.692269 92.553644,51.199893c74.830605,29.538394 51.199893,17.723038 112.245912,47.261433c92.553644,45.292211 98.461326,169.353479 98.461326,169.353479zm0,0"/>
</g>
</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 t="1590469865389" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1192" xmlns:xlink="http://www.w3.org/1999/xlink" width="1024" height="1024"><defs><style type="text/css"></style></defs><path d="M892.2 63.9H134.1C97 63.9 66.9 94 66.9 131v761.4c0 37 30.1 67.2 67.2 67.2h758.1c37 0 67.2-30.1 67.2-67.2V131c-0.1-37-30.2-67.1-67.2-67.1z m13.6 828.5c0 7.5-6.2 13.7-13.7 13.7h-758c-7.5 0-13.7-6.1-13.7-13.7V131c0-7.5 6.2-13.7 13.7-13.7h758.1c7.5 0 13.7 6.1 13.7 13.7-0.1 0-0.1 761.4-0.1 761.4z" p-id="1193" fill="#35A9FE"></path><path d="M718.8 501.1c-0.6-22-14-38.7-32.8-41.4-21.9-3.1-38 7.5-45.4 30-0.4 1.1-1.3 1.9-2.9 4.3-1.5-23.3-10.7-39.9-33.5-43.3-25-3.7-40.1 9.4-46.8 36-5.1-22.6-16.7-35.3-37.5-36.5C497.8 449 484.3 461 478 483c-0.8-2.1-1.3-2.9-1.3-3.6 0.1-51.6 0.3-103.2 0.3-154.7 0-4.6-0.1-9.2-0.8-13.7-2.6-18.6-17.5-32-37.1-33.5-16.8-1.3-33.8 9.9-38.7 26.8-2.1 7.3-3 15.2-3 22.8-0.2 91.7-0.1 183.4-0.1 275v17.8c-0.7 0.3-1.4 0.5-2 0.8-6.8-9.5-13.5-19-20.3-28.5-12.8-18-25.2-36.2-38.6-53.7-10.1-13-24-18.6-40.4-14.2-16.4 4.5-26.7 15.4-29.5 32.3-2.5 14.8 4.9 26.5 13 37.9 49.2 69.4 99.2 138.3 147.3 208.4 42 61.4 124.8 92.4 198.3 61 52.7-22.5 92.7-75.1 93.8-138.6 1.1-63.6 0.3-127.2 0.3-190.8-0.3-11-0.1-22.2-0.4-33.4z" p-id="1194" fill="#35A9FE"></path><path d="M353.6 423.8c3.8 2.4 7.2 3.6 10-0.9 1.5-2.5 0.5-6.3-3.6-9-1-0.7-2.4-1.5-3.6-2.3-55.1-35.7-84.4-107.1-54-175.7 21.2-50.3 68.5-83 127.9-84.4 54.2-1.3 97.2 22.8 124.6 69 39.2 66.1 20.2 144.9-42.9 189.8-1.6 1.2-3.3 2.5-4.6 3.7-1.6 1.5-2.6 4.1-1.1 6.7 1.8 3.2 4.5 3.4 7.2 2.4 1.9-0.7 4-2.1 5.8-3.4 56.4-38.2 80.7-108.1 59.9-174.2-20.9-66.5-84.8-106.4-145.9-105.2-10.7 0-20.9 0.9-30.5 3.2-89.8 19.1-139.6 101.4-117.5 189.2 9.9 39.5 33.5 69.7 68.3 91.1z" p-id="1195" fill="#35A9FE"></path><path d="M506.2 390.8c2-0.8 3.9-2.2 5.7-3.6 41.6-34.4 55.7-93.6 34.1-143.4-21.3-49.2-73.3-79.3-126.4-73.2-62.6 7.2-108.9 59.1-109.3 122.2-0.1 24.6 7.2 50.5 22.1 70 8.1 10.6 18.4 19.5 28.2 28.7 1.5 1.4 4 3.5 7.8 0.3 2.6-2.8 2-6.4-0.7-9-1.3-1.3-3-2.5-4.6-3.8-17.8-14.8-30.4-33.1-36.7-55.5C303.6 243.4 373.6 167 455 184.1c44.1 9.3 73.6 36.6 85.2 80.4s-1.4 81.3-34.2 112.2c-2.1 2-4.4 3.7-6.1 5.9-1.3 1.6-2 4.3 0.2 6.9 1.5 1.7 3.9 2.2 6.1 1.3z" p-id="1196" fill="#35A9FE"></path><path d="M489.4 350.7c-3.3 3.4-3.7 7.4-1.1 9.8 3.6 3.1 6.5 0.6 9-1.5 1.2-1 2.6-2.2 3.7-3.5 24.5-28.5 31.9-60.7 18.1-95.9-15-38.3-45-56.9-83.7-59.6-5.6 0.3-9.4 0.3-13.1 0.8-53.9 8.1-87.7 52.8-80.4 106.9 2.9 21.1 13 39 29.1 53.1 1.9 1.6 5.5 4.3 9 1.2 3.3-3.5 1.9-6.1-0.8-9.1-1-1.1-2.2-2.5-3.5-3.7-30.9-31.6-30.9-81.6 0-113 31-31.5 81.2-32.2 113.1-1.7 31.8 30.5 33.3 80.4 3.4 113-0.9 1.2-1.9 2.3-2.8 3.2z" p-id="1197" fill="#35A9FE"></path></svg>

After

Width:  |  Height:  |  Size: 2.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 t="1588124825040" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2525" xmlns:xlink="http://www.w3.org/1999/xlink" width="1024" height="1024"><defs><style type="text/css"></style></defs><path d="M954.066 439.7a181.176 181.176 0 0 1-49.844 64.146 25.936 25.936 0 0 1 5.917 30.043l-87.854 188.377a25.985 25.985 0 0 1-34.531 12.566l-74.657-34.81a77.974 77.974 0 0 1-88.605 16.023l-149.2-69.564-50.517 101.011a77.534 77.534 0 0 1-69.729 43.083H223.391v25.982a78.036 78.036 0 0 1-77.952 77.943h-51.97a25.982 25.982 0 0 1-25.984-25.98V608.707a25.983 25.983 0 0 1 25.983-25.982h51.969a78.076 78.076 0 0 1 73.485 51.964h87.941l27.067-54.118L200.593 518.4c-64.927-30.273-93.118-107.718-62.841-172.637l65.89-141.284c30.277-64.919 107.731-93.1 172.655-62.835l565.2 263.523a25.985 25.985 0 0 1 12.569 34.533zM145.439 634.687h-25.985v207.85h25.983a26.012 26.012 0 0 0 25.985-25.982V660.669a26.012 26.012 0 0 0-25.983-25.982z m640.727 42.071l65.894-141.282-2.421-1.127a182 182 0 0 1-59.26 10.429L739.067 654.8z m-463.246 9.89h-99.529v51.962h131.655a25.845 25.845 0 0 0 23.246-14.36l49.884-99.742-47.128-21.973-34.887 69.752a25.984 25.984 0 0 1-23.241 14.361zM217.795 297.083l-32.944 70.641a78.03 78.03 0 0 0 37.7 103.581L646.455 668.95a25.972 25.972 0 0 0 34.53-12.566l55.683-119.4a184.083 184.083 0 0 1-24.326-9.311z m136.539-108.344a78.041 78.041 0 0 0-103.593 37.7l-10.981 23.548 494.544 230.584a130.038 130.038 0 0 0 159.336-40.378z m266.985 411.155l-94.2-43.921a25.982 25.982 0 1 1 21.966-47.094l94.2 43.921a25.982 25.982 0 1 1-21.966 47.094z m-271.626-129.32a25.982 25.982 0 1 1 25.984-25.981 25.983 25.983 0 0 1-25.984 25.981z m-94.184-43.926a25.982 25.982 0 1 1 25.984-25.982 25.984 25.984 0 0 1-25.984 25.982z" fill="#35A9FE" p-id="2526"></path></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 t="1588040084926" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9437" xmlns:xlink="http://www.w3.org/1999/xlink" width="1024" height="1024"><defs><style type="text/css"></style></defs><path d="M987.776 441.696a22.304 22.304 0 0 0-1.856-2l-90.864-86.656 0.032-0.528L532.688 7.424a23.088 23.088 0 0 0-32.144-0.208L36.48 439.504c-0.736 0.672-1.44 1.408-2.096 2.208C22.528 455.696 16 474.256 16 493.792c0 41.312 29.312 74.912 65.36 74.912h22.336v428.8c0 14.64 10.976 26.496 24.48 26.496h771.648c13.552 0 24.496-11.856 24.496-26.496v-428.8h16.496c36.032 0 65.376-33.616 65.376-74.912 0-19.568-6.528-38.096-18.416-52.096z m-80.272 75.952h-30.08c-1.856 0 18.336-1.712 16.512-1.248-1.744-0.464-20.544 1.776-22.432 1.776-13.536 0-27.504-0.64-27.504 14l2 426.832h-656l-1.328-416.832c0-14.64-10.976-26.528-24.48-26.528H117.36c-8.88 0-16.4-10-16.4-21.84 0-5.84 1.696-11.216 4.8-15.344L514 94.176l405.024 386.16c3.104 4.16 4.88 9.6 4.88 15.44-0.032 11.872-7.536 21.872-16.4 21.872z" p-id="9438" fill="#35A9FE"></path><path d="M436.912 493.504c12.208 0 22.384-10.176 22.384-22.384v-42.736c0-12.208-10.176-22.384-22.384-22.384a22.56 22.56 0 0 0-22.384 22.384v44.768c0 12.208 10.16 20.352 22.384 20.352z m132.272 0a22.56 22.56 0 0 0 22.368-22.384v-42.736a22.56 22.56 0 0 0-22.368-22.384c-12.208 0-22.384 10.176-22.384 22.384v44.768c0 12.208 10.192 20.352 22.384 20.352zM369.76 515.888v199.424c0 36.624 30.528 67.152 67.152 67.152h132.272c36.64 0 67.152-30.528 67.152-67.152V515.888H369.76z m109.888 221.808v-87.504h-42.72l87.504-87.52v87.52h44.768l-89.552 87.504z m-42.736 87.504h22.384v89.552h87.504v-87.52h22.384v-22.368h-132.272v20.336z" p-id="9439" fill="#35A9FE"></path></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 t="1588125569698" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2175" xmlns:xlink="http://www.w3.org/1999/xlink" width="1024" height="1024"><defs><style type="text/css"></style></defs><path d="M432.276 485.945a191.795 191.795 0 0 1 21.436-10.604c54.977-23.177 113.527-23.177 170.541 15.132a28.444 28.444 0 0 0 31.721-47.218c-74.9-50.335-153.201-50.335-224.37-20.332-17.828 7.521-31.083 15.19-38.911 20.753a28.444 28.444 0 1 0 32.961 46.376c0.853-0.614 3.106-2.07 6.622-4.107zM323.243 349.662c3.151-2.048 6.929-4.358 11.275-6.884a389.325 389.325 0 0 1 43.543-21.526c111.57-47.036 231.538-47.036 347.727 31.027a28.444 28.444 0 1 0 31.722-47.218c-134.087-90.1-273.795-90.1-401.556-36.238a445.952 445.952 0 0 0-49.926 24.712c-8.966 5.2-15.394 9.353-19.046 11.947a28.444 28.444 0 0 0 32.961 46.376c0.41-0.296 1.513-1.047 3.3-2.196z m452.483 549.933c0 11.367-9.091 20.48-20.412 20.48h-475.25a20.503 20.503 0 0 1-20.412-20.593v-59.506h-56.889v59.506c0 42.757 34.589 77.482 77.301 77.482h475.25a77.255 77.255 0 0 0 77.3-77.369v-66.434h-56.888v66.446zM244.11 594.603h547.158c65.479 0 118.556 53.1 118.556 118.636 0 65.513-53.1 118.636-118.556 118.636H244.11c-65.479 0-118.556-53.1-118.556-118.636 0-65.525 53.1-118.636 118.556-118.636z m0 294.16h547.158c96.881 0 175.445-78.597 175.445-175.524 0-96.95-78.552-175.525-175.445-175.525H244.11c-96.882 0-175.445 78.586-175.445 175.525s78.552 175.525 175.445 175.525z" fill="#35A9FE" p-id="2176"></path><path d="M208.122 220.786c5.143-3.323 11.253-7.066 18.262-11.128a622.478 622.478 0 0 1 69.632-34.44c74.41-31.369 155.306-50.176 239.707-50.176 108.26 0 214.698 31.14 317.155 99.988a28.444 28.444 0 1 0 31.733-47.218c-112.037-75.298-229.547-109.66-348.888-109.66-92.615 0-180.827 20.504-261.803 54.648a679.105 679.105 0 0 0-76.026 37.615c-13.54 7.828-23.131 14.04-28.445 17.818a28.444 28.444 0 0 0 32.962 46.364c0.83-0.58 2.742-1.888 5.711-3.811zM279.973 713.239a30.64 30.481 90 1 0 60.962 0 30.64 30.481 90 1 0-60.962 0zM487.208 713.239a30.64 30.481 90 1 0 60.962 0 30.64 30.481 90 1 0-60.962 0zM694.443 713.239a30.64 30.481 90 1 0 60.962 0 30.64 30.481 90 1 0-60.962 0z" fill="#35A9FE" p-id="2177"></path></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 t="1588124504993" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1975" xmlns:xlink="http://www.w3.org/1999/xlink" width="1024" height="1024"><defs><style type="text/css"></style></defs><path d="M416 795.392c31.978667 6.08 63.573333 16.746667 94.698667 31.936 28.949333-16.256 61.44-27.242667 97.301333-33.066667V320h-192v475.392z m-64-6.058667V320H192v498.581333C251.370667 799.146667 304.64 789.333333 352 789.333333zM128.341333 859.264A45.226667 45.226667 0 0 1 128 853.333333V320a64 64 0 0 1 64-64h640a64 64 0 0 1 64 64v533.333333c0 2.261333-0.106667 4.224-0.341333 5.952a32 32 0 0 1-44.586667 33.984C790.741333 866.56 731.136 853.333333 671.978667 853.333333c-57.749333 0-104.96 12.586667-142.336 37.333334a32 32 0 0 1-32.938667 1.450666C448.938667 866.154667 400.810667 853.333333 352 853.333333c-49.92 0-110.165333 13.397333-180.48 40.533334a32 32 0 0 1-43.178667-34.602667zM832 817.024V320h-160v469.333333c53.333333 0 106.666667 9.258667 160 27.690667zM160 128h704a32 32 0 0 1 0 64h-704a32 32 0 0 1 0-64z" fill="#35A9FE" p-id="1976"></path></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@ -0,0 +1,8 @@
<svg width="1024" height="1024" xmlns="http://www.w3.org/2000/svg" class="icon">
<defs>
<style type="text/css"/>
</defs>
<path id="svg_1" class="selected" fill="#1890FF" d="m659.62,443.729a44.144,44.144 0 0 1 -44.144,-44.144a104.842,104.842 0 0 0 -209.683,0a44.144,44.144 0 1 1 -88.288,0a193.13,193.13 0 1 1 386.259,0a44.144,44.144 0 0 1 -44.144,44.144z"/>
<path id="svg_2" class="selected" fill="#1890FF" d="m794.81,443.729a44.144,44.144 0 0 1 -44.143,-44.144a240.032,240.032 0 1 0 -480.065,0a44.144,44.144 0 0 1 -88.288,0a328.32,328.32 0 1 1 656.64,0a44.144,44.144 0 0 1 -44.143,44.144l-0.001,0z"/>
<path id="svg_3" class="selected" fill="#1890FF" d="m898.273,595.473l-342.115,0l0,-151.743a44.144,44.144 0 0 0 -88.288,0l0,151.744l-342.115,0a55.18,55.18 0 0 0 -55.18,55.18l0,246.93a55.18,55.18 0 0 0 55.18,55.18l772.518,0a55.18,55.18 0 0 0 55.18,-55.18l0,-246.93a55.18,55.18 0 0 0 -55.18,-55.18l0,-0.001zm-691.597,222.789a44.144,44.144 0 1 1 44.144,-44.144a44.144,44.144 0 0 1 -44.144,44.144zm133.784,0a44.144,44.144 0 1 1 44.144,-44.144a44.144,44.144 0 0 1 -44.144,44.144z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1588039572630" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9110" xmlns:xlink="http://www.w3.org/1999/xlink" width="1024" height="1024"><defs><style type="text/css"></style></defs><path d="M408.520306 659.194804l-176.006995-97.213166c-16.884392-9.465492-38.629442-3.581538-48.094935 12.791206-9.721317 16.372744-3.837362 37.350322 13.302855 46.815814l176.006995 97.213166c16.884392 9.465492 38.629442 3.581538 48.094935-12.791206 9.465492-16.628568 3.581538-37.350322-13.302855-46.815814z m0 0" fill="#35A9FE" p-id="9111"></path><path d="M818.862196 374.718381c16.884392-9.465492 23.024171-30.187246 13.302854-46.815814-9.721317-16.372744-31.210543-22.256699-48.094934-12.791206l-275.778403 152.471176-275.778402-152.471176c-16.884392-9.465492-38.629442-3.581538-48.094935 12.791206-9.721317 16.372744-3.837362 37.350322 13.302855 46.815814l279.615764 154.517769v330.013116c0 12.279558 6.651427 23.535819 17.651864 29.675598 11.000437 6.139779 24.303291 6.139779 35.303729 0 11.000437-6.139779 17.651864-17.39604 17.651864-29.675598V527.701205c0-1.023296-0.511648-2.046593-0.511648-3.069889l271.429392-149.912935z m0 0" fill="#35A9FE" p-id="9112"></path><path d="M964.681945 213.805009L570.968623 14.006371c-36.582849-18.675161-82.119543-18.675161-118.958216 0L58.808733 213.805009C22.481708 232.224346-0.030815 266.248954 0.225009 302.575979v423.900568c0 37.094498 23.024171 71.37493 59.862845 89.538443l393.457498 193.914683c36.071201 17.651864 80.07295 17.651864 116.14415 0l393.457498-193.914683c37.094498-18.419337 60.118668-52.443945 59.862845-89.538443V302.575979c0.511648-36.582849-22.000874-70.351633-58.3279-88.77097z m-5.116482 514.973955c0 12.535382-7.930548 24.047467-20.721754 30.187247L531.827533 954.927487c-12.535382 5.883955-27.629005 5.883955-40.164387 0L84.646969 758.966211c-12.791206-6.139779-20.721754-17.651864-20.721754-30.187247V300.529386c0-12.279558 7.674724-23.791643 20.210106-29.931422l406.760352-201.845232c12.535382-6.395603 28.396477-6.395603 40.93186 0L939.355357 270.597964c12.535382 6.139779 20.210106 17.651864 20.210106 29.931422v428.249578z m-14.837799-2.302417" fill="#35A9FE" p-id="9113"></path><path d="M803.512749 454.023859l-165.006558 94.3991c-22.768347 13.04703-41.187683 41.699332-41.187684 64.211855v189.054025c0 22.256699 18.419337 29.931422 41.187684 16.884392l165.006558-94.399101c22.768347-13.04703 41.187683-41.699332 41.187683-64.211854v-189.054025c0-22.256699-18.419337-29.931422-41.187683-16.884392z m0 0" fill="#35A9FE" p-id="9114"></path></svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1598402750051" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4376" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M512 512m-512 0a512 512 0 1 0 1024 0 512 512 0 1 0-1024 0Z" fill="#1A7AF8" p-id="4377"></path><path d="M334.08 128m42.666667 0l317.44 0q42.666667 0 42.666666 42.666667l0 640q0 42.666667-42.666666 42.666666l-317.44 0q-42.666667 0-42.666667-42.666666l0-640q0-42.666667 42.666667-42.666667Z" fill="#FFFFFF" p-id="4378"></path><path d="M374.613333 208.64h322.56v201.386667H374.613333zM334.08 530.773333h241.92v161.28H334.08z" fill="#1A7AF8" p-id="4379"></path><path d="M535.893333 611.413333m-120.746666 0a120.746667 120.746667 0 1 0 241.493333 0 120.746667 120.746667 0 1 0-241.493333 0Z" fill="#1A7AF8" p-id="4380"></path><path d="M213.333333 571.306667m21.333334 0l320 0q21.333333 0 21.333333 21.333333l0 37.973333q0 21.333333-21.333333 21.333334l-320 0q-21.333333 0-21.333334-21.333334l0-37.973333q0-21.333333 21.333334-21.333333Z" fill="#FFFFFF" p-id="4381"></path></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1598488960611" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9005" width="256" height="256" data-spm-anchor-id="a313x.7781069.0.i18" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M725.344 352.16a607.328 607.328 0 0 0-13.376-0.16h-50.944V168.864c0-21.888-19.36-40.544-44.32-40.544H300.64c-24.96 0-44.32 18.656-44.32 40.544v686.272c0 10.272 4.288 20.256 12.16 27.872 8.32 8.032 19.936 12.672 32.16 12.672h316.064c12.224 0 23.808-4.64 32.128-12.672 7.904-7.616 12.16-17.6 12.16-27.84V448h50.976c4.544 0 9.024-0.064 13.376-0.16v407.296a103.04 103.04 0 0 1-31.84 74.144c-20.352 19.68-48 30.72-76.8 30.72H300.64c-28.8 0-56.448-11.04-76.8-30.72A103.04 103.04 0 0 1 192 855.136V168.864C192 110.944 240.64 64 300.64 64h316.064c60 0 108.64 46.944 108.64 104.864v183.296z" p-id="9006" data-spm-anchor-id="a313x.7781069.0.i13" class="selected" fill="#1890FF"></path><path d="M446.4 311.488c-40.832 10.752-69.216 47.072-69.216 88.576 0 41.536 28.384 77.856 69.184 88.608a94.016 94.016 0 0 0 104.992-42.784c10.016-16.992 28.48-27.488 48.512-27.488l225.28 2.176v-41.12h-225.28c-20 0-38.496-8.192-48.512-25.184a94.016 94.016 0 0 0-104.96-42.784z m156.352 3.648h222.4c35.52 0 64.32 28.8 64.32 64.32v41.12a64.32 64.32 0 0 1-64.896 64.32l-220.384-2.112a158.4 158.4 0 0 1-174.176 68.064c-68.928-18.112-117.152-79.872-117.152-150.784 0-70.88 48.224-132.64 117.12-150.784a158.4 158.4 0 0 1 172.8 65.856z" p-id="9007" data-spm-anchor-id="a313x.7781069.0.i20" class="selected" fill="#1890FF"></path><path d="M426.656 661.344m32 0l0 0q32 0 32 32l0 85.344q0 32-32 32l0 0q-32 0-32-32l0-85.344q0-32 32-32Z" p-id="9008" data-spm-anchor-id="a313x.7781069.0.i19" class="selected" fill="#1890FF"></path></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 t="1588148967420" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3402" xmlns:xlink="http://www.w3.org/1999/xlink" width="1024" height="1024"><defs><style type="text/css"></style></defs><path d="M699.854735 371.805273L508.167192 549.066257 324.764207 372.376622c-12.712512-12.141163-30.852839-16.711954-47.70763-11.855489-16.854791 4.856465-29.852978 18.426001-34.138095 35.423629-4.142279 16.997629 0.999861 34.995118 13.712373 47.279119L473.457748 652.05189c18.711675 17.997489 48.278979 18.283164 67.419166 0.714186l225.682801-208.828009c13.141024-11.855489 18.854512-29.852978 15.140745-47.136282-3.856605-17.283303-16.711954-31.138513-33.566746-36.280652-17.140466-5.284977-35.42363-0.999861-48.278979 11.28414z m0 0" fill="#35A9FE" p-id="3403"></path><path d="M982.958097 313.099177C880.972325 70.990096 612.295522-54.420979 361.330534 22.996792 110.365546 100.271725-41.18474 355.236156 10.808006 612.628819c51.992747 257.392663 290.530897 433.51095 551.923002 407.371739C823.980276 993.861347 1022.952518 774.034872 1022.952518 511.357233c0.142837-67.990515-13.426698-135.552518-39.994421-198.258056zM804.26874 802.316641c-138.837774 138.837774-356.236016 160.263356-519.356116 51.135723C121.649686 744.467569 58.229962 535.353885 133.362338 354.093458c74.989538-181.403264 267.81978-284.388897 460.221509-246.108523 192.544567 38.280374 331.096666 207.2568 331.096666 403.515135 0.285674 109.127633-42.994002 213.827312-120.411773 290.816571z m0 0" fill="#35A9FE" p-id="3404"></path></svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1590482135471" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2785" xmlns:xlink="http://www.w3.org/1999/xlink" width="1024" height="1024"><defs><style type="text/css"></style></defs><path d="M718.933333 106.666667L469.333333 362.666667l320 106.666666-334.933333 313.6 108.8 59.733334L256 917.333333l57.6-315.733333 61.866667 108.8L576 512l-320-106.666667L533.333333 106.666667h185.6z" fill="#00BCD4" p-id="2786"></path></svg>

After

Width:  |  Height:  |  Size: 613 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 16 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1588125781397" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2588" xmlns:xlink="http://www.w3.org/1999/xlink" width="1024" height="1024"><defs><style type="text/css"></style></defs><path d="M889.4 448.6c0-0.3 0.1-0.7 0.1-0.9V55.4c0-19.8-16.2-37.2-36-37.7-20.9-0.5-37.9 16.4-37.9 37.2V448H207.1V55.4c0-19.8-16.2-37.2-36-37.7-20.9-0.5-37.9 16.4-37.9 37.2v392.8c0 0.3 0.1 0.7 0.1 0.9C67.5 453.4 15.7 507.8 15.7 575v304.1c0 70.4 57 127.3 127.3 127.3h738.2c70.4 0 127.3-57 127.3-127.3V575c-0.2-67.1-52.7-121.6-119.1-126.4z m45 429.7c0 29.2-23.6 52.8-52.8 52.8H776V726.5h9.2c11.6 0 21.1-9.5 21.1-21.1v-81.8c0-11.6-9.5-21.1-21.1-21.1h-81.8c-11.6 0-21.1 9.5-21.1 21.1v81.8c0 11.6 9.5 21.1 21.1 21.1H714v204.6H520V726.5h9.2c11.6 0 21.1-9.5 21.1-21.1v-81.8c0-11.6-9.5-21.1-21.1-21.1h-81.8c-11.6 0-21.1 9.5-21.1 21.1v81.8c0 11.6 9.5 21.1 21.1 21.1H458v204.6H326v-93.5l-62-62v-49.1h9.1c11.7 0 21.3-9.5 21.3-21.3v-81.6c0-11.8-9.5-21.3-21.3-21.3h-81.6c-11.8 0-21.2 9.5-21.2 21.3v81.6c0 11.8 9.5 21.3 21.2 21.3h10.4v74.9l62 62v67.7H142.4c-29.2 0-52.8-23.6-52.8-52.8V574.7c0-29.2 23.6-52.8 52.8-52.8h739.2c29.2 0 52.8 23.6 52.8 52.8v303.6z m0 0" fill="#35A9FE" p-id="2589"></path><path d="M413.1 283.2c-12.1 12.1-12.1 31.8 0 43.8 12.1 12.1 31.8 12.1 43.8 0 30.4-30.4 79.7-30.4 110.1 0 6.1 6.1 14 9.1 21.9 9.1 7.9 0 15.8-3 21.9-9.1 12.1-12.1 12.1-31.8 0-43.8-54.3-54.5-143.2-54.5-197.7 0z m0 0" fill="#35A9FE" p-id="2590"></path><path d="M653.8 271.5c7.9 0 15.8-3 21.9-9.1 12.1-12.1 12.1-31.8 0-43.8-87.4-87.5-240-87.5-327.4 0-12.1 12.2-12.1 31.8 0 43.8 12.1 12.1 31.8 12.1 43.8 0 64-64 175.6-64 239.6 0 6.2 6.1 14.1 9.1 22.1 9.1z m0 0" fill="#35A9FE" p-id="2591"></path><path d="M319.7 189.9c106.1-106.1 278.7-106.1 384.8 0 6.1 6.1 14 9.1 21.9 9.1 7.9 0 15.8-3 21.9-9.1 12.1-12.1 12.1-31.8 0-43.8C618 15.8 406 15.8 275.7 146.1c-12.1 12.1-12.1 31.8 0 43.8 12.2 12 31.8 12 44 0z m0 0" fill="#35A9FE" p-id="2592"></path></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 1024 1024" style="enable-background:new 0 0 1024 1024;" xml:space="preserve">
<style type="text/css">
.st0{fill:#06DCF3;}
</style>
<path class="st0" d="M839.3,343.9c-69.3,0-125.7-56.2-125.7-125.7S839.3,30,839.3,30S965,149,965,218.3
C965,287.7,908.8,343.9,839.3,343.9L839.3,343.9z M839.3,92.8c0,0-83.7,79.4-83.7,125.7s37.5,83.7,83.7,83.7
c46.3,0,83.7-37.4,83.7-83.7S839.3,92.8,839.3,92.8L839.3,92.8z M420.9,992.8C224.4,992.8,65,831.1,65,631.7S420.9,30,420.9,30
s355.7,402.2,355.7,601.7S617.4,992.8,420.9,992.8L420.9,992.8z M127.8,631.5c0,165,131,298.6,293,298.6
c161.7,0,293-133.6,293-298.6c0-165.1-293-517.7-293-517.7S127.8,466.3,127.8,631.5z M420.9,909.1c-150.2,0-272.2-121-272.2-270.3
c0-149.2,141.5-73.6,272.2,0c131,73.9,272-149.2,272,0C692.9,788.1,571,909.1,420.9,909.1z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1588125515273" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2038" xmlns:xlink="http://www.w3.org/1999/xlink" width="1024" height="1024"><defs><style type="text/css"></style></defs><path d="M43.119152 804.252027c0 121.372427 98.375546 219.747973 219.747972 219.747973s219.747973-98.375546 219.747973-219.747973c0-35.134124-8.304429-69.629445-24.274486-100.930754-14.692452-28.746101-36.411728-54.298191-62.60262-74.101061V129.676856C395.099189 58.131004 336.968185 0 265.422333 0H260.311915C188.127261 0 129.996257 58.131004 129.996257 129.676856v499.543356c-26.190892 19.80287-47.910168 45.354959-62.60262 74.101061C51.423581 734.622583 43.119152 769.117904 43.119152 804.252027z m146.924516-143.091703V129.676856c0-38.328135 31.30131-70.268247 70.268247-70.268247h5.74922c38.328135 0 70.268247 31.30131 70.268247 70.268247v531.483468l13.414848 8.943232c45.993762 29.384903 73.462258 79.850281 73.462258 134.148471 0 88.15471-71.545852 159.700561-159.700562 159.700562s-159.700561-71.545852-159.700561-159.700562c0-54.298191 27.468497-104.763568 73.462258-134.148471l12.776045-8.943232z" fill="#35A9FE" p-id="2039"></path><path d="M362.520274 810.001248c0-55.575795-44.716157-100.291953-100.291952-100.291953s-100.291953 44.716157-100.291953 100.291953 44.716157 100.291953 100.291953 100.291952 100.291953-44.716157 100.291952-100.291952z" fill="#35A9FE" p-id="2040"></path><path d="M225.816594 728.23456c0 20.441672 16.608858 37.05053 37.05053 37.05053 20.441672 0 37.05053-16.608858 37.05053-37.05053V327.705552c0-20.441672-16.608858-37.05053-37.05053-37.05053-20.441672 0-37.05053 16.608858-37.05053 37.05053V728.23456zM477.504679 111.151591h205.055521c13.414847 0 24.274485 10.859638 24.274485 24.274485s-10.859638 24.274485-24.274485 24.274485H477.504679c-13.414847 0-24.274485-10.859638-24.274486-24.274485 0.638802-13.414847 11.49844-24.274485 24.274486-24.274485zM477.504679 188.446663h173.754211c13.414847 0 24.274485 10.859638 24.274485 24.274485 0 13.414847-10.859638 24.274485-24.274485 24.274485H477.504679c-13.414847 0-24.274485-10.859638-24.274486-24.274485 0.638802-13.414847 11.49844-24.274485 24.274486-24.274485zM477.504679 265.102932h205.055521c13.414847 0 24.274485 10.859638 24.274485 24.274485s-10.859638 24.274485-24.274485 24.274486H477.504679c-13.414847 0-24.274485-10.859638-24.274486-24.274486 0.638802-13.414847 11.49844-24.274485 24.274486-24.274485zM477.504679 342.398004h173.754211c13.414847 0 24.274485 10.859638 24.274485 24.274485s-10.859638 24.274485-24.274485 24.274485H477.504679c-13.414847 0-24.274485-10.859638-24.274486-24.274485 0.638802-13.414847 11.49844-24.274485 24.274486-24.274485zM477.504679 419.693075h205.055521c13.414847 0 24.274485 10.859638 24.274485 24.274486 0 13.414847-10.859638 24.274485-24.274485 24.274485H477.504679c-13.414847 0-24.274485-10.859638-24.274486-24.274485 0.638802-13.414847 11.49844-24.274485 24.274486-24.274486z" fill="#35A9FE" p-id="2041"></path><path d="M727.276357 534.67748c-45.993762 145.00811-139.25889 205.694323-139.25889 282.989395 0 77.295072 62.60262 139.25889 139.25889 139.258889s139.25889-62.60262 139.258889-139.258889c0-77.295072-124.566438-279.795384-139.258889-282.989395z m252.326887 83.044292c-7.026825-31.940112-77.295072-106.041173-83.044292-106.041173-6.388022 64.519027-40.244541 98.375546-33.217717 130.315658 7.026825 31.940112 38.328135 53.020586 70.907049 45.993762 31.30131-6.388022 51.742982-38.328135 45.35496-70.268247z" fill="#35A9FE" p-id="2042"></path></svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1583467707880" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="41073" xmlns:xlink="http://www.w3.org/1999/xlink" width="256" height="256"><defs><style type="text/css"></style></defs><path d="M512 39.384615C250.092308 39.384615 39.384615 250.092308 39.384615 512s210.707692 472.615385 472.615385 472.615385 472.615385-210.707692 472.615385-472.615385S773.907692 39.384615 512 39.384615z m0 238.276923c33.476923 0 59.076923 25.6 59.076923 59.076924s-25.6 59.076923-59.076923 59.076923-59.076923-25.6-59.076923-59.076923 25.6-59.076923 59.076923-59.076924z m98.461538 413.538462c0 9.846154-7.876923 17.723077-19.692307 17.723077h-157.538462c-9.846154 0-19.692308-5.907692-19.692307-17.723077v-39.384615c0-9.846154 7.876923-21.661538 19.692307-21.661539 9.846154 0 19.692308-5.907692 19.692308-17.723077v-78.769231c0-9.846154-7.876923-21.661538-19.692308-21.661538-9.846154 0-19.692308-5.907692-19.692307-17.723077v-39.384615c0-9.846154 7.876923-21.661538 19.692307-21.661539h118.153846c9.846154 0 19.692308 9.846154 19.692308 21.661539v157.538461c0 9.846154 7.876923 17.723077 19.692308 17.723077 9.846154 0 19.692308 9.846154 19.692307 21.661539v39.384615z" p-id="41074" fill="#1296db"></path></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1588124564283" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2112" xmlns:xlink="http://www.w3.org/1999/xlink" width="1024" height="1024"><defs><style type="text/css"></style></defs><path d="M233.344 393.536c7.54-7.056 19.6-6.592 27.244 1.052 7.648 7.644 8.112 19.708 1.052 27.248-51.884 51.888-49.908 138.296 4.4 192.604 7.416 7.876 7.5 19.936 0.192 27.24-7.304 7.308-19.364 7.224-27.24-0.188-69.92-69.92-72.46-181.148-5.648-247.956z" fill="#35A9FE" p-id="2113"></path><path d="M175.124 337.436c5.06-5.06 12.556-6.908 19.668-4.852a21.808 21.808 0 0 1 14.816 14.816c2.056 7.116 0.208 14.612-4.848 19.668-81.976 81.976-78.856 218.472 6.956 304.28a21.448 21.448 0 0 1 6.328 14.628 19.56 19.56 0 0 1-5.688 14.348 19.56 19.56 0 0 1-14.34 5.672 21.448 21.448 0 0 1-14.616-6.328C81.24 597.52 77.544 435.016 175.12 337.436zM789.984 393.536c-7.54-7.056-19.6-6.592-27.248 1.052-7.64 7.644-8.108 19.708-1.048 27.248 51.884 51.888 49.908 138.296-4.4 192.604-7.416 7.876-7.5 19.936-0.196 27.24 7.308 7.308 19.368 7.224 27.24-0.188 69.924-69.92 72.46-181.148 5.652-247.956z" fill="#35A9FE" p-id="2114"></path><path d="M848.2 337.436c-5.056-5.06-12.552-6.908-19.664-4.852a21.808 21.808 0 0 0-14.82 14.816c-2.056 7.116-0.204 14.612 4.852 19.668 81.976 81.976 78.856 218.472-6.956 304.28a21.448 21.448 0 0 0-6.328 14.628 19.56 19.56 0 0 0 5.688 14.348 19.56 19.56 0 0 0 14.34 5.672 21.448 21.448 0 0 0 14.616-6.328c102.16-102.144 105.856-264.652 8.276-362.232zM521.52 318.756c-84.1 0-152.272-71.36-152.272-159.38S437.42 0 521.52 0s152.268 71.356 152.268 159.376c0 88.024-68.172 159.38-152.268 159.38z m0-63.752c50.452 0 91.36-42.812 91.36-95.628 0-52.812-40.908-95.624-91.36-95.624-50.46 0-91.364 42.812-91.364 95.624 0 52.816 40.904 95.628 91.36 95.628z" fill="#35A9FE" p-id="2115"></path><path d="M548.16 934.8v-196.828l45.556-12.42c3.312-0.904 6.08-2.024 9.856-4 7.72-4.024 13.52-9.616 18-17.332 6.16-10.628 9-21.58 11.764-56.3l16.64-208.984c0.12-1.54 0.184-3.088 0.184-4.632 0-30.808-23.86-55.784-53.296-55.784H445.388c-1.476 0-2.952 0.064-4.424 0.196-29.332 2.56-51.128 29.52-48.684 60.22l16.64 208.984c2.76 34.72 5.6 45.672 11.76 56.3 4.48 7.716 10.284 13.308 18.004 17.336 3.892 2.032 6.728 3.168 10.212 4.088l45.972 12.172V934.8c0 9.46 1.144 14.784 2.972 18.364 0.96 1.88 2 2.968 3.796 3.972 3.42 1.916 8.504 3.108 17.544 3.108h4.672c9.04 0 14.128-1.192 17.548-3.108 1.792-1 2.836-2.096 3.792-3.972 1.828-3.58 2.972-8.904 2.972-18.364z m60.912 0c0 19.972-3.536 35.448-10.172 48.432-6.632 12.988-16.372 23.18-28.776 30.124-12.408 6.944-27.192 10.644-46.272 10.644h-4.672c-19.08 0-33.86-3.7-46.268-10.64-12.408-6.948-22.144-17.14-28.78-30.128-6.636-12.984-10.168-28.46-10.168-48.428v-147.352c-8.552-2.264-15.512-5.22-22.46-8.844-18.008-9.4-32.44-23.3-42.88-41.3-10.444-18.004-16.612-36.48-20.4-84.092l-16.64-208.984c-5.24-65.792 41.468-123.568 104.32-129.048 3.156-0.276 6.32-0.412 9.484-0.412h151.48c63.068 0 114.2 53.516 114.2 119.532 0 3.312-0.132 6.624-0.4 9.928l-16.636 208.984c-3.792 47.616-9.96 66.088-20.4 84.092-10.44 18-24.876 31.9-42.88 41.3-6.736 3.512-13.484 6.4-21.68 8.636v147.56z" fill="#35A9FE" p-id="2116"></path></svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1591081256612" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4095" xmlns:xlink="http://www.w3.org/1999/xlink" width="1024" height="1024"><defs><style type="text/css"></style></defs><path d="M722.96 145.857c-116.348-109.215-305.572-109.215-421.898 0-115.132 108.113-116.325 283.32-3.488 392.805l67.523 126.09 53.28-25.132-71.752-134.077-3.375-3.195c-93.038-87.345-93.038-229.5 0-316.868 93.015-87.345 244.462-87.345 337.523 0 92.992 87.367 92.992 229.5 0 316.868l-75.532 137.228 53.235 25.222 67.928-126.113c112.86-109.463 111.667-284.715-3.442-392.828z m-333.9 561.488l7.155 55.598L634.85 735.83l-7.178-55.62-238.613 27.135z m0 84.015l7.155 55.598 238.635-27.067-7.178-55.687-238.613 27.157z m122.265 112.68c-16.47 0-29.835-12.577-29.835-27.99h-59.647c0 46.373 40.162 84.015 89.505 84.015s89.505-37.665 89.505-84.015h-59.692c-0.045 15.412-13.455 27.99-29.835 27.99zM332.99 343.88h59.67c0-61.785 53.505-112.028 119.295-112.028v-56.025c-98.662 0-178.965 75.375-178.965 168.053z" p-id="4096" fill="#35A9FE"></path></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1588148975709" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3672" xmlns:xlink="http://www.w3.org/1999/xlink" width="1024" height="1024"><defs><style type="text/css"></style></defs><path d="M652.43278 699.616683L475.171795 507.929139l176.689636-183.402985c12.141163-12.712512 16.711954-30.852839 11.855489-47.70763-4.856465-16.854791-18.426001-29.852978-35.42363-34.138094-16.997629-4.142279-34.995118 0.999861-47.279118 13.712372L372.186162 473.219696c-17.997489 18.711675-18.283164 48.278979-0.714186 67.419166l208.82801 225.682801c11.855489 13.141024 29.852978 18.854512 47.136281 15.140745 17.283303-3.856605 31.138513-16.711954 36.280653-33.566746 5.284977-16.997629 0.857023-35.42363-11.28414-48.278979z m0 0" fill="#35A9FE" p-id="3673"></path><path d="M982.958097 313.099177C880.972325 70.990096 612.295522-54.420979 361.330534 22.996792 110.365546 100.271725-41.18474 355.236156 10.808006 612.628819c51.992747 257.392663 290.530897 433.51095 551.923002 407.371739C823.980276 993.861347 1022.952518 774.034872 1022.952518 511.357233c0.142837-67.990515-13.426698-135.552518-39.994421-198.258056zM804.26874 802.316641c-138.837774 138.837774-356.236016 160.263356-519.356116 51.135723C121.649686 744.467569 58.229962 535.353885 133.362338 354.093458c74.989538-181.403264 267.81978-284.388897 460.221509-246.108523 192.544567 38.280374 331.096666 207.2568 331.096666 403.515135 0.285674 109.127633-42.994002 213.827312-120.411773 290.816571z m0 0" fill="#35A9FE" p-id="3674"></path></svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1588124700762" class="icon" viewBox="0 0 1053 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2249" xmlns:xlink="http://www.w3.org/1999/xlink" width="1053" height="1024"><defs><style type="text/css"></style></defs><path d="M1021.28 456.8a32 32 0 0 0-32 32A471.68 471.68 0 0 1 518.08 960a32 32 0 0 0 0 64 535.84 535.84 0 0 0 535.2-535.2 32 32 0 0 0-32-32z" fill="#35A9FE" p-id="2250"></path><path d="M518.08 802.08a32 32 0 0 0 0 64 375.84 375.84 0 0 0 375.2-375.36 32 32 0 0 0-64 0 311.68 311.68 0 0 1-311.2 311.36z" fill="#35A9FE" p-id="2251"></path><path d="M734.56 480.96A245.76 245.76 0 1 0 488.8 724.8a245.6 245.6 0 0 0 245.76-243.84z m-427.52 0A181.76 181.76 0 1 1 488.8 660.8a181.12 181.12 0 0 1-181.76-179.84zM700.16 297.28a32 32 0 0 0 22.4-9.12l102.88-101.28a32 32 0 1 0-44.8-45.6l-103.04 101.28a32 32 0 0 0 22.56 54.72zM247.04 288.96a32 32 0 1 0 44.8-45.6l-102.88-101.12A32 32 0 1 0 144 187.84zM475.52 206.4a32 32 0 0 0 32-32V32a32 32 0 0 0-64 0v142.4a32 32 0 0 0 32 32zM214.08 660.16l-103.04 101.12a32 32 0 0 0 44.96 45.76l102.88-101.12a32 32 0 0 0-44.8-45.76z" fill="#35A9FE" p-id="2252"></path><path d="M208 467.68a32 32 0 0 0-32-32H32a32 32 0 0 0 0 64h144a32 32 0 0 0 32-32z" fill="#35A9FE" p-id="2253"></path></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1578372037393" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6811" xmlns:xlink="http://www.w3.org/1999/xlink" width="256" height="256"><defs><style type="text/css"></style></defs><path d="M263.2 710.5c13.8 0 25-11.2 25-25s-11.2-25-25-25c-82.6 0-149.8-67.2-149.8-149.8 0-82.6 67.2-149.8 149.8-149.8h0.1c14.9 0 27.2-12 27.5-26.9 1.2-58.1 24.8-112.6 66.3-153.3 41.6-40.8 96.6-63.3 154.9-63.3h0.4c58.3 0 113.3 22.5 154.9 63.3 41.5 40.7 65.1 95.2 66.3 153.3 0.3 14.9 12.6 26.9 27.5 26.9h0.1c82.6 0 149.8 67.2 149.8 149.8 0 82.6-67.2 149.8-149.8 149.8-13.8 0-25 11.2-25 25s11.2 25 25 25c110.2 0 199.8-89.6 199.8-199.8 0-103-78.3-188.1-178.6-198.7-6.2-63.3-34.1-122-80.1-167.1-51-50-118.5-77.6-189.9-77.6h-0.4c-71.5 0-138.9 27.6-189.9 77.6-46 45.1-74 103.8-80.1 167.1-100.2 10.6-178.6 95.7-178.6 198.7 0 110.2 89.7 199.8 199.8 199.8z" fill="#35A9FE" p-id="6812"></path><path d="M517.1 226c-49 0-88.9 39.9-88.9 88.9 0 40.4 27 74.5 63.9 85.4v371.1c-21.3 9.2-36.2 30.4-36.2 55.1 0 33.1 26.9 60 60 60s60-26.9 60-60c0-23.7-13.8-44.3-33.8-54V400.3c36.9-10.8 63.9-45 63.9-85.4 0-49-39.9-88.9-88.9-88.9z m0 127.9c-21.5 0-38.9-17.5-38.9-38.9s17.5-38.9 38.9-38.9S556 293.6 556 315s-17.5 38.9-38.9 38.9zM351.5 382.7c-33.1 0-60 26.9-60 60 0 25.9 16.4 48 39.5 56.4v308c0 18.9-15.4 34.4-34.4 34.4H259c-10.8-36.9-45-63.9-85.4-63.9-49 0-88.9 39.9-88.9 88.9s39.9 88.9 88.9 88.9c40.4 0 74.5-27 85.4-63.9h37.6c46.5 0 84.4-37.8 84.4-84.4V494.9c18.2-10.3 30.5-29.8 30.5-52.3 0-33.1-26.9-59.9-60-59.9zM173.6 905.4c-21.5 0-38.9-17.5-38.9-38.9s17.5-38.9 38.9-38.9 38.9 17.5 38.9 38.9-17.4 38.9-38.9 38.9zM853.5 777.5c-40.4 0-74.5 27-85.4 63.9h-37.6c-18.9 0-34.4-15.4-34.4-34.4V497.9c21.4-9.2 36.5-30.4 36.5-55.2 0-33.1-26.9-60-60-60s-60 26.9-60 60c0 23.6 13.7 44.1 33.5 53.9v310.5c0 46.5 37.8 84.4 84.4 84.4h37.6c10.8 36.9 45 63.9 85.4 63.9 49 0 88.9-39.9 88.9-88.9s-39.8-89-88.9-89z m0 127.9c-21.5 0-38.9-17.5-38.9-38.9s17.5-38.9 38.9-38.9 38.9 17.5 38.9 38.9-17.4 38.9-38.9 38.9z" fill="#35A9FE" p-id="6813"></path></svg>

After

Width:  |  Height:  |  Size: 2.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="256px" height="256.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#35A9FE" d="M511.989333 895.997315c-32.747348 0-85.335109 0-85.335109 0L192.004007 1023.999979 192.004007 789.349762c-116.973101-82.113709-192.003996-199.961495-192.003996-341.361771C1.1e-05 200.580175 229.231448 0 511.989333 0s511.989322 200.580175 511.989322 447.98799C1023.999989 695.438474 794.768552 895.997315 511.989333 895.997315L511.989333 895.997315zM511.989333 63.979998c-247.407816 0-448.030658 171.928912-448.030658 384.007992 0 130.136042 76.524259 250.543881 192.046664 319.985326l0 142.232294 170.627551-78.209628c0 0 47.979665 0 85.335109 0 247.407816 0 448.030658-171.928912 448.030658-384.007992C960.019991 235.887576 759.397149 63.979998 511.989333 63.979998L511.989333 63.979998zM768.015995 511.989322c-35.371403 0-64.022666-28.651263-64.022666-64.022666s28.651263-64.022666 64.022666-64.022666c35.328735 0 63.979998 28.651263 63.979998 64.022666S803.34473 511.989322 768.015995 511.989322L768.015995 511.989322zM511.989333 511.989322c-35.371403 0-64.022666-28.651263-64.022666-64.022666s28.651263-64.022666 64.022666-64.022666c35.371403 0 64.022666 28.651263 64.022666 64.022666S547.360736 511.989322 511.989333 511.989322L511.989333 511.989322zM255.984005 511.989322c-35.328735 0-63.979998-28.651263-63.979998-64.001332s28.651263-64.022666 63.979998-64.022666c35.371403 0 64.022666 28.651263 64.022666 64.022666S291.334074 511.989322 255.984005 511.989322L255.984005 511.989322z" /></svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1590829622656" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8426" xmlns:xlink="http://www.w3.org/1999/xlink" width="1024" height="1024"><defs><style type="text/css"></style></defs><path d="M863.993 76.116H160.007C89.6 76.116 32 133.52 32 203.687v489.055c0 70.167 57.6 127.549 128.007 127.549h319.986v63.774H362.676c-17.083 0-32.007 14.902-32.007 31.899 0 17.018 14.924 31.898 32.007 31.898h298.648c17.083 0 32.007-14.88 32.007-31.898 0-17.019-14.924-31.899-32.007-31.899H544.007v-63.774h319.986C934.4 820.29 992 762.909 992 692.74V203.688c0-70.167-57.6-127.57-128.007-127.57z m64.014 616.626c0 36.13-27.73 63.774-64.014 63.774H160.007c-36.283 0-64.014-27.643-64.014-63.774V203.687c0-36.152 27.73-63.774 64.014-63.774h703.986c36.283 0 64.014 27.622 64.014 63.774v489.055z m-123.73-363.6l-170.684 233.89c-6.393 8.51-14.924 12.764-25.593 12.764s-19.2-6.392-25.593-14.901L437.317 346.16 270.93 603.44c-6.393 8.51-17.062 14.88-27.731 14.88-6.393 0-12.807-2.138-17.062-4.255-14.945-8.509-19.2-29.781-10.69-44.661l192-297.666c6.414-8.509 14.945-14.902 25.614-14.902 10.69 0 21.338 4.255 25.614 14.902l145.048 216.873 142.952-197.738c10.648-14.88 29.848-17.018 44.793-6.393 21.338 10.647 23.455 29.782 12.807 44.662z" p-id="8427" fill="#35A9FE"></path></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1579404681035" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2163" data-spm-anchor-id="a313x.7781069.0.i3" xmlns:xlink="http://www.w3.org/1999/xlink" width="256" height="256"><defs><style type="text/css"></style></defs><path d="M512 958.016c-119.648 0-232.128-46.368-316.736-130.56C110.624 743.2 64 631.2 64 512c0-119.168 46.624-231.2 131.232-315.424 84.608-84.192 197.088-130.56 316.736-130.56s232.128 46.368 316.704 130.56c84.672 84.224 131.264 196.256 131.264 315.392 0.032 119.2-46.592 231.232-131.264 315.456C744.128 911.616 631.648 958.016 512 958.016zM512 129.984c-102.624 0-199.072 39.744-271.584 111.936C167.936 314.048 128 409.984 128 512c0 102.016 39.904 197.952 112.384 270.048 72.512 72.192 168.96 111.936 271.584 111.936 102.592 0 199.072-39.744 271.584-111.936 72.48-72.16 112.416-168.064 112.384-270.08 0-102.016-39.904-197.92-112.384-270.016C711.072 169.76 614.592 129.984 512 129.984zM736 480l-192 0L544 288c0-17.664-14.336-32-32-32s-32 14.336-32 32l0 192L288 480c-17.664 0-32 14.336-32 32s14.336 32 32 32l192 0 0 192c0 17.696 14.336 32 32 32s32-14.304 32-32l0-192 192 0c17.696 0 32-14.336 32-32S753.696 480 736 480z" p-id="2164" fill="#ffffff"></path></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 t="1588040084926" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9437" xmlns:xlink="http://www.w3.org/1999/xlink" width="1024" height="1024"><defs><style type="text/css"></style></defs><path d="M987.776 441.696a22.304 22.304 0 0 0-1.856-2l-90.864-86.656 0.032-0.528L532.688 7.424a23.088 23.088 0 0 0-32.144-0.208L36.48 439.504c-0.736 0.672-1.44 1.408-2.096 2.208C22.528 455.696 16 474.256 16 493.792c0 41.312 29.312 74.912 65.36 74.912h22.336v428.8c0 14.64 10.976 26.496 24.48 26.496h771.648c13.552 0 24.496-11.856 24.496-26.496v-428.8h16.496c36.032 0 65.376-33.616 65.376-74.912 0-19.568-6.528-38.096-18.416-52.096z m-80.272 75.952h-30.08c-1.856 0 18.336-1.712 16.512-1.248-1.744-0.464-20.544 1.776-22.432 1.776-13.536 0-27.504-0.64-27.504 14l2 426.832h-656l-1.328-416.832c0-14.64-10.976-26.528-24.48-26.528H117.36c-8.88 0-16.4-10-16.4-21.84 0-5.84 1.696-11.216 4.8-15.344L514 94.176l405.024 386.16c3.104 4.16 4.88 9.6 4.88 15.44-0.032 11.872-7.536 21.872-16.4 21.872z" p-id="9438" fill="#35A9FE"></path><path d="M436.912 493.504c12.208 0 22.384-10.176 22.384-22.384v-42.736c0-12.208-10.176-22.384-22.384-22.384a22.56 22.56 0 0 0-22.384 22.384v44.768c0 12.208 10.16 20.352 22.384 20.352z m132.272 0a22.56 22.56 0 0 0 22.368-22.384v-42.736a22.56 22.56 0 0 0-22.368-22.384c-12.208 0-22.384 10.176-22.384 22.384v44.768c0 12.208 10.192 20.352 22.384 20.352zM369.76 515.888v199.424c0 36.624 30.528 67.152 67.152 67.152h132.272c36.64 0 67.152-30.528 67.152-67.152V515.888H369.76z m109.888 221.808v-87.504h-42.72l87.504-87.52v87.52h44.768l-89.552 87.504z m-42.736 87.504h22.384v89.552h87.504v-87.52h22.384v-22.368h-132.272v20.336z" p-id="9439" fill="#35A9FE"></path></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 t="1590478482401" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2071" xmlns:xlink="http://www.w3.org/1999/xlink" width="1024" height="1024"><defs><style type="text/css"></style></defs><path d="M688.6 165.4l0 102c88.4 58.6 147.6 159.8 147.6 275 0 181.4-145.4 328.4-325 328.4S186 723.8 186 542.4c-0.2-115.2 59.2-216.6 147.6-275.2L333.6 166C195 233 98 376.8 98 543.2c0 230.6 185.4 417.8 413.8 417.8 228.4 0 413.6-187 413.6-417.8C925.4 376.6 829 232.4 688.6 165.4z" p-id="2072" fill="#d81e06"></path><path d="M511 482.8c32.6 0 59.8-26.8 59.8-59.6L570.8 124.6c0-33-27.2-59.6-59.8-59.6-32.6 0-59.8 26.8-59.8 59.6l0 298.4C451.4 456 478.6 482.8 511 482.8z" p-id="2073" fill="#d81e06"></path></svg>

After

Width:  |  Height:  |  Size: 875 B

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1598237522610" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="12795" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M471.771429 615.497143l5.632 4.900571 51.785142 51.712 51.638858-51.712a54.857143 54.857143 0 0 1 82.505142 71.972572l-4.900571 5.632-51.785143 51.712 51.785143 51.712a54.857143 54.857143 0 0 1-71.972571 82.505143l-5.632-4.900572-51.712-51.712-51.712 51.712a54.857143 54.857143 0 0 1-82.505143-71.972571l4.900571-5.632 51.785143-51.785143-51.785143-51.638857a54.857143 54.857143 0 0 1 71.972572-82.505143zM529.115429 365.714286a311.442286 311.442286 0 0 1 281.380571 178.468571 54.857143 54.857143 0 0 1-95.670857 53.394286l-3.657143-6.582857a201.728 201.728 0 0 0-182.125714-115.565715 201.801143 201.801143 0 0 0-181.394286 114.102858 54.857143 54.857143 0 0 1-98.816-47.542858A311.515429 311.515429 0 0 1 529.115429 365.714286z m0-219.428572c184.466286 0 352.768 95.085714 449.097142 248.32a54.857143 54.857143 0 0 1-92.818285 58.368A420.132571 420.132571 0 0 0 529.115429 256a420.132571 420.132571 0 0 0-354.889143 194.706286 54.857143 54.857143 0 1 1-92.452572-59.026286A529.846857 529.846857 0 0 1 529.115429 146.285714z" fill="#F73E3E" p-id="12796"></path></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1590478482401" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2071" xmlns:xlink="http://www.w3.org/1999/xlink" width="1024" height="1024"><defs><style type="text/css"></style></defs><path d="M688.6 165.4l0 102c88.4 58.6 147.6 159.8 147.6 275 0 181.4-145.4 328.4-325 328.4S186 723.8 186 542.4c-0.2-115.2 59.2-216.6 147.6-275.2L333.6 166C195 233 98 376.8 98 543.2c0 230.6 185.4 417.8 413.8 417.8 228.4 0 413.6-187 413.6-417.8C925.4 376.6 829 232.4 688.6 165.4z" p-id="2072" fill="#1afa29"></path><path d="M511 482.8c32.6 0 59.8-26.8 59.8-59.6L570.8 124.6c0-33-27.2-59.6-59.8-59.6-32.6 0-59.8 26.8-59.8 59.6l0 298.4C451.4 456 478.6 482.8 511 482.8z" p-id="2073" fill="#1afa29"></path></svg>

After

Width:  |  Height:  |  Size: 875 B

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 200 200" style="enable-background:new 0 0 200 200;" xml:space="preserve">
<style type="text/css">
.st0{fill:#71C438;}
</style>
<path class="st0" d="M103.3,71.4c23.5,0,44.9,13.6,55,34.9c2.6,5.3,0.4,11.7-4.9,14.3c-4.9,2.4-10.9,0.7-13.8-3.9l-0.7-1.3
c-6.5-13.8-20.3-22.6-35.6-22.6c-15.1,0-28.9,8.7-35.4,22.3c-2.7,5.2-9.2,7.3-14.5,4.6c-5-2.6-7.1-8.7-4.8-13.8
C58.7,84.8,80,71.5,103.3,71.4z M103.3,28.6c36,0,68.9,18.6,87.7,48.5c3,5.1,1.2,11.7-3.9,14.6c-4.9,2.8-11.1,1.4-14.2-3.2
c-15-24-41.3-38.5-69.6-38.5C75.3,50,49.1,64.3,34,88c-3.1,5.1-9.7,6.7-14.7,3.6s-6.7-9.7-3.6-14.7c0.1-0.1,0.2-0.3,0.2-0.4
C35,46.6,67.9,28.5,103.3,28.6z M126.8,141.8c0,12.9-10.4,23.3-23.3,23.3s-23.3-10.4-23.3-23.3s10.4-23.3,23.3-23.3
S126.8,128.9,126.8,141.8z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save