Commit f68760ee authored by 李成龙's avatar 李成龙

增加菜单导航

parents
module.exports = {
zip: 'command-1.1.1.zip', // default
extra: ['amos.config.js','favicon.ico'],
dirs:[
{fromDir: 'src/assets/**',toDir: 'released/src/assets/'},
{fromDir: 'src/themes/**',toDir: 'released/themes/'},
{fromDir: 'extra/**',toDir: 'released/extra/'},
{fromDir: 'IMSDK/**',toDir: 'released/IMSDK/'},
{fromDir: 'src/_mock/**',toDir: 'released/src/_mock/'}
],
nonDist: true
};
# http://editorconfig.org
#这个文件用来配置当前整个项目的格式化参数
#需要安装EditorConfig for VS Code 插件
# A special property that should be specified at the top of the file outside of
# any sections. Set to true to stop .editor config file search on current file
root = true
# Unix-style newlines with a newline ending every file
[*]
# Indentation style
# Possible values - tab, space
# 缩进风格
# 可选的值为- tab, space
indent_style = space
# Indentation size in single-spaced characters
# Possible values - an integer, tab
# 缩进几个tab ,空格
indent_size = 2
# Line ending file format
# Possible values - lf, crlf, cr
end_of_line = lf
# File character encoding
# Possible values - latin1, utf-8, utf-16be, utf-16le
# 设置编码
charset = utf-8
# Denotes whether to trim whitespace at the end of lines
# Possible values - true, false
trim_trailing_whitespace = true
# Denotes whether file should end with a newline
# Possible values - true, false
insert_final_newline = true
# Matches the exact files either package.json or .travis.yml
[{package.json,.travis.yml}]
indent_style = space
indent_size = 4
webpack.config*.js
node_modules/
**/node_modules/**
module.exports = {
extends: 'eslint-config-ray',
globals: {
location: true
}
}
node_modules
\ No newline at end of file
package-lock=false
save=false
registry=http://172.16.11.26:9696/
sass_binary_site=http://172.16.11.26:8888/node-sass
node_modules
lib
src/assets/
{
"printWidth": 160,
"tabWidth": 2,
"useTabs": false,
"semi": true,
"singleQuote": true,
"parser": "babylon",
"trailingComma": "none",
"bracketSpacing": true,
"jsxBracketSameLine": false,
"arrowParens": "avoid",
"requirePragma": false,
"proseWrap": "preserve",
"overrides": [
{
"files": ["*.json", ".eslintrc", ".tslintrc", ".prettierrc", ".tern-project", ".travis.yml"],
"options": {
"parser": "json",
"tabWidth": 2
}
},
{
"files": "*.css",
"options": {
"parser": "css",
"tabWidth": 2
}
},
{
"files": "*.{sass,scss}",
"options": {
"parser": "scss",
"tabWidth": 2
}
},
{
"files": "*.less",
"options": {
"parser": "less",
"tabWidth": 2
}
},
{
"files": "*.ts",
"options": {
"parser": "typescript"
}
}
]
}
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>newOneMapView</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>com.aptana.ide.core.unifiedBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>com.aptana.projects.webnature</nature>
<nature>com.aptana.ruby.core.rubynature</nature>
</natures>
</projectDescription>
**/node_modules/**
lib/
dist/
released/
src/assets/
**/*.js
{
"extends": "stylelint-config-ray"
}
/**
* amos 系统配置信息
* @author ilex.h
*/
!(function() {
var Amos = {};
Amos.config = {
httpURI: {
//业务系统地址
baseURI: 'http://172.16.11.38:8899/',
//安全平台地址
securityBaseURI: 'http://172.16.10.72:10005/',
//基础平台
loginURI: 'http://172.16.10.72/'
},
// websocket 地址
wsURI: {
baseURI: 'ws://172.16.11.20:10600/'
},
// 外部链接地址
outterURI: {
},
// 系统配置信息 主要是为了区分各子系统
sysConf: {
needHeartBeat: true,
sysType: {
key: '',
text: ''
},
name: '电力消防综合管控平台'
}
};
// 配置日志系统
var LogConfig = {
isDebug: true // 调试模式时打印日志
};
window.Amos = Amos;
window.LogConfig = LogConfig;
window.demo = true;
})();
@echo off
title AmosBuild Guide
@echo author ilex.h
@echo Starting front end initialization Wizard...
npm run pub:build && npm run zip
//-----------------------------------------------------------
// notice: do not modify this file content except entry/alias
// you can modify some config such as
// `showProgress/tpl/productionSourceMap/productionGzip`
// and so on
//-----------------------------------------------------------
var path = require('path');
var distPath = path.resolve(__dirname, '..', 'dist');
// var projectRoot = path.resolve(__dirname, '../');
var assetsPath = function(_path) {
return path.posix.join('static', _path);
};
// ------------------------------------
// 入口点
// 👻 可修改
// ------------------------------------
var entry = {
app: './src/entry/index.js'
};
// ------------------------------------
// 添加webpack加载别名,用于导包重定向,优化打包以及代码
// 此处需要自己进行定义
// 👻可修改
// ------------------------------------
var alias = {
// MODEL: projectRoot + '/src/model',
// UTILS: projectRoot + '/src/utils',
// CONSTS: projectRoot + '/src/consts'
};
//-----------------------------------------------------------
// 👻 可修改,除非你知道该怎么修改
///-----------------------------------------------------------
module.exports = {
webpackConf: {
name: 'fireiot',
entry: entry,
alias: alias
},
showProgress: true,
context: __dirname,
tpl: 'tpl.html',
extractTextPath: assetsPath('css/[name].css?v=[contenthash:8]'),
visualizer: path.resolve(distPath, 'visualizer.html'),
prod: {
dll: {
fileName: './node_modules/amos-dll/common/prod/Amoslib.js', // 完整路径
manifest: 'amos-dll/common/prod/manifest.json',
outputPath: '/static/common/js', // 生成目录
publicPath: '/static/common/js' // 注入地址
},
toFile: path.resolve(distPath, 'index.html'),
assetsRoot: distPath,
assetsSubDirectory: 'static',
assetsPublicPath: '/',
productionSourceMap: false,
// Gzip off by default as many popular static hosts such as
// Surge or Netlify already gzip all static assets for you.
// Before setting to `true`, make sure to:
// npm install --save-dev compression-webpack-plugin
productionGzip: false,
productionGzipExtensions: ['js', 'css'],
output: {
path: distPath,
filename: assetsPath('js/[name].js?v=[chunkhash:8]'),
chunkFilename: assetsPath('js/chunk.[id].js?v=[chunkhash:8]')
}
},
dev: {
dll: {
fileName: './node_modules/amos-dll/common/dev/Amoslib.js', // 完整路径
manifest: 'amos-dll/common/dev/manifest.json',
outputPath: '/static/common/dev', // 生成目录
publicPath: '/static/common/dev' // 注入地址
},
toFile: 'index.html',
port: 9000,
assetsRoot: distPath,
assetsSubDirectory: 'static',
assetsPublicPath: '/',
staticPath: '/common',
proxyTable: {},
// CSS Sourcemaps off by default because relative paths are "buggy"
// with this option, according to the CSS-Loader README
// (https://github.com/webpack/css-loader#sourcemaps)
// In our experience, they generally work as expected,
// just be aware of this issue when enabling this option.
cssSourceMap: false,
output: {
path: distPath,
filename: assetsPath('js/[name].js'),
chunkFilename: assetsPath('js/chunk.[id].js')
}
},
test: {
dll: {
fileName: './node_modules/amos-dll/common/prod/Amoslib.js', // 完整路径
// fileName: require.resolve('amos-dll/common/prod/Amoslib.js'),
manifest: 'amos-dll/common/prod/manifest.json',
outputPath: '/static/common/js', // 生成目录
publicPath: '/static/common/js' // 注入地址
},
index: path.resolve(distPath, 'index.html'),
assetsRoot: distPath,
assetsSubDirectory: 'static',
assetsPublicPath: '/',
productionSourceMap: true,
// Gzip off by default as many popular static hosts such as
// Surge or Netlify already gzip all static assets for you.
// Before setting to `true`, make sure to:
// npm install --save-dev compression-webpack-plugin
productionGzip: false,
productionGzipExtensions: ['js', 'css']
}
};
@echo on
title clean svn by ilex.h
color 2f
mode con: cols=80 lines=25
@REM
@echo 正在清理SVN文件,请稍候......
@rem 循环删除当前目录及子目录下所有的SVN文件
@rem for /r . %%a in (.) do @if exist "%%a\.svn" @echo "%%a\.svn"
@for /r . %%a in (.) do @if exist "%%a\.svn" rd /s /q "%%a\.svn"
@echo 清理完毕!!!
@pause
\ No newline at end of file
import React, { Component } from 'react';
import logo from './amosinit.svg';
import './App.scss';
/**
* your app component
*
* @class App
* @extends {Component}
*/
class App extends Component {
render() {
return (
<div className="demo">
<div className="demo-header">
<img src={logo} className="demo-logo" alt="logo" />
<h2>Welcome to Amos init</h2>
</div>
<p className="demo-introduce">
To get started, edit <code>demo/App.js</code> and save to reload.
</p>
<div className="demo-introduce">
<p>
To Use advanced features, please copy all demo files to src/entry.
</p>
<p>
Then edit the webpack.config.js entry property, <code>./demo/index.js</code> to <code>./src/entry/index.js</code>.
</p>
<p>
such as add a compoment:
<code>$amos-init -c MyComponent</code>
</p>
</div>
</div>
);
}
}
export default App;
.demo {
text-align: center;
.demo-header {
background-color: #203957;
height: 150px;
padding: 20px;
color: white;
.demo-logo {
animation: demo-logo-spin infinite 20s linear;
height: 80px;
}
@keyframes demo-logo-spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
}
.demo-introduce {
font-size: large;
}
}
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="98.99" height="51.19" viewBox="0 0 98.99 51.19">
<defs>
<clipPath id="ff157d5e-0114-4e4b-be62-012a1f8e34ec">
<path d="M59.81,24.29A10.17,10.17,0,0,0,63,31.89,10.48,10.48,0,0,0,70.64,35a11,11,0,0,0,5.53-1.42,10.32,10.32,0,0,0,4-3.91,10.65,10.65,0,0,0,1.36-4.14v0c0-.43.06-.88.06-1.33s0-.74-.06-1.11a10.26,10.26,0,0,0-1.36-4.31,11,11,0,0,0-18.91,0,11,11,0,0,0-1.42,5.5v0Zm18.11-5.07a9.69,9.69,0,0,1,1.28,4.93,9.9,9.9,0,0,1-1.28,5,9.38,9.38,0,0,1-3.54,3.51A9.58,9.58,0,0,1,69.45,34a9.58,9.58,0,0,1-9.64-9.67v0a9.83,9.83,0,0,1,1.28-5,9.76,9.76,0,0,1,8.36-4.9,10,10,0,0,1,8.48,4.85Z" style="fill: none;clip-rule: evenodd"/>
</clipPath>
</defs>
<title>init</title>
<g id="ae38a82c-b9ad-4e88-8dc7-08809805a3bb" data-name="tucen-02">
<g id="5bd1e668-551a-462e-8e37-877333a603c1" data-name="tucen-01">
<g id="32bf0241-0dac-4bcc-a6ad-fd2a54c5ac19" data-name="bainzu">
<path d="M70.75,39.74a.6.6,0,0,1-.45-.2.71.71,0,0,1-.23-.51.7.7,0,0,1,.23-.48.64.64,0,0,1,.45-.17.79.79,0,0,1,.51.17.69.69,0,0,1-.51,1.19ZM70.36,51V42h.85v9Zm12.19,0V45.78c0-2.15-.77-3.23-2.32-3.23a2.65,2.65,0,0,0-2.1.94,3.4,3.4,0,0,0-.85,2.38V51h-.85V42h.85v1.64h0a3.3,3.3,0,0,1,3.09-1.87,2.65,2.65,0,0,1,2.21,1,4.22,4.22,0,0,1,.79,2.78V51Zm6.32-11.28a.66.66,0,0,1-.48-.2.68.68,0,0,1-.2-.51.66.66,0,0,1,.2-.48.72.72,0,0,1,.48-.17.77.77,0,0,1,.48.17.58.58,0,0,1,.2.48.68.68,0,0,1-.2.51.62.62,0,0,1-.48.2ZM88.44,51V42h.85v9Zm9.69-.11a2.8,2.8,0,0,1-1.19.28c-1.36,0-2-.79-2-2.38v-6H93.29V42h1.64V39.69l.82-.28V42h2.38v.77H95.75V48.7A2.33,2.33,0,0,0,96,50a1.16,1.16,0,0,0,1,.43,2.16,2.16,0,0,0,1.08-.34Z" style="fill: #036eb7"/>
<path d="M11.4,12.73l10.69,22.9H19.62L16,28.09H6.12L2.55,35.63H0l10.8-22.9Zm-.28,4.79L7.17,25.85H15Z" style="fill: #036eb7"/>
<polygon points="26.36 35.63 29.54 12.73 30.02 12.73 39.34 31.49 48.59 12.73 48.95 12.73 52.24 35.63 50.03 35.63 47.73 19.22 39.6 35.63 39.01 35.63 30.81 19.11 28.63 35.63 26.36 35.63" style="fill: #036eb7"/>
<path d="M69.34,12.16A11.77,11.77,0,0,1,78,15.62a11.51,11.51,0,0,1,3.51,8.53,12,12,0,0,1-12,12,11.67,11.67,0,0,1-8.59-3.49,11.52,11.52,0,0,1-3.51-8.45A12.21,12.21,0,0,1,59,18.14a11.34,11.34,0,0,1,4.34-4.39,11.57,11.57,0,0,1,6-1.59Zm.11,2.21a9.76,9.76,0,0,0-8.36,4.9,9.83,9.83,0,0,0-1.28,5A9.58,9.58,0,0,0,69.45,34a9.58,9.58,0,0,0,4.93-1.3,9.38,9.38,0,0,0,3.54-3.51,9.9,9.9,0,0,0,1.28-5,9.77,9.77,0,0,0-9.75-9.78Z" style="fill: #036eb7;fill-rule: evenodd"/>
<path d="M85.55,31.32l2-1.16c1.36,2.52,2.95,3.8,4.73,3.8a4.45,4.45,0,0,0,2.18-.54A3.6,3.6,0,0,0,96,32a3.51,3.51,0,0,0,.54-1.9,3.81,3.81,0,0,0-.79-2.27,17.91,17.91,0,0,0-3.91-3.66A18.7,18.7,0,0,1,88.21,21,5.62,5.62,0,0,1,87,17.52a5.27,5.27,0,0,1,.71-2.72,5,5,0,0,1,2-1.93,5.58,5.58,0,0,1,2.81-.71,6.09,6.09,0,0,1,3.06.79,10.3,10.3,0,0,1,3,2.95l-1.87,1.42a8.36,8.36,0,0,0-2.21-2.27,3.8,3.8,0,0,0-2-.54,3.3,3.3,0,0,0-2.3.82,2.84,2.84,0,0,0-.88,2.1,3.79,3.79,0,0,0,.31,1.45,5.34,5.34,0,0,0,1.13,1.5q.47.43,3,2.3a17.79,17.79,0,0,1,4.11,3.91A6.29,6.29,0,0,1,99,30a5.89,5.89,0,0,1-1.9,4.34,6.44,6.44,0,0,1-4.62,1.84,6.56,6.56,0,0,1-3.77-1.13,10.17,10.17,0,0,1-3.15-3.74Z" style="fill: #036eb7"/>
<path d="M36,10a24,24,0,0,1,6.38-4.79A28,28,0,0,1,56.66,1.36,27.63,27.63,0,0,1,76.59,9.58h0C71.06,3.74,62.62,0,53.12,0,43.4,0,34.78,3.91,29.28,10Z" style="fill: #036eb7;fill-rule: evenodd"/>
<path d="M56.66,49.58a27.18,27.18,0,0,1-22.34-11.2H27.21c5.24,7.51,14.88,12.53,25.91,12.53,4,0,11.28-1,14.6-3.54a28.5,28.5,0,0,1-11.06,2.21Z" style="fill: #036eb7;fill-rule: evenodd"/>
<path d="M64.18,41.84A18.82,18.82,0,0,1,55.33,44a22.45,22.45,0,0,1-9.69-2.18h0a19.49,19.49,0,0,0,22.08,0Z" style="fill: #ff6e00;fill-rule: evenodd"/>
<g style="clip-path: url(#ff157d5e-0114-4e4b-be62-012a1f8e34ec)">
<polygon points="81.38 34.98 59.61 34.98 59.95 13.38 81.72 13.38 81.38 34.98" style="fill: #ff6e00;fill-rule: evenodd"/>
<path d="M65.68,24.92a.09.09,0,0,0,.09.09.09.09,0,1,0,0-.17.09.09,0,0,0-.09.09Z" style="fill-rule: evenodd"/>
<path d="M65.71,24.92a.06.06,0,1,1,.06.06.06.06,0,0,1-.06-.06Zm-.06,0a.11.11,0,0,0,.11.14.14.14,0,1,0,0-.28.13.13,0,0,0-.11.14Z" style="fill: #010000;fill-rule: evenodd"/>
<path d="M65.65,24.92c0-.06.06-.11.11-.11a.11.11,0,1,1-.11.11Zm-.06,0c0,.11.06.2.17.2a.2.2,0,0,0,0-.4.19.19,0,0,0-.17.2Z" style="fill: #020100;fill-rule: evenodd"/>
<path d="M65.62,24.92c0-.11.06-.17.14-.17a.15.15,0,0,1,.17.17.18.18,0,0,1-.17.17.16.16,0,0,1-.14-.17Zm-.09,0a.23.23,0,0,0,.23.26.26.26,0,1,0,0-.51.25.25,0,0,0-.23.26Z" style="fill: #020100;fill-rule: evenodd"/>
<path d="M65.57,24.92a.2.2,0,0,1,.2-.23.21.21,0,0,1,.23.23.24.24,0,0,1-.23.23.22.22,0,0,1-.2-.23Zm-.09,0a.29.29,0,0,0,.28.31.31.31,0,1,0,0-.62.31.31,0,0,0-.28.31Z" style="fill: #030100;fill-rule: evenodd"/>
<path d="M65.51,24.92a.26.26,0,0,1,.26-.28.27.27,0,0,1,.28.28.28.28,0,0,1-.28.28.26.26,0,0,1-.26-.28Zm-.09,0a.35.35,0,0,0,.34.37.37.37,0,1,0,0-.74.37.37,0,0,0-.34.37Z" style="fill: #040200;fill-rule: evenodd"/>
<path d="M65.45,24.92a.32.32,0,0,1,.31-.34.33.33,0,0,1,.34.34.34.34,0,0,1-.34.34.32.32,0,0,1-.31-.34Zm-.09,0a.41.41,0,0,0,.4.43.46.46,0,0,0,.43-.43.41.41,0,1,0-.82,0Z" style="fill: #050200;fill-rule: evenodd"/>
<path d="M65.4,24.92a.38.38,0,0,1,.37-.4.39.39,0,0,1,.4.4.43.43,0,0,1-.4.4.38.38,0,0,1-.37-.4Zm-.09,0a.46.46,0,1,0,.48-.51.5.5,0,0,0-.48.51Z" style="fill: #050200;fill-rule: evenodd"/>
<path d="M65.34,24.92a.44.44,0,1,1,.88,0,.49.49,0,0,1-.45.45.44.44,0,0,1-.43-.45Zm-.09,0a.51.51,0,1,0,1,0,.5.5,0,0,0-.48-.57.56.56,0,0,0-.54.57Z" style="fill: #060300;fill-rule: evenodd"/>
<path d="M65.28,24.92a.53.53,0,0,1,.51-.54.49.49,0,0,1,.45.54.48.48,0,1,1-1,0Zm-.09,0a.57.57,0,1,0,.6-.62.62.62,0,0,0-.6.62Z" style="fill: #070300;fill-rule: evenodd"/>
<path d="M65.23,24.92a.59.59,0,0,1,.57-.6.58.58,0,0,1,0,1.16.54.54,0,0,1-.54-.57Zm-.09,0a.63.63,0,1,0,1.25,0,.64.64,0,0,0-.6-.68.71.71,0,0,0-.65.68Z" style="fill: #080300;fill-rule: evenodd"/>
<path d="M65.17,24.92a.65.65,0,0,1,.62-.65.64.64,0,1,1-.62.65Zm-.09,0a.68.68,0,1,0,1.36,0,.7.7,0,0,0-.65-.74.77.77,0,0,0-.71.74Z" style="fill: #080400;fill-rule: evenodd"/>
<path d="M65.11,24.92a.72.72,0,0,1,.68-.71.71.71,0,1,1-.68.71Zm-.06,0a.74.74,0,0,0,.71.79.78.78,0,0,0,.74-.79.73.73,0,1,0-1.45,0Z" style="fill: #090400;fill-rule: evenodd"/>
<path d="M65.08,24.92a.7.7,0,1,1,.68.77.69.69,0,0,1-.68-.77Zm-.09,0a.8.8,0,0,0,.77.85.84.84,0,0,0,.79-.85.78.78,0,1,0-1.56,0Z" style="fill: #0a0400;fill-rule: evenodd"/>
<path d="M65,24.92a.75.75,0,1,1,.74.82.75.75,0,0,1-.74-.82Zm-.09,0a.84.84,0,0,0,.82.91.9.9,0,0,0,.85-.91.84.84,0,1,0-1.67,0Z" style="fill: #0b0500;fill-rule: evenodd"/>
<path d="M65,24.92a.85.85,0,0,1,.82-.88.83.83,0,0,1,.79.88.85.85,0,0,1-.82.88.81.81,0,0,1-.79-.88Zm-.09,0a.9.9,0,0,0,.88,1,1,1,0,0,0,.91-1,.9.9,0,1,0-1.79,0Z" style="fill: #0c0500;fill-rule: evenodd"/>
<path d="M64.91,24.92a.91.91,0,0,1,.88-.94.89.89,0,0,1,.85.94.93.93,0,0,1-.88.94.89.89,0,0,1-.85-.94Zm-.09,0a1,1,0,0,0,.94,1,1,1,0,0,0,1-1,1,1,0,1,0-1.9,0Z" style="fill: #0c0500;fill-rule: evenodd"/>
<path d="M64.86,24.92a1,1,0,0,1,.94-1,1,1,0,0,1,.91,1,1,1,0,0,1-.94,1,1,1,0,0,1-.91-1Zm-.09,0a1,1,0,0,0,1,1.08,1.09,1.09,0,0,0,1-1.08,1,1,0,1,0-2,0Z" style="fill: #0d0600;fill-rule: evenodd"/>
<path d="M64.8,24.92a1,1,0,0,1,1-1,1,1,0,0,1,1,1,1.06,1.06,0,0,1-1,1,1,1,0,0,1-1-1Zm-.09,0a1.09,1.09,0,0,0,1,1.13,1.1,1.1,0,0,0,1-1.13,1.06,1.06,0,0,0-1-1.13,1.11,1.11,0,0,0-1.08,1.13Z" style="fill: #0e0600;fill-rule: evenodd"/>
<path d="M64.74,24.92a1.08,1.08,0,0,1,1-1.11,1,1,0,0,1,1,1.11,1,1,0,1,1-2,0Zm-.09,0a1.15,1.15,0,0,0,1.11,1.19,1.16,1.16,0,0,0,1.11-1.19,1.12,1.12,0,0,0-1.08-1.19,1.19,1.19,0,0,0-1.13,1.19Z" style="fill: #0f0600;fill-rule: evenodd"/>
<path d="M64.69,24.92a1.16,1.16,0,0,1,1.11-1.16,1.08,1.08,0,0,1,1,1.16,1.08,1.08,0,1,1-2.15,0Zm-.09,0a1.21,1.21,0,0,0,1.16,1.25,1.22,1.22,0,0,0,1.16-1.25,1.17,1.17,0,0,0-1.13-1.25,1.23,1.23,0,0,0-1.19,1.25Z" style="fill: #0f0700;fill-rule: evenodd"/>
<path d="M64.63,24.92a1.22,1.22,0,0,1,1.16-1.22,1.14,1.14,0,0,1,1.11,1.22,1.14,1.14,0,1,1-2.27,0Zm-.09,0a1.27,1.27,0,0,0,1.22,1.3A1.29,1.29,0,0,0,67,24.92a1.21,1.21,0,0,0-1.19-1.3,1.29,1.29,0,0,0-1.25,1.3Z" style="fill: #100700;fill-rule: evenodd"/>
<path d="M64.57,24.92a1.28,1.28,0,0,1,1.22-1.28A1.2,1.2,0,0,1,67,24.92a1.24,1.24,0,0,1-1.19,1.28,1.22,1.22,0,0,1-1.19-1.28Zm-.06,0a1.27,1.27,0,0,0,1.25,1.36A1.33,1.33,0,0,0,67,24.92a1.29,1.29,0,0,0-1.25-1.36,1.31,1.31,0,0,0-1.28,1.36Z" style="fill: #110700;fill-rule: evenodd"/>
<path d="M64.52,24.92a1.34,1.34,0,0,1,1.28-1.33A1.27,1.27,0,0,1,67,24.92a1.3,1.3,0,0,1-1.25,1.33,1.28,1.28,0,0,1-1.25-1.33Zm-.06,0a1.33,1.33,0,0,0,1.3,1.42,1.39,1.39,0,0,0,1.33-1.42,1.35,1.35,0,0,0-1.3-1.42,1.37,1.37,0,0,0-1.33,1.42Z" style="fill: #120800;fill-rule: evenodd"/>
<path d="M64.49,24.92a1.36,1.36,0,0,1,1.3-1.39,1.33,1.33,0,0,1,1.28,1.39,1.36,1.36,0,0,1-1.3,1.39,1.3,1.3,0,0,1-1.28-1.39Zm-.09,0a1.38,1.38,0,0,0,1.33,1.47,1.47,1.47,0,0,0,1.42-1.47,1.41,1.41,0,0,0-1.36-1.47,1.43,1.43,0,0,0-1.39,1.47Z" style="fill: #120800;fill-rule: evenodd"/>
<path d="M64.43,24.92a1.42,1.42,0,0,1,1.36-1.45,1.39,1.39,0,0,1,1.33,1.45,1.44,1.44,0,0,1-1.39,1.45,1.35,1.35,0,0,1-1.3-1.45Zm-.09,0a1.44,1.44,0,0,0,1.39,1.53,1.53,1.53,0,0,0,1.47-1.53,1.49,1.49,0,0,0-1.42-1.56,1.52,1.52,0,0,0-1.45,1.56Z" style="fill: #130800;fill-rule: evenodd"/>
<path d="M64.37,24.92a1.49,1.49,0,0,1,1.42-1.53,1.46,1.46,0,0,1,1.39,1.53,1.5,1.5,0,0,1-1.45,1.5,1.41,1.41,0,0,1-1.36-1.5Zm-.09,0a1.49,1.49,0,0,0,1.45,1.59,1.59,1.59,0,0,0,1.53-1.59,1.55,1.55,0,0,0-1.47-1.62,1.58,1.58,0,0,0-1.5,1.62Z" style="fill: #140900;fill-rule: evenodd"/>
<path d="M64.32,24.92a1.55,1.55,0,0,1,1.47-1.59,1.5,1.5,0,0,1,1.45,1.59,1.54,1.54,0,0,1-1.5,1.56,1.46,1.46,0,0,1-1.42-1.56Zm-.09,0a1.57,1.57,0,0,0,1.5,1.64,1.65,1.65,0,0,0,1.59-1.64,1.61,1.61,0,0,0-1.53-1.67,1.64,1.64,0,0,0-1.56,1.67Z" style="fill: #150900;fill-rule: evenodd"/>
<path d="M64.26,24.92a1.61,1.61,0,0,1,1.53-1.64,1.57,1.57,0,0,1,1.5,1.64,1.6,1.6,0,0,1-1.56,1.62,1.52,1.52,0,0,1-1.47-1.62Zm-.09,0a1.63,1.63,0,0,0,1.56,1.7,1.65,1.65,0,0,0,1.62-1.7,1.62,1.62,0,0,0-1.56-1.73,1.7,1.7,0,0,0-1.62,1.73Z" style="fill: #160900;fill-rule: evenodd"/>
<path d="M64.2,24.92a1.69,1.69,0,0,1,1.59-1.7,1.63,1.63,0,0,1,1.56,1.7,1.66,1.66,0,0,1-1.62,1.67,1.6,1.6,0,0,1-1.53-1.67Zm-.09,0a1.71,1.71,0,0,0,1.62,1.79,1.74,1.74,0,0,0,1.67-1.79,1.68,1.68,0,0,0-1.62-1.79,1.76,1.76,0,0,0-1.67,1.79Z" style="fill: #160a00;fill-rule: evenodd"/>
<path d="M64.15,24.92a1.75,1.75,0,0,1,1.64-1.76,1.65,1.65,0,0,1,1.59,1.76,1.71,1.71,0,0,1-1.64,1.76,1.68,1.68,0,0,1-1.59-1.76Zm-.09,0a1.75,1.75,0,0,0,1.67,1.84,1.8,1.8,0,0,0,1.73-1.84,1.74,1.74,0,0,0-1.67-1.84,1.82,1.82,0,0,0-1.73,1.84Z" style="fill: #170a00;fill-rule: evenodd"/>
<path d="M64.09,24.92a1.81,1.81,0,0,1,1.7-1.81,1.71,1.71,0,0,1,1.64,1.81,1.77,1.77,0,0,1-1.7,1.81,1.74,1.74,0,0,1-1.64-1.81Zm-.09,0a1.81,1.81,0,0,0,1.73,1.9,1.86,1.86,0,0,0,1.79-1.9A1.8,1.8,0,0,0,65.79,23,1.88,1.88,0,0,0,64,24.92Z" style="fill: #180a00;fill-rule: evenodd"/>
<path d="M64,24.92A1.87,1.87,0,0,1,65.79,23a1.77,1.77,0,0,1,1.7,1.87,1.83,1.83,0,0,1-1.76,1.87A1.8,1.8,0,0,1,64,24.92Zm-.09,0a1.87,1.87,0,0,0,1.79,2,1.94,1.94,0,0,0,1.84-2,1.84,1.84,0,0,0-1.79-2,1.94,1.94,0,0,0-1.84,2Z" style="fill: #190b00;fill-rule: evenodd"/>
<path d="M64,24.92A1.91,1.91,0,0,1,65.79,23a1.81,1.81,0,0,1,1.76,1.93,1.89,1.89,0,0,1-1.81,1.93A1.86,1.86,0,0,1,64,24.92Zm-.06,0a1.89,1.89,0,0,0,1.81,2,2,2,0,0,0,1.9-2,1.9,1.9,0,0,0-1.84-2,2,2,0,0,0-1.87,2Z" style="fill: #190b00;fill-rule: evenodd"/>
<path d="M63.95,24.92a1.93,1.93,0,0,1,1.84-2,1.87,1.87,0,0,1,1.81,2,2,2,0,0,1-1.87,2,1.86,1.86,0,0,1-1.79-2Zm-.09,0A2,2,0,0,0,65.74,27a2,2,0,0,0,2-2.07,2,2,0,0,0-1.9-2.07,2,2,0,0,0-1.93,2.07Z" style="fill: #1a0b00;fill-rule: evenodd"/>
<path d="M63.89,24.92a2,2,0,0,1,1.9-2,1.93,1.93,0,0,1,1.87,2,2,2,0,0,1-1.93,2,1.91,1.91,0,0,1-1.84-2Zm-.09,0A2,2,0,0,0,65.74,27a2.1,2.1,0,0,0,2-2.13,2,2,0,0,0-2-2.13,2.06,2.06,0,0,0-2,2.13Z" style="fill: #1b0c00;fill-rule: evenodd"/>
<path d="M63.84,24.92a2,2,0,0,1,2-2.1,2,2,0,0,1,1.93,2.1,2.07,2.07,0,0,1-2,2.1,2,2,0,0,1-1.9-2.1Zm-.09,0a2.08,2.08,0,0,0,2,2.18,2.16,2.16,0,0,0,2.07-2.18,2.08,2.08,0,0,0-2-2.18,2.14,2.14,0,0,0-2,2.18Z" style="fill: #1c0c00;fill-rule: evenodd"/>
<path d="M63.78,24.92a2.11,2.11,0,0,1,2-2.15,2.07,2.07,0,0,1,2,2.15,2.13,2.13,0,0,1-2,2.15,2,2,0,0,1-2-2.15Zm-.09,0a2.12,2.12,0,0,0,2,2.24,2.2,2.2,0,0,0,2.13-2.24,2.14,2.14,0,0,0-2.07-2.24,2.2,2.2,0,0,0-2.1,2.24Z" style="fill: #1c0c00;fill-rule: evenodd"/>
<path d="M63.72,24.92a2.17,2.17,0,0,1,2.07-2.21,2.13,2.13,0,0,1,2,2.21,2.19,2.19,0,0,1-2.1,2.21,2.09,2.09,0,0,1-2-2.21Zm-.09,0a2.16,2.16,0,0,0,2.1,2.3,2.22,2.22,0,0,0,2.15-2.3,2.16,2.16,0,0,0-2.07-2.3,2.27,2.27,0,0,0-2.18,2.3Z" style="fill: #1d0d00;fill-rule: evenodd"/>
<path d="M63.67,24.92a2.23,2.23,0,0,1,2.13-2.27,2.17,2.17,0,0,1,2.1,2.27,2.25,2.25,0,0,1-2.15,2.27,2.15,2.15,0,0,1-2.07-2.27Zm-.09,0a2.22,2.22,0,0,0,2.15,2.35,2.28,2.28,0,0,0,2.21-2.35,2.22,2.22,0,0,0-2.13-2.35,2.33,2.33,0,0,0-2.24,2.35Z" style="fill: #1e0d00;fill-rule: evenodd"/>
<path d="M63.61,24.92a2.28,2.28,0,0,1,2.21-2.32,2.19,2.19,0,0,1,2.1,2.32,2.27,2.27,0,0,1-2.18,2.32,2.21,2.21,0,0,1-2.13-2.32Zm-.09,0a2.3,2.3,0,0,0,2.21,2.41A2.34,2.34,0,0,0,68,24.92a2.28,2.28,0,0,0-2.18-2.41,2.39,2.39,0,0,0-2.3,2.41Z" style="fill: #1f0d00;fill-rule: evenodd"/>
<path d="M63.55,24.92a2.34,2.34,0,0,1,2.27-2.38A2.23,2.23,0,0,1,68,24.92a2.33,2.33,0,0,1-2.24,2.38,2.27,2.27,0,0,1-2.18-2.38Zm-.09,0a2.36,2.36,0,0,0,2.27,2.47,2.42,2.42,0,0,0,2.32-2.47,2.34,2.34,0,0,0-2.24-2.47,2.45,2.45,0,0,0-2.35,2.47Z" style="fill: #200e00;fill-rule: evenodd"/>
<path d="M63.5,24.92a2.4,2.4,0,0,1,2.32-2.44A2.29,2.29,0,0,1,68,24.92a2.37,2.37,0,0,1-2.3,2.44,2.33,2.33,0,0,1-2.24-2.44Zm-.09,0a2.42,2.42,0,0,0,2.32,2.52,2.48,2.48,0,0,0,2.38-2.52,2.4,2.4,0,0,0-2.3-2.52,2.51,2.51,0,0,0-2.41,2.52Z" style="fill: #200e00;fill-rule: evenodd"/>
<path d="M63.44,24.92a2.46,2.46,0,0,1,2.38-2.49,2.35,2.35,0,0,1,2.27,2.49,2.45,2.45,0,0,1-2.35,2.49,2.39,2.39,0,0,1-2.3-2.49Zm-.06,0a2.44,2.44,0,0,0,2.35,2.58,2.54,2.54,0,0,0,2.44-2.58,2.47,2.47,0,0,0-2.35-2.61,2.53,2.53,0,0,0-2.44,2.61Z" style="fill: #210e00;fill-rule: evenodd"/>
<path d="M63.38,24.92a2.5,2.5,0,0,1,2.44-2.55,2.41,2.41,0,0,1,2.32,2.55,2.51,2.51,0,0,1-2.41,2.55,2.45,2.45,0,0,1-2.35-2.55Zm-.06,0a2.5,2.5,0,0,0,2.41,2.64,2.59,2.59,0,0,0,2.49-2.64,2.51,2.51,0,0,0-2.41-2.66,2.59,2.59,0,0,0-2.49,2.66Z" style="fill: #220f00;fill-rule: evenodd"/>
<path d="M63.35,24.92a2.56,2.56,0,0,1,2.47-2.64,2.5,2.5,0,0,1,2.38,2.64,2.57,2.57,0,0,1-2.47,2.61,2.47,2.47,0,0,1-2.38-2.61Zm-.09,0a2.54,2.54,0,0,0,2.47,2.69,2.65,2.65,0,0,0,2.55-2.69,2.57,2.57,0,0,0-2.47-2.72,2.67,2.67,0,0,0-2.55,2.72Z" style="fill: #230f00;fill-rule: evenodd"/>
<path d="M63.3,24.92a2.62,2.62,0,0,1,2.52-2.69,2.56,2.56,0,0,1,2.44,2.69,2.64,2.64,0,0,1-2.52,2.66,2.51,2.51,0,0,1-2.44-2.66Zm-.09,0a2.6,2.6,0,0,0,2.52,2.75,2.71,2.71,0,0,0,2.61-2.75,2.63,2.63,0,0,0-2.52-2.78,2.73,2.73,0,0,0-2.61,2.78Z" style="fill: #230f00;fill-rule: evenodd"/>
<path d="M63.24,24.92a2.7,2.7,0,0,1,2.58-2.75,2.62,2.62,0,0,1,2.49,2.75,2.7,2.7,0,0,1-2.58,2.72,2.57,2.57,0,0,1-2.49-2.72Zm-.09,0a2.69,2.69,0,0,0,2.58,2.83,2.79,2.79,0,0,0,2.66-2.83,2.71,2.71,0,0,0-2.58-2.83,2.79,2.79,0,0,0-2.66,2.83Z" style="fill: #241000;fill-rule: evenodd"/>
<path d="M63.18,24.92a2.74,2.74,0,0,1,2.64-2.81,2.66,2.66,0,0,1,2.55,2.81,2.74,2.74,0,0,1-2.64,2.78,2.63,2.63,0,0,1-2.55-2.78Zm-.09,0a2.75,2.75,0,0,0,2.64,2.89,2.85,2.85,0,0,0,2.72-2.89A2.77,2.77,0,0,0,65.82,22a2.85,2.85,0,0,0-2.72,2.89Z" style="fill: #251000;fill-rule: evenodd"/>
<path d="M63.13,24.92a2.81,2.81,0,0,1,2.69-2.86,2.74,2.74,0,0,1,2.61,2.86,2.82,2.82,0,0,1-2.69,2.86,2.72,2.72,0,0,1-2.61-2.86Zm-.09,0a2.81,2.81,0,0,0,2.69,2.95,2.87,2.87,0,0,0,2.75-2.95A2.79,2.79,0,0,0,65.82,22,2.92,2.92,0,0,0,63,24.92Z" style="fill: #261000;fill-rule: evenodd"/>
<path d="M63.07,24.92A2.87,2.87,0,0,1,65.82,22a2.76,2.76,0,0,1,2.64,2.92,2.84,2.84,0,0,1-2.72,2.92,2.76,2.76,0,0,1-2.66-2.92Zm-.09,0a2.87,2.87,0,0,0,2.75,3,3,3,0,0,0,2.81-3,2.83,2.83,0,0,0-2.72-3,3,3,0,0,0-2.83,3Z" style="fill: #261100;fill-rule: evenodd"/>
<path d="M63,24.92a2.93,2.93,0,0,1,2.81-3,2.8,2.8,0,0,1,2.69,3,2.9,2.9,0,0,1-2.78,3,2.82,2.82,0,0,1-2.72-3Zm-.09,0A2.91,2.91,0,0,0,65.74,28a3,3,0,0,0,2.86-3.06,2.89,2.89,0,0,0-2.78-3.06,3,3,0,0,0-2.89,3.06Z" style="fill: #271100;fill-rule: evenodd"/>
<path d="M63,24.92a3,3,0,0,1,2.86-3,2.86,2.86,0,0,1,2.75,3,3,3,0,0,1-2.83,3,2.88,2.88,0,0,1-2.78-3Zm-.09,0A3,3,0,0,0,65.74,28a3.05,3.05,0,0,0,2.92-3.12,3,3,0,0,0-2.83-3.12,3.08,3.08,0,0,0-2.95,3.12Z" style="fill: #281100;fill-rule: evenodd"/>
<path d="M62.9,24.92a3,3,0,0,1,2.92-3.09,2.92,2.92,0,0,1,2.81,3.09A3,3,0,0,1,65.74,28a2.94,2.94,0,0,1-2.83-3.09Zm-.09,0a3,3,0,0,0,2.92,3.17,3.12,3.12,0,0,0,3-3.17,3,3,0,0,0-2.89-3.17,3.14,3.14,0,0,0-3,3.17Z" style="fill: #291200;fill-rule: evenodd"/>
<path d="M62.84,24.92a3.11,3.11,0,0,1,3-3.15,3,3,0,0,1,2.86,3.15,3.1,3.1,0,0,1-2.95,3.15,3,3,0,0,1-2.89-3.15Zm-.06,0a3.05,3.05,0,0,0,2.95,3.23,3.18,3.18,0,0,0,3-3.23,3.07,3.07,0,0,0-2.95-3.23,3.18,3.18,0,0,0-3,3.23Z" style="fill: #2a1200;fill-rule: evenodd"/>
<path d="M62.82,24.92a3.11,3.11,0,0,1,3-3.2,3,3,0,0,1,2.92,3.2,3.16,3.16,0,0,1-3,3.2,3,3,0,0,1-2.92-3.2Zm-.09,0a3.11,3.11,0,0,0,3,3.29,3.24,3.24,0,0,0,3.09-3.29,3.13,3.13,0,0,0-3-3.29,3.24,3.24,0,0,0-3.09,3.29Z" style="fill: #2a1200;fill-rule: evenodd"/>
<path d="M62.76,24.92a3.19,3.19,0,0,1,3.06-3.26,3.08,3.08,0,0,1,3,3.26,3.23,3.23,0,0,1-3.06,3.26,3.1,3.1,0,0,1-3-3.26Zm-.09,0a3.17,3.17,0,0,0,3,3.34,3.3,3.3,0,0,0,3.17-3.34,3.17,3.17,0,0,0-3.06-3.34,3.3,3.3,0,0,0-3.15,3.34Z" style="fill: #2b1300;fill-rule: evenodd"/>
<path d="M62.7,24.92a3.25,3.25,0,0,1,3.12-3.32,3.14,3.14,0,0,1,3,3.32,3.27,3.27,0,0,1-3.15,3.32,3.14,3.14,0,0,1-3-3.32Zm-.09,0a3.23,3.23,0,0,0,3.09,3.4,3.36,3.36,0,0,0,3.23-3.4,3.23,3.23,0,0,0-3.12-3.4,3.34,3.34,0,0,0-3.2,3.4Z" style="fill: #2c1300;fill-rule: evenodd"/>
<path d="M62.65,24.92a3.31,3.31,0,0,1,3.17-3.37,3.2,3.2,0,0,1,3.09,3.37,3.33,3.33,0,0,1-3.2,3.37,3.18,3.18,0,0,1-3.06-3.37Zm-.09,0a3.29,3.29,0,0,0,3.15,3.46A3.42,3.42,0,0,0,69,24.92a3.28,3.28,0,0,0-3.17-3.46,3.4,3.4,0,0,0-3.26,3.46Z" style="fill: #2d1300;fill-rule: evenodd"/>
<path d="M62.59,24.92a3.37,3.37,0,0,1,3.23-3.43A3.26,3.26,0,0,1,69,24.92a3.39,3.39,0,0,1-3.26,3.43,3.24,3.24,0,0,1-3.12-3.43Zm-.09,0a3.33,3.33,0,0,0,3.2,3.51A3.44,3.44,0,0,0,69,24.92a3.3,3.3,0,0,0-3.2-3.51,3.46,3.46,0,0,0-3.32,3.51Z" style="fill: #2d1400;fill-rule: evenodd"/>
<path d="M62.53,24.92a3.43,3.43,0,0,1,3.29-3.49A3.32,3.32,0,0,1,69,24.92a3.43,3.43,0,0,1-3.32,3.49,3.3,3.3,0,0,1-3.17-3.49Zm-.09,0a3.39,3.39,0,0,0,3.26,3.57,3.5,3.5,0,0,0,3.37-3.57,3.37,3.37,0,0,0-3.26-3.57,3.52,3.52,0,0,0-3.37,3.57Z" style="fill: #2e1400;fill-rule: evenodd"/>
<path d="M62.48,24.92a3.49,3.49,0,0,1,3.34-3.54,3.36,3.36,0,0,1,3.23,3.54,3.47,3.47,0,0,1-3.34,3.54,3.36,3.36,0,0,1-3.23-3.54Zm-.09,0a3.45,3.45,0,0,0,3.32,3.63,3.56,3.56,0,0,0,3.43-3.63,3.43,3.43,0,0,0-3.32-3.63,3.54,3.54,0,0,0-3.43,3.63Z" style="fill: #2f1400;fill-rule: evenodd"/>
<path d="M62.42,24.92a3.55,3.55,0,0,1,3.4-3.6,3.42,3.42,0,0,1,3.29,3.6,3.53,3.53,0,0,1-3.4,3.6,3.42,3.42,0,0,1-3.29-3.6Zm-.09,0a3.51,3.51,0,0,0,3.37,3.69,3.62,3.62,0,0,0,3.49-3.69,3.52,3.52,0,0,0-3.37-3.71,3.65,3.65,0,0,0-3.49,3.71Z" style="fill: #301500;fill-rule: evenodd"/>
<path d="M62.36,24.92a3.62,3.62,0,0,1,3.46-3.69,3.47,3.47,0,0,1,3.34,3.69,3.59,3.59,0,0,1-3.46,3.66,3.48,3.48,0,0,1-3.34-3.66Zm-.09,0a3.55,3.55,0,0,0,3.43,3.74,3.68,3.68,0,0,0,3.54-3.74,3.58,3.58,0,0,0-3.43-3.77,3.73,3.73,0,0,0-3.54,3.77Z" style="fill: #301500;fill-rule: evenodd"/>
<path d="M62.31,24.92a3.68,3.68,0,0,1,3.51-3.74,3.53,3.53,0,0,1,3.4,3.74,3.63,3.63,0,0,1-3.51,3.71,3.54,3.54,0,0,1-3.4-3.71Zm-.06,0a3.57,3.57,0,0,0,3.46,3.8,3.74,3.74,0,0,0,3.6-3.8,3.64,3.64,0,0,0-3.49-3.83,3.75,3.75,0,0,0-3.57,3.83Z" style="fill: #311500;fill-rule: evenodd"/>
<path d="M62.25,24.92a3.76,3.76,0,0,1,3.57-3.8,3.59,3.59,0,0,1,3.46,3.8,3.69,3.69,0,0,1-3.57,3.77,3.59,3.59,0,0,1-3.46-3.77Zm-.06,0a3.63,3.63,0,0,0,3.51,3.86,3.79,3.79,0,0,0,3.66-3.86A3.68,3.68,0,0,0,65.82,21a3.79,3.79,0,0,0-3.63,3.88Z" style="fill: #321600;fill-rule: evenodd"/>
<path d="M62.22,24.92a3.78,3.78,0,0,1,3.6-3.86,3.65,3.65,0,0,1,3.51,3.86,3.75,3.75,0,0,1-3.63,3.83,3.61,3.61,0,0,1-3.49-3.83Zm-.09,0a3.74,3.74,0,0,0,3.57,3.94,3.87,3.87,0,0,0,3.71-3.94A3.74,3.74,0,0,0,65.82,21a3.85,3.85,0,0,0-3.69,3.94Z" style="fill: #331600;fill-rule: evenodd"/>
<path d="M62.16,24.92A3.84,3.84,0,0,1,65.82,21a3.71,3.71,0,0,1,3.57,3.91,3.84,3.84,0,0,1-3.69,3.91,3.71,3.71,0,0,1-3.54-3.91Zm-.09,0a3.78,3.78,0,0,0,3.63,4,3.93,3.93,0,0,0,3.77-4,3.8,3.8,0,0,0-3.66-4,3.91,3.91,0,0,0-3.74,4Z" style="fill: #341600;fill-rule: evenodd"/>
<path d="M62.11,24.92a3.9,3.9,0,0,1,3.71-4,3.77,3.77,0,0,1,3.63,4,3.9,3.9,0,0,1-3.74,4,3.77,3.77,0,0,1-3.6-4Zm-.09,0A3.84,3.84,0,0,0,65.71,29a4,4,0,0,0,3.83-4.05,3.85,3.85,0,0,0-3.71-4.05A4,4,0,0,0,62,24.92Z" style="fill: #341700;fill-rule: evenodd"/>
<path d="M62.05,24.92a4,4,0,0,1,3.77-4,3.83,3.83,0,0,1,3.69,4,4,4,0,0,1-3.8,4,3.83,3.83,0,0,1-3.66-4Zm-.09,0A3.9,3.9,0,0,0,65.71,29a4.07,4.07,0,0,0,3.88-4.11,3.91,3.91,0,0,0-3.77-4.11A4,4,0,0,0,62,24.92Z" style="fill: #351700;fill-rule: evenodd"/>
<path d="M62,24.92a4,4,0,0,1,3.83-4.08,3.89,3.89,0,0,1,3.74,4.08A4,4,0,0,1,65.71,29,3.87,3.87,0,0,1,62,24.92Zm-.09,0a4,4,0,0,0,3.8,4.17,4.09,4.09,0,0,0,3.91-4.17,3.92,3.92,0,0,0-3.77-4.17,4.09,4.09,0,0,0-3.94,4.17Z" style="fill: #361700;fill-rule: evenodd"/>
<path d="M61.94,24.92a4.06,4.06,0,0,1,3.88-4.14,3.9,3.9,0,0,1,3.77,4.14,4.06,4.06,0,0,1-3.88,4.14,3.93,3.93,0,0,1-3.77-4.14Zm-.09,0a4,4,0,0,0,3.86,4.22,4.15,4.15,0,0,0,4-4.22,4,4,0,0,0-3.83-4.22,4.16,4.16,0,0,0-4,4.22Z" style="fill: #371800;fill-rule: evenodd"/>
<path d="M61.88,24.92a4.13,4.13,0,0,1,4-4.2,4,4,0,0,1,3.8,4.2,4.1,4.1,0,0,1-3.94,4.2,4,4,0,0,1-3.83-4.2Zm-.09,0a4.08,4.08,0,0,0,3.91,4.28,4.21,4.21,0,0,0,4-4.28,4,4,0,0,0-3.88-4.28,4.22,4.22,0,0,0-4.05,4.28Z" style="fill: #371800;fill-rule: evenodd"/>
<path d="M61.82,24.92a4.2,4.2,0,0,1,4-4.25,4,4,0,0,1,3.86,4.25,4.16,4.16,0,0,1-4,4.25,4,4,0,0,1-3.88-4.25Zm-.09,0a4.14,4.14,0,0,0,4,4.34,4.27,4.27,0,0,0,4.08-4.34,4.1,4.1,0,0,0-3.94-4.34,4.28,4.28,0,0,0-4.11,4.34Z" style="fill: #381800;fill-rule: evenodd"/>
<path d="M61.77,24.92a4.27,4.27,0,0,1,4.08-4.31,4.09,4.09,0,0,1,3.91,4.31,4.22,4.22,0,0,1-4.05,4.31,4.09,4.09,0,0,1-3.94-4.31Zm-.09,0a4.19,4.19,0,0,0,4,4.39,4.31,4.31,0,0,0,4.14-4.39,4.16,4.16,0,0,0-4-4.39,4.34,4.34,0,0,0-4.17,4.39Z" style="fill: #391900;fill-rule: evenodd"/>
<path d="M61.71,24.92a4.33,4.33,0,0,1,4.14-4.37,4.15,4.15,0,0,1,4,4.37,4.28,4.28,0,0,1-4.11,4.37,4.16,4.16,0,0,1-4-4.37Zm-.06,0a4.19,4.19,0,0,0,4.05,4.45,4.37,4.37,0,0,0,4.2-4.45,4.22,4.22,0,0,0-4.05-4.45,4.36,4.36,0,0,0-4.2,4.45Z" style="fill: #3a1900;fill-rule: evenodd"/>
<path d="M61.68,24.92a4.34,4.34,0,0,1,4.17-4.42,4.19,4.19,0,0,1,4,4.42,4.34,4.34,0,0,1-4.17,4.42,4.18,4.18,0,0,1-4-4.42Zm-.09,0a4.25,4.25,0,0,0,4.11,4.51A4.43,4.43,0,0,0,70,24.92a4.28,4.28,0,0,0-4.11-4.51,4.42,4.42,0,0,0-4.25,4.51Z" style="fill: #3a1900;fill-rule: evenodd"/>
<path d="M61.63,24.92a4.4,4.4,0,0,1,4.22-4.48,4.25,4.25,0,0,1,4.08,4.48,4.4,4.4,0,0,1-4.22,4.48,4.24,4.24,0,0,1-4.08-4.48Zm-.09,0a4.31,4.31,0,0,0,4.17,4.56A4.51,4.51,0,0,0,70,24.92a4.34,4.34,0,0,0-4.17-4.56,4.48,4.48,0,0,0-4.31,4.56Z" style="fill: #3b1a00;fill-rule: evenodd"/>
<path d="M61.57,24.92a4.45,4.45,0,0,1,4.28-4.54A4.3,4.3,0,0,1,70,24.92a4.48,4.48,0,0,1-4.28,4.54,4.3,4.3,0,0,1-4.14-4.54Zm-.09,0a4.39,4.39,0,0,0,4.22,4.62,4.58,4.58,0,0,0,4.37-4.62,4.4,4.4,0,0,0-4.22-4.62,4.54,4.54,0,0,0-4.37,4.62Z" style="fill: #3c1a00;fill-rule: evenodd"/>
<path d="M61.51,24.92a4.51,4.51,0,0,1,4.34-4.59A4.36,4.36,0,0,1,70,24.92a4.53,4.53,0,0,1-4.34,4.59,4.36,4.36,0,0,1-4.2-4.59Zm-.09,0a4.45,4.45,0,0,0,4.28,4.68,4.64,4.64,0,0,0,4.42-4.68,4.46,4.46,0,0,0-4.28-4.68,4.6,4.6,0,0,0-4.42,4.68Z" style="fill: #3d1a00;fill-rule: evenodd"/>
<path d="M61.46,24.92a4.57,4.57,0,0,1,4.39-4.65,4.42,4.42,0,0,1,4.25,4.65,4.59,4.59,0,0,1-4.39,4.65,4.42,4.42,0,0,1-4.25-4.65Zm-.09,0a4.51,4.51,0,0,0,4.34,4.73,4.65,4.65,0,0,0,4.45-4.73,4.49,4.49,0,0,0-4.31-4.76,4.67,4.67,0,0,0-4.48,4.76Z" style="fill: #3e1b00;fill-rule: evenodd"/>
<path d="M61.4,24.92a4.61,4.61,0,0,1,4.45-4.71,4.48,4.48,0,0,1,4.31,4.71,4.65,4.65,0,0,1-4.45,4.71,4.48,4.48,0,0,1-4.31-4.71Zm-.09,0a4.57,4.57,0,0,0,4.39,4.79,4.7,4.7,0,0,0,4.51-4.79,4.54,4.54,0,0,0-4.37-4.82,4.74,4.74,0,0,0-4.54,4.82Z" style="fill: #3e1b00;fill-rule: evenodd"/>
<path d="M61.34,24.92a4.73,4.73,0,0,1,4.51-4.79,4.52,4.52,0,0,1,4.34,4.79,4.67,4.67,0,0,1-4.48,4.76,4.52,4.52,0,0,1-4.37-4.76Zm-.09,0a4.61,4.61,0,0,0,4.45,4.85,4.76,4.76,0,0,0,4.56-4.85A4.6,4.6,0,0,0,65.85,20a4.81,4.81,0,0,0-4.59,4.88Z" style="fill: #3f1b00;fill-rule: evenodd"/>
<path d="M61.29,24.92a4.79,4.79,0,0,1,4.56-4.85,4.58,4.58,0,0,1,4.39,4.85,4.73,4.73,0,0,1-4.54,4.82,4.58,4.58,0,0,1-4.42-4.82Zm-.09,0a4.67,4.67,0,0,0,4.51,4.9,4.8,4.8,0,0,0,4.62-4.9A4.66,4.66,0,0,0,65.85,20a4.87,4.87,0,0,0-4.65,4.93Z" style="fill: #401c00;fill-rule: evenodd"/>
<path d="M61.23,24.92A4.85,4.85,0,0,1,65.85,20a4.64,4.64,0,0,1,4.45,4.9,4.79,4.79,0,0,1-4.59,4.88,4.64,4.64,0,0,1-4.48-4.88Zm-.09,0a4.76,4.76,0,0,0,4.56,5,4.88,4.88,0,0,0,4.68-5,4.72,4.72,0,0,0-4.54-5,4.93,4.93,0,0,0-4.71,5Z" style="fill: #411c00;fill-rule: evenodd"/>
<path d="M61.17,24.92a4.9,4.9,0,0,1,4.68-5,4.7,4.7,0,0,1,4.51,5,4.87,4.87,0,0,1-4.65,5,4.74,4.74,0,0,1-4.54-5Zm-.06,0a4.78,4.78,0,0,0,4.59,5,4.94,4.94,0,0,0,4.73-5,4.79,4.79,0,0,0-4.59-5,4.94,4.94,0,0,0-4.73,5Z" style="fill: #411c00;fill-rule: evenodd"/>
<path d="M61.11,24.92a5,5,0,0,1,4.73-5,4.75,4.75,0,0,1,4.56,5,4.91,4.91,0,0,1-4.71,5,4.79,4.79,0,0,1-4.59-5Zm-.06,0A4.84,4.84,0,0,0,65.71,30a5,5,0,0,0,4.79-5.1,4.85,4.85,0,0,0-4.65-5.1,5,5,0,0,0-4.79,5.1Z" style="fill: #421d00;fill-rule: evenodd"/>
<path d="M61.09,24.92a5,5,0,0,1,4.76-5.07,4.82,4.82,0,0,1,4.62,5.07A5,5,0,0,1,65.71,30a4.79,4.79,0,0,1-4.62-5.07Zm-.09,0a4.88,4.88,0,0,0,4.71,5.16,5.08,5.08,0,0,0,4.85-5.16,4.91,4.91,0,0,0-4.71-5.16A5,5,0,0,0,61,24.92Z" style="fill: #431d00;fill-rule: evenodd"/>
<path d="M61,24.92a5,5,0,0,1,4.82-5.13,4.87,4.87,0,0,1,4.68,5.13A5.05,5.05,0,0,1,65.71,30,4.85,4.85,0,0,1,61,24.92Zm-.09,0a4.93,4.93,0,0,0,4.73,5.22,5.15,5.15,0,0,0,4.93-5.22,5,5,0,0,0-4.76-5.22,5.11,5.11,0,0,0-4.9,5.22Z" style="fill: #441d00;fill-rule: evenodd"/>
<path d="M61,24.92a5.08,5.08,0,0,1,4.88-5.19,4.93,4.93,0,0,1,4.73,5.19,5.12,5.12,0,0,1-4.88,5.19A4.91,4.91,0,0,1,61,24.92Zm-.09,0a5,5,0,0,0,4.79,5.27,5.19,5.19,0,0,0,5-5.27,5,5,0,0,0-4.82-5.27,5.17,5.17,0,0,0-5,5.27Z" style="fill: #441e00;fill-rule: evenodd"/>
<path d="M60.92,24.92a5.14,5.14,0,0,1,4.93-5.24,5,5,0,0,1,4.79,5.24,5.18,5.18,0,0,1-5,5.24,5,5,0,0,1-4.76-5.24Zm-.09,0a5,5,0,0,0,4.85,5.33,5.25,5.25,0,0,0,5-5.33,5.08,5.08,0,0,0-4.88-5.33,5.25,5.25,0,0,0-5,5.33Z" style="fill: #451e00;fill-rule: evenodd"/>
<path d="M60.86,24.92a5.22,5.22,0,0,1,5-5.3,5,5,0,0,1,4.85,5.3,5.24,5.24,0,0,1-5,5.3,5,5,0,0,1-4.82-5.3Zm-.09,0a5.12,5.12,0,0,0,4.9,5.39,5.27,5.27,0,0,0,5.07-5.39,5.1,5.1,0,0,0-4.9-5.39,5.31,5.31,0,0,0-5.07,5.39Z" style="fill: #461e00;fill-rule: evenodd"/>
<path d="M60.8,24.92a5.26,5.26,0,0,1,5-5.36,5.07,5.07,0,0,1,4.88,5.36,5.26,5.26,0,0,1-5,5.36,5.09,5.09,0,0,1-4.88-5.36Zm-.09,0a5.18,5.18,0,0,0,5,5.44,5.33,5.33,0,0,0,5.13-5.44,5.14,5.14,0,0,0-5-5.44,5.37,5.37,0,0,0-5.13,5.44Z" style="fill: #471f00;fill-rule: evenodd"/>
<path d="M60.75,24.92a5.32,5.32,0,0,1,5.1-5.41,5.11,5.11,0,0,1,4.93,5.41,5.32,5.32,0,0,1-5.1,5.41,5.16,5.16,0,0,1-4.93-5.41Zm-.09,0a5.24,5.24,0,0,0,5,5.5,5.39,5.39,0,0,0,5.19-5.5,5.2,5.2,0,0,0-5-5.5,5.43,5.43,0,0,0-5.19,5.5Z" style="fill: #481f00;fill-rule: evenodd"/>
<path d="M60.69,24.92a5.38,5.38,0,0,1,5.16-5.47,5.17,5.17,0,0,1,5,5.47,5.36,5.36,0,0,1-5.16,5.47,5.21,5.21,0,0,1-5-5.47Zm-.09,0a5.3,5.3,0,0,0,5.07,5.56,5.45,5.45,0,0,0,5.24-5.56,5.26,5.26,0,0,0-5.07-5.56,5.49,5.49,0,0,0-5.24,5.56Z" style="fill: #481f00;fill-rule: evenodd"/>
<path d="M60.63,24.92a5.44,5.44,0,0,1,5.22-5.53,5.23,5.23,0,0,1,5,5.53,5.42,5.42,0,0,1-5.22,5.53,5.25,5.25,0,0,1-5-5.53Zm-.09,0a5.36,5.36,0,0,0,5.13,5.61A5.53,5.53,0,0,0,71,24.92a5.3,5.3,0,0,0-5.13-5.61,5.53,5.53,0,0,0-5.3,5.61Z" style="fill: #492000;fill-rule: evenodd"/>
<path d="M60.58,24.92a5.5,5.5,0,0,1,5.27-5.58A5.29,5.29,0,0,1,71,24.92a5.5,5.5,0,0,1-5.27,5.58,5.31,5.31,0,0,1-5.1-5.58Zm-.06,0a5.38,5.38,0,0,0,5.16,5.67A5.57,5.57,0,0,0,71,24.92a5.36,5.36,0,0,0-5.19-5.67,5.55,5.55,0,0,0-5.33,5.67Z" style="fill: #4a2000;fill-rule: evenodd"/>
<path d="M60.55,24.92a5.52,5.52,0,0,1,5.3-5.64A5.35,5.35,0,0,1,71,24.92a5.56,5.56,0,0,1-5.33,5.64,5.33,5.33,0,0,1-5.13-5.64Zm-.09,0a5.42,5.42,0,0,0,5.22,5.73,5.63,5.63,0,0,0,5.41-5.73,5.42,5.42,0,0,0-5.24-5.73,5.61,5.61,0,0,0-5.39,5.73Z" style="fill: #4b2000;fill-rule: evenodd"/>
<path d="M60.49,24.92a5.58,5.58,0,0,1,5.36-5.7,5.41,5.41,0,0,1,5.22,5.7,5.62,5.62,0,0,1-5.39,5.7,5.39,5.39,0,0,1-5.19-5.7Zm-.09,0a5.48,5.48,0,0,0,5.27,5.78,5.69,5.69,0,0,0,5.47-5.78,5.5,5.5,0,0,0-5.3-5.78,5.65,5.65,0,0,0-5.44,5.78Z" style="fill: #4b2100;fill-rule: evenodd"/>
<path d="M60.43,24.92a5.64,5.64,0,0,1,5.41-5.75,5.47,5.47,0,0,1,5.27,5.75,5.68,5.68,0,0,1-5.44,5.75,5.45,5.45,0,0,1-5.24-5.75Zm-.09,0a5.52,5.52,0,0,0,5.33,5.84,5.75,5.75,0,0,0,5.53-5.84A5.59,5.59,0,0,0,65.85,19a5.78,5.78,0,0,0-5.5,5.87Z" style="fill: #4c2100;fill-rule: evenodd"/>
<path d="M60.38,24.92a5.73,5.73,0,0,1,5.47-5.84,5.56,5.56,0,0,1,5.33,5.84,5.74,5.74,0,0,1-5.5,5.81,5.51,5.51,0,0,1-5.3-5.81Zm-.09,0a5.58,5.58,0,0,0,5.39,5.9,5.82,5.82,0,0,0,5.58-5.9A5.65,5.65,0,0,0,65.85,19a5.84,5.84,0,0,0-5.56,5.92Z" style="fill: #4d2100;fill-rule: evenodd"/>
<path d="M60.32,24.92A5.79,5.79,0,0,1,65.85,19a5.6,5.6,0,0,1,5.39,5.9,5.79,5.79,0,0,1-5.56,5.87,5.57,5.57,0,0,1-5.36-5.87Zm-.09,0a5.64,5.64,0,0,0,5.44,6,5.83,5.83,0,0,0,5.61-6,5.67,5.67,0,0,0-5.44-6,5.9,5.9,0,0,0-5.61,6Z" style="fill: #4e2200;fill-rule: evenodd"/>
<path d="M60.26,24.92a5.85,5.85,0,0,1,5.58-6,5.66,5.66,0,0,1,5.44,6,5.85,5.85,0,0,1-5.61,5.92,5.61,5.61,0,0,1-5.41-5.92Zm-.09,0a5.75,5.75,0,0,0,5.5,6,5.92,5.92,0,0,0,5.67-6,5.72,5.72,0,0,0-5.47-6,5.94,5.94,0,0,0-5.7,6Z" style="fill: #4e2200;fill-rule: evenodd"/>
<path d="M60.21,24.92a5.91,5.91,0,0,1,5.64-6,5.68,5.68,0,0,1,5.47,6,5.85,5.85,0,0,1-5.64,6,5.67,5.67,0,0,1-5.47-6Zm-.09,0A5.79,5.79,0,0,0,65.68,31a6,6,0,0,0,5.73-6.09,5.77,5.77,0,0,0-5.53-6.09,6,6,0,0,0-5.75,6.09Z" style="fill: #4f2200;fill-rule: evenodd"/>
<path d="M60.15,24.92a6,6,0,0,1,5.73-6.07,5.74,5.74,0,0,1,5.5,6.07A6,6,0,0,1,65.68,31a5.76,5.76,0,0,1-5.53-6.07Zm-.09,0a5.85,5.85,0,0,0,5.61,6.15,6,6,0,0,0,5.78-6.15,5.81,5.81,0,0,0-5.58-6.15,6.06,6.06,0,0,0-5.81,6.15Z" style="fill: #502300;fill-rule: evenodd"/>
<path d="M60.09,24.92a6,6,0,0,1,5.78-6.12,5.8,5.8,0,0,1,5.56,6.12A6,6,0,0,1,65.68,31a5.84,5.84,0,0,1-5.58-6.12Zm-.09,0a5.91,5.91,0,0,0,5.67,6.21,6.1,6.1,0,0,0,5.84-6.21,5.87,5.87,0,0,0-5.64-6.21A6.13,6.13,0,0,0,60,24.92Z" style="fill: #512300;fill-rule: evenodd"/>
<path d="M60,24.92a6.09,6.09,0,0,1,5.84-6.18,5.86,5.86,0,0,1,5.61,6.18,6.09,6.09,0,0,1-5.81,6.18A5.88,5.88,0,0,1,60,24.92Zm-.06,0a5.93,5.93,0,0,0,5.7,6.26,6.16,6.16,0,0,0,5.9-6.26,5.93,5.93,0,0,0-5.7-6.26A6.14,6.14,0,0,0,60,24.92Z" style="fill: #522300;fill-rule: evenodd"/>
<path d="M60,24.92a6.09,6.09,0,0,1,5.87-6.24,5.92,5.92,0,0,1,5.67,6.24,6.15,6.15,0,0,1-5.87,6.24A5.9,5.9,0,0,1,60,24.92Zm-.09,0a6,6,0,0,0,5.75,6.32,6.22,6.22,0,0,0,6-6.32,6,6,0,0,0-5.75-6.32,6.22,6.22,0,0,0-6,6.32Z" style="fill: #522400;fill-rule: evenodd"/>
<path d="M60,24.92a6.16,6.16,0,0,1,5.92-6.29,6,6,0,0,1,5.73,6.29,6.19,6.19,0,0,1-5.92,6.29A6,6,0,0,1,60,24.92Zm-.09,0a6,6,0,0,0,5.81,6.38,6.28,6.28,0,0,0,6-6.38,6,6,0,0,0-5.81-6.38,6.28,6.28,0,0,0-6,6.38Z" style="fill: #532400;fill-rule: evenodd"/>
<path d="M59.9,24.92a6.23,6.23,0,0,1,6-6.35,6,6,0,0,1,5.78,6.35,6.23,6.23,0,0,1-6,6.35,6,6,0,0,1-5.78-6.35Zm-.09,0a6.11,6.11,0,0,0,5.87,6.43,6.34,6.34,0,0,0,6.07-6.43,6.11,6.11,0,0,0-5.87-6.43,6.31,6.31,0,0,0-6.07,6.43Z" style="fill: #542400;fill-rule: evenodd"/>
<path d="M59.84,24.92a6.29,6.29,0,0,1,6-6.41,6.08,6.08,0,0,1,5.84,6.41,6.29,6.29,0,0,1-6,6.41,6.06,6.06,0,0,1-5.84-6.41Zm-.09,0a6.17,6.17,0,0,0,5.92,6.49,6.4,6.4,0,0,0,6.12-6.49,6.15,6.15,0,0,0-5.92-6.49,6.37,6.37,0,0,0-6.12,6.49Z" style="fill: #552500;fill-rule: evenodd"/>
<path d="M59.78,24.92a6.36,6.36,0,0,1,6.09-6.46,6.14,6.14,0,0,1,5.9,6.46,6.36,6.36,0,0,1-6.09,6.46,6.12,6.12,0,0,1-5.9-6.46Zm-.09,0a6.21,6.21,0,0,0,6,6.55,6.45,6.45,0,0,0,6.18-6.55,6.23,6.23,0,0,0-6-6.55,6.43,6.43,0,0,0-6.18,6.55Z" style="fill: #552500;fill-rule: evenodd"/>
<path d="M59.73,24.92a6.42,6.42,0,0,1,6.15-6.52,6.2,6.2,0,0,1,6,6.52,6.42,6.42,0,0,1-6.15,6.52,6.18,6.18,0,0,1-6-6.52Zm-.09,0a6.26,6.26,0,0,0,6,6.6,6.48,6.48,0,0,0,6.21-6.6,6.25,6.25,0,0,0-6-6.6,6.49,6.49,0,0,0-6.24,6.6Z" style="fill: #562500;fill-rule: evenodd"/>
<path d="M59.67,24.92a6.48,6.48,0,0,1,6.21-6.58,6.22,6.22,0,0,1,6,6.58,6.43,6.43,0,0,1-6.18,6.58,6.24,6.24,0,0,1-6-6.58Zm-.09,0a6.32,6.32,0,0,0,6.09,6.66,6.54,6.54,0,0,0,6.26-6.66,6.31,6.31,0,0,0-6.07-6.66,6.55,6.55,0,0,0-6.29,6.66Z" style="fill: #572500;fill-rule: evenodd"/>
<path d="M59.61,24.92a6.54,6.54,0,0,1,6.26-6.63,6.28,6.28,0,0,1,6,6.63,6.51,6.51,0,0,1-6.24,6.63,6.3,6.3,0,0,1-6.07-6.63Zm-.09,0a6.38,6.38,0,0,0,6.15,6.72A6.6,6.6,0,0,0,72,24.92a6.37,6.37,0,0,0-6.12-6.72,6.61,6.61,0,0,0-6.35,6.72Z" style="fill: #582600;fill-rule: evenodd"/>
<path d="M59.56,24.92a6.58,6.58,0,0,1,6.32-6.69A6.32,6.32,0,0,1,72,24.92a6.57,6.57,0,0,1-6.29,6.69,6.36,6.36,0,0,1-6.12-6.69Zm-.09,0a6.44,6.44,0,0,0,6.21,6.77,6.67,6.67,0,0,0,6.38-6.77,6.43,6.43,0,0,0-6.18-6.77,6.67,6.67,0,0,0-6.41,6.77Z" style="fill: #582600;fill-rule: evenodd"/>
<path d="M59.5,24.92a6.64,6.64,0,0,1,6.38-6.75A6.38,6.38,0,0,1,72,24.92a6.62,6.62,0,0,1-6.35,6.75,6.42,6.42,0,0,1-6.18-6.75Zm-.06,0a6.46,6.46,0,0,0,6.24,6.83,6.73,6.73,0,0,0,6.43-6.83,6.47,6.47,0,0,0-6.24-6.83,6.69,6.69,0,0,0-6.43,6.83Z" style="fill: #592600;fill-rule: evenodd"/>
<path d="M59.44,24.92a6.7,6.7,0,0,1,6.43-6.8,6.44,6.44,0,0,1,6.21,6.8,6.68,6.68,0,0,1-6.41,6.8,6.47,6.47,0,0,1-6.24-6.8Zm-.06,0a6.53,6.53,0,0,0,6.29,6.89,6.79,6.79,0,0,0,6.49-6.89A6.58,6.58,0,0,0,65.88,18a6.77,6.77,0,0,0-6.49,6.92Z" style="fill: #5a2700;fill-rule: evenodd"/>
<path d="M59.41,24.92a6.72,6.72,0,0,1,6.46-6.86,6.5,6.5,0,0,1,6.26,6.86,6.74,6.74,0,0,1-6.46,6.86,6.49,6.49,0,0,1-6.26-6.86Zm-.09,0a6.59,6.59,0,0,0,6.35,6.94,6.83,6.83,0,0,0,6.55-6.94,6.6,6.6,0,0,0-6.35-7,6.84,6.84,0,0,0-6.55,7Z" style="fill: #5b2700;fill-rule: evenodd"/>
<path d="M59.36,24.92A6.82,6.82,0,0,1,65.88,18a6.59,6.59,0,0,1,6.32,6.94,6.8,6.8,0,0,1-6.52,6.92,6.55,6.55,0,0,1-6.32-6.92Zm-.09,0a6.64,6.64,0,0,0,6.41,7,6.89,6.89,0,0,0,6.6-7,6.66,6.66,0,0,0-6.41-7,6.9,6.9,0,0,0-6.6,7Z" style="fill: #5c2700;fill-rule: evenodd"/>
<path d="M59.3,24.92a6.88,6.88,0,0,1,6.58-7,6.65,6.65,0,0,1,6.38,7,6.86,6.86,0,0,1-6.58,7,6.61,6.61,0,0,1-6.38-7Zm-.09,0A6.69,6.69,0,0,0,65.65,32a6.94,6.94,0,0,0,6.69-7.06,6.72,6.72,0,0,0-6.46-7.09,7,7,0,0,0-6.66,7.09Z" style="fill: #5c2800;fill-rule: evenodd"/>
<path d="M59.24,24.92a6.94,6.94,0,0,1,6.63-7.06,6.71,6.71,0,0,1,6.43,7.06,6.92,6.92,0,0,1-6.63,7,6.67,6.67,0,0,1-6.43-7Zm-.09,0a6.78,6.78,0,0,0,6.49,7.14,7.06,7.06,0,0,0,6.75-7.14,6.78,6.78,0,0,0-6.52-7.14,7,7,0,0,0-6.72,7.14Z" style="fill: #5d2800;fill-rule: evenodd"/>
<path d="M59.19,24.92a7,7,0,0,1,6.69-7.11,6.77,6.77,0,0,1,6.49,7.11A7,7,0,0,1,65.65,32a6.77,6.77,0,0,1-6.46-7.11Zm-.09,0a6.84,6.84,0,0,0,6.55,7.2,7.08,7.08,0,0,0,6.77-7.2,6.8,6.8,0,0,0-6.55-7.2,7.08,7.08,0,0,0-6.77,7.2Z" style="fill: #5e2800;fill-rule: evenodd"/>
<path d="M59.13,24.92a7,7,0,0,1,6.75-7.17,6.81,6.81,0,0,1,6.55,7.17c-.09,3.94-3.09,7.17-6.77,7.17a6.81,6.81,0,0,1-6.52-7.17Zm-.09,0a6.88,6.88,0,0,0,6.6,7.26,7.14,7.14,0,0,0,6.83-7.26,6.86,6.86,0,0,0-6.6-7.26A7.14,7.14,0,0,0,59,24.92Z" style="fill: #5f2900;fill-rule: evenodd"/>
<path d="M59.07,24.92a7.11,7.11,0,0,1,6.8-7.23,6.82,6.82,0,0,1,6.58,7.23,7.09,7.09,0,0,1-6.8,7.23,6.85,6.85,0,0,1-6.58-7.23Zm-.09,0a6.94,6.94,0,0,0,6.66,7.31,7.2,7.2,0,0,0,6.89-7.31,6.94,6.94,0,0,0-6.66-7.31A7.18,7.18,0,0,0,59,24.92Z" style="fill: #5f2900;fill-rule: evenodd"/>
<path d="M59,24.92a7.17,7.17,0,0,1,6.86-7.29,6.89,6.89,0,0,1,6.63,7.29,7.15,7.15,0,0,1-6.86,7.29A6.91,6.91,0,0,1,59,24.92Zm-.09,0a7,7,0,0,0,6.72,7.37,7.26,7.26,0,0,0,6.94-7.37,7,7,0,0,0-6.72-7.37c-3.77,0-6.86,3.29-6.94,7.37Z" style="fill: #602900;fill-rule: evenodd"/>
<path d="M59,24.92a7.23,7.23,0,0,1,6.92-7.34,7,7,0,0,1,6.69,7.34,7.21,7.21,0,0,1-6.92,7.34A7,7,0,0,1,59,24.92Zm-.09,0a7.06,7.06,0,0,0,6.77,7.43,7.3,7.3,0,0,0,7-7.43,7,7,0,0,0-6.77-7.43c-3.8,0-6.92,3.32-7,7.43Z" style="fill: #612a00;fill-rule: evenodd"/>
<path d="M58.9,24.92c.09-4.08,3.2-7.4,7-7.4a7,7,0,0,1,6.75,7.4,7.27,7.27,0,0,1-7,7.4,7,7,0,0,1-6.75-7.4Zm-.06,0a7.06,7.06,0,0,0,6.8,7.48,7.36,7.36,0,0,0,7.06-7.48,7.1,7.1,0,0,0-6.83-7.48,7.34,7.34,0,0,0-7,7.48Z" style="fill: #622a00;fill-rule: evenodd"/>
<path d="M58.88,24.92c.06-4.11,3.2-7.46,7-7.46a7.07,7.07,0,0,1,6.8,7.46,7.33,7.33,0,0,1-7,7.46,7.05,7.05,0,0,1-6.77-7.46Zm-.09,0a7.12,7.12,0,0,0,6.86,7.54,7.42,7.42,0,0,0,7.11-7.54,7.15,7.15,0,0,0-6.89-7.54,7.4,7.4,0,0,0-7.09,7.54Z" style="fill: #622a00;fill-rule: evenodd"/>
<path d="M58.82,24.92a7.37,7.37,0,0,1,7.06-7.51,7.13,7.13,0,0,1,6.86,7.51,7.39,7.39,0,0,1-7.09,7.51,7.11,7.11,0,0,1-6.83-7.51Zm-.09,0a7.2,7.2,0,0,0,6.92,7.6,7.48,7.48,0,0,0,7.17-7.6,7.21,7.21,0,0,0-6.94-7.6,7.46,7.46,0,0,0-7.14,7.6Z" style="fill: #632b00;fill-rule: evenodd"/>
<path d="M58.76,24.92a7.43,7.43,0,0,1,7.11-7.57,7.18,7.18,0,0,1,6.92,7.57,7.45,7.45,0,0,1-7.14,7.57,7.15,7.15,0,0,1-6.89-7.57Zm-.09,0a7.26,7.26,0,0,0,7,7.65c3.91,0,7.14-3.43,7.23-7.65a7.27,7.27,0,0,0-7-7.65c-3.91,0-7.14,3.43-7.2,7.65Z" style="fill: #642b00;fill-rule: evenodd"/>
<path d="M58.71,24.92a7.49,7.49,0,0,1,7.17-7.63,7.24,7.24,0,0,1,7,7.63c-.09,4.22-3.29,7.63-7.2,7.63s-7-3.43-6.94-7.63Zm-.09,0a7.32,7.32,0,0,0,7,7.71c4,0,7.2-3.46,7.29-7.71a7.33,7.33,0,0,0-7.06-7.71c-3.94,0-7.2,3.46-7.26,7.71Z" style="fill: #652b00;fill-rule: evenodd"/>
<path d="M58.65,24.92a7.55,7.55,0,0,1,7.23-7.68,7.3,7.3,0,0,1,7,7.68c-.09,4.25-3.32,7.68-7.26,7.68s-7.06-3.43-7-7.68Zm-.09,0a7.38,7.38,0,0,0,7.09,7.77c4,0,7.26-3.49,7.34-7.77a7.39,7.39,0,0,0-7.11-7.77,7.62,7.62,0,0,0-7.31,7.77Z" style="fill: #662c00;fill-rule: evenodd"/>
<path d="M58.59,24.92c.06-4.28,3.34-7.74,7.29-7.74A7.36,7.36,0,0,1,73,24.92c-.09,4.28-3.34,7.74-7.31,7.74s-7.11-3.46-7.06-7.74Zm-.09,0c-.06,4.31,3.15,7.82,7.14,7.82A7.66,7.66,0,0,0,73,24.92a7.39,7.39,0,0,0-7.14-7.82,7.68,7.68,0,0,0-7.37,7.82Z" style="fill: #662c00;fill-rule: evenodd"/>
<path d="M58.54,24.92c.06-4.31,3.37-7.8,7.34-7.8A7.38,7.38,0,0,1,73,24.92a7.65,7.65,0,0,1-7.34,7.8c-4,0-7.17-3.49-7.11-7.8Zm-.09,0a7.49,7.49,0,0,0,7.2,7.88,7.72,7.72,0,0,0,7.43-7.88A7.45,7.45,0,0,0,65.88,17c-4,0-7.34,3.51-7.43,7.88Z" style="fill: #672c00;fill-rule: evenodd"/>
<path d="M58.48,24.92c.09-4.34,3.37-7.85,7.4-7.85A7.44,7.44,0,0,1,73,24.92a7.71,7.71,0,0,1-7.4,7.85,7.46,7.46,0,0,1-7.17-7.85Zm-.09,0c-.06,4.39,3.17,7.94,7.26,7.94a7.78,7.78,0,0,0,7.48-7.94,7.55,7.55,0,0,0-7.23-8c-4.08,0-7.43,3.57-7.51,8Z" style="fill: #682d00;fill-rule: evenodd"/>
<path d="M58.42,24.92c.09-4.37,3.4-7.94,7.48-7.91a7.48,7.48,0,0,1,7.2,7.91c-.06,4.37-3.4,7.91-7.46,7.91a7.52,7.52,0,0,1-7.23-7.91Zm-.09,0c-.06,4.42,3.2,8,7.31,8a7.85,7.85,0,0,0,7.54-8c.06-4.42-3.2-8-7.29-8s-7.48,3.6-7.57,8Z" style="fill: #692d00;fill-rule: evenodd"/>
<path d="M58.37,24.92c.09-4.42,3.43-8,7.54-8a7.58,7.58,0,0,1,7.26,8c-.06,4.39-3.43,8-7.51,8a7.58,7.58,0,0,1-7.29-8Zm-.06,0A7.61,7.61,0,0,0,65.65,33a7.91,7.91,0,0,0,7.6-8.05c.06-4.45-3.23-8.08-7.34-8.08s-7.54,3.63-7.6,8.08Z" style="fill: #692d00;fill-rule: evenodd"/>
<path d="M58.31,24.92c.09-4.45,3.46-8.05,7.6-8.05s7.37,3.6,7.31,8.05a7.88,7.88,0,0,1-7.57,8,7.64,7.64,0,0,1-7.34-8Zm-.06,0A7.67,7.67,0,0,0,65.65,33a8,8,0,0,0,7.65-8.11c.06-4.48-3.26-8.14-7.4-8.14s-7.6,3.66-7.65,8.14Z" style="fill: #6a2e00;fill-rule: evenodd"/>
<path d="M58.28,24.92c.06-4.48,3.46-8.11,7.63-8.11s7.43,3.63,7.37,8.11A7.94,7.94,0,0,1,65.65,33a7.64,7.64,0,0,1-7.37-8.08Zm-.09,0a7.77,7.77,0,0,0,7.46,8.19c4.2,0,7.63-3.69,7.71-8.19s-3.29-8.19-7.46-8.19-7.65,3.66-7.71,8.19Z" style="fill: #6b2e00;fill-rule: evenodd"/>
<path d="M58.22,24.92c.06-4.51,3.49-8.16,7.68-8.16s7.48,3.66,7.43,8.16-3.51,8.16-7.68,8.14a7.7,7.7,0,0,1-7.43-8.14Zm-.09,0c-.09,4.54,3.29,8.25,7.51,8.25s7.68-3.71,7.77-8.25-3.29-8.25-7.51-8.25-7.71,3.69-7.77,8.25Z" style="fill: #6c2e00;fill-rule: evenodd"/>
<path d="M58.17,24.92c.06-4.54,3.51-8.22,7.74-8.22s7.54,3.69,7.48,8.22-3.54,8.22-7.74,8.22a7.8,7.8,0,0,1-7.48-8.22Zm-.09,0c-.09,4.56,3.32,8.31,7.57,8.31s7.74-3.71,7.82-8.31-3.32-8.31-7.57-8.31-7.77,3.71-7.82,8.31Z" style="fill: #6c2f00;fill-rule: evenodd"/>
<path d="M58.11,24.92c.06-4.56,3.54-8.28,7.8-8.28s7.6,3.71,7.54,8.28-3.57,8.28-7.8,8.28S58,29.48,58.11,24.92Zm-.09,0c-.06,4.62,3.34,8.36,7.63,8.36s7.8-3.74,7.88-8.36-3.34-8.36-7.63-8.36S58.08,20.3,58,24.92Z" style="fill: #6d2f00;fill-rule: evenodd"/>
<path d="M58.05,24.92c.06-4.59,3.57-8.33,7.85-8.33s7.65,3.74,7.6,8.33-3.6,8.33-7.85,8.33-7.68-3.74-7.6-8.33Zm-.09,0c-.06,4.65,3.37,8.42,7.68,8.42s7.85-3.77,7.91-8.42-3.34-8.42-7.65-8.42S58.05,20.27,58,24.92Z" style="fill: #6e2f00;fill-rule: evenodd"/>
<path d="M58,24.92c.09-4.65,3.6-8.39,7.91-8.39s7.71,3.77,7.65,8.39-3.63,8.39-7.91,8.39S57.94,29.54,58,24.92Zm-.09,0c-.06,4.68,3.4,8.48,7.74,8.48s7.91-3.8,8-8.48-3.37-8.48-7.71-8.48-7.91,3.8-8,8.48Z" style="fill: #6f3000;fill-rule: evenodd"/>
<path d="M57.94,24.92c.09-4.68,3.63-8.45,8-8.45s7.77,3.77,7.68,8.45S70,33.36,65.65,33.36s-7.77-3.8-7.71-8.45Zm-.09,0c-.06,4.71,3.43,8.53,7.8,8.53s8-3.83,8-8.53-3.4-8.53-7.77-8.53-8,3.83-8.05,8.53Z" style="fill: #703000;fill-rule: evenodd"/>
<path d="M57.88,24.92c.09-4.71,3.66-8.5,8-8.5s7.82,3.8,7.74,8.5-3.66,8.5-8,8.5-7.82-3.83-7.77-8.5Zm-.09,0c-.06,4.73,3.46,8.59,7.85,8.59s8-3.86,8.08-8.59-3.43-8.59-7.82-8.59-8,3.83-8.11,8.59Z" style="fill: #703000;fill-rule: evenodd"/>
<path d="M57.83,24.92c.09-4.73,3.69-8.56,8.08-8.56s7.88,3.83,7.8,8.56S70,33.48,65.65,33.48s-7.88-3.83-7.82-8.56Zm-.09,0c-.06,4.76,3.46,8.65,7.91,8.65s8.08-3.88,8.14-8.65-3.46-8.65-7.88-8.65-8.08,3.86-8.16,8.65Z" style="fill: #713100;fill-rule: evenodd"/>
<path d="M57.77,24.92c.09-4.76,3.71-8.62,8.14-8.62s7.94,3.86,7.85,8.62S70,33.53,65.65,33.53s-7.94-3.86-7.88-8.62Zm-.06,0c-.09,4.79,3.46,8.7,7.94,8.7s8.11-3.88,8.19-8.7-3.49-8.7-7.94-8.7-8.14,3.88-8.19,8.7Z" style="fill: #723100;fill-rule: evenodd"/>
<path d="M57.74,24.92c.06-4.79,3.71-8.67,8.16-8.67s8,3.88,7.91,8.67-3.74,8.67-8.16,8.67-8-3.88-7.91-8.67Zm-.09,0c-.09,4.85,3.49,8.76,8,8.76s8.16-3.91,8.25-8.76-3.51-8.76-8-8.76-8.19,3.91-8.25,8.76Z" style="fill: #733100;fill-rule: evenodd"/>
<path d="M57.69,24.92c.06-4.82,3.74-8.73,8.22-8.73s8.05,3.91,8,8.73-3.77,8.73-8.22,8.73-8.05-3.91-8-8.73Zm-.09,0c-.09,4.88,3.51,8.82,8.05,8.82s8.22-3.94,8.31-8.82-3.54-8.82-8.05-8.82S57.66,20,57.6,24.92Z" style="fill: #733200;fill-rule: evenodd"/>
<path d="M57.63,24.92c.06-4.85,3.77-8.79,8.28-8.79s8.08,3.94,8,8.79-3.8,8.79-8.28,8.79-8.11-3.94-8-8.79Zm-.09,0c-.09,4.9,3.54,8.87,8.11,8.87s8.28-4,8.36-8.87S70.44,16,65.91,16s-8.31,4-8.36,8.87Z" style="fill: #743200;fill-rule: evenodd"/>
<path d="M57.57,24.92c.06-4.9,3.8-8.84,8.33-8.84S74,20,74,24.92s-3.83,8.84-8.33,8.84-8.16-4-8.08-8.84Zm-.09,0c-.09,4.93,3.57,8.93,8.14,8.93s8.36-4,8.45-8.93S70.5,16,65.91,16s-8.33,4-8.42,8.93Z" style="fill: #753200;fill-rule: evenodd"/>
<path d="M57.51,24.92C57.6,20,61.34,16,65.91,16s8.19,4,8.14,8.9-3.86,8.9-8.39,8.9-8.22-4-8.14-8.9Zm-.09,0c-.09,5,3.6,9,8.19,9s8.42-4,8.5-9-3.6-9-8.22-9-8.39,4-8.48,9Z" style="fill: #763300;fill-rule: evenodd"/>
<path d="M57.46,24.92c.09-5,3.86-9,8.45-9s8.25,4,8.19,9-3.88,9-8.48,9-8.25-4-8.16-9Zm-.09,0c-.09,5,3.63,9,8.25,9s8.48-4.05,8.53-9-3.6-9-8.25-9.07-8.45,4.05-8.53,9.07Z" style="fill: #763300;fill-rule: evenodd"/>
<path d="M57.4,24.92c.09-5,3.88-9,8.5-9s8.31,4.05,8.22,9-3.88,9-8.5,9-8.31-4-8.22-9Zm-.09,0c-.06,5,3.66,9.1,8.31,9.1s8.53-4.05,8.59-9.1-3.63-9.13-8.31-9.13-8.5,4.08-8.59,9.13Z" style="fill: #730;fill-rule: evenodd"/>
<path d="M57.34,24.92c.09-5,3.91-9.1,8.56-9.1s8.36,4.08,8.28,9.1S70.27,34,65.62,34s-8.33-4.05-8.28-9.07Zm-.09,0c-.06,5.07,3.69,9.16,8.36,9.16s8.59-4.08,8.65-9.16-3.66-9.18-8.36-9.18-8.56,4.11-8.65,9.18Z" style="fill: #783400;fill-rule: evenodd"/>
<path d="M57.29,24.92c.09-5,3.94-9.16,8.62-9.16s8.42,4.11,8.33,9.16S70.33,34,65.62,34,57.23,30,57.29,24.92Zm-.09,0c-.06,5.1,3.71,9.21,8.42,9.21s8.62-4.11,8.7-9.21-3.69-9.24-8.42-9.24-8.62,4.14-8.7,9.24Z" style="fill: #793400;fill-rule: evenodd"/>
<path d="M57.23,24.92c.09-5.07,4-9.21,8.67-9.21s8.48,4.14,8.39,9.21-3.94,9.18-8.67,9.18S57.17,30,57.23,24.92Zm-.06,0c-.09,5.13,3.71,9.27,8.45,9.3s8.67-4.17,8.76-9.3-3.71-9.3-8.48-9.3-8.67,4.17-8.73,9.3Z" style="fill: #7a3400;fill-rule: evenodd"/>
<path d="M57.17,24.92c.09-5.13,4-9.27,8.73-9.27s8.53,4.17,8.45,9.27-4,9.27-8.73,9.27-8.5-4.17-8.45-9.27Zm-.06,0c-.09,5.16,3.71,9.35,8.5,9.35s8.73-4.2,8.82-9.35-3.74-9.35-8.53-9.35-8.73,4.2-8.79,9.35Z" style="fill: #7a3500;fill-rule: evenodd"/>
<path d="M57.15,24.92c.06-5.16,4-9.33,8.76-9.33s8.59,4.17,8.5,9.33-4,9.33-8.79,9.33-8.56-4.2-8.48-9.33Zm-.09,0c-.09,5.19,3.74,9.41,8.56,9.41s8.79-4.22,8.87-9.41-3.77-9.41-8.59-9.41-8.79,4.22-8.84,9.41Z" style="fill: #7b3500;fill-rule: evenodd"/>
<path d="M57.09,24.92c.06-5.19,4-9.38,8.82-9.38s8.65,4.2,8.56,9.38-4,9.38-8.84,9.38S57,30.08,57.09,24.92Zm-.09,0c-.09,5.22,3.77,9.47,8.62,9.47s8.84-4.25,8.93-9.47-3.8-9.47-8.65-9.47-8.82,4.22-8.9,9.47Z" style="fill: #7c3500;fill-rule: evenodd"/>
<path d="M57,24.92c.09-5.22,4.05-9.44,8.87-9.44s8.7,4.22,8.62,9.44-4.05,9.44-8.9,9.44S56.95,30.13,57,24.92Zm-.09,0c-.09,5.24,3.8,9.52,8.67,9.52s8.9-4.28,9-9.52-3.83-9.52-8.7-9.52-8.87,4.25-9,9.52Z" style="fill: #7d3600;fill-rule: evenodd"/>
<path d="M57,24.92c.09-5.24,4.08-9.5,8.93-9.5s8.76,4.25,8.67,9.5-4.08,9.5-9,9.5-8.73-4.25-8.65-9.5Zm-.09,0c-.09,5.27,3.83,9.58,8.73,9.58s9-4.28,9-9.58-3.86-9.58-8.76-9.58-8.93,4.28-9,9.58Z" style="fill: #7d3600;fill-rule: evenodd"/>
<path d="M56.92,24.92c.09-5.27,4.11-9.55,9-9.55s8.79,4.28,8.73,9.55-4.11,9.55-9,9.55-8.79-4.28-8.7-9.55Zm-.09,0c-.09,5.33,3.86,9.64,8.79,9.64s9-4.31,9.07-9.64-3.83-9.64-8.79-9.64-9,4.31-9.07,9.64Z" style="fill: #7e3600;fill-rule: evenodd"/>
<path d="M56.86,24.92c.09-5.3,4.14-9.61,9-9.61s8.84,4.31,8.79,9.61-4.14,9.61-9.07,9.61-8.84-4.31-8.76-9.61Zm-.09,0c-.09,5.36,3.88,9.69,8.84,9.69s9-4.34,9.13-9.69-3.86-9.69-8.84-9.69-9,4.34-9.13,9.69Z" style="fill: #7f3700;fill-rule: evenodd"/>
<path d="M56.81,24.92c.09-5.36,4.17-9.67,9.1-9.67s8.9,4.34,8.82,9.67-4.14,9.67-9.1,9.67-8.9-4.34-8.82-9.67Zm-.09,0c-.09,5.39,3.91,9.75,8.9,9.75s9.1-4.37,9.18-9.75-3.88-9.75-8.9-9.75-9.1,4.37-9.18,9.75Z" style="fill: #803700;fill-rule: evenodd"/>
<path d="M56.75,24.92c.09-5.39,4.2-9.72,9.16-9.72s9,4.37,8.87,9.72-4.17,9.72-9.16,9.72-9-4.37-8.87-9.72Zm-.09,0c-.09,5.41,3.94,9.81,9,9.81s9.16-4.39,9.24-9.81S71,15.11,65.93,15.11s-9.18,4.39-9.27,9.81Z" style="fill: #813800;fill-rule: evenodd"/>
<path d="M56.69,24.92c.09-5.41,4.22-9.78,9.24-9.78s9,4.37,8.9,9.78-4.2,9.78-9.21,9.78-9-4.39-8.93-9.78Zm-.09,0c-.06,5.44,4,9.86,9,9.86s9.21-4.42,9.3-9.86-3.94-9.86-9-9.86-9.24,4.42-9.33,9.86Z" style="fill: #833800;fill-rule: evenodd"/>
<path d="M56.64,24.92c.09-5.44,4.25-9.84,9.3-9.84s9,4.39,9,9.84-4.22,9.84-9.27,9.84-9-4.39-9-9.84Zm-.06,0c-.09,5.47,4,9.92,9,9.92s9.27-4.45,9.35-9.92S71,15,65.93,15s-9.27,4.42-9.35,9.92Z" style="fill: #843900;fill-rule: evenodd"/>
<path d="M56.61,24.92c.06-5.47,4.25-9.89,9.33-9.89s9.1,4.42,9,9.89-4.25,9.89-9.33,9.89-9.1-4.42-9-9.89Zm-.09,0c-.09,5.5,4,10,9.1,10s9.33-4.45,9.41-10-4-10-9.1-10-9.33,4.45-9.41,10Z" style="fill: #863a00;fill-rule: evenodd"/>
<path d="M56.55,24.92c.09-5.5,4.28-9.95,9.38-9.95s9.16,4.45,9.07,9.95-4.28,9.95-9.38,9.95-9.16-4.45-9.07-9.95Zm-.09,0c-.09,5.56,4,10,9.16,10s9.38-4.48,9.47-10-4-10-9.16-10-9.38,4.48-9.47,10Z" style="fill: #873a00;fill-rule: evenodd"/>
<path d="M56.49,24.92c.09-5.53,4.31-10,9.44-10s9.21,4.48,9.13,10-4.31,10-9.44,10-9.21-4.48-9.13-10Zm-.09,0C56.32,30.5,60.43,35,65.62,35s9.44-4.51,9.52-10.09S71.09,14.83,65.93,14.8s-9.44,4.54-9.52,10.12Z" style="fill: #883b00;fill-rule: evenodd"/>
<path d="M56.44,24.92c.09-5.56,4.34-10.09,9.5-10.06s9.27,4.51,9.18,10.06S70.78,35,65.62,35s-9.27-4.51-9.18-10.06Zm-.09,0c-.09,5.61,4.05,10.15,9.27,10.15s9.5-4.54,9.58-10.15-4.08-10.18-9.27-10.18-9.5,4.56-9.58,10.18Z" style="fill: #8a3b00;fill-rule: evenodd"/>
<path d="M56.38,24.92c.09-5.61,4.37-10.15,9.55-10.15s9.33,4.56,9.24,10.15S70.81,35,65.62,35,56.3,30.5,56.38,24.92Zm-.09,0c-.09,5.64,4.08,10.2,9.33,10.2s9.52-4.56,9.61-10.2-4.08-10.23-9.3-10.23-9.55,4.59-9.64,10.23Z" style="fill: #8b3c00;fill-rule: evenodd"/>
<path d="M56.32,24.92c.09-5.64,4.39-10.2,9.61-10.2s9.38,4.56,9.3,10.2-4.39,10.18-9.61,10.18-9.38-4.56-9.3-10.18Zm-.09,0c-.09,5.67,4.11,10.26,9.38,10.26s9.58-4.59,9.67-10.26-4.11-10.29-9.35-10.29-9.61,4.62-9.69,10.29Z" style="fill: #8d3d00;fill-rule: evenodd"/>
<path d="M56.27,24.92c.09-5.67,4.42-10.26,9.67-10.26s9.41,4.59,9.33,10.26-4.39,10.23-9.64,10.23-9.44-4.59-9.35-10.23Zm-.09,0c-.09,5.7,4.14,10.32,9.44,10.35s9.64-4.65,9.72-10.35-4.14-10.35-9.41-10.35-9.67,4.62-9.75,10.35Z" style="fill: #8e3d00;fill-rule: evenodd"/>
<path d="M56.21,24.92c.09-5.7,4.45-10.32,9.72-10.32s9.47,4.62,9.38,10.32-4.42,10.32-9.69,10.29-9.5-4.59-9.41-10.29Zm-.09,0c-.09,5.73,4.17,10.4,9.5,10.4s9.69-4.68,9.78-10.4-4.14-10.4-9.47-10.4-9.72,4.65-9.81,10.4Z" style="fill: #903e00;fill-rule: evenodd"/>
<path d="M56.15,24.92c.09-5.73,4.48-10.37,9.78-10.37s9.52,4.65,9.44,10.37-4.45,10.37-9.75,10.37-9.55-4.65-9.47-10.37Zm-.09,0c-.09,5.75,4.2,10.46,9.55,10.46s9.75-4.68,9.84-10.46-4.17-10.46-9.52-10.46-9.75,4.68-9.86,10.46Z" style="fill: #913f00;fill-rule: evenodd"/>
<path d="M56.1,24.92c.09-5.75,4.51-10.43,9.84-10.43s9.58,4.68,9.5,10.43S71,35.35,65.62,35.35,56,30.67,56.1,24.92Zm-.06,0c-.11,5.81,4.2,10.52,9.58,10.52s9.81-4.71,9.89-10.52S71.32,14.4,65.93,14.4,56.13,19.11,56,24.92Z" style="fill: #923f00;fill-rule: evenodd"/>
<path d="M56,24.92c.11-5.78,4.54-10.49,9.89-10.49s9.64,4.71,9.55,10.49S71,35.4,65.62,35.4,56,30.7,56,24.92Zm-.06,0c-.11,5.84,4.22,10.57,9.64,10.57s9.86-4.73,9.95-10.57-4.22-10.57-9.64-10.57S56.07,19.08,56,24.92Z" style="fill: #944000;fill-rule: evenodd"/>
<path d="M56,24.92c.09-5.84,4.54-10.54,9.92-10.54s9.69,4.73,9.61,10.54S71,35.46,65.62,35.46,55.9,30.73,56,24.92Zm-.09,0c-.09,5.87,4.25,10.63,9.69,10.63s9.92-4.76,10-10.63-4.25-10.63-9.69-10.63S56,19,55.93,24.92Z" style="fill: #954000;fill-rule: evenodd"/>
<path d="M56,24.92c.09-5.87,4.56-10.6,10-10.6s9.75,4.76,9.67,10.6-4.56,10.6-10,10.6S55.87,30.76,56,24.92Zm-.09,0c-.09,5.9,4.28,10.69,9.75,10.69s10-4.79,10.06-10.69S71.4,14.23,65.93,14.23,56,19,55.87,24.92Z" style="fill: #974100;fill-rule: evenodd"/>
<path d="M55.9,24.92c.09-5.9,4.59-10.66,10-10.66S75.74,19,75.66,24.92s-4.59,10.66-10,10.66-9.81-4.79-9.72-10.66Zm-.09,0c-.09,5.92,4.28,10.74,9.81,10.74s10-4.82,10.12-10.74-4.31-10.74-9.81-10.74S55.9,19,55.81,24.92Z" style="fill: #984200;fill-rule: evenodd"/>
<path d="M55.84,24.92C55.93,19,60.43,14.2,65.93,14.2S75.8,19,75.71,24.92,71.09,35.63,65.62,35.63s-9.86-4.79-9.78-10.71Zm-.09,0c-.09,6,4.31,10.8,9.84,10.8s10.09-4.85,10.2-10.8-4.34-10.8-9.86-10.8-10.09,4.82-10.18,10.8Z" style="fill: #9a4200;fill-rule: evenodd"/>
<path d="M55.79,24.92c.09-6,4.62-10.77,10.15-10.77S75.86,19,75.77,24.92,71.12,35.69,65.62,35.69s-9.92-4.82-9.84-10.77Zm-.09,0c-.09,6,4.34,10.86,9.89,10.86s10.15-4.85,10.23-10.86-4.34-10.86-9.89-10.86S55.79,18.91,55.7,24.92Z" style="fill: #9b4300;fill-rule: evenodd"/>
<path d="M55.73,24.92c.09-6,4.65-10.83,10.2-10.83s10,4.85,9.86,10.83-4.65,10.83-10.2,10.83-9.95-4.85-9.86-10.83Zm-.09,0c-.09,6,4.37,10.91,9.95,10.91S75.8,31,75.88,24.92,71.52,14,65.93,14s-10.2,4.88-10.29,10.91Z" style="fill: #9c4300;fill-rule: evenodd"/>
<path d="M55.67,24.92c.09-6,4.68-10.89,10.26-10.89s10,4.88,9.92,10.89S71.18,35.8,65.59,35.8s-10-4.88-9.92-10.89Zm-.09,0c-.09,6.07,4.39,11,10,11s10.26-4.9,10.35-11-4.39-11-10-11-10.23,4.9-10.35,11Z" style="fill: #9e4400;fill-rule: evenodd"/>
<path d="M55.62,24.92C55.7,18.88,60.32,14,65.93,14s10.09,4.9,10,10.94S71.21,35.86,65.59,35.86s-10.06-4.9-10-10.94Zm-.09,0c-.09,6.09,4.42,11,10.06,11S75.91,31,76,24.92s-4.42-11-10.06-11-10.29,4.93-10.4,11Z" style="fill: #9f4500;fill-rule: evenodd"/>
<path d="M55.56,24.92c.11-6.09,4.73-11,10.37-11s10.12,4.93,10,11-4.73,11-10.37,11-10.12-4.93-10-11Zm-.09,0C55.39,31,59.92,36,65.59,36S76,31,76.05,24.92,71.63,13.83,65.93,13.83s-10.35,5-10.46,11.08Z" style="fill: #a14500;fill-rule: evenodd"/>
<path d="M55.5,24.92c.11-6.12,4.76-11.06,10.43-11.06S76.11,18.79,76,24.92,71.26,36,65.59,36,55.42,31,55.5,24.92Zm-.06,0c-.11,6.15,4.45,11.14,10.15,11.14s10.43-5,10.52-11.14S71.66,13.78,65.93,13.78s-10.4,5-10.49,11.14Z" style="fill: #a24600;fill-rule: evenodd"/>
<path d="M55.47,24.92c.09-6.15,4.76-11.14,10.46-11.11s10.23,5,10.15,11.11S71.29,36,65.59,36,55.36,31,55.47,24.92Zm-.09,0c-.11,6.18,4.48,11.2,10.2,11.2s10.49-5,10.57-11.2-4.48-11.2-10.23-11.23-10.46,5-10.54,11.23Z" style="fill: #a44700;fill-rule: evenodd"/>
<path d="M55.42,24.92c.09-6.18,4.79-11.2,10.52-11.2s10.29,5,10.2,11.2S71.32,36.09,65.59,36.09s-10.29-5-10.18-11.17Zm-.09,0c-.11,6.21,4.51,11.25,10.26,11.25s10.52-5,10.63-11.25S71.72,13.63,65.93,13.63s-10.52,5-10.6,11.28Z" style="fill: #a54700;fill-rule: evenodd"/>
<path d="M55.36,24.92c.09-6.21,4.82-11.25,10.57-11.25s10.35,5,10.26,11.25-4.85,11.23-10.6,11.23-10.35-5-10.23-11.23Zm-.09,0c-.09,6.24,4.54,11.31,10.32,11.31s10.57-5,10.69-11.31S71.74,13.58,65.93,13.58,55.36,18.65,55.28,24.92Z" style="fill: #a64800;fill-rule: evenodd"/>
<path d="M55.3,24.92c.09-6.24,4.85-11.31,10.63-11.31s10.4,5.07,10.32,11.31S71.38,36.2,65.59,36.2s-10.4-5-10.29-11.28Zm-.09,0c-.09,6.29,4.56,11.37,10.37,11.37s10.63-5.07,10.74-11.37-4.56-11.4-10.4-11.4-10.63,5.1-10.71,11.4Z" style="fill: #a84800;fill-rule: evenodd"/>
<path d="M55.25,24.92c.09-6.26,4.88-11.37,10.69-11.37s10.46,5.1,10.37,11.37S71.4,36.28,65.59,36.26,55.16,31.18,55.25,24.92Zm-.09,0c-.09,6.32,4.56,11.42,10.43,11.45s10.69-5.13,10.77-11.45S71.8,13.46,65.93,13.46,55.25,18.6,55.16,24.92Z" style="fill: #a94900;fill-rule: evenodd"/>
<path d="M55.19,24.92c.09-6.32,4.9-11.42,10.74-11.42s10.52,5.13,10.43,11.42S71.43,36.34,65.59,36.34s-10.49-5.13-10.4-11.42Zm-.09,0C55,31.27,59.7,36.43,65.59,36.43s10.74-5.16,10.83-11.51S71.83,13.41,65.93,13.41,55.22,18.57,55.11,24.92Z" style="fill: #ab4a00;fill-rule: evenodd"/>
<path d="M55.13,24.92c.09-6.35,4.93-11.48,10.8-11.48s10.57,5.13,10.46,11.48S71.46,36.4,65.59,36.4,55,31.24,55.13,24.92Zm-.09,0C55,31.29,59.67,36.48,65.59,36.48s10.8-5.19,10.89-11.57S71.86,13.35,65.93,13.35,55.16,18.54,55,24.92Z" style="fill: #ac4a00;fill-rule: evenodd"/>
<path d="M55.08,24.92c.11-6.38,5-11.54,10.86-11.54s10.63,5.16,10.52,11.54-5,11.54-10.86,11.54S55,31.27,55.08,24.92Zm-.09,0c-.09,6.41,4.65,11.62,10.6,11.62s10.86-5.22,10.94-11.62-4.65-11.62-10.6-11.62S55.11,18.48,55,24.92Z" style="fill: #ae4b00;fill-rule: evenodd"/>
<path d="M55,24.92c.11-6.41,5-11.59,10.91-11.59s10.69,5.19,10.57,11.59-5,11.59-10.91,11.59S54.94,31.32,55,24.92Zm-.09,0c-.09,6.43,4.68,11.68,10.66,11.68s10.91-5.24,11-11.68S71.91,13.24,66,13.24,55,18.45,54.94,24.92Z" style="fill: #af4b00;fill-rule: evenodd"/>
<path d="M55,24.92c.11-6.43,5-11.65,11-11.65s10.71,5.22,10.6,11.65-5,11.65-11,11.65S54.88,31.35,55,24.92Zm-.06,0c-.11,6.46,4.68,11.74,10.69,11.74s11-5.24,11.06-11.74S71.94,13.18,66,13.18,55,18.43,54.91,24.92Z" style="fill: #b04c00;fill-rule: evenodd"/>
<path d="M54.91,24.92C55,18.45,60,13.21,66,13.21s10.77,5.24,10.66,11.71-5,11.71-11,11.71S54.82,31.38,54.91,24.92Zm-.06,0c-.11,6.52,4.71,11.79,10.74,11.79s11-5.27,11.11-11.79S72,13.12,66,13.12s-11,5.27-11.11,11.79Z" style="fill: #b24d00;fill-rule: evenodd"/>
<path d="M54.88,24.92c.09-6.49,5-11.76,11.08-11.76s10.8,5.27,10.71,11.76S71.6,36.68,65.59,36.68,54.77,31.41,54.88,24.92Zm-.09,0c-.11,6.55,4.73,11.85,10.8,11.85s11.06-5.3,11.17-11.85S72,13.07,66,13.07s-11.08,5.3-11.17,11.85Z" style="fill: #b34d00;fill-rule: evenodd"/>
<path d="M54.82,24.92C54.91,18.37,59.9,13.1,66,13.1s10.86,5.3,10.77,11.82-5.1,11.82-11.14,11.82-10.89-5.3-10.77-11.82Zm-.09,0c-.11,6.58,4.76,11.91,10.86,11.91s11.11-5.33,11.23-11.91S72.06,13,66,13,54.82,18.34,54.74,24.92Z" style="fill: #b54e00;fill-rule: evenodd"/>
<path d="M54.77,24.92C54.85,18.34,59.87,13,66,13s10.91,5.33,10.83,11.88-5.13,11.88-11.2,11.88S54.65,31.46,54.77,24.92Zm-.09,0c-.11,6.6,4.79,12,10.91,12s11.17-5.36,11.28-12S72.09,13,66,13s-11.2,5.36-11.28,12Z" style="fill: #b64f00;fill-rule: evenodd"/>
<path d="M54.71,24.92C54.79,18.31,59.84,13,66,13s11,5.33,10.89,11.93S71.69,36.85,65.59,36.85s-11-5.36-10.89-11.93Zm-.09,0c-.11,6.63,4.82,12,11,12s11.23-5.39,11.34-12-4.82-12-11-12-11.23,5.39-11.34,12Z" style="fill: #b84f00;fill-rule: evenodd"/>
<path d="M54.65,24.92c.11-6.63,5.16-12,11.31-12s11,5.36,10.94,12-5.16,12-11.31,12-11.06-5.36-10.94-12Zm-.09,0C54.48,31.58,59.41,37,65.59,37S76.88,31.58,77,24.92,72.14,12.84,66,12.84s-11.28,5.39-11.4,12.08Z" style="fill: #b95000;fill-rule: evenodd"/>
<path d="M54.6,24.92c.11-6.66,5.19-12,11.37-12s11.08,5.39,11,12S71.77,37,65.59,37s-11.11-5.39-11-12Zm-.09,0C54.43,31.61,59.36,37,65.59,37S76.93,31.63,77,24.92,72.17,12.78,66,12.78,54.62,18.2,54.51,24.92Z" style="fill: #ba5000;fill-rule: evenodd"/>
<path d="M54.54,24.92c.11-6.69,5.22-12.1,11.42-12.1s11.14,5.41,11,12.1S71.8,37,65.59,37s-11.14-5.41-11.06-12.1Zm-.09,0c-.09,6.72,4.88,12.19,11.14,12.19S77,31.66,77.07,24.92,72.2,12.73,66,12.73s-11.4,5.44-11.51,12.19Z" style="fill: #bc5100;fill-rule: evenodd"/>
<path d="M54.48,24.92C54.6,18.2,59.73,12.76,66,12.76S77.16,18.2,77,24.92,71.83,37.08,65.59,37.08,54.4,31.63,54.48,24.92Zm-.09,0c-.09,6.77,4.9,12.25,11.2,12.25S77,31.69,77.13,24.92,72.23,12.67,66,12.64,54.51,18.14,54.4,24.92Z" style="fill: #bd5200;fill-rule: evenodd"/>
<path d="M54.43,24.92C54.54,18.17,59.7,12.67,66,12.7S77.22,18.17,77.1,24.92,71.86,37.13,65.59,37.13,54.34,31.66,54.43,24.92Zm-.09,0c-.09,6.8,4.93,12.3,11.25,12.3s11.48-5.5,11.59-12.3S72.26,12.59,66,12.59,54.45,18.11,54.34,24.92Z" style="fill: #bf5200;fill-rule: evenodd"/>
<path d="M54.37,24.92c.11-6.8,5.3-12.3,11.59-12.3s11.31,5.53,11.2,12.3S71.89,37.19,65.59,37.19s-11.31-5.5-11.23-12.27Zm-.06,0c-.11,6.83,4.93,12.36,11.28,12.36s11.54-5.53,11.65-12.36S72.28,12.53,66,12.53,54.4,18.09,54.31,24.92Z" style="fill: #c05300;fill-rule: evenodd"/>
<path d="M54.34,24.92c.09-6.83,5.3-12.36,11.62-12.36s11.37,5.53,11.25,12.36-5.3,12.33-11.62,12.33S54.23,31.72,54.34,24.92Zm-.09,0c-.11,6.86,5,12.42,11.34,12.42S77.19,31.78,77.3,24.92,72.31,12.47,66,12.47,54.34,18.06,54.26,24.92Z" style="fill: #c25400;fill-rule: evenodd"/>
<path d="M54.28,24.92C54.37,18.06,59.61,12.5,66,12.5s11.42,5.56,11.31,12.42S71.94,37.3,65.59,37.3,54.17,31.75,54.28,24.92Zm-.09,0c-.11,6.89,5,12.47,11.4,12.5s11.65-5.61,11.76-12.5-5-12.5-11.4-12.5S54.28,18,54.2,24.92Z" style="fill: #c35400;fill-rule: evenodd"/>
<path d="M54.23,24.92C54.31,18,59.58,12.44,66,12.44S77.44,18,77.33,24.92,72,37.39,65.59,37.36,54.11,31.8,54.23,24.92Zm-.09,0c-.11,6.92,5,12.56,11.45,12.56S77.3,31.83,77.41,24.92,72.4,12.36,66,12.36,54.26,18,54.14,24.92Z" style="fill: #c45500;fill-rule: evenodd"/>
<path d="M54.17,24.92C54.28,18,59.56,12.39,66,12.39S77.47,18,77.39,24.92,72,37.45,65.59,37.45,54.06,31.83,54.17,24.92Zm-.09,0c-.11,6.94,5,12.61,11.51,12.61s11.76-5.64,11.88-12.61S72.43,12.3,66,12.3,54.2,17.94,54.09,24.92Z" style="fill: #c65500;fill-rule: evenodd"/>
<path d="M54.11,24.92C54.23,18,59.53,12.33,66,12.33S77.53,18,77.44,24.92,72,37.5,65.59,37.5,54,31.86,54.11,24.92Zm-.09,0c-.11,7,5.07,12.67,11.54,12.67S77.41,31.92,77.5,24.92,72.45,12.25,66,12.25,54.14,17.91,54,24.92Z" style="fill: #c75600;fill-rule: evenodd"/>
<path d="M54.06,24.92c.11-7,5.44-12.64,11.91-12.64S77.58,17.94,77.5,24.92,72.06,37.56,65.59,37.56,53.94,31.89,54.06,24.92Zm-.09,0c-.11,7,5.1,12.73,11.59,12.73s11.91-5.7,12-12.73S72.48,12.19,66,12.19s-11.88,5.7-12,12.73Z" style="fill: #c95700;fill-rule: evenodd"/>
<path d="M54,24.92c.11-7,5.47-12.7,12-12.7s11.68,5.7,11.57,12.7-5.44,12.7-12,12.7S53.89,31.92,54,24.92Zm-.09,0C53.8,32,59,37.7,65.57,37.7s12-5.73,12-12.78S72.51,12.13,66,12.13,54,17.86,53.91,24.92Z" style="fill: #ca5700;fill-rule: evenodd"/>
<path d="M53.94,24.92c.11-7.06,5.5-12.76,12-12.76S77.7,17.89,77.58,24.92s-5.47,12.76-12,12.76S53.83,31.95,53.94,24.92Zm-.09,0C53.77,32,59,37.76,65.57,37.76s12-5.75,12.1-12.84S72.54,12.08,66,12.08s-12,5.75-12.1,12.84Z" style="fill: #cc5800;fill-rule: evenodd"/>
<path d="M53.89,24.92C54,17.83,59.41,12.1,66,12.1s11.79,5.73,11.68,12.81-5.5,12.81-12.08,12.81S53.8,32,53.89,24.92Zm-.09,0C53.72,32,59,37.81,65.57,37.81s12-5.78,12.16-12.9S72.57,12,66,12s-12,5.78-12.16,12.9Z" style="fill: #cd5800;fill-rule: evenodd"/>
<path d="M53.83,24.92C53.94,17.8,59.39,12,66,12S77.81,17.8,77.7,24.92,72.17,37.79,65.57,37.79,53.74,32,53.83,24.92Zm-.06,0c-.11,7.14,5.16,13,11.79,13s12.1-5.81,12.22-13S72.6,12,66,12s-12.1,5.78-12.19,13Z" style="fill: #ce5900;fill-rule: evenodd"/>
<path d="M53.77,24.92C53.89,17.77,59.36,12,66,12s11.91,5.78,11.79,12.93S72.2,37.84,65.57,37.84,53.69,32.06,53.77,24.92Zm-.06,0c-.11,7.17,5.19,13,11.85,13s12.16-5.81,12.27-13-5.22-13-11.88-13-12.16,5.81-12.25,13Z" style="fill: #d05a00;fill-rule: evenodd"/>
<path d="M53.74,24.92c.09-7.17,5.58-13,12.22-13s12,5.81,11.85,13-5.58,13-12.25,13-11.93-5.81-11.82-13Zm-.09,0C53.55,32.12,58.88,38,65.57,38S77.78,32.14,77.9,24.92,72.65,11.85,66,11.85s-12.19,5.84-12.3,13.07Z" style="fill: #d15a00;fill-rule: evenodd"/>
<path d="M53.69,24.92c.11-7.2,5.61-13,12.27-13s12,5.84,11.91,13-5.61,13-12.3,13-12-5.84-11.88-13Zm-.09,0C53.49,32.17,58.85,38,65.57,38S77.84,32.17,78,24.92,72.68,11.79,66,11.79,53.72,17.66,53.6,24.92Z" style="fill: #d35b00;fill-rule: evenodd"/>
<path d="M53.63,24.92c.11-7.23,5.64-13.1,12.33-13.1s12.08,5.87,12,13.1S72.28,38,65.57,38s-12-5.87-11.93-13.1Zm-.09,0c-.11,7.29,5.27,13.18,12,13.18S77.9,32.2,78,24.92,72.74,11.74,66,11.74s-12.3,5.9-12.42,13.18Z" style="fill: #d45c00;fill-rule: evenodd"/>
<path d="M53.57,24.92c.11-7.29,5.67-13.15,12.39-13.15s12.13,5.9,12,13.15S72.31,38.07,65.57,38.07s-12.1-5.9-12-13.15Zm-.09,0c-.11,7.31,5.3,13.24,12.08,13.24S78,32.23,78.07,24.92,72.77,11.68,66,11.68,53.6,17.6,53.49,24.92Z" style="fill: #d65c00;fill-rule: evenodd"/>
<path d="M53.52,24.92c.11-7.31,5.7-13.21,12.44-13.21S78.12,17.6,78,24.92s-5.7,13.21-12.47,13.21-12.16-5.92-12-13.21Zm-.09,0c-.11,7.34,5.33,13.29,12.13,13.29s12.42-6,12.53-13.29S72.79,11.62,66,11.62s-12.42,6-12.53,13.29Z" style="fill: #d75d00;fill-rule: evenodd"/>
<path d="M53.46,24.92c.11-7.34,5.73-13.29,12.5-13.27s12.22,5.92,12.1,13.27-5.7,13.27-12.5,13.27-12.22-6-12.1-13.27Zm-.09,0c-.11,7.37,5.36,13.35,12.19,13.35s12.47-6,12.59-13.35S72.82,11.57,66,11.54s-12.47,6-12.59,13.38Z" style="fill: #d85d00;fill-rule: evenodd"/>
<path d="M53.4,24.92c.11-7.37,5.75-13.35,12.56-13.35s12.27,6,12.16,13.35S72.4,38.24,65.57,38.24s-12.27-6-12.16-13.32Zm-.09,0c-.11,7.4,5.39,13.41,12.25,13.41s12.53-6,12.64-13.41S72.85,11.48,66,11.48s-12.53,6-12.64,13.44Z" style="fill: #da5e00;fill-rule: evenodd"/>
<path d="M53.35,24.92c.11-7.4,5.78-13.41,12.61-13.41s12.33,6,12.22,13.41S72.43,38.3,65.57,38.3s-12.33-6-12.22-13.38Zm-.09,0c-.11,7.43,5.41,13.46,12.3,13.46s12.59-6,12.7-13.46S72.88,11.42,66,11.42s-12.59,6-12.7,13.49Z" style="fill: #db5f00;fill-rule: evenodd"/>
<path d="M53.29,24.92C53.4,17.49,59.1,11.45,66,11.45s12.39,6,12.27,13.46S72.45,38.35,65.57,38.35s-12.39-6-12.27-13.44Zm-.09,0c-.11,7.48,5.41,13.52,12.36,13.52s12.64-6,12.76-13.52S72.91,11.37,66,11.37,53.35,17.43,53.21,24.92Z" style="fill: #dd5f00;fill-rule: evenodd"/>
<path d="M53.23,24.92C53.35,17.46,59,11.4,66,11.4s12.42,6.07,12.3,13.52S72.48,38.44,65.57,38.41s-12.44-6-12.33-13.49Zm-.06,0c-.11,7.51,5.41,13.58,12.39,13.61s12.7-6.09,12.81-13.61S72.94,11.31,66,11.31,53.29,17.4,53.18,24.92Z" style="fill: #de6000;fill-rule: evenodd"/>
<path d="M53.21,24.92C53.32,17.4,59,11.34,66,11.34s12.47,6.09,12.36,13.58S72.51,38.49,65.57,38.49,53.09,32.4,53.21,24.92Zm-.09,0C53,32.46,58.56,38.58,65.57,38.58s12.76-6.12,12.87-13.66S73,11.25,66,11.25,53.23,17.38,53.12,24.92Z" style="fill: #e06000;fill-rule: evenodd"/>
<path d="M53.15,24.92C53.26,17.38,59,11.28,66,11.28S78.52,17.4,78.41,24.92,72.54,38.55,65.57,38.55,53,32.43,53.15,24.92Zm-.09,0c-.11,7.57,5.47,13.72,12.5,13.72s12.81-6.15,12.93-13.72S73,11.2,66,11.2,53.18,17.35,53.06,24.92Z" style="fill: #e16100;fill-rule: evenodd"/>
<path d="M53.09,24.92C53.21,17.35,59,11.23,66,11.23s12.59,6.12,12.47,13.69-5.9,13.69-12.9,13.69S53,32.46,53.09,24.92Zm-.09,0c-.11,7.6,5.5,13.78,12.56,13.78s12.87-6.18,13-13.78S73,11.14,66,11.14,53.12,17.29,53,24.92Z" style="fill: #e26200;fill-rule: evenodd"/>
<path d="M53,24.92c.11-7.6,5.9-13.75,13-13.75s12.64,6.15,12.53,13.75-5.92,13.75-13,13.75S52.92,32.51,53,24.92Zm-.09,0c-.11,7.63,5.53,13.83,12.61,13.83s12.9-6.21,13-13.83S73,11.08,66,11.08,53.06,17.26,53,24.92Z" style="fill: #e46200;fill-rule: evenodd"/>
<path d="M53,24.92c.11-7.63,5.92-13.8,13-13.8s12.7,6.18,12.59,13.8-6,13.8-13,13.8S52.87,32.54,53,24.92Zm-.09,0c-.11,7.65,5.56,13.89,12.67,13.89s13-6.21,13.07-13.89S73.11,11,66,11s-13,6.21-13.1,13.89Z" style="fill: #e56300;fill-rule: evenodd"/>
<path d="M52.92,24.92c.11-7.65,6-13.86,13.07-13.86s12.76,6.21,12.64,13.86-6,13.86-13.07,13.86S52.81,32.57,52.92,24.92Zm-.09,0c-.11,7.68,5.58,13.95,12.73,13.95s13-6.24,13.12-13.95S73.13,11,66,11,53,17.21,52.84,24.92Z" style="fill: #e76400;fill-rule: evenodd"/>
<path d="M52.87,24.92C53,17.23,58.85,11,66,11S78.8,17.23,78.66,24.92s-6,13.92-13.1,13.92S52.75,32.6,52.87,24.92Zm-.09,0c-.11,7.74,5.61,14,12.78,14s13.07-6.26,13.18-14-5.58-14-12.76-14-13.1,6.26-13.21,14Z" style="fill: #e86400;fill-rule: evenodd"/>
<path d="M52.81,24.92c.11-7.71,6-14,13.18-14s12.84,6.26,12.73,14-6,14-13.15,14-12.87-6.26-12.76-14Zm-.09,0C52.61,32.68,58.37,39,65.57,39S78.69,32.68,78.8,24.92,73.19,10.86,66,10.86,52.87,17.15,52.72,24.92Z" style="fill: #ea6500;fill-rule: evenodd"/>
<path d="M52.75,24.92c.11-7.77,6-14,13.24-14s12.9,6.29,12.78,14-6,14-13.21,14-12.93-6.29-12.81-14Zm-.09,0C52.55,32.71,58.34,39,65.57,39s13.18-6.32,13.29-14.12S73.22,10.8,66,10.8,52.81,17.12,52.67,24.92Z" style="fill: #eb6500;fill-rule: evenodd"/>
<path d="M52.7,24.92c.14-7.8,6.07-14.09,13.29-14.09s13,6.29,12.84,14.09S72.77,39,65.57,39s-13-6.32-12.87-14.09Zm-.06,0c-.14,7.82,5.67,14.17,12.93,14.17S78.8,32.74,78.92,24.92,73.25,10.74,66,10.74,52.75,17.09,52.64,24.92Z" style="fill: #ec6600;fill-rule: evenodd"/>
<path d="M52.67,24.92c.11-7.82,6.07-14.14,13.32-14.14s13,6.32,12.9,14.14S72.79,39.06,65.57,39.06s-13-6.35-12.9-14.14Zm-.09,0c-.14,7.85,5.67,14.23,13,14.23S78.86,32.77,79,24.92s-5.7-14.23-13-14.23S52.7,17,52.58,24.92Z" style="fill: #ee6700;fill-rule: evenodd"/>
<path d="M52.61,24.92c.11-7.85,6.09-14.2,13.38-14.2s13.07,6.35,13,14.2-6.12,14.2-13.38,14.2-13.1-6.35-13-14.2Zm-.09,0c-.11,7.88,5.7,14.29,13,14.29S78.92,32.83,79,24.92,73.3,10.63,66,10.63,52.64,17,52.53,24.92Z" style="fill: #ef6700;fill-rule: evenodd"/>
<path d="M52.55,24.92C52.67,17,58.68,10.66,66,10.66S79.11,17,79,24.92,72.85,39.17,65.57,39.17s-13.15-6.38-13-14.26Zm-.09,0c-.11,7.91,5.73,14.34,13.1,14.34s13.38-6.41,13.52-14.34S73.33,10.57,66,10.57,52.58,17,52.47,24.92Z" style="fill: #f16800;fill-rule: evenodd"/>
<path d="M52.5,24.92C52.61,17,58.65,10.6,66,10.6S79.17,17,79.06,24.92,72.88,39.23,65.57,39.23,52.38,32.83,52.5,24.92Zm-.09,0c-.11,8,5.75,14.4,13.15,14.4S79,32.88,79.14,24.92,73.36,10.52,66,10.49,52.53,17,52.41,24.92Z" style="fill: #f26800;fill-rule: evenodd"/>
<path d="M52.44,24.92C52.55,17,58.62,10.52,66,10.54S79.23,17,79.11,24.92,72.91,39.29,65.57,39.29,52.33,32.85,52.44,24.92Zm-.09,0c-.11,8,5.78,14.46,13.21,14.46S79.06,32.91,79.2,24.92,73.39,10.43,66,10.43,52.47,16.92,52.36,24.92Z" style="fill: #f46900;fill-rule: evenodd"/>
<path d="M52.38,24.92c.11-8,6.21-14.46,13.61-14.46S79.29,17,79.17,24.92,72.94,39.34,65.57,39.34,52.27,32.88,52.38,24.92Zm-.09,0c-.11,8,5.81,14.51,13.24,14.51s13.58-6.49,13.69-14.51S73.42,10.37,66,10.37,52.41,16.89,52.3,24.92Z" style="fill: #f56a00;fill-rule: evenodd"/>
<path d="M52.33,24.92c.11-8,6.24-14.51,13.66-14.51S79.34,16.92,79.2,24.92,73,39.4,65.57,39.4,52.21,32.91,52.33,24.92Zm-.09,0C52.13,33,58.08,39.49,65.54,39.49S79.17,33,79.29,24.92,73.47,10.32,66,10.32s-13.61,6.55-13.75,14.6Z" style="fill: #f66a00;fill-rule: evenodd"/>
<path d="M52.27,24.92c.11-8.05,6.26-14.57,13.72-14.57S79.4,16.87,79.26,24.92,73,39.49,65.54,39.46,52.16,32.94,52.27,24.92Zm-.09,0C52.07,33,58.05,39.54,65.54,39.57S79.23,33,79.34,24.92,73.5,10.26,66,10.26s-13.66,6.55-13.8,14.66Z" style="fill: #f86b00;fill-rule: evenodd"/>
<path d="M52.21,24.92c.14-8.08,6.29-14.63,13.78-14.63s13.46,6.55,13.32,14.63S73,39.54,65.54,39.51,52.1,33,52.21,24.92Zm-.09,0C52,33,58,39.63,65.54,39.63S79.29,33,79.4,24.92,73.53,10.2,66,10.2,52.27,16.78,52.13,24.92Z" style="fill: #f96c00;fill-rule: evenodd"/>
<path d="M52.16,24.92C52.3,16.81,58.48,10.23,66,10.23s13.52,6.58,13.38,14.68S73,39.6,65.54,39.6,52,33,52.16,24.92Zm-.06,0C52,33.05,58,39.69,65.54,39.69s13.8-6.6,13.92-14.77S73.56,10.15,66,10.15,52.21,16.75,52.1,24.92Z" style="fill: #fb6c00;fill-rule: evenodd"/>
<path d="M52.1,24.92c.14-8.14,6.35-14.74,13.89-14.74s13.55,6.6,13.44,14.74S73.08,39.66,65.54,39.66,52,33.05,52.1,24.92Zm-.06,0C51.9,33.11,58,39.74,65.54,39.74s13.86-6.63,14-14.83S73.59,10.09,66,10.09,52.16,16.72,52,24.92Z" style="fill: #fc6d00;fill-rule: evenodd"/>
<path d="M52.07,24.92c.11-8.16,6.35-14.8,13.92-14.8s13.61,6.63,13.49,14.8-6.35,14.8-13.95,14.8-13.61-6.63-13.46-14.8Zm-.09,0c-.14,8.22,6,14.88,13.55,14.88s13.89-6.66,14-14.88S73.62,10,66,10,52.1,16.7,52,24.92Z" style="fill: #fe6d00;fill-rule: evenodd"/>
<path d="M52,24.92c.11-8.22,6.38-14.85,14-14.85s13.66,6.66,13.55,14.85-6.38,14.85-14,14.85S51.87,33.11,52,24.92Zm-.06,0c-.14,8.22,6,14.91,13.58,14.91S79.46,33.14,79.6,24.92,73.64,10,66,10,52.07,16.67,52,24.92Z" style="fill: #ff6e00;fill-rule: evenodd"/>
</g>
</g>
</g>
</g>
</svg>
import React from 'react';
import { render } from 'react-dom';
import App from './App';
import './index.scss';
/**
* main entry
*/
render(<App />, document.getElementById('app'));
body {
margin: 0;
padding: 0;
font-family: "Microsoft YaHei";
}
/**
* @title 按钮类型
*/
import { Button } from 'amos-framework';
const ButtonType = () => {
return (
<div>
<Button>默认</Button>
<Button type="minor">次要</Button>
</div>
);
};
/**
* @title 按钮尺寸
*/
import { Button } from 'amos-framework';
const ButtonSize = () => {
return (
<div>
<Button size="lg">大尺寸</Button>
<Button>默认</Button>
<Button size="sm">小尺寸</Button>
</div>
);
};
/**
* @title 图标按钮
* @desc 如果需要自定义图标位置,结合使用 Icon 组件
*/
import { Button } from 'amos-framework';
const ButtonIcon = () => {
return (
<div>
<Button icon="plus">添加</Button>
<Button icon="align-left" />
</div>
);
};
/**
* @title 圆形按钮
*/
import { Button } from 'amos-framework';
const ButtonCircle = () => {
return (
<div>
<Button icon="plus" circle />
<Button circle></Button>
</div>
);
};
/**
* @title transparent
* @desc 文字颜色继承父级,背景透明
*/
import { Button } from 'amos-framework';
const ButtonTransparent = () => {
return (
<div>
<Button icon="plus" transparent />
<Button icon="align-left" transparent />
</div>
);
};
/**
* @title 不可用的
*/
import { Button } from 'amos-framework';
const ButtonDisabled = () => {
return (
<div>
<Button disabled>不可用</Button>
<Button icon="plus" disabled />
</div>
);
};
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="renderer" content="webkit">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>amos-framework docs</title>
</head>
<body>
<div id="app"></div>
</body>
</html>
<SCRIPT Language=VBScript><!--
//--></SCRIPT>
\ No newline at end of file
@echo off
title Amos install Guide
@echo author ilex.h
@echo Starting install npm supported Wizard...
@echo First registry proxy,Second execute npm install...
@echo.
npm install
pause
{
"verbose": true,
"ignore": [".git", ".svn/**/.svn", "dist", "coverage", "tests", "src", "demo", "docs", "node_modules"],
"watch":[
"webpack.*.js",
"./build"
]
}
{
"name": "amos-toip",
"version": "1.0.0",
"private": true,
"author": "ilex.h",
"scripts": {
"clean": "rimraf dist released",
"build:pro": "set NODE_ENV=production && npm run clean && webpack",
"build:dev": "set NODE_ENV=development && npm run clean && webpack",
"watch": "webpack -w",
"server": "nodemon server/index.js --watch server",
"build": "set NODE_ENV=production && npm run clean && webpack",
"themes": "amos-run themes",
"themes-watch": "amos-run themes-watch",
"start": "set NODE_ENV=development && nodemon --exec \"webpack-dev-server\"",
"start2": "set NODE_ENV=development && webpack-dev-server",
"startDev": "set NODE_ENV=development && webpack-dev-server --config webpack.config.dev.js",
"compile:dev": "set NODE_ENV=development && npm run clean && webpack --config webpack.config.dev.js",
"compile:pro": "set NODE_ENV=production && npm run clean && webpack --config webpack.config.prod.js",
"lint": "eslint src tests",
"lint:fix": "npm run lint -- --fix",
"format": "prettier --write \"src/**/*.{js,jsx,css,scss,less,sass}\"",
"stylelint": "stylelint src",
"zip": "amos-run released2zip",
"pub:dev": "npm run compile:dev && amos-run extraReleased",
"pub": "npm run compile:pro && amos-run extraReleased",
"pub:build": "npm run build:pro && amos-run extraReleased",
"precommit": "lint-staged"
},
"lint-staged": {
"*.{js,json,css}": [
"prettier --write",
"git add"
]
},
"dependencies": {
"amos-amap": "^1.0.6",
"amos-core": "^2.0.27",
"amos-devgrid": "^1.0.10",
"amos-dll": "^1.0.4",
"amos-icon": "^1.0.3",
"amos-processor": "^1.2.18",
"amos-security": "2.0.10",
"amos-tool": "^1.2.34",
"amos-viz": "^1.1.0",
"amos-websocket": "^1.0.0",
"canvg": "^2.0.0",
"classnames": "^2.2.5",
"dt2react": "^1.0.7",
"html2canvas": "^1.0.0-rc.3",
"lodash": "^4.17.4",
"lodash.debounce": "^4.0.8",
"raphael": "^2.3.0",
"ray-animate": "^1.0.0",
"ray-eventpool": "^1.0.0",
"ray-mediaquery": "^1.0.0",
"ray-progress": "^1.0.0",
"ray-tween": "^1.0.2",
"react": "~16.0.0",
"react-dom": "~16.0.0",
"react-svg": "^10.0.19",
"vertx3-eventbus-client": "^3.4.1"
},
"devDependencies": {
"amos-build": "^3.x",
"amos-core": "^2.0.27",
"amos-framework": "^1.0.35",
"cross-env": "^5.2.0",
"eslint-config-ray": "^1.0.25",
"mockjs": "^1.0.1-beta3",
"stylelint-config-ray": "^2.x",
"ws": "^4.0.0"
}
}
*{margin: 0;padding: 0;list-style: none;}
/*
KISSY CSS Reset
理念:1. reset 的目的不是清除浏览器的默认样式,这仅是部分工作。清除和重置是紧密不可分的。
2. reset 的目的不是让默认样式在所有浏览器下一致,而是减少默认样式有可能带来的问题。
3. reset 期望提供一套普适通用的基础样式。但没有银弹,推荐根据具体需求,裁剪和修改后再使用。
特色:1. 适应中文;2. 基于最新主流浏览器。
维护:玉伯<lifesinger@gmail.com>, 正淳<ragecarrier@gmail.com>
*/
/** 清除内外边距 **/
body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, /* structural elements 结构元素 */
dl, dt, dd, ul, ol, li, /* list elements 列表元素 */
pre, /* text formatting elements 文本格式元素 */
form, fieldset, legend, button, input, textarea, /* form elements 表单元素 */
th, td /* table elements 表格元素 */ {
margin: 0;
padding: 0;
}
/** 设置默认字体 **/
body,
button, input, select, textarea /* for ie */ {
font: 12px/1.5 tahoma, arial, \5b8b\4f53, sans-serif;
}
h1, h2, h3, h4, h5, h6 { font-size: 100%; }
address, cite, dfn, em, var { font-style: normal; } /* 将斜体扶正 */
code, kbd, pre, samp { font-family: courier new, courier, monospace; } /* 统一等宽字体 */
small { font-size: 12px; } /* 小于 12px 的中文很难阅读,让 small 正常化 */
/** 重置列表元素 **/
ul, ol { list-style: none; }
/** 重置文本格式元素 **/
a { text-decoration: none; }
a:hover { text-decoration: underline; }
/** 重置表单元素 **/
legend { color: #000; } /* for ie6 */
fieldset, img { border: 0; } /* img 搭车:让链接里的 img 无边框 */
button, input, select, textarea { font-size: 100%; } /* 使得表单元素在 ie 下能继承字体大小 */
/* 注:optgroup 无法扶正 */
/** 重置表格元素 **/
table { border-collapse: collapse; border-spacing: 0; }
/* 清除浮动 */
.ks-clear:after, .clear:after {
content: '\20';
display: block;
height: 0;
clear: both;
}
.ks-clear, .clear {
*zoom: 1;
}
.main {
padding: 30px 100px;
width: 960px;
margin: 0 auto;
}
.main h1{font-size:36px; color:#333; text-align:left;margin-bottom:30px; border-bottom: 1px solid #eee;}
.helps{margin-top:40px;}
.helps pre{
padding:20px;
margin:10px 0;
border:solid 1px #e7e1cd;
background-color: #fffdef;
overflow: auto;
}
.icon_lists{
width: 100% !important;
}
.icon_lists li{
float:left;
width: 100px;
height:180px;
text-align: center;
list-style: none !important;
}
.icon_lists .icon{
font-size: 42px;
line-height: 100px;
margin: 10px 0;
color:#333;
-webkit-transition: font-size 0.25s ease-out 0s;
-moz-transition: font-size 0.25s ease-out 0s;
transition: font-size 0.25s ease-out 0s;
}
.icon_lists .icon:hover{
font-size: 100px;
}
.markdown {
color: #666;
font-size: 14px;
line-height: 1.8;
}
.highlight {
line-height: 1.5;
}
.markdown img {
vertical-align: middle;
max-width: 100%;
}
.markdown h1 {
color: #404040;
font-weight: 500;
line-height: 40px;
margin-bottom: 24px;
}
.markdown h2,
.markdown h3,
.markdown h4,
.markdown h5,
.markdown h6 {
color: #404040;
margin: 1.6em 0 0.6em 0;
font-weight: 500;
clear: both;
}
.markdown h1 {
font-size: 28px;
}
.markdown h2 {
font-size: 22px;
}
.markdown h3 {
font-size: 16px;
}
.markdown h4 {
font-size: 14px;
}
.markdown h5 {
font-size: 12px;
}
.markdown h6 {
font-size: 12px;
}
.markdown hr {
height: 1px;
border: 0;
background: #e9e9e9;
margin: 16px 0;
clear: both;
}
.markdown p,
.markdown pre {
margin: 1em 0;
}
.markdown > p,
.markdown > blockquote,
.markdown > .highlight,
.markdown > ol,
.markdown > ul {
width: 80%;
}
.markdown ul > li {
list-style: circle;
}
.markdown > ul li,
.markdown blockquote ul > li {
margin-left: 20px;
padding-left: 4px;
}
.markdown > ul li p,
.markdown > ol li p {
margin: 0.6em 0;
}
.markdown ol > li {
list-style: decimal;
}
.markdown > ol li,
.markdown blockquote ol > li {
margin-left: 20px;
padding-left: 4px;
}
.markdown code {
margin: 0 3px;
padding: 0 5px;
background: #eee;
border-radius: 3px;
}
.markdown pre {
border-radius: 6px;
background: #f7f7f7;
padding: 20px;
}
.markdown pre code {
border: none;
background: #f7f7f7;
margin: 0;
}
.markdown strong,
.markdown b {
font-weight: 600;
}
.markdown > table {
border-collapse: collapse;
border-spacing: 0px;
empty-cells: show;
border: 1px solid #e9e9e9;
width: 95%;
margin-bottom: 24px;
}
.markdown > table th {
white-space: nowrap;
color: #333;
font-weight: 600;
}
.markdown > table th,
.markdown > table td {
border: 1px solid #e9e9e9;
padding: 8px 16px;
text-align: left;
}
.markdown > table th {
background: #F7F7F7;
}
.markdown blockquote {
font-size: 90%;
color: #999;
border-left: 4px solid #e9e9e9;
padding-left: 0.8em;
margin: 1em 0;
font-style: italic;
}
.markdown blockquote p {
margin: 0;
}
.markdown .anchor {
opacity: 0;
transition: opacity 0.3s ease;
margin-left: 8px;
}
.markdown .waiting {
color: #ccc;
}
.markdown h1:hover .anchor,
.markdown h2:hover .anchor,
.markdown h3:hover .anchor,
.markdown h4:hover .anchor,
.markdown h5:hover .anchor,
.markdown h6:hover .anchor {
opacity: 1;
display: inline-block;
}
.markdown > br,
.markdown > p > br {
clear: both;
}
.hljs {
display: block;
background: white;
padding: 0.5em;
color: #333333;
overflow-x: auto;
}
.hljs-comment,
.hljs-meta {
color: #969896;
}
.hljs-string,
.hljs-variable,
.hljs-template-variable,
.hljs-strong,
.hljs-emphasis,
.hljs-quote {
color: #df5000;
}
.hljs-keyword,
.hljs-selector-tag,
.hljs-type {
color: #a71d5d;
}
.hljs-literal,
.hljs-symbol,
.hljs-bullet,
.hljs-attribute {
color: #0086b3;
}
.hljs-section,
.hljs-name {
color: #63a35c;
}
.hljs-tag {
color: #333333;
}
.hljs-title,
.hljs-attr,
.hljs-selector-id,
.hljs-selector-class,
.hljs-selector-attr,
.hljs-selector-pseudo {
color: #795da3;
}
.hljs-addition {
color: #55a532;
background-color: #eaffea;
}
.hljs-deletion {
color: #bd2c00;
background-color: #ffecec;
}
.hljs-link {
text-decoration: underline;
}
pre{
background: #fff;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>IconFont</title>
<link rel="stylesheet" href="demo.css">
<link rel="stylesheet" href="iconfont.css">
</head>
<body>
<div class="main markdown">
<h1>IconFont 图标</h1>
<ul class="icon_lists clear">
<li>
<i class="icon amosicon amosicon-next-page"></i>
<div class="name">下一页</div>
<div class="fontclass">.amosicon-next-page</div>
</li>
<li>
<i class="icon amosicon amosicon-arrow-left-top-thin"></i>
<div class="name">左上</div>
<div class="fontclass">.amosicon-arrow-left-top-thin</div>
</li>
<li>
<i class="icon amosicon amosicon-favorite1"></i>
<div class="name">favorite</div>
<div class="fontclass">.amosicon-favorite1</div>
</li>
<li>
<i class="icon amosicon amosicon-left"></i>
<div class="name">left</div>
<div class="fontclass">.amosicon-left</div>
</li>
<li>
<i class="icon amosicon amosicon-icon"></i>
<div class="name">用户</div>
<div class="fontclass">.amosicon-icon</div>
</li>
<li>
<i class="icon amosicon amosicon-youxiang"></i>
<div class="name">邮箱</div>
<div class="fontclass">.amosicon-youxiang</div>
</li>
<li>
<i class="icon amosicon amosicon-pre-page"></i>
<div class="name">上一页</div>
<div class="fontclass">.amosicon-pre-page</div>
</li>
<li>
<i class="icon amosicon amosicon-xiala"></i>
<div class="name">下拉</div>
<div class="fontclass">.amosicon-xiala</div>
</li>
<li>
<i class="icon amosicon amosicon-add2"></i>
<div class="name">添加</div>
<div class="fontclass">.amosicon-add2</div>
</li>
<li>
<i class="icon amosicon amosicon-list-dot"></i>
<div class="name">list</div>
<div class="fontclass">.amosicon-list-dot</div>
</li>
<li>
<i class="icon amosicon amosicon-delete"></i>
<div class="name">delete</div>
<div class="fontclass">.amosicon-delete</div>
</li>
<li>
<i class="icon amosicon amosicon-tuichu"></i>
<div class="name">退出</div>
<div class="fontclass">.amosicon-tuichu</div>
</li>
<li>
<i class="icon amosicon amosicon-file-upload-2"></i>
<div class="name">文件上传</div>
<div class="fontclass">.amosicon-file-upload-2</div>
</li>
<li>
<i class="icon amosicon amosicon-zhuxiao4"></i>
<div class="name">注销</div>
<div class="fontclass">.amosicon-zhuxiao4</div>
</li>
<li>
<i class="icon amosicon amosicon-youxiang1"></i>
<div class="name">邮箱</div>
<div class="fontclass">.amosicon-youxiang1</div>
</li>
<li>
<i class="icon amosicon amosicon-danwei"></i>
<div class="name">单位</div>
<div class="fontclass">.amosicon-danwei</div>
</li>
<li>
<i class="icon amosicon amosicon-gengduo"></i>
<div class="name">更多</div>
<div class="fontclass">.amosicon-gengduo</div>
</li>
<li>
<i class="icon amosicon amosicon-down"></i>
<div class="name">down</div>
<div class="fontclass">.amosicon-down</div>
</li>
<li>
<i class="icon amosicon amosicon-picture"></i>
<div class="name">picture</div>
<div class="fontclass">.amosicon-picture</div>
</li>
<li>
<i class="icon amosicon amosicon-video1"></i>
<div class="name">视频</div>
<div class="fontclass">.amosicon-video1</div>
</li>
<li>
<i class="icon amosicon amosicon-folder"></i>
<div class="name">folder</div>
<div class="fontclass">.amosicon-folder</div>
</li>
<li>
<i class="icon amosicon amosicon-selected"></i>
<div class="name">selected</div>
<div class="fontclass">.amosicon-selected</div>
</li>
<li>
<i class="icon amosicon amosicon-viewgallery"></i>
<div class="name">ViewGallery</div>
<div class="fontclass">.amosicon-viewgallery</div>
</li>
<li>
<i class="icon amosicon amosicon-list"></i>
<div class="name">list</div>
<div class="fontclass">.amosicon-list</div>
</li>
<li>
<i class="icon amosicon amosicon-right"></i>
<div class="name">right</div>
<div class="fontclass">.amosicon-right</div>
</li>
<li>
<i class="icon amosicon amosicon-up"></i>
<div class="name">up</div>
<div class="fontclass">.amosicon-up</div>
</li>
<li>
<i class="icon amosicon amosicon-shipinbofang"></i>
<div class="name">视频播放</div>
<div class="fontclass">.amosicon-shipinbofang</div>
</li>
<li>
<i class="icon amosicon amosicon-xiaoxi"></i>
<div class="name">消息</div>
<div class="fontclass">.amosicon-xiaoxi</div>
</li>
<li>
<i class="icon amosicon amosicon-xuanzhong"></i>
<div class="name">选中</div>
<div class="fontclass">.amosicon-xuanzhong</div>
</li>
<li>
<i class="icon amosicon amosicon-message"></i>
<div class="name">消息</div>
<div class="fontclass">.amosicon-message</div>
</li>
<li>
<i class="icon amosicon amosicon-tianjia2"></i>
<div class="name">添加</div>
<div class="fontclass">.amosicon-tianjia2</div>
</li>
<li>
<i class="icon amosicon amosicon-shipin"></i>
<div class="name">视频</div>
<div class="fontclass">.amosicon-shipin</div>
</li>
<li>
<i class="icon amosicon amosicon-shengyin"></i>
<div class="name">声音</div>
<div class="fontclass">.amosicon-shengyin</div>
</li>
<li>
<i class="icon amosicon amosicon-xiaoxi2"></i>
<div class="name">消息</div>
<div class="fontclass">.amosicon-xiaoxi2</div>
</li>
<li>
<i class="icon amosicon amosicon-question"></i>
<div class="name">question</div>
<div class="fontclass">.amosicon-question</div>
</li>
<li>
<i class="icon amosicon amosicon-auto"></i>
<div class="name">auto</div>
<div class="fontclass">.amosicon-auto</div>
</li>
<li>
<i class="icon amosicon amosicon-task"></i>
<div class="name">task</div>
<div class="fontclass">.amosicon-task</div>
</li>
<li>
<i class="icon amosicon amosicon-atmaway"></i>
<div class="name">atm-away</div>
<div class="fontclass">.amosicon-atmaway</div>
</li>
<li>
<i class="icon amosicon amosicon-cross"></i>
<div class="name">cross</div>
<div class="fontclass">.amosicon-cross</div>
</li>
<li>
<i class="icon amosicon amosicon-fire-fat"></i>
<div class="name">fire</div>
<div class="fontclass">.amosicon-fire-fat</div>
</li>
<li>
<i class="icon amosicon amosicon-tianqi-yintian"></i>
<div class="name">空气_阴天</div>
<div class="fontclass">.amosicon-tianqi-yintian</div>
</li>
<li>
<i class="icon amosicon amosicon-message-1"></i>
<div class="name">消息</div>
<div class="fontclass">.amosicon-message-1</div>
</li>
<li>
<i class="icon amosicon amosicon-pin"></i>
<div class="name">pin</div>
<div class="fontclass">.amosicon-pin</div>
</li>
<li>
<i class="icon amosicon amosicon-wenjianjia"></i>
<div class="name">文件夹</div>
<div class="fontclass">.amosicon-wenjianjia</div>
</li>
<li>
<i class="icon amosicon amosicon-tubiao15"></i>
<div class="name">消息</div>
<div class="fontclass">.amosicon-tubiao15</div>
</li>
<li>
<i class="icon amosicon amosicon-shangchuanshipin"></i>
<div class="name">上传视频</div>
<div class="fontclass">.amosicon-shangchuanshipin</div>
</li>
<li>
<i class="icon amosicon amosicon-warning"></i>
<div class="name">warning</div>
<div class="fontclass">.amosicon-warning</div>
</li>
<li>
<i class="icon amosicon amosicon-file-upload-3"></i>
<div class="name">上传文件</div>
<div class="fontclass">.amosicon-file-upload-3</div>
</li>
<li>
<i class="icon amosicon amosicon-xuanzhong1"></i>
<div class="name">选中</div>
<div class="fontclass">.amosicon-xuanzhong1</div>
</li>
<li>
<i class="icon amosicon amosicon-angle-more"></i>
<div class="name">更多</div>
<div class="fontclass">.amosicon-angle-more</div>
</li>
<li>
<i class="icon amosicon amosicon-picture1"></i>
<div class="name">picture</div>
<div class="fontclass">.amosicon-picture1</div>
</li>
<li>
<i class="icon amosicon amosicon-success"></i>
<div class="name">success</div>
<div class="fontclass">.amosicon-success</div>
</li>
<li>
<i class="icon amosicon amosicon-remove"></i>
<div class="name">移除</div>
<div class="fontclass">.amosicon-remove</div>
</li>
<li>
<i class="icon amosicon amosicon-xuanzhong2"></i>
<div class="name">选中</div>
<div class="fontclass">.amosicon-xuanzhong2</div>
</li>
<li>
<i class="icon amosicon amosicon-zhuxiao"></i>
<div class="name">注销</div>
<div class="fontclass">.amosicon-zhuxiao</div>
</li>
<li>
<i class="icon amosicon amosicon-danger"></i>
<div class="name">warning</div>
<div class="fontclass">.amosicon-danger</div>
</li>
<li>
<i class="icon amosicon amosicon-phone"></i>
<div class="name">phone</div>
<div class="fontclass">.amosicon-phone</div>
</li>
<li>
<i class="icon amosicon amosicon-help"></i>
<div class="name">帮助</div>
<div class="fontclass">.amosicon-help</div>
</li>
<li>
<i class="icon amosicon amosicon-huidaodingbu"></i>
<div class="name">回到顶部</div>
<div class="fontclass">.amosicon-huidaodingbu</div>
</li>
<li>
<i class="icon amosicon amosicon-tianjia1"></i>
<div class="name">添加</div>
<div class="fontclass">.amosicon-tianjia1</div>
</li>
<li>
<i class="icon amosicon amosicon-shipinbofang1"></i>
<div class="name">视频播放</div>
<div class="fontclass">.amosicon-shipinbofang1</div>
</li>
<li>
<i class="icon amosicon amosicon-number-1"></i>
<div class="name">number</div>
<div class="fontclass">.amosicon-number-1</div>
</li>
<li>
<i class="icon amosicon amosicon-check"></i>
<div class="name">选中</div>
<div class="fontclass">.amosicon-check</div>
</li>
<li>
<i class="icon amosicon amosicon-list1"></i>
<div class="name">list</div>
<div class="fontclass">.amosicon-list1</div>
</li>
<li>
<i class="icon amosicon amosicon-xuanzhong3"></i>
<div class="name">选中</div>
<div class="fontclass">.amosicon-xuanzhong3</div>
</li>
<li>
<i class="icon amosicon amosicon-task-2"></i>
<div class="name">task</div>
<div class="fontclass">.amosicon-task-2</div>
</li>
<li>
<i class="icon amosicon amosicon-wxbbaobiao"></i>
<div class="name">wxb报表</div>
<div class="fontclass">.amosicon-wxbbaobiao</div>
</li>
<li>
<i class="icon amosicon amosicon-wxbgongju"></i>
<div class="name">wxb工具</div>
<div class="fontclass">.amosicon-wxbgongju</div>
</li>
<li>
<i class="icon amosicon amosicon-wxbsousuotuiguang"></i>
<div class="name">wxb搜索推广</div>
<div class="fontclass">.amosicon-wxbsousuotuiguang</div>
</li>
<li>
<i class="icon amosicon amosicon-wxbdingwei"></i>
<div class="name">wxb定位</div>
<div class="fontclass">.amosicon-wxbdingwei</div>
</li>
<li>
<i class="icon amosicon amosicon-favorite"></i>
<div class="name">favorite</div>
<div class="fontclass">.amosicon-favorite</div>
</li>
<li>
<i class="icon amosicon amosicon-icontotop"></i>
<div class="name">icon-toTop</div>
<div class="fontclass">.amosicon-icontotop</div>
</li>
<li>
<i class="icon amosicon amosicon-copy"></i>
<div class="name">copy</div>
<div class="fontclass">.amosicon-copy</div>
</li>
<li>
<i class="icon amosicon amosicon-gengduo-copy"></i>
<div class="name">更多</div>
<div class="fontclass">.amosicon-gengduo-copy</div>
</li>
<li>
<i class="icon amosicon amosicon-label"></i>
<div class="name">标签1</div>
<div class="fontclass">.amosicon-label</div>
</li>
<li>
<i class="icon amosicon amosicon-yichu"></i>
<div class="name">移除</div>
<div class="fontclass">.amosicon-yichu</div>
</li>
<li>
<i class="icon amosicon amosicon-shouye"></i>
<div class="name">首页-首页</div>
<div class="fontclass">.amosicon-shouye</div>
</li>
<li>
<i class="icon amosicon amosicon-zhuxiao1"></i>
<div class="name">注销</div>
<div class="fontclass">.amosicon-zhuxiao1</div>
</li>
<li>
<i class="icon amosicon amosicon-huidaodingbu1"></i>
<div class="name">回到顶部</div>
<div class="fontclass">.amosicon-huidaodingbu1</div>
</li>
<li>
<i class="icon amosicon amosicon-close"></i>
<div class="name">close</div>
<div class="fontclass">.amosicon-close</div>
</li>
<li>
<i class="icon amosicon amosicon-file-upload"></i>
<div class="name">上传文件</div>
<div class="fontclass">.amosicon-file-upload</div>
</li>
<li>
<i class="icon amosicon amosicon-setting"></i>
<div class="name">setting</div>
<div class="fontclass">.amosicon-setting</div>
</li>
<li>
<i class="icon amosicon amosicon-huidaodingbu2"></i>
<div class="name">回到顶部</div>
<div class="fontclass">.amosicon-huidaodingbu2</div>
</li>
<li>
<i class="icon amosicon amosicon-shipin1"></i>
<div class="name">视频</div>
<div class="fontclass">.amosicon-shipin1</div>
</li>
<li>
<i class="icon amosicon amosicon-info"></i>
<div class="name">info</div>
<div class="fontclass">.amosicon-info</div>
</li>
<li>
<i class="icon amosicon amosicon-totop"></i>
<div class="name">toTop</div>
<div class="fontclass">.amosicon-totop</div>
</li>
<li>
<i class="icon amosicon amosicon-paper-clip"></i>
<div class="name">paper-clip</div>
<div class="fontclass">.amosicon-paper-clip</div>
</li>
<li>
<i class="icon amosicon amosicon-playvideobutton"></i>
<div class="name">play-video-button</div>
<div class="fontclass">.amosicon-playvideobutton</div>
</li>
<li>
<i class="icon amosicon amosicon-xuanzhong4"></i>
<div class="name">选中</div>
<div class="fontclass">.amosicon-xuanzhong4</div>
</li>
<li>
<i class="icon amosicon amosicon-task-1"></i>
<div class="name">task</div>
<div class="fontclass">.amosicon-task-1</div>
</li>
<li>
<i class="icon amosicon amosicon-shangchuanwenjian"></i>
<div class="name">上传文件</div>
<div class="fontclass">.amosicon-shangchuanwenjian</div>
</li>
<li>
<i class="icon amosicon amosicon-dingdanguanbi"></i>
<div class="name">订单关闭</div>
<div class="fontclass">.amosicon-dingdanguanbi</div>
</li>
<li>
<i class="icon amosicon amosicon-video-upload"></i>
<div class="name">上传视频</div>
<div class="fontclass">.amosicon-video-upload</div>
</li>
<li>
<i class="icon amosicon amosicon-voice"></i>
<div class="name">声音</div>
<div class="fontclass">.amosicon-voice</div>
</li>
<li>
<i class="icon amosicon amosicon-tianqi-baoxue"></i>
<div class="name">天气_暴雪</div>
<div class="fontclass">.amosicon-tianqi-baoxue</div>
</li>
<li>
<i class="icon amosicon amosicon-tianqi-bingbao"></i>
<div class="name">天气_冰雹</div>
<div class="fontclass">.amosicon-tianqi-bingbao</div>
</li>
<li>
<i class="icon amosicon amosicon-tianqi-fengbao"></i>
<div class="name">天气_风暴</div>
<div class="fontclass">.amosicon-tianqi-fengbao</div>
</li>
<li>
<i class="icon amosicon amosicon-tianqi-leizhenyu"></i>
<div class="name">天气_雷阵雨</div>
<div class="fontclass">.amosicon-tianqi-leizhenyu</div>
</li>
<li>
<i class="icon amosicon amosicon-tianqi-xiaoxue"></i>
<div class="name">天气_小雪</div>
<div class="fontclass">.amosicon-tianqi-xiaoxue</div>
</li>
<li>
<i class="icon amosicon amosicon-tianqi-xiaoyu"></i>
<div class="name">天气_小雨</div>
<div class="fontclass">.amosicon-tianqi-xiaoyu</div>
</li>
<li>
<i class="icon amosicon amosicon-tianqi-zhenxue"></i>
<div class="name">天气_阵雪</div>
<div class="fontclass">.amosicon-tianqi-zhenxue</div>
</li>
<li>
<i class="icon amosicon amosicon-tianqi-zhenyu"></i>
<div class="name">天气_阵雨</div>
<div class="fontclass">.amosicon-tianqi-zhenyu</div>
</li>
<li>
<i class="icon amosicon amosicon-tianqi-zhongxue"></i>
<div class="name">天气_中雪</div>
<div class="fontclass">.amosicon-tianqi-zhongxue</div>
</li>
<li>
<i class="icon amosicon amosicon-tianqi-zhongyu"></i>
<div class="name">天气_中雨</div>
<div class="fontclass">.amosicon-tianqi-zhongyu</div>
</li>
<li>
<i class="icon amosicon amosicon-selected-1"></i>
<div class="name">选中</div>
<div class="fontclass">.amosicon-selected-1</div>
</li>
<li>
<i class="icon amosicon amosicon-shuoming"></i>
<div class="name">说明</div>
<div class="fontclass">.amosicon-shuoming</div>
</li>
<li>
<i class="icon amosicon amosicon-hot"></i>
<div class="name">hot</div>
<div class="fontclass">.amosicon-hot</div>
</li>
<li>
<i class="icon amosicon amosicon-data"></i>
<div class="name">data</div>
<div class="fontclass">.amosicon-data</div>
</li>
<li>
<i class="icon amosicon amosicon-error"></i>
<div class="name">error</div>
<div class="fontclass">.amosicon-error</div>
</li>
<li>
<i class="icon amosicon amosicon-xuanzhong7"></i>
<div class="name">选中</div>
<div class="fontclass">.amosicon-xuanzhong7</div>
</li>
<li>
<i class="icon amosicon amosicon-yichu1"></i>
<div class="name">移除</div>
<div class="fontclass">.amosicon-yichu1</div>
</li>
<li>
<i class="icon amosicon amosicon-gengduo1"></i>
<div class="name">更多</div>
<div class="fontclass">.amosicon-gengduo1</div>
</li>
<li>
<i class="icon amosicon amosicon-skin"></i>
<div class="name">皮肤</div>
<div class="fontclass">.amosicon-skin</div>
</li>
<li>
<i class="icon amosicon amosicon-good"></i>
<div class="name">good</div>
<div class="fontclass">.amosicon-good</div>
</li>
<li>
<i class="icon amosicon amosicon-jianhao"></i>
<div class="name">减号</div>
<div class="fontclass">.amosicon-jianhao</div>
</li>
<li>
<i class="icon amosicon amosicon-themeisle"></i>
<div class="name">themeisle</div>
<div class="fontclass">.amosicon-themeisle</div>
</li>
<li>
<i class="icon amosicon amosicon-ziyuanjieyong"></i>
<div class="name">资源借用</div>
<div class="fontclass">.amosicon-ziyuanjieyong</div>
</li>
<li>
<i class="icon amosicon amosicon-arrow-left"></i>
<div class="name">左箭头</div>
<div class="fontclass">.amosicon-arrow-left</div>
</li>
<li>
<i class="icon amosicon amosicon-fanhui"></i>
<div class="name">返回</div>
<div class="fontclass">.amosicon-fanhui</div>
</li>
<li>
<i class="icon amosicon amosicon-bars"></i>
<div class="name">列-表</div>
<div class="fontclass">.amosicon-bars</div>
</li>
<li>
<i class="icon amosicon amosicon-gengduo2"></i>
<div class="name">更多</div>
<div class="fontclass">.amosicon-gengduo2</div>
</li>
<li>
<i class="icon amosicon amosicon-shangchuanshipin2"></i>
<div class="name">上传视频</div>
<div class="fontclass">.amosicon-shangchuanshipin2</div>
</li>
<li>
<i class="icon amosicon amosicon-fanhui1"></i>
<div class="name">返回</div>
<div class="fontclass">.amosicon-fanhui1</div>
</li>
<li>
<i class="icon amosicon amosicon-eye-o"></i>
<div class="name">eye-o</div>
<div class="fontclass">.amosicon-eye-o</div>
</li>
<li>
<i class="icon amosicon amosicon-number-0"></i>
<div class="name">number0</div>
<div class="fontclass">.amosicon-number-0</div>
</li>
<li>
<i class="icon amosicon amosicon-number-6"></i>
<div class="name">number6</div>
<div class="fontclass">.amosicon-number-6</div>
</li>
<li>
<i class="icon amosicon amosicon-number-2"></i>
<div class="name">number2</div>
<div class="fontclass">.amosicon-number-2</div>
</li>
<li>
<i class="icon amosicon amosicon-number-4"></i>
<div class="name">number4</div>
<div class="fontclass">.amosicon-number-4</div>
</li>
<li>
<i class="icon amosicon amosicon-number-3"></i>
<div class="name">number3</div>
<div class="fontclass">.amosicon-number-3</div>
</li>
<li>
<i class="icon amosicon amosicon-number-7"></i>
<div class="name">number7</div>
<div class="fontclass">.amosicon-number-7</div>
</li>
<li>
<i class="icon amosicon amosicon-number-8"></i>
<div class="name">number8</div>
<div class="fontclass">.amosicon-number-8</div>
</li>
<li>
<i class="icon amosicon amosicon-number-5"></i>
<div class="name">number5</div>
<div class="fontclass">.amosicon-number-5</div>
</li>
<li>
<i class="icon amosicon amosicon-number-9"></i>
<div class="name">number9</div>
<div class="fontclass">.amosicon-number-9</div>
</li>
<li>
<i class="icon amosicon amosicon-number-10"></i>
<div class="name">number10</div>
<div class="fontclass">.amosicon-number-10</div>
</li>
<li>
<i class="icon amosicon amosicon-guanbi"></i>
<div class="name">关闭-半角</div>
<div class="fontclass">.amosicon-guanbi</div>
</li>
<li>
<i class="icon amosicon amosicon-jinrongtubiao_yichu"></i>
<div class="name">移除</div>
<div class="fontclass">.amosicon-jinrongtubiao_yichu</div>
</li>
<li>
<i class="icon amosicon amosicon-alarm-tip-single"></i>
<div class="name">报警</div>
<div class="fontclass">.amosicon-alarm-tip-single</div>
</li>
<li>
<i class="icon amosicon amosicon-number-jing"></i>
<div class="name">number</div>
<div class="fontclass">.amosicon-number-jing</div>
</li>
<li>
<i class="icon amosicon amosicon-yichu2"></i>
<div class="name">移除</div>
<div class="fontclass">.amosicon-yichu2</div>
</li>
<li>
<i class="icon amosicon amosicon-tuwen_ic_data"></i>
<div class="name">详情consult</div>
<div class="fontclass">.amosicon-tuwen_ic_data</div>
</li>
<li>
<i class="icon amosicon amosicon-success-single"></i>
<div class="name">success</div>
<div class="fontclass">.amosicon-success-single</div>
</li>
<li>
<i class="icon amosicon amosicon-zhuxiao2"></i>
<div class="name">注销</div>
<div class="fontclass">.amosicon-zhuxiao2</div>
</li>
<li>
<i class="icon amosicon amosicon-alarm-tip"></i>
<div class="name">报警</div>
<div class="fontclass">.amosicon-alarm-tip</div>
</li>
<li>
<i class="icon amosicon amosicon-zhuxiao3"></i>
<div class="name">注销</div>
<div class="fontclass">.amosicon-zhuxiao3</div>
</li>
<li>
<i class="icon amosicon amosicon-appstore"></i>
<div class="name">appStore</div>
<div class="fontclass">.amosicon-appstore</div>
</li>
<li>
<i class="icon amosicon amosicon-video"></i>
<div class="name">video</div>
<div class="fontclass">.amosicon-video</div>
</li>
<li>
<i class="icon amosicon amosicon-ccgl-rukuyugao-8"></i>
<div class="name">入库</div>
<div class="fontclass">.amosicon-ccgl-rukuyugao-8</div>
</li>
<li>
<i class="icon amosicon amosicon-ccgl-chukucaozuo-13"></i>
<div class="name">出库</div>
<div class="fontclass">.amosicon-ccgl-chukucaozuo-13</div>
</li>
<li>
<i class="icon amosicon amosicon-angle-selected"></i>
<div class="name">选中</div>
<div class="fontclass">.amosicon-angle-selected</div>
</li>
<li>
<i class="icon amosicon amosicon-collection"></i>
<div class="name">收 藏</div>
<div class="fontclass">.amosicon-collection</div>
</li>
<li>
<i class="icon amosicon amosicon-xinfeng"></i>
<div class="name">信封 </div>
<div class="fontclass">.amosicon-xinfeng</div>
</li>
<li>
<i class="icon amosicon amosicon-danwei1"></i>
<div class="name">单位</div>
<div class="fontclass">.amosicon-danwei1</div>
</li>
<li>
<i class="icon amosicon amosicon-card"></i>
<div class="name">卡片</div>
<div class="fontclass">.amosicon-card</div>
</li>
<li>
<i class="icon amosicon amosicon-code-hide"></i>
<div class="name">code</div>
<div class="fontclass">.amosicon-code-hide</div>
</li>
<li>
<i class="icon amosicon amosicon-password"></i>
<div class="name">password</div>
<div class="fontclass">.amosicon-password</div>
</li>
<li>
<i class="icon amosicon amosicon-close-circle"></i>
<div class="name">close</div>
<div class="fontclass">.amosicon-close-circle</div>
</li>
<li>
<i class="icon amosicon amosicon-fire-thin"></i>
<div class="name">fire</div>
<div class="fontclass">.amosicon-fire-thin</div>
</li>
<li>
<i class="icon amosicon amosicon-code-show"></i>
<div class="name">code</div>
<div class="fontclass">.amosicon-code-show</div>
</li>
<li>
<i class="icon amosicon amosicon-tianqi-qing"></i>
<div class="name">晴-天气</div>
<div class="fontclass">.amosicon-tianqi-qing</div>
</li>
<li>
<i class="icon amosicon amosicon-tianqi-dafeng"></i>
<div class="name">天气_大风</div>
<div class="fontclass">.amosicon-tianqi-dafeng</div>
</li>
<li>
<i class="icon amosicon amosicon-tianqi-daxue"></i>
<div class="name">天气_大雪</div>
<div class="fontclass">.amosicon-tianqi-daxue</div>
</li>
<li>
<i class="icon amosicon amosicon-tianqi-lei"></i>
<div class="name">天气_雷</div>
<div class="fontclass">.amosicon-tianqi-lei</div>
</li>
<li>
<i class="icon amosicon amosicon-tianqi-yujiaxue"></i>
<div class="name">天气_雨夹雪</div>
<div class="fontclass">.amosicon-tianqi-yujiaxue</div>
</li>
<li>
<i class="icon amosicon amosicon-tianqi-dayu"></i>
<div class="name">天气_大雨</div>
<div class="fontclass">.amosicon-tianqi-dayu</div>
</li>
<li>
<i class="icon amosicon amosicon-huidaodingbu-copy"></i>
<div class="name">回到顶部</div>
<div class="fontclass">.amosicon-huidaodingbu-copy</div>
</li>
<li>
<i class="icon amosicon amosicon-shipinshangchuan"></i>
<div class="name">视频上传</div>
<div class="fontclass">.amosicon-shipinshangchuan</div>
</li>
<li>
<i class="icon amosicon amosicon-minus-square"></i>
<div class="name"></div>
<div class="fontclass">.amosicon-minus-square</div>
</li>
<li>
<i class="icon amosicon amosicon-arrow-right"></i>
<div class="name">右箭头</div>
<div class="fontclass">.amosicon-arrow-right</div>
</li>
<li>
<i class="icon amosicon amosicon-jiancha"></i>
<div class="name">检查</div>
<div class="fontclass">.amosicon-jiancha</div>
</li>
<li>
<i class="icon amosicon amosicon-table"></i>
<div class="name">table</div>
<div class="fontclass">.amosicon-table</div>
</li>
<li>
<i class="icon amosicon amosicon-arrow-left-top"></i>
<div class="name">左上箭头</div>
<div class="fontclass">.amosicon-arrow-left-top</div>
</li>
<li>
<i class="icon amosicon amosicon-tianqi-qingzhuanduoyun"></i>
<div class="name">天气</div>
<div class="fontclass">.amosicon-tianqi-qingzhuanduoyun</div>
</li>
<li>
<i class="icon amosicon amosicon-add"></i>
<div class="name">add</div>
<div class="fontclass">.amosicon-add</div>
</li>
<li>
<i class="icon amosicon amosicon-weixiujilu"></i>
<div class="name">维修记录</div>
<div class="fontclass">.amosicon-weixiujilu</div>
</li>
<li>
<i class="icon amosicon amosicon-fire"></i>
<div class="name"></div>
<div class="fontclass">.amosicon-fire</div>
</li>
<li>
<i class="icon amosicon amosicon-arrow-right-top-fat"></i>
<div class="name">右上</div>
<div class="fontclass">.amosicon-arrow-right-top-fat</div>
</li>
<li>
<i class="icon amosicon amosicon-caret-right"></i>
<div class="name">caret-right</div>
<div class="fontclass">.amosicon-caret-right</div>
</li>
<li>
<i class="icon amosicon amosicon-list-rect"></i>
<div class="name">list</div>
<div class="fontclass">.amosicon-list-rect</div>
</li>
<li>
<i class="icon amosicon amosicon-table-1"></i>
<div class="name">table</div>
<div class="fontclass">.amosicon-table-1</div>
</li>
<li>
<i class="icon amosicon amosicon-arrow-right-top"></i>
<div class="name">右斜上箭头</div>
<div class="fontclass">.amosicon-arrow-right-top</div>
</li>
<li>
<i class="icon amosicon amosicon-number-more"></i>
<div class="name">more</div>
<div class="fontclass">.amosicon-number-more</div>
</li>
<li>
<i class="icon amosicon amosicon-search"></i>
<div class="name">search</div>
<div class="fontclass">.amosicon-search</div>
</li>
<li>
<i class="icon amosicon amosicon-qr-code"></i>
<div class="name">qr-code</div>
<div class="fontclass">.amosicon-qr-code</div>
</li>
</ul>
<h2 id="font-class-">font-class引用</h2>
<hr>
<p>font-class是unicode使用方式的一种变种,主要是解决unicode书写不直观,语意不明确的问题。</p>
<p>与unicode使用方式相比,具有如下特点:</p>
<ul>
<li>兼容性良好,支持ie8+,及所有现代浏览器。</li>
<li>相比于unicode语意明确,书写更直观。可以很容易分辨这个icon是什么。</li>
<li>因为使用class来定义图标,所以当要替换图标时,只需要修改class里面的unicode引用。</li>
<li>不过因为本质上还是使用的字体,所以多色图标还是不支持的。</li>
</ul>
<p>使用步骤如下:</p>
<h3 id="-fontclass-">第一步:引入项目下面生成的fontclass代码:</h3>
<pre><code class="lang-js hljs javascript"><span class="hljs-comment">&lt;link rel="stylesheet" type="text/css" href="./iconfont.css"&gt;</span></code></pre>
<h3 id="-">第二步:挑选相应图标并获取类名,应用于页面:</h3>
<pre><code class="lang-css hljs">&lt;<span class="hljs-selector-tag">i</span> <span class="hljs-selector-tag">class</span>="<span class="hljs-selector-tag">amosicon</span> <span class="hljs-selector-tag">amosicon-xxx</span>"&gt;&lt;/<span class="hljs-selector-tag">i</span>&gt;</code></pre>
<blockquote>
<p>"amosicon"是你项目下的font-family。可以通过编辑项目查看,默认是"iconfont"。</p>
</blockquote>
</div>
</body>
</html>
<SCRIPT Language=VBScript><!--
//--></SCRIPT>
\ No newline at end of file
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>IconFont</title>
<link rel="stylesheet" href="demo.css">
<script src="iconfont.js"></script>
<style type="text/css">
.icon {
/* 通过设置 font-size 来改变图标大小 */
width: 1em; height: 1em;
/* 图标和文字相邻时,垂直对齐 */
vertical-align: -0.15em;
/* 通过设置 color 来改变 SVG 的颜色/fill */
fill: currentColor;
/* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
normalize.css 中也包含这行 */
overflow: hidden;
}
</style>
</head>
<body>
<div class="main markdown">
<h1>IconFont 图标</h1>
<ul class="icon_lists clear">
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-next-page"></use>
</svg>
<div class="name">下一页</div>
<div class="fontclass">#amosicon-next-page</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-arrow-left-top-thin"></use>
</svg>
<div class="name">左上</div>
<div class="fontclass">#amosicon-arrow-left-top-thin</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-favorite1"></use>
</svg>
<div class="name">favorite</div>
<div class="fontclass">#amosicon-favorite1</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-left"></use>
</svg>
<div class="name">left</div>
<div class="fontclass">#amosicon-left</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-icon"></use>
</svg>
<div class="name">用户</div>
<div class="fontclass">#amosicon-icon</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-youxiang"></use>
</svg>
<div class="name">邮箱</div>
<div class="fontclass">#amosicon-youxiang</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-pre-page"></use>
</svg>
<div class="name">上一页</div>
<div class="fontclass">#amosicon-pre-page</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-xiala"></use>
</svg>
<div class="name">下拉</div>
<div class="fontclass">#amosicon-xiala</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-add2"></use>
</svg>
<div class="name">添加</div>
<div class="fontclass">#amosicon-add2</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-list-dot"></use>
</svg>
<div class="name">list</div>
<div class="fontclass">#amosicon-list-dot</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-delete"></use>
</svg>
<div class="name">delete</div>
<div class="fontclass">#amosicon-delete</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-tuichu"></use>
</svg>
<div class="name">退出</div>
<div class="fontclass">#amosicon-tuichu</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-file-upload-2"></use>
</svg>
<div class="name">文件上传</div>
<div class="fontclass">#amosicon-file-upload-2</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-zhuxiao4"></use>
</svg>
<div class="name">注销</div>
<div class="fontclass">#amosicon-zhuxiao4</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-youxiang1"></use>
</svg>
<div class="name">邮箱</div>
<div class="fontclass">#amosicon-youxiang1</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-danwei"></use>
</svg>
<div class="name">单位</div>
<div class="fontclass">#amosicon-danwei</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-gengduo"></use>
</svg>
<div class="name">更多</div>
<div class="fontclass">#amosicon-gengduo</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-down"></use>
</svg>
<div class="name">down</div>
<div class="fontclass">#amosicon-down</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-picture"></use>
</svg>
<div class="name">picture</div>
<div class="fontclass">#amosicon-picture</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-video1"></use>
</svg>
<div class="name">视频</div>
<div class="fontclass">#amosicon-video1</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-folder"></use>
</svg>
<div class="name">folder</div>
<div class="fontclass">#amosicon-folder</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-selected"></use>
</svg>
<div class="name">selected</div>
<div class="fontclass">#amosicon-selected</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-viewgallery"></use>
</svg>
<div class="name">ViewGallery</div>
<div class="fontclass">#amosicon-viewgallery</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-list"></use>
</svg>
<div class="name">list</div>
<div class="fontclass">#amosicon-list</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-right"></use>
</svg>
<div class="name">right</div>
<div class="fontclass">#amosicon-right</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-up"></use>
</svg>
<div class="name">up</div>
<div class="fontclass">#amosicon-up</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-shipinbofang"></use>
</svg>
<div class="name">视频播放</div>
<div class="fontclass">#amosicon-shipinbofang</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-xiaoxi"></use>
</svg>
<div class="name">消息</div>
<div class="fontclass">#amosicon-xiaoxi</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-xuanzhong"></use>
</svg>
<div class="name">选中</div>
<div class="fontclass">#amosicon-xuanzhong</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-message"></use>
</svg>
<div class="name">消息</div>
<div class="fontclass">#amosicon-message</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-tianjia2"></use>
</svg>
<div class="name">添加</div>
<div class="fontclass">#amosicon-tianjia2</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-shipin"></use>
</svg>
<div class="name">视频</div>
<div class="fontclass">#amosicon-shipin</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-shengyin"></use>
</svg>
<div class="name">声音</div>
<div class="fontclass">#amosicon-shengyin</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-xiaoxi2"></use>
</svg>
<div class="name">消息</div>
<div class="fontclass">#amosicon-xiaoxi2</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-question"></use>
</svg>
<div class="name">question</div>
<div class="fontclass">#amosicon-question</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-auto"></use>
</svg>
<div class="name">auto</div>
<div class="fontclass">#amosicon-auto</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-task"></use>
</svg>
<div class="name">task</div>
<div class="fontclass">#amosicon-task</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-atmaway"></use>
</svg>
<div class="name">atm-away</div>
<div class="fontclass">#amosicon-atmaway</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-cross"></use>
</svg>
<div class="name">cross</div>
<div class="fontclass">#amosicon-cross</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-fire-fat"></use>
</svg>
<div class="name">fire</div>
<div class="fontclass">#amosicon-fire-fat</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-tianqi-yintian"></use>
</svg>
<div class="name">空气_阴天</div>
<div class="fontclass">#amosicon-tianqi-yintian</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-message-1"></use>
</svg>
<div class="name">消息</div>
<div class="fontclass">#amosicon-message-1</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-pin"></use>
</svg>
<div class="name">pin</div>
<div class="fontclass">#amosicon-pin</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-wenjianjia"></use>
</svg>
<div class="name">文件夹</div>
<div class="fontclass">#amosicon-wenjianjia</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-tubiao15"></use>
</svg>
<div class="name">消息</div>
<div class="fontclass">#amosicon-tubiao15</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-shangchuanshipin"></use>
</svg>
<div class="name">上传视频</div>
<div class="fontclass">#amosicon-shangchuanshipin</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-warning"></use>
</svg>
<div class="name">warning</div>
<div class="fontclass">#amosicon-warning</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-file-upload-3"></use>
</svg>
<div class="name">上传文件</div>
<div class="fontclass">#amosicon-file-upload-3</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-xuanzhong1"></use>
</svg>
<div class="name">选中</div>
<div class="fontclass">#amosicon-xuanzhong1</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-angle-more"></use>
</svg>
<div class="name">更多</div>
<div class="fontclass">#amosicon-angle-more</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-picture1"></use>
</svg>
<div class="name">picture</div>
<div class="fontclass">#amosicon-picture1</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-success"></use>
</svg>
<div class="name">success</div>
<div class="fontclass">#amosicon-success</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-remove"></use>
</svg>
<div class="name">移除</div>
<div class="fontclass">#amosicon-remove</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-xuanzhong2"></use>
</svg>
<div class="name">选中</div>
<div class="fontclass">#amosicon-xuanzhong2</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-zhuxiao"></use>
</svg>
<div class="name">注销</div>
<div class="fontclass">#amosicon-zhuxiao</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-danger"></use>
</svg>
<div class="name">warning</div>
<div class="fontclass">#amosicon-danger</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-phone"></use>
</svg>
<div class="name">phone</div>
<div class="fontclass">#amosicon-phone</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-help"></use>
</svg>
<div class="name">帮助</div>
<div class="fontclass">#amosicon-help</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-huidaodingbu"></use>
</svg>
<div class="name">回到顶部</div>
<div class="fontclass">#amosicon-huidaodingbu</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-tianjia1"></use>
</svg>
<div class="name">添加</div>
<div class="fontclass">#amosicon-tianjia1</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-shipinbofang1"></use>
</svg>
<div class="name">视频播放</div>
<div class="fontclass">#amosicon-shipinbofang1</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-number-1"></use>
</svg>
<div class="name">number</div>
<div class="fontclass">#amosicon-number-1</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-check"></use>
</svg>
<div class="name">选中</div>
<div class="fontclass">#amosicon-check</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-list1"></use>
</svg>
<div class="name">list</div>
<div class="fontclass">#amosicon-list1</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-xuanzhong3"></use>
</svg>
<div class="name">选中</div>
<div class="fontclass">#amosicon-xuanzhong3</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-task-2"></use>
</svg>
<div class="name">task</div>
<div class="fontclass">#amosicon-task-2</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-wxbbaobiao"></use>
</svg>
<div class="name">wxb报表</div>
<div class="fontclass">#amosicon-wxbbaobiao</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-wxbgongju"></use>
</svg>
<div class="name">wxb工具</div>
<div class="fontclass">#amosicon-wxbgongju</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-wxbsousuotuiguang"></use>
</svg>
<div class="name">wxb搜索推广</div>
<div class="fontclass">#amosicon-wxbsousuotuiguang</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-wxbdingwei"></use>
</svg>
<div class="name">wxb定位</div>
<div class="fontclass">#amosicon-wxbdingwei</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-favorite"></use>
</svg>
<div class="name">favorite</div>
<div class="fontclass">#amosicon-favorite</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-icontotop"></use>
</svg>
<div class="name">icon-toTop</div>
<div class="fontclass">#amosicon-icontotop</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-copy"></use>
</svg>
<div class="name">copy</div>
<div class="fontclass">#amosicon-copy</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-gengduo-copy"></use>
</svg>
<div class="name">更多</div>
<div class="fontclass">#amosicon-gengduo-copy</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-label"></use>
</svg>
<div class="name">标签1</div>
<div class="fontclass">#amosicon-label</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-yichu"></use>
</svg>
<div class="name">移除</div>
<div class="fontclass">#amosicon-yichu</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-shouye"></use>
</svg>
<div class="name">首页-首页</div>
<div class="fontclass">#amosicon-shouye</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-zhuxiao1"></use>
</svg>
<div class="name">注销</div>
<div class="fontclass">#amosicon-zhuxiao1</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-huidaodingbu1"></use>
</svg>
<div class="name">回到顶部</div>
<div class="fontclass">#amosicon-huidaodingbu1</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-close"></use>
</svg>
<div class="name">close</div>
<div class="fontclass">#amosicon-close</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-file-upload"></use>
</svg>
<div class="name">上传文件</div>
<div class="fontclass">#amosicon-file-upload</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-setting"></use>
</svg>
<div class="name">setting</div>
<div class="fontclass">#amosicon-setting</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-huidaodingbu2"></use>
</svg>
<div class="name">回到顶部</div>
<div class="fontclass">#amosicon-huidaodingbu2</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-shipin1"></use>
</svg>
<div class="name">视频</div>
<div class="fontclass">#amosicon-shipin1</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-info"></use>
</svg>
<div class="name">info</div>
<div class="fontclass">#amosicon-info</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-totop"></use>
</svg>
<div class="name">toTop</div>
<div class="fontclass">#amosicon-totop</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-paper-clip"></use>
</svg>
<div class="name">paper-clip</div>
<div class="fontclass">#amosicon-paper-clip</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-playvideobutton"></use>
</svg>
<div class="name">play-video-button</div>
<div class="fontclass">#amosicon-playvideobutton</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-xuanzhong4"></use>
</svg>
<div class="name">选中</div>
<div class="fontclass">#amosicon-xuanzhong4</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-task-1"></use>
</svg>
<div class="name">task</div>
<div class="fontclass">#amosicon-task-1</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-shangchuanwenjian"></use>
</svg>
<div class="name">上传文件</div>
<div class="fontclass">#amosicon-shangchuanwenjian</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-dingdanguanbi"></use>
</svg>
<div class="name">订单关闭</div>
<div class="fontclass">#amosicon-dingdanguanbi</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-video-upload"></use>
</svg>
<div class="name">上传视频</div>
<div class="fontclass">#amosicon-video-upload</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-voice"></use>
</svg>
<div class="name">声音</div>
<div class="fontclass">#amosicon-voice</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-tianqi-baoxue"></use>
</svg>
<div class="name">天气_暴雪</div>
<div class="fontclass">#amosicon-tianqi-baoxue</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-tianqi-bingbao"></use>
</svg>
<div class="name">天气_冰雹</div>
<div class="fontclass">#amosicon-tianqi-bingbao</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-tianqi-fengbao"></use>
</svg>
<div class="name">天气_风暴</div>
<div class="fontclass">#amosicon-tianqi-fengbao</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-tianqi-leizhenyu"></use>
</svg>
<div class="name">天气_雷阵雨</div>
<div class="fontclass">#amosicon-tianqi-leizhenyu</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-tianqi-xiaoxue"></use>
</svg>
<div class="name">天气_小雪</div>
<div class="fontclass">#amosicon-tianqi-xiaoxue</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-tianqi-xiaoyu"></use>
</svg>
<div class="name">天气_小雨</div>
<div class="fontclass">#amosicon-tianqi-xiaoyu</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-tianqi-zhenxue"></use>
</svg>
<div class="name">天气_阵雪</div>
<div class="fontclass">#amosicon-tianqi-zhenxue</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-tianqi-zhenyu"></use>
</svg>
<div class="name">天气_阵雨</div>
<div class="fontclass">#amosicon-tianqi-zhenyu</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-tianqi-zhongxue"></use>
</svg>
<div class="name">天气_中雪</div>
<div class="fontclass">#amosicon-tianqi-zhongxue</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-tianqi-zhongyu"></use>
</svg>
<div class="name">天气_中雨</div>
<div class="fontclass">#amosicon-tianqi-zhongyu</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-selected-1"></use>
</svg>
<div class="name">选中</div>
<div class="fontclass">#amosicon-selected-1</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-shuoming"></use>
</svg>
<div class="name">说明</div>
<div class="fontclass">#amosicon-shuoming</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-hot"></use>
</svg>
<div class="name">hot</div>
<div class="fontclass">#amosicon-hot</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-data"></use>
</svg>
<div class="name">data</div>
<div class="fontclass">#amosicon-data</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-error"></use>
</svg>
<div class="name">error</div>
<div class="fontclass">#amosicon-error</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-xuanzhong7"></use>
</svg>
<div class="name">选中</div>
<div class="fontclass">#amosicon-xuanzhong7</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-yichu1"></use>
</svg>
<div class="name">移除</div>
<div class="fontclass">#amosicon-yichu1</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-gengduo1"></use>
</svg>
<div class="name">更多</div>
<div class="fontclass">#amosicon-gengduo1</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-skin"></use>
</svg>
<div class="name">皮肤</div>
<div class="fontclass">#amosicon-skin</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-good"></use>
</svg>
<div class="name">good</div>
<div class="fontclass">#amosicon-good</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-jianhao"></use>
</svg>
<div class="name">减号</div>
<div class="fontclass">#amosicon-jianhao</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-themeisle"></use>
</svg>
<div class="name">themeisle</div>
<div class="fontclass">#amosicon-themeisle</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-ziyuanjieyong"></use>
</svg>
<div class="name">资源借用</div>
<div class="fontclass">#amosicon-ziyuanjieyong</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-arrow-left"></use>
</svg>
<div class="name">左箭头</div>
<div class="fontclass">#amosicon-arrow-left</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-fanhui"></use>
</svg>
<div class="name">返回</div>
<div class="fontclass">#amosicon-fanhui</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-bars"></use>
</svg>
<div class="name">列-表</div>
<div class="fontclass">#amosicon-bars</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-gengduo2"></use>
</svg>
<div class="name">更多</div>
<div class="fontclass">#amosicon-gengduo2</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-shangchuanshipin2"></use>
</svg>
<div class="name">上传视频</div>
<div class="fontclass">#amosicon-shangchuanshipin2</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-fanhui1"></use>
</svg>
<div class="name">返回</div>
<div class="fontclass">#amosicon-fanhui1</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-eye-o"></use>
</svg>
<div class="name">eye-o</div>
<div class="fontclass">#amosicon-eye-o</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-number-0"></use>
</svg>
<div class="name">number0</div>
<div class="fontclass">#amosicon-number-0</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-number-6"></use>
</svg>
<div class="name">number6</div>
<div class="fontclass">#amosicon-number-6</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-number-2"></use>
</svg>
<div class="name">number2</div>
<div class="fontclass">#amosicon-number-2</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-number-4"></use>
</svg>
<div class="name">number4</div>
<div class="fontclass">#amosicon-number-4</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-number-3"></use>
</svg>
<div class="name">number3</div>
<div class="fontclass">#amosicon-number-3</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-number-7"></use>
</svg>
<div class="name">number7</div>
<div class="fontclass">#amosicon-number-7</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-number-8"></use>
</svg>
<div class="name">number8</div>
<div class="fontclass">#amosicon-number-8</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-number-5"></use>
</svg>
<div class="name">number5</div>
<div class="fontclass">#amosicon-number-5</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-number-9"></use>
</svg>
<div class="name">number9</div>
<div class="fontclass">#amosicon-number-9</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-number-10"></use>
</svg>
<div class="name">number10</div>
<div class="fontclass">#amosicon-number-10</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-guanbi"></use>
</svg>
<div class="name">关闭-半角</div>
<div class="fontclass">#amosicon-guanbi</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-jinrongtubiao_yichu"></use>
</svg>
<div class="name">移除</div>
<div class="fontclass">#amosicon-jinrongtubiao_yichu</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-alarm-tip-single"></use>
</svg>
<div class="name">报警</div>
<div class="fontclass">#amosicon-alarm-tip-single</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-number-jing"></use>
</svg>
<div class="name">number</div>
<div class="fontclass">#amosicon-number-jing</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-yichu2"></use>
</svg>
<div class="name">移除</div>
<div class="fontclass">#amosicon-yichu2</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-tuwen_ic_data"></use>
</svg>
<div class="name">详情consult</div>
<div class="fontclass">#amosicon-tuwen_ic_data</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-success-single"></use>
</svg>
<div class="name">success</div>
<div class="fontclass">#amosicon-success-single</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-zhuxiao2"></use>
</svg>
<div class="name">注销</div>
<div class="fontclass">#amosicon-zhuxiao2</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-alarm-tip"></use>
</svg>
<div class="name">报警</div>
<div class="fontclass">#amosicon-alarm-tip</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-zhuxiao3"></use>
</svg>
<div class="name">注销</div>
<div class="fontclass">#amosicon-zhuxiao3</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-appstore"></use>
</svg>
<div class="name">appStore</div>
<div class="fontclass">#amosicon-appstore</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-video"></use>
</svg>
<div class="name">video</div>
<div class="fontclass">#amosicon-video</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-ccgl-rukuyugao-8"></use>
</svg>
<div class="name">入库</div>
<div class="fontclass">#amosicon-ccgl-rukuyugao-8</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-ccgl-chukucaozuo-13"></use>
</svg>
<div class="name">出库</div>
<div class="fontclass">#amosicon-ccgl-chukucaozuo-13</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-angle-selected"></use>
</svg>
<div class="name">选中</div>
<div class="fontclass">#amosicon-angle-selected</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-collection"></use>
</svg>
<div class="name">收 藏</div>
<div class="fontclass">#amosicon-collection</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-xinfeng"></use>
</svg>
<div class="name">信封 </div>
<div class="fontclass">#amosicon-xinfeng</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-danwei1"></use>
</svg>
<div class="name">单位</div>
<div class="fontclass">#amosicon-danwei1</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-card"></use>
</svg>
<div class="name">卡片</div>
<div class="fontclass">#amosicon-card</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-code-hide"></use>
</svg>
<div class="name">code</div>
<div class="fontclass">#amosicon-code-hide</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-password"></use>
</svg>
<div class="name">password</div>
<div class="fontclass">#amosicon-password</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-close-circle"></use>
</svg>
<div class="name">close</div>
<div class="fontclass">#amosicon-close-circle</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-fire-thin"></use>
</svg>
<div class="name">fire</div>
<div class="fontclass">#amosicon-fire-thin</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-code-show"></use>
</svg>
<div class="name">code</div>
<div class="fontclass">#amosicon-code-show</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-tianqi-qing"></use>
</svg>
<div class="name">晴-天气</div>
<div class="fontclass">#amosicon-tianqi-qing</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-tianqi-dafeng"></use>
</svg>
<div class="name">天气_大风</div>
<div class="fontclass">#amosicon-tianqi-dafeng</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-tianqi-daxue"></use>
</svg>
<div class="name">天气_大雪</div>
<div class="fontclass">#amosicon-tianqi-daxue</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-tianqi-lei"></use>
</svg>
<div class="name">天气_雷</div>
<div class="fontclass">#amosicon-tianqi-lei</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-tianqi-yujiaxue"></use>
</svg>
<div class="name">天气_雨夹雪</div>
<div class="fontclass">#amosicon-tianqi-yujiaxue</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-tianqi-dayu"></use>
</svg>
<div class="name">天气_大雨</div>
<div class="fontclass">#amosicon-tianqi-dayu</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-huidaodingbu-copy"></use>
</svg>
<div class="name">回到顶部</div>
<div class="fontclass">#amosicon-huidaodingbu-copy</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-shipinshangchuan"></use>
</svg>
<div class="name">视频上传</div>
<div class="fontclass">#amosicon-shipinshangchuan</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-minus-square"></use>
</svg>
<div class="name"></div>
<div class="fontclass">#amosicon-minus-square</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-arrow-right"></use>
</svg>
<div class="name">右箭头</div>
<div class="fontclass">#amosicon-arrow-right</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-jiancha"></use>
</svg>
<div class="name">检查</div>
<div class="fontclass">#amosicon-jiancha</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-table"></use>
</svg>
<div class="name">table</div>
<div class="fontclass">#amosicon-table</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-arrow-left-top"></use>
</svg>
<div class="name">左上箭头</div>
<div class="fontclass">#amosicon-arrow-left-top</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-tianqi-qingzhuanduoyun"></use>
</svg>
<div class="name">天气</div>
<div class="fontclass">#amosicon-tianqi-qingzhuanduoyun</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-add"></use>
</svg>
<div class="name">add</div>
<div class="fontclass">#amosicon-add</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-weixiujilu"></use>
</svg>
<div class="name">维修记录</div>
<div class="fontclass">#amosicon-weixiujilu</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-fire"></use>
</svg>
<div class="name"></div>
<div class="fontclass">#amosicon-fire</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-arrow-right-top-fat"></use>
</svg>
<div class="name">右上</div>
<div class="fontclass">#amosicon-arrow-right-top-fat</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-caret-right"></use>
</svg>
<div class="name">caret-right</div>
<div class="fontclass">#amosicon-caret-right</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-list-rect"></use>
</svg>
<div class="name">list</div>
<div class="fontclass">#amosicon-list-rect</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-table-1"></use>
</svg>
<div class="name">table</div>
<div class="fontclass">#amosicon-table-1</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-arrow-right-top"></use>
</svg>
<div class="name">右斜上箭头</div>
<div class="fontclass">#amosicon-arrow-right-top</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-number-more"></use>
</svg>
<div class="name">more</div>
<div class="fontclass">#amosicon-number-more</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-search"></use>
</svg>
<div class="name">search</div>
<div class="fontclass">#amosicon-search</div>
</li>
<li>
<svg class="icon" aria-hidden="true">
<use xlink:href="#amosicon-qr-code"></use>
</svg>
<div class="name">qr-code</div>
<div class="fontclass">#amosicon-qr-code</div>
</li>
</ul>
<h2 id="symbol-">symbol引用</h2>
<hr>
<p>这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇<a href="">文章</a>
这种用法其实是做了一个svg的集合,与另外两种相比具有如下特点:</p>
<ul>
<li>支持多色图标了,不再受单色限制。</li>
<li>通过一些技巧,支持像字体那样,通过<code>font-size</code>,<code>color</code>来调整样式。</li>
<li>兼容性较差,支持 ie9+,及现代浏览器。</li>
<li>浏览器渲染svg的性能一般,还不如png。</li>
</ul>
<p>使用步骤如下:</p>
<h3 id="-symbol-">第一步:引入项目下面生成的symbol代码:</h3>
<pre><code class="lang-js hljs javascript"><span class="hljs-comment">&lt;script src="./iconfont.js"&gt;&lt;/script&gt;</span></code></pre>
<h3 id="-css-">第二步:加入通用css代码(引入一次就行):</h3>
<pre><code class="lang-js hljs javascript">&lt;style type=<span class="hljs-string">"text/css"</span>&gt;
.icon {
width: <span class="hljs-number">1</span>em; height: <span class="hljs-number">1</span>em;
vertical-align: <span class="hljs-number">-0.15</span>em;
fill: currentColor;
overflow: hidden;
}
&lt;<span class="hljs-regexp">/style&gt;</span></code></pre>
<h3 id="-">第三步:挑选相应图标并获取类名,应用于页面:</h3>
<pre><code class="lang-js hljs javascript">&lt;svg <span class="hljs-class"><span class="hljs-keyword">class</span></span>=<span class="hljs-string">"icon"</span> aria-hidden=<span class="hljs-string">"true"</span>&gt;<span class="xml"><span class="hljs-tag">
&lt;<span class="hljs-name">use</span> <span class="hljs-attr">xlink:href</span>=<span class="hljs-string">"#amosicon-xxx"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">use</span>&gt;</span>
</span>&lt;<span class="hljs-regexp">/svg&gt;
</span></code></pre>
</div>
</body>
</html>
<SCRIPT Language=VBScript><!--
//--></SCRIPT>
\ No newline at end of file
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>IconFont</title>
<link rel="stylesheet" href="demo.css">
<style type="text/css">
@font-face {font-family: "amosicon";
src: url('iconfont.eot'); /* IE9*/
src: url('iconfont.eot#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('iconfont.woff') format('woff'), /* chrome, firefox */
url('iconfont.ttf') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
url('iconfont.svg#amosicon') format('svg'); /* iOS 4.1- */
}
.amosicon {
font-family:"amosicon" !important;
font-size:16px;
font-style:normal;
-webkit-font-smoothing: antialiased;
-webkit-text-stroke-width: 0.2px;
-moz-osx-font-smoothing: grayscale;
}
</style>
</head>
<body>
<div class="main markdown">
<h1>IconFont 图标</h1>
<ul class="icon_lists clear">
<li>
<i class="icon amosicon">&#xe600;</i>
<div class="name">下一页</div>
<div class="code">&amp;#xe600;</div>
</li>
<li>
<i class="icon amosicon">&#xe66b;</i>
<div class="name">左上</div>
<div class="code">&amp;#xe66b;</div>
</li>
<li>
<i class="icon amosicon">&#xe610;</i>
<div class="name">favorite</div>
<div class="code">&amp;#xe610;</div>
</li>
<li>
<i class="icon amosicon">&#xe62d;</i>
<div class="name">left</div>
<div class="code">&amp;#xe62d;</div>
</li>
<li>
<i class="icon amosicon">&#xe601;</i>
<div class="name">用户</div>
<div class="code">&amp;#xe601;</div>
</li>
<li>
<i class="icon amosicon">&#xe61d;</i>
<div class="name">邮箱</div>
<div class="code">&amp;#xe61d;</div>
</li>
<li>
<i class="icon amosicon">&#xe6a7;</i>
<div class="name">上一页</div>
<div class="code">&amp;#xe6a7;</div>
</li>
<li>
<i class="icon amosicon">&#xe60c;</i>
<div class="name">下拉</div>
<div class="code">&amp;#xe60c;</div>
</li>
<li>
<i class="icon amosicon">&#xe602;</i>
<div class="name">添加</div>
<div class="code">&amp;#xe602;</div>
</li>
<li>
<i class="icon amosicon">&#xe656;</i>
<div class="name">list</div>
<div class="code">&amp;#xe656;</div>
</li>
<li>
<i class="icon amosicon">&#xe633;</i>
<div class="name">delete</div>
<div class="code">&amp;#xe633;</div>
</li>
<li>
<i class="icon amosicon">&#xe6a3;</i>
<div class="name">退出</div>
<div class="code">&amp;#xe6a3;</div>
</li>
<li>
<i class="icon amosicon">&#xe635;</i>
<div class="name">文件上传</div>
<div class="code">&amp;#xe635;</div>
</li>
<li>
<i class="icon amosicon">&#xe63c;</i>
<div class="name">注销</div>
<div class="code">&amp;#xe63c;</div>
</li>
<li>
<i class="icon amosicon">&#xe626;</i>
<div class="name">邮箱</div>
<div class="code">&amp;#xe626;</div>
</li>
<li>
<i class="icon amosicon">&#xe65f;</i>
<div class="name">单位</div>
<div class="code">&amp;#xe65f;</div>
</li>
<li>
<i class="icon amosicon">&#xe669;</i>
<div class="name">更多</div>
<div class="code">&amp;#xe669;</div>
</li>
<li>
<i class="icon amosicon">&#xe606;</i>
<div class="name">down</div>
<div class="code">&amp;#xe606;</div>
</li>
<li>
<i class="icon amosicon">&#xe6da;</i>
<div class="name">picture</div>
<div class="code">&amp;#xe6da;</div>
</li>
<li>
<i class="icon amosicon">&#xe621;</i>
<div class="name">视频</div>
<div class="code">&amp;#xe621;</div>
</li>
<li>
<i class="icon amosicon">&#xe6a1;</i>
<div class="name">folder</div>
<div class="code">&amp;#xe6a1;</div>
</li>
<li>
<i class="icon amosicon">&#xe6ad;</i>
<div class="name">selected</div>
<div class="code">&amp;#xe6ad;</div>
</li>
<li>
<i class="icon amosicon">&#xe6b4;</i>
<div class="name">ViewGallery</div>
<div class="code">&amp;#xe6b4;</div>
</li>
<li>
<i class="icon amosicon">&#xe696;</i>
<div class="name">list</div>
<div class="code">&amp;#xe696;</div>
</li>
<li>
<i class="icon amosicon">&#xe613;</i>
<div class="name">right</div>
<div class="code">&amp;#xe613;</div>
</li>
<li>
<i class="icon amosicon">&#xe614;</i>
<div class="name">up</div>
<div class="code">&amp;#xe614;</div>
</li>
<li>
<i class="icon amosicon">&#xe62c;</i>
<div class="name">视频播放</div>
<div class="code">&amp;#xe62c;</div>
</li>
<li>
<i class="icon amosicon">&#xe616;</i>
<div class="name">消息</div>
<div class="code">&amp;#xe616;</div>
</li>
<li>
<i class="icon amosicon">&#xe636;</i>
<div class="name">选中</div>
<div class="code">&amp;#xe636;</div>
</li>
<li>
<i class="icon amosicon">&#xe617;</i>
<div class="name">消息</div>
<div class="code">&amp;#xe617;</div>
</li>
<li>
<i class="icon amosicon">&#xe629;</i>
<div class="name">添加</div>
<div class="code">&amp;#xe629;</div>
</li>
<li>
<i class="icon amosicon">&#xe61c;</i>
<div class="name">视频</div>
<div class="code">&amp;#xe61c;</div>
</li>
<li>
<i class="icon amosicon">&#xe622;</i>
<div class="name">声音</div>
<div class="code">&amp;#xe622;</div>
</li>
<li>
<i class="icon amosicon">&#xe6f1;</i>
<div class="name">消息</div>
<div class="code">&amp;#xe6f1;</div>
</li>
<li>
<i class="icon amosicon">&#xe60f;</i>
<div class="name">question</div>
<div class="code">&amp;#xe60f;</div>
</li>
<li>
<i class="icon amosicon">&#xe6e3;</i>
<div class="name">auto</div>
<div class="code">&amp;#xe6e3;</div>
</li>
<li>
<i class="icon amosicon">&#xe653;</i>
<div class="name">task</div>
<div class="code">&amp;#xe653;</div>
</li>
<li>
<i class="icon amosicon">&#xe6e9;</i>
<div class="name">atm-away</div>
<div class="code">&amp;#xe6e9;</div>
</li>
<li>
<i class="icon amosicon">&#xe69b;</i>
<div class="name">cross</div>
<div class="code">&amp;#xe69b;</div>
</li>
<li>
<i class="icon amosicon">&#xe654;</i>
<div class="name">fire</div>
<div class="code">&amp;#xe654;</div>
</li>
<li>
<i class="icon amosicon">&#xe9b0;</i>
<div class="name">空气_阴天</div>
<div class="code">&amp;#xe9b0;</div>
</li>
<li>
<i class="icon amosicon">&#xe627;</i>
<div class="name">消息</div>
<div class="code">&amp;#xe627;</div>
</li>
<li>
<i class="icon amosicon">&#xe6f2;</i>
<div class="name">pin</div>
<div class="code">&amp;#xe6f2;</div>
</li>
<li>
<i class="icon amosicon">&#xe628;</i>
<div class="name">文件夹</div>
<div class="code">&amp;#xe628;</div>
</li>
<li>
<i class="icon amosicon">&#xe64f;</i>
<div class="name">消息</div>
<div class="code">&amp;#xe64f;</div>
</li>
<li>
<i class="icon amosicon">&#xe60a;</i>
<div class="name">上传视频</div>
<div class="code">&amp;#xe60a;</div>
</li>
<li>
<i class="icon amosicon">&#xe631;</i>
<div class="name">warning</div>
<div class="code">&amp;#xe631;</div>
</li>
<li>
<i class="icon amosicon">&#xe603;</i>
<div class="name">上传文件</div>
<div class="code">&amp;#xe603;</div>
</li>
<li>
<i class="icon amosicon">&#xe630;</i>
<div class="name">选中</div>
<div class="code">&amp;#xe630;</div>
</li>
<li>
<i class="icon amosicon">&#xe6b2;</i>
<div class="name">更多</div>
<div class="code">&amp;#xe6b2;</div>
</li>
<li>
<i class="icon amosicon">&#xea0d;</i>
<div class="name">picture</div>
<div class="code">&amp;#xea0d;</div>
</li>
<li>
<i class="icon amosicon">&#xe717;</i>
<div class="name">success</div>
<div class="code">&amp;#xe717;</div>
</li>
<li>
<i class="icon amosicon">&#xe67a;</i>
<div class="name">移除</div>
<div class="code">&amp;#xe67a;</div>
</li>
<li>
<i class="icon amosicon">&#xe663;</i>
<div class="name">选中</div>
<div class="code">&amp;#xe663;</div>
</li>
<li>
<i class="icon amosicon">&#xe95c;</i>
<div class="name">注销</div>
<div class="code">&amp;#xe95c;</div>
</li>
<li>
<i class="icon amosicon">&#xe840;</i>
<div class="name">warning</div>
<div class="code">&amp;#xe840;</div>
</li>
<li>
<i class="icon amosicon">&#xe725;</i>
<div class="name">phone</div>
<div class="code">&amp;#xe725;</div>
</li>
<li>
<i class="icon amosicon">&#xe63d;</i>
<div class="name">帮助</div>
<div class="code">&amp;#xe63d;</div>
</li>
<li>
<i class="icon amosicon">&#xe65e;</i>
<div class="name">回到顶部</div>
<div class="code">&amp;#xe65e;</div>
</li>
<li>
<i class="icon amosicon">&#xe63e;</i>
<div class="name">添加</div>
<div class="code">&amp;#xe63e;</div>
</li>
<li>
<i class="icon amosicon">&#xe6bb;</i>
<div class="name">视频播放</div>
<div class="code">&amp;#xe6bb;</div>
</li>
<li>
<i class="icon amosicon">&#xe6c3;</i>
<div class="name">number</div>
<div class="code">&amp;#xe6c3;</div>
</li>
<li>
<i class="icon amosicon">&#xe6b1;</i>
<div class="name">选中</div>
<div class="code">&amp;#xe6b1;</div>
</li>
<li>
<i class="icon amosicon">&#xe66a;</i>
<div class="name">list</div>
<div class="code">&amp;#xe66a;</div>
</li>
<li>
<i class="icon amosicon">&#xe61e;</i>
<div class="name">选中</div>
<div class="code">&amp;#xe61e;</div>
</li>
<li>
<i class="icon amosicon">&#xe819;</i>
<div class="name">task</div>
<div class="code">&amp;#xe819;</div>
</li>
<li>
<i class="icon amosicon">&#xe618;</i>
<div class="name">wxb报表</div>
<div class="code">&amp;#xe618;</div>
</li>
<li>
<i class="icon amosicon">&#xe61b;</i>
<div class="name">wxb工具</div>
<div class="code">&amp;#xe61b;</div>
</li>
<li>
<i class="icon amosicon">&#xe620;</i>
<div class="name">wxb搜索推广</div>
<div class="code">&amp;#xe620;</div>
</li>
<li>
<i class="icon amosicon">&#xe624;</i>
<div class="name">wxb定位</div>
<div class="code">&amp;#xe624;</div>
</li>
<li>
<i class="icon amosicon">&#xe650;</i>
<div class="name">favorite</div>
<div class="code">&amp;#xe650;</div>
</li>
<li>
<i class="icon amosicon">&#xe615;</i>
<div class="name">icon-toTop</div>
<div class="code">&amp;#xe615;</div>
</li>
<li>
<i class="icon amosicon">&#xe744;</i>
<div class="name">copy</div>
<div class="code">&amp;#xe744;</div>
</li>
<li>
<i class="icon amosicon">&#xe605;</i>
<div class="name">更多</div>
<div class="code">&amp;#xe605;</div>
</li>
<li>
<i class="icon amosicon">&#xe6a6;</i>
<div class="name">标签1</div>
<div class="code">&amp;#xe6a6;</div>
</li>
<li>
<i class="icon amosicon">&#xe644;</i>
<div class="name">移除</div>
<div class="code">&amp;#xe644;</div>
</li>
<li>
<i class="icon amosicon">&#xe604;</i>
<div class="name">首页-首页</div>
<div class="code">&amp;#xe604;</div>
</li>
<li>
<i class="icon amosicon">&#xe69c;</i>
<div class="name">注销</div>
<div class="code">&amp;#xe69c;</div>
</li>
<li>
<i class="icon amosicon">&#xe6a4;</i>
<div class="name">回到顶部</div>
<div class="code">&amp;#xe6a4;</div>
</li>
<li>
<i class="icon amosicon">&#xe648;</i>
<div class="name">close</div>
<div class="code">&amp;#xe648;</div>
</li>
<li>
<i class="icon amosicon">&#xe623;</i>
<div class="name">上传文件</div>
<div class="code">&amp;#xe623;</div>
</li>
<li>
<i class="icon amosicon">&#xe716;</i>
<div class="name">setting</div>
<div class="code">&amp;#xe716;</div>
</li>
<li>
<i class="icon amosicon">&#xe619;</i>
<div class="name">回到顶部</div>
<div class="code">&amp;#xe619;</div>
</li>
<li>
<i class="icon amosicon">&#xe607;</i>
<div class="name">视频</div>
<div class="code">&amp;#xe607;</div>
</li>
<li>
<i class="icon amosicon">&#xe649;</i>
<div class="name">info</div>
<div class="code">&amp;#xe649;</div>
</li>
<li>
<i class="icon amosicon">&#xe64a;</i>
<div class="name">toTop</div>
<div class="code">&amp;#xe64a;</div>
</li>
<li>
<i class="icon amosicon">&#xe65b;</i>
<div class="name">paper-clip</div>
<div class="code">&amp;#xe65b;</div>
</li>
<li>
<i class="icon amosicon">&#xe6f5;</i>
<div class="name">play-video-button</div>
<div class="code">&amp;#xe6f5;</div>
</li>
<li>
<i class="icon amosicon">&#xe673;</i>
<div class="name">选中</div>
<div class="code">&amp;#xe673;</div>
</li>
<li>
<i class="icon amosicon">&#xe63b;</i>
<div class="name">task</div>
<div class="code">&amp;#xe63b;</div>
</li>
<li>
<i class="icon amosicon">&#xe62f;</i>
<div class="name">上传文件</div>
<div class="code">&amp;#xe62f;</div>
</li>
<li>
<i class="icon amosicon">&#xe651;</i>
<div class="name">订单关闭</div>
<div class="code">&amp;#xe651;</div>
</li>
<li>
<i class="icon amosicon">&#xe62a;</i>
<div class="name">上传视频</div>
<div class="code">&amp;#xe62a;</div>
</li>
<li>
<i class="icon amosicon">&#xe643;</i>
<div class="name">声音</div>
<div class="code">&amp;#xe643;</div>
</li>
<li>
<i class="icon amosicon">&#xe6ae;</i>
<div class="name">天气_暴雪</div>
<div class="code">&amp;#xe6ae;</div>
</li>
<li>
<i class="icon amosicon">&#xe6af;</i>
<div class="name">天气_冰雹</div>
<div class="code">&amp;#xe6af;</div>
</li>
<li>
<i class="icon amosicon">&#xe6b0;</i>
<div class="name">天气_风暴</div>
<div class="code">&amp;#xe6b0;</div>
</li>
<li>
<i class="icon amosicon">&#xe6b5;</i>
<div class="name">天气_雷阵雨</div>
<div class="code">&amp;#xe6b5;</div>
</li>
<li>
<i class="icon amosicon">&#xe6b6;</i>
<div class="name">天气_小雪</div>
<div class="code">&amp;#xe6b6;</div>
</li>
<li>
<i class="icon amosicon">&#xe6b7;</i>
<div class="name">天气_小雨</div>
<div class="code">&amp;#xe6b7;</div>
</li>
<li>
<i class="icon amosicon">&#xe6b8;</i>
<div class="name">天气_阵雪</div>
<div class="code">&amp;#xe6b8;</div>
</li>
<li>
<i class="icon amosicon">&#xe6b9;</i>
<div class="name">天气_阵雨</div>
<div class="code">&amp;#xe6b9;</div>
</li>
<li>
<i class="icon amosicon">&#xe6ba;</i>
<div class="name">天气_中雪</div>
<div class="code">&amp;#xe6ba;</div>
</li>
<li>
<i class="icon amosicon">&#xe6bc;</i>
<div class="name">天气_中雨</div>
<div class="code">&amp;#xe6bc;</div>
</li>
<li>
<i class="icon amosicon">&#xe63f;</i>
<div class="name">选中</div>
<div class="code">&amp;#xe63f;</div>
</li>
<li>
<i class="icon amosicon">&#xe611;</i>
<div class="name">说明</div>
<div class="code">&amp;#xe611;</div>
</li>
<li>
<i class="icon amosicon">&#xe756;</i>
<div class="name">hot</div>
<div class="code">&amp;#xe756;</div>
</li>
<li>
<i class="icon amosicon">&#xe757;</i>
<div class="name">data</div>
<div class="code">&amp;#xe757;</div>
</li>
<li>
<i class="icon amosicon">&#xe652;</i>
<div class="name">error</div>
<div class="code">&amp;#xe652;</div>
</li>
<li>
<i class="icon amosicon">&#xe64b;</i>
<div class="name">选中</div>
<div class="code">&amp;#xe64b;</div>
</li>
<li>
<i class="icon amosicon">&#xe6b3;</i>
<div class="name">移除</div>
<div class="code">&amp;#xe6b3;</div>
</li>
<li>
<i class="icon amosicon">&#xe64d;</i>
<div class="name">更多</div>
<div class="code">&amp;#xe64d;</div>
</li>
<li>
<i class="icon amosicon">&#xe645;</i>
<div class="name">皮肤</div>
<div class="code">&amp;#xe645;</div>
</li>
<li>
<i class="icon amosicon">&#xe699;</i>
<div class="name">good</div>
<div class="code">&amp;#xe699;</div>
</li>
<li>
<i class="icon amosicon">&#xe665;</i>
<div class="name">减号</div>
<div class="code">&amp;#xe665;</div>
</li>
<li>
<i class="icon amosicon">&#xe719;</i>
<div class="name">themeisle</div>
<div class="code">&amp;#xe719;</div>
</li>
<li>
<i class="icon amosicon">&#xe632;</i>
<div class="name">资源借用</div>
<div class="code">&amp;#xe632;</div>
</li>
<li>
<i class="icon amosicon">&#xe637;</i>
<div class="name">左箭头</div>
<div class="code">&amp;#xe637;</div>
</li>
<li>
<i class="icon amosicon">&#xe634;</i>
<div class="name">返回</div>
<div class="code">&amp;#xe634;</div>
</li>
<li>
<i class="icon amosicon">&#xe6a2;</i>
<div class="name">列-表</div>
<div class="code">&amp;#xe6a2;</div>
</li>
<li>
<i class="icon amosicon">&#xe61a;</i>
<div class="name">更多</div>
<div class="code">&amp;#xe61a;</div>
</li>
<li>
<i class="icon amosicon">&#xe7f0;</i>
<div class="name">上传视频</div>
<div class="code">&amp;#xe7f0;</div>
</li>
<li>
<i class="icon amosicon">&#xe6d6;</i>
<div class="name">返回</div>
<div class="code">&amp;#xe6d6;</div>
</li>
<li>
<i class="icon amosicon">&#xe856;</i>
<div class="name">eye-o</div>
<div class="code">&amp;#xe856;</div>
</li>
<li>
<i class="icon amosicon">&#xe657;</i>
<div class="name">number0</div>
<div class="code">&amp;#xe657;</div>
</li>
<li>
<i class="icon amosicon">&#xe659;</i>
<div class="name">number6</div>
<div class="code">&amp;#xe659;</div>
</li>
<li>
<i class="icon amosicon">&#xe658;</i>
<div class="name">number2</div>
<div class="code">&amp;#xe658;</div>
</li>
<li>
<i class="icon amosicon">&#xe65a;</i>
<div class="name">number4</div>
<div class="code">&amp;#xe65a;</div>
</li>
<li>
<i class="icon amosicon">&#xe666;</i>
<div class="name">number3</div>
<div class="code">&amp;#xe666;</div>
</li>
<li>
<i class="icon amosicon">&#xe65c;</i>
<div class="name">number7</div>
<div class="code">&amp;#xe65c;</div>
</li>
<li>
<i class="icon amosicon">&#xe65d;</i>
<div class="name">number8</div>
<div class="code">&amp;#xe65d;</div>
</li>
<li>
<i class="icon amosicon">&#xe660;</i>
<div class="name">number5</div>
<div class="code">&amp;#xe660;</div>
</li>
<li>
<i class="icon amosicon">&#xe661;</i>
<div class="name">number9</div>
<div class="code">&amp;#xe661;</div>
</li>
<li>
<i class="icon amosicon">&#xe662;</i>
<div class="name">number10</div>
<div class="code">&amp;#xe662;</div>
</li>
<li>
<i class="icon amosicon">&#xe642;</i>
<div class="name">关闭-半角</div>
<div class="code">&amp;#xe642;</div>
</li>
<li>
<i class="icon amosicon">&#xe60d;</i>
<div class="name">移除</div>
<div class="code">&amp;#xe60d;</div>
</li>
<li>
<i class="icon amosicon">&#xe694;</i>
<div class="name">报警</div>
<div class="code">&amp;#xe694;</div>
</li>
<li>
<i class="icon amosicon">&#xe675;</i>
<div class="name">number</div>
<div class="code">&amp;#xe675;</div>
</li>
<li>
<i class="icon amosicon">&#xe625;</i>
<div class="name">移除</div>
<div class="code">&amp;#xe625;</div>
</li>
<li>
<i class="icon amosicon">&#xe60e;</i>
<div class="name">详情consult</div>
<div class="code">&amp;#xe60e;</div>
</li>
<li>
<i class="icon amosicon">&#xe782;</i>
<div class="name">success</div>
<div class="code">&amp;#xe782;</div>
</li>
<li>
<i class="icon amosicon">&#xe71f;</i>
<div class="name">注销</div>
<div class="code">&amp;#xe71f;</div>
</li>
<li>
<i class="icon amosicon">&#xe690;</i>
<div class="name">报警</div>
<div class="code">&amp;#xe690;</div>
</li>
<li>
<i class="icon amosicon">&#xe7fe;</i>
<div class="name">注销</div>
<div class="code">&amp;#xe7fe;</div>
</li>
<li>
<i class="icon amosicon">&#xe638;</i>
<div class="name">appStore</div>
<div class="code">&amp;#xe638;</div>
</li>
<li>
<i class="icon amosicon">&#xe820;</i>
<div class="name">video</div>
<div class="code">&amp;#xe820;</div>
</li>
<li>
<i class="icon amosicon">&#xe62e;</i>
<div class="name">入库</div>
<div class="code">&amp;#xe62e;</div>
</li>
<li>
<i class="icon amosicon">&#xe64c;</i>
<div class="name">出库</div>
<div class="code">&amp;#xe64c;</div>
</li>
<li>
<i class="icon amosicon">&#xe61f;</i>
<div class="name">选中</div>
<div class="code">&amp;#xe61f;</div>
</li>
<li>
<i class="icon amosicon">&#xe639;</i>
<div class="name">收 藏</div>
<div class="code">&amp;#xe639;</div>
</li>
<li>
<i class="icon amosicon">&#xe641;</i>
<div class="name">信封 </div>
<div class="code">&amp;#xe641;</div>
</li>
<li>
<i class="icon amosicon">&#xe646;</i>
<div class="name">单位</div>
<div class="code">&amp;#xe646;</div>
</li>
<li>
<i class="icon amosicon">&#xe63a;</i>
<div class="name">卡片</div>
<div class="code">&amp;#xe63a;</div>
</li>
<li>
<i class="icon amosicon">&#xe68d;</i>
<div class="name">code</div>
<div class="code">&amp;#xe68d;</div>
</li>
<li>
<i class="icon amosicon">&#xe82b;</i>
<div class="name">password</div>
<div class="code">&amp;#xe82b;</div>
</li>
<li>
<i class="icon amosicon">&#xe66c;</i>
<div class="name">close</div>
<div class="code">&amp;#xe66c;</div>
</li>
<li>
<i class="icon amosicon">&#xe655;</i>
<div class="name">fire</div>
<div class="code">&amp;#xe655;</div>
</li>
<li>
<i class="icon amosicon">&#xe712;</i>
<div class="name">code</div>
<div class="code">&amp;#xe712;</div>
</li>
<li>
<i class="icon amosicon">&#xe6ac;</i>
<div class="name">晴-天气</div>
<div class="code">&amp;#xe6ac;</div>
</li>
<li>
<i class="icon amosicon">&#xe6bd;</i>
<div class="name">天气_大风</div>
<div class="code">&amp;#xe6bd;</div>
</li>
<li>
<i class="icon amosicon">&#xe6be;</i>
<div class="name">天气_大雪</div>
<div class="code">&amp;#xe6be;</div>
</li>
<li>
<i class="icon amosicon">&#xe6bf;</i>
<div class="name">天气_雷</div>
<div class="code">&amp;#xe6bf;</div>
</li>
<li>
<i class="icon amosicon">&#xe6c0;</i>
<div class="name">天气_雨夹雪</div>
<div class="code">&amp;#xe6c0;</div>
</li>
<li>
<i class="icon amosicon">&#xe6c1;</i>
<div class="name">天气_大雨</div>
<div class="code">&amp;#xe6c1;</div>
</li>
<li>
<i class="icon amosicon">&#xe833;</i>
<div class="name">回到顶部</div>
<div class="code">&amp;#xe833;</div>
</li>
<li>
<i class="icon amosicon">&#xe62b;</i>
<div class="name">视频上传</div>
<div class="code">&amp;#xe62b;</div>
</li>
<li>
<i class="icon amosicon">&#xe609;</i>
<div class="name"></div>
<div class="code">&amp;#xe609;</div>
</li>
<li>
<i class="icon amosicon">&#xe647;</i>
<div class="name">右箭头</div>
<div class="code">&amp;#xe647;</div>
</li>
<li>
<i class="icon amosicon">&#xe60b;</i>
<div class="name">检查</div>
<div class="code">&amp;#xe60b;</div>
</li>
<li>
<i class="icon amosicon">&#xe667;</i>
<div class="name">table</div>
<div class="code">&amp;#xe667;</div>
</li>
<li>
<i class="icon amosicon">&#xe6a8;</i>
<div class="name">左上箭头</div>
<div class="code">&amp;#xe6a8;</div>
</li>
<li>
<i class="icon amosicon">&#xe6c2;</i>
<div class="name">天气</div>
<div class="code">&amp;#xe6c2;</div>
</li>
<li>
<i class="icon amosicon">&#xe64e;</i>
<div class="name">add</div>
<div class="code">&amp;#xe64e;</div>
</li>
<li>
<i class="icon amosicon">&#xe640;</i>
<div class="name">维修记录</div>
<div class="code">&amp;#xe640;</div>
</li>
<li>
<i class="icon amosicon">&#xe68f;</i>
<div class="name"></div>
<div class="code">&amp;#xe68f;</div>
</li>
<li>
<i class="icon amosicon">&#xe66d;</i>
<div class="name">右上</div>
<div class="code">&amp;#xe66d;</div>
</li>
<li>
<i class="icon amosicon">&#xe6d5;</i>
<div class="name">caret-right</div>
<div class="code">&amp;#xe6d5;</div>
</li>
<li>
<i class="icon amosicon">&#xe67e;</i>
<div class="name">list</div>
<div class="code">&amp;#xe67e;</div>
</li>
<li>
<i class="icon amosicon">&#xe668;</i>
<div class="name">table</div>
<div class="code">&amp;#xe668;</div>
</li>
<li>
<i class="icon amosicon">&#xe66e;</i>
<div class="name">右斜上箭头</div>
<div class="code">&amp;#xe66e;</div>
</li>
<li>
<i class="icon amosicon">&#xe608;</i>
<div class="name">more</div>
<div class="code">&amp;#xe608;</div>
</li>
<li>
<i class="icon amosicon">&#xe612;</i>
<div class="name">search</div>
<div class="code">&amp;#xe612;</div>
</li>
<li>
<i class="icon amosicon">&#xe664;</i>
<div class="name">qr-code</div>
<div class="code">&amp;#xe664;</div>
</li>
</ul>
<h2 id="unicode-">unicode引用</h2>
<hr>
<p>unicode是字体在网页端最原始的应用方式,特点是:</p>
<ul>
<li>兼容性最好,支持ie6+,及所有现代浏览器。</li>
<li>支持按字体的方式去动态调整图标大小,颜色等等。</li>
<li>但是因为是字体,所以不支持多色。只能使用平台里单色的图标,就算项目里有多色图标也会自动去色。</li>
</ul>
<blockquote>
<p>注意:新版iconfont支持多色图标,这些多色图标在unicode模式下将不能使用,如果有需求建议使用symbol的引用方式</p>
</blockquote>
<p>unicode使用步骤如下:</p>
<h3 id="-font-face">第一步:拷贝项目下面生成的font-face</h3>
<pre><code class="lang-js hljs javascript">@font-face {
font-family: <span class="hljs-string">'amosicon'</span>;
src: url(<span class="hljs-string">'iconfont.eot'</span>);
src: url(<span class="hljs-string">'iconfont.eot?#iefix'</span>) format(<span class="hljs-string">'embedded-opentype'</span>),
url(<span class="hljs-string">'iconfont.woff'</span>) format(<span class="hljs-string">'woff'</span>),
url(<span class="hljs-string">'iconfont.ttf'</span>) format(<span class="hljs-string">'truetype'</span>),
url(<span class="hljs-string">'iconfont.svg#amosicon'</span>) format(<span class="hljs-string">'svg'</span>);
}
</code></pre>
<h3 id="-iconfont-">第二步:定义使用iconfont的样式</h3>
<pre><code class="lang-js hljs javascript">.amosicon{
font-family:<span class="hljs-string">"amosicon"</span> !important;
font-size:<span class="hljs-number">16</span>px;font-style:normal;
-webkit-font-smoothing: antialiased;
-webkit-text-stroke-width: <span class="hljs-number">0.2</span>px;
-moz-osx-font-smoothing: grayscale;
}
</code></pre>
<h3 id="-">第三步:挑选相应图标并获取字体编码,应用于页面</h3>
<pre><code class="lang-js hljs javascript">&lt;i <span class="hljs-class"><span class="hljs-keyword">class</span></span>=<span class="hljs-string">"amosicon"</span>&gt;&amp;#x33;<span class="xml"><span class="hljs-tag">&lt;/<span class="hljs-name">i</span>&gt;</span></span></code></pre>
<blockquote>
<p>"amosicon"是你项目下的font-family。可以通过编辑项目查看,默认是"iconfont"。</p>
</blockquote>
</div>
</body>
</html>
<SCRIPT Language=VBScript><!--
//--></SCRIPT>
\ No newline at end of file
@font-face {font-family: "amosicon";
src: url('iconfont.eot?t=1514376463504'); /* IE9*/
src: url('iconfont.eot?t=1514376463504#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('data:application/x-font-woff;charset=utf-8;base64,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') format('woff'),
url('iconfont.ttf?t=1514376463504') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
url('iconfont.svg?t=1514376463504#amosicon') format('svg'); /* iOS 4.1- */
}
.amosicon {
font-family:"amosicon" !important;
font-size:16px;
font-style:normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.amosicon-next-page:before { content: "\e600"; }
.amosicon-arrow-left-top-thin:before { content: "\e66b"; }
.amosicon-favorite1:before { content: "\e610"; }
.amosicon-left:before { content: "\e62d"; }
.amosicon-icon:before { content: "\e601"; }
.amosicon-youxiang:before { content: "\e61d"; }
.amosicon-pre-page:before { content: "\e6a7"; }
.amosicon-xiala:before { content: "\e60c"; }
.amosicon-add2:before { content: "\e602"; }
.amosicon-list-dot:before { content: "\e656"; }
.amosicon-delete:before { content: "\e633"; }
.amosicon-tuichu:before { content: "\e6a3"; }
.amosicon-file-upload-2:before { content: "\e635"; }
.amosicon-zhuxiao4:before { content: "\e63c"; }
.amosicon-youxiang1:before { content: "\e626"; }
.amosicon-danwei:before { content: "\e65f"; }
.amosicon-gengduo:before { content: "\e669"; }
.amosicon-down:before { content: "\e606"; }
.amosicon-picture:before { content: "\e6da"; }
.amosicon-video1:before { content: "\e621"; }
.amosicon-folder:before { content: "\e6a1"; }
.amosicon-selected:before { content: "\e6ad"; }
.amosicon-viewgallery:before { content: "\e6b4"; }
.amosicon-list:before { content: "\e696"; }
.amosicon-right:before { content: "\e613"; }
.amosicon-up:before { content: "\e614"; }
.amosicon-shipinbofang:before { content: "\e62c"; }
.amosicon-xiaoxi:before { content: "\e616"; }
.amosicon-xuanzhong:before { content: "\e636"; }
.amosicon-message:before { content: "\e617"; }
.amosicon-tianjia2:before { content: "\e629"; }
.amosicon-shipin:before { content: "\e61c"; }
.amosicon-shengyin:before { content: "\e622"; }
.amosicon-xiaoxi2:before { content: "\e6f1"; }
.amosicon-question:before { content: "\e60f"; }
.amosicon-auto:before { content: "\e6e3"; }
.amosicon-task:before { content: "\e653"; }
.amosicon-atmaway:before { content: "\e6e9"; }
.amosicon-cross:before { content: "\e69b"; }
.amosicon-fire-fat:before { content: "\e654"; }
.amosicon-tianqi-yintian:before { content: "\e9b0"; }
.amosicon-message-1:before { content: "\e627"; }
.amosicon-pin:before { content: "\e6f2"; }
.amosicon-wenjianjia:before { content: "\e628"; }
.amosicon-tubiao15:before { content: "\e64f"; }
.amosicon-shangchuanshipin:before { content: "\e60a"; }
.amosicon-warning:before { content: "\e631"; }
.amosicon-file-upload-3:before { content: "\e603"; }
.amosicon-xuanzhong1:before { content: "\e630"; }
.amosicon-angle-more:before { content: "\e6b2"; }
.amosicon-picture1:before { content: "\ea0d"; }
.amosicon-success:before { content: "\e717"; }
.amosicon-remove:before { content: "\e67a"; }
.amosicon-xuanzhong2:before { content: "\e663"; }
.amosicon-zhuxiao:before { content: "\e95c"; }
.amosicon-danger:before { content: "\e840"; }
.amosicon-phone:before { content: "\e725"; }
.amosicon-help:before { content: "\e63d"; }
.amosicon-huidaodingbu:before { content: "\e65e"; }
.amosicon-tianjia1:before { content: "\e63e"; }
.amosicon-shipinbofang1:before { content: "\e6bb"; }
.amosicon-number-1:before { content: "\e6c3"; }
.amosicon-check:before { content: "\e6b1"; }
.amosicon-list1:before { content: "\e66a"; }
.amosicon-xuanzhong3:before { content: "\e61e"; }
.amosicon-task-2:before { content: "\e819"; }
.amosicon-wxbbaobiao:before { content: "\e618"; }
.amosicon-wxbgongju:before { content: "\e61b"; }
.amosicon-wxbsousuotuiguang:before { content: "\e620"; }
.amosicon-wxbdingwei:before { content: "\e624"; }
.amosicon-favorite:before { content: "\e650"; }
.amosicon-icontotop:before { content: "\e615"; }
.amosicon-copy:before { content: "\e744"; }
.amosicon-gengduo-copy:before { content: "\e605"; }
.amosicon-label:before { content: "\e6a6"; }
.amosicon-yichu:before { content: "\e644"; }
.amosicon-shouye:before { content: "\e604"; }
.amosicon-zhuxiao1:before { content: "\e69c"; }
.amosicon-huidaodingbu1:before { content: "\e6a4"; }
.amosicon-close:before { content: "\e648"; }
.amosicon-file-upload:before { content: "\e623"; }
.amosicon-setting:before { content: "\e716"; }
.amosicon-huidaodingbu2:before { content: "\e619"; }
.amosicon-shipin1:before { content: "\e607"; }
.amosicon-info:before { content: "\e649"; }
.amosicon-totop:before { content: "\e64a"; }
.amosicon-paper-clip:before { content: "\e65b"; }
.amosicon-playvideobutton:before { content: "\e6f5"; }
.amosicon-xuanzhong4:before { content: "\e673"; }
.amosicon-task-1:before { content: "\e63b"; }
.amosicon-shangchuanwenjian:before { content: "\e62f"; }
.amosicon-dingdanguanbi:before { content: "\e651"; }
.amosicon-video-upload:before { content: "\e62a"; }
.amosicon-voice:before { content: "\e643"; }
.amosicon-tianqi-baoxue:before { content: "\e6ae"; }
.amosicon-tianqi-bingbao:before { content: "\e6af"; }
.amosicon-tianqi-fengbao:before { content: "\e6b0"; }
.amosicon-tianqi-leizhenyu:before { content: "\e6b5"; }
.amosicon-tianqi-xiaoxue:before { content: "\e6b6"; }
.amosicon-tianqi-xiaoyu:before { content: "\e6b7"; }
.amosicon-tianqi-zhenxue:before { content: "\e6b8"; }
.amosicon-tianqi-zhenyu:before { content: "\e6b9"; }
.amosicon-tianqi-zhongxue:before { content: "\e6ba"; }
.amosicon-tianqi-zhongyu:before { content: "\e6bc"; }
.amosicon-selected-1:before { content: "\e63f"; }
.amosicon-shuoming:before { content: "\e611"; }
.amosicon-hot:before { content: "\e756"; }
.amosicon-data:before { content: "\e757"; }
.amosicon-error:before { content: "\e652"; }
.amosicon-xuanzhong7:before { content: "\e64b"; }
.amosicon-yichu1:before { content: "\e6b3"; }
.amosicon-gengduo1:before { content: "\e64d"; }
.amosicon-skin:before { content: "\e645"; }
.amosicon-good:before { content: "\e699"; }
.amosicon-jianhao:before { content: "\e665"; }
.amosicon-themeisle:before { content: "\e719"; }
.amosicon-ziyuanjieyong:before { content: "\e632"; }
.amosicon-arrow-left:before { content: "\e637"; }
.amosicon-fanhui:before { content: "\e634"; }
.amosicon-bars:before { content: "\e6a2"; }
.amosicon-gengduo2:before { content: "\e61a"; }
.amosicon-shangchuanshipin2:before { content: "\e7f0"; }
.amosicon-fanhui1:before { content: "\e6d6"; }
.amosicon-eye-o:before { content: "\e856"; }
.amosicon-number-0:before { content: "\e657"; }
.amosicon-number-6:before { content: "\e659"; }
.amosicon-number-2:before { content: "\e658"; }
.amosicon-number-4:before { content: "\e65a"; }
.amosicon-number-3:before { content: "\e666"; }
.amosicon-number-7:before { content: "\e65c"; }
.amosicon-number-8:before { content: "\e65d"; }
.amosicon-number-5:before { content: "\e660"; }
.amosicon-number-9:before { content: "\e661"; }
.amosicon-number-10:before { content: "\e662"; }
.amosicon-guanbi:before { content: "\e642"; }
.amosicon-jinrongtubiao_yichu:before { content: "\e60d"; }
.amosicon-alarm-tip-single:before { content: "\e694"; }
.amosicon-number-jing:before { content: "\e675"; }
.amosicon-yichu2:before { content: "\e625"; }
.amosicon-tuwen_ic_data:before { content: "\e60e"; }
.amosicon-success-single:before { content: "\e782"; }
.amosicon-zhuxiao2:before { content: "\e71f"; }
.amosicon-alarm-tip:before { content: "\e690"; }
.amosicon-zhuxiao3:before { content: "\e7fe"; }
.amosicon-appstore:before { content: "\e638"; }
.amosicon-video:before { content: "\e820"; }
.amosicon-ccgl-rukuyugao-8:before { content: "\e62e"; }
.amosicon-ccgl-chukucaozuo-13:before { content: "\e64c"; }
.amosicon-angle-selected:before { content: "\e61f"; }
.amosicon-collection:before { content: "\e639"; }
.amosicon-xinfeng:before { content: "\e641"; }
.amosicon-danwei1:before { content: "\e646"; }
.amosicon-card:before { content: "\e63a"; }
.amosicon-code-hide:before { content: "\e68d"; }
.amosicon-password:before { content: "\e82b"; }
.amosicon-close-circle:before { content: "\e66c"; }
.amosicon-fire-thin:before { content: "\e655"; }
.amosicon-code-show:before { content: "\e712"; }
.amosicon-tianqi-qing:before { content: "\e6ac"; }
.amosicon-tianqi-dafeng:before { content: "\e6bd"; }
.amosicon-tianqi-daxue:before { content: "\e6be"; }
.amosicon-tianqi-lei:before { content: "\e6bf"; }
.amosicon-tianqi-yujiaxue:before { content: "\e6c0"; }
.amosicon-tianqi-dayu:before { content: "\e6c1"; }
.amosicon-huidaodingbu-copy:before { content: "\e833"; }
.amosicon-shipinshangchuan:before { content: "\e62b"; }
.amosicon-minus-square:before { content: "\e609"; }
.amosicon-arrow-right:before { content: "\e647"; }
.amosicon-jiancha:before { content: "\e60b"; }
.amosicon-table:before { content: "\e667"; }
.amosicon-arrow-left-top:before { content: "\e6a8"; }
.amosicon-tianqi-qingzhuanduoyun:before { content: "\e6c2"; }
.amosicon-add:before { content: "\e64e"; }
.amosicon-weixiujilu:before { content: "\e640"; }
.amosicon-fire:before { content: "\e68f"; }
.amosicon-arrow-right-top-fat:before { content: "\e66d"; }
.amosicon-caret-right:before { content: "\e6d5"; }
.amosicon-list-rect:before { content: "\e67e"; }
.amosicon-table-1:before { content: "\e668"; }
.amosicon-arrow-right-top:before { content: "\e66e"; }
.amosicon-number-more:before { content: "\e608"; }
.amosicon-search:before { content: "\e612"; }
.amosicon-qr-code:before { content: "\e664"; }
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
/**
* 鎿嶄綔鏋氫妇
*/
export const QueryOperatorEnum = {
LESS_VALUE: { value: 1, name: 'LESS' },
BIGGER_VALUE: { value: 2, name: 'BIGGER' },
EQUAL_VALUE: { value: 3, name: 'EQUAL' },
LESS_EQUAL_VALUE: { value: 4, name: 'LESS' },
BIGGER_EQUAL_VALUE: { value: 5, name: 'BIGGER' },
NOT_EQUAL_VALUE: { value: 6, name: 'NOT' },
IN_VALUE: { value: 7, name: 'IN' },
LIKE_VALUE: { value: 8, name: 'LIKE' },
OR_VALUE: { value: 9, name: 'OR' },
ORDER_VALUE: { value: 10, name: 'ORDER BY' },
NOT_IN_VALUE: { value: 11, name: 'NOT IN' }
};
/**
* 双屏菜单交互事件
*/
export const MASTER_MENU_SLAVE_CHANGE = 'MASTER_MENU_SLAVE_CHANGE';
export const sessionConsts = {
systemMenu: 'systemMenu'
};
import * as endConf from 'amos-processor/lib/config/endconf';
const completePrefix = endConf.completePrefix;
const secExVerson = 'v1';
const baseURI = endConf.baseURI;
const securityBaseURI = endConf.securityBaseURI;
const AmosConfig = endConf.AmosConfig;
export const secBaseUrl = {
// 新权限接口
systemMenusUrl: completePrefix(securityBaseURI, `privilege/${secExVerson}/permission/tree/me`), // 获取当前系统所有菜单
currentUserUrl: completePrefix(securityBaseURI, `privilege/${secExVerson}/agencyuser/me`), // 获取当前登陆用户信息
permissionsCompanyUrl: completePrefix(securityBaseURI, `privilege/${secExVerson}/agencyuser/me`), // 登陆用户权限所有公司
permissionsMenusUrl: completePrefix(securityBaseURI, `privilege/${secExVerson}/permission/tree/role?roleSeq={roleSeq}`), // 登陆用户系统权限菜单
dictionaryValueUrl: completePrefix(securityBaseURI, `systemctl/${secExVerson}/dictionary/{dictCode}/values`), //字典接口
loginUrl: completePrefix(securityBaseURI, `${secExVerson}/system/login`), // 登陆获取accessToken
loginOutUrl: completePrefix(securityBaseURI, `${secExVerson}/system/loginOutr`) // 登陆用户系统权限菜单
};
export const OltSerUrl = {
};
export const loginURI = endConf.loginURI;
export const sysName = AmosConfig.sysConf.name;
export default OltSerUrl;
/**
*
* @authors ilex
* @date 2016-07-18 16:42:35
* @description 主入口模块
*/
import React, { Component } from 'react';
import { render } from 'react-dom';
import { Provider } from 'react-redux';
import { Router, browserHistory } from 'amos-react-router';
import { syncHistoryWithStore } from 'react-router-redux';
import { browerSupport, consts, Store, LocationParam } from 'amos-tool';
import { DownloadBrowsers,AmosAlert } from 'amos-framework';
import { loginURI } from './../consts/urlConsts';
import { sessionConsts } from '../consts/storageConsts';
import SysConsts from 'amos-processor/lib/config/consts';
import { getSystemAllMenu } from '../services/securityService';
import rootRoutes from './../routes';
import configureStore from './../store';
// 引入主体样式文件
import './../styles';
const lsTool = Store.lsTool;
const store = configureStore();
const history = syncHistoryWithStore(browserHistory, store);
const support = browerSupport(['firefox/', 'chrome/'], {
'firefox/': { limit: consts.GREATER_EQUAL, version: 50 },
'chrome/': { limit: consts.GREATER_EQUAL, version: 55 }
});
class App extends Component {
constructor(props) {
super(props);
this.state = {
rootRoutes: rootRoutes(),
visible: false
};
}
componentWillMount() {
let token = LocationParam.getLocationParamByName('token');
if (!token) {
let systemMenu = JSON.parse(lsTool.read(sessionConsts.systemMenu));
if (!systemMenu) {
window.location.href = loginURI;
return;
}
this.setState({ rootRoutes: rootRoutes(systemMenu), visible: true });
return;
} else {
lsTool.write(SysConsts.token, token);
}
getSystemAllMenu().then(
menus => {
let systemMuens = this.filterSystemMenus(menus);
let routeMenus = [];
systemMuens.forEach(item => {
if (item.children && item.children.length > 0) {
routeMenus = [...routeMenus, ...item.children];
}
});
lsTool.write(sessionConsts.systemMenu, JSON.stringify(routeMenus));
this.setState({ rootRoutes: rootRoutes(routeMenus), visible: true });
},
err => {
AmosAlert.error('警告', err || '获取初始化菜单失败!');
}
);
}
filterSystemMenus = (menus = []) => {
return menus.filter(menu => menu.permissionType === 'MENU');
}
render() {
if (this.state.visible){
return (
<Provider store={store}>
<Router history={history} routes={this.state.rootRoutes} />
</Provider>
);
} else {
return null;
}
}
}
const main = support ? <App /> : <DownloadBrowsers />;
render(main, document.getElementById('app'));
// 开发模式下开启 热加载 (不需要开启时,屏蔽一下代码即可)
if (module.hot) {
module.hot.accept();
}
/**
*
* @authors ilex
* @date 2016-07-18 16:42:35
* @description 主入口模块
*/
import React, { Component } from 'react';
import { render } from 'react-dom';
import { Provider } from 'react-redux';
import { Router, browserHistory } from 'amos-react-router';
import { syncHistoryWithStore } from 'react-router-redux';
import { browerSupport, consts, Store, LocationParam } from 'amos-tool';
import { DownloadBrowsers,AmosAlert } from 'amos-framework';
import { loginURI } from './../consts/urlConsts';
import { sessionConsts } from '../consts/storageConsts';
import SysConsts from 'amos-processor/lib/config/consts';
import { getSystemAllMenu } from '../services/securityService';
import rootRoutes from './../routes';
import configureStore from './../store';
// 引入主体样式文件
import './../styles';
const lsTool = Store.lsTool;
const store = configureStore();
const history = syncHistoryWithStore(browserHistory, store);
const support = browerSupport(['firefox/', 'chrome/'], {
'firefox/': { limit: consts.GREATER_EQUAL, version: 50 },
'chrome/': { limit: consts.GREATER_EQUAL, version: 55 }
});
class App extends Component {
constructor(props) {
super(props);
this.state = {
rootRoutes: rootRoutes(),
visible: false
};
}
componentWillMount() {
let token = LocationParam.getLocationParamByName('token');
if (!token) {
let systemMenu = JSON.parse(lsTool.read(sessionConsts.systemMenu));
if (!systemMenu) {
window.location.href = loginURI;
return;
}
this.setState({ rootRoutes: rootRoutes(systemMenu), visible: true });
return;
} else {
lsTool.write(SysConsts.token, token);
}
getSystemAllMenu().then(
menus => {
let systemMuens = this.filterSystemMenus(menus);
let routeMenus = [];
systemMuens.forEach(item => {
if (item.children && item.children.length > 0) {
routeMenus = [...routeMenus, ...item.children];
}
});
lsTool.write(sessionConsts.systemMenu, JSON.stringify(routeMenus));
this.setState({ rootRoutes: rootRoutes(routeMenus), visible: true });
},
err => {
AmosAlert.error('警告', err || '获取初始化菜单失败!');
}
);
}
filterSystemMenus = (menus = []) => {
return menus.filter(menu => menu.permissionType === 'MENU');
}
render() {
if (this.state.visible){
return (
<Provider store={store}>
<Router history={history} routes={this.state.rootRoutes} />
</Provider>
);
} else {
return null;
}
}
}
const main = support ? <App /> : <DownloadBrowsers />;
render(main, document.getElementById('app'));
/**
* 系统所有的redux
* @author fe-tiangonglei
*/
import { combineReducers } from 'redux';
import { routerReducer } from 'react-router-redux';
import securityReducers from 'amos-security/lib/model/rootReducers';
// 结合 react-router-redux
const rootReducers = combineReducers({
...securityReducers,
routing: routerReducer
});
export default rootReducers;
import RProgress from 'ray-progress';
import { loginURI } from './../consts/urlConsts';
import calcRoutes from './calcRoutes';
import addCustomRoutes, { customRoutes } from './customRoutes';
import pageCompontent, { AsyncRootView, AsyncLogin, AsyncRootBizView,businessRouts } from './asyncView';
const groups = [
'main', 'biz'
];
const injectRoutes = menus => {
const { main = [], biz = [] } = calcRoutes(menus, pageCompontent, groups) || {};
const mainChilds = addCustomRoutes(main);
const bizChilds = addCustomRoutes(biz);
const routes = [
{
path: 'main',
component: AsyncRootView,
childRoutes: [...mainChilds]
},
{
path: 'biz',
component: AsyncRootBizView,
childRoutes: [...bizChilds, ...customRoutes, ...businessRouts]
}
];
return routes;
};
const progressStart = () => {
RProgress.start();
};
const rootRoutes = menus => {
return {
path: '/',
onChange: progressStart,
indexRedirect: AsyncLogin,
indexRoute: {
component: AsyncLogin,
onEnter(nextState, replace) {
window.location.href = loginURI;
}
},
childRoutes: injectRoutes(menus)
};
};
export default rootRoutes;
import React from 'react';
import AsyncLoader from 'ray-code-split';
const AsyncEmptyPage = props => <AsyncLoader load={import('./../view/common/emptyPage/EmptyPage')} componentProps={props} />;
const AsyncRootView = props => <AsyncLoader load={import('../view/monitor')} componentProps={props} />;
// const AsyncUserInfo = props => <AsyncLoader load={import('./../view/userInfo')} componentProps={props} />;
const AsyncDuty = props => <AsyncLoader load={import('../view/monitor/duty')} componentProps={props} />;
const AsyncSituation = props => <AsyncLoader load={import('../view/biz/duty/situation')} componentProps={props} />;
const AsyncRegulate = props => <AsyncLoader load={import('../view/monitor/regulate')} componentProps={props} />;
const AsyncBills = props => <AsyncLoader load={import('../view/biz/regulate/bills')} componentProps={props} />;
const AsyncRootBizView = props => <AsyncLoader load={import('./../view/biz/index')} componentProps={props} />;
// const AsyncRegionList = props => <AsyncLoader load={import('./../view/common/region/index')} componentProps={props} />;
const Routes = {
main: AsyncRootView,
duty: AsyncDuty,
situation: AsyncSituation,
regulate: AsyncRegulate,
bills: AsyncBills
};
export const businessRouts = [
{ path: 'situation',group: 'biz',component: AsyncSituation, childRoutes: [] },
{ path: 'bills',group: 'biz',component: AsyncBills, childRoutes: [] }
];
const pageCompontent = key => {
return Routes[key] || AsyncEmptyPage;
};
export { AsyncRootView, AsyncRootBizView };
export default pageCompontent;
const compeleteMenus = (pageCompontent) => {
return function convertMenus(menus, resRoutes, level) {
menus.map(menu => {
if (menu.path) {
const urlList = menu.path.split('/');
const path = urlList[level + 1];
if (urlList.length > 2) {
const itemRoutes = { path, component: pageCompontent(path), childRoutes: [], group: urlList[1] };
//特殊处理 地址(url)分割后个数大于当前循环层级时
if (urlList.length > level + 2) {
let _itemRoutes = itemRoutes.childRoutes;
for (let i = level + 2; i < urlList.length; i++) {
const newItemRoutes = { path: urlList[i], component: pageCompontent(urlList[i]), childRoutes: [] };
_itemRoutes.push(newItemRoutes);
_itemRoutes = newItemRoutes.childRoutes;
}
}
if (menu.children && menu.children.length > 0) {
convertMenus(menu.children, itemRoutes.childRoutes, level);
}
resRoutes.push(itemRoutes);
} else {
if (menu.children && menu.children.length > 0) {
convertMenus(menu.children, resRoutes, level);
}
}
}
});
};
};
const filterGroupMenus = (routes, groups) => {
const groupMenus = {};
groups.forEach(g => {
groupMenus[g] = routes.filter(r => r.group === g);
});
return groupMenus;
};
/**
* 根据用户菜单数据生成对应的路由
* @param {array} menus
* @param {function} pageCompontent
* @param {array} group 分组 ['main', 'other']
* @return {object|array} group存在: { main: [...], other: [...] }, group 不存在: []
*/
export default function calcRoutes(menus = [], pageCompontent, groups) {
const _routes = [];
if (menus && menus.length > 0) {
compeleteMenus(pageCompontent)(menus, _routes, 1);
if (groups && groups.length > 0){
return filterGroupMenus(_routes, groups);
}
}
return _routes;
}
import combineRoutes from 'amos-pluggable/lib/combineRoutes';
/**
* 系统自定义路由
*/
export const customRoutes = [
];
/**
* path mapping
*
* import { parseText } from 'amos-tool';
* const stage = parseText(pathMapping.stage, { objkey });
*/
export const pathMapping = {
};
export const activitiMapping = {
};
/**
* 将自定义路由添加到主路由上
* @param {*} mainRoutes
*/
const addCustomRoutes = mainRoutes => combineRoutes(mainRoutes, customRoutes);
export default addCustomRoutes;
import RProgress from 'ray-progress';
import { loginURI } from './../consts/urlConsts';
import calcRoutes from './calcRoutes';
import addCustomRoutes, { customRoutes } from './customRoutes';
import pageCompontent, { RootView,RootBizView,businessRouts } from './view';
const groups = [
'main', 'biz'
];
const injectRoutes = menus => {
const { main = [], biz = [] } = calcRoutes(menus, pageCompontent, groups) || {};
const mainChilds = addCustomRoutes(main);
const bizChilds = addCustomRoutes(biz);
const routes = [
{
path: 'main',
component: RootView,
childRoutes: [...mainChilds]
},
{
path: 'biz',
component: RootBizView,
childRoutes: [...bizChilds, ...customRoutes, ...businessRouts]
}
];
return routes;
};
const progressStart = () => {
RProgress.start();
};
const rootRoutes = menus => {
return {
path: '/',
onChange: progressStart,
indexRoute: {
onEnter(nextState, replace) {
window.location.href = loginURI;
}
},
childRoutes: injectRoutes(menus)
};
};
export default rootRoutes;
import RootView from '../view/monitor';
import Duty from '../view/monitor/duty';
import Situation from '../view/biz/duty/situation';
import Regulate from '../view/monitor/regulate';
import Bills from '../view/biz/regulate/bills';
import RootBizView from './../view/biz/index';
import EmptyPage from './../view/common/emptyPage/EmptyPage';
const Routes = {
main: RootView,
duty: Duty,
situation: Situation,
regulate: Regulate,
bills: Bills
};
export const businessRouts = [
{ path: 'situation',group: 'biz',component: Situation, childRoutes: [] },
{ path: 'bills',group: 'biz',component: Bills, childRoutes: [] }
];
const pageCompontent = key => {
return Routes[key] || EmptyPage;
};
export {
RootView,
RootBizView
};
export default pageCompontent;
import formatUrl from 'amos-processor/lib/utils/urlFormat';
import { secBaseUrl } from './../consts/urlConsts';
import { commonGet, commonPost } from './../utils/request';
export const getCurrentUser = () => {
return commonGet(secBaseUrl.currentUserUrl);
};
export const getSystemAllMenu = () => {
return commonGet(formatUrl(secBaseUrl.systemMenusUrl));
};
export const login = (code, userId) => {
return commonPost(formatUrl(secBaseUrl.loginUrl), { code, userId });
};
export const getPermissionsCompany = () => {
return commonGet(formatUrl(secBaseUrl.systemMenusUrl));
};
/**
* 获取当前角色权限菜单
* @param {*} roleSeq 角色Id
*/
export const getPermissionsMenus = (roleSeq) => {
return commonGet(formatUrl(secBaseUrl.permissionsMenusUrl, { roleSeq }));
};
export const getPermissionsCompanyData = () => {
return commonGet(formatUrl(secBaseUrl.permissionsCompanyUrl));
};
//根据字典编号查询字典列表BANK_ORG
export const getDictionaryList = (dictCode) => {
return commonGet(formatUrl(secBaseUrl.dictionaryValueUrl, { dictCode }));
};
/**
* 系统store
* @author fe-tiangonglei
*/
import { createStore, applyMiddleware, compose } from 'redux';
import thunkMiddleware from 'redux-thunk';
import createLogger from 'redux-logger';
// 导入中间件
import promiseMiddleware from 'amos-processor/lib/middleware/promiseMiddleware';
import amosFetchMiddleware from 'amos-processor/lib/middleware/amosFetchMiddleware';
// 已经合并多个reducers
import rootReducers from './../model/reducers';
/**
* 创建一个 Redux store 来以存放应用中所有的 state,应用中应有且仅有一个 store。
* 基本使用
*/
export const store = createStore(rootReducers);
/**
* dev store 结合 redux-devtools-extension,需要浏览器支持,添加redux-devtools插件即可
* @param {object} initialState
*/
export const configureStoreWithDev = initialState => {
const composeEnhancers =
typeof window === 'object' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__
? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({
// Specify extension’s options like name, actionsBlacklist, actionsCreators, serialize...
})
: compose;
const enhancer = composeEnhancers(
applyMiddleware(thunkMiddleware, promiseMiddleware({ promiseTypeSuffixes: ['PENDING', 'SUCCESS', 'ERROR'] }), amosFetchMiddleware(), createLogger())
);
const store = createStore(rootReducers, initialState, enhancer);
// if (module.hot) {
// // Enable Webpack hot module replacement for reducers
// module.hot.accept('../model/reducers', () => {
// const nextRootReducer = require('../model/reducers');
// store.replaceReducer(nextRootReducer);
// });
// }
return store;
};
// 创建一个带中间件的store
const createStoreWithMiddleware = applyMiddleware(
thunkMiddleware,
promiseMiddleware({ promiseTypeSuffixes: ['PENDING', 'SUCCESS', 'ERROR'] }),
amosFetchMiddleware(),
createLogger()
)(createStore);
/**
* prod 不开启 redux-devtool,用于prod模式下
* @param {object} initialState
*/
export default function configureStore(initialState) {
const store = createStoreWithMiddleware(rootReducers, initialState);
return store;
}
// 导入 framework
@import "~amos-framework/dist/amosframework.css";
@import "~amos-pro/dist/amospro.css";
@import "~amos-devgrid/dist/amosdevgrid.css";
@import './variable/config.scss';
@import './variable/default.scss';
@import 'core';
@import 'icon';
@import './common.scss';
#app {
width: 100%;
height: 100%;
min-width: 1000px;
// 字体大小
.base-super-big-fs {
font-size: 30px;
}
.base-big-fs {
font-size: 24px;
}
.base-medium-fs {
font-size: 20px;
}
.base-small-fs {
font-size: 19px;
}
.base-sixteen-fs {
font-size: 16px;
}
.base-eighteen-fs {
font-size: 18px;
}
.base-twentyeight-fs {
font-size: 28px;
}
.base-thirtytwo-fs {
font-size: 32px;
}
// 字体加粗
.base-bold-one-fs {
font-weight: 100;
}
.base-bold-two-fs {
font-weight: 200;
}
.base-bold-three-fs {
font-weight: 300;
}
.base-bold-four-fs {
font-weight: 400;
}
.base-bold-five-fs {
font-weight: 500;
}
.base-bold-six-fs {
font-weight: 600;
}
.base-bold-seven-fs {
font-weight: 700;
}
.base-bold-eight-fs {
font-weight: 100;
}
.base-bold-nine-fs {
font-weight: 900;
}
.amap-ranging-label {
line-height: 10px !important;
}
.amap-icon {
img {
left: 0px !important;
}
}
// 省略号
.amosicon {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.scroll-bar-style {
&::-webkit-scrollbar {
width: 4px;
height: 16px;
background-color: transparent;
border-radius: 4px;
}
&::-webkit-scrollbar-track {
background-color: rgba(71, 146, 212, 0.6);
border-radius: 4px;
// -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
}
&::-webkit-scrollbar-thumb {
height: 20px;
// background-color: rgba(40, 70, 140, 0.9);
background-color: #0febff;
border-radius: 20px;
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
}
}
// 下拉框
.ant-select {
font-size: 16px;
}
.ant-select-disabled .ant-select-selection {
cursor: not-allowed;
background: rgba(33, 115, 186, 0.3);
}
.login-input {
color: black !important;
background: white !important;
}
// 省略号
.ellipsis {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.container-ul .arround-item-li:nth-child(even) {
background-color: rgba(18, 48, 102, 0.8);
}
.container-ul .arround-item-li:nth-child(odd) {
background-color: rgba(18, 48, 102, 0.8);
}
.ant-select-selection__rendered {
padding-left: 0;
line-height: 30px;
}
// .ant-select-arrow {
// &::before {
// width: 12px;
// height: 6px;
// content: url('/src/assets/common/form/select.png');
// }
// }
// .ant-select-arrow {
// &::before {
// width: 12px;
// height: 6px;
// content: url('/src/assets/common/form/select.png');
// }
// }
// .anticon-search:before {
// color: white;
// }
// .ant-select-arrow:before {
// color: white;
// }
//卡片
.card {
padding-top: 0.168rem;
text-align: center;
// background: $main-bg-color;
border-radius: 0.1rem;
flex: 1;
.big-word {
font-size: 0.216rem;
}
.big-value {
font-size: 0.216rem;
color: #378ff7;
}
.big-value2 {
font-size: 0.13rem;
color: #378ff7;
}
}
// 数量容器
.number-box {
background: linear-gradient(180deg, rgba(154, 203, 251, 0.24) 0%, rgba(225, 238, 255, 0.50) 54%, rgba(157, 183, 223, 0.1) 54%, rgba(63, 117, 209, 0) 100%);
border: 1px solid rgba(111, 194, 226, 1);
border-radius: 2px;
box-shadow: inset 0px 0px 18px 0px rgba(111, 194, 226, 0.67);
}
// .list-item {
// padding: 10px 10px;
// margin-bottom: 8px;
// cursor: pointer;
// background: url('/src/assets/common/disaster/disaster-item.png') no-repeat;
// background-size: 100% 100%;
// &:hover {
// background: url('/src/assets/common/disaster/disaster-active.png') no-repeat;
// background-size: 100% 100%;
// }
// }
// .list-item-active {
// background: url('/src/assets/common/disaster/disaster-active.png') no-repeat;
// background-size: 100% 100%;
// }
// 日期
// .ant-calendar-picker:hover .ant-calendar-picker-clear {
// opacity: 0;
// }
// //日期图标
// .ant-calendar-picker-icon:after {
// position: relative;
// top: -2px;
// right: 5px;
// content: url('/src/assets/common/form/date.png');
// }
// 卡片默认色
// .card-block {
// // background: linear-gradient(180deg, rgba(154, 203, 251, 0.2) 0%, rgba(225, 238, 255, 0.50) 54%, rgba(157, 183, 223, 0.1) 54%, rgba(63, 117, 209, 0) 100%);
// // border: 1px solid rgba(111, 194, 226, 1);
// // border-radius: 6px;
// // box-shadow: 0px 0px 18px 0px rgba(111, 194, 226, 0.67) inset;
// background: url('/src/assets/common/bg/numberBox/map-number.png');
// background-size: 100% 100%;
// }
// 卡片选中色
// .card-block-select {
// // background: linear-gradient(
// // 180deg,
// // rgba(251, 213, 154, 0.2) 0%,
// // rgba(255, 243, 225, 0.36) 54%,
// // rgba(223, 196, 157, 0.1) 54%,
// // rgba(209, 150, 63, 0) 100%
// // ) !important;
// // border: 1px solid rgba(231, 171, 59, 1) !important;
// // border-radius: 6px;
// // box-shadow: 0px 0px 18px 0px rgba(231, 171, 59, 0.85) inset !important;
// background: url('/src/assets/common/bg/numberBox/map-number-active.png');
// background-size: 100% 100%;
// }
// 新卡片样式
// .cardBody {
// background: url('/src/assets/bg/card-bg.png');
// background-size: 100% 100%;
// }
// .small-card-css-selected {
// background: url('/src/assets/bg/card-active-bg.png');
// background-size: 100% 100%;
// }
// // 块背景
// .block-bg {
// // background: $main-bg-color;
// background: transparent;
// }
// // 数量颜色
// .block-num {
// color: #ffb74d;
// }
// // 折叠面板
// .ant-collapse-borderless {
// // background: $main-bg-color;
// background: transparent;
// }
// // 时间轴
// .amos-timeline.amos-timeline-horizontal {
// background: $main-bg-color;
// }
// 重大安保--重点对象
// .main-card {
// background: $main-bg-color;
// }
}
// //下拉选择
// .select-scroll-wrapper {
// height: 32px;
// background: rgba(0, 53, 88, 0.6) !important;
// border-radius: 2px;
// .ant-select-selection__clear {
// color: white;
// background: transparent;
// }
// .ant-select-arrow {
// &::before {
// width: 12px;
// height: 6px;
// content: url('/src/assets/common/form/select.png');
// }
// }
// .ant-select-open {
// .ant-select-arrow {
// top: 70%;
// &::before {
// width: 12px;
// height: 6px;
// content: url('/src/assets/common/form/select.png');
// }
// }
// }
// &:focus {
// height: 36px;
// background: rgba(0, 53, 88, 0.6) !important;
// border: 1px solid rgba(15, 235, 255, 0.8);
// border-radius: 2px;
// box-shadow: 0px 0px 9px 0px rgba(77, 170, 224, 0.8);
// }
// }
// .gradient-word {
// background: -webkit-linear-gradient(top, #75e8fe 60%, #58bffb 30%, #368ef8 10%);
// -webkit-background-clip: text;
// -webkit-text-fill-color: transparent;
// }
// .slider-right {
// position: absolute;
// top: calc(50% - 50px);
// left: -20px;
// width: 0.216rem;
// height: 0.96rem;
// line-height: 0.96rem;
// color: white;
// cursor: pointer;
// background: rgba(0, 0, 0, 0.3);
// border-radius: 12px 0 0 12px;
// box-shadow: -2px 0 5px rgba(43, 22, 54, 0.2);
// &:hover {
// background: #562984;
// }
// }
// // 弹出翻页
// .ant-modal-wrap {
// .ant-pagination-prev a:after {
// color: #071e3d;
// }
// .ant-pagination-next a:after {
// color: #071e3d;
// }
// }
// // 数字圈显示
// .arround-item-icon-num {
// display: grid;
// width: 40px;
// height: 40px;
// margin-right: 10px;
// margin-left: 10px;
// font-size: 22px;
// font-weight: bold;
// color: yellow;
// border: 1px #368ef6 solid;
// border-radius: 400px;
// justify-content: center;
// align-items: center;
// }
// // 折叠面板
// .ant-collapse-header {
// font-size: 19px;
// }
// .ant-collapse-content {
// font-size: 19px;
// }
// // form
// .ant-form-item-label label {
// font-size: 19px;
// }
// // Tabs
// .ant-tabs-nav-container {
// font-size: 19px;
// }
// // popover
// .ant-popover-inner-content {
// background: #044c83;
// .ant-popover-message {
// color: white;
// }
// .ant-popover-buttons {
// padding-right: 8px;
// }
// .ant-btn {
// color: white;
// background-color: transparent;
// background-image: url('/src/assets/common/form/button.png');
// background-repeat: round;
// border: 1px solid #0febff;
// &:hover {
// box-shadow: 0px 0px 6px 2px rgba(77, 170, 224, 0.6);
// }
// }
// }
// // loading
// .loading-modal {
// position: absolute;
// top: 0;
// right: 0;
// bottom: 0;
// left: 0;
// z-index: 1000;
// height: 100%;
// .content-wrapper {
// position: relative;
// height: 100%;
// background-color: rgba(14, 14, 14, 0.3);
// .img-wrapper {
// position: absolute;
// top: 0;
// right: 0;
// bottom: 0;
// left: 0;
// margin: auto;
// }
// }
// }
// // 弹窗字体
// .amos-modal {
// .base-eighteen-fs {
// font-size: 18px;
// }
// }
// // 数据列表展示
// .data-list-common-wrapper {
// height: 100%;
// .data-list-title {
// display: flex;
// height: 38px;
// line-height: 38px;
// background: rgba(33, 115, 186, 0.6);
// .left {
// padding-left: 15px;
// flex: 1;
// }
// .right {
// padding-right: 15px;
// text-align: right;
// flex: 1;
// }
// }
// .data-list-content {
// height: calc(100% - 38px);
// padding-top: 8px;
// overflow-y: auto;
// .data-list-item {
// display: flex;
// height: 38px;
// margin-bottom: 8px;
// line-height: 38px;
// cursor: pointer;
// border: 1px solid #6fc2e2;
// box-shadow: inset 0px 0px 18px 0px rgba(111, 194, 226, 0.67);
// .left {
// padding-left: 15px;
// flex: 2;
// }
// .right {
// padding-right: 15px;
// text-align: right;
// flex: 1;
// }
// }
// .data-list-item-active {
// background: linear-gradient(
// 180deg,
// rgba(15, 235, 255, 0) 0%,
// rgba(235, 175, 9, 0.46) 28%,
// rgba(235, 175, 9, 0.7) 53%,
// rgba(15, 235, 255, 0) 54%,
// rgba(15, 235, 255, 0.12) 100%
// )
// rgba(235, 175, 9, 0.24);
// border: 1px solid rgba(255, 191, 15, 1);
// box-shadow: inset 0px 0px 8px 2px rgba(235, 175, 9, 0.8);
// }
// }
// }
// // 数据详情展示
// .data-detail-modal {
// .amos-modal-container {
// top: 8%;
// width: 15rem;
// height: 84%;
// .amos-modal-close-x {
// position: relative;
// // top: 8px;
// // right: 6px;
// &::after {
// display: block;
// font-family: 'anticon' !important;
// content: '\E633';
// }
// }
// }
// .amos-modal-content {
// height: calc(100% - 50px) !important;
// max-height: 100%;
// padding: 0.05rem;
// overflow: hidden;
// // border: 1px solid #62cdf7;
// border-top: 0;
// border-radius: 0 0 4px 4px;
// }
// .amos-modal-header {
// // background-color: #071e3d !important;
// // border: 1px solid #62cdf7;
// // border-radius: 4px 4px 0 0;
// .amos-modal-title {
// font-size: 17px !important;
// color: white !important;
// }
// }
// .lists-detail-root {
// height: 100%;
// .lists-col-root {
// display: flex;
// height: inherit;
// padding-left: 32px;
// color: white;
// // background: #091e39;
// justify-content: left;
// align-items: center;
// }
// .lists-col-root-fix {
// display: flex;
// height: 100%;
// padding-left: 32px;
// color: white;
// // background: #091e39;
// justify-content: left;
// align-items: center;
// }
// .lists-col-btn-root {
// display: flex;
// height: 100%;
// padding-left: 10px;
// justify-content: center;
// align-items: center;
// }
// .lists-row-root {
// height: 38px;
// border-top: 2px solid #2998e16e;
// border-right: 2px solid #2998e16e;
// border-bottom: none;
// border-left: 2px solid #2998e16e;
// .lists-col-root-r {
// display: flex;
// height: 100%;
// padding-right: 20px;
// padding-left: 10px;
// color: white;
// // background: #091e39;
// border-left: 2px solid #2998e16e;
// justify-content: left;
// align-items: center;
// }
// }
// .lists-row-root-h {
// // height: calc((100% - 190px)/6);
// border-top: 2px solid #2998e16e;
// border-right: 2px solid #2998e16e;
// border-bottom: none;
// border-left: 2px solid #2998e16e;
// .lists-col-root-r {
// display: flex;
// height: 100%;
// padding: 20px 20px 20px 10px;
// color: white;
// // background: #091e39;
// border-left: 2px solid #2998e16e;
// justify-content: left;
// align-items: center;
// }
// &:last-child {
// border-bottom: 2px solid #2998e16e;
// }
// }
// }
// // 数据列表展示
// .data-list-more-wrapper {
// height: 100%;
// padding: 0 15px 15px 15px;
// .data-list-search {
// height: 50px;
// line-height: 50px;
// }
// .data-list-common-wrapper {
// height: calc(100% - 82px);
// .data-list-title {
// display: flex;
// height: 38px;
// line-height: 38px;
// background: rgba(33, 115, 186, 0.6);
// .left {
// padding-left: 15px;
// flex: 2;
// }
// .middle {
// flex: 1;
// margin-left: -34px;
// }
// .right {
// padding-right: 15px;
// text-align: right;
// flex: 1;
// }
// }
// .data-list-content {
// height: calc(100% - 38px);
// padding-top: 8px;
// overflow-y: auto;
// .data-list-item {
// display: flex;
// height: 38px;
// margin-bottom: 8px;
// line-height: 38px;
// cursor: pointer;
// border: 1px solid #6fc2e2;
// box-shadow: inset 0px 0px 18px 0px rgba(111, 194, 226, 0.67);
// .left {
// padding-left: 15px;
// flex: 2;
// }
// .middle {
// flex: 1;
// }
// .right {
// padding-right: 15px;
// text-align: right;
// flex: 1;
// }
// }
// .data-list-item-active {
// background: linear-gradient(
// 180deg,
// rgba(15, 235, 255, 0) 0%,
// rgba(235, 175, 9, 0.46) 28%,
// rgba(235, 175, 9, 0.7) 53%,
// rgba(15, 235, 255, 0) 54%,
// rgba(15, 235, 255, 0.12) 100%
// )
// rgba(235, 175, 9, 0.24);
// border: 1px solid rgba(255, 191, 15, 1);
// box-shadow: inset 0px 0px 8px 2px rgba(235, 175, 9, 0.8);
// }
// }
// }
// .data-list-pagination {
// }
// }
// }
// .reservoir-detail-modal {
// .lists-detail-root {
// .lists-row-root {
// &:last-child {
// border-bottom: 2px solid #2998e16e;
// }
// }
// }
// }
@import './variable/config.scss';
@import './variable/default.scss';
@import 'core';
@import 'icon';
@media screen and (min-width: 1600px) {
html {
font-size: 100px;
}
body {
font-size: 0.14rem;
}
}
@media screen and (min-width: 1366px) and (max-width: 1599px) {
html {
font-size: 75px;
}
body {
font-size: 0.13rem;
}
.major-node {
.ab-fs {
font-size: 17px!important;
}
}
.disaster-search-right {
.base-small-fs {
font-size: 16px!important;
}
}
}
@media screen and (min-width: 1280px) and (max-width: 1365px) {
html {
font-size: 70px;
}
body {
font-size: 0.14rem;
}
.major-node {
.ab-fs {
font-size: 14px!important;
}
}
.disaster-search-right {
.base-small-fs {
font-size: 16px!important;
}
}
}
@media screen and (min-width: 1024px) and (max-width: 1279px) {
html {
font-size: 55px;
}
body {
font-size: 0.17rem;
}
#app {
// 标题
.title {
font-size: 17px !important;
}
// 字体大小
.base-super-big-fs {
font-size: 21px !important;
}
.base-big-fs {
font-size: 17px !important;
}
.base-medium-fs {
font-size: 16px !important;
}
.base-small-fs {
font-size: 14px !important;
}
.base-sixteen-fs {
font-size: 12px !important;
}
.base-eighteen-fs {
font-size: 13px !important;
}
.base-twentyeight-fs {
font-size: 23px !important;
}
.base-thirtytwo-fs {
font-size: 27px !important;
}
// 树
.ant-tree {
padding-right: 12px;
font-size: 14px;
}
// Tabs
.ant-tabs-nav-container {
font-size: 17px;
}
// 折叠面板
.ant-collapse-header {
font-size: 14px;
}
.ant-collapse-content {
font-size: 14px;
}
// 按钮
.ant-btn {
font-size: 14px !important;
}
// 输入框
.ant-input {
font-size: 14px;
}
// form
.ant-form-item-label label {
font-size: 14px;
}
// 数字圈显示
.arround-item-icon-num {
font-size: 17px;
}
// 表格
table {
td {
font-size: 14px !important;
}
th {
font-size: 14px !important;
}
}
.ant-table-content {
margin-right: -0.05rem;
margin-left: -0.05rem;
}
// 切换按钮字体
.ant-radio-group {
label {
font-size: 14px;
}
}
.war-info-left {
width: 400px;
}
.alarm-content {
.tableHead {
font-size: 14px;
}
}
.major-node {
.ab-fs {
font-size: 12px!important;
}
}
// 辅助决策--灾情查询
.disaster-search-root {
.disaster-search-left {
width: 320px;
}
.disaster-search-center {
width: 260px;
}
.disaster-search-right {
}
}
// 地图屏
// logo
.logo-text {
font-size: 23px;
}
.amos-nav-item {
a {
font-size: 18px;
}
}
.bmap-root {
left: 280px;
width: calc(100% - 280px);
}
.map-left-root {
width: 280px;
.basic-left-search {
.search-btn {
.ant-input-search {
.ant-input {
width: 112px;
}
}
}
}
// 战备值守
.basic-left-root {
.title {
font-size: 18px;
.immediate-search-btn {
.ant-input-search {
top: 0;
}
}
}
}
.disaster-item {
.disaster-item-words {
font-size: 17px;
}
.text-style {
font-size: 14px;
}
}
// 应急指挥
.basic-left-title {
font-size: 17px;
}
.power-deploy-card {
padding: 5px 6px 5px 6px;
.title-words {
font-size: 17px;
}
.title-map-emergency {
font-size: 14px;
}
.title-map-emergency-total {
font-size: 14px;
}
.title-map-security-power {
font-size: 14px;
}
}
.power-deploy-card-title {
.title-words {
font-size: 17px;
}
}
// 重大安保
.major-left-selected {
.amos-collapse-header {
font-size: 16px;
}
.amos-collapse-content {
.shcs-name {
font-size: 14px;
}
.distance {
font-size: 14px;
}
}
}
}
.tab-root {
left: 280px;
}
.map-tool-root {
width: 32px;
}
}
//应急指挥--力量信息
.middle-butn-css {
.ant-tabs-tab-inner {
div {
font-size: 17px !important;
}
}
.ant-tabs.tabs-frame {
>.ant-tabs-bar {
position: relative;
> div {
&:first-child {
position: absolute;
right: 11%;
top: -20%;
.ant-tabs-extra-content {
float: inherit;
}
}
}
}
}
}
// 应急指挥--计算公式
.formula-calculate-wrapper {
.ant-tabs-nav-container {
font-size: 14px;
}
.disaster-right-title-css {
font-size: 16px;
}
}
// 应急指挥--作战地图
.battle-map {
.battle-map-left {
width: 300px;
.leftModelBox {
.item {
.itemLabel {
width:40px!important;
}
.itemBody {
width: 155px!important;
}
}
.leftModelTitle {
font-size: 14px!important;
}
}
.iconBox {
.iconTitle {
font-size: 12px!important;
}
}
.amos-custom-color-picker-swatch {
.amos-custom-color-picker-color {
width: 198px!important;
}
}
.amos-input-number {
margin-left: 5px!important;
.amos-input {
// height: 30px;
width: 70px!important;
}
}
}
.battle-map-right {
padding-left: 310px;
}
}
.centerMapBox {
background-size: 92% 75%;
}
.middle-center-map, .police-analysis-middle-center {
background-size: 92% 75% !important;
}
}
@media screen and (min-width: 100px) and (max-width: 1023px) {
html {
min-width: 1024px;
font-size: 55px;
}
body {
font-size: 0.14rem;
#app {
.view-port .content-body {
min-width: 1024px;
}
}
}
#app {
// header
// .top-header {
// .amos-nav-horizontal {
// width: 85%;
// }
// .amos-nav-horizontal > ul {
// margin-left: 0.1rem;
// }
// .amos-nav-item {
// margin-right: 0;
// }
// }
// .header {
// .amos-nav-item {
// margin-right: 0;
// }
// .sys-extend > .amos-nav-horizontal > ul {
// margin-right: 0.1rem;
// }
// }
// Tabs
.ant-tabs-nav-container {
font-size: 17px;
}
// 折叠面板
.ant-collapse-header {
font-size: 14px;
}
.ant-collapse-content {
font-size: 14px;
}
// 按钮
.ant-btn {
font-size: 14px !important;
}
// 输入框
.ant-input {
font-size: 14px;
}
// form
.ant-form-item-label label {
font-size: 14px;
}
// 标题
.title {
font-size: 17px !important;
}
// 字体大小
.base-big-fs {
font-size: 17px !important;
}
.base-medium-fs {
font-size: 16px !important;
}
.base-small-fs {
font-size: 14px !important;
}
// 数字圈显示
.arround-item-icon-num {
font-size: 17px;
}
// 表格
table {
td {
font-size: 14px !important;
}
th {
font-size: 14px !important;
}
}
.ant-table-content {
margin-right: -0.05rem;
margin-left: -0.05rem;
}
// 切换按钮字体
.ant-radio-group {
label {
font-size: 14px;
}
}
// 业务屏
// 战备值守--信息录入
.war-info-left {
width: 400px;
}
.alarm-content {
.tableHead {
font-size: 14px;
}
.alarm-item {
font-size: 14px;
}
}
.major-node {
.ab-fs {
font-size: 12px!important;
}
}
// 辅助决策--灾情查询
.disaster-search-root {
.disaster-search-left {
width: 320px;
}
.disaster-search-center {
width: 260px;
}
.disaster-search-right {
}
}
// 应急指挥--作战地图
.battle-map {
.battle-map-left {
width: 300px;
.leftModelBox {
.item {
.itemLabel {
width:40px!important;
}
.itemBody {
width: 155px!important;
}
}
.leftModelTitle {
font-size: 14px!important;
}
}
.iconBox {
.iconTitle {
font-size: 12px!important;
}
}
.amos-custom-color-picker-swatch {
.amos-custom-color-picker-color {
width: 198px!important;
}
}
.amos-input-number {
margin-left: 5px!important;
.amos-input {
// height: 30px;
width: 70px!important;
}
}
}
.battle-map-right {
padding-left: 310px;
}
}
// 地图屏
// logo
.logo-text {
font-size: 23px;
}
.amos-nav-item {
a {
font-size: 18px;
}
}
.bmap-root {
left: 290px;
width: calc(100% - 290px);
}
.map-left-root {
width: 280px;
// 战备值守
.basic-left-root {
.title {
font-size: 18px;
.immediate-search-btn {
.ant-input-search {
top: 0;
}
}
}
}
.disaster-item {
.disaster-item-words {
font-size: 17px;
}
.text-style {
font-size: 14px;
}
}
// 应急指挥
.basic-left-title {
font-size: 17px;
}
.power-deploy-card {
padding: 5px 6px 5px 6px;
.title-words {
font-size: 17px;
}
.title-map-emergency {
font-size: 14px;
}
.title-map-emergency-total {
font-size: 14px;
}
.title-map-security-power {
font-size: 14px;
}
}
.power-deploy-card-title {
.title-words {
font-size: 17px;
}
}
// 重大安保
.major-left-selected {
.amos-collapse-header {
font-size: 16px;
}
.amos-collapse-content {
.shcs-name {
font-size: 14px;
}
.distance {
font-size: 14px;
}
}
}
}
.bmap-root {
left: 290px;
width: calc(100% - 295px);
}
.tab-root {
left: 290px;
}
.map-tool-root {
width: 32px;
}
}
}
html {
box-sizing: border-box;
}
html,
body {
width: 100%;
height: 100%;
padding: 0;
margin: 0;
overflow-y: hidden;
font-family: $font-family;
// font-size: $font-size;
// color: $base-color-1;
color: $base-color;
background: white;
}
h1,
h2,
h3,
h4,
h5,
h6 {
margin-top: 0.156rem;
margin-bottom: 0.12rem;
font-weight: 100;
}
h1 {
font-size: 0.24rem;
}
h2 {
font-size: 0.18rem;
}
h3 {
font-size: 0.156rem;
}
a {
color: #42a5f5;
text-decoration: none;
&:hover {
text-decoration: underline;
}
}
.wrapper {
animation: wrapper-fade 0.25s cubic-bezier(0.455, 0.03, 0.515, 0.955);
}
@keyframes wrapper-fade {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
*,
*::before,
*::after {
padding: 0;
margin: 0;
box-sizing: inherit;
}
.amos-modal-container {
// width: 50% !important;
position: relative;
left: 0 !important;
margin: 0 auto;
background: rgba(12, 73, 126, 1);
box-shadow: none;
.ant-select-selection--single {
height: 36px;
}
.ant-input {
height: 36px;
}
}
.amos-modal-close {
color: #ec0000 !important;
}
.amos-modal-close-x {
width: 0.56rem;
height: 0.56rem;
font-size: 0.24rem !important;
line-height: 0.56rem;
}
.amos-modal-content {
max-height: 4.2rem;
padding: 0.2rem;
color: #fff;
font-size: 0.16rem;
}
.amos-modal-header {
padding: 0.12rem 0.24rem;
color: #fff;
border: none;
height: 0.56rem;
background: linear-gradient(180deg,rgba(154,203,251,0.24) 0%,rgba(225,238,255,0.36) 54%,rgba(157,183,223,0.1) 54%,rgba(63,117,209,0) 100%);
box-shadow: inset 0px 0px 18px 0px rgba(111,194,226,0.67);
border-radius: 4px 4px 0px 0px;
.amos-modal-title {
color: #307fdd;
text-align: center;
}
}
.amos-modal-footer {
padding: 0 0.12rem;
color: #307fdd;
// background: rgba(7, 17, 35, 0.9) !important;
// border: 1px solid #1274cf;
font-size: 0.16rem;
border: none;
.detail-footer {
padding: 0.12rem 0;
border-top: 1px solid #6FC2E2;
}
.amos-btn {
height: 0.336rem;
padding: 0 0.216rem;
margin-left: 0.096rem;
i[class*='icon'] {
margin-right: 0.036rem;
}
}
}
.ant-calendar-picker-input {
color: #5cc1e3;
background: #061f3b;
border: 0px;
}
.amos-modal-wrap {
.select-scroll-wrapper {
display: inline-flex !important;
// width: 130px !important;
// margin-left: 10px;
}
}
.ant-table {
width: 100%;
.ant-table-placeholder {
margin: 0 5px;
}
table {
border-collapse: separate;
border-spacing: 5px 5px;
.ant-table-thead {
tr {
th {
padding: 5px 3px;
font-size: 12px;
color: #fff;
text-align: center;
background: rgba(18, 48, 102, 0.8);
}
}
}
.ant-table-tbody {
tr {
td {
padding: 10px 8px;
color: #fff;
text-align: center;
word-break: keep-all;
background: rgba(8, 58, 117, 0.25);
border-bottom: none;
}
}
.red-words {
color: red !important;
}
}
}
}
.ant-tree {
.ant-tree-switcher_close {
&::after {
display: inline-block;
font-family: 'anticon';
font-size: 16px;
font-size: 7px \9;
font-weight: bold;
color: #fff;
text-rendering: optimizeLegibility;
content: '\E606';
transform: rotate(270deg) scale(0.59);
transition: transform 0.3s;
}
}
.ant-tree-switcher_open {
&::after {
display: inline-block;
font-family: 'anticon';
font-size: 16px;
font-size: 7px \9;
font-weight: bold;
color: #fff;
text-rendering: optimizeLegibility;
content: '\E606';
transform: scale(0.58333333) rotate(0deg);
transition: transform 0.3s;
}
}
.ant-tree-title {
color: #fff;
}
.ant-tree-node-content-wrapper {
&:hover {
background: none !important;
}
}
// .ant-tree-node-selected {
// background: none !important;
// }
}
.anticon-search:before {
color: white;
}
.ant-select-arrow:before {
color: white;
}
.ant-select-selection__rendered {
line-height: 30px !important;
}
.amos-time-list {
height: 100%;
width: 100%;
.amos-time-item {
padding: 0.1rem;
}
.amos-time-index {
display: inline-block;
width: 0.37rem;
height: 0.37rem;
line-height: 0.37rem;
text-align: center;
color: #034776;
font-size: 0.18rem;
position: relative;
top: 0.02rem;
img {
width: 100%;
height: 0.37rem;
position: absolute;
left: 0;
top: 0;
}
span {
display: block;
position: absolute;
width: 100%;
}
}
.amos-time-info {
display: inline-block;
width: calc(100% - 0.37rem);
vertical-align: top;
padding-left: 0.15rem;
.amos-time-info-date {
display: inline-block;
vertical-align: top;
font-size: 0.2rem;
color:rgba(255,191,15,1);
}
.amos-time-info-person {
display: inline-block;
vertical-align: top;
font-size: 0.2rem;
color: white;
padding-left: 2em;
min-width: 10em;
opacity: 0.6;
}
.amos-time-info-unit {
display: inline-block;
font-size: 0.2rem;
color: white;
max-width: calc(100% - 10em - 2.1em);
opacity: 0.6;
img {
height: 0.16rem;
width: 0.16rem;
margin-right: 0.08rem;
position: relative;
top: 0.07rem;
}
}
}
.amos-time-content {
padding: 0.1rem 0 0.15rem 0;
font-size: 0.20rem;
font-family: SourceHanSansCN-Medium;
font-weight: 500;
color: white;
position: relative;
line-height: 0.3rem;
padding-bottom: 0.15rem;
width: calc(100% - 0.54rem);
margin-left: 0.54rem;
&:after {
content: "";
display: block;
width: 100%;
height: 1px;
background-image: linear-gradient(to right, #ccc 0%, #ccc 50%, transparent 50%);
background-size: 8px 1px;
background-repeat: repeat-x;
bottom: 0;
left: 0;
position: absolute;
}
}
}
@import "./info.scss";
@import "./TimeList.scss";
/*滚动条样式*/
.ant-select-dropdown::-webkit-scrollbar {
width: 4px;
height: 16px;
background: rgba(71, 146, 212, 1);
border-radius: 4px;
}
/*定义滚动条的轨道,内阴影及圆角*/
.ant-select-dropdown::-webkit-scrollbar-track {
background-color: transparent;
border-radius: 4px;
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
}
/*定义滑块,内阴影及圆角*/
.ant-select-dropdown::-webkit-scrollbar-thumb {
height: 20px;
background: rgba(15, 235, 255, 1);
border-radius: 4px;
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
}
.amos-info-content {
width: 100%;
height: 100%;
padding-top: 2%;
overflow: auto;
.amos-info-item {
width: 100%;
display: block;
line-height: 2.5;
.amos-info-name {
display: inline-block;
width: 8em;
font-size: 0.2rem;
font-family: SourceHanSansCN-Regular;
font-weight: 400;
color: rgba(255,255,255,1);
text-align: right;
margin-right: 1em;
}
.amos-info-value {
display: inline-block;
vertical-align: top;
width: calc(100% - 9em);
font-size: 0.2rem;
font-family: SourceHanSansCN-Regular;
font-weight: 400;
color: rgba(255,255,255,1);
position: relative;
min-height: 0.5rem;
/* border-bottom: 1px dashed rgb(4, 78, 133); */
/* border-style: dashed; */
/* width: 100%; */
&:after {
content: "";
display: block;
width: 100%;
height: 1px;
background-image: linear-gradient(to right, #ccc 0%, #ccc 50%, transparent 50%);
background-size: 8px 1px;
background-repeat: repeat-x;
position: relative;
bottom: 0;
left: 0;
position: absolute;
}
}
}
}
// 导入字体
@import "./../assets/amosFont/iconfont.css";
/* Icon sizes */
/* ------------------------- */
$amosicon-css-prefix: amosicon !default;
/* makes the font 33% larger relative to the icon container */
.#{$amosicon-css-prefix}-lg {
font-size: (4em / 3);
line-height: (3em / 4);
vertical-align: -15%;
}
.#{$amosicon-css-prefix}-2x {
font-size: 2em;
}
.#{$amosicon-css-prefix}-3x {
font-size: 3em;
}
.#{$amosicon-css-prefix}-4x {
font-size: 4em;
}
.#{$amosicon-css-prefix}-5x {
font-size: 5em;
}
import './base.scss';
import './view/index.scss';
@mixin iconfont-mixin() {
display: inline-block;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
font-style: normal;
line-height: 1;
text-align: center;
text-rendering: optimizeLegibility;
text-transform: none;
vertical-align: baseline;
&::before {
display: block;
font-family: "anticon" !important;
}
}
@mixin iconfont-font($content) {
font-family: "amosicon";
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-rendering: optimizeLegibility;
content: $content;
}
@import "./icon.scss";
@import "./size.scss";
@import './../variable/config.scss';
@function pxToRem($px) {
@return ($px / $base-font-size) * 1rem;
}
@function strip-units($number) {
@return $number / ($number * 0 + 1);
}
@mixin remCalc($property, $values...) {
$max: length($values);
$pxValues: '';
$remValues: '';
@for $i from 1 through $max {
$value: strip-units(nth($values, $i));
$base-font-size: strip-units($base-font-size);
$pxValues: #{$pxValues + $value * $base-font-size}px;
@if $i < $max {
$pxValues: #{$pxValues + ' '};
}
}
@for $i from 1 through $max {
$value: strip-units(nth($values, $i));
$remValues: #{$remValues + $value}rem;
@if $i < $max {
$remValues: #{$remValues + ' '};
}
#{$property}: $pxValues;
#{$property}: $remValues;
}
}
@mixin size($width, $height) {
width: $width;
height: $height;
}
@mixin square($size) {
@include size($size, $size);
}
@keyframes amosFadeIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
@keyframes amosFadeOut {
0% {
opacity: 1;
}
100% {
opacity: 0;
}
}
$vender-prefix: amos;
$base-color: black;
$base-color-1: rgba($base-color, 0.65);
$base-color-2: rgba($base-color, 0.35);
$top-height: 0.48rem;
$content-height: calc(100% - 0.88rem);
$background-color: #203957;
$font-family: "Microsoft YaHei";
$font-size: 12px;
$base-font-size: 100px;
$tab-width: 144px;
/** Colors */
$main-bg-color: rgba(6, 90, 155, 0.3);
// map color
$main-color: rgba(8, 60, 120, 0.3);
$map-selected-color: linear-gradient(to bottom, rgba(27,154,191,0.6), rgba(3,48,141,0.6));
$stroke-color: #00ffff;
$subscript-color: #FFF000;
$icon-color: linear-gradient(to bottom, #85FFFF, #2170F6);;
// Background color for `<body>`
$body-background: white;
// Base background color for most components
$component-background: white;
$primary-color-light: #cfeeff;
$primary-color: #27b3fe;
$primary-color-deep: #19afff;
$primary-color-deeper: #00a6ff;
$success-color: #4cd964;
$danger-color: #f94242;
$warning-color: #faad14;
$error-color: #f5222d;
$color-grey: #ccc;
$color-white: white;
$color-disable: #f4f4f4;
$active-hover-foucs-bg-color: rgba(222, 222, 222, 0.2);
$primary-1: lighten($primary-color, 1);
$primary-2: lighten($primary-color, 2);
$primary-3: lighten($primary-color, 3);
$primary-4: lighten($primary-color, 4);
$primary-5: lighten($primary-color, 5);
$primary-6: $primary-color;
$primary-7: lighten($primary-color, 7);
$primary-8: lighten($primary-color, 8);
$primary-9: lighten($primary-color, 9);
$primary-10: lighten($primary-color, 10);
$disabled-color: #9e9e9e;
$disabled-border-color: #eaeaea;
$disabled-bg-color: #eceff1;
$minor-color: #ccc;
$minor-bg-color: #f8f8f8;
$minor-bg-color-hover: #f1f1f1;
$minor-bg-color-active: #eaeaea;
$minor-border-color: #c6c6c6;
/** border */
$border-radius-base: 4px;
$border-radius-sm: 2px;
// base
// ---
$base-height-xl: 40px !default;
$base-height-lg: 36px !default;
$base-height: 32px !default;
$base-height-sm: 28px !default;
$base-height-xs: 24px !default;
$base-padding-xl: 14px !default;
$base-padding-lg: 12px !default;
$base-padding: 10px !default;
$base-padding-sm: 8px !default;
$base-padding-xs: 4px !default;
$base-fontSize-xl: 18px !default;
$base-fontSize-lg: 16px !default;
$base-fontSize: 14px !default;
$base-fontSize-sm: 14px !default;
$base-fontSize-xs: 12px !default;
$base-radius-xl: 6px !default;
$base-radius-lg: 5px !default;
$base-radius: 4px !default;
$base-radius-sm: 4px !default;
$base-radius-xs: 4px !default;
/** font */
$font-size-base: 12px;
$font-size-lg: $font-size-base + 2px;
$font-color: white;
// Border color
$border-color-base: #d8d8d8;
$border-color-split: #e8e8e8;
$border-style-base: solid;
// text color
$text-color: rgba(black, 65%);
$text-color-secondary: rgba(black, 45%);
$heading-color-dark: rgba(white, 100%);
$text-color-dark: rgba(white, 85%);
$text-color-secondary-dark: rgba(white, 65%);
$heading-color: rgba(black, 85%);
$text-shadow-color: #badfff;
// LINK
$link-color: $primary-color;
$link-hover-color: $primary-5;
$link-active-color: $primary-7;
$link-decoration: none;
$link-hover-decoration: none;
/** nav theme */
/** Animation */
$ease-out: cubic-bezier(0.215, 0.61, 0.355, 1);
$ease-in: cubic-bezier(0.55, 0.055, 0.675, 0.19);
$ease-in-out: cubic-bezier(0.645, 0.045, 0.355, 1);
$ease-out-back: cubic-bezier(0.12, 0.4, 0.29, 1.46);
$ease-in-back: cubic-bezier(0.71, -0.46, 0.88, 0.6);
$ease-in-out-back: cubic-bezier(0.71, -0.46, 0.29, 1.46);
$ease-out-circ: cubic-bezier(0.08, 0.82, 0.17, 1);
$ease-in-circ: cubic-bezier(0.6, 0.04, 0.98, 0.34);
$ease-in-out-circ: cubic-bezier(0.78, 0.14, 0.15, 0.86);
$ease-out-quint: cubic-bezier(0.23, 1, 0.32, 1);
$ease-in-quint: cubic-bezier(0.755, 0.05, 0.855, 0.06);
$ease-in-out-quint: cubic-bezier(0.86, 0, 0.07, 1);
// media
// Media queries breakpoints
// Extra small screen / phone
$screen-xs: 480px;
$screen-xs-min: $screen-xs;
// Small screen / tablet
$screen-sm: 576px;
$screen-sm-min: $screen-sm;
// Medium screen / desktop
$screen-md: 768px;
$screen-md-min: $screen-md;
// Large screen / wide desktop
$screen-lg: 992px;
$screen-lg-min: $screen-lg;
// Extra large screen / full hd
$screen-xl: 1200px;
$screen-xl-min: $screen-xl;
// Extra extra large screen / large descktop
$screen-xxl: 1600px;
$screen-xxl-min: $screen-xxl;
// provide a maximum
$screen-xs-max: ($screen-sm-min - 1px);
$screen-sm-max: ($screen-md-min - 1px);
$screen-md-max: ($screen-lg-min - 1px);
$screen-lg-max: ($screen-xl-min - 1px);
$screen-xl-max: ($screen-xxl-min - 1px);
//
$line-height-base: 1.5;
.amos-clearfix {
clear: both;
}
.biz-view-root {
height: 100%;
background: url('/src/assets/bg/biz-bg.png') no-repeat;
background-size: cover;
.header {
position: none !important;
}
}
.top-header {
width: 100%;
height: pxToRem(54.35px);
// margin-top: pxToRem(13.35px);
// margin-left: pxToRem(-32.24px);
background: url('/src/assets/logo/biz-nav.png') no-repeat;
background-size: 100% 100%;
.amos-nav-horizontal .amos-nav-item:hover > a::after,
.amos-nav-horizontal .amos-nav-item.amos-nav-item-active > a::after {
background: none;
}
.amos-nav-horizontal {
display: flex;
align-items: center;
margin-left: pxToRem(23px);
height: pxToRem(54.35px);
}
& > .amos-nav-horizontal > ul {
float: right;
height: pxToRem(42px);
width: pxToRem(176.16px);
padding-top: pxToRem(6px);
}
.amos-nav-item {
height: pxToRem(42px);
width: pxToRem(176.16px);
background-size: 100% 100%;
&.amos-nav-item-active {
background: url('/src/assets/logo/biz-nav-item.png') no-repeat;
background-size: pxToRem(176.16px) pxToRem(42px);
a {
color:rgba(247, 255, 0,1);
}
&:after {
position: absolute;
bottom: 0;
left: pxToRem(40px);
width: pxToRem(90px);
height: pxToRem(2px);
background: #FFF700;
content: '';
}
}
&:hover {
transform: none;
}
a {
width: 100%;
height: 100%;
padding: 0;
font-size: pxToRem(25px);
line-height: pxToRem(43px);
font-weight:500;
color:rgba(0, 202, 206,1);
opacity: 1;
text-align: center;
}
}
}
@import "./../common/graph.scss";
@import "./../../variable/config.scss";
$drag-color1: #daf4ff;
$drag-color2: #c6c6c6;
$drag-color3: #2d7fec;
$drag-gohst1: #562984;
$drag-gohst2: #f4e2c9;
.amos-dragable-ghost {
background-color: $drag-gohst1;
opacity: 0.2;
}
.amos-dragable-drager {
background: $drag-color2;
}
%desktop-tab-active {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
border-bottom: 2px solid #fec006;
content: "";
transform: scale(1);
box-shadow: 0 -2px 8px rgba(254, 192, 6, 0.8);
transition: transform;
transition-duration: 0.2s;
backface-visibility: hidden;
}
.center-tab-item {
position: relative;
display: inline-block;
height: 0.36rem;
padding: 0.06rem 0.12rem;
margin-right: 1px;
color: white;
text-align: center;
cursor: pointer;
input {
width: 0.96rem;
height: 0.24rem;
padding: 0 0.06rem;
color: black;
}
}
.center-tab-item-setting-menu {
background-color: rgba(0, 0, 0, 0.3);
border-radius: 0;
li {
background: rgba(0, 0, 0, 0.3) !important;
border-radius: 0 !important;
&:hover {
background: rgba(82, 108, 253, 0.3) !important;
}
}
.ant-dropdown-menu-item-divider {
background: white !important;
}
a {
color: white;
background: rgba(0, 0, 0, 0.3);
border-radius: 0 !important;
}
}
.home-content {
position: relative;
width: 93%;
height: 100%;
margin: 0 auto;
}
.personal-center {
position: absolute;
top: 0;
width: 100%;
height: 100%;
padding: 0.12rem 0;
.center-header {
position: relative;
margin-bottom: 0.12rem;
.desktop-tab {
min-width: 0.96rem;
line-height: 0.24rem;
box-shadow: 0 2px 8px rgba(43, 22, 54, 0.2);
&:hover {
&::after {
@extend %desktop-tab-active;
}
}
&.active-tab {
&::after {
@extend %desktop-tab-active;
}
}
}
.center-tab {
min-width: 0.36rem;
background: rgba(0, 0, 0, 0.3);
box-shadow: 0 2px 8px rgba(43, 22, 54, 0.2);
&:hover {
background: rgba(82, 108, 253, 0.3);
}
}
}
.center-body {
position: relative;
height: calc(100% - 0.72rem);
overflow: hidden;
.scene-graph-container {
width: 100%;
height: 100%;
// overflow-y: auto;
// overflow-x: hidden;
.layout-wrapper {
width: 100%;
height: 100%;
.card-item-layout {
display: inline-block;
width: 33.3%;
min-width: 4.32rem;
padding: 0 5px;
list-style: outside none none;
transform: translateZ(0);
box-sizing: border-box;
transition: box-shadow 0.3s ease-in-out;
.card-frame {
width: 100%;
margin: 0;
}
&.drag-card-add {
color: white;
}
}
}
}
}
}
.view-port.uneyemode {
.content-body {
background: white;
.box-left-normal,
.box-right-normal,
.box-close {
background: white;
}
.amos-category-tab {
color: black;
.nav-tab-all {
background: white;
}
.nav-tab-content {
background: white;
}
}
.ant-tabs {
color: black;
}
}
}
@import './../../variable/config.scss';
@import './../../mixins/rem.scss';
.header {
width: 100%;
.header-row {
.header-primary {
display: flex;
width: 100%;
.logo {
display: flex;
width: pxToRem(585.05px);
height: pxToRem(80.02px);
background: url('/src/assets/logo/logo.png') no-repeat;
background-size: 100% 100%;
flex: none;
align-items: center;
.logo-text {
display: inline-block;
font-size: pxToRem(30px);
font-weight: bold;
line-height: pxToRem(40px);
margin-left: pxToRem(164.28px);
color: rgba(89, 240, 251,1);
}
}
.logo-resource {
width: pxToRem(518px);
height: pxToRem(90px);
margin-left: pxToRem(50px);
background-size: cover;
flex: none;
}
}
.header-secondary {
position: absolute;
right: 0;
display: flex;
}
.header-logo {
display: flex;
height: $top-height;
padding-right: 0.12rem;
justify-content: center;
align-items: center;
.logo-img {
height: $top-height;
&:hover {
transform: scaleX(-1);
transition: transform 1s;
}
}
.logo-text {
margin-left: 0.12rem;
font-size: 0.24rem;
text-shadow: 3px 2px 2px $text-shadow-color;
}
}
.sys-extend {
width: 100%;
height: pxToRem(42px);
margin-top: pxToRem(13.35px);
margin-left: pxToRem(-32.24px);
background: url('/src/assets/logo/nav.png') no-repeat;
background-size: 100% 100%;
.amos-nav-horizontal .amos-nav-item:hover > a::after,
.amos-nav-horizontal .amos-nav-item.amos-nav-item-active > a::after {
background: none;
}
.amos-nav-horizontal {
display: flex;
align-items: center;
margin-left: pxToRem(21.18px);
}
& > .amos-nav-horizontal > ul {
float: right;
}
.amos-nav-item {
height: pxToRem(42px);
width: pxToRem(194.16px);
background-size: 100% 100%;
&.amos-nav-item-active {
background: url('/src/assets/logo/nav-item.png') no-repeat;
background-size: pxToRem(194.16px) pxToRem(60px);
a {
color:rgba(247, 255, 0,1);
}
&:after {
position: absolute;
bottom: 0;
left: pxToRem(52px);
width: pxToRem(90px);
height: pxToRem(2px);
background: #FFF700;
content: '';
}
}
&:hover {
transform: none;
}
a {
width: 100%;
height: 100%;
padding: 0;
font-size: pxToRem(25px);
line-height: pxToRem(43px);
font-weight:500;
color:rgba(0, 202, 206,1);
opacity: 1;
text-align: center;
}
}
}
.header-search {
width: 1.8rem;
padding: 0 0.06rem;
border-left: 1px solid transparent;
.tip-search {
height: $top-height - 0.144rem;
line-height: $top-height - 0.144rem;
color: white;
background-color: rgba(255, 255, 255, 0.2);
border: 1px solid transparent;
}
}
.sys-tools {
border-left: 1px solid transparent;
.ui-menu {
.ui-menu-item {
display: flex;
height: $top-height;
padding: 0 0.06rem;
margin: 0;
border-right: 1px solid transparent;
justify-content: center;
align-items: center;
&:hover {
color: white;
background: #431d6a;
}
&:last-child {
border-right: 0;
}
}
&.horizontal {
display: flex;
justify-content: flex-end;
align-items: center;
}
}
&.sys-tools-min {
.ui-menu {
&.horizontal {
display: flex;
padding-right: 0;
justify-content: flex-end;
align-items: center;
.ui-menu-item {
padding: 0 0.06rem;
border-right: 1px solid transparent;
&:last-child {
border-right: 0;
}
}
}
}
}
}
}
}
.header-logo.mixin-log {
justify-content: start !important;
.logo-bg {
width: $top-height;
height: $top-height - 0.06rem;
margin-left: 0.06rem;
text-align: center;
background-size: 100% 100%;
.mixin-logo-img {
height: 0.216rem;
cursor: pointer;
transform: rotate(360deg);
animation: logoRotation 6s linear infinite;
}
.mixin-logo-img-hover-rotate {
height: 0.216rem;
cursor: pointer;
transition: all 1s ease-in-out;
&:hover {
transform: rotate(360deg);
}
}
}
.mixin-logo-title {
height: $top-height - 0.06rem;
}
}
@keyframes logoRotation {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
//@import "./main.scss";
@import "./header.scss";
//@import "./theme.scss";
//@import "./eyemode.scss";
//@import "./deskCenter.scss";
//@import "./mapmain.scss";
// @import './../../variable/config.scss';
// @import './../common/animate.scss';
// @import './../../mixins/rem.scss';
// .view-port {
// height: 100%;
// background: url('/src/assets/bg/bg-right.png') no-repeat 100% 100%;
// .content-body {
// position: absolute;
// left: 0;
// width: 100%;
// height: $content-height;
// overflow: hidden;
// opacity: 1;
// transition: opacity;
// transition-duration: 0.45s;
// backface-visibility: hidden;
// .main-container {
// display: flex;
// padding-top: 16px;
// padding-right: 5px;
// padding-bottom: 10px;
// padding-left: 5px;
// }
// .main-self-container {
// width: 100%;
// height: 100%;
// padding: 16px 5px 10px 5px;
// }
// .desktop {
// width: 100%;
// height: 100%;
// opacity: 1;
// transition: opacity;
// transition-duration: 0.45s;
// .box-left-normal {
// position: absolute;
// top: 0;
// z-index: 100;
// height: calc(100% - 0.06rem);
// margin-top: 0.06rem;
// }
// .box-left-min {
// position: absolute;
// top: calc(50% - 1.2rem);
// z-index: 100;
// width: 0.6rem;
// .box-min {
// left: calc(-0.6rem + 3px);
// border-right: 3px solid transparent;
// transition: left 0.4s;
// &:hover {
// left: 0;
// border-right: 0;
// }
// }
// }
// .box-right-normal {
// position: absolute;
// top: 0;
// right: 0;
// z-index: 100;
// height: calc(100% - 0.06rem);
// margin-top: 0.06rem;
// }
// .box-right-min {
// position: absolute;
// top: calc(50% - 0.6rem);
// right: 0;
// z-index: 100;
// width: 0.6rem;
// .box-min {
// right: calc(-0.6rem + 3px);
// border-left: 3px solid transparent;
// transition: right 0.4s;
// &:hover {
// right: 0;
// border-left: 0;
// }
// }
// }
// .box-close {
// position: absolute;
// top: calc(50% - 50px);
// width: 0.216rem;
// height: 0.96rem;
// line-height: 0.96rem;
// color: white;
// cursor: pointer;
// background-color: rgba(0, 0, 0, 0.3);
// &.left {
// right: -20px;
// border-radius: 0 12px 12px 0;
// box-shadow: 2px 2px 5px rgba(43, 22, 54, 0.2);
// }
// &.right {
// left: -20px;
// border-radius: 12px 0 0 12px;
// box-shadow: -2px 0 5px rgba(43, 22, 54, 0.2);
// }
// &:hover {
// background-color: #562984;
// }
// }
// }
// }
// }
// .main-view {
// width: 100%;
// height: 100%;
// > .main-content {
// overflow: auto;
// }
// }
// .box-min {
// position: absolute;
// display: table;
// width: 0.6rem;
// height: 100%;
// .box-min-cont {
// position: relative;
// display: table-cell;
// width: 100%;
// text-align: center;
// vertical-align: middle;
// .box-min-item {
// position: relative;
// width: 100%;
// height: 60px;
// padding: 10px 0 4px;
// cursor: pointer;
// &:hover {
// transition-duration: 0.2s;
// }
// }
// }
// }
// .app-list {
// position: relative;
// height: 100%;
// .tab-content-item {
// img {
// position: relative;
// top: 0.048rem;
// }
// }
// .amos-category-tab {
// height: calc(100% - 0.36rem);
// .nav-tab-all {
// height: calc(100% - 0.12rem);
// background-color: rgba(0, 0, 0, 0.4);
// }
// .nav-tab-content {
// width: calc(100% - 1.2rem);
// height: calc(100% - 0.12rem);
// background-color: rgba(0, 0, 0, 0.2);
// }
// }
// .app-search {
// width: 90%;
// height: 0.264rem;
// padding-right: 0.264rem;
// line-height: 0.264rem;
// border: 0;
// border-radius: 0.132rem;
// & > input {
// background-color: rgba(255, 255, 255, 0.2);
// border: 1px solid rgba(0, 0, 0, 0.2);
// border-radius: 100px;
// }
// }
// .app-search-icon {
// position: absolute;
// top: 0.012rem;
// right: 7%;
// }
// }
// .form-footer {
// display: block;
// margin-top: 0.12rem;
// text-align: right;
// }
// .ant-tabs-ink-bar {
// // width: $tab-width !important;
// // background-color: transparent;
// background-color: #fec006;
// }
// .ant-tabs-tab-inner {
// .amosicon {
// margin-right: 0.06rem;
// }
// }
// .ant-tabs-tab {
// width: $tab-width !important;
// margin-right: 0 !important;
// text-align: center;
// }
// .ant-tabs {
// color: white;
// }
// .amos-skin-img {
// position: fixed;
// width: 100%;
// height: 100%;
// background-repeat: no-repeat;
// background-size: 100% 100%;
// }
// .amos-jump-spiner {
// position: absolute;
// top: 50%;
// left: 50%;
// z-index: 999;
// transform: translate(-50%, -50%);
// }
// .app-sider {
// .amos-tabs {
// width: 3.36rem;
// height: 100%;
// .amos-tabs-list {
// .amos-tabs-tabitem {
// .amos-tabs-tabitem-inner {
// color: white;
// .amos-tabs-tabitem-content {
// i {
// position: relative;
// top: 1px;
// margin-right: 2px;
// }
// }
// }
// }
// .amos-tabs-tabitem-active {
// > .amos-tabs-tabitem-inner {
// background-color: transparent;
// border-bottom: 2px solid #97d747;
// }
// }
// }
// .amos-tabs-panel {
// height: calc(100% - 40px);
// }
// }
// }
.theme-wrapper {
.theme-head {
padding-top: 0.3rem;
padding-bottom: 0.18rem;
margin-bottom: 0.12rem;
text-align: center;
background: #f4f7fc;
div {
font-size: 0.276rem;
color: #333;
}
p {
font-size: 0.156rem;
}
}
.theme-custom-head {
padding-top: 0.3rem;
padding-bottom: 0.18rem;
margin: 0.12rem 0;
text-align: center;
background: #f4f7fc;
}
.theme-content {
display: flex;
max-width: 9.36rem;
margin: 0 auto;
justify-content: flex-start;
flex-flow: row wrap;
.theme-class-name {
width: 100%;
padding: 0 0.06rem;
font-size: 0.156rem;
color: #333;
}
.theme-item {
position: relative;
width: 1.2rem;
height: 1.02rem;
margin: 0.06rem;
img {
width: 1.2rem;
height: 0.804rem;
vertical-align: middle;
cursor: pointer;
}
.theme-name {
width: 1.2rem;
height: 0.192rem;
color: white;
text-align: center;
}
.theme-footer {
height: 0.024rem;
span {
float: left;
width: 25%;
height: 100%;
}
}
.theme-check {
position: absolute;
top: 0;
display: none;
width: 0.144rem;
height: 1.02rem;
line-height: 72px;
color: white;
text-align: center;
cursor: pointer;
}
.theme-use {
position: absolute;
top: 30px;
left: 28px;
color: white;
.amosicon {
margin-right: 0.036rem;
}
}
.theme-delete {
position: absolute;
top: 0.012rem;
right: 0.012rem;
display: none;
font-size: 0.144rem;
color: white;
cursor: pointer;
}
}
.theme-item.normal {
&:hover {
.theme-check {
display: block;
}
.theme-delete {
display: block;
}
}
}
}
.create-theme-content {
width: 100%;
text-align: center;
.create-theme-value {
margin-right: 0.12rem;
input {
width: 0.96rem;
}
}
.create-theme-lable {
font-size: 0.12rem;
color: #333;
}
}
}
@import './fixed/index.scss';
//@import './login.scss';
//@import './panelframe.scss';
@import './monitor/index.scss';
@import './biz/index.scss';
.login-resource-text {
text-align: center;
}
.login-content .login-center-content .login-center-left .login-logo-language {
top: 0.6rem;
}
.login-content .login-center-content .login-center-left .login-language-bottom {
top: 1.32rem;
}
.login-content .login-footer span {
margin-left: 0.36rem;
}
.login-content .login-footer {
bottom: 0.12rem;
}
.login-content .login-center-content .login-center-right .login-form {
margin-top: 0.12rem !important;
}
.login-form-border {
margin-top: 0.12rem !important;
}
.login-content .login-center-content .login-center-right .login-form .login-form-border .login-form-container {
width: 0.36rem !important;
height: 0.36rem !important;
}
.login-content .login-center-content .login-center-right .login-form input {
width: 2.8rem;
height: 0.288rem !important;
padding-left: 0.42rem !important;
}
.login-content .login-center-content .login-center-right .login-form input.login-verify-blob {
width: 1.8rem;
}
.login-form-verifycode {
height: 0.288rem !important;
}
.login-form-verifycode img {
width: 0.6rem !important;
height: 0.288rem !important;
}
.login-content .login-center-content .login-center-right .login-form .login-remember {
height: 0.24rem !important;
margin-top: 0.2rem !important;
}
.login-content .login-center-content .login-center-right .login-form button {
height: 0.36rem !important;
margin-top: 0.12rem !important;
font-size: 0.168rem !important;
}
.login-content .login-center-content .login-center-right .login-form .login-form-border .login-form-container .login-form-usericon,
.login-content .login-center-content .login-center-right .login-form .login-form-border .login-form-container .login-form-passicon,
.login-content .login-center-content .login-center-right .login-form .login-form-border .login-form-container .login-form-verifycodeicon {
height: 0.216rem !important;
}
#app .login-content .login-center-content .login-center-right .login-form .login-submit {
padding: 0 !important;
border-radius: 0.03rem !important;
background: none repeat scroll 0 0 #e84d26;
}
#app .login-content {
background: url('/src/assets/bg/login-bg.jpg') no-repeat;
}
.login-content .login-center-content .login-center-right .login-form input.login-verify-blob {
width: 2.2rem;
}
@import './duty.scss';
.view-root {
height: 100%;
background: url('/src/assets/bg/bg.png') no-repeat;
background-size: cover;
.header {
position: none !important;
}
}
.panel-frame {
// border: 1px solid;
.panel-frame-title {
height: 4.5vh;
font-size: 0.15rem;
line-height: 5vh;
position: relative;
.panel-frame-title-text {
position: absolute;
height: 100%;
left: 0.15rem;
display: flex;
align-items: center;
top: 0;
font-size: 0.20rem;
}
// border-bottom: 1px solid;
.panel-frame-title-one {
background-image: url("/src/assets/bg/module-bg2.png");
display: inline-block;
width: 78px;
height: 100%;
background-size: 100% 100%;
}
.panel-frame-title-two {
background-image: url("/src/assets/bg/module-bg1.png");
display: inline-block;
width: 78px;
height: 100%;
background-size: 100% 100%;
}
.panel-frame-title-three {
background-image: url("/src/assets/bg/module-bg3.png");
display: inline-block;
width: 78px;
height: 100%;
background-size: 100% 100%;
}
.panel-frame-title-four {
background-image: url("/src/assets/bg/module-bg4.png");
display: inline-block;
width: 78px;
height: 100%;
background-size: 100% 100%;
}
.panel-frame-title-five {
background-image: url("/src/assets/bg/module-bg5.png");
display: inline-block;
width: 78px;
height: 100%;
background-size: 100% 100%;
}
}
.panel-frame-content {
height: calc(100% - 4.5vh);
padding: 0.7vw;
background-image: url("/src/assets/bg/module-bg6.png");
background-size: 100% 100%;
position: relative;
left: -1px;
}
}
/**
* 樱桃红
*/
$parent: cherry;
//********************************************
// 顶部head区
//********************************************
$head-bg-color: rgba(210, 46, 46, 1);
$head-color: white;
// 顶部所有边框颜色
$head-border-color: transparent;
// 顶部菜单边框颜色
$head-menu-border-color: transparent;
// 顶部菜单鼠标移动和点击后背景色
$head-menu-background: #b41616;
// 顶部菜单字体图标颜色
$head-menu-icon-color: #ff661c;
// 顶部搜索框边框颜色:
$head-search-border-color: transparent;
// 顶部搜索框背景色颜色:
$head-search-background: rgba(255, 255, 255, 0.2);
// 顶部搜索框图标颜色:
$head-search-icon-color: white;
//logo
//一级菜单
$nav-text-color: white;
$nav-active-bottom-color: #8ac249;
//********************************************
// 左侧应用、收藏、卡片区与右侧周期任务、消息区
//********************************************
$sider-bg-open-color: rgba(210, 46, 46, 1);
$sider-bg-close-color: rgba(210, 46, 46, 0.7);
$sider-text-color: white;
//我的应用区
//我的收藏
//我的卡片
//周期任务
//消息区
//********************************************
// 系统主内容区
//********************************************
$main-content-bg-color: #f5f5f5;
$main-content-page-color: white;
// 首页
$desk-color: rgba(210, 46, 46, 0.7);
@import "./view/index.scss";
/**
* 默认主题
*/
$parent: default;
//********************************************
// 顶部head区
//********************************************
$head-bg-color: rgba(86, 41, 132, 1);
// 顶部字体颜色
$head-color: white;
// 顶部所有边框颜色
$head-border-color: transparent;
// 顶部菜单边框颜色
$head-menu-border-color: transparent;
// 顶部菜单鼠标移动和点击后背景色
$head-menu-background: #431d6a;
// 顶部菜单字体图标颜色
$head-menu-icon-color: #ff661c;
// 顶部搜索框边框颜色:
$head-search-border-color: transparent;
// 顶部搜索框背景色颜色:
$head-search-background: rgba(255, 255, 255, 0.2);
// 顶部搜索框图标颜色:
$head-search-icon-color: white;
//logo
//一级菜单
$nav-text-color: white;
$nav-active-bottom-color: #8ac249;
//********************************************
// 左侧应用、收藏、卡片区与右侧周期任务、消息区
//********************************************
$sider-bg-open-color: rgba(86, 41, 132, 1);
$sider-bg-close-color: rgba(86, 41, 132, 0.7);
$sider-text-color: white;
//我的应用区
//我的收藏
//我的卡片
//周期任务
//消息区
//********************************************
// 系统主内容区
//********************************************
$main-content-bg-color: #f5f5f5;
$main-content-page-color: white;
// 首页
$desk-color: rgba(86, 41, 132, 0.7);
@import "./view/index.scss";
/**
* 樱桃红
*/
$parent: dispatch;
//********************************************
// 顶部head区
//********************************************
// 顶部背景色
$head-bg-color: linear-gradient(180deg, white 0%, rgba(242, 242, 242, 1) 0%, rgba(228, 228, 228, 1) 100%, white 100%);
// 顶部字体颜色
$head-color: black;
// 顶部所有边框颜色
$head-border-color: #a5a5a5;
// 顶部菜单边框颜色
$head-menu-border-color: #a5a5a5;
// 顶部菜单鼠标移动和点击后背景色
$head-menu-background: linear-gradient(180deg, rgba(215, 215, 215, 1) 0%, rgba(215, 215, 215, 1) 0%, rgba(188, 188, 188, 1) 100%, rgba(188, 188, 188, 1) 100%);
// 顶部菜单字体图标颜色
$head-menu-icon-color: #ff661c;
// 顶部搜索框边框颜色:
$head-search-border-color: #898989;
// 顶部搜索框背景色颜色:
$head-search-background: linear-gradient(180deg, #f3f3f3 0%, #f3f3f3 0%, #fefefe 100%, #fefefe 100%);
// 顶部搜索框图标颜色:
$head-search-icon-color: #31a7db;
//一级菜单
$nav-text-color: white;
$nav-active-bottom-color: #8ac249;
//********************************************
// 左侧应用、收藏、卡片区与右侧周期任务、消息区
//********************************************
$sider-bg-open-color: #747474;
$sider-bg-close-color: #747474;
$sider-text-color: white;
//我的应用区
//我的收藏
//我的卡片
//周期任务
//消息区
//********************************************
// 系统主内容区
//********************************************
$main-content-bg-color: whitesmoke;
$main-content-page-color: white;
// 首页
$desk-color: rgba(0, 0, 0, 0.3);
@import "./view/index.scss";
/**
* 香槟金主题
*/
$parent: default;
//********************************************
// 顶部head区
//********************************************
$head-bg-color: rgba(187, 130, 53, 1);
$head-color: white;
// 顶部所有边框颜色
$head-border-color: transparent;
// 顶部菜单边框颜色
$head-menu-border-color: transparent;
// 顶部菜单鼠标移动和点击后背景色
$head-menu-background: #966625;
// 顶部菜单字体图标颜色
$head-menu-icon-color: #ff661c;
// 顶部搜索框边框颜色:
$head-search-border-color: transparent;
// 顶部搜索框背景色颜色:
$head-search-background: rgba(255, 255, 255, 0.2);
// 顶部搜索框图标颜色:
$head-search-icon-color: white;
//logo
//一级菜单
$nav-text-color: white;
$nav-active-bottom-color: #8ac249;
//********************************************
// 左侧应用、收藏、卡片区与右侧周期任务、消息区
//********************************************
$sider-bg-open-color: rgba(187, 130, 53, 1);
$sider-bg-close-color: rgba(187, 130, 53, 0.7);
$sider-text-color: white;
//我的应用区
//我的收藏
//我的卡片
//周期任务
//消息区
//********************************************
// 系统主内容区
//********************************************
$main-content-bg-color: #f5f5f5;
$main-content-page-color: white;
// 首页
$desk-color: rgba(187, 130, 53, 0.7);
@import "./view/index.scss";
/**
* 靛蓝主题
*/
$parent: indigo;
//********************************************
// 顶部head区
//********************************************
$head-bg-color: rgba(63, 81, 181, 1);
$head-color: white;
// 顶部所有边框颜色
$head-border-color: transparent;
// 顶部菜单边框颜色
$head-menu-border-color: transparent;
// 顶部菜单鼠标移动和点击后背景色
$head-menu-background: #253385;
// 顶部菜单字体图标颜色
$head-menu-icon-color: #ff661c;
// 顶部搜索框边框颜色:
$head-search-border-color: transparent;
// 顶部搜索框背景色颜色:
$head-search-background: rgba(255, 255, 255, 0.2);
// 顶部搜索框图标颜色:
$head-search-icon-color: white;
//logo
//一级菜单
$nav-text-color: white;
$nav-active-bottom-color: #8ac249;
//********************************************
// 左侧应用、收藏、卡片区与右侧周期任务、消息区
//********************************************
$sider-bg-open-color: rgba(63, 81, 181, 1);
$sider-bg-close-color: rgba(63, 81, 181, 0.7);
$sider-text-color: white;
//我的应用区
//我的收藏
//我的卡片
//周期任务
//消息区
//********************************************
// 系统主内容区
//********************************************
$main-content-bg-color: #f5f5f5;
$main-content-page-color: white;
// 首页
$desk-color: rgba(63, 81, 181, 0.7);
@import "./view/index.scss";
/**
* 绛紫主题
*/
$parent: magenta;
//********************************************
// 顶部head区
//********************************************
$head-bg-color: rgba(122, 30, 161, 1);
$head-color: white;
// 顶部所有边框颜色
$head-border-color: transparent;
// 顶部菜单边框颜色
$head-menu-border-color: transparent;
// 顶部菜单鼠标移动和点击后背景色
$head-menu-background: #69158d;
// 顶部菜单字体图标颜色
$head-menu-icon-color: #ff661c;
// 顶部搜索框边框颜色:
$head-search-border-color: transparent;
// 顶部搜索框背景色颜色:
$head-search-background: rgba(255, 255, 255, 0.2);
// 顶部搜索框图标颜色:
$head-search-icon-color: white;
//logo
//一级菜单
$nav-text-color: white;
$nav-active-bottom-color: #8ac249;
//********************************************
// 左侧应用、收藏、卡片区与右侧周期任务、消息区
//********************************************
$sider-bg-open-color: rgba(122, 30, 161, 1);
$sider-bg-close-color: rgba(122, 30, 161, 0.7);
$sider-text-color: white;
//我的应用区
//我的收藏
//我的卡片
//周期任务
//消息区
//********************************************
// 系统主内容区
//********************************************
$main-content-bg-color: #f5f5f5;
$main-content-page-color: white;
// 首页
$desk-color: rgba(122, 30, 161, 0.7);
@import "./view/index.scss";
/**
* 千禧绿主题
*/
$parent: millennium;
//********************************************
// 顶部head区
//********************************************
$head-bg-color: rgba(58, 126, 89, 1);
$head-color: white;
// 顶部所有边框颜色
$head-border-color: transparent;
// 顶部菜单边框颜色
$head-menu-border-color: transparent;
// 顶部菜单鼠标移动和点击后背景色
$head-menu-background: #1b5c39;
// 顶部菜单字体图标颜色
$head-menu-icon-color: #ff661c;
// 顶部搜索框边框颜色:
$head-search-border-color: transparent;
// 顶部搜索框背景色颜色:
$head-search-background: rgba(255, 255, 255, 0.2);
// 顶部搜索框图标颜色:
$head-search-icon-color: white;
//logo
//一级菜单
$nav-text-color: white;
$nav-active-bottom-color: #8ac249;
//********************************************
// 左侧应用、收藏、卡片区与右侧周期任务、消息区
//********************************************
$sider-bg-open-color: rgba(58, 126, 89, 1);
$sider-bg-close-color: rgba(58, 126, 89, 0.7);
$sider-text-color: white;
//我的应用区
//我的收藏
//我的卡片
//周期任务
//消息区
//********************************************
// 系统主内容区
//********************************************
$main-content-bg-color: #f5f5f5;
$main-content-page-color: white;
// 首页
$desk-color: rgba(58, 126, 89, 0.7);
@import "./view/index.scss";
/**
* 单一主题
*/
$parent: single;
//********************************************
// 顶部head区
//********************************************
$head-bg-color: rgba(86, 41, 132, 1);
$head-color: white;
// 顶部所有边框颜色
$head-border-color: transparent;
// 顶部菜单边框颜色
$head-menu-border-color: transparent;
// 顶部菜单鼠标移动和点击后背景色
$head-menu-background: #431d6a;
// 顶部菜单字体图标颜色
$head-menu-icon-color: #ff661c;
// 顶部搜索框边框颜色:
$head-search-border-color: transparent;
// 顶部搜索框背景色颜色:
$head-search-background: rgba(255, 255, 255, 0.2);
// 顶部搜索框图标颜色:
$head-search-icon-color: white;
//logo
//一级菜单
$nav-text-color: white;
$nav-active-bottom-color: #8ac249;
//********************************************
// 左侧应用、收藏、卡片区与右侧周期任务、消息区
//********************************************
$sider-bg-open-color: rgba(86, 41, 132, 1);
$sider-bg-close-color: rgba(86, 41, 132, 0.7);
$sider-text-color: white;
//我的应用区
//我的收藏
//我的卡片
//周期任务
//消息区
//********************************************
// 系统主内容区
//********************************************
$main-content-bg-color: #f5f5f5;
$main-content-page-color: white;
// 首页
$desk-color: rgba(86, 41, 132, 0.7);
@import "./view/index.scss";
/**
* 星空主题
*/
$parent: solor;
//********************************************
// 顶部head区
//********************************************
$head-bg-color: rgba(86, 41, 132, 1);
$head-color: white;
// 顶部所有边框颜色
$head-border-color: transparent;
// 顶部菜单边框颜色
$head-menu-border-color: transparent;
// 顶部菜单鼠标移动和点击后背景色
$head-menu-background: #431d6a;
// 顶部菜单字体图标颜色
$head-menu-icon-color: #ff661c;
// 顶部搜索框边框颜色:
$head-search-border-color: transparent;
// 顶部搜索框背景色颜色:
$head-search-background: rgba(255, 255, 255, 0.2);
// 顶部搜索框图标颜色:
$head-search-icon-color: white;
//logo
//一级菜单
$nav-text-color: white;
$nav-active-bottom-color: #8ac249;
//********************************************
// 左侧应用、收藏、卡片区与右侧周期任务、消息区
//********************************************
$sider-bg-open-color: rgba(86, 41, 132, 1);
$sider-bg-close-color: rgba(86, 41, 132, 0.7);
$sider-text-color: white;
//我的应用区
//我的收藏
//我的卡片
//周期任务
//消息区
//********************************************
// 系统主内容区
//********************************************
$main-content-bg-color: #f5f5f5;
$main-content-page-color: white;
// 首页
$desk-color: rgba(86, 41, 132, 0.7);
@import "./view/index.scss";
/**
* 水鸭绿主题
*/
$parent: teal;
//********************************************
// 顶部head区
//********************************************
$head-bg-color: rgba(0, 149, 135, 1);
$head-color: white;
// 顶部所有边框颜色
$head-border-color: transparent;
// 顶部菜单边框颜色
$head-menu-border-color: transparent;
// 顶部菜单鼠标移动和点击后背景色
$head-menu-background: #156e66;
// 顶部菜单字体图标颜色
$head-menu-icon-color: #ff661c;
// 顶部搜索框边框颜色:
$head-search-border-color: transparent;
// 顶部搜索框背景色颜色:
$head-search-background: rgba(255, 255, 255, 0.2);
// 顶部搜索框图标颜色:
$head-search-icon-color: white;
//logo
//一级菜单
$nav-text-color: white;
$nav-active-bottom-color: #8ac249;
//********************************************
// 左侧应用、收藏、卡片区与右侧周期任务、消息区
//********************************************
$sider-bg-open-color: rgba(0, 149, 135, 1);
$sider-bg-close-color: rgba(0, 149, 135, 0.7);
$sider-text-color: white;
//我的应用区
//我的收藏
//我的卡片
//周期任务
//消息区
//********************************************
// 系统主内容区
//********************************************
$main-content-bg-color: #f5f5f5;
$main-content-page-color: white;
// 首页
$desk-color: rgba(0, 149, 135, 0.7);
@import "./view/index.scss";
@import "./configCenter/objectLibrary.scss";
.home-content {
.center-tab-item {
background-color: $desk-color;
}
.center-tab {
background: $desk-color;
}
.card-frame {
background-color: $desk-color;
.card-header {
background: $desk-color;
}
}
}
.header {
border-color: $head-border-color;
.header-row {
.sys-extend {
border-left: 1px solid $head-menu-border-color;
.amos-nav-item {
border-right: 1px solid $head-menu-border-color;
&.amos-nav-item-active {
// border-bottom: 1px solid $head-menu-border-color;
background: $head-menu-background;
}
a {
color: $head-color;
}
}
}
.header-search {
border-left: 1px solid $head-menu-border-color;
.tip-search {
color: $head-color;
background-color: $head-search-background;
border: 1px solid $head-search-border-color;
i {
color: $head-search-icon-color;
}
}
}
.sys-tools {
border-left: 1px solid $head-menu-border-color;
.ui-menu {
.ui-menu-item {
color: $head-color;
border-right: 1px solid $head-menu-border-color;
&.amos-nav-item-active {
// border-bottom: 1px solid $head-menu-border-color;
}
&:hover {
color: $head-color;
background: $head-menu-background;
}
}
}
&.sys-tools-min {
.ui-menu {
&.horizontal {
.ui-menu-item {
border-right: 1px solid $head-menu-border-color;
}
}
}
}
}
}
}
@import "./main.scss";
@import "./deskCenter.scss";
@import "./header.scss";
.header {
color: $head-color;
background: $head-bg-color;
box-shadow: 0 2px 8px rgba(47, 53, 87, 0.2);
}
.desktop {
.box-min {
.box-min-item {
color: $sider-text-color;
background-color: $sider-bg-close-color;
border-bottom: 1px solid rgba(213, 208, 215, 0.2);
box-shadow: 0 2px 8px rgba(43, 22, 54, 0.2);
&:hover {
background-color: $sider-bg-open-color;
}
}
}
.app-sider {
background: $sider-bg-open-color;
.ant-tabs {
color: white;
}
}
}
.main-view {
background: $main-content-bg-color;
> .main-content {
background: $main-content-page-color;
}
}
@import "./fixed/index.scss";
@import "./common/index.scss";
@import "./biz/index.scss";
import { Store } from 'amos-tool';
const lsTool = Store.lsTool;
export const cacheConsts = {
_days: 1,
CURRENT_REGION: 'CURRENT_REGION'
};
export const setRegion = (data) => {
lsTool.write(cacheConsts.CURRENT_REGION, JSON.stringify(data));
};
export const getRegion = () => {
return lsTool.read(cacheConsts.CURRENT_REGION);
};
import Events from 'ray-events';
export default new Events();
import { utils } from 'amos-tool';
import panelUid from './panelUid';
const property = {
firstCol: 0,
secondCol: 3.5,
width: 3.5,
height: 7,
minW: 3.5,
maxW: 3.5,
minH: 7,
maxH: 7
};
export const dataFalcor = (agent, datas) => {
if (!utils.isArray(datas)){
datas = [].concat(datas);
}
return datas.map(d => d[agent]);
};
export default function(options = {}){
const { existPanelSize = 0, cardOptions = {}, panelUID } = options;
const xCol = existPanelSize % 2 === 0 ? property.firstCol : property.secondCol;
const uid = panelUID || panelUid();
const panelDataGrid = {
i: uid,
x: xCol,
y: Infinity, // puts it at the bottom
w: property.width, // 宽度初始默认为4
h: property.height, // 高度初始为7
minW: property.minW,
minH: property.minH,
// maxW: Infinity,
// maxH: Infinity,
maxW: property.maxW,
maxH: property.maxH,
draggableHandle: '.triger-panel-darghandle',
static: false, // If true, equal to `isDraggable: false, isResizable: false`.
isResizable: false,
isDraggable: true
};
return {
uid,
panelDataGrid,
cardOptions
};
}
import { UUID } from 'amos-tool';
const defaultLen = 16;
export default function(len = defaultLen){
return UUID.uuid(len);
}
export default function(data, delRequest){
window.setLoading && window.setLoading(false);
return new Promise((resolve, reject) => {
if (data) {
if (data.dataList || data.dataList === null){
resolve(data.dataList);
} else if (data.result || data.result === null){
resolve(data.result);
}else if (data == 'TypeError: Failed to fetch'){
reject(data);
}else{
resolve(data);
}
} else {
reject(data);
}
});
}
import * as _fetch from 'amos-processor/lib/fetch';
import * as utils from 'amos-processor/lib/utils';
import AmosEnum from 'amos-processor/lib/enum/AmosEnum';
/**
* gatherpermissionMenu,
* mergeMenu,
* sysConf,
* filterPermission,
* checkLevel1Permissions,
* checkHomePermissions,
* getSubSystemPermissions
*/
import * as permission from 'amos-processor/lib/config/permission';
export default{
..._fetch,
...utils,
AmosEnum,
...permission
};
import { UUID, Store, MD5, DES } from 'amos-tool';
const LEN = {
small: 16,
large: 32
};
/**
* 普通密码生成策略
* pwd + secretKey => base64 => pwd
* @param {string} password
* @return {object} { password, secretKey }
*/
export const normalPolicy = function(password = '') {
const secretKey = UUID.uuid(LEN.small);
password += secretKey;
const p = Store.encrypt(password);
return {
password: p,
secretKey
};
};
/**
* 普通密码生成策略
* @param {string} password 密码
* @param {string} secretKey 秘钥
* @return {object} { password, secretKey }
*/
export const advancePolicy = function(password = '', secretKey) {
secretKey || (secretKey = UUID.uuid(LEN.large));
password += secretKey;
const p = Store.encrypt(password);
return {
password: p,
secretKey
};
};
/**
* 采用MD5生成密码
* @param {string} password
* @param {string} secretKey
*/
export const useMd5Policy = function(password = '', secretKey) {
secretKey || (secretKey = UUID.uuid(LEN.large));
const md5pwd = MD5(password, secretKey);
return {
password: md5pwd,
secretKey
};
};
/**
* 采用MD5生成密码
* 1. password = md5(password);
* 2. password = Store.encrypt(password + secretKey);
*
* @param {string} password
* @param {string} secretKey
*/
export const useMd5Policy2 = function(password, secretKey) {
password || (password = '');
secretKey || (secretKey = UUID.uuid(LEN.large));
let md5pwd = MD5(password);
md5pwd += secretKey;
const p = Store.encrypt(md5pwd);
return {
password: p,
secretKey
};
};
/**
* 采用DES生成密码
* 1. password = DES.encode(password, secretKey);
*
* @param {string} password
* @param {string} secretKey
*/
export const useDESPolicy = function(password = '', secretKey) {
secretKey || (secretKey = UUID.uuid(LEN.large));
const desPpwd = DES.encode(password, secretKey);
return {
password: desPpwd,
secretKey
};
};
import amosRequest, { singleFetch } from 'amos-processor/lib/fetch/amosRequest';
import { utils } from 'amos-tool';
import formatUrl from 'amos-processor/lib/utils/urlFormat';
import { Store } from 'amos-tool';
import { message } from 'amos-framework';
import sysConsts from 'amos-processor/lib/config';
import payload from './payload';
const lsTool = Store.lsTool;
const defaultPageable = {
page: 0,
size: 10
};
const defaultHeaders = {
appKey: 'EMCA',
product: 'EMCA_WEB'
};
/**
* 删除全局变量requests中的地址
* @param {*} url
* @param {*} method
*/
const delRequest = (url, method) => {
if (window.requests && window.requests.length > 0) {
window.requests = window.requests.filter(e => e.url !== url && e.method !== method);
}
};
/**
* 构建分页
*/
const buildPageable = (url, pageable = defaultPageable) => {
let { page, size } = pageable;
return `${url}?page=${page}&size=${size}`;
};
/**
* 转换指定值为 JSON
* @param {array} dataList
* @param {string} key
*/
const convertDatalist = (dataList = [], key = 'content') => {
const newDL = dataList.map(d => {
if (!utils.isNil(d[key]) && utils.isString(d[key])) {
d[key] = JSON.parse(d[key]);
}
return d;
});
return newDL;
};
const getWithCookie = (url) => {
return commonGet(url, {
hasCookie: true
});
};
const commonGet = (url) => {
window.setLoading && window.setLoading(true);
return amosRequest(url, {
timeout: 10000000 , method: 'GET',
headers: compleHeaders(),
reject(error){
window.setLoading && window.setLoading(false);
delRequest(url, 'GET');
//message.danger(error.message || '请求失败,服务器错误!');
}
}).then(data => payload(data));
}
const commonPost = (url, data, params) => {
window.setLoading && window.setLoading(true);
return amosRequest(url, {
timeout: 10000000,
method: 'POST',
headers: compleHeaders(),
body: data,
reject(error){
delRequest(url, 'POST');
window.setLoading && window.setLoading(false);
//message.danger(error.message || '请求失败,服务器错误!');
}
}).then(data => payload(data));
}
const commonPut = (url, data, params) => {
window.setLoading && window.setLoading(true);
return amosRequest(url, {
timeout: 10000000,
method: 'PUT',
headers: compleHeaders(),
body: data,
reject(error){
delRequest(url, 'PUT');
window.setLoading && window.setLoading(false);
//message.danger(error.message || '请求失败,服务器错误!');
}
}).then(data => payload(data));
}
const commonDelete = (url, data, params) => {
window.setLoading && window.setLoading(true);
return amosRequest(url, {
timeout: 10000000 ,
method: 'DELETE',
headers: compleHeaders(),
body: data,
reject(error){
window.setLoading && window.setLoading(false);
//message.danger(error.message || '请求失败,服务器错误!');
}
}).then(data => payload(data));
}
const compleHeaders = () => {
return {
...defaultHeaders,
token: getToken()
};
};
export function getToken(){
return lsTool.read(sysConsts.token);
}
export function getUser(){
return lsTool.read(sysConsts.userId);
}
export function setToken(token){
return lsTool.write(sysConsts.token, token);
}
export function setUserId(userId){
return lsTool.write(sysConsts.userId, userId);
}
export { amosRequest, commonGet, getWithCookie, singleFetch, commonPost, commonPut, commonDelete, convertDatalist, buildPageable, formatUrl };
import {
currentUser
} from 'amos-security/lib/model/auth';
export {
currentUser
};
\ No newline at end of file
import React, { Component } from 'react';
import PropTypes from 'prop-types';
/**
* situation
*安全态势
* @class situation
* @extends {Component}
*/
class Situation extends Component {
constructor(props) {
super(props);
this.state = {
};
}
componentWillMount() {
}
componentDidMount() {
}
componentWillUnmount() {
}
render() {
return (
<div className="class-Situation">
安全态势
</div>
);
}
}
Situation.propTypes = {
};
export default Situation;
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { browserHistory } from 'amos-react-router';
import { sessionConsts } from '../../consts/storageConsts';
import { Store } from 'amos-tool';
import BizNav from './../../view/main/header/BizNav';
const lsTool = Store.lsTool;
/**
* main
*业务屏主屏
* @class MainView
* @extends {Component}
*/
class RootBizView extends Component {
constructor(props) {
super(props);
this.state = {
submenu: []
};
}
componentWillMount() {
}
componentDidMount() {
window.addEventListener('storage', this.onStorage);
this.initSubmenu();
}
componentWillUnmount() {
window.localStorage.removeItem('submenu');
window.localStorage.removeItem('sub');
window.removeEventListener('storage', this.onStorage);
}
initSubmenu(){
let systemMenu = JSON.parse(lsTool.read(sessionConsts.systemMenu));
if (systemMenu.length > 0) {
window.localStorage.setItem('submenu',JSON.stringify());
console.info(systemMenu[0].children);
if ( systemMenu[0].children && systemMenu[0].children.length > 0 ){
this.setState({ submenu: systemMenu[0].children });
this.setfirstpage(systemMenu[0].children);
}
}
}
onStorage = e => {
if (e.key === 'submenu') {
console.info('submenu'+e);
let menuItem = JSON.parse(e.newValue);
this.setState({ submenu: menuItem });
this.setfirstpage(menuItem);
}}
setfirstpage = data => {
browserHistory.push(data[0].path);
};
render() {
const { submenu } = this.state;
const { children } = this.props;
return (
<div className="biz-view-root">
<BizNav submenu={submenu} />
<div className="content-body">
{children}
</div>
</div>
);
}
}
RootBizView.propTypes = {
children: PropTypes.node
};
export default RootBizView;
import React, { Component } from 'react';
import PropTypes from 'prop-types';
/**
* Bills
*单据管理
* @class Bills
* @extends {Component}
*/
class Bills extends Component {
constructor(props) {
super(props);
this.state = {
};
}
componentWillMount() {
}
componentDidMount() {
}
componentWillUnmount() {
}
render() {
return (
<div className="class-bills">
单据管理
</div>
);
}
}
Bills.propTypes = {
};
export default Bills;
import { Component } from 'react';
import { browserHistory } from 'amos-react-router';
import { Store, LocationParam } from 'amos-tool';
import { AmosAlert } from 'amos-framework';
import { cacheConsts } from './../../../utils/cacheUtils';
const lsTool = Store.lsTool;
/**
* 自动登录,无界面
* BaseAutoLogin: props => `tip: string` `hideTip: boolean`
* @class AutoLogin
* @extends {Component}
*/
class AutoLogin extends Component {
componentWillMount() {
let token = LocationParam.getLocationParamByName('token');
if (token) {
lsTool.remove(cacheConsts.CURRENT_REGION);
// browserHistory.push('/region');
} else {
AmosAlert.error('警告', '无法打开该系统,请重新尝试!');
}
}
render() {
return null;
}
}
export default AutoLogin;
import React, { Component } from 'react';
class EmptyPage extends Component {
constructor(props) {
super(props);
}
render() {
let style = {
textAlign: 'center',
fontSize: '25px'
};
return <div style={style}>该页面暂未开发</div>;
}
}
export default EmptyPage;
// import React, { Component } from 'react';
// import PropTypes from 'prop-types';
// import { browserHistory } from 'amos-react-router';
// import { Select, Form, Button } from 'amos-framework';
// import * as endConf from 'amos-processor/lib/config/endconf';
// import { setRegion } from './../../utils/cacheUtils';
// import { tellRegionSelectAction } from './../../services/navApi';
// import { getCurrentUser,getDictionaryList } from './../../services/securityService';
// import { fetchRegionSelectAction } from './../../services/checkInfoService';
// import { tirggerTransTopic } from './../3dview/dataProcessor';
// import { regionSelectAction } from './../../services/bizService';
// import { CONSTS } from '../../consts/storageConsts';
// import imgStatic from './../../consts/imgStatic';
// import { Store, utils } from 'amos-tool';
// import SysConsts from 'amos-processor/lib/config/consts';
// const lsTool = Store.lsTool;
// const AmosConfig = endConf.AmosConfig;
// const isAutoOpen = AmosConfig.sysConf.isAutoOpenBussiness;
// const FormItem = Form.Item;
// const Option = Select.Option;
// /**
// * 厂区选择
// *
// * @class RegionSelect
// * @extends {Component}
// */
// class RegionSelect extends Component {
// constructor(props) {
// super(props);
// this.state = {
// userInfo: {},
// reginParams: {},
// dictionaryList:[]
// };
// }
// componentDidMount() {
// console.log('.......');
// this.getCurrentUser();
// this.getDicCode('BANK_ORG');
// }
// /**
// * 查询组织机构字典
// */
// getDicCode = (dicCode) => {
// getDictionaryList(dicCode).then(data =>{
// this.setState({
// dictionaryList:data
// })
// })
// }
// onClick = () => {
// const { reginParams,dictionaryList } = this.state;
// //获取当前登陆部门
// lsTool.write('dictionaryList', JSON.stringify(dictionaryList));
// lsTool.write("department", JSON.stringify(reginParams.department))
// lsTool.remove('selectedRole');
// regionSelectAction(reginParams).then(
// data => {
// const { state } = this.props.location;
// const { sequenceNbr } = reginParams.role || {};
// const { companyName } = reginParams.company || {};
// const companySequenceNbr = reginParams.sequenceNbr || {};
// lsTool.write('selectedRole', sequenceNbr);
// lsTool.write('selectedCompany', companyName);
// lsTool.write('companySequenceNbr', companySequenceNbr);
// if (state) {
// browserHistory.push('/main/3dview');
// // browserHistory.push('/biz/preControl');
// tirggerTransTopic(CONSTS.region_change, { refresh: { refresh: true } });
// } else {
// //1.打开3d屏
// browserHistory.push('/main/3dview');
// //2.通过配置,确定是否打开业务屏
// // if (isAutoOpen){
// // // window.open('/biz/assessment');
// // // window.open('/biz/preControl');
// // }
// }
// }
// );
// }
// uniq = (array) => {
// if (array && array.length > 0) {
// array.sort();
// var temp = [array[0]];
// for (var i = 1; i < array.length; i++) {
// if (array[i].sequenceNbr !== temp[temp.length - 1].sequenceNbr) {
// temp.push(array[i]);
// }
// }
// return temp;
// } else {
// return [];
// }
// }
// // new
// onSelectChange = (key, value) => {
// const { companys = [], companyDepartments = {}, orgRoles = {} } = this.state.userInfo;
// const { reginParams } = this.state;
// let { departments = [], roles = [] } = this.state;
// if (key === 'company') {
// reginParams.company = companys.find(item => item.sequenceNbr === value);
// departments = companyDepartments[value];
// roles = orgRoles[value];
// }
// if (key === 'department') {
// reginParams.department = departments.find(item => item &&item.sequenceNbr === value);
// roles = orgRoles[value];
// }
// if (key === 'role') {
// reginParams.role = roles.find(item => item.sequenceNbr === value);
// }
// this.setState({ reginParams, departments, roles });
// }
// getCurrentUser = () => {
// getCurrentUser().then(data => {
// const { reginParams } = this.state;
// const { companys = [], companyDepartments = {}, orgRoles = {} } = data;
// lsTool.write(SysConsts.userId, data.userId);
// lsTool.write(SysConsts.company, JSON.stringify(companys));
// lsTool.write(SysConsts.userName, data.userName);
// lsTool.write(SysConsts.nickName, data.realName);
// if (companys.length === 1) {
// let company = companys[0];
// let departments = companyDepartments[company.sequenceNbr] || [];
// if (departments.length > 1) {
// departments = [departments[0]];
// }
// if (departments.length === 1 && ((orgRoles[company.sequenceNbr] || orgRoles[departments[0].sequenceNbr]) || []).length === 1) {
// reginParams.company = company;
// reginParams.department = departments[0];
// reginParams.role = orgRoles[company.sequenceNbr] ? orgRoles[company.sequenceNbr][0] : orgRoles[departments[0].sequenceNbr] ? orgRoles[departments[0].sequenceNbr][0] : {};
// this.setState({ reginParams }, () => this.onClick());
// } else if (departments.length === 0 && (orgRoles[company.sequenceNbr] || []).length === 1) {
// reginParams.company = company;
// reginParams.department = {};
// reginParams.role = orgRoles[company.sequenceNbr][0];
// this.setState({ reginParams }, () => this.onClick());
// } else {
// this.setState({ userInfo: data });
// }
// } else {
// this.setState({ userInfo: data });
// }
// });
// }
// renderItem = (item) => {
// const { userId, companys = [] } = item;
// let { departments = [], roles = [] } = this.state;
// let newDepartments = departments.filter(d => d != null && void 0 !== d);
// const formItemLayout = {
// wrapperCol: {
// xs: { span: 24 },
// sm: { span: 24 },
// className: 'colspan'
// }
// };
// return (
// <div key={userId} className="region-item">
// <Form className="region-form">
// <FormItem {...formItemLayout}>
// <Select
// className="form-item"
// data={this.uniq(companys)}
// renderOption={item => <Option value={item.sequenceNbr}>{item.companyName}</Option>}
// defaultOption={<Option>请选择公司</Option>}
// // defaultValue={companys.length === 1 ? companys[0] : ''}
// onChange={(value, item) => this.onSelectChange('company', value)}
// />
// </FormItem>
// <FormItem {...formItemLayout}>
// <Select
// className="form-item"
// data={this.uniq(newDepartments)}
// renderOption={item => <Option value={item.sequenceNbr}>{item.departmentName}</Option>}
// defaultOption={<Option>请选择部门</Option>}
// // defaultValue={newDepartments.length === 1 ? newDepartments[0] : ''}
// onChange={(value, item) => this.onSelectChange('department', value)}
// />
// </FormItem>
// <FormItem {...formItemLayout}>
// <Select
// className="form-item"
// data={roles}
// renderOption={item => <Option value={item.sequenceNbr}>{item.roleName}</Option>}
// defaultOption={<Option>请选择角色</Option>}
// // defaultValue={roles.length === 1 ? roles[0] : ''}
// onChange={(value, item) => this.onSelectChange('role', value)}
// />
// </FormItem>
// <FormItem {...formItemLayout}>
// <img src="" alt='' />
// </FormItem>
// <FormItem>
// <Button className="regoin-button" onClick={this.onClick}>确定</Button>
// </FormItem>
// </Form>
// </div>
// );
// }
// render() {
// const { userInfo } = this.state;
// return Object.keys(userInfo).length > 0 ? (
// <div className="region-select">
// {
// this.renderItem(userInfo)
// }
// </div>
// ) : null;
// }
// }
// RegionSelect.propTypes = {
// location: PropTypes.object
// };
// export default RegionSelect;
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import MiddleContent from './middle';
// import MiddleContent from './Test';
class Desktop extends Component {
constructor(props) {
super(props);
this.state = {
};
}
render() {
return (
<div className="home-content main-content">
<MiddleContent />
</div>
);
}
}
Desktop.propTypes = {
};
export default Desktop;
import React from 'react';
import PropTypes from 'prop-types';
import { AddFrame } from 'amos-framework';
const AddCardPanel = props => {
return (<AddFrame />);
};
AddCardPanel.propTypes = {
};
export default AddCardPanel;
// @author ilex.h
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { Log } from 'amos-tool';
import { Form } from 'amos-antd';
import { Button, Input } from 'amos-framework';
const createForm = Form.create();
const FormItem = Form.Item;
/**
* 新增桌面 form
*
* @class CreateDesk
* @extends {Component}
*/
class CreateDesk extends Component {
static propTypes = {
form: PropTypes.any,
onSaveNewDesk: PropTypes.func,
onCancel: PropTypes.func
};
constructor(props, context) {
super(props, context);
}
handleSubmit = (e) => {
e.preventDefault();
this.props.form.validateFields((errors, values) => {
if (errors) {
Log.error('Errors in form!!!');
return;
}
this.props.form.resetFields();
this.props.onSaveNewDesk(values.deskName);
});
}
render() {
const { onCancel, form } = this.props;
const { getFieldProps } = form;
const deskNameProps = getFieldProps('deskName', {
initialValue: '',
rules: [
{ required: true, message: '请输入桌面名称' }
]
});
return (
<Form inline>
<FormItem label="桌面名称:">
<Input className='login-input' {...deskNameProps} style={{ width: 200 }} />
</FormItem>
<div className="form-footer">
<Button key="back" onClick={onCancel}>取消</Button>
<Button key="submit" type="primary" onClick={this.handleSubmit}>确定</Button>
</div>
</Form>
);
}
}
export default createForm(CreateDesk);
import RayDragable from 'ray-dragable';
const defaultOptions = {
ghostClass: 'amos-dragable-ghost',
chosenClass: 'amos-dragable-chosen',
dragClass: 'amos-dragable-drager',
animation: 300
};
// @author ilex.h
class DragableDecorator {
/**
*
* @param {any} componentBackingInstance
* @param {object} options
* {
* handle: '.class' // Restricts dragable start click/touch to the specified element
* }
* @static
*
* @memberOf DragableDecorator
*/
static dragableContainersDecorator = (componentBackingInstance, options) => {
// check if backing instance not null
if (componentBackingInstance) {
const _opts = Object.assign({}, defaultOptions, options);
RayDragable.create(componentBackingInstance, _opts);
}
};
/**
* @param {any} componentBackingInstance
* @param {object} options
* {
* draggable: 'div', // Specifies which items inside the element should be dragable
* group: 'shared'
* };
*
* @static
*
* @memberOf DragableDecorator
*/
static dragableGroupDecorator = (componentBackingInstance, options) => {
// check if backing instance not null
if (componentBackingInstance) {
const _opts = Object.assign({}, defaultOptions, options);
RayDragable.create(componentBackingInstance, _opts);
}
}
}
export default DragableDecorator;
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { PubSub } from 'ray-eventpool';
import Icon from 'amos-icon';
import { CardFrame, CardItem } from 'amos-framework';
import { ON_CARDFRAME_REMOVE } from './../../../../consts/topicConsts';
class SortCardPanel extends Component {
static propTypes = {
cardOptions: PropTypes.object,
panelUID: PropTypes.string
};
static defaultProps = {
cardOptions: {},
removeCardFrame(){}
};
removeCardFrame = (panelUID) => {
PubSub.publish(ON_CARDFRAME_REMOVE, panelUID);
}
renderOperate = () => {
const { panelUID, cardOptions } = this.props;
let closable = cardOptions.closable;
closable = closable === undefined ? true : closable;
return (
<div>
{closable && <Icon icon="cross" onClick={() => this.removeCardFrame(panelUID)} />}
</div>
);
}
renderContent = () => {
const { cardOptions } = this.props;
const datas = cardOptions.data || [];
return datas.map(co =>{
const { key, ...rest } = co;
return (
<CardItem
key={key}
{...rest}
/>
);
});
}
render() {
const { cardOptions } = this.props;
const title = cardOptions.title;
const operate = this.renderOperate();
const content = this.renderContent();
return (
<CardFrame operate={operate} content={content} title={title} />
);
}
}
export default SortCardPanel;
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import Icon from 'amos-icon';
import Animate from 'ray-animate';
import DragConnect from './DragConnect';
import SortCardPanel from './SortCardPanel';
const dragableContainersDecorator = DragConnect.dragableContainersDecorator;
const dragableGroupDecorator = DragConnect.dragableGroupDecorator;
class SortGraph extends Component {
static propTypes = {
cardPanelDataArr: PropTypes.array,
onCardAdd: PropTypes.func
};
componentDidMount() {
const sc = this.sortContainer;
this.containersDecorator(sc);
// this.groupDecorator(sc);
}
containersDecorator = (htmlEle) => {
dragableContainersDecorator(htmlEle, {
handle: `.card-header`,
filter: '.drag-card-add'
});
}
groupDecorator = (htmlEle) => {
dragableGroupDecorator(htmlEle, {
draggable: 'li', // Specifies which items inside the element should be dragable
group: 'cardlists' // To drag elements from one list into another, you should set same `group` value.
});
}
executeAddCard = () => {
const { onCardAdd } = this.props;
onCardAdd && onCardAdd();
}
render() {
const { cardPanelDataArr } = this.props;
return (
<div className="scene-graph-container">
<ul className="layout-wrapper" ref={node => this.sortContainer = node}>
{cardPanelDataArr.map((item, index) => {
const { uid, cardOptions } = item;
if (cardOptions.isAddFrame) {
return (
<li key={uid} className="card-item-layout drag-card-add">
<div className="card-frame" onClick={this.executeAddCard}>
<div className="align-center">
<Icon icon="add2" size="5x" />
</div>
</div>
</li>
);
} else {
return (
<Animate
key={`sortGraph-${uid}`}
transitionName="fade"
showProp="data-index"
component=""
>
<li key={uid} className="card-item-layout" data-index={index}>
<SortCardPanel
panelUID={uid}
cardOptions={cardOptions}
/>
</li>
</Animate>
);
}
})}
</ul>
</div>
);
}
}
export default SortGraph;
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { PubSub } from 'ray-eventpool';
import classnames from 'classnames';
import Icon from 'amos-icon';
import { trim } from 'amos-tool';
import { Scrollbars, Modal, message } from 'amos-framework';
import title from '_MOCK/title';
import { recommends } from '_MOCK/apps';
import { amosRequest } from 'amos-processor';
import { secExtUrl as Url } from 'CONSTS/urlConsts';
import { ON_CARDFRAME_ADD, ON_CARDFRAME_REMOVE } from 'CONSTS/topicConsts';
import panelUid from './../../../../utils/panelUid';
import CreateDesk from './CreateDesk';
import SortGraph from './SortGraph';
const maxDesk = 5;
/**
* middle
*
* @class MiddleContent
* @extends {Component}
*/
class MiddleContent extends Component {
static propTypes = {
personCenters: PropTypes.array,
style: PropTypes.object
};
constructor(props) {
super(props);
this.state = {
activeDesk: 'defaultDesk',
visible: false,
personCenters: [{ key: 'defaultDesk', text: '默认桌面' }],
cardPanelDataArr: []
};
}
componentWillMount() {
// this.loadDefaultDesk(1);
this.loadAllDesk(()=>{
let { personCenters = [] } = this.state;
console.log('personCenters', personCenters);
let activeDesk = (personCenters[0] || {}).key;
this.setState({ activeDesk });
setTimeout(()=>{this.loadDefaultDesk(activeDesk);}, 100);
});
}
componentDidMount() {
this.pubsub_panelAdd = PubSub.subscribe(ON_CARDFRAME_ADD, (topic, chartType) => {
this.onTrigerPanelAdd(chartType);
});
this.pubsub_panelRemove = PubSub.subscribe(ON_CARDFRAME_REMOVE, (topic, panelUID) => {
this.onTrigerPanelRemove(panelUID);
});
}
componentDidUpdate(prevProps, prevState) {
let deskItemInput = document.getElementById('deskItemInput');
deskItemInput && deskItemInput.focus();
}
/**
* 当组件卸载(unmounted)的时候,在 componentWillUnmount 事件中取消事件的订阅
*/
componentWillUnmount() {
PubSub.unsubscribe(this.pubsub_panelAdd);
PubSub.unsubscribe(this.pubsub_panelRemove);
}
onItemClick = (e, deskId) => {
this.setState({
activeDesk: deskId
});
this.loadDefaultDesk(deskId);
}
onItemRemoveClick = (e, deskId) => {
let { personCenters } = this.state;
let defaultDeskId = (personCenters[0] || {}).key;
if (deskId === defaultDeskId) {
message.danger('默认桌面不能删除!');
} else {
amosRequest(`${Url.deskRemoveUrl}/${deskId}`,{ method: 'DELETE' }).then(
(data) => {
this.loadAllDesk(()=>{
this.setState({ activeDesk: defaultDeskId });
this.loadDefaultDesk(defaultDeskId);
});
}
);
}
}
onItemDoubleClick = (e, deskKey) => {
let personCenters = this.state.personCenters.map((pc, index) => {
if (pc.key === deskKey) {
if (index === 0){
message.danger('默认桌面不能编辑!');
} else {
pc.status = 'edit';
}
}
return pc;
});
this.setState({ personCenters });
}
onItemBlur = (e, desk) => {
// e.stopPropagation();
// let personCenters = this.state.personCenters.map(pc => {
// if (pc.key === desk.key) {
// pc.status = undefined;
// pc.text = e.target.value;
// }
// return pc;
// });
// amosRequest(Url.deskEditUrl,
// {
// method: 'POST',
// body: { id: desk.key, name: trim(e.target.value) }
// }
// ).then(
// (data) => {
// this.loadAllDesk();
// }
// );
// this.setState({ personCenters });
}
onSaveNewDesk = (deskname) => {
// const personCenters = this.state.personCenters;
// personCenters.push({
// key: UUID.timeUUID('amos-desk'),
// text: deskname
// });
// this.setState({
// personCenters,
// visible: false
// });
// amosRequest(Url.deskAddUrl,
// {
// method: 'PUT',
// body: {
// name: deskname
// }
// }
// ).then(
// (data) => {
// this.loadAllDesk();
// this.setState({ visible: false });
// }
// );
}
onCreateCancel = () => {
this.setState({
visible: false
});
}
onTrigerPanelAdd = () => {
const { cardPanelDataArr } = this.state;
const opts = { uid: panelUid(), cardOptions: {
title: title(),
data: recommends().dataList
} };
// cardPanelDataArr.push(opts);
cardPanelDataArr.splice(cardPanelDataArr.length - 1, 0, opts);
this.setState({
cardPanelDataArr
});
}
/**
* 移除一个cardPanel
*/
onTrigerPanelRemove = (panelUID) => {
const { cardPanelDataArr: newDatas } = this.state;
const result = newDatas.filter(nd => nd.uid !== panelUID);
this.setState({ cardPanelDataArr: result });
}
/**
* 加载所有桌面
*/
loadAllDesk = (callBack) => {
callBack = callBack || function(){};
// amosRequest(Url.deskListUrl,{ method: 'GET' }).then(
// (data) => {
// let deskList = data.dataList || [];
// deskList = deskList.map(e => {
// return { key: e.id, text: e.name };
// });
// this.setState({
// personCenters: deskList
// }, callBack);
// }
// );
}
/**
* 加载默认桌面
*/
loadDefaultDesk = (deskId) => {
const { cardPanelDataArr } = this.state;
// const opts = { uid: panelUid(), cardOptions: {
// title: '推荐&最新应用',
// closable: false,
// data: recommends().dataList
// } };
const add = { uid: 'panel-add', cardOptions: {
isAddFrame: true
} };
this.setState({ cardPanelDataArr: [add] });
// amosRequest(`${Url.deskPanelDetailsUrl}/${deskId}`,{ method: 'GET' }).then(
// (data) => {
// let deskList = data.dataList || [];
// let list = deskList.map(e => {
// let obj = {};
// obj.uid = e.id;
// obj.cardOptions = {
// title: e.name,
// data: e.appinfos.map(app => {
// let appItem = {};
// appItem.key = app.id;
// appItem.title = app.appName;
// appItem.funcIcon = app.image || '/src/assets/funcicon/search.png';
// return appItem;
// })
// };
// return obj;
// });
// list.push(add);
// this.setState({
// cardPanelDataArr: list
// });
// }
// );
}
addDesktop = (event) => {
// event.stopPropagation();
const { personCenters } = this.state;
if (personCenters.length === maxDesk) {
message.info('最多添加5个自定义桌面!');
} else {
this.setState({
visible: true
});
}
}
setting = () => {
}
renderHeaderDesk = () => {
const { activeDesk, personCenters } = this.state;
return (
personCenters.map((pc, index) => {
const isActive = activeDesk === pc.key;
const cls = classnames({
'desktop-tab': true,
'center-tab-item': true,
'active-tab': isActive
});
let itemProps = pc.status !== 'edit' ? { onDoubleClick: (e) => this.onItemDoubleClick(e, pc.key) } : {};
return (
<div className={cls} key={pc.key} title={pc.text} {...itemProps} onClick={(e) => this.onItemClick(e, pc.key)}>
{ pc.status === 'edit' ? <input id="deskItemInput" type="text" onBlur={(e)=>this.onItemBlur(e, pc)} defaultValue={pc.text} /> : pc.text }
</div>
);
})
);
}
render() {
const { cardPanelDataArr, visible } = this.state;
const { style } = this.props;
return (
<div className="personal-center" style={style}>
<div className="center-header">
{this.renderHeaderDesk()}
<div className="center-tab center-tab-item" title="新增桌面" onClick={this.addDesktop}><Icon icon="add" /></div>
<div className="center-tab center-tab-item" title="设置" onClick={this.setting}><Icon icon="setting" /></div>
<Modal
header="新增桌面"
visible={visible}
noDefaultFooter
onCancel={this.onCreateCancel}
content={<CreateDesk onSaveNewDesk={this.onSaveNewDesk} onCancel={this.onCreateCancel} />}
/>
</div>
<div className="center-body amos-clearfix">
<Scrollbars>
<SortGraph
cardPanelDataArr={cardPanelDataArr}
onCardAdd={this.onTrigerPanelAdd}
/>
</Scrollbars>
</div>
</div>
);
}
}
export default MiddleContent;
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { PubSub } from 'ray-eventpool';
import Icon from 'amos-icon';
import { CardFrame, CardItem } from 'amos-framework';
import { ON_CARDFRAME_REMOVE } from './../../../../consts/topicConsts';
class CardPanel extends Component {
static propTypes = {
cardOptions: PropTypes.object,
panelUID: PropTypes.string,
removeCardFrame: PropTypes.func
};
static defaultProps = {
cardOptions: {},
removeCardFrame(){}
};
removeCardFrame = (panelUID) => {
PubSub.publish(ON_CARDFRAME_REMOVE, panelUID);
}
renderOperate = () => {
const { panelUID, cardOptions } = this.props;
let closable = cardOptions.closable;
closable = closable === undefined ? true : closable;
return (
<div>
{closable && <Icon icon="cross" onClick={() => this.removeCardFrame(panelUID)} />}
</div>
);
}
renderContent = () => {
const { cardOptions } = this.props;
const datas = cardOptions.data || [];
return datas.map(co =>{
const { key, ...rest } = co;
return (
<CardItem
key={key}
{...rest}
/>
);
});
}
render() {
const { cardOptions } = this.props;
const title = cardOptions.title;
const operate = this.renderOperate();
const content = this.renderContent();
return (
<CardFrame operate={operate} content={content} title={title} />
);
}
}
export default CardPanel;
import React, { Component } from 'react';
import PropTypes from 'prop-types';
// import { PureRenderMixin } from 'amos-core';
import { Log, omit } from 'amos-tool';
import { WidthProvider, Responsive } from 'react-grid-layout';
import layoutConsts from './../../../../consts/layoutConsts';
import CardPanel from './CardPanel';
import AddCardPanel from './../AddCardPanel';
const ResponsiveReactGridLayout = WidthProvider(Responsive);
class CenterGraph extends Component {
static propTypes = {
cardPanelDataMap: PropTypes.any,
onPanelLayoutChange: PropTypes.func
};
static defaultProps = {
cardPanelDataMap: [],
className: 'layout',
cols: { lg: 12, md: 10, sm: 6, xs: 4, xxs: 2 },
rowHeight: layoutConsts.rowHeight,
onPanelLayoutChange(){}
};
constructor(props) {
super(props);
this.state = {
};
}
shouldComponentUpdate(nextProps, nextState) {
// return PureRenderMixin.shouldComponentUpdate.call(this, nextProps, nextState);
return true;
}
// We're using the cols coming back from this to calculate where to add new items.
onBreakpointChange = (breakpoint, cols) => {
Log.info('breakpoint', breakpoint);
this.setState({
breakpoint,
cols
});
}
onLayoutChange = (layout) => {
this.setState({ layout });
if (this.props.onPanelLayoutChange) {
this.props.onPanelLayoutChange(layout);
}
}
/**
* 创建一个card frame
*
* @memberof CenterGraph
*/
createTrigerPanel = (options) => {
const { uid, panelDataGrid, cardOptions = {} } = options;
return (
<div key={uid} data-grid={panelDataGrid} className="card-item-layout">
{
cardOptions.isAddFrame ? <AddCardPanel /> : <CardPanel cardOptions={cardOptions} panelUID={uid} />
}
</div>
);
}
render() {
const { cardPanelDataMap, ...rest } = this.props;
const cardPanelDataArray = [...cardPanelDataMap.values()];
const otherProps = omit(
rest,
['onPanelLayoutChange']
);
return (
<div className="scene-graph-card-layout">
<ResponsiveReactGridLayout
onLayoutChange={this.onLayoutChange}
onBreakpointChange={this.onBreakpointChange}
{...otherProps}
>
{
cardPanelDataArray.map(item => this.createTrigerPanel(item))
}
</ResponsiveReactGridLayout>
</div>
);
}
}
export default CenterGraph;
// @author ilex.h
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { Log } from 'amos-tool';
import { Form } from 'amos-antd';
import { Button, Input } from 'amos-framework';
const createForm = Form.create();
const FormItem = Form.Item;
/**
* 新增桌面 form
*
* @class CreateDesk
* @extends {Component}
*/
class CreateDesk extends Component {
static propTypes = {
form: PropTypes.any,
onSaveNewDesk: PropTypes.func,
onCancel: PropTypes.func
};
constructor(props, context) {
super(props, context);
}
handleSubmit = (e) => {
e.preventDefault();
this.props.form.validateFields((errors, values) => {
if (errors) {
Log.error('Errors in form!!!');
return;
}
this.props.form.resetFields();
this.props.onSaveNewDesk(values.deskName);
});
}
render() {
const { onCancel, form } = this.props;
const { getFieldProps } = form;
const deskNameProps = getFieldProps('deskName', {
initialValue: '',
rules: [
{ required: true, message: '请输入桌面名称' }
]
});
return (
<Form inline>
<FormItem label="桌面名称:">
<Input className='login-input' {...deskNameProps} style={{ width: 200 }} />
</FormItem>
<div className="form-footer">
<Button key="back" onClick={onCancel}>取消</Button>
<Button key="submit" type="primary" onClick={this.handleSubmit}>确定</Button>
</div>
</Form>
);
}
}
export default createForm(CreateDesk);
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { PubSub } from 'ray-eventpool';
import classnames from 'classnames';
import Icon from 'amos-icon';
import { UUID } from 'amos-tool';
import { Scrollbars, Modal } from 'amos-framework';
import panelDataFactory from './../../../../utils/panelDataFactory';
import { ON_CARDFRAME_ADD, ON_CARDFRAME_REMOVE } from './../../../../consts/topicConsts';
import CreateDesk from './CreateDesk';
import CenterGraph from './CenterGraph';
const maxDesk = 5;
const datas = [
{ key: 'test1-1', title: '分类1-1', itemPath: '分类1/分类1-1', funcIcon: '/src/assets/funcicon/search.png' },
{ key: 'test1-2', title: '分类1-2', itemPath: '分类1/分类1-2', funcIcon: '/src/assets/funcicon/text.png' },
{ key: 'test1-3', title: '分类1-3', itemPath: '分类1/分类1-3', funcIcon: '/src/assets/funcicon/think.png' },
{ key: 'test2-1', title: '分类2-1', itemPath: '分类2/分类2-1', funcIcon: '/src/assets/funcicon/print.png' },
{ key: 'test2-2', title: '分类2-2', itemPath: '分类2/分类2-2', funcIcon: '/src/assets/funcicon/calender.png' },
{ key: 'test3-1', title: '分类3-1', itemPath: '分类3/分类3-1', funcIcon: '/src/assets/funcicon/calc.png' }
];
/**
* middle
*
* @class MiddleContent
* @extends {Component}
*/
class MiddleContent extends Component {
static propTypes = {
personCenters: PropTypes.array,
style: PropTypes.object
};
constructor(props) {
super(props);
this.state = {
activeDesk: 'defaultDesk',
visible: false,
personCenters: [{ key: 'defaultDesk', text: '默认桌面' }],
cardPanelDataMap: new Map(),
cols: { lg: 12, md: 10, sm: 6, xs: 4, xxs: 2 }
};
}
componentWillMount() {
this.loadDefaultDesk();
}
componentDidMount() {
this.pubsub_panelAdd = PubSub.subscribe(ON_CARDFRAME_ADD, (topic, chartType) => {
this.onTrigerPanelAdd(chartType);
});
this.pubsub_panelRemove = PubSub.subscribe(ON_CARDFRAME_REMOVE, (topic, panelUID) => {
this.onTrigerPanelRemove(panelUID);
});
}
/**
* 当组件卸载(unmounted)的时候,在 componentWillUnmount 事件中取消事件的订阅
*/
componentWillUnmount() {
PubSub.unsubscribe(this.pubsub_panelAdd);
PubSub.unsubscribe(this.pubsub_panelRemove);
}
onItemClick = (e, deskId) => {
}
onSaveNewDesk = (deskname) => {
const personCenters = this.state.personCenters;
personCenters.push({
key: UUID.timeUUID('amos-desk'),
text: deskname
});
this.setState({
personCenters,
visible: false
});
}
onCreateCancel = () => {
this.setState({
visible: false
});
}
onPanelLayoutChange = (layouts = []) => {
}
onTrigerPanelAdd = () => {
const { cardPanelDataMap } = this.state;
const opts = { existPanelSize: cardPanelDataMap.size, cardOptions: {
data: datas
} };
const data = panelDataFactory(opts);
const panelUID = data.uid;
cardPanelDataMap.set(panelUID, data);
this.setState({
cardPanelDataMap
});
}
/**
* 移除一个cardPanel
*/
onTrigerPanelRemove = (panelUID) => {
const { cardPanelDataMap: newDatas } = this.state;
newDatas.delete(panelUID);
this.setState({ cardPanelDataMap: newDatas });
}
/**
* 加载默认桌面
*/
loadDefaultDesk = () => {
const { cardPanelDataMap } = this.state;
const opts = { existPanelSize: cardPanelDataMap.size, cardOptions: {
title: '推荐&最新应用',
closable: false,
data: datas
} };
const data = panelDataFactory(opts);
const panelUID = data.uid;
cardPanelDataMap.set(panelUID, data);
const addOpts = { panelUID: 'panel-add', existPanelSize: cardPanelDataMap.size, cardOptions: {
isAddFrame: true
} };
const add = panelDataFactory(addOpts);
cardPanelDataMap.set(add.uid, add);
this.setState({
cardPanelDataMap
});
}
addDesktop = () => {
const { personCenters } = this.state;
if (personCenters.length === maxDesk) {
Modal.warning({
title: '警告',
content: '最多添加5个自定义桌面!'
});
} else {
this.setState({
visible: true
});
}
}
addCradFrame = () => {
this.onTrigerPanelAdd();
}
renderHeaderDesk = () => {
const { activeDesk, personCenters } = this.state;
return (
personCenters.map(pc => {
const isActive = activeDesk === pc.key;
const cls = classnames({
'desktop-tab': true,
'center-tab-item': true,
'active-tab': isActive
});
return (
<div className={cls} key={pc.key} title={pc.text} onClick={(e) => this.onItemClick(e, pc.key)}>{pc.text}</div>
);
})
);
}
render() {
const { cardPanelDataMap, visible, cols } = this.state;
const { style } = this.props;
return (
<div className="personal-center" style={style}>
<div className="center-header">
{this.renderHeaderDesk()}
<div className="center-tab center-tab-item" title="新增桌面" onClick={this.addDesktop}><Icon icon="add" /></div>
<div className="center-tab center-tab-item" title="设置" onClick={this.addCradFrame}><Icon icon="setting" /></div>
<Modal
header="新增桌面"
visible={visible}
noDefaultFoote
onCancel={this.onCreateCancel}
content={<CreateDesk onSaveNewDesk={this.onSaveNewDesk} onCancel={this.onCreateCancel} />}
/>
</div>
<div className="center-body amos-clearfix">
<Scrollbars>
<CenterGraph
cardPanelDataMap={cardPanelDataMap}
onPanelLayoutChange={this.onPanelLayoutChange}
cols={cols}
/>
</Scrollbars>
</div>
</div>
);
}
}
export default MiddleContent;
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import fetchWrapper from './../../common/enhance/fetchWrapper';
import MiddleCenter from './dragable';
class Center extends Component {
render() {
return (<MiddleCenter {...this.props} />);
}
}
export default fetchWrapper(Center, {
url: '',
params: {
method: 'post'
}
});
// @author ilex.h
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { Log } from 'amos-tool';
import { Form } from 'amos-antd';
import { Button, Input } from 'amos-framework';
const createForm = Form.create();
const FormItem = Form.Item;
/**
* 新增桌面 form
*
* @class CreateDesk
* @extends {Component}
*/
class CreateDesk extends Component {
static propTypes = {
form: PropTypes.any,
onSaveNewDesk: PropTypes.func,
onCancel: PropTypes.func
};
constructor(props, context) {
super(props, context);
}
handleSubmit = (e) => {
e.preventDefault();
this.props.form.validateFields((errors, values) => {
if (errors) {
Log.error('Errors in form!!!');
return;
}
this.props.form.resetFields();
this.props.onSaveNewDesk(values.deskName);
});
}
render() {
const { onCancel, form } = this.props;
const { getFieldProps } = form;
const deskNameProps = getFieldProps('deskName', {
initialValue: '',
rules: [
{ required: true, message: '请输入桌面名称' }
]
});
return (
<Form inline>
<FormItem label="桌面名称:">
<Input className='login-input' {...deskNameProps} style={{ width: 200 }} />
</FormItem>
<div className="form-footer">
<Button key="back" onClick={onCancel}>取消</Button>
<Button key="submit" type="primary" onClick={this.handleSubmit}>确定</Button>
</div>
</Form>
);
}
}
export default createForm(CreateDesk);
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { PubSub } from 'ray-eventpool';
import Icon from 'amos-icon';
import { CardFrame, CardItem } from 'amos-framework';
import { ON_CARDFRAME_REMOVE } from './../../../../consts/topicConsts';
class SortCardPanel extends Component {
static propTypes = {
cardOptions: PropTypes.object,
panelUID: PropTypes.string,
removeCardFrame: PropTypes.func
};
static defaultProps = {
cardOptions: {},
removeCardFrame(){}
};
removeCardFrame = (panelUID) => {
PubSub.publish(ON_CARDFRAME_REMOVE, panelUID);
}
renderOperate = () => {
const { panelUID, cardOptions } = this.props;
let closable = cardOptions.closable;
closable = closable === undefined ? true : closable;
return (
<div>
{closable && <Icon icon="cross" onClick={() => this.removeCardFrame(panelUID)} />}
</div>
);
}
renderContent = () => {
const { cardOptions } = this.props;
const datas = cardOptions.data || [];
return datas.map(co =>{
const { key, ...rest } = co;
return (
<CardItem
key={key}
{...rest}
/>
);
});
}
render() {
const { cardOptions } = this.props;
const title = cardOptions.title;
const operate = this.renderOperate();
const content = this.renderContent();
return (
<CardFrame operate={operate} content={content} title={title} />
);
}
}
export default SortCardPanel;
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { SortableContainer, SortableElement } from 'ray-hoc-sortable';
import SortCardPanel from './SortCardPanel';
import AddCardPanel from './../AddCardPanel';
const SortableItem = SortableElement(({ panelUID, ...props }) => <li key={panelUID} className="card-item-layout"><SortCardPanel {...props} /></li>);
const SortableList = SortableContainer(({ items }) => {
return (
<div className="scene-graph-container">
<ul className="layout-wrapper">
{items.map((item, index) => {
const { uid, cardOptions } = item;
if (cardOptions.isAddFrame) {
return <AddCardPanel />;
} else {
return <SortableItem key={uid} index={index} cardOptions={cardOptions} panelUID={uid} />;
}
})}
</ul>
</div>
);
});
class SortGraph extends Component {
static propTypes = {
cardPanelDataArr: PropTypes.array,
onSortEnd: PropTypes.func
};
render() {
const { cardPanelDataArr, onSortEnd } = this.props;
return <SortableList items={cardPanelDataArr} onSortEnd={onSortEnd} />;
}
}
export default SortGraph;
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { PubSub } from 'ray-eventpool';
import classnames from 'classnames';
import Icon from 'amos-icon';
import { UUID } from 'amos-tool';
import { arrayMove } from 'ray-hoc-sortable';
import { Scrollbars, Modal } from 'amos-framework';
import panelUid from './../../../../utils/panelUid';
import { ON_CARDFRAME_ADD, ON_CARDFRAME_REMOVE } from './../../../../consts/topicConsts';
import CreateDesk from './CreateDesk';
import SortGraph from './SortGraph';
const maxDesk = 5;
const datas = [
{ key: 'test1-1', title: '分类1-1', itemPath: '分类1/分类1-1', funcIcon: '/src/assets/funcicon/search.png' },
{ key: 'test1-2', title: '分类1-2', itemPath: '分类1/分类1-2', funcIcon: '/src/assets/funcicon/text.png' },
{ key: 'test1-3', title: '分类1-3', itemPath: '分类1/分类1-3', funcIcon: '/src/assets/funcicon/think.png' },
{ key: 'test2-1', title: '分类2-1', itemPath: '分类2/分类2-1', funcIcon: '/src/assets/funcicon/print.png' },
{ key: 'test2-2', title: '分类2-2', itemPath: '分类2/分类2-2', funcIcon: '/src/assets/funcicon/calender.png' },
{ key: 'test3-1', title: '分类3-1', itemPath: '分类3/分类3-1', funcIcon: '/src/assets/funcicon/calc.png' }
];
/**
* middle
*
* @class MiddleContent
* @extends {Component}
*/
class MiddleContent extends Component {
static propTypes = {
personCenters: PropTypes.array,
style: PropTypes.object
};
constructor(props) {
super(props);
this.state = {
activeDesk: 'defaultDesk',
visible: false,
personCenters: [{ key: 'defaultDesk', text: '默认桌面' }],
cardPanelDataArr: []
};
}
componentWillMount() {
this.loadDefaultDesk();
}
componentDidMount() {
this.pubsub_panelAdd = PubSub.subscribe(ON_CARDFRAME_ADD, (topic, chartType) => {
this.onTrigerPanelAdd(chartType);
});
this.pubsub_panelRemove = PubSub.subscribe(ON_CARDFRAME_REMOVE, (topic, panelUID) => {
this.onTrigerPanelRemove(panelUID);
});
}
/**
* 当组件卸载(unmounted)的时候,在 componentWillUnmount 事件中取消事件的订阅
*/
componentWillUnmount() {
PubSub.unsubscribe(this.pubsub_panelAdd);
PubSub.unsubscribe(this.pubsub_panelRemove);
}
onItemClick = (e, deskId) => {
}
onSaveNewDesk = (deskname) => {
const personCenters = this.state.personCenters;
personCenters.push({
key: UUID.timeUUID('amos-desk'),
text: deskname
});
this.setState({
personCenters,
visible: false
});
}
onCreateCancel = () => {
this.setState({
visible: false
});
}
onPanelLayoutChange = (layouts = []) => {
}
onTrigerPanelAdd = () => {
const { cardPanelDataArr } = this.state;
const opts = { uid: panelUid(), cardOptions: {
data: datas
} };
cardPanelDataArr.push(opts);
this.setState({
cardPanelDataArr
});
}
/**
* 移除一个cardPanel
*/
onTrigerPanelRemove = (panelUID) => {
const { cardPanelDataArr: newDatas } = this.state;
newDatas.delete(panelUID);
this.setState({ cardPanelDataArr: newDatas });
}
onSortEnd = ({ oldIndex, newIndex }) => {
let { cardPanelDataArr } = this.state;
this.setState({
cardPanelDataArr: arrayMove(cardPanelDataArr, oldIndex, newIndex)
});
}
/**
* 加载默认桌面
*/
loadDefaultDesk = () => {
const { cardPanelDataArr } = this.state;
const opts = { uid: panelUid(), cardOptions: {
title: '推荐&最新应用',
closable: false,
data: datas
} };
const add = { uid: 'panel-add', cardOptions: {
isAddFrame: true
} };
cardPanelDataArr.push(opts, add);
this.setState({
cardPanelDataArr
});
}
addDesktop = () => {
const { personCenters } = this.state;
if (personCenters.length === maxDesk) {
Modal.warning({
title: '警告',
content: '最多添加5个自定义桌面!'
});
} else {
this.setState({
visible: true
});
}
}
renderHeaderDesk = () => {
const { activeDesk, personCenters } = this.state;
return (
personCenters.map(pc => {
const isActive = activeDesk === pc.key;
const cls = classnames({
'desktop-tab': true,
'center-tab-item': true,
'active-tab': isActive
});
return (
<div className={cls} key={pc.key} title={pc.text} onClick={(e) => this.onItemClick(e, pc.key)}>{pc.text}</div>
);
})
);
}
render() {
const { cardPanelDataArr, visible } = this.state;
const { style } = this.props;
return (
<div className="personal-center" style={style}>
<div className="center-header">
{this.renderHeaderDesk()}
<div className="center-tab center-tab-item" title="新增桌面" onClick={this.addDesktop}><Icon icon="add" /></div>
<div className="center-tab center-tab-item" title="设置" onClick={this.addCradFrame}><Icon icon="setting" /></div>
<Modal
header="新增桌面"
visible={visible}
noDefaultFooter
onCancel={this.onCreateCancel}
content={<CreateDesk onSaveNewDesk={this.onSaveNewDesk} onCancel={this.onCreateCancel} />}
/>
</div>
<div className="center-body amos-clearfix">
<Scrollbars>
<SortGraph
cardPanelDataArr={cardPanelDataArr}
onSortEnd={this.onSortEnd}
/>
</Scrollbars>
</div>
</div>
);
}
}
export default MiddleContent;
import React, { Component } from 'react';
import { browserHistory } from 'amos-react-router';
import { Login } from 'amos-security/lib';
import { normalPolicy } from './../../utils/pwdPolicy';
import { devLogoIn } from './../../services/securityServices';
import * as endConf from 'amos-processor/lib/config/endconf';
const AmosConfig = endConf.AmosConfig;
const businessFirstPage = AmosConfig.sysConf.businessFirstPage;
class LoginComponent extends Component {
constructor(props) {
super(props);
}
goto() {
browserHistory.push('mapmain');
// window.open('/main/onDutyDynamic');
window.open(businessFirstPage);
let dev_userName = document.getElementById('userName').value;
let dev_password = document.getElementById('password').value;
let result = normalPolicy(dev_password);
window.userMsg = {
userName: dev_userName,
userPwd: result
};
let params = {
userName: dev_userName,
password: result.password,
secretKey: result.secretKey,
loginType: 'WEB'
};
devLogoIn(params).then((data)=>{
let dev_token = data['X-Access-Token'];
// console.log(data);
window.localStorage.setItem('dev_token', dev_token);
},(err) => {
console.log(err);
});
}
render() {
return <Login goto={this.goto} logo="/src/assets/auth/logo.png" title="实战指挥平台" desicOne="对党忠诚 纪律严明" desictTow="赴汤蹈火 竭诚为民" />;
}
}
LoginComponent.propTypes = {};
export default LoginComponent;
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import classnames from 'classnames';
import { Tabs } from 'amos-framework';
import Icon from 'amos-icon';
import dt2react from 'dt2react';
import AppList from './apps/AppList';
const TabList = Tabs.TabList;
const Tab = Tabs.Tab;
const TabPanel = Tabs.TabPanel;
class LeftMaxContent extends Component {
static propTypes = {
closeBox: PropTypes.func,
activeKey: PropTypes.string,
calcCenterStyle: PropTypes.func,
display: PropTypes.bool,
onTabChange: PropTypes.func
};
constructor(props) {
super(props);
this.state = {
visible: true
};
}
componentDidMount() {
this.offset();
}
onTabChange = (index, key) => {
}
onClosed = () => {
this.setState({
visible: false
}, () => this.props.closeBox('left'));
}
offset = () => {
const _node = this.container;
const offset = dt2react.getOffset(_node) || {};
this.props.calcCenterStyle({
leftOffset: offset
});
}
render() {
const { activeKey, display, onTabChange } = this.props;
const cls = classnames({
'box-left-normal': true,
'common-animated': true,
'app-sider': true,
'amos-anim-move-left-out': !display,
'amos-anim-move-left-in': display
});
return (
<div className={cls} style={{ display: display ? 'block' : 'none' }} ref={node => this.container = node}>
<Tabs activeKey={activeKey} onChange={onTabChange} closeAnimate>
<TabList>
<Tab activeKey="collection"><span><Icon icon="collection" />我的收藏</span></Tab>
<Tab activeKey="application"><span><Icon icon="appstore" />可用应用</span></Tab>
<Tab activeKey="card"><span><Icon icon="card" />可用卡片</span></Tab>
</TabList>
<TabPanel activeKey="collection">Tab 1</TabPanel>
<TabPanel activeKey="application"><AppList onClosed={this.onClosed} /></TabPanel>
<TabPanel activeKey="card">Tab 2</TabPanel>
</Tabs>
<div className="box-close left" onClick={this.onClosed}>
<Icon icon="left" />
</div>
</div>
);
}
}
export default LeftMaxContent;
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import classnames from 'classnames';
import Icon from 'amos-icon';
import dt2react from 'dt2react';
class LeftMinContent extends Component {
static propTypes = {
boxList: PropTypes.array,
openBox: PropTypes.func,
calcCenterStyle: PropTypes.func,
display: PropTypes.bool
};
constructor(props) {
super(props);
this.state = {
visible: false
};
}
componentDidMount() {
this.offset();
}
onItemClick = (e, itemKey) => {
this.setState({
visible: true
}, () => this.props.openBox({
type: 'left',
openKey: itemKey
}));
}
offset = () => {
const _node = this.container;
const offset = dt2react.getOffset(_node) || {};
this.props.calcCenterStyle({
leftOffset: offset
});
}
renderItem = ({ key, icon, text }) => {
return (
<div key={key} className="box-min-item" onClick={(e) => this.onItemClick(e, key)}>
<Icon icon={icon} />
<div className="box-tip">{text}</div>
</div>
);
}
render() {
const { visible } = this.state;
const { boxList, display } = this.props;
const cls = classnames({
'box-left-min': true,
'common-animated': true,
'amos-anim-move-left-out': visible,
'amos-anim-move-left-in': !visible
});
return (
<div className={cls} style={{ display: display ? 'block' : 'none' }} ref={node => this.container = node}>
<div className="box-min">
<div className="box-min-cont">
{
boxList.map(bl => this.renderItem({ ...bl }))
}
</div>
</div>
</div>
);
}
}
export default LeftMinContent;
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { browserHistory } from 'amos-react-router';
import { Nav, NavItem, IndexNavItem } from 'amos-framework';
import { Popconfirm, Menu, Dropdown, Modal } from 'amos-antd';
import HDate from './HDate';
import Weather from './Weather';
import { secExtUrl, SecurityUrl } from 'CONSTS/urlConsts';
import { logout } from './../../../../services/securityServices';
const confirm = Modal.confirm;
class MenuList extends Component {
static propTypes = {};
constructor(props) {
super(props);
this.state = {
visible: false
};
}
componentDidMount() {
}
onClick = (es) => {
window.localStorage.removeItem('major');
window.localStorage.removeItem('fireDesc');
};
handleMenuClick = (e) => {
if (e.key === '1') {
this.setState({ visible: false });
this.showConfirm();
}
}
handleVisibleChange = (flag) => {
this.setState({ visible: flag });
}
showConfirm = () => {
confirm({
title: '提示',
content: '是否要退出登录?',
onOk() {
let storage = window.localStorage;
const params = {
loginType: 'WEB',
userId: storage.getItem('userId')
};
logout(params).then(() => {
window.localStorage.removeItem('major');
window.localStorage.removeItem('fireDesc');
window.localStorage.removeItem('activity');
window.localStorage.removeItem('userxzqh');
if (window.opener && !window.opener.closed) {
window.opener.location.href = `${window.location.origin}/login`;
window.close();
} else {
browserHistory.push('/login');
}
});
},
onCancel() {
}
});
}
renderNavItem = (dataList = []) => {
return dataList.map((es, index) => {
if (index === 0) {
return <IndexNavItem key={es.key} onClick={e => this.onClick(es)} icon={es.icon} title={es.name} href={es.url} />;
} else {
return <NavItem key={es.key} onClick={e => this.onClick(es)} icon={es.icon} title={es.name} href={es.url} />;
}
});
};
render() {
let { submenu } = this.props;
const navItem = this.renderNavItem(submenu);
const menu = (
<Menu onClick={this.handleMenuClick}>
<Menu.Item key="1">
<p>退出登录</p>
</Menu.Item>
</Menu>
);
return (
<div className="top-header">
<Nav direction="horizontal" href="/">
{navItem}
</Nav>
<div className="top-right">
<div>
<HDate />
<Weather />
</div>
<div>
<Dropdown overlay={menu}
onVisibleChange={this.handleVisibleChange}
visible={this.state.visible}
>
<img src="/src/assets/img/sign-out.png" alt="人员" className="sign-out" />
</Dropdown>
</div>
</div>
</div>
);
}
}
MenuList.propTypes = {
submenu: PropTypes.array
};
export default MenuList;
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import classnames from 'classnames';
import { Tabs } from 'amos-framework';
import Icon from 'amos-icon';
import dt2react from 'dt2react';
import { PubSub } from 'ray-eventpool';
const TabList = Tabs.TabList;
const Tab = Tabs.Tab;
const TabPanel = Tabs.TabPanel;
class RightMaxContent extends Component {
static propTypes = {
closeBox: PropTypes.func,
activeKey: PropTypes.string,
taskSize: PropTypes.number,
messageSize: PropTypes.number,
calcCenterStyle: PropTypes.func,
display: PropTypes.bool,
onTabChange: PropTypes.func
};
constructor(props) {
super(props);
this.state = {
visible: true
};
}
componentDidMount() {
this.offset();
PubSub.publish('menus-click', {
rightClose: this.onClosed
});
}
onClosed = () => {
this.setState({
visible: false
}, () => this.props.closeBox('right'));
}
offset = () => {
const _node = this.container;
const offset = dt2react.getOffset(_node) || {};
this.props.calcCenterStyle({
rightOffset: offset
});
}
render() {
const { activeKey, onTabChange, taskSize, messageSize, display } = this.props;
const cls = classnames({
'box-right-normal': true,
'common-animated': true,
'app-sider': true,
'amos-anim-move-right-out': !display,
'amos-anim-move-right-in': display
});
return (
<div className={cls} style={{ display: display ? 'block' : 'none' }} ref={node => this.container = node}>
<Tabs activeKey={activeKey} onChange={onTabChange} closeAnimate>
<TabList>
<Tab activeKey="task"><span>任务{taskSize}</span></Tab>
<Tab activeKey="message"><span>消息{messageSize}</span></Tab>
</TabList>
<TabPanel activeKey="task">任务列表</TabPanel>
<TabPanel activeKey="message">消息列表</TabPanel>
</Tabs>
<div className="box-close right" onClick={this.onClosed}>
<Icon icon="right" />
</div>
</div>
);
}
}
export default RightMaxContent;
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import classnames from 'classnames';
import Icon from 'amos-icon';
import dt2react from 'dt2react';
class RightMinContent extends Component {
static propTypes = {
boxList: PropTypes.array,
openBox: PropTypes.func,
calcCenterStyle: PropTypes.func,
display: PropTypes.bool
};
constructor(props) {
super(props);
this.state = {
visible: false
};
}
componentDidMount() {
this.offset();
}
onItemClick = (e, itemKey) => {
this.setState({
visible: true
}, () => this.props.openBox({
type: 'right',
openKey: itemKey
}));
}
offset = () => {
const _node = this.container;
const offset = dt2react.getOffset(_node) || {};
this.props.calcCenterStyle({
rightOffset: offset
});
}
renderItem = ({ key, icon, text }) => {
return (
<div key={key} className="box-min-item" onClick={(e) => this.onItemClick(e, key)}>
<Icon icon={icon} />
<div className="box-tip">{text}</div>
</div>
);
}
render() {
const { visible } = this.state;
const { boxList, display } = this.props;
const cls = classnames({
'box-right-min': true,
'common-animated': true,
'amos-anim-move-right-out': visible,
'amos-anim-move-right-in': !visible
});
return (
<div className={cls} ref={node => this.container = node}>
<div className="box-min">
<div className="box-min-cont">
{
boxList.map(bl => this.renderItem({ ...bl }))
}
</div>
</div>
</div>
);
}
}
export default RightMinContent;
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { PubSub } from 'ray-eventpool';
import { Input } from 'amos-framework';
import Icon from 'amos-icon';
import { browserHistory } from 'amos-react-router';
import { amosRequest } from 'amos-processor';
import { secExtUrl } from 'CONSTS/urlConsts';
import NavTab from './navtab';
class AppList extends Component {
static propTypes = {
onClosed: PropTypes.func
};
constructor(props) {
super(props);
this.state = {
activeTab: 'all',
activeItem: {},
tabAll: []
};
}
componentWillMount() {
this.onSetAppList('');
}
componentDidMount() {
PubSub.publish('menus-click', {
leftClose: this.onSystemClick
});
}
componentWillUnmount() {
this.setState({
tabAll: []
});
}
onSystemClick = (sysItem) => {
this.props.onClosed();
}
onSetAppList = (name) => {
// amosRequest(`${Url.applistByNameUrl}?name=${name}`,{ method: 'GET' }).then((data) => {
amosRequest(`${secExtUrl.opSearchMenusUrl}?nodeName=${name}&type=28`,{ method: 'GET' }).then((data) => {
let res = (data || {}).dataList || [];
let _allApp = [];
let allApp = [];
const convetData = (data, index, list) => {
data.map(e => {
let obj = {};
if (index === 0) {
obj.key = e.id;
obj.text = e.name;
obj.children = [];
list.push(obj);
}
if (index !== 0 && !e.children) {
let obj = {};
obj.key = e.id;
obj.title = e.name,
obj.funcIcon = e.image || '/src/assets/funcicon/search.png';
obj.linkTo = e.url;
_allApp.push({
key: obj.key,
title: obj.title,
funcIcon: obj.funcIcon,
linkTo: obj.linkTo
});
obj.children = [];
list.push(obj);
if (e.children && e.children.length > 0) {
convetData(e.children, 1, obj.children);
}
} else {
if (e.children && e.children.length > 0) {
convetData(e.children, 1, obj.children || list );
}
}
});
};
convetData(res, 0, allApp);
allApp.length > 0 && allApp.unshift({ key: 'all', text: '全部', children: _allApp, count: _allApp.length });
console.log('allApp===========',allApp);
this.setState({ tabAll: allApp, activeItem: allApp[0] });
});
}
/**
* tab变化
*/
onTabChange = (activeTab, item) => {
this.setState({
activeTab,
activeItem: item
});
}
/**
* 收藏
*/
onFavorite = (isFavorite, item) => {
// amosRequest(`${Url.appCollectionUrl}/${item.key}`,{ method: 'POST' });
}
/**
* 行点击
*/
onItemClick = (key, item) => {
browserHistory.push(item.linkTo);
this.props.onClosed();
PubSub.publish('menus-click', {
leftClose: this.onSystemClick
});
}
render() {
const { activeTab, tabAll } = this.state;
return (
<div className="app-list">
<Input
className="app-search center-block"
placeholder="搜索可用服务"
onChange={(e)=>this.setState({ searchValue: e.target.value })}
/>
<Icon onClick={()=>this.onSetAppList(this.state.searchValue || '')} className="app-search-icon cursor-p" icon="search" />
<NavTab
tabAll={tabAll}
onFavorite={this.onFavorite}
activeTab={activeTab}
onTabChange={this.onTabChange}
onItemClick={this.onItemClick}
/>
</div>
);
}
}
AppList.propTypes = {
};
export default AppList;
import React, { Component } from 'react';
import PropTypes from 'prop-types';
class CardList extends Component {
render() {
return (
<div>
</div>
);
}
}
CardList.propTypes = {
};
export default CardList;
import React, { Component } from 'react';
import PropTypes from 'prop-types';
class FavList extends Component {
render() {
return (
<div>
</div>
);
}
}
FavList.propTypes = {
};
export default FavList;
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import Icon from 'amos-icon';
import classnames from 'classnames';
import { Modal, Button } from 'amos-framework';
class TabContentItem extends Component {
static propTypes = {
funcIcon: PropTypes.string,
title: PropTypes.string,
onFavorite: PropTypes.func,
onItemClick: PropTypes.func,
visible: PropTypes.bool,
showSM: PropTypes.bool,
showCollection: PropTypes.bool
};
static defaultProps = {
visible: false
};
constructor(props) {
super(props);
this.state = {
isFavorite: false,
visible: false
};
}
onOk = () => {
this.setState({
visible: false
});
}
onCancel = () => {
this.setState({
visible: false
});
}
showDetails = () => {
this.setState({
visible: true
});
}
toggleFavorite = () => {
this.setState({
isFavorite: !this.state.isFavorite
});
this.props.onFavorite(!this.state.isFavorite);
}
render() {
const { funcIcon, title, showSM, showCollection, onItemClick } = this.props;
const { isFavorite, visible } = this.state;
const fav = classnames({
'shuoming': true,
'extra-icon': true,
'favorite': isFavorite
});
return (
<div className="amos-hover-motion tab-content-item" onClick={onItemClick}>
<img src={funcIcon} alt={title} />
<h5>{title}</h5>
{ showSM && <Icon icon="shuoming" className="extra-icon" onClick={this.showDetails} /> }
{ showCollection && <Icon icon="collection" className={fav} onClick={this.toggleFavorite} /> }
{ showCollection && <Modal
visible={visible}
header="说明"
onCancel={this.onCancel}
onOk={this.onOk}
content={<div>说明</div>}
footer={<Button onClick={this.hide}>Cancel</Button>}
/>
}
</div>
);
}
}
export default TabContentItem;
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import classnames from 'classnames';
/**
* tab item
*
* @class TabItem
* @extends {Component}
*/
class TabItem extends Component {
static propTypes = {
itemKey: PropTypes.oneOfType([
PropTypes.string,
PropTypes.number
]),
text: PropTypes.string,
count: PropTypes.number,
active: PropTypes.bool,
onTabChange: PropTypes.func
};
static defaultProps = {
active: false,
onTabChange(){}
};
render() {
const { itemKey, text, count, active, onTabChange } = this.props;
const cls = classnames({
'amos-hover-motion': true,
'tab-item': true,
'tab-active': active
});
return (
<li className={cls} onClick={(e) => onTabChange(itemKey)}>
<span className="tab-name" title={text}>{text}</span>
<span className="tab-count">{count}</span>
</li>
);
}
}
export default TabItem;
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { utils } from 'amos-tool';
import { Scrollbars } from 'amos-framework';
import TabItem from './TabItem';
import TabContentItem from './TabContentItem';
class NavTab extends Component {
static propTypes = {
activeTab: PropTypes.string,
tabAll: PropTypes.array,
onTabChange: PropTypes.func,
onItemClick: PropTypes.func,
onFavorite: PropTypes.func
};
static defaultProps = {
tabAll: [],
onTabChange(){}
};
constructor(props) {
super(props);
}
onTabChange = (itemKey, item) => {
this.props.onTabChange(itemKey, item);
}
onFavorite = (isFav) => {
}
generateContentList = () => {
const { activeTab, tabAll } = this.props;
if (utils.isEmpty(tabAll)){
return [];
} else {
const result = tabAll.filter(ta => ta.key === activeTab);
if (utils.isEmpty(result)){
return [];
}
return result[0].children;
}
}
renderTabAll = (tabList) => {
const { activeTab } = this.props;
return tabList.map(tl => {
const active = tl.key === activeTab;
return (
<TabItem
key={tl.key}
itemKey={tl.key}
text={tl.text}
count={(tl.children || []).length}
active={active}
onTabChange={(key) => this.onTabChange(key, tl)}
/>
);
});
}
renderTabContent = (contentList) => {
const { onFavorite, onItemClick } = this.props;
if (!contentList || contentList.length === 0) {
return <div style={{ textAlign: 'center' }}>暂无应用</div>;
}
return contentList.map(cl => (
<TabContentItem
key={cl.key}
item={cl}
funcIcon={cl.funcIcon}
title={cl.title}
onItemClick={() => onItemClick(cl.key, cl)}
onFavorite={(isFavorite) => onFavorite(isFavorite, cl)}
/>
));
}
render() {
const { tabAll } = this.props;
const contentList = this.generateContentList();
return (
<div className="amos-category-tab">
<ul className="nav-tab-all">
{this.renderTabAll(tabAll)}
</ul>
<div className="nav-tab-content">
<Scrollbars>
{this.renderTabContent(contentList)}
</Scrollbars>
</div>
</div>
);
}
}
NavTab.propTypes = {
};
export default NavTab;
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { Nav, NavItem, IndexNavItem } from 'amos-framework';
class BizNav extends Component {
static propTypes = {};
constructor(props) {
super(props);
this.state = {
visible: false
};
}
componentDidMount() {
}
onClick = (es) => {
};
renderNavItem = (subMenus = []) => {
return subMenus.map((sbm, index) => {
if (index === 0) {
return <IndexNavItem key={sbm.sequenceNbr} onClick={e => this.onClick(sbm)} icon={sbm.icon} title={sbm.permissionName} href={sbm.path} />;
} else {
return <NavItem key={sbm.sequenceNbr} onClick={e => this.onClick(sbm)} icon={sbm.icon} title={sbm.permissionName} href={sbm.path} />;
}
});
};
render() {
let { submenu } = this.props;
const navItem = this.renderNavItem(submenu);
return (
<div className="top-header">
<Nav direction="horizontal" href="/">
{navItem}
</Nav>
<div className="top-right">
<div>
</div>
</div>
</div>
);
}
}
BizNav.propTypes = {
submenu: PropTypes.array
};
export default BizNav;
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { utils } from 'amos-tool';
class Logo extends Component {
static propTypes = {
logo: PropTypes.string,
text: PropTypes.string,
showText: PropTypes.bool,
logoStyle: PropTypes.object
};
render() {
const { logo, text, showText, logoStyle } = this.props;
return (
<div className="header-logo">
<img classnName="logo-img" src={logo} alt="" style={logoStyle} />
{showText && !utils.isEmpty(text) && <div className="logo-text">{text}</div>}
</div>
);
}
}
export default Logo;
import React, { Component } from 'react';
class LogoMixin extends Component {
render() {
return (
<div className="header-logo mixin-log">
<div className="logo-bg" />
<img className="mixin-logo-title" src="/src/assets/logo/amos-name.png" alt="" />
</div>
);
}
}
export default LogoMixin;
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { Nav, NavItem, IndexNavItem } from 'amos-framework';
class SysTools extends Component {
render() {
return (
<div className="sys-tools">
<Nav href="/">
<IndexNavItem icon="shipin" title="nav1" />
<NavItem href="users" icon="xiaoxi2" title="nav2" defaultOpen>
<NavItem href="users/list" title="nav3" />
<NavItem href="users/task" title="nav4" />
</NavItem>
</Nav>
</div>
);
}
}
SysTools.propTypes = {
};
export default SysTools;
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import TipSearch from './../../common/tip/Search';
class SearchService extends Component {
static propTypes = {
showText: PropTypes.bool
};
render() {
const { showText } = this.props;
const placeholder = showText ? '搜索服务' : '';
return (
<div className="header-search">
<TipSearch
placeholder={placeholder}
to="/main/service"
/>
</div>
);
}
}
export default SearchService;
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { Nav, NavItem, IndexNavItem,Connect } from 'amos-framework';
const eventConnect = Connect.eventConnect;
class SysExtend extends Component {
static propTypes = {
showText: PropTypes.bool,
extendSystem: PropTypes.array
};
constructor(props) {
super(props);
this.state = {
};
}
componentWillMount() {
}
componentDidMount() {
const { extendSystem } = this.props;
if ( extendSystem[0].children && extendSystem[0].children.length > 0 ){
let isSub = window.sessionStorage.getItem('sub');
if (isSub === null) {
window.open(extendSystem[0].children[0].path);
window.sessionStorage.setItem('sub','use');
}
}
}
componentDidUpdate(prevProps, prevState) {
}
componentWillUnmount() {
}
onClick = sbm => {
window.localStorage.setItem('submenu',JSON.stringify(sbm.children));
};
redirect(){
}
renderNavItem = () => {
const { showText, extendSystem } = this.props;
return extendSystem.map((sbm,index) => {
if (index === 0) {
return <IndexNavItem key={sbm.sequenceNbr} onClick={e => this.onClick(sbm)} icon={sbm.icon} title={showText ? sbm.permissionName : ''} href={sbm.path} />;
} else {
return <NavItem key={sbm.sequenceNbr} onClick={e => this.onClick(sbm)} icon={sbm.icon} title={showText ? sbm.permissionName : ''} href={sbm.path} />;
}
});
};
renderSelectItem = () => {};
render() {
const navItem = this.renderNavItem();
return (
<div className="sys-extend">
<Nav direction="horizontal" href="/">
{navItem}
</Nav>
</div>
);
}
}
SysExtend.propTypes = {
add: PropTypes.func,
subscribe: PropTypes.any,
extendSystem: PropTypes.array
};
export default eventConnect(SysExtend);
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import classnames from 'classnames';
import { PubSub } from 'ray-eventpool';
import Icon from 'amos-icon';
import { amosRequest } from 'amos-processor';
import { secExtUrl } from 'CONSTS/urlConsts';
import { Menu, Popover, Avatar } from 'amos-framework';
import { EYE_MODE_CHANGE, THEMES_CHANGE, THEMES_TOP_CHANGE } from 'CONSTS/topicConsts';
import Skin from './../../common/skin';
const MenuItem = Menu.Item;
const defaultSkins = [
{ id: 'dispatch', name: 'dispatch', type: 'systemDefault', text: '调派', icon: '/src/assets/skin/teal.jpg', bgColor: '#009587', skinUse: true },
{ id: 'teal', name: 'teal', type: 'system', text: '水鸭绿', icon: '/src/assets/skin/teal.jpg', bgColor: '#009587' },
{ id: 'indigo', name: 'indigo', type: 'system', text: '靛蓝', icon: '/src/assets/skin/indigo.jpg', bgColor: '#3F51B5' },
{ id: 'millennium', name: 'millennium', type: 'system', text: '千禧绿', icon: '/src/assets/skin/millennium.jpg', bgColor: '#3A7E59' },
{ id: 'cherry', name: 'cherry', type: 'system', text: '樱桃红', icon: '/src/assets/skin/cherry.jpg', bgColor: '#D22E2E' },
{ id: 'magenta', name: 'magenta', type: 'system', text: '绛紫', icon: '/src/assets/skin/magenta.jpg', bgColor: '#7A1EA1' },
{ id: 'golden', name: 'golden', type: 'system', text: '香槟金', icon: '/src/assets/skin/golden.jpg', bgColor: '#BB8235' },
{ id: 'default', name: 'default', type: 'system', text: '默认', icon: '/src/assets/skin/golden.jpg', bgColor: '#203957' },
{ id: 'solor', name: 'solor', type: 'system', text: '星空', icon: '/src/assets/skin/golden.jpg', bgColor: '#203957' }
];
class SysTools extends Component {
static propTypes = {
showText: PropTypes.bool,
changeTheme: PropTypes.func
}
constructor(props) {
super(props);
this.state = {
skins: defaultSkins,
isThemeOpen: false
};
}
componentWillMount() {
this.pubsub_themeChange = PubSub.subscribe(THEMES_CHANGE, (topic, theme) => {
this.onInitThemes();
});
}
componentDidMount() {
this.onInitThemes();
}
componentWillUnmount() {
PubSub.unsubscribe(this.pubsub_themeChange);
}
/**
* 初始化用户自己的主题集合
*/
onInitThemes = () => {
// amosRequest(`${secExtUrl.themesUrl}`,{ method: 'GET' }).then((data) => {
// this.setState({ skins: data.dataList || this.state.skins }, () => {
// let currentTheme = this.state.skins.filter(e => e.skinUse === true)[0];
// currentTheme && this.props.changeTheme(currentTheme);
// });
// });
this.setState({ skins: this.state.skins }, () => {
let currentTheme = this.state.skins.filter(e => e.skinUse === true)[0];
currentTheme && this.props.changeTheme(currentTheme);
});
}
onEyeModeChange = (checked) => {
PubSub.publish(EYE_MODE_CHANGE, checked);
}
onChangeTheme = (skin) => {
let { skins } = this.state;
skins.map(e => e.skinUse = e.id === skin.id);
this.setState({ skins });
// amosRequest(`${secExtUrl.saveUserThemsUrl}/${skin.id}`,{ method: 'PUT' }).then((data) => {
// PubSub.publish(THEMES_TOP_CHANGE, skin);
this.onInitThemes();
// });
}
closedPop = () => {
this.setState({
isThemeOpen: false
});
}
render() {
const { skins, isThemeOpen } = this.state;
const { showText } = this.props;
const theme = showText ? (
<Popover
align="right"
content={<Skin skins={skins} onEyeModeChange={this.onEyeModeChange} changeTheme={this.onChangeTheme} closed={this.closedPop} />}
triggerMode="click"
open={isThemeOpen}
className="skin-popover-wrapper"
>
<div><Icon icon="skin" />皮肤</div>
</Popover>)
: (
<Popover
align="right"
content={<Skin skins={skins} onEyeModeChange={this.onEyeModeChange} changeTheme={this.onChangeTheme} closed={this.closedPop} />}
triggerMode="click"
open={isThemeOpen}
className="skin-popover-wrapper"
>
<Icon icon="skin" />
</Popover>);
const cls = classnames('sys-tools', {
'sys-tools-min': !showText
});
return (
<div className={cls}>
<Menu direction="horizontal">
<MenuItem>{theme}</MenuItem>
<MenuItem><Avatar src="/src/assets/user/normal.png" /></MenuItem>
</Menu>
</div>
);
}
}
export default SysTools;
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import RayMediaquery from 'ray-mediaquery';
import { sysName } from './../../../consts/urlConsts';
import SysExtend from './SysExtend';
class Header extends Component {
static propTypes = {
extendSystem: PropTypes.array
};
constructor(props) {
super(props);
this.state = {
showText: true
};
}
componentDidMount() {
RayMediaquery.register('only screen and (min-width: 0) and (max-width: 992px)', {
match: () => {
this.setState({ showText: false });
},
unmatch: () => {
this.setState({ showText: true });
}
});
}
render() {
const { showText } = this.state;
const { extendSystem } = this.props;
let name = sysName;
return (
<div className="header-row">
<div className="header-primary">
<div className="logo">
<div className="logo-text">{name}</div>
</div>
<SysExtend showText={showText} extendSystem={extendSystem} {...this.props} />
</div>
</div>
);
}
}
Header.propTypes = {
extendSystem: PropTypes.array
};
export default Header;
import React, { Component } from 'react';
import PropTypes from 'prop-types';
/**
* duty
*日常值守
* @class duty
* @extends {Component}
*/
class Duty extends Component {
constructor(props) {
super(props);
this.state = {
};
}
componentWillMount() {
}
componentDidMount() {
}
componentWillUnmount() {
}
render() {
return (
<div className="duty-root">
日常值守
</div>
);
}
}
Duty.propTypes = {
};
export default Duty;
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { sessionConsts } from '../../consts/storageConsts';
import { Store } from 'amos-tool';
import Header from './../main/header';
const lsTool = Store.lsTool;
/**
* root
*监控主屏
* @class RootView
* @extends {Component}
*/
class RootView extends Component {
constructor(props) {
super(props);
this.state = {
submenu: [],
extendSystem: []
};
}
componentWillMount() {
let systemMenu = JSON.parse(lsTool.read(sessionConsts.systemMenu));
this.setState({ extendSystem: systemMenu });
}
componentDidMount() {
}
componentWillUnmount() {
}
render() {
const { children } = this.props;
return (
<div className="view-root">
<div className="header">
<Header extendSystem={this.state.extendSystem} add={this.add} />
</div>
<div className="content-body">
{children}
</div>
</div>
);
}
}
RootView.propTypes = {
children: PropTypes.node
};
export default RootView;
import React, { Component } from 'react';
import PropTypes from 'prop-types';
/**
* regulate
*安全监管
* @class regulate
* @extends {Component}
*/
class Regulate extends Component {
constructor(props) {
super(props);
this.state = {
};
}
componentWillMount() {
}
componentDidMount() {
}
componentWillUnmount() {
}
render() {
return (
<div className="duty-root">
安全监管
</div>
);
}
}
Regulate.propTypes = {
};
export default Regulate;
import React, { Component } from 'react';
class UserInfoComponent extends Component {
constructor(props) {
super(props);
}
render() {
const user = currentUser();
return <UserInfo userId={user.userId} />;
}
}
export default UserInfoComponent;
@echo off
title AmosBuild Guide
@echo author ilex.h
@echo Starting front end initialization Wizard...
@echo *......................tips..............................*
@echo * *
@echo * front execute environment,please choose one *
@echo * *
@echo * 1.Enable default NPM, server is webpack-dev-server *
@echo * 2.webpack -w watch all(npm run watch) *
@echo * 3.Empty compile directory dist(npm run clean) *
@echo * 4.Complied with webpack dev(npm run build:dev) *
@echo * 5.webpack build with production(npm run build:pro) *
@echo * 6.publish(clean build:pro copy to released)best choice *
@echo * 7.publish(clean build:dev copy to released)best choice *
@echo * *
@echo *........................................................*
@echo.
set switch=""
set /p switch=please choose:
if /I '%switch%'=='1' goto npm_start
if /I '%switch%'=='2' goto npm_run_watch
if /I '%switch%'=='3' goto npm_run_clean
if /I '%switch%'=='4' goto npm_run_buildDev
if /I '%switch%'=='5' goto npm_run_buildPro
if /I '%switch%'=='6' goto npm_run_publish
if /I '%switch%'=='7' goto npm_run_publish_dev
goto end
:npm_start
npm set registry http://192.168.1.2:9696 && npm update && npm start
goto end
:npm_run_watch
npm set registry http://192.168.1.2:9696 && npm update && npm run watch
goto end
:npm_run_clean
npm run clean
goto end
:npm_run_buildDev
npm set registry http://192.168.1.2:9696 && npm update && npm run build:dev
goto end
:npm_run_buildPro
npm set registry http://192.168.1.2:9696 && npm update && npm run build:pro
goto end
:npm_run_publish
npm set registry http://192.168.1.2:9696 && npm update && npm run pub
goto success
:npm_run_publish_dev
npm set registry http://192.168.1.2:9696 && npm update && npm run pub:dev
goto success
:success
@echo. success!
start .\released
:end
pause
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="renderer" content="webkit">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script type="application/javascript" src="/amos.config.js"></script>
<title>电力消防综合管控平台</title>
<style>
.startload {
position: fixed;
top: 0;
left: 0;
z-index: 9999;
width: 100%;
height: 100%;
padding-top: 200px;
text-align: center;
background: #FEFEFE;
}
</style>
</head>
<body>
<div id="startload" class="startload">
<img src="/src/assets/loading/toip-loading.gif" width="100px">
</div>
<div id="app"></div>
<script>
window.onload = function () {
document.getElementById("startload").style.display = "none";
}
</script>
</body>
</html>
/**
* webpack 打包配置文件
* @author ilex
*/
var dllConfig = require('amos-build/lib/dll/dev');
var config = require('./build/amosbuildConf');
var amosConfig = dllConfig(config);
module.exports = amosConfig;
/**
* webpack 打包配置文件
* @author ilex
*/
const { tools } = require('ray-plugins');
const simpleConfig = require('amos-build/lib/simpleConfig');
const __ENV__ = tools.trim(process.env.NODE_ENV);
const isProd = __ENV__ === 'production';
// ------------------------------------------------------
// 添加webpack加载别名,用于导包重定向,优化打包以及代码
// 此处需要自己进行定义
// 👻可修改
// ------------------------------------------------------
const alias = {
MODEL: __dirname + '/src/model',
UTILS: __dirname + '/src/utils',
CONSTS: __dirname + '/src/consts',
_MOCK: __dirname + '/src/_mock'
};
// ------------------------------------
// 入口点
// ------------------------------------
// 发布模式入口
const prodEntry = {
app: './src/entry/index.prod.js'
};
// 开发模式入口
const devEntry = {
app: './src/entry/index.js'
};
const config = {
tpl: './tpl.html',
toFile: 'index.html',
port: 3003,
favicon: 'favicon.ico',
useHot: isProd ? false : true,
alias,
entry: isProd ? prodEntry : devEntry,
sourceMap: isProd ? false : true
};
const defaultConfig = simpleConfig(config);
defaultConfig.name = 'amos-init';
module.exports = defaultConfig;
/**
* webpack 打包配置文件
* @author ilex
*/
var dllConfig = require('amos-build/lib/dll/prod');
var config = require('./build/amosbuildConf');
var amosConfig = dllConfig(config);
module.exports = amosConfig;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment