chore: 初始化南京中车大屏幕

This commit is contained in:
yexingqiang
2026-06-08 17:22:32 +08:00
commit 51f0061b29
193 changed files with 70394 additions and 0 deletions

21
.gitignore vendored Normal file
View File

@@ -0,0 +1,21 @@
.DS_Store
node_modules
/dist
# local env files
.env.local
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw*

29
README.md Normal file
View File

@@ -0,0 +1,29 @@
# gaojingtv
## Project setup
```
npm install
```
### Compiles and hot-reloads for development
```
npm run serve
```
### Compiles and minifies for production
```
npm run build
```
### Run your tests
```
npm run test
```
### Lints and fixes files
```
npm run lint
```
### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).

5
babel.config.js Normal file
View File

@@ -0,0 +1,5 @@
module.exports = {
presets: [
'@vue/app'
]
}

45
build/build.js Normal file
View File

@@ -0,0 +1,45 @@
'use strict'
require('./check-versions')()
process.env.NODE_ENV = 'production'
const ora = require('ora')
const rm = require('rimraf')
const path = require('path')
const chalk = require('chalk')
const webpack = require('webpack')
const config = require('../config')
const webpackConfig = require('./webpack.prod.conf')
const spinner = ora('building for production...')
spinner.start()
rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
if (err) throw err
webpack(webpackConfig, (err, stats) => {
spinner.stop()
if (err) throw err
process.stdout.write(
stats.toString({
colors: true,
modules: false,
children: false,
chunks: false,
chunkModules: false
}) + '\n\n'
)
if (stats.hasErrors()) {
console.log(chalk.red(' Build failed with errors.\n'))
process.exit(1)
}
console.log(chalk.cyan(' Build complete.\n'))
console.log(
chalk.yellow(
' Tip: built files are meant to be served over an HTTP server.\n' +
" Opening index.html over file:// won't work.\n"
)
)
})
})

64
build/check-versions.js Normal file
View File

@@ -0,0 +1,64 @@
'use strict'
const chalk = require('chalk')
const semver = require('semver')
const packageConfig = require('../package.json')
const shell = require('shelljs')
function exec(cmd) {
return require('child_process')
.execSync(cmd)
.toString()
.trim()
}
const versionRequirements = [
{
name: 'node',
currentVersion: semver.clean(process.version),
versionRequirement: packageConfig.engines.node
}
]
if (shell.which('npm')) {
versionRequirements.push({
name: 'npm',
currentVersion: exec('npm --version'),
versionRequirement: packageConfig.engines.npm
})
}
module.exports = function() {
const warnings = []
for (let i = 0; i < versionRequirements.length; i++) {
const mod = versionRequirements[i]
if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
warnings.push(
mod.name +
': ' +
chalk.red(mod.currentVersion) +
' should be ' +
chalk.green(mod.versionRequirement)
)
}
}
if (warnings.length) {
console.log('')
console.log(
chalk.yellow(
'To use this template, you must update following to modules:'
)
)
console.log()
for (let i = 0; i < warnings.length; i++) {
const warning = warnings[i]
console.log(' ' + warning)
}
console.log()
process.exit(1)
}
}

BIN
build/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

108
build/utils.js Normal file
View File

@@ -0,0 +1,108 @@
'use strict'
const path = require('path')
const config = require('../config')
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const packageConfig = require('../package.json')
exports.assetsPath = function(_path) {
const assetsSubDirectory =
process.env.NODE_ENV === 'production'
? config.build.assetsSubDirectory
: config.dev.assetsSubDirectory
return path.posix.join(assetsSubDirectory, _path)
}
exports.cssLoaders = function(options) {
options = options || {}
const cssLoader = {
loader: 'css-loader',
options: {
sourceMap: options.sourceMap
}
}
const postcssLoader = {
loader: 'postcss-loader',
options: {
sourceMap: options.sourceMap
}
}
// generate loader string to be used with extract text plugin
function generateLoaders(loader, loaderOptions) {
const loaders = []
// Extract CSS when that option is specified
// (which is the case during production build)
if (options.extract) {
loaders.push(MiniCssExtractPlugin.loader)
} else {
loaders.push('vue-style-loader')
}
loaders.push(cssLoader)
if (options.usePostCSS) {
loaders.push(postcssLoader)
}
if (loader) {
loaders.push({
loader: loader + '-loader',
options: Object.assign({}, loaderOptions, {
sourceMap: options.sourceMap
})
})
}
return loaders
}
// https://vue-loader.vuejs.org/en/configurations/extract-css.html
return {
css: generateLoaders(),
postcss: generateLoaders(),
less: generateLoaders('less'),
sass: generateLoaders('sass', {
indentedSyntax: true
}),
scss: generateLoaders('sass'),
stylus: generateLoaders('stylus'),
styl: generateLoaders('stylus')
}
}
// Generate loaders for standalone style files (outside of .vue)
exports.styleLoaders = function(options) {
const output = []
const loaders = exports.cssLoaders(options)
for (const extension in loaders) {
const loader = loaders[extension]
output.push({
test: new RegExp('\\.' + extension + '$'),
use: loader
})
}
return output
}
exports.createNotifierCallback = () => {
const notifier = require('node-notifier')
return (severity, errors) => {
if (severity !== 'error') return
const error = errors[0]
const filename = error.file && error.file.split('!').pop()
notifier.notify({
title: packageConfig.name,
message: severity + ': ' + error.name,
subtitle: filename || '',
icon: path.join(__dirname, 'logo.png')
})
}
}

5
build/vue-loader.conf.js Normal file
View File

@@ -0,0 +1,5 @@
'use strict'
module.exports = {
//You can set the vue-loader configuration by yourself.
}

110
build/webpack.base.conf.js Normal file
View File

@@ -0,0 +1,110 @@
'use strict'
const path = require('path')
const utils = require('./utils')
const config = require('../config')
const { VueLoaderPlugin } = require('vue-loader')
const vueLoaderConfig = require('./vue-loader.conf')
function resolve(dir) {
return path.join(__dirname, '..', dir)
}
const createLintingRule = () => ({
test: /\.(js|vue)$/,
loader: 'eslint-loader',
enforce: 'pre',
include: [resolve('src'), resolve('test')],
options: {
formatter: require('eslint-friendly-formatter'),
emitWarning: !config.dev.showEslintErrorsInOverlay
}
})
module.exports = {
context: path.resolve(__dirname, '../'),
entry: {
app: './src/main.js'
},
output: {
path: config.build.assetsRoot,
filename: '[name].js',
publicPath:
process.env.NODE_ENV === 'production'
? config.build.assetsPublicPath
: config.dev.assetsPublicPath
},
resolve: {
extensions: ['.js', '.vue', '.json'],
alias: {
'vue$': 'vue/dist/vue.esm.js',
'@': resolve('src'),
'scss_vars': '@/styles/vars.scss',
'excel': path.resolve(__dirname, '../src/excel'),//新增加一行
}
},
module: {
rules: [
...(config.dev.useEslint ? [createLintingRule()] : []),
{
test: /\.vue$/,
loader: 'vue-loader',
options: vueLoaderConfig
},
{
test: /\.js$/,
loader: 'babel-loader',
include: [
resolve('src'),
resolve('test'),
resolve('node_modules/webpack-dev-server/client')
]
},
{
test: /\.svg$/,
loader: 'svg-sprite-loader',
include: [resolve('src/icons')],
options: {
symbolId: 'icon-[name]'
}
},
{
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
loader: 'url-loader',
exclude: [resolve('src/icons')],
options: {
limit: 10000,
name: utils.assetsPath('img/[name].[hash:7].[ext]')
}
},
{
test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('media/[name].[hash:7].[ext]')
}
},
{
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
}
}
]
},
plugins: [new VueLoaderPlugin()],
node: {
// prevent webpack from injecting useless setImmediate polyfill because Vue
// source contains it (although only uses it if it's native).
setImmediate: false,
// prevent webpack from injecting mocks to Node native modules
// that does not make sense for the client
dgram: 'empty',
fs: 'empty',
net: 'empty',
tls: 'empty',
child_process: 'empty'
}
}

98
build/webpack.dev.conf.js Normal file
View File

@@ -0,0 +1,98 @@
'use strict'
const path = require('path')
const utils = require('./utils')
const webpack = require('webpack')
const config = require('../config')
const merge = require('webpack-merge')
const baseWebpackConfig = require('./webpack.base.conf')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
const portfinder = require('portfinder')
function resolve(dir) {
return path.join(__dirname, '..', dir)
}
const HOST = process.env.HOST
const PORT = process.env.PORT && Number(process.env.PORT)
const devWebpackConfig = merge(baseWebpackConfig, {
mode: 'development',
module: {
rules: utils.styleLoaders({
sourceMap: config.dev.cssSourceMap,
usePostCSS: true
})
},
// cheap-module-eval-source-map is faster for development
devtool: config.dev.devtool,
// these devServer options should be customized in /config/index.js
devServer: {
clientLogLevel: 'warning',
historyApiFallback: true,
hot: true,
compress: true,
host: HOST || config.dev.host,
port: PORT || config.dev.port,
open: config.dev.autoOpenBrowser,
overlay: config.dev.errorOverlay
? { warnings: false, errors: true }
: false,
publicPath: config.dev.assetsPublicPath,
proxy: config.dev.proxyTable,
quiet: true, // necessary for FriendlyErrorsPlugin
watchOptions: {
poll: config.dev.poll
}
},
plugins: [
new webpack.DefinePlugin({
'process.env': require('../config/dev.env')
}),
new webpack.HotModuleReplacementPlugin(),
// https://github.com/ampedandwired/html-webpack-plugin
new HtmlWebpackPlugin({
filename: 'EquipmentConditionAnalysis.vue.html',
template: 'EquipmentConditionAnalysis.vue.html',
inject: true,
favicon: resolve('favicon.ico'),
title: 'vue-element-admin',
templateParameters: {
BASE_URL: config.dev.assetsPublicPath + config.dev.assetsSubDirectory
}
})
]
})
module.exports = new Promise((resolve, reject) => {
portfinder.basePort = process.env.PORT || config.dev.port
portfinder.getPort((err, port) => {
if (err) {
reject(err)
} else {
// publish the new Port, necessary for e2e tests
process.env.PORT = port
// add port to devServer config
devWebpackConfig.devServer.port = port
// Add FriendlyErrorsPlugin
devWebpackConfig.plugins.push(
new FriendlyErrorsPlugin({
compilationSuccessInfo: {
messages: [
`Your application is running here: http://${
devWebpackConfig.devServer.host
}:${port}`
]
},
onErrors: config.dev.notifyOnErrors
? utils.createNotifierCallback()
: undefined
})
)
resolve(devWebpackConfig)
}
})
})

181
build/webpack.prod.conf.js Normal file
View File

@@ -0,0 +1,181 @@
'use strict'
const path = require('path')
const utils = require('./utils')
const webpack = require('webpack')
const config = require('../config')
const merge = require('webpack-merge')
const baseWebpackConfig = require('./webpack.base.conf')
const CopyWebpackPlugin = require('copy-webpack-plugin')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const ScriptExtHtmlWebpackPlugin = require('script-ext-html-webpack-plugin')
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin')
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
function resolve(dir) {
return path.join(__dirname, '..', dir)
}
const env = require('../config/prod.env')
// For NamedChunksPlugin
const seen = new Set()
const nameLength = 4
const webpackConfig = merge(baseWebpackConfig, {
mode: 'production',
module: {
rules: utils.styleLoaders({
sourceMap: config.build.productionSourceMap,
extract: true,
usePostCSS: true
})
},
devtool: config.build.productionSourceMap ? config.build.devtool : false,
output: {
path: config.build.assetsRoot,
filename: utils.assetsPath('js/[name].[chunkhash:8].js'),
chunkFilename: utils.assetsPath('js/[name].[chunkhash:8].js')
},
plugins: [
// http://vuejs.github.io/vue-loader/en/workflow/production.html
new webpack.DefinePlugin({
'process.env': env
}),
// extract css into its own file
new MiniCssExtractPlugin({
filename: utils.assetsPath('css/[name].[contenthash:8].css'),
chunkFilename: utils.assetsPath('css/[name].[contenthash:8].css')
}),
// generate dist index.html with correct asset hash for caching.
// you can customize output by editing /index.html
// see https://github.com/ampedandwired/html-webpack-plugin
new HtmlWebpackPlugin({
filename: config.build.index,
template: 'EquipmentConditionAnalysis.vue.html',
inject: true,
favicon: resolve('favicon.ico'),
title: 'vue-admin-template',
templateParameters: {
BASE_URL: config.build.assetsPublicPath + config.build.assetsSubDirectory
},
minify: {
removeComments: true,
collapseWhitespace: true,
removeAttributeQuotes: true
// more options:
// https://github.com/kangax/html-minifier#options-quick-reference
}
// default sort mode uses toposort which cannot handle cyclic deps
// in certain cases, and in webpack 4, chunk order in HTML doesn't
// matter anyway
}),
new ScriptExtHtmlWebpackPlugin({
// `runtime` must same as runtimeChunk name. default is `runtime`
inline: /runtime\..*\.js$/
}),
// keep chunk.id stable when chunk has no name
new webpack.NamedChunksPlugin(chunk => {
if (chunk.name) {
return chunk.name
}
const modules = Array.from(chunk.modulesIterable)
if (modules.length > 1) {
const hash = require('hash-sum')
const joinedHash = hash(modules.map(m => m.id).join('_'))
let len = nameLength
while (seen.has(joinedHash.substr(0, len))) len++
seen.add(joinedHash.substr(0, len))
return `chunk-${joinedHash.substr(0, len)}`
} else {
return modules[0].id
}
}),
// keep module.id stable when vender modules does not change
new webpack.HashedModuleIdsPlugin(),
// copy custom static assets
new CopyWebpackPlugin([
{
from: path.resolve(__dirname, '../static'),
to: config.build.assetsSubDirectory,
ignore: ['.*']
}
])
],
optimization: {
splitChunks: {
chunks: 'all',
cacheGroups: {
libs: {
name: 'chunk-libs',
test: /[\\/]node_modules[\\/]/,
priority: 10,
chunks: 'initial' // 只打包初始时依赖的第三方
},
elementUI: {
name: 'chunk-elementUI', // 单独将 elementUI 拆包
priority: 20, // 权重要大于 libs 和 app 不然会被打包进 libs 或者 app
test: /[\\/]node_modules[\\/]element-ui[\\/]/
}
}
},
runtimeChunk: 'single',
minimizer: [
new UglifyJsPlugin({
uglifyOptions: {
mangle: {
safari10: true
}
},
sourceMap: config.build.productionSourceMap,
cache: true,
parallel: true
}),
// Compress extracted CSS. We are using this plugin so that possible
// duplicated CSS from different components can be deduped.
new OptimizeCSSAssetsPlugin()
]
}
})
if (config.build.productionGzip) {
const CompressionWebpackPlugin = require('compression-webpack-plugin')
webpackConfig.plugins.push(
new CompressionWebpackPlugin({
asset: '[path].gz[query]',
algorithm: 'gzip',
test: new RegExp(
'\\.(' + config.build.productionGzipExtensions.join('|') + ')$'
),
threshold: 10240,
minRatio: 0.8
})
)
}
if (config.build.generateAnalyzerReport || config.build.bundleAnalyzerReport) {
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer')
.BundleAnalyzerPlugin
if (config.build.bundleAnalyzerReport) {
webpackConfig.plugins.push(
new BundleAnalyzerPlugin({
analyzerPort: 8080,
generateStatsFile: false
})
)
}
if (config.build.generateAnalyzerReport) {
webpackConfig.plugins.push(
new BundleAnalyzerPlugin({
analyzerMode: 'static',
reportFilename: 'bundle-report.html',
openAnalyzer: false
})
)
}
}
module.exports = webpackConfig

8
config/dev.env.js Normal file
View File

@@ -0,0 +1,8 @@
'use strict'
const merge = require('webpack-merge')
const prodEnv = require('./prod.env')
module.exports = merge(prodEnv, {
NODE_ENV: '"development"',
BASE_API: '"https://easy-mock.com/mock/5950a2419adc231f356a6636/vue-admin"',
})

91
config/index.js Normal file
View File

@@ -0,0 +1,91 @@
'use strict'
// Template version: 1.2.6
// see http://vuejs-templates.github.io/webpack for documentation.
const path = require('path')
const os = require('os')
const networkInterfaces = os.networkInterfaces()
// const ip = networkInterfaces['WLAN'][1] ? networkInterfaces['WLAN'][1].address : networkInterfaces['WLAN'][0].address
const ip = '192.168.1.17'
module.exports = {
dev: {
// Paths
assetsSubDirectory: 'static',
// assetsPublicPath: '/GQMobile/',
assetsPublicPath: '/',
proxyTable: {},
// Various Dev Server settings
host: ip, // can be overwritten by process.env.HOST
port: 9528, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
autoOpenBrowser: true,
errorOverlay: true,
notifyOnErrors: false,
poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
// Use Eslint Loader?
// If true, your code will be linted during bundling and
// linting errors and warnings will be shown in the console.
useEslint: true,
// If true, eslint errors and warnings will also be shown in the error overlay
// in the browser.
showEslintErrorsInOverlay: false,
/**
* Source Maps
*/
// https://webpack.js.org/configuration/devtool/#development
devtool: 'cheap-source-map',
// 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
},
build: {
// Template for index.html
index: path.resolve(__dirname, '../dist/index.html'),
// Paths
assetsRoot: path.resolve(__dirname, '../dist'),
assetsSubDirectory: 'static',
/**
* You can set by youself according to actual condition
* You will need to set this if you plan to deploy your site under a sub path,
* for example GitHub pages. If you plan to deploy your site to https://foo.github.io/bar/,
* then assetsPublicPath should be set to "/bar/".
* In most cases please use '/' !!!
*/
assetsPublicPath: '/',
/**
* Source Maps
*/
productionSourceMap: false,
// https://webpack.js.org/configuration/devtool/#production
devtool: 'source-map',
// 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'],
// Run the build command with an extra argument to
// View the bundle analyzer report after build finishes:
// `npm run build --report`
// Set to `true` or `false` to always turn it on or off
bundleAnalyzerReport: process.env.npm_config_report || false,
// `npm run build:prod --generate_report`
generateAnalyzerReport: process.env.npm_config_generate_report || false
}
}

5
config/prod.env.js Normal file
View File

@@ -0,0 +1,5 @@
'use strict'
module.exports = {
NODE_ENV: '"production"',
BASE_API: '"https://easy-mock.com/mock/5950a2419adc231f356a6636/vue-admin"',
}

109
cs.html Normal file
View File

@@ -0,0 +1,109 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>three.js使用Echarts贴图</title>
<script src="../js/three.js"></script>
<script src="../js/controls/OrbitControls.js"></script>
<script src="./echarts.js"></script>
</head>
<body>
<div id="webgl" style="width:512px;height: 512px;float: left;"></div>
<div id="echart" style="width:512px;height: 512px;margin-left: 620px;"></div>
<script>
var myChart = echarts.init(document.getElementById('echart'));
option = {
tooltip: {
formatter: "{a} <br/>{b} : {c}%"
},
// toolbox: {
// feature: {
// restore: {},
// saveAsImage: {}
// }
// },
series: [
{
name: '业务指标',
type: 'gauge',
detail: { formatter: '{value}%' },
data: [{ value: 50, name: '完成率' }]
}
]
};
option.series[0].data[0].value = (Math.random() * 100).toFixed(2) - 0;
myChart.setOption(option, true);
class Basescene {
constructor(dom) {
this.id = (new Date()).getTime();
this.dom = dom;
this.divWidth = this.dom.offsetWidth;
this.divHeight = this.dom.offsetHeight;
this.scene = new THREE.Scene();
this.camera = new THREE.PerspectiveCamera(45, this.divWidth / this.divHeight, 1, 2000);
this.renderer = new THREE.WebGLRenderer({
alpha: true,
antialias: true
});
this.controls = new THREE.OrbitControls(this.camera, this.renderer.domElement);
this.init();
}
init() {
this.camera.position.set(0, 0, 20);
this.camera.lookAt(this.scene.position);
this.renderer.setClearColor(0x222222);
this.renderer.setSize(this.divWidth, this.divHeight);
this.dom.appendChild(this.renderer.domElement);
// this.scene.add(new THREE.AxesHelper(10));
this.animate();
this.addLight();
console.log(this.scene);
}
addLight() {
const light = new THREE.AmbientLight(0xffffff);
this.scene.add(light);
}
render() {
this.renderer.render(this.scene, this.camera);
}
animate = () => {
this.request = requestAnimationFrame(this.animate);
this.render();
}
addPlane() {
var geometry = new THREE.PlaneGeometry(10, 10);
var material = new THREE.MeshBasicMaterial({
side: THREE.DoubleSide,
// transparent:true
});
this.plane = new THREE.Mesh(geometry, material);
this.scene.add(this.plane);
}
changeTextureE(texture) {
this.plane.material.map = new THREE.TextureLoader().load(texture)
this.plane.material.needsUpdate = true
}
changeTextureT(texture) {
this.plane.material.map = new THREE.CanvasTexture(texture)
this.plane.material.needsUpdate = true
}
}
const dom = document.getElementById("webgl");
const scene = new Basescene(dom);
scene.addPlane();
setTimeout(() => {
var thiscancas = document.getElementById("echart").getElementsByTagName('canvas')[0]
scene.changeTextureT(thiscancas)
}, 2000);
setTimeout(() => {
var texture = myChart.getDataURL({
pixelRatio: 4,
backgroundColor: '#fff'
});
scene.changeTextureE(texture)
}, 4000);
</script>
</body>
</html>

34151
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

388
package.json Normal file
View File

@@ -0,0 +1,388 @@
{
"name": "zhongchetv",
"version": "0.1.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint",
"svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml"
},
"dependencies": {
"@jiaminghi/data-view": "^2.10.0",
"axios": "^0.21.4",
"echarts": "^5.3.1",
"element-ui": "^2.8.2",
"file-saver": "^2.0.2",
"js-cookie": "^2.2.1",
"js-export-excel": "^1.1.2",
"mint-ui": "^2.2.13",
"node-sass": "^4.14.1",
"qrcode": "^1.4.4",
"qs": "^6.9.0",
"sass-loader": "^7.3.1",
"video.js": "^7.20.3",
"videojs-flash": "^2.2.1",
"vue": "^2.6.6",
"vue-jsonp": "^0.1.8",
"vue-router": "^3.0.1",
"vue-seamless-scroll": "^1.1.23",
"vue-video-player": "^6.0.0",
"vuex": "^3.0.1",
"xlsx": "^0.17.1",
"xlsx-style": "^0.8.13"
},
"devDependencies": {
"@vue/cli-plugin-babel": "^3.5.0",
"@vue/cli-plugin-eslint": "^3.5.0",
"@vue/cli-service": "^3.5.0",
"babel-eslint": "^10.0.1",
"eslint": "^5.8.0",
"eslint-plugin-vue": "^5.0.0",
"jquery": "^2.2.4",
"node-sass": "^4.14.1",
"script-loader": "^0.7.2",
"svg-sprite-loader": "^5.1.1",
"vue-particles": "^1.0.9",
"vue-template-compiler": "^2.5.21"
},
"eslintConfig": {
"root": true,
"env": {
"node": true
},
"extends": [
"plugin:vue/essential",
"eslint:recommended"
],
"rules": {
"vue/max-attributes-per-line": [
2,
{
"singleline": 10,
"multiline": {
"max": 1,
"allowFirstLine": false
}
}
],
"vue/name-property-casing": [
"error",
"PascalCase"
],
"accessor-pairs": 2,
"arrow-spacing": [
2,
{
"before": true,
"after": true
}
],
"block-spacing": [
2,
"always"
],
"brace-style": [
2,
"1tbs",
{
"allowSingleLine": true
}
],
"camelcase": [
0,
{
"properties": "always"
}
],
"comma-dangle": [
2,
"never"
],
"comma-spacing": [
2,
{
"before": false,
"after": true
}
],
"comma-style": [
2,
"last"
],
"constructor-super": 2,
"curly": [
2,
"multi-line"
],
"dot-location": [
2,
"property"
],
"eol-last": 2,
"eqeqeq": [
2,
"allow-null"
],
"generator-star-spacing": [
2,
{
"before": true,
"after": true
}
],
"handle-callback-err": [
2,
"^(err|error)$"
],
"indent": [
2,
2,
{
"SwitchCase": 1
}
],
"jsx-quotes": [
2,
"prefer-single"
],
"key-spacing": [
2,
{
"beforeColon": false,
"afterColon": true
}
],
"keyword-spacing": [
2,
{
"before": true,
"after": true
}
],
"new-cap": [
2,
{
"newIsCap": true,
"capIsNew": false
}
],
"new-parens": 2,
"no-array-constructor": 2,
"no-caller": 2,
"no-console": "off",
"no-class-assign": 2,
"no-cond-assign": 2,
"no-const-assign": 2,
"no-control-regex": 2,
"no-delete-var": 2,
"no-dupe-args": 2,
"no-dupe-class-members": 2,
"no-dupe-keys": 2,
"no-duplicate-case": 2,
"no-empty-character-class": 2,
"no-empty-pattern": 2,
"no-eval": 2,
"no-ex-assign": 2,
"no-extend-native": 2,
"no-extra-bind": 2,
"no-extra-boolean-cast": 2,
"no-extra-parens": [
2,
"functions"
],
"no-fallthrough": 2,
"no-floating-decimal": 2,
"no-func-assign": 2,
"no-implied-eval": 2,
"no-inner-declarations": [
2,
"functions"
],
"no-invalid-regexp": 2,
"no-irregular-whitespace": 2,
"no-iterator": 2,
"no-label-var": 2,
"no-labels": [
2,
{
"allowLoop": false,
"allowSwitch": false
}
],
"no-lone-blocks": 2,
"no-mixed-spaces-and-tabs": 2,
"no-multi-spaces": 2,
"no-multi-str": 2,
"no-multiple-empty-lines": [
2,
{
"max": 1
}
],
"no-native-reassign": 2,
"no-negated-in-lhs": 2,
"no-new-object": 2,
"no-new-require": 2,
"no-new-symbol": 2,
"no-new-wrappers": 2,
"no-obj-calls": 2,
"no-octal": 2,
"no-octal-escape": 2,
"no-path-concat": 2,
"no-proto": 2,
"no-redeclare": 2,
"no-regex-spaces": 2,
"no-return-assign": [
2,
"except-parens"
],
"no-self-assign": 2,
"no-self-compare": 2,
"no-sequences": 2,
"no-shadow-restricted-names": 2,
"no-spaced-func": 2,
"no-sparse-arrays": 2,
"no-this-before-super": 2,
"no-throw-literal": 2,
"no-trailing-spaces": 2,
"no-undef": 2,
"no-undef-init": 2,
"no-unexpected-multiline": 2,
"no-unmodified-loop-condition": 2,
"no-unneeded-ternary": [
2,
{
"defaultAssignment": false
}
],
"no-unreachable": 2,
"no-unsafe-finally": 2,
"no-unused-vars": [
2,
{
"vars": "all",
"args": "none"
}
],
"no-useless-call": 2,
"no-useless-computed-key": 2,
"no-useless-constructor": 2,
"no-useless-escape": 0,
"no-whitespace-before-property": 2,
"no-with": 2,
"one-var": [
2,
{
"initialized": "never"
}
],
"operator-linebreak": [
2,
"after",
{
"overrides": {
"?": "before",
":": "before"
}
}
],
"padded-blocks": [
2,
"never"
],
"quotes": [
2,
"single",
{
"avoidEscape": true,
"allowTemplateLiterals": true
}
],
"semi": [
2,
"never"
],
"semi-spacing": [
2,
{
"before": false,
"after": true
}
],
"space-before-blocks": [
2,
"always"
],
"space-before-function-paren": [
2,
"never"
],
"space-in-parens": [
2,
"never"
],
"space-infix-ops": 2,
"space-unary-ops": [
2,
{
"words": true,
"nonwords": false
}
],
"spaced-comment": [
2,
"always",
{
"markers": [
"global",
"globals",
"eslint",
"eslint-disable",
"*package",
"!",
","
]
}
],
"template-curly-spacing": [
2,
"never"
],
"use-isnan": 2,
"valid-typeof": 2,
"wrap-iife": [
2,
"any"
],
"yield-star-spacing": [
2,
"both"
],
"yoda": [
2,
"never"
],
"prefer-const": 2,
"object-curly-spacing": [
2,
"always",
{
"objectsInObjects": false
}
],
"array-bracket-spacing": [
2,
"never"
]
},
"parserOptions": {
"parser": "babel-eslint"
}
},
"browserslist": [
"> 1%",
"last 2 versions",
"not ie <= 8"
]
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,25 @@
<!doctype html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Cache-Control" content="no-cache, must-revalidate" />
<meta http-equiv="Expires" content="0" />
</head>
<body style="
width: 100%;
height: 100%;
overflow: hidden;
">
<div style="left: 100px;top:200px;position: relative;width: 100%;height: 800px;display: flex;">
<iframe id="test" src="index.html?ip=10.22.20.41" width="40%" height="100%">
</iframe>
<iframe id="test1" src="http://127.0.0.1:840011/index.html?ip=10.22.20.41" width="40%" height="100%">
</iframe>
</div>
<script src="../jquery-1.7.1.min.js"></script>
</body>
</html>

View File

@@ -0,0 +1,408 @@
@charset "utf-8";
*
{
margin:0;
padding:0;
}
html
{
width:100%;
height:100%;
font-size:12px;
font-family:Arial, Helvetica, sans-serif;
-webkit-text-size-adjust:none;
background:#FFFFFF;
}
body
{
padding:5px;
}
select
{
height:20px;
line-height:20px;
}
.left
{
float:left;
}
.freeze
{
position:absolute;
text-align:center;
background:#343434;
color:#FFFFFF;
font-size:26px;
font-weight:bold;
filter:alpha(opacity=60);
opacity:0.6;
}
.vtop
{
vertical-align:middle;
margin-top:-1px;
}
/*插件*/
.plugin
{
/* width:100%;
height:100%; */
/* position: fixed;
left: 1390px;
top: 1680px; */
width:240px;
height:140px;
}
fieldset
{
display:block;
}
/*本地配置*/
.localconfig
{
width:480px;
padding:10px;
border:1px solid #7F9DB9;
}
.localconfig .tt
{
width:125px;
}
.localconfig .txt
{
width:280px;
}
.localconfig .txt2
{
width:300px;
}
.localconfig .btn
{
width:60px;
height:22px;
line-height:18px;
}
.localconfig .sel
{
width:120px;
}
/*登录*/
.login
{
width:480px;
padding:10px;
border:1px solid #7F9DB9;
}
.login .tt
{
width:100px;
}
.login .txt
{
width:130px;
}
.login .btn
{
width:45px;
height:22px;
line-height:18px;
}
.login .btn2
{
width:100px;
height:22px;
line-height:18px;
}
.login .sel
{
width:130px;
}
.login .sel2
{
width:65px;
}
/*数字通道*/
.ipchannel
{
width:480px;
padding:10px;
border:1px solid #7F9DB9;
}
.ipchannel .btn
{
width:130px;
height:22px;
line-height:18px;
}
.ipchannel .digitaltdiv
{
height:100px;
overflow:hidden;
overflow-y:auto;
border:1px solid #7F9DB9;
font-size:11px;
}
.ipchannel .digitalchannellist th, .ipchannel .digitalchannellist td
{
padding:2px;
border:1px solid #7F9DB9;
border-collapse:collapse;
white-space:nowrap;
}
/*预览*/
.preview
{
width:450px;
padding:10px;
padding-top:0;
margin-left:10px;
border:1px solid #7F9DB9;
}
.preview .tt
{
width:60px;
}
.preview .txt
{
width:30px;
}
.preview .btn
{
width:70px;
height:22px;
line-height:18px;
}
.preview .btn2
{
width:90px;
height:22px;
line-height:18px;
}
.preview .sel
{
width:105px;
}
/*云台*/
.ptz
{
width:450px;
padding:10px;
margin-left:10px;
border:1px solid #7F9DB9;
}
.ptz .tt
{
width:60px;
}
.ptz .txt
{
width:60px;
}
.ptz .btn
{
width:45px;
height:22px;
line-height:18px;
}
.ptz .btn2
{
width:60px;
height:22px;
line-height:18px;
}
.ptz .sel
{
width:65px;
}
/*视频参数*/
.videoparam
{
width:450px;
padding:10px;
margin-left:10px;
border:1px solid #7F9DB9;
}
.videoparam .tt
{
width:60px;
}
.videoparam .txt
{
width:60px;
}
.videoparam .btn
{
width:45px;
height:22px;
line-height:18px;
}
.videoparam .sel
{
width:65px;
}
/*回放*/
.playback
{
width:450px;
padding:10px;
margin-left:10px;
border:1px solid #7F9DB9;
}
.playback .tt
{
width:60px;
}
.playback .txt
{
width:140px;
}
.playback .btn
{
min-width:45px;
height:22px;
line-height:18px;
}
.playback .btn2
{
width:70px;
height:22px;
line-height:18px;
}
.playback .sel
{
width:142px;
}
.playback .searchdiv
{
height:100px;
overflow:hidden;
overflow-y:auto;
border:1px solid #7F9DB9;
font-size:11px;
}
.playback .searchlist th, .playback .searchlist td
{
padding:2px;
border:1px solid #7F9DB9;
border-collapse:collapse;
white-space:nowrap;
}
/*系统维护*/
.maintain
{
width:450px;
padding:10px;
margin-left:10px;
border:1px solid #7F9DB9;
}
.maintain .tt
{
width:60px;
}
.maintain .txt
{
width:280px;
}
.maintain .btn
{
width:45px;
height:22px;
line-height:18px;
}
.maintain .btn2
{
width:100px;
height:22px;
line-height:18px;
}
.maintain .sel
{
width:65px;
}
/*操作信息*/
.operate
{
width:450px;
padding:10px;
margin-left:10px;
border:1px solid #7F9DB9;
}
.operate .opinfo
{
height:150px;
border:1px solid #7F9DB9;
overflow:auto;
}
/*事件回调*/
.callback
{
width:450px;
padding:10px;
margin-left:10px;
border:1px solid #7F9DB9;
}
.callback .cbinfo
{
height:114px;
border:1px solid #7F9DB9;
overflow:auto;
}
/*IP解析*/
.ipparse
{
width:450px;
padding:10px;
margin-left:10px;
border:1px solid #7F9DB9;
}
.ipparse .tt
{
width:85px;
}
.ipparse .txt
{
width:130px;
}
.ipparse .btn
{
width:90px;
height:22px;
line-height:18px;
}
.ipparse .sel
{
width:130px;
}
/*绘图*/
.draw
{
width:450px;
padding:10px;
padding-top:0;
margin-left:10px;
border:1px solid #7F9DB9;
}
.draw .tt
{
width:60px;
}
.draw .txt
{
width:140px;
}
.draw .btn
{
width:70px;
height:22px;
line-height:18px;
}
.draw .btn2
{
width:100px;
height:22px;
line-height:18px;
}
.draw .sel
{
width:105px;
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,462 @@
<!doctype html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Cache-Control" content="no-cache, must-revalidate" />
<meta http-equiv="Expires" content="0" />
<script>
document.write("<link type='text/css' href='./demo.css?version=" + new Date().getTime() + "' rel='stylesheet' />");
</script>
</head>
<body style="
width: 2000px;
height: 2000px;
">
<div class="left">
<!-- <div id="divPlugin" class="plugin"></div> -->
<fieldset class="login">
<legend>登录</legend>
<table cellpadding="0" cellspacing="3" border="0">
<tr>
<td class="tt">IP地址</td>
<td><input id="loginip" type="text" class="txt" value="10.28.17.12" /></td>
<!-- <td><input id="loginip" type="text" class="txt" value="10.41.203.83" /></td> -->
<td class="tt">端口号</td>
<td><input id="port" type="text" class="txt" value="80" /></td>
</tr>
<tr>
<td class="tt">用户名</td>
<td><input id="username" type="text" class="txt" value="admin" /></td>
<td class="tt">密码</td>
<td><input id="password" type="password" class="txt" value="abcd1234" /></td>
<!-- <td><input id="password" type="password" class="txt" value="abcd1234" /></td> -->
</tr>
<tr>
<td class="tt">设备端口</td>
<td colspan="2"><input id="deviceport" type="text" class="txt" />(可选参数)</td>
<td>
窗口分割数&nbsp;
<select class="sel2" onchange="changeWndNum(this.value);">
<option value="1" selected>1x1</option>
<option value="2">2x2</option>
<option value="3">3x3</option>
<option value="4">4x4</option>
<option value="1*2">1x2</option>
<option value="2*1">2x1</option>
</select>
</td>
</tr>
<tr>
<td class="tt">RTSP端口</td>
<td colspan="3"><input id="rtspport" type="text" class="txt" />(可选参数)</td>
</tr>
<tr>
<td colspan="4">
<input type="button" class="btn" value="登录" onclick="clickLogin();" />
<input type="button" class="btn" value="退出" onclick="clickLogout();" />
<input type="button" class="btn2" value="获取基本信息" onclick="clickGetDeviceInfo();" />
</td>
</tr>
<tr>
<td class="tt">已登录设备</td>
<td>
<select id="ip" class="sel" onchange="getChannelInfo();getDevicePort();"></select>
</td>
<td class="tt">通道列表</td>
<td>
<select id="channels" class="sel"></select>
</td>
</tr>
<tr>
<td>
<input type="button" class="btn2" value="开始预览" onclick="clickStartRealPlay();" />
</td>
<td>
<input type="button" class="btn2" value="停止预览" onclick="clickStopRealPlay();" />
</td>
<td>
<input type="button" class="btn2" value="设置文本叠加" onclick="setTextOverlay();" />
</td>
<td>
<input type="button" class="btn2" value="销毁插件" onclick="destroyPlugin();" />
</td>
</tr>
<tr>
<td>
<input type="button" class="btn2" value="隐藏插件" onclick="hidPlugin();" /></td>
<td>
<input type="button" class="btn2" value="展示插件" onclick="showPlugin();" /></td>
</tr>
</table>
</fieldset>
<fieldset class="ipchannel">
<legend>数字通道</legend>
<table width="100%" cellpadding="0" cellspacing="3" border="0">
<tr>
<td><input type="button" class="btn" value="获取数字通道列表" onclick="clickGetDigitalChannelInfo();" /></td>
</tr>
<tr>
<td>
<div class="digitaltdiv">
<table id="digitalchannellist" class="digitalchannellist" cellpadding="0" cellspacing="0" border="0"></table>
</div>
</td>
</tr>
</table>
</fieldset>
<fieldset class="localconfig">
<legend>本地配置</legend>
<table cellpadding="0" cellspacing="3" border="0">
<tr>
<td class="tt">播放性能</td>
<td>
<select id="netsPreach" name="netsPreach" class="sel">
<option value="0">最短延时</option>
<option value="1">实时性好</option>
<option value="2">均衡</option>
<option value="3">流畅性好</option>
</select>
</td>
<td class="tt">图像尺寸</td>
<td>
<select id="wndSize" name="wndSize" class="sel">
<option value="0">充满</option>
<option value="1">4:3</option>
<option value="2">16:9</option>
</select>
</td>
</tr>
<tr>
<td class="tt">规则信息</td>
<td>
<select id="rulesInfo" name="rulesInfo" class="sel">
<option value="1">启用</option>
<option value="0">禁用</option>
</select>
</td>
<td class="tt">抓图文件格式</td>
<td>
<select id="captureFileFormat" name="captureFileFormat" class="sel">
<option value="0">JPEG</option>
<option value="1">BMP</option>
</select>
</td>
</tr>
<tr>
<td class="tt">录像文件打包大小</td>
<td>
<select id="packSize" name="packSize" class="sel">
<option value="0">256M</option>
<option value="1">512M</option>
<option value="2">1G</option>
</select>
</td>
<td class="tt">协议类型</td>
<td>
<select id="protocolType" name="protocolType" class="sel">
<option value="0">TCP</option>
<option value="2">UDP</option>
</select>
</td>
</tr>
<tr>
<td class="tt">码流秘钥</td>
<td colspan="3">
<input id="secretKey" type="password" class="txt"/>
</td>
</tr>
<tr>
<td class="tt">录像文件保存路径</td>
<td colspan="3"><input id="recordPath" type="text" class="txt" />&nbsp;<input type="button" class="btn" value="浏览" onclick="clickOpenFileDlg('recordPath', 0);" /></td>
</tr>
<tr>
<td class="tt">回放下载保存路径</td>
<td colspan="3"><input id="downloadPath" type="text" class="txt" />&nbsp;<input type="button" class="btn" value="浏览" onclick="clickOpenFileDlg('downloadPath', 0);" /></td>
</tr>
<tr>
<td class="tt">预览抓图保存路径</td>
<td colspan="3"><input id="previewPicPath" type="text" class="txt" />&nbsp;<input type="button" class="btn" value="浏览" onclick="clickOpenFileDlg('previewPicPath', 0);" /></td>
</tr>
<tr>
<td class="tt">回放抓图保存路径</td>
<td colspan="3"><input id="playbackPicPath" type="text" class="txt" />&nbsp;<input type="button" class="btn" value="浏览" onclick="clickOpenFileDlg('playbackPicPath', 0);" /></td>
</tr>
<tr>
<td class="tt">回放剪辑保存路径</td>
<td colspan="3"><input id="playbackFilePath" type="text" class="txt" />&nbsp;<input type="button" class="btn" value="浏览" onclick="clickOpenFileDlg('playbackFilePath', 0);" /></td>
</tr>
<tr>
<td colspan="4"><input type="button" class="btn" value="获取" onclick="clickGetLocalCfg();" />&nbsp;<input type="button" class="btn" value="设置" onclick="clickSetLocalCfg();" />&nbsp;&nbsp;修改参数后,需要刷新界面后生效。</td>
</tr>
</table>
</fieldset>
</div>
<div class="left">
<fieldset class="preview">
<legend>预览</legend>
<table cellpadding="0" cellspacing="3" border="0">
<tr>
<td class="tt">码流类型</td>
<td>
<select id="streamtype" class="sel">
<option value="1">主码流</option>
<option value="2">子码流</option>
<option value="3">第三码流</option>
<option value="4">转码码流</option>
</select>
</td>
</tr>
<tr>
<td class="tt">音量</td>
<td>
<input type="text" id="volume" class="txt" value="50" maxlength="3" />&nbsp;<input type="button" class="btn" value="设置" onclick="clickSetVolume();" />范围0~100
</td>
<td>
<input type="button" class="btn" value="打开声音" onclick="clickOpenSound();" />
<input type="button" class="btn" value="关闭声音" onclick="clickCloseSound();" />
</td>
</tr>
<tr>
<td class="tt">对讲通道</td>
<td>
<select id="audiochannels" class="sel">
</select>
<input type="button" class="btn" value="获取通道" onclick="clickGetAudioInfo();" />
</td>
<td>
<input type="button" class="btn" value="开始对讲" onclick="clickStartVoiceTalk();" />
<input type="button" class="btn" value="停止对讲" onclick="clickStopVoiceTalk();" />
</td>
</tr>
<tr>
<td colspan="3">
<input type="button" class="btn" value="抓图" onclick="clickCapturePic('preview');" />
<input type="button" class="btn" value="抓图上传" onclick="clickCapturePicData();" />
<input type="button" class="btn" value="开始录像" onclick="clickStartRecord('realplay');" />
<input type="button" class="btn" value="停止录像" onclick="clickStopRecord('realplay');" />
</td>
</tr>
<tr>
<td colspan="3">
<input type="button" class="btn2" value="启用电子放大" onclick="clickEnableEZoom();" />
<input type="button" class="btn2" value="禁用电子放大" onclick="clickDisableEZoom();" />
<input type="button" class="btn2" value="启用3D放大" onclick="clickEnable3DZoom();" />
<input type="button" class="btn2" value="禁用3D放大" onclick="clickDisable3DZoom();" />
<input id="fullbtn" type="button" class="btn" value="全屏" onclick="clickFullScreen();" />
</td>
</tr>
</table>
</fieldset>
<fieldset class="draw">
<legend>绘图</legend>
<table cellpadding="0" cellspacing="3" border="0">
<tr>
<td>
<input type="button" class="btn" value="启用绘制" onclick="clickEnableDraw();" />
<input type="button" class="btn" value="禁用绘制" onclick="clickDisableDraw();" />
</td>
</tr>
<tr>
<td>
图形ID<input id="snapId" type="text" class="txt" />
名称:<input id="snapName" type="text" class="txt" />
</td>
</tr>
<tr>
<td>
<input type="button" class="btn" value="添加图形" onclick="clickAddSnapPolygon()" />
<input type="button" class="btn" value="删除图形" onclick="clickDelSnapPolygon()" />
<input type="button" class="btn" value="获取图形" onclick="clickGetSnapPolygon()" />
<input type="button" class="btn" value="设置图形" onclick="clickSetSnapPolygon()" />
<input type="button" class="btn" value="清空图形" onclick="clickDelAllSnapPolygon()" />
</td>
</tr>
</table>
</fieldset>
<fieldset class="ptz">
<legend>云台控制</legend>
<table cellpadding="0" cellspacing="3" border="0" class="left">
<tr>
<td>
<input type="button" class="btn" value="左上" onmousedown="mouseDownPTZControl(5);" onmouseup="mouseUpPTZControl();" />
<input type="button" class="btn" value="上" onmousedown="mouseDownPTZControl(1);" onmouseup="mouseUpPTZControl();" />
<input type="button" class="btn" value="右上" onmousedown="mouseDownPTZControl(7);" onmouseup="mouseUpPTZControl();" />
</td>
</tr>
<tr>
<td>
<input type="button" class="btn" value="左" onmousedown="mouseDownPTZControl(3);" onmouseup="mouseUpPTZControl();" />
<input type="button" class="btn" value="自动" onclick="mouseDownPTZControl(9);" />
<input type="button" class="btn" value="右" onmousedown="mouseDownPTZControl(4);" onmouseup="mouseUpPTZControl();" />
</td>
</tr>
<tr>
<td>
<input type="button" class="btn" value="左下" onmousedown="mouseDownPTZControl(6);" onmouseup="mouseUpPTZControl();" />
<input type="button" class="btn" value="下" onmousedown="mouseDownPTZControl(2);" onmouseup="mouseUpPTZControl();" />
<input type="button" class="btn" value="右下" onmousedown="mouseDownPTZControl(8);" onmouseup="mouseUpPTZControl();" />
</td>
</tr>
</table>
<table cellpadding="0" cellspacing="3" border="0" class="left">
<tr>
<td class="tt">云台速度</td>
<td>
<select id="ptzspeed" class="sel">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4" selected>4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
</select>
</td>
</tr>
<tr>
<td class="tt">预置点号</td>
<td><input id="preset" type="text" class="txt" value="1" /></td>
</tr>
<tr>
<td colspan="2">
<input type="button" class="btn" value="设置" onclick="clickSetPreset();" />
<input type="button" class="btn" value="调用" onclick="clickGoPreset();" />
</td>
</tr>
</table>
<table cellpadding="0" cellspacing="3" border="0" class="left">
<tr>
<td class="tt"><input type="button" class="btn2" value="变倍+" onmousedown="PTZZoomIn()" onmouseup="PTZZoomStop()"></td>
<td><input type="button" class="btn2" value="变倍-" onmousedown="PTZZoomout()" onmouseup="PTZZoomStop()"></td>
</tr>
<tr>
<td class="tt"><input type="button" class="btn2" value="变焦+" onmousedown="PTZFocusIn()" onmouseup="PTZFoucusStop()"></td>
<td><input type="button" class="btn2" value="变焦-" onmousedown="PTZFoucusOut()" onmouseup="PTZFoucusStop()"></td>
</tr>
<tr>
<td class="tt"><input type="button" class="btn2" value="光圈+" onmousedown="PTZIrisIn()" onmouseup="PTZIrisStop()"></td>
<td><input type="button" class="btn2" value="光圈-" onmousedown="PTZIrisOut()" onmouseup="PTZIrisStop()"></td>
</tr>
</table>
</fieldset>
<fieldset class="playback">
<legend>回放</legend>
<table width="100%" cellpadding="0" cellspacing="3" border="0">
<tr>
<td class="tt">码流类型</td>
<td>
<select id="record_streamtype" class="sel">
<option value="1">主码流</option>
<option value="2">子码流</option>
</select>
</td>
</tr>
<tr>
<td class="tt">开始时间</td>
<td>
<input id="starttime" type="text" class="txt" value="2013-12-10 00:00:00" />时间格式2013-11-11 12:34:56
</td>
</tr>
<tr>
<td class="tt">结束时间</td>
<td>
<input id="endtime" type="text" class="txt" value="2013-12-11 23:59:59" />
<input type="button" class="btn" value="搜索" onclick="clickRecordSearch(0);" />
<input type="button" class="btn" value="停止下载" onclick="clickStopDownload();" />
</td>
</tr>
<tr>
<td class="tt">按时间下载开始时间</td>
<td>
<input id="downloadstarttime" type="text" class="txt" value="2013-12-10 00:00:00" />时间格式2013-11-11 12:34:56
</td>
</tr>
<tr>
<td class="tt">按时间下载结束时间</td>
<td>
<input id="downloadendtime" type="text" class="txt" value="2013-12-11 23:59:59" />
<input type="button" class="btn" value="下载" onclick="clickStartDownloadRecordByTime();" />(相机不支持)
</td>
</tr>
<tr>
<td colspan="2">
<div id="searchdiv" class="searchdiv">
<table id="searchlist" class="searchlist" cellpadding="0" cellspacing="0" border="0"></table>
</div>
</td>
</tr>
<tr>
<td colspan="2">
<input type="button" class="btn2" value="开始回放" onclick="clickStartPlayback();" />
<input type="button" class="btn2" value="停止回放" onclick="clickStopPlayback();" />
<input id="btnReverse" type="button" class="btn" value="倒放" onclick="clickReversePlayback();" />
<input type="button" class="btn" value="单帧" onclick="clickFrame();" />
<input id="transstream" type="checkbox" class="vtop" />&nbsp;启用转码码流
</td>
</tr>
<tr>
<td colspan="2">
<input type="button" class="btn" value="暂停" onclick="clickPause();" />
<input type="button" class="btn" value="恢复" onclick="clickResume();" />
<input type="button" class="btn" value="慢放" onclick="clickPlaySlow();" />
<input type="button" class="btn" value="快放" onclick="clickPlayFast();" />
</td>
</tr>
<tr>
<td colspan="2">
<input type="button" class="btn" value="抓图" onclick="clickCapturePic('playback');" />
<input type="button" class="btn2" value="开始剪辑" onclick="clickStartRecord('playback');" />
<input type="button" class="btn2" value="停止剪辑" onclick="clickStopRecord('playback');" />
<input type="button" class="btn2" value="OSD时间" onclick="clickGetOSDTime();" />&nbsp;<input id="osdtime" type="text" class="txt" readonly />
</td>
</tr>
</table>
</fieldset>
<fieldset class="maintain">
<legend>系统维护</legend>
<table width="100%" cellpadding="0" cellspacing="3" border="0">
<tr>
<td>
<input id="edfpassword" type="password">
<input type="button" class="btn2" value="导出配置文件" onclick="clickExportDeviceConfig();" />
</td>
</tr>
<tr>
<td>
<input type="button" id="checkVersion" class="btn2" value="检查插件版本" onclick="clickCheckPluginVersion();" />
<input type="button" class="btn2" value="恢复默认参数" onclick="clickRestoreDefault();" />
</td>
</tr>
<tr>
<td>
<input id="configFile" type="text" class="txt" />&nbsp;<input type="button" class="btn" value="浏览" onclick="clickOpenFileDlg('configFile', 1);" />&nbsp;<input type="button" class="btn2" value="导入配置文件" onclick="clickImportDeviceConfig();" />
</td>
</tr>
<tr>
<td>
<input id="upgradeFile" type="text" class="txt" />&nbsp;<input type="button" class="btn" value="浏览" onclick="clickOpenFileDlg('upgradeFile', 1);" />&nbsp;<input type="button" class="btn2" value="升级" onclick="clickStartUpgrade();" />
</td>
</tr>
</table>
</fieldset>
</div>
<div class="left">
<fieldset class="operate">
<legend>操作信息</legend>
<div id="opinfo" class="opinfo"></div>
</fieldset>
<fieldset class="callback">
<legend>事件回调信息</legend>
<div id="cbinfo" class="cbinfo"></div>
</fieldset>
</div>
</body>
<script src="./jquery-1.7.1.min.js"></script>
<script id="videonode" src="./webVideoCtrl.js"></script>
<script src="demo.js"></script>
</html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

16
public/config.js Normal file
View File

@@ -0,0 +1,16 @@
window.dt_Config = {
// serverAddress: 'http://127.0.0.1:10056/submit/MESCommonBase.ashx'
serverAddress: 'http://124.220.15.242:9020/submit/MESCommonBase.ashx',
// serverAddress: 'http://10.16.7.30:8010/submit/MESCommonBase.ashx',
// serverAddress: 'http://10.16.7.30:8020/submit/MESCommonBase.ashx', // 假数据
// scrDt: 'http://10.22.20.9:8970/#/',
// src: 'http://localhost:8301',
// src1: 'http://localhost:8302',
// src2: 'http://localhost:8303'
scrDt: 'http://10.22.20.9:80',
src: '34',
src1: '38',
src2: '51',
servicePlc_1_url: 'http://10.22.20.9:41186/api/PLC1'
}

BIN
public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

33
public/index.html Normal file
View File

@@ -0,0 +1,33 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- <meta name="viewport" content="width=device-width,initial-scale=1.0"> -->
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title>设备信息展示平台</title>
<script type="text/javascript">
document.write("<script src='./config.js?v=" + new Date().getTime() + "'><\/script>");
</script>
<script src="./NJZZMonitoringDemo/jquery-1.7.1.min.js"></script>
<script id="videonode" src="./NJZZMonitoringDemo/webVideoCtrl.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
</head>
<body>
<noscript>
<strong>We're sorry but gaojingtv doesn't work properly without JavaScript enabled. Please enable it to
continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
<style slot-scope="true">
body {
/*background-color: #5B9BD5;*/
/*background:rgba(0,0,0,0.2);*/
}
</style>

21
src/App.vue Normal file
View File

@@ -0,0 +1,21 @@
<template>
<div id="app">
<div id="nav">
<!--<router-link to="/">Home</router-link> |-->
<!--<router-link to="/about">About</router-link>-->
</div>
<keep-alive>
<router-view v-if="this.$route.meta.keepAlive"/>
</keep-alive>
<router-view v-if="!this.$route.meta.keepAlive"/>
</div>
</template>
<style>
#app {
font-family: 'Avenir', Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
color: #2c3e50;
}
</style>

View File

@@ -0,0 +1,24 @@
import request from '@/utils/request'
// 电子看板_线体上下线数量统计_查询
export function ANDON_select() {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: 'ANDON_大屏幕显示',
param: 'WorkShopType=A'
}
})
}
export function deleteANDON(param1, param2, param3, param4, param5) {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: 'MES_机加工MES_设备数据采集_报警信息处理_大屏幕',
param: '时间_check=' + param1 + '&开始时间=' + param2 + '&结束时间=' + param3 + '&工位号=' + param4 + '&报警类型=' + param5
}
})
}

View File

@@ -0,0 +1,69 @@
import request from '@/utils/request'
export function getData(num, num1, pageCurrent, pageSize) {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '车间生产管理_设备运行情况_查询数据',
param: '工位号=' + num + '&日期=' + num1,
pagination: pageCurrent + '&' + pageSize
}
})
}
export function getData1(num) {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '车间生产管理_设备运行情况_查询数据_全员',
param: '日期=' + num
}
})
}
export function getData2(num, num1, num2) {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '车间生产管理_设备运行情况_查询数据_折线图',
param: '工位号=' + num + '&开始时间=' + num1 + '&结束时间=' + num2
}
})
}
export function getData3(num, num1, num2) {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '车间生产管理_设备运行情况_查询数据_状态分布图',
param: '工位号=' + num + '&开始时间=' + num1 + '&结束时间=' + num2
}
})
}
// 初始化 人员和工位
export function getMachine() {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: 'MES_机加工MES_工位名称_查询'
}
})
}
// 初始化 状态
export function searchState() {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: 'MES_机加工MES_设备状态查询_初始化'
}
})
}

24
src/api/TVA.js Normal file
View File

@@ -0,0 +1,24 @@
import request from '@/utils/request'
export function machineTypeSelect(num, num1, num2, num3, num4) {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: 'MES_机加工MES_设备数据采集_预测性维修修改_修改',
param: '工位号=' + num + '&运行时间=' + num1 + '&运行周期=' + num2 + '&备注=' + num3 + '&维护项目ID=' + num4
}
})
}
export function machineTypeEdit(num, num1) {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: 'MES_机加工MES_设备数据采集_预测性维修维护_维护',
param: '工位号=' + num + '&@维护项目ID=' + num1
}
})
}

34
src/api/TVC.js Normal file
View File

@@ -0,0 +1,34 @@
import request from '@/utils/request'
// 电子看板_线体上下线数量统计_查询
export function ANDON_select() {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: 'ANDON_大屏幕显示',
param: 'WorkShopType=A'
}
})
}
//
export function progressSpeed() {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: 'ANDON_订单信息_查询'
}
})
}
export function ANDON_countselect() {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: 'ANDON_实时呼叫分类统计_查询'
}
})
}

156
src/api/digitalSignage.js Normal file
View File

@@ -0,0 +1,156 @@
import request from '@/utils/request'
// 电子看板_线体上下线数量统计_查询
export function numberCount() {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: 'MES_机加工MES_设备数据采集_设备实时电流电压_查询'
}
})
}
// 电子看板_计划产量更新_大柴
export function ConfirmSubmit() {
return request({
url: '',
method: 'post',
data: {
type: '2',
name: '电子看板_计划产量更新_大柴',
param: '今日目标=' + arguments[0] + '&当班目标=' + arguments[1]
}
})
}
// 电子看板_历史订单查询_大柴
export function histroyorder() {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '电子看板_历史订单查询_大柴'
}
})
}
// 获取开机时间
export function switchontime() {
return request({
url: '',
method: 'post',
data: {
type: '3',
name: 'select top 1 开关机时间 from[dbo].[MES_机加工MES_设备数据采集_开关机状态_历史数据表] where 工位号 = \'OP6010\' and 开关机状态代码 = \'1\' order by 序号 desc'
}
})
}
// 获取关机机时间
export function switchofftime() {
return request({
url: '',
method: 'post',
data: {
type: '3',
name: 'select top 1 开关机时间 from[dbo].[MES_机加工MES_设备数据采集_开关机状态_历史数据表] where 工位号 = \'OP6010\' and 开关机状态代码 = \'0\' order by 序号 desc'
}
})
}
// 获取设备利用率
export function obtainequipmentutilization() {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '设备利用率负载率_查询_大屏幕'
}
})
}
// 电子看板_工位缺陷统计_查询
export function defectSelect() {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '电子看板_工位缺陷统计_查询'
}
})
}
// 电子看板_班次产量_查询
export function classSelect() {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '电子看板_班次产量_查询'
}
})
}
// 电子看板_OEE_查询
export function OEESelect() {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '电子看板_OEE_查询'
}
})
}
// 大柴OEE柱状图
export function histogram() {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '测量数据_过站信息_瓶颈工位显示'
}
})
}
// 大柴内装柱状图
export function histogram51() {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '测量数据_过站信息_内装瓶颈工位显示top10'
}
})
}
// 大柴外装柱状图
export function histogram52() {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '测量数据_过站信息_外装瓶颈工位显示top10'
}
})
}
// 电子看板_工位缺陷统计_查询
export function getStates() {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: 'MES_设备数据采集_查询额定电流'
}
})
}
export function machineTypeSelect() {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: 'MES_设备数据采集_备件直采_查询',
param: '工位号_check=' + arguments[0] + '&工位号=' + arguments[1]
}
})
}

133
src/api/test.js Normal file
View File

@@ -0,0 +1,133 @@
import request from '@/utils/request'
// 判断登陆角色
export function judgeRole() {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '菜单模块系统_人员角色_查询数据_根据人角色编号',
param: '编号=' + arguments[0]
}
})
}
// 初始化MU
export function initMU() {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '菜单模块系统_人员角色_查询数据_父节点_部门查询',
param: '人员编号=' + arguments[0] + '&部门代码=' + '0'
}
})
}
// 查询生产奖金
export function searchBonus() {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '奖金绩效系统_蓝领奖金基数查询',
param: '月份=' + arguments[0] + '&MU_Department=' + arguments[1]
}
})
}
// 除MU外部门查询Segment
export function selectSegment() {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '菜单模块系统_人员角色_查询数据_父节点_部门查询',
param: '人员编号=' + arguments[0] + '&部门代码=' + arguments[1]
}
})
}
// MU查询Segment
export function selectSegmentForMU() {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '菜单模块系统_人员角色_查询数据_父节点_Segment',
param: '人员编号=' + arguments[0] + '&部门代码=' + arguments[1]
}
})
}
// 除Segment外部门查询PV
export function selectPV() {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '菜单模块系统_人员角色_查询数据_父节点_部门查询',
param: '人员编号=' + arguments[0] + '&部门代码=' + arguments[1]
}
})
}
// Segment查询PV
export function selectPVForSegment() {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '菜单模块系统_人员角色_查询数据_父节点_PV',
param: '人员编号=' + arguments[0] + '&部门代码=' + arguments[1]
}
})
}
// 执行保存
export function handleSave() {
return request({
url: '',
method: 'post',
data: {
type: '2',
name: '奖金绩效系统_蓝领奖金基数修改_MU',
param: 'id=' + arguments[0] + '&奖金基数=' + arguments[1]
}
})
}
// 确认审核
export function ConfirmSubmit() {
return request({
url: '',
method: 'post',
data: {
type: '2',
name: '奖金绩效系统_蓝领奖金基数确认审核_MU',
param: '月份=' + arguments[0] + '&MU_Department=' + arguments[1]
}
})
}
// 是否确认审核
export function isCanConfirmSubmit() {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '奖金绩效系统_蓝领奖金基数确认审核_是否可以审核',
param: '月份=' + arguments[0] + '&MU_Department=' + arguments[1]
}
})
}
// 查询冻结权限
export function initrole() {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '输入权限判断'
}
})
}

BIN
src/assets/image/GQlogo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
src/assets/image/MT.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

BIN
src/assets/image/OP1010.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 MiB

BIN
src/assets/image/OP1010.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

BIN
src/assets/image/OP1020.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

BIN
src/assets/image/OP1030.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 MiB

BIN
src/assets/image/OP6010.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

BIN
src/assets/image/OP6010.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

BIN
src/assets/image/OP6020.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 566 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 765 KiB

BIN
src/assets/image/OP6030.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 313 KiB

BIN
src/assets/image/OP6040.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 413 KiB

BIN
src/assets/image/OP6050.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 422 KiB

BIN
src/assets/image/OP6060.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 KiB

BIN
src/assets/image/OP6070.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 524 KiB

BIN
src/assets/image/OP6080.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 483 KiB

BIN
src/assets/image/OP6090.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 360 KiB

BIN
src/assets/image/OP6100.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 490 KiB

BIN
src/assets/image/OP6110.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 439 KiB

BIN
src/assets/image/OP6120.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 383 KiB

BIN
src/assets/image/OP6130.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 400 KiB

BIN
src/assets/image/OP6140.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 511 KiB

BIN
src/assets/image/OP6150.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 352 KiB

BIN
src/assets/image/OP6160.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 460 KiB

BIN
src/assets/image/OP6170.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 KiB

BIN
src/assets/image/OP6180.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 651 KiB

BIN
src/assets/image/OP6190.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 769 KiB

BIN
src/assets/image/OP6200.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 431 KiB

BIN
src/assets/image/OP6210.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 431 KiB

BIN
src/assets/image/WCLOGO.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 KiB

BIN
src/assets/image/s1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
src/assets/image/s2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

BIN
src/assets/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

@@ -0,0 +1,43 @@
<template>
<svg :class="svgClass" aria-hidden="true">
<use :xlink:href="iconName"/>
</svg>
</template>
<script>
export default {
name: 'SvgIcon',
props: {
iconClass: {
type: String,
required: true
},
className: {
type: String,
default: ''
}
},
computed: {
iconName() {
return `#icon-${this.iconClass}`
},
svgClass() {
if (this.className) {
return 'svg-icon ' + this.className
} else {
return 'svg-icon'
}
}
}
}
</script>
<style scoped>
.svg-icon {
width: 1em;
height: 1em;
vertical-align: -0.15em;
fill: currentColor;
overflow: hidden;
}
</style>

370
src/icon/demo.css Normal file
View File

@@ -0,0 +1,370 @@
*{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;
}

30
src/icon/iconfont.css Normal file
View File

@@ -0,0 +1,30 @@
@font-face {font-family: "fontFamily";
src: url('iconfont.eot?t=1527493375212'); /* IE9*/
src: url('iconfont.eot?t=1527493375212#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAAXoAAsAAAAACHwAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADMAAABCsP6z7U9TLzIAAAE8AAAARAAAAFZW7kf3Y21hcAAAAYAAAABjAAABnM7GacRnbHlmAAAB5AAAAfsAAAIsdf0weGhlYWQAAAPgAAAALwAAADYRguv+aGhlYQAABBAAAAAcAAAAJAfeA4VobXR4AAAELAAAABAAAAAQD+kAAGxvY2EAAAQ8AAAACgAAAAoBjAC6bWF4cAAABEgAAAAfAAAAIAEaAF1uYW1lAAAEaAAAAVMAAAKFV8s9R3Bvc3QAAAW8AAAAKgAAADsY6RIYeJxjYGRgYOBikGPQYWB0cfMJYeBgYGGAAJAMY05meiJQDMoDyrGAaQ4gZoOIAgCKIwNPAHicY2Bk/sU4gYGVgYOpk+kMAwNDP4RmfM1gxMjBwMDEwMrMgBUEpLmmMDgwVDzjZm7438AQw9zA0AAUZgTJAQAk0wx5eJzFkNENgCAMRK+ChIij+GkcyC9HYOKugdfCDxNw5JX2ckkJAHYAgVwkAvJBYHrpivsBh/sRD+fMs/GumrS0NnUm8UT2LlhSEpZJ1q2edXq9x2T/XQd8oqaO+Vo62H4fLw+3AHicLZC/b9NAFMffu6udpM0PbMdx4jQ/LhfXoDRBtpN2IGkXkArNgNQpKkiNYlSBRNd2YKiQEB0YWFDFCkiIiYEfytAJVbDTv6CFjYXSFhbsckE53dP3fZ/e6X3egQRwfkj3aBY0uAgOXIWbACjXsJIkBWR2s0FqqDNJN9JJanObRXilQTtoVOR0xp1rzhhyRE5hEovoMXfObhAbW80FcgXdTAExlzdXVGtapU9xMmsXH4U3yAvUS3w6tVAPr88upt2yFt2Mq2pOVZ9EZUmKEjKRSuJ9IxOTYpNy+EpKmfpe6RIpYTxnm91eopxX+zvNjYJlxBC3t1HLl5OvFxVTEfeBmdHUXORCIpo1E7yaxs3vU1ktXpj5BuJExK7P6A/agwmIQhxyUAAGltiXKUyxmM5GicaF4Yqns5ZnoCjqns5RBK0GlO4Hy7gTbuFRcESKu6vBvdVdAurL4DF2w/cHB1jvdGjvb5uy9Q/B3VFt1E27x8cPw2vtdpt83QIxGc6f0190A6hgmoKU+HsD8lACDpfBg3kAQ4AYo5ljRcFEecuTRG6NeSzeEpj/QTkVfl5EFofh0trp6dpY8RMOBycnwbLrkpLjBIdC3w1+zvaxduez73/x/XUc3jrDjzi8/RtXwiXx7u2Z7zhOmHbq+8JXB3/CN/1+H+AfnVR/vQB4nGNgZGBgAOLuWSW34/ltvjJwszCAwHXDy/8R9P+pLAzMeUAuBwMTSBQAWOoL7AB4nGNgZGBgbvjfwBDDwgACQJKRARWwAABHCgJtBAAAAAPpAAAEAAAABAAAAAAAAAAAdgC6ARYAAHicY2BkYGBgYQhk4GEAASYg5gJCBob/YD4DABGzAXgAeJxtkk1uwjAQhZ/LT9UgddHSdlmvWBQp/CzZooZlJRbsQ3AgKIkjxyDRXQ/Q8/QQPUE3vUHv0EcwQkIk8uibN2/GthIAd/iFwOF54DqwgMfswFe4xrPjGvWO4zq577iBFkaOm9RfHXvo4s1xC/d45wRRv2H2gk/HAm18Ob7CLb4d16j/OK6T/xw38CiE4yba4smxh5noOm6hIz68sVGhVQs538kk0nmsc+vtQxBmSbqbquUmDc1JONFMmTLRuRz4/ZM4Ubkyx3nldjm0Npax0ZkM6FFpqmVh9FpF1l9ZW4x6vdjpfqQzHm8MA4UQlnEBiTl2jAkiaOSIq2jpO1JAb8Z6St+UPUtsyCGnXHJc0mbsMiiZ7WsSA/j8ZJecEzrzyn1+vhJb7jykatkpuQz7M1Lg5ihOSMkSRVVbU4mo+1hVXQV/jR7f+MzvVzfP/gHCFnRdAHicY2BigAAuBuyAhZGJkZmRhZGVgbGCycCSI7WoPDUzN9GQgQEAJkQEKgAA') format('woff'),
url('iconfont.ttf?t=1527493375212') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
url('iconfont.svg?t=1527493375212#fontFamily') format('svg'); /* iOS 4.1- */
}
.fontFamily {
font-family:"fontFamily" !important;
font-size:16px;
font-style:normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
[class^="el-icon-cjn"], [class*=" el-icon-cjn"] {
font-family:"fontFamily" !important;
/* 以下内容参照第三方图标库本身的规则 */
font-size: 13px;
font-style:normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.el-icon-cjn-09:before { content: "\e60b"; }
.el-icon-cjn-erweima1:before { content: "\e606"; }

BIN
src/icon/iconfont.eot Normal file

Binary file not shown.

1
src/icon/iconfont.js Normal file
View File

@@ -0,0 +1 @@
(function(window) { var svgSprite = '<svg><symbol id="el-icon-cjn-09" viewBox="0 0 1024 1024"><path d="M804.141176 39.152941H39.152941v963.764706h963.764706V201.788235l-198.776471-162.635294z m-493.929411 60.235294h391.529411v180.705883h-391.529411v-180.705883z m481.882353 843.294118h-542.117647v-331.294118h542.117647v331.294118z m150.588235 0h-90.352941v-391.529412h-662.588236v391.529412h-90.352941v-843.294118h150.588236v240.941177h512v-240.941177h18.070588l162.635294 129.505883v713.788235z" fill="#2c2c2c" ></path><path d="M310.211765 671.623529h331.294117v60.235295h-331.294117zM310.211765 792.094118h210.823529v60.235294h-210.823529zM611.388235 129.505882h60.235294v120.470589h-60.235294z" fill="#2c2c2c" ></path></symbol><symbol id="el-icon-cjn-erweima1" viewBox="0 0 1024 1024"><path d="M23.92225303 998.84837371l439.58598408 0L463.50823711 559.26238962 23.92225303 559.26238962 23.92225303 998.84837371zM119.78212494 651.01398129l243.75796004 0 0 245.12738674L119.78212494 896.14136803 119.78212494 651.01398129z" ></path><path d="M23.92225303 457.92481072l439.58598408 0 0-439.58598412L23.92225303 18.33882658 23.92225303 457.92481072zM119.78212494 111.45984508l243.75796004 0 0 245.12738672L119.78212494 356.5872318 119.78212494 111.45984508z" ></path><path d="M570.32352297 18.33882658l0 439.58598414L1009.90950704 457.92481072l0-439.58598412L570.32352297 18.33882658zM911.31078166 355.21780509L667.55282162 355.21780509l0-245.12738681 243.75796004 0L911.31078166 355.21780509z" ></path><path d="M218.38085034 210.05857039l49.29936273 0 0 49.29936276-49.29936273 0 0-49.29936276Z" ></path><path d="M760.67384005 210.05857039l49.29936271 0 0 49.29936276-49.29936273 0 0-49.29936276Z" ></path><path d="M218.38085034 750.98213347l49.29936273 0 0 49.29936266-49.29936273 0 0-49.29936266Z" ></path><path d="M908.57192818 755.09041369L809.97320276 755.09041369 809.97320276 559.26238962 570.32352297 559.26238962 570.32352297 998.84837371 614.14517874 998.84837371 614.14517874 707.16047766 711.37447735 707.16047766 711.37447735 805.75920314 1009.90950704 805.75920314 1009.90950704 559.26238962 908.57192818 559.26238962Z" ></path><path d="M711.37447735 901.61907503l99.96815218 0 0 97.22929868-99.96815218 0 0-97.22929868Z" ></path><path d="M909.94135491 901.61907503l99.96815213 0 0 97.22929868-99.96815213 0 0-97.22929868Z" ></path></symbol></svg>'; var script = (function() { var scripts = document.getElementsByTagName('script'); return scripts[scripts.length - 1] }()); var shouldInjectCss = script.getAttribute('data-injectcss'); var ready = function(fn) { if (document.addEventListener) { if (~['complete', 'loaded', 'interactive'].indexOf(document.readyState)) { setTimeout(fn, 0) } else { var loadFn = function() { document.removeEventListener('DOMContentLoaded', loadFn, false); fn() }; document.addEventListener('DOMContentLoaded', loadFn, false) } } else if (document.attachEvent) { IEContentLoaded(window, fn) } function IEContentLoaded(w, fn) { var d = w.document, done = false, init = function() { if (!done) { done = true; fn() } }; var polling = function() { try { d.documentElement.doScroll('left') } catch (e) { setTimeout(polling, 50); return }init() }; polling(); d.onreadystatechange = function() { if (d.readyState == 'complete') { d.onreadystatechange = null; init() } } } }; var before = function(el, target) { target.parentNode.insertBefore(el, target) }; var prepend = function(el, target) { if (target.firstChild) { before(el, target.firstChild) } else { target.appendChild(el) } }; function appendSvg() { var div, svg; div = document.createElement('div'); div.innerHTML = svgSprite; svgSprite = null; svg = div.getElementsByTagName('svg')[0]; if (svg) { svg.setAttribute('aria-hidden', 'true'); svg.style.position = 'absolute'; svg.style.width = 0; svg.style.height = 0; svg.style.overflow = 'hidden'; prepend(svg, document.body) } } if (shouldInjectCss && !window.__iconfont__svg__cssinject__) { window.__iconfont__svg__cssinject__ = true; try { document.write('<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>') } catch (e) { console && console.log(e) } }ready(appendSvg) })(window)

39
src/icon/iconfont.svg Normal file
View File

@@ -0,0 +1,39 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<!--
2013-9-30: Created.
-->
<svg>
<metadata>
Created by iconfont
</metadata>
<defs>
<font id="fontFamily" horiz-adv-x="1024" >
<font-face
font-family="fontFamily"
font-weight="500"
font-stretch="normal"
units-per-em="1024"
ascent="896"
descent="-128"
/>
<missing-glyph />
<glyph glyph-name="x" unicode="x" horiz-adv-x="1001"
d="M281 543q-27 -1 -53 -1h-83q-18 0 -36.5 -6t-32.5 -18.5t-23 -32t-9 -45.5v-76h912v41q0 16 -0.5 30t-0.5 18q0 13 -5 29t-17 29.5t-31.5 22.5t-49.5 9h-133v-97h-438v97zM955 310v-52q0 -23 0.5 -52t0.5 -58t-10.5 -47.5t-26 -30t-33 -16t-31.5 -4.5q-14 -1 -29.5 -0.5
t-29.5 0.5h-32l-45 128h-439l-44 -128h-29h-34q-20 0 -45 1q-25 0 -41 9.5t-25.5 23t-13.5 29.5t-4 30v167h911zM163 247q-12 0 -21 -8.5t-9 -21.5t9 -21.5t21 -8.5q13 0 22 8.5t9 21.5t-9 21.5t-22 8.5zM316 123q-8 -26 -14 -48q-5 -19 -10.5 -37t-7.5 -25t-3 -15t1 -14.5
t9.5 -10.5t21.5 -4h37h67h81h80h64h36q23 0 34 12t2 38q-5 13 -9.5 30.5t-9.5 34.5q-5 19 -11 39h-368zM336 498v228q0 11 2.5 23t10 21.5t20.5 15.5t34 6h188q31 0 51.5 -14.5t20.5 -52.5v-227h-327z" />
<glyph glyph-name="09" unicode="&#58891;" d="M804.141 856.847h-764.988v-963.765h963.765v801.129l-198.776 162.635zM310.212 796.612h391.529v-180.706h-391.529v180.706zM792.094-46.682h-542.118v331.294h542.118v-331.294zM942.682-46.682h-90.353v391.529h-662.588v-391.529h-90.353v843.294h150.588v-240.941h512v240.941h18.071l162.635-129.506v-713.788zM310.212 224.376h331.294v-60.235h-331.294zM310.212 103.906h210.824v-60.235h-210.824zM611.388 766.494h60.235v-120.471h-60.235z" horiz-adv-x="1024" />
<glyph glyph-name="erweima1" unicode="&#58886;" d="M23.92225303-102.84837371000003l439.58598408 0L463.50823711 336.73761038 23.92225303 336.73761038 23.92225303-102.84837371000003zM119.78212494 244.98601871000005l243.75796004 0 0-245.12738674L119.78212494-0.1413680299999669 119.78212494 244.98601871000005zM23.92225303 438.07518928l439.58598408 0 0 439.58598412L23.92225303 877.66117342 23.92225303 438.07518928zM119.78212494 784.54015492l243.75796004 0 0-245.12738672L119.78212494 539.4127682000001 119.78212494 784.54015492zM570.32352297 877.66117342l0-439.58598414L1009.90950704 438.07518928l0 439.58598412L570.32352297 877.66117342zM911.31078166 540.78219491L667.55282162 540.78219491l0 245.12738681 243.75796004 0L911.31078166 540.78219491zM218.38085034 685.94142961l49.29936273 0 0-49.29936276-49.29936273 0 0 49.29936276ZM760.67384005 685.94142961l49.29936271 0 0-49.29936276-49.29936273 0 0 49.29936276ZM218.38085034 145.01786653l49.29936273 0 0-49.29936266-49.29936273 0 0 49.29936266ZM908.57192818 140.90958631L809.97320276 140.90958631 809.97320276 336.73761038 570.32352297 336.73761038 570.32352297-102.84837371000003 614.14517874-102.84837371000003 614.14517874 188.83952234000003 711.37447735 188.83952234000003 711.37447735 90.24079686000005 1009.90950704 90.24079686000005 1009.90950704 336.73761038 908.57192818 336.73761038ZM711.37447735-5.619075029999976l99.96815218 0 0-97.22929868-99.96815218 0 0 97.22929868ZM909.94135491-5.619075029999976l99.96815213 0 0-97.22929868-99.96815213 0 0 97.22929868Z" horiz-adv-x="1024" />
</font>
</defs></svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

BIN
src/icon/iconfont.ttf Normal file

Binary file not shown.

BIN
src/icon/iconfont.woff Normal file

Binary file not shown.

9
src/icons/index.js Normal file
View File

@@ -0,0 +1,9 @@
import Vue from 'vue'
import SvgIcon from '@/components/SvgIcon' // svg组件
// register globally
Vue.component('svg-icon', SvgIcon)
const requireAll = requireContext => requireContext.keys().map(requireContext)
const req = require.context('./svg', false, /\.svg$/)
requireAll(req)

View File

@@ -0,0 +1 @@
<svg class="icon" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="200" height="200"><defs><style/></defs><path d="M713.223 862.109v-31.181c42.873 0 81.85-19.488 109.133-46.772 23.386-27.283 42.875-62.362 42.875-105.235 0-38.977-19.488-74.055-42.875-101.338-27.283-27.284-66.26-42.874-109.133-42.874V499.63c50.669 0 97.441 19.488 132.52 54.567 31.18 31.181 50.668 74.055 50.668 124.725 0 50.669-19.488 97.441-50.669 128.621-35.078 35.078-81.85 54.566-132.52 54.566zm0-85.748c7.795 3.898 11.693 3.898 19.488 3.898 23.385 0 38.976-3.898 54.567-11.694V745.18c-15.59 7.795-31.182 11.693-50.67 11.693-7.795 0-15.59 0-23.385-3.898v23.386zm0-163.7c7.795-3.898 19.488-7.796 27.283-7.796 15.59 0 31.181 3.898 46.772 11.693v-23.385c-11.694-7.796-27.284-7.796-46.772-7.796h-27.283v27.284zm-97.44-428.74c7.795 7.795 19.488 15.59 27.283 23.385 35.079 35.08 54.567 77.953 54.567 128.622 0 50.669-19.488 97.441-54.567 132.52-7.795 7.795-19.488 15.59-27.283 23.385v-42.874l3.897-3.898c27.284-27.283 42.875-66.26 42.875-109.133 0-38.977-15.59-77.953-42.875-105.236l-3.897-3.898v-42.873zm97.44 315.708v35.08c-38.977 0-74.055 11.693-97.441 38.976V530.81c27.284-19.488 62.362-31.182 97.44-31.182zm0 85.748v27.284c-7.796 0-15.59 7.795-23.386 11.693-15.59 15.59-19.488 31.181-19.488 58.464 0 23.386 3.898 38.977 15.59 54.567 7.796 7.796 19.488 11.694 27.284 15.59v23.386c-19.488-3.898-35.079-11.693-46.771-23.386-15.59-19.488-23.386-42.873-23.386-70.158 0-31.18 7.796-54.566 27.283-70.157 11.693-11.692 27.284-19.487 42.874-27.283zm0 245.55v31.182c-35.079 0-70.158-11.693-97.441-31.181V791.95c23.386 23.387 58.465 38.977 97.44 38.977zM514.443 152.74c35.08 0 70.159 11.693 101.339 31.18v42.874c-27.284-23.385-62.363-38.976-101.338-38.976V152.74zm101.34 339.094c-31.181 19.488-66.26 27.283-101.338 27.283v-31.181c38.976 0 74.054-15.59 101.338-38.977v42.875zm0 38.976v42.874c-3.898 0-3.898 0-7.796 3.898-27.283 27.283-42.873 62.362-42.873 101.338 0 42.873 15.59 77.952 42.873 105.235l7.796 7.796v38.977c-11.694-3.898-23.386-11.694-31.181-23.386-31.182-31.181-54.567-77.952-54.567-128.621 0-50.67 23.385-93.544 54.567-124.725 11.692-11.692 19.487-15.59 31.18-23.386zM514.443 382.7v-23.385h31.182l-27.284-81.85c-3.897 0-3.897-3.898-3.897-11.694v-23.386h11.693l74.055 190.984h-27.284L553.42 382.7h-38.976zm0-229.96v35.079c-38.976 0-74.054 15.59-101.337 38.976v-42.873c31.18-19.489 62.362-31.182 101.338-31.182zm0 366.377c-38.976 0-70.157-7.795-101.337-27.283V448.96c27.283 23.386 62.362 38.977 101.338 38.977v31.18zm0-276.732v23.386c-3.897 3.898-3.897 11.693-3.897 11.693l-27.284 81.85h31.182V382.7h-38.977l-19.488 50.67h-27.283l74.054-190.985h11.694zm-101.337 592.44v-42.874l7.795-7.796c27.284-27.283 42.874-62.362 42.874-105.235 0-38.977-15.59-74.055-42.874-101.338-3.898-3.898-3.898-3.898-7.795-3.898V530.81c11.693 7.796 19.487 15.59 31.18 23.386 31.182 31.181 50.67 74.055 50.67 124.725h3.898-3.898c0 50.669-19.488 97.44-50.67 128.621-11.693 11.693-19.488 19.489-31.18 27.283zm0-342.991c-11.694-7.796-19.488-15.59-27.284-23.386-35.079-35.079-54.567-81.85-54.567-132.52 0-50.668 19.488-93.543 54.567-128.62 7.796-7.796 19.488-15.59 27.284-23.386v42.873l-3.898 3.898c-27.284 27.284-46.771 66.26-46.771 105.236 0 42.873 19.487 81.85 46.77 109.133l3.899 3.898v42.874zm0 38.976v42.874c-27.284-27.284-62.363-38.977-97.442-38.977v-35.079c35.08.001 70.158 11.695 97.442 31.182zm0 261.142v42.874c-27.284 15.59-62.363 27.284-97.442 27.284v-31.182c35.08 0 70.158-15.59 97.442-38.976zm-97.442-15.591v-23.386c7.796 0 15.59-3.897 23.386-7.795 3.898-7.796 7.796-15.59 7.796-23.386 0-19.488-11.694-31.181-31.182-35.079V663.33c3.898 0 7.796-3.898 11.694-7.796 7.795-3.898 11.693-11.693 11.693-23.386s-7.796-19.487-23.386-23.385v-19.488c11.694 0 23.386 3.898 35.08 11.693 7.795 7.796 15.59 15.59 15.59 27.284 0 11.693-3.898 19.488-11.694 27.283-3.898 7.796-11.693 15.59-23.386 15.59v3.898c11.694 0 23.386 3.898 31.182 11.693 7.795 11.694 11.693 19.488 11.693 35.08s-3.898 27.283-15.59 38.976c-11.694 7.794-27.285 15.589-42.876 15.589zm0-276.732v35.08h-3.897c-38.977 0-77.953 15.59-105.236 42.873-27.284 27.283-42.874 62.362-42.874 101.338 0 42.873 15.59 77.952 42.874 105.235 27.283 27.284 66.26 46.772 105.236 46.772h3.897v31.18h-3.897c-46.772 0-93.544-19.487-128.622-54.566-31.181-31.181-50.669-77.952-50.669-128.621h-3.898 3.898c0-50.67 19.488-93.544 50.67-124.725h3.897c31.181-35.079 77.952-54.567 124.725-54.567h3.896v.001zm0 89.646c-3.897 0-3.897-3.898-7.795-3.898h-54.567v190.984h62.362v-23.386h-38.976v-66.26h38.976V663.33c-7.795 0-11.693 3.897-15.59 3.897H276.69v-58.464h38.976v-19.488z"/></svg>

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

@@ -0,0 +1 @@
<svg class="icon" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="200" height="200"><defs><style/></defs><path d="M305.664 664.064a92.16 92.16 0 0 0 92.16 92.16h223.232a92.16 92.16 0 0 0 92.16-92.16V480.307a203.776 203.776 0 0 0-407.552 0zm61.44-183.757a142.336 142.336 0 0 1 284.672 0v183.757a30.72 30.72 0 0 1-30.72 30.72H397.824a30.72 30.72 0 0 1-30.72-30.72zM770.406 773.12H248.474a71.68 71.68 0 1 0 0 143.616h521.932a71.68 71.68 0 1 0 0-143.616zm0 82.176H248.474a10.24 10.24 0 1 1 0-20.736h521.932a10.24 10.24 0 1 1 0 20.736z"/><path d="M435.2 645.12a30.72 30.72 0 0 0 30.72-30.72v-98.048a30.72 30.72 0 0 0-61.44 0V614.4a30.72 30.72 0 0 0 30.72 30.72zM512 241.51a30.72 30.72 0 0 0 30.72-30.72V145.1a30.72 30.72 0 0 0-61.44 0v65.69A30.72 30.72 0 0 0 512 241.51zm225.28 129.946a30.362 30.362 0 0 0 15.36-4.147l56.883-32.82a30.72 30.72 0 0 0-30.72-53.247l-56.883 32.87a30.72 30.72 0 0 0 15.36 57.344zM214.733 334.49l56.883 32.819a30.362 30.362 0 0 0 15.36 4.147 30.72 30.72 0 0 0 15.36-57.344l-56.883-32.87a30.72 30.72 0 0 0-30.72 53.248z"/></svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -0,0 +1 @@
<svg class="icon" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="200" height="200"><defs><style/></defs><path d="M889.6 127.488H141.696c-38.656 0-70.08 31.488-70.08 70.144v467.392c0 38.656 31.488 70.144 70.08 70.144h342.976v99.456H368.384c-18.688 0-33.792 13.888-33.792 30.976s15.104 30.976 33.792 30.976h294.592c18.688 0 33.792-13.888 33.792-30.976s-15.104-30.976-33.792-30.976H546.688v-99.456H889.6c38.656 0 70.144-31.424 70.144-70.144V197.568c0-38.592-31.424-70.08-70.144-70.08zm4.864 526.592a22.272 22.272 0 0 1-22.272 22.336H159.168a22.272 22.272 0 0 1-22.272-22.336V208.512c0-12.352 10.048-22.272 22.272-22.272h713.024c12.288 0 22.272 9.92 22.272 22.272V654.08zM566.976 313.984c-13.184-10.624-23.936-2.88-23.936 15.872v49.984h-2.176c-77.056 0-208.128 89.024-209.216 168.192 0 6.336 5.12 8.128 10.048 0 24.896-44.416 129.536-67.456 182.848-67.456h18.496v52.736c0 15.744 11.648 26.496 24.896 15.872l121.856-97.792c13.184-10.56 13.184-27.904 0-38.528l-122.816-98.88z"/></svg>

After

Width:  |  Height:  |  Size: 997 B

View File

@@ -0,0 +1 @@
<svg class="icon" viewBox="0 0 1026 1024" xmlns="http://www.w3.org/2000/svg" width="200.391" height="200"><defs><style/></defs><path d="M983.515 41.343c-.143 0-.143 0 0 0C956.763 14.592 921.428 0 883.66 0H605.416c-48.782 0-105.862 7.01-158.507 59.655l-38.482 38.482-78.967 78.967-.286.286c-14.02 14.02-14.02 36.623 0 50.5a35.574 35.574 0 0 0 50.499 0l.286-.287c6.008-6.008 102.142-102 117.592-117.45 32.331-32.187 65.234-38.768 108.008-38.768h278.245c18.598 0 36.05 7.296 49.212 20.314 13.161 13.162 20.314 30.614 20.314 49.069h.572c-.286 3.147-.572 6.437-.572 10.014V411.86c0 39.484-4.72 80.541-38.625 114.589C906.12 535.032 796.54 644.47 796.54 644.47l.143.143c-14.02 14.02-14.02 36.622 0 50.499 14.02 14.02 36.622 14.02 50.499 0l79.396-79.397c19.456-19.456 35.621-35.621 38.769-38.625 52.788-52.788 59.511-116.02 59.654-165.088l.143-271.092c-.429-37.481-15.02-72.96-41.63-99.568z"/><path d="M847.325 177.104c-41.773-41.772-109.725-41.772-151.497 0-41.773 41.773-41.773 109.725 0 151.497 41.772 41.773 109.724 41.773 151.497 0 41.773-41.772 41.773-109.724 0-151.497zm-50.5 100.998c-13.876 13.877-36.622 13.877-50.498 0-13.877-13.876-13.877-36.622 0-50.499 13.876-13.876 36.622-13.876 50.499 0 13.876 13.877 13.876 36.623 0 50.5zM704.411 736.742S510.712 930.155 508.71 932.158c-13.162 13.16-30.614 20.314-49.212 20.457-18.597 0-36.05-7.296-49.211-20.457L91.842 614.142c-13.16-12.588-20.457-30.614-20.457-49.211 0-18.597 7.296-35.907 20.457-49.068L287.687 320.16l-.143-.143c14.02-14.02 14.02-36.623 0-50.5-14.02-14.019-36.623-14.019-50.499 0l-79.396 79.397C103.859 402.705 42.202 464.22 41.2 465.22 14.735 491.972 0 527.307 0 564.931c0 37.624 14.592 72.959 41.343 99.71l318.302 318.016c26.608 26.608 62.086 41.343 99.71 41.343 37.624 0 73.102-14.592 99.71-41.343 1.145-1.145 62.516-62.516 116.306-116.162l79.396-79.397c14.02-14.02 14.02-36.622 0-50.499-13.876-13.733-36.48-13.733-50.356.143z"/></svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1 @@
<svg class="icon" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="200" height="200"><defs><style/></defs><path d="M636.416 861.184c-14.336 0-25.6-11.264-25.6-25.6V620.032c0-50.176-40.448-90.624-90.624-90.624-78.336 0-141.824-63.488-141.824-141.824V192.512c0-14.336 11.264-25.6 25.6-25.6s25.6 11.264 25.6 25.6v195.072c0 50.176 40.448 90.624 90.624 90.624 78.336 0 141.824 63.488 141.824 141.824v215.552c0 14.336-11.264 25.6-25.6 25.6z"/><path d="M403.456 861.184c-14.336 0-25.6-11.264-25.6-25.6V620.032c0-78.336 63.488-141.824 141.824-141.824 50.176 0 90.624-40.448 90.624-90.624V192.512c0-14.336 11.264-25.6 25.6-25.6s25.6 11.264 25.6 25.6v195.072c0 78.336-63.488 141.824-141.824 141.824-50.176 0-90.624 40.448-90.624 90.624v215.552c0 14.336-11.264 25.6-25.6 25.6zm67.584-595.456c-6.656 0-13.312-2.56-17.92-7.68l-49.152-49.152-49.664 49.152a26.288 26.288 0 0 1-36.352 0 26.288 26.288 0 0 1 0-36.352l67.584-67.072a26.288 26.288 0 0 1 36.352 0l67.072 67.072c10.24 10.24 10.24 26.112 0 36.352-4.608 5.12-11.264 7.68-17.92 7.68z"/><path d="M703.488 265.728c-6.656 0-12.8-2.56-17.92-7.68l-49.664-49.152-49.152 49.152c-10.24 10.24-26.112 10.24-36.352 0s-10.24-26.112 0-36.352l67.072-67.072c9.728-9.728 26.112-10.24 36.352 0l67.584 67.072c10.24 9.728 10.24 26.112 0 36.352-4.608 5.12-11.264 7.68-17.92 7.68zm-299.52 628.736c-6.656 0-12.8-2.56-17.92-7.68l-67.584-67.072c-10.24-9.728-10.24-26.112 0-36.352 9.728-10.24 26.112-10.24 36.352 0l49.664 49.152 49.152-49.152c10.24-10.24 26.112-10.24 36.352 0s10.24 26.112 0 36.352l-67.072 67.072c-5.632 5.12-12.288 7.68-18.944 7.68zm231.936 0c-6.656 0-13.312-2.56-17.92-7.68l-67.072-67.072c-10.24-10.24-10.24-26.112 0-36.352s26.112-10.24 36.352 0l49.152 49.152 49.664-49.152c10.24-9.728 26.112-9.728 36.352 0s9.728 26.112 0 36.352l-67.584 67.072c-6.144 5.12-12.288 7.68-18.944 7.68z"/><path d="M971.264 991.744H79.36c-14.336 0-25.6-11.264-25.6-25.6V74.24c0-14.336 11.264-25.6 25.6-25.6h891.904c14.336 0 25.6 11.264 25.6 25.6v891.904c0 14.336-11.264 25.6-25.6 25.6zm-866.304-51.2h840.704V99.84H104.96v840.704z"/></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1 @@
<svg class="icon" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="200" height="200"><defs><style/></defs><path d="M596.48 332.288l-368.64-2.048c-14.336 0-25.6-11.776-25.6-25.6 0-14.336 11.776-25.6 25.6-25.6l368.64 2.048c14.336 0 25.6 11.776 25.6 25.6 0 14.336-11.776 25.6-25.6 25.6zm5.12 189.44l-368.64-2.048c-14.336 0-25.6-11.776-25.6-25.6 0-14.336 11.776-25.6 25.6-25.6l368.64 2.048c14.336 0 25.6 11.776 25.6 25.6 0 14.336-11.776 25.6-25.6 25.6zm-130.56 189.44l-235.52-2.048c-14.336 0-25.6-11.776-25.6-25.6s11.776-25.6 25.6-25.6l235.52 2.048c14.336 0 25.6 11.776 25.6 25.6 0 14.336-11.776 25.6-25.6 25.6zM788.992 939.52c-78.848 0-143.36-64.512-143.36-143.36s64.512-143.36 143.36-143.36 143.36 64.512 143.36 143.36-64.512 143.36-143.36 143.36zm0-235.52c-50.688 0-92.16 41.472-92.16 92.16s41.472 92.16 92.16 92.16 92.16-41.472 92.16-92.16S839.68 704 788.992 704z"/><path d="M785.92 683.52c-14.336 0-25.6-11.264-25.6-25.6v-40.96c0-14.336 11.264-25.6 25.6-25.6s25.6 11.264 25.6 25.6v40.96c0 14.336-11.264 25.6-25.6 25.6zm-94.208 42.496c-6.656 0-13.312-2.56-18.432-7.68l-29.696-30.72c-9.728-10.24-9.728-26.624.512-36.352 10.24-9.728 26.624-9.728 36.352.512l29.696 30.72c9.728 10.24 9.728 26.624-.512 36.352-5.12 4.608-11.264 7.168-17.92 7.168zM652.8 821.76h-40.96c-14.336 0-25.6-11.264-25.6-25.6s11.264-25.6 25.6-25.6h40.96c14.336 0 25.6 11.264 25.6 25.6s-11.264 25.6-25.6 25.6zm10.752 126.976c-6.656 0-13.312-2.56-17.92-7.68-10.24-10.24-10.24-26.112 0-36.352l30.208-30.208c10.24-10.24 26.112-10.24 36.352 0s10.24 26.112 0 36.352l-30.208 30.208c-5.12 5.12-11.776 7.68-18.432 7.68zm127.488 52.224c-14.336 0-25.6-11.264-25.6-25.6v-46.08c0-14.336 11.264-25.6 25.6-25.6s25.6 11.264 25.6 25.6v46.08c0 14.336-11.264 25.6-25.6 25.6zm125.44-53.248c-6.656 0-13.312-2.56-17.92-7.68l-30.208-30.208c-10.24-10.24-10.24-26.112 0-36.352s26.112-10.24 36.352 0l30.208 30.208c10.24 10.24 10.24 26.112 0 36.352-5.12 5.12-11.776 7.68-18.432 7.68zm53.76-125.952h-46.08c-14.336 0-25.6-11.264-25.6-25.6s11.264-25.6 25.6-25.6h46.08c14.336 0 25.6 11.264 25.6 25.6s-11.264 25.6-25.6 25.6zm-85.504-96.768c-6.656 0-13.312-2.56-17.92-7.68-10.24-10.24-10.24-26.112 0-36.352l30.208-30.208c10.24-10.24 26.112-10.24 36.352 0s10.24 26.112 0 36.352l-30.208 30.208c-5.12 5.12-11.776 7.68-18.432 7.68zM317.44 1005.056H38.4c-14.336 0-25.6-11.264-25.6-25.6V35.84c0-14.336 11.264-25.6 25.6-25.6h733.696c14.336 0 25.6 11.264 25.6 25.6v276.992c0 14.336-11.264 25.6-25.6 25.6s-25.6-11.264-25.6-25.6V61.44H64v892.416h253.44c14.336 0 25.6 11.264 25.6 25.6s-11.264 25.6-25.6 25.6z"/></svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@@ -0,0 +1 @@
<svg class="icon" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="200" height="200"><defs><style/></defs><path d="M712.5 788.8H194.2c-22.5 0-43-8.8-58.7-23.3l146.9-183.2c7.9-9.8 19-15.5 31.2-15.9 12.2-.4 23.6 4.6 32 13.9l12.9 14.3c17.1 19 41 28.8 65.8 27.1 24.7-1.7 47.2-14.9 61.8-36L560.2 478c8-11.7 20.5-18.4 34.1-18.5h.3c13.6 0 26 6.6 34.1 18.1l76.7 108.9c6.8 9.6 19.6 11.5 28.6 4.3 8.9-7.1 10.7-20.4 4-29.9L661.3 452c-15.9-22.5-40.1-35.4-66.7-35.4h-.5c-26.8.2-51.1 13.4-66.8 36.2l-74.1 107.8c-7.4 10.8-18.9 17.5-31.6 18.4-12.6.9-24.9-4.2-33.6-13.8l-12.9-14.3c-16.2-18-39.1-28-62.7-27.3-23.6.7-45.8 12-61.1 31l-140 174.7c-4-10.7-6.3-22.5-6.3-34.7V328.9c0-52 40-94.2 89.2-94.2H767c49.3 0 89.2 42.2 89.2 94.2v181.3c0 11.9 9.1 21.5 20.3 21.5s20.3-9.6 20.3-21.5V328.9c0-75.7-58.2-137.1-129.9-137.1H194.2c-71.7 0-129.9 61.4-129.9 137.1v365.7c0 75.7 58.2 137.1 129.9 137.1h518.3c11.2 0 20.3-9.6 20.3-21.5 0-11.8-9.1-21.4-20.3-21.4z"/><path d="M926.6 672.7h-52.5v-54.5c0-19.4-14.9-35.1-33.2-35.1s-33.2 15.7-33.2 35.1v54.5h-53.6c-18.3 0-33.2 15.7-33.2 35.1 0 19.4 14.9 35.1 33.2 35.1h53.6v53.9c0 19.4 14.9 35.1 33.2 35.1s33.2-15.7 33.2-35.1v-53.9h52.5c18.3 0 33.2-15.7 33.2-35.1 0-19.4-14.9-35.1-33.2-35.1zM256.5 416.1c-35 0-63.6-28.5-63.6-63.6 0-35 28.5-63.6 63.6-63.6s63.6 28.5 63.6 63.6-28.6 63.6-63.6 63.6zm0-89.2c-14.1 0-25.6 11.5-25.6 25.6 0 14.1 11.5 25.6 25.6 25.6 14.1 0 25.6-11.5 25.6-25.6 0-14.1-11.5-25.6-25.6-25.6z"/></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1 @@
<svg class="icon" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="200" height="200"><defs><style/></defs><path d="M877.715 1024H146.283C65.495 1024 0 959.056 0 878.938v-588.8c0-80.123 65.495-145.072 146.283-145.072h109.715V72.53h98.51C386.183 29.352 444.49 0 511.998 0c67.51 0 125.82 29.352 157.494 72.53h98.509v72.534h109.713c80.792 0 146.285 64.949 146.285 145.073v588.799c0 80.12-65.493 145.064-146.285 145.064zM694.857 145.066h-81.27c0-40.057-45.483-72.534-101.59-72.534-56.105 0-101.587 32.48-101.587 72.534h-81.267V290.14h365.714V145.066zm256 145.073c0-40.057-32.745-72.537-73.142-72.537H768.002V362.67H255.998V217.6H146.283c-40.395 0-73.14 32.482-73.14 72.537v588.799c0 40.057 32.745 72.534 73.14 72.534h731.43c40.397 0 73.143-32.477 73.143-72.534V290.139zM768 857.602H256c-20.198 0-36.57-16.237-36.57-36.264 0-20.034 16.372-36.272 36.57-36.272h512c20.2 0 36.574 16.238 36.574 36.272 0 20.025-16.374 36.264-36.574 36.264zm0-164.269H256c-20.198 0-36.57-16.236-36.57-36.266 0-20.027 16.372-36.27 36.57-36.27h512c20.2 0 36.574 16.24 36.574 36.27 0 20.03-16.374 36.266-36.574 36.266zm0-164.264H256c-20.198 0-36.57-16.24-36.57-36.262 0-20.04 16.372-36.274 36.57-36.274h512c20.2 0 36.574 16.234 36.574 36.274 0 20.02-16.374 36.262-36.574 36.262z"/></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1 @@
<svg class="icon" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="200" height="200"><defs><style/></defs><path d="M959.3 511.6c1-255.7-211.6-447.8-446.7-448.6v448.6h446.7z"/><path d="M861.3 576C830 740.7 684.7 864.2 513 864.2c-195.5 0-354.6-159.1-354.6-354.6 0-173.5 122.4-318.1 289.7-348.7V98.8c-201.9 31.3-351 203.5-351 410.8 0 229.3 186.6 415.9 415.9 415.9 205.4 0 378.6-150.6 410.6-349.4h-62.3z"/></svg>

After

Width:  |  Height:  |  Size: 425 B

View File

@@ -0,0 +1 @@
<svg class="icon" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="200" height="200"><defs><style/></defs><path d="M554.667 405.333c0 35.286-28.715 64-64 64s-64-28.714-64-64 28.714-64 64-64 64 28.715 64 64m-170.667 0C384 464.171 431.872 512 490.667 512s106.666-47.83 106.666-106.667-47.872-106.666-106.666-106.666A106.795 106.795 0 0 0 384 405.333"/><path d="M717.952 389.248c1.664 6.4 2.987 12.97 4.139 19.584a21.333 21.333 0 1 0 42.069-7.083 277.163 277.163 0 0 0-273.493-231.082A277.675 277.675 0 0 0 213.333 448c0 146.005 113.494 265.77 256.854 276.31v86.357H345.856a21.333 21.333 0 1 0 0 42.666h298.667a21.333 21.333 0 0 0 0-42.666h-131.67v-87.083c108.16-8.79 202.752-79.616 239.318-183.125a21.333 21.333 0 1 0-40.192-14.251 235.221 235.221 0 0 1-221.312 156.459A234.965 234.965 0 0 1 256 448c0-129.365 105.301-234.667 234.667-234.667a234.496 234.496 0 0 1 227.285 175.915"/></svg>

After

Width:  |  Height:  |  Size: 903 B

View File

@@ -0,0 +1 @@
<svg class="icon" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="200" height="200"><defs><style/></defs><path d="M924 64H100C44.8 64 0 108.8 0 164v568c0 55.2 44.8 100 100 100h380v64H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h576c17.7 0 32-14.3 32-32s-14.3-32-32-32H544v-64h380c55.2 0 100-44.8 100-100V164c0-55.3-44.8-100-100-100zm36 668c0 19.9-16.1 36-36 36H100c-19.9 0-36-16.1-36-36V164c0-19.9 16.1-36 36-36h824c19.9 0 36 16.1 36 36v568z"/><path d="M512 188c-159.5 0-307.8 94.3-380.7 241.9-4.2 8.5-4.6 19 0 27.7C204.2 605.6 352.5 700 512 700c159.4 0 307.4-94.3 380.7-241.9v-.4c4.2-8.1 4.6-18.6 0-27.7C819.4 282.3 671.4 188 512 188zm188.3 392.4C643.1 616.8 578 636 512 636c-66.1 0-131.2-19.2-188.4-55.7-53.1-33.8-96.9-80.8-127.3-136.5 30.4-55.6 74.1-102.5 127.2-136.2C380.8 271.2 446 252 512 252s131.1 19.2 188.3 55.6c53.1 33.7 96.9 80.7 127.6 136.4-30.7 55.7-74.6 102.6-127.6 136.4z"/><path d="M512 320c-70.6 0-128 57.5-128 128.1 0 70.5 57.4 127.9 128 127.9s128-57.4 128-127.9c0-70.7-57.4-128.1-128-128.1zm0 192c-35.3 0-64-28.7-64-63.9 0-35.4 28.7-64.1 64-64.1s64 28.8 64 64.1c0 35.2-28.7 63.9-64 63.9z"/></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1 @@
<svg class="icon" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="200" height="200"><defs><style/></defs><path d="M836.282 1024H187.718A188.044 188.044 0 0 1 0 836.282V187.718A188.044 188.044 0 0 1 187.718 0h648.564A188.044 188.044 0 0 1 1024 187.718v648.564A188.044 188.044 0 0 1 836.282 1024zM196.142 46.545A149.597 149.597 0 0 0 46.546 196.143v631.714a149.597 149.597 0 0 0 149.598 149.598h631.714a149.597 149.597 0 0 0 149.598-149.598V196.143A149.597 149.597 0 0 0 827.857 46.545H196.143z"/><path d="M805.795 420.399h-16.756a290.444 290.444 0 0 0-16.384-39.471l11.915-11.916a78.569 78.569 0 0 0 0-111.709l-18.618-18.618a80.43 80.43 0 0 0-111.71 0l-11.17 12.66a283.741 283.741 0 0 0-39.47-16.384v-16.756c0-43.38-35.189-78.569-78.57-78.569h-26.065c-43.38 0-78.568 35.189-78.568 78.57v16.755a287.465 287.465 0 0 0-39.471 16.384l-11.916-11.915a80.43 80.43 0 0 0-111.709 0l-18.618 18.618a78.569 78.569 0 0 0 0 111.71l11.916 11.915a291.56 291.56 0 0 0-16.384 39.47h-16.012c-43.101 0-78.196 34.723-78.569 77.824v26.066c0 43.38 35.189 78.568 78.57 78.568h16.755c4.469 13.545 9.961 26.718 16.384 39.471l-11.915 11.916a78.569 78.569 0 0 0 0 111.709l18.618 18.618c31.185 30.068 80.524 30.068 111.71 0l11.915-11.916c12.753 6.424 25.926 11.916 39.47 16.384v16.757c.42 42.821 35.002 77.405 77.824 77.824h26.066c43.38 0 78.568-35.189 78.568-78.57V789.04c13.499-4.515 26.718-9.961 39.471-16.384l11.916 11.915c31.185 30.069 80.523 30.069 111.709 0l18.618-18.618a78.941 78.941 0 0 0 0-111.71l-12.66-11.17c6.47-12.707 11.915-25.926 16.384-39.47h16.756c43.38 0 78.569-35.189 78.569-78.57v-26.065c0-43.38-35.189-78.568-78.57-78.568zm41.332 105.378a27.555 27.555 0 0 1-27.555 27.555h-37.236a27.555 27.555 0 0 0-26.438 20.48c-5.911 23.273-15.22 45.615-27.555 66.281a27.555 27.555 0 0 0 4.096 33.513l26.81 26.81a27.555 27.555 0 0 1 0 37.236l-19.362 19.363a28.315 28.315 0 0 1-37.237 0l-26.81-26.81a27.555 27.555 0 0 0-33.513-4.096 250.228 250.228 0 0 1-66.28 27.555 27.555 27.555 0 0 0-20.853 26.438v37.236a27.555 27.555 0 0 1-27.555 27.555h-27.555a27.555 27.555 0 0 1-27.555-27.555v-37.236a27.555 27.555 0 0 0-20.48-26.438 246.505 246.505 0 0 1-66.28-27.555 27.555 27.555 0 0 0-33.513 4.096l-26.81 26.81a28.315 28.315 0 0 1-37.237 0l-19.362-19.363a27.555 27.555 0 0 1 0-37.236l26.81-26.81a27.555 27.555 0 0 0 4.096-33.513 247.25 247.25 0 0 1-27.555-66.28 27.555 27.555 0 0 0-26.438-20.853h-37.236a27.555 27.555 0 0 1-31.651-27.183v-27.554a27.555 27.555 0 0 1 27.555-27.555h37.236a27.555 27.555 0 0 0 26.438-20.853c5.958-23.272 15.267-45.614 27.555-66.28a27.183 27.183 0 0 0-4.096-33.513l-26.81-26.81a27.555 27.555 0 0 1 0-37.237l19.362-19.363a28.315 28.315 0 0 1 37.237 0l26.81 26.81c8.937 8.844 22.714 10.52 33.513 4.097a249.111 249.111 0 0 1 66.28-27.555 27.555 27.555 0 0 0 20.48-26.438v-37.237a27.555 27.555 0 0 1 29.79-29.416h27.554c15.22 0 27.555 12.334 27.555 27.555v37.236c0 12.567 8.611 23.505 20.853 26.438 23.272 5.958 45.614 15.22 66.28 27.555a27.555 27.555 0 0 0 33.513-4.096l26.81-26.81a27.927 27.927 0 0 1 37.237 0l19.363 19.362a27.183 27.183 0 0 1 0 37.237l-26.81 26.81a27.555 27.555 0 0 0-4.097 33.513 247.804 247.804 0 0 1 27.555 66.28 27.555 27.555 0 0 0 26.438 20.48h37.237c15.22 0 27.554 12.335 27.554 27.555v27.555l1.862 2.234z"/><path d="M512 372.364a139.636 139.636 0 1 0 0 279.272 139.636 139.636 0 0 0 0-279.272zm0 232.727a93.09 93.09 0 1 1 0-186.182 93.09 93.09 0 0 1 0 186.182z"/></svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@@ -0,0 +1 @@
<svg class="icon" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="200" height="200"><defs><style/></defs><path d="M612.966 264.038v-.204c8.5 0 16.692-3.38 22.682-9.421a32.023 32.023 0 0 0 9.267-22.733V115.866c.051-8.5-3.328-16.59-9.318-22.63a31.98 31.98 0 0 0-22.58-9.37c-8.55-.052-16.793 3.328-22.886 9.37-6.093 6.04-9.523 14.233-9.523 22.783v115.815c.051 8.55 3.43 16.742 9.523 22.784a31.893 31.893 0 0 0 22.835 9.42zm-398.848 0c8.55.052 16.794-3.328 22.887-9.37 6.093-6.04 9.523-14.233 9.523-22.783V116.07c0-17.92-14.49-32.41-32.41-32.41s-32.41 14.49-32.41 32.41v115.815a32.516 32.516 0 0 0 9.524 22.784c6.093 6.041 14.336 9.42 22.886 9.37z"/><path d="M812.442 212.582c.05-13.619-5.376-26.726-15.002-36.403a51.305 51.305 0 0 0-36.352-15.104h-64.307v57.959c0 46.233-37.479 83.763-83.763 83.763-46.285 0-83.764-37.479-83.764-83.763v-57.959H297.882v57.959c0 46.233-37.479 83.763-83.764 83.763-46.284 0-83.763-37.479-83.763-83.763v-57.959H66.048a51.305 51.305 0 0 0-36.352 15.104c-8.755 8.755-13.978 20.378-14.848 32.615v166.553h797.594V212.582z"/><path d="M812.442 375.347h.768v12.186h-.768z"/><path d="M14.848 387.533v446.413c.87 12.236 6.093 23.859 14.848 32.614 9.626 9.677 22.733 15.053 36.352 15.053h535.245c-33.946-43.213-54.17-97.69-54.17-156.928 0-140.493 113.92-254.413 254.413-254.413 3.635 0 7.27.102 10.854.256v-82.995H14.848zm239.974 166.349c-.87 12.902-2.15 32.307-3.89 58.112-1.742 34.457-3.022 59.852-3.892 76.185a257.13 257.13 0 0 0-25.856-1.28c3.43-39.577 5.99-84.377 7.731-134.349l25.907 1.332zm-139.52 189.85c12.903-.871 25.856-2.56 38.759-5.172v-89.14h-32.307v-30.975h32.307V547.43h-34.867v-32.307h103.321v32.307h-36.147v71.015h28.416v30.976h-28.416v85.299c4.3-.87 10.342-1.74 18.074-2.56 8.601-1.74 14.643-2.56 18.073-2.56 0 11.213.41 21.965 1.28 32.307-26.675 1.741-61.133 6.451-103.321 14.183l-5.172-32.359zm104.653 38.758c19.815-21.504 32.717-43.47 38.759-65.895 6.86-21.504 10.342-52.531 10.342-92.979V498.33h32.307v126.566c1.741 79.206-15.923 138.65-52.94 178.227-9.524-7.68-18.996-14.592-28.468-20.633zm209.255 2.61H301.312v-28.415h49.1v-96.87h-37.478v-30.977h37.479V546.15h-37.479v-30.976h108.493v30.976H382.67v82.688h36.147v30.976h-36.147v96.87h46.49v28.417z"/><path d="M975.718 767.334h-21.964c-3.584 12.903-8.704 25.19-15.258 36.557l20.275 20.327c13.005 13.004 13.005 34.048 0 47.052l-11.776 11.776c-13.005 13.005-34.048 13.005-47.053 0l-20.428-20.428c-11.316 6.45-23.552 11.468-36.404 15.001v21.3c0 18.38-14.899 33.28-33.28 33.28h-16.64c-18.38 0-33.28-14.9-33.28-33.28v-21.351c-12.85-3.533-25.088-8.5-36.403-15.002l-20.429 20.43c-13.004 13.004-34.048 13.004-47.052 0l-11.776-11.777c-13.005-13.005-13.005-34.048 0-47.053l20.275-20.326c-6.554-11.366-11.674-23.603-15.258-36.557h-21.965c-18.38 0-33.28-14.899-33.28-33.28v-16.64c0-18.38 14.9-33.28 33.28-33.28h21.71c3.48-12.8 8.345-24.985 14.745-36.25l-19.507-19.558c-13.005-13.005-13.005-34.048 0-47.053l11.724-11.776c13.005-13.004 34.048-13.004 47.053 0l19.149 19.15a156.013 156.013 0 0 1 37.683-15.77v-22.324c0-18.38 14.9-33.28 33.28-33.28h16.64c18.381 0 33.28 14.9 33.28 33.28v22.324a156.013 156.013 0 0 1 37.683 15.77l19.15-19.15c13.004-13.004 34.047-13.004 47.052 0l11.776 11.776c13.005 13.005 13.005 34.048 0 47.053l-19.507 19.507c6.349 11.316 11.264 23.501 14.745 36.25h21.71c18.38 0 33.28 14.9 33.28 33.28v16.64c0 18.483-14.849 33.382-33.23 33.382zM802.15 628.326c-54.067 0-97.894 43.828-97.894 97.895s43.264 97.894 97.382 97.894 98.458-43.827 98.458-97.894-44.39-97.895-98.509-97.895h.563zm-.614 138.445c-22.989 0-41.626-18.637-41.626-41.625s18.637-41.575 41.626-41.575 41.574 18.637 41.574 41.575c0 23.04-18.585 41.625-41.574 41.625z"/></svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@@ -0,0 +1 @@
<svg class="icon" viewBox="0 0 1029 1024" xmlns="http://www.w3.org/2000/svg" width="200.977" height="200"><defs><style/></defs><path d="M416.768 117.76h208.384v828.416H416.768zM131.584 394.752h208.384v546.816H131.584z"/><path d="M17.92 935.424h991.744v37.888H17.92z"/><path d="M363.52 965.632H121.344V373.76H363.52v591.872zm-23.552-568.32H144.896V942.08H340.48V397.312z"/><path d="M131.584 394.752h221.184V409.6H131.584zm0 81.408h221.184v14.848H131.584zm0 114.688h221.184v14.848H131.584zm0 115.2h221.184v14.848H131.584zm0 114.688h221.184v14.848H131.584zM645.12 966.144H403.456V92.16H645.12v873.984zm-24.576-848.896H428.032v823.296h192.512V117.248z"/><path d="M538.112 104.448l-123.904 140.8-10.752-12.288 123.392-140.8zm94.72 22.528L426.496 361.472l-10.752-12.288 205.824-234.496zm2.048 145.408L428.544 507.392l-10.752-12.8 205.824-234.496zm-2.048 147.456L426.496 654.848l-10.752-12.8 205.824-234.496zm2.048 146.944L428.544 801.792l-10.752-12.288 205.824-235.008zm0 127.488L428.544 929.28l-10.752-12.8 205.824-234.496zm13.824 123.392L524.8 958.976l-10.752-12.8 123.392-140.8z"/><path d="M413.696 110.592H634.88V128H413.696zM929.28 958.464H687.616V260.096H929.28v698.368zm-23.04-670.72H710.656v642.56H906.24v-642.56z"/><path d="M697.856 285.184H919.04v17.408H697.856z"/></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1 @@
<svg class="icon" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="200" height="200"><defs><style/></defs><path d="M556.8 876.8c-19.2-6.4-38.4 6.4-44.8 19.2-12.8 38.4-44.8 64-83.2 64-44.8 0-83.2-38.4-89.6-83.2h89.6c19.2 0 32-12.8 32-32s-12.8-32-32-32H102.4c51.2-83.2 57.6-198.4 57.6-403.2 0-166.4 108.8-224 204.8-243.2 12.8 0 25.6-19.2 25.6-32v-32c0-19.2 19.2-38.4 38.4-38.4s38.4 19.2 38.4 38.4v32c0 12.8 12.8 25.6 25.6 32 38.4 6.4 96 25.6 140.8 70.4 12.8 12.8 32 12.8 44.8 0 12.8-12.8 12.8-32 0-44.8-44.8-44.8-102.4-70.4-147.2-83.2v-6.4C531.2 44.8 486.4 0 428.8 0c-57.6 0-102.4 44.8-102.4 102.4v6.4C230.4 134.4 96 211.2 96 409.6c0 262.4-19.2 352-83.2 409.6C0 832 0 844.8 0 857.6s19.2 19.2 32 19.2h243.2c6.4 83.2 70.4 147.2 153.6 147.2 70.4 0 128-44.8 147.2-108.8 6.4-12.8-6.4-32-19.2-38.4z"/><path d="M710.4 268.8c-172.8 0-313.6 134.4-313.6 307.2s140.8 313.6 313.6 313.6S1024 748.8 1024 576 883.2 268.8 710.4 268.8zm0 556.8C576 825.6 460.8 716.8 460.8 576S576 332.8 710.4 332.8 960 441.6 960 576 851.2 825.6 710.4 825.6z"/><path d="M889.6 544H742.4V403.2c0-19.2-12.8-32-32-32s-32 12.8-32 32v211.2h211.2c19.2 0 32-12.8 32-32s-12.8-38.4-32-38.4z"/></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1 @@
<svg class="icon" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="200" height="200"><defs><style/></defs><path d="M1023.975 164.56c0-19.186-15.25-34.685-34.123-34.685H34.147c-18.874 0-34.123 15.499-34.123 34.686v762.588c0 19.187 15.25 34.686 34.123 34.686h955.705c18.874 0 34.123-15.499 34.123-34.686V164.561zM64.022 897.839V193.87h895.956v703.967H64.022z"/><path d="M863.983 513.856c17.687 0 31.999-14.31 31.999-31.999 0-17.686-14.312-31.998-31.999-31.998s-31.999 14.312-31.999 31.998c0 17.688 14.313 32 32 32zM735.99 513.856c17.687 0 31.999-14.31 31.999-31.999 0-17.686-14.312-31.998-31.999-31.998-17.687 0-31.999 14.312-31.999 31.998 0 17.688 14.312 32 31.999 32zM863.983 641.851c17.687 0 31.999-14.312 31.999-31.998 0-17.688-14.312-32-31.999-32s-31.999 14.31-31.999 32c0 17.685 14.313 31.998 32 31.998zM735.99 641.851c17.687 0 31.999-14.312 31.999-31.998 0-17.688-14.312-32-31.999-32-17.687 0-31.999 14.31-31.999 32 0 17.685 14.312 31.998 31.999 31.998zM735.99 769.845c17.687 0 31.999-14.312 31.999-32s-14.312-31.998-31.999-31.998c-17.687 0-31.999 14.312-31.999 31.999s14.312 31.999 31.999 31.999zM165.391 769.845h373.233c20.686 0 37.373-16.375 37.373-36.562V294.43c0-20.187-16.687-36.56-37.373-36.56H165.39c-20.686 0-37.372 16.373-37.372 36.56v438.853c0 20.187 16.686 36.562 37.372 36.562zm26.625-447.98H512v383.982H192.016V321.866zM735.99 321.866h127.994c17.687 0 31.999-14.312 31.999-32 0-17.686-14.312-31.998-31.999-31.998H735.99c-17.687 0-31.999 14.312-31.999 31.999 0 17.688 14.312 31.999 31.999 31.999z"/></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

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