Commit 692c6291 authored by YazhouChen's avatar YazhouChen

11

parents
File added
File added
{
"presets": [
["env", {
"modules": false,
"targets": {
"browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
}
}],
"stage-2"
],
"plugins": ["transform-vue-jsx", "transform-runtime"],
"env": {
"test": {
"presets": ["env", "stage-2"]
}
}
}
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
/build/
/config/
/dist/
/*.js
/test/unit/coverage/
// https://eslint.org/docs/user-guide/configuring
module.exports = {
root: true,
parserOptions: {
parser: 'babel-eslint'
},
env: {
browser: true,
jquery: true
},
extends: [
// https://github.com/vuejs/eslint-plugin-vue#priority-a-essential-error-prevention
// consider switching to `plugin:vue/strongly-recommended` or `plugin:vue/recommended` for stricter rules.
'plugin:vue/essential',
// https://github.com/standard/standard/blob/master/docs/RULES-en.md
'standard'
],
// required to lint *.vue files
plugins: [
'vue'
],
// add your custom rules here
rules: {
// allow async-await
'generator-star-spacing': 'off',
// allow debugger during development
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'camelcase': 'off'
}
}
# Created by https://www.gitignore.io/api/node,vuejs,webstorm+all
# Edit at https://www.gitignore.io/?templates=node,vuejs,webstorm+all
### Node ###
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# TypeScript v1 declaration files
typings/
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.env.test
# parcel-bundler cache (https://parceljs.org/)
.cache
# next.js build output
.next
# nuxt.js build output
.nuxt
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
### Vuejs ###
# Recommended template: Node.gitignore
dist/
npm-debug.log
yarn-error.log
### WebStorm+all ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# IntelliJ
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
# JetBrains templates
**___jb_tmp___
### WebStorm+all Patch ###
# Ignores the whole .idea folder and all .iml files
# See https://github.com/joeblau/gitignore.io/issues/186 and https://github.com/joeblau/gitignore.io/issues/360
.idea/
# Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023
*.iml
modules.xml
.idea/misc.xml
*.ipr
# Sonarlint plugin
.idea/sonarlint
# End of https://www.gitignore.io/api/node,vuejs,webstorm+all
\ No newline at end of file
// https://github.com/michael-ciniawsky/postcss-load-config
module.exports = {
"plugins": {
"postcss-import": {},
"postcss-url": {},
// to edit target browsers: use "browserslist" field in package.json
"autoprefixer": {}
}
}
# onos_vue
> A Vue.js project
## Build Setup
``` bash
# 安装npm的淘宝镜像
npm install -g cnpm --registry=https://registry.npm.taobao.org
# install dependencies
cnpm install
# serve with hot reload at localhost:8080
npm run dev
# build for production with minification
cnpm run build
# build for production and view the bundle analyzer report
cnpm run build --report
# run unit tests
cnpm run unit
# run all tests
cnpm test
```
For a detailed explanation on how things work, check out the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader).
'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, // If you are using ts-loader, setting this to true will make TypeScript errors show up during build.
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'
))
})
})
'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)
}
}
'use strict'
const path = require('path')
const config = require('../config')
const ExtractTextPlugin = require('extract-text-webpack-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 = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader]
if (loader) {
loaders.push({
loader: loader + '-loader',
options: Object.assign({}, loaderOptions, {
sourceMap: options.sourceMap
})
})
}
// Extract CSS when that option is specified
// (which is the case during production build)
if (options.extract) {
return ExtractTextPlugin.extract({
use: loaders,
fallback: 'vue-style-loader'
})
} else {
return ['vue-style-loader'].concat(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')
})
}
}
'use strict'
const utils = require('./utils')
const config = require('../config')
const isProduction = process.env.NODE_ENV === 'production'
const sourceMapEnabled = isProduction
? config.build.productionSourceMap
: config.dev.cssSourceMap
module.exports = {
loaders: utils.cssLoaders({
sourceMap: sourceMapEnabled,
extract: isProduction
}),
cssSourceMap: sourceMapEnabled,
cacheBusting: config.dev.cacheBusting,
transformToRequire: {
video: ['src', 'poster'],
source: 'src',
img: 'src',
image: 'xlink:href'
},
}
'use strict'
const path = require('path')
const utils = require('./utils')
const config = require('../config')
const vueLoaderConfig = require('./vue-loader.conf')
const webpack = require('webpack')
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.js',
'@': resolve('src'),
}
},
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: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
loader: 'url-loader',
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]')
}
}
]
},
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'
},
// 增加一个plugins
plugins: [
new webpack.optimize.CommonsChunkPlugin('common.js'),
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery"
})
],
}
'use strict'
const utils = require('./utils')
const webpack = require('webpack')
const config = require('../config')
const merge = require('webpack-merge')
const path = require('path')
const baseWebpackConfig = require('./webpack.base.conf')
const CopyWebpackPlugin = require('copy-webpack-plugin')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
const portfinder = require('portfinder')
const HOST = process.env.HOST
const PORT = process.env.PORT && Number(process.env.PORT)
let devWebpackConfig = merge(baseWebpackConfig, {
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: {
rewrites: [
{ from: /.*/, to: path.posix.join(config.dev.assetsPublicPath, 'index.html') },
],
},
hot: true,
contentBase: false, // since we use CopyWebpackPlugin.
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(),
new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update.
new webpack.NoEmitOnErrorsPlugin(),
// https://github.com/ampedandwired/html-webpack-plugin
new HtmlWebpackPlugin({
filename: 'index.html',
template: 'index.html',
inject: true
}),
// copy custom static assets
new CopyWebpackPlugin([
{
from: path.resolve(__dirname, '../static'),
to: config.dev.assetsSubDirectory,
ignore: ['.*']
}
])
]
})
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)
}
})
})
'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 ExtractTextPlugin = require('extract-text-webpack-plugin')
const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
const env = process.env.NODE_ENV === 'testing'
? require('../config/test.env')
: require('../config/prod.env')
const webpackConfig = merge(baseWebpackConfig, {
module: {
rules: utils.styleLoaders({
sourceMap: config.build.productionSourceMap,
extract: false,
usePostCSS: true
})
},
devtool: config.build.productionSourceMap ? config.build.devtool : false,
output: {
path: config.build.assetsRoot,
filename: utils.assetsPath('js/[name].[chunkhash].js'),
chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')
},
plugins: [
// http://vuejs.github.io/vue-loader/en/workflow/production.html
new webpack.DefinePlugin({
'process.env': env
}),
new UglifyJsPlugin({
uglifyOptions: {
compress: {
warnings: false
}
},
sourceMap: config.build.productionSourceMap,
parallel: true
}),
// extract css into its own file
new ExtractTextPlugin({
filename: utils.assetsPath('css/[name].[contenthash].css'),
// Setting the following option to `false` will not extract CSS from codesplit chunks.
// Their CSS will instead be inserted dynamically with style-loader when the codesplit chunk has been loaded by webpack.
// It's currently set to `true` because we are seeing that sourcemaps are included in the codesplit bundle as well when it's `false`,
// increasing file size: https://github.com/vuejs-templates/webpack/issues/1110
allChunks: true,
}),
// Compress extracted CSS. We are using this plugin so that possible
// duplicated CSS from different components can be deduped.
new OptimizeCSSPlugin({
cssProcessorOptions: config.build.productionSourceMap
? { safe: true, map: { inline: false } }
: { safe: true }
}),
// 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: process.env.NODE_ENV === 'testing'
? 'index.html'
: config.build.index,
template: 'index.html',
inject: true,
minify: {
removeComments: true,
collapseWhitespace: true,
removeAttributeQuotes: true
// more options:
// https://github.com/kangax/html-minifier#options-quick-reference
},
// necessary to consistently work with multiple chunks via CommonsChunkPlugin
chunksSortMode: 'dependency'
}),
// keep module.id stable when vendor modules does not change
new webpack.HashedModuleIdsPlugin(),
// enable scope hoisting
new webpack.optimize.ModuleConcatenationPlugin(),
// split vendor js into its own file
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
minChunks (module) {
// any required modules inside node_modules are extracted to vendor
return (
module.resource &&
/\.js$/.test(module.resource) &&
module.resource.indexOf(
path.join(__dirname, '../node_modules')
) === 0
)
}
}),
// extract webpack runtime and module manifest to its own file in order to
// prevent vendor hash from being updated whenever app bundle is updated
new webpack.optimize.CommonsChunkPlugin({
name: 'manifest',
minChunks: Infinity
}),
// This instance extracts shared chunks from code splitted chunks and bundles them
// in a separate chunk, similar to the vendor chunk
// see: https://webpack.js.org/plugins/commons-chunk-plugin/#extra-async-commons-chunk
new webpack.optimize.CommonsChunkPlugin({
name: 'app',
async: 'vendor-async',
children: true,
minChunks: 3
}),
// copy custom static assets
new CopyWebpackPlugin([
{
from: path.resolve(__dirname, '../static'),
to: config.build.assetsSubDirectory,
ignore: ['.*']
}
])
]
})
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.bundleAnalyzerReport) {
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
webpackConfig.plugins.push(new BundleAnalyzerPlugin())
}
module.exports = webpackConfig
var path = require('path')
var webpack = require('webpack')
module.exports = {
entry: './src/main.js',
output: {
path: path.resolve(__dirname, '../dist'),
publicPath: '/dist/',
filename: 'build.js',
// use absolute paths in sourcemaps (important for debugging via IDE)
devtoolModuleFilenameTemplate: '[absolute-resource-path]',
devtoolFallbackModuleFilenameTemplate: '[absolute-resource-path]?[hash]'
},
resolve: {
alias: {
'vue$': 'vue/dist/vue.esm.js',
'@': path.resolve(__dirname, '..', 'src')
}
},
module: {
rules: [
{
test: /\.vue$/,
loader: 'vue-loader'
},
{
test: /\.js$/,
loader: 'babel-loader',
exclude: /node_modules/
},
{
test: /\.(png|jpg|gif|svg)$/,
loader: 'file-loader',
options: {
name: '[name].[ext]?[hash]'
}
}
]
},
devServer: {
historyApiFallback: true,
noInfo: true
},
performance: {
hints: false
},
externals: [require('webpack-node-externals')()],
devtool: 'inline-cheap-module-source-map',
plugins: [
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery"
})
],
}
'use strict'
const merge = require('webpack-merge')
const prodEnv = require('./prod.env')
module.exports = merge(prodEnv, {
NODE_ENV: '"development"'
})
'use strict'
// Template version: 1.3.1
// see http://vuejs-templates.github.io/webpack for documentation.
const path = require('path')
module.exports = {
dev: {
// Paths
assetsSubDirectory: 'static',
assetsPublicPath: '/',
proxyTable: {},
// Various Dev Server settings
host: 'localhost', // can be overwritten by process.env.HOST
port: 8088, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
autoOpenBrowser: false,
errorOverlay: true,
notifyOnErrors: true,
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-module-eval-source-map',
// If you have problems debugging vue-files in devtools,
// set this to false - it *may* help
// https://vue-loader.vuejs.org/en/options.html#cachebusting
cacheBusting: true,
cssSourceMap: true
},
build: {
// Template for index.html
index: path.resolve(__dirname, '../dist/index.html'),
// Paths
assetsRoot: path.resolve(__dirname, '../dist'),
assetsSubDirectory: 'static',
assetsPublicPath: './',
/**
* Source Maps
*/
productionSourceMap: true,
// 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
}
}
'use strict'
module.exports = {
NODE_ENV: '"production"'
}
'use strict'
const merge = require('webpack-merge')
const devEnv = require('./dev.env')
module.exports = merge(devEnv, {
NODE_ENV: '"testing"'
})
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>运维管理平台</title>
<script src="./static/config.js"></script>
</head>
<body>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
This diff is collapsed.
{
"name": "onos_vue",
"version": "1.0.0",
"description": "A Vue.js project",
"author": "bjut",
"private": true,
"scripts": {
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
"start": "npm run dev",
"test": "mocha-webpack --webpack-config build/webpack.test.conf.js --require test/unit/setup.js test/**/*.test.js",
"lint": "eslint --ext .js,.vue src test/unit",
"build": "node build/build.js"
},
"dependencies": {
"@iconfu/svg-inject": "^1.2.3",
"assert": "^1.4.1",
"axios": "^0.18.0",
"canvas2image": "^1.0.5",
"crypto-js": "^3.1.9-1",
"echarts": "^4.2.0-rc.2",
"element-resize-detector": "^1.2.1",
"element-ui": "^2.8.2",
"file-saver": "^2.0.0",
"font-awesome": "^4.7.0",
"html2canvas": "^1.0.0-alpha.12",
"js-md5": "^0.7.3",
"layui-src": "^2.4.5",
"lodash": "^4.17.11",
"lodash.debounce": "^4.0.8",
"node-sass": "^4.14.1",
"pl-table": "^2.7.5",
"popper.js": "^1.14.6",
"save-svg-as-png": "^1.4.11",
"svg-sprite-loader": "^5.0.0",
"v-charts": "^1.19.0",
"v-contextmenu": "^2.8.0",
"vue": "^2.6.10",
"vue-code-diff": "0.0.4",
"vue-contextmenu": "^1.5.6",
"vue-i18n": "^8.7.0",
"vue-resource": "^1.5.1",
"vue-router": "^3.0.1",
"vue-runtime-helpers": "^1.1.2",
"vuescroll": "^4.9.0-beta.18",
"vuex": "^3.0.1",
"webpack-config": "^7.5.0",
"xlsx": "^0.14.1"
},
"devDependencies": {
"@vue/test-utils": "^1.0.0-beta.29",
"autoprefixer": "^7.1.2",
"babel-core": "^6.22.1",
"babel-eslint": "^8.2.1",
"babel-helper-vue-jsx-merge-props": "^2.0.3",
"babel-loader": "^7.1.1",
"babel-plugin-syntax-jsx": "^6.18.0",
"babel-plugin-transform-runtime": "^6.22.0",
"babel-plugin-transform-vue-jsx": "^3.7.0",
"babel-preset-env": "^1.3.2",
"babel-preset-stage-2": "^6.22.0",
"bootstrap": "^3.3.7",
"chai": "^4.2.0",
"chalk": "^2.0.1",
"copy-webpack-plugin": "^4.0.1",
"css-loader": "^0.28.0",
"d3": "^4.13.0",
"eslint": "^4.15.0",
"eslint-config-standard": "^10.2.1",
"eslint-friendly-formatter": "^3.0.0",
"eslint-loader": "^1.7.1",
"eslint-plugin-import": "^2.7.0",
"eslint-plugin-node": "^5.2.0",
"eslint-plugin-promise": "^3.4.0",
"eslint-plugin-standard": "^3.0.1",
"eslint-plugin-vue": "^4.0.0",
"extract-text-webpack-plugin": "^3.0.0",
"file-loader": "^1.1.4",
"friendly-errors-webpack-plugin": "^1.6.1",
"html-webpack-plugin": "^2.30.1",
"jquery": "^3.3.1",
"jsdom": "^14.0.0",
"jsdom-global": "^3.0.2",
"less": "^3.9.0",
"less-loader": "^4.1.0",
"mocha": "^6.1.4",
"mocha-webpack": "^1.1.0",
"mock-socket": "^8.0.5",
"mockjs": "^1.0.1-beta3",
"moxios": "^0.4.0",
"node-notifier": "^5.1.2",
"optimize-css-assets-webpack-plugin": "^3.2.0",
"ora": "^1.2.0",
"portfinder": "^1.0.13",
"postcss-import": "^11.0.0",
"postcss-loader": "^2.0.8",
"postcss-url": "^7.2.1",
"rimraf": "^2.6.0",
"sass-loader": "^7.1.0",
"semver": "^5.3.0",
"shelljs": "^0.7.6",
"sinon": "^7.3.2",
"uglifyjs-webpack-plugin": "^1.1.1",
"url-loader": "^0.5.8",
"vue-loader": "^13.3.0",
"vue-style-loader": "^3.0.1",
"vue-svg-icon": "^1.2.9",
"vue-template-compiler": "^2.6.10",
"vue2-svg-icon": "^1.3.2",
"webpack": "^3.6.0",
"webpack-bundle-analyzer": "^2.9.0",
"webpack-dev-server": "^2.9.1",
"webpack-merge": "^4.1.0",
"webpack-node-externals": "^1.7.2"
},
"engines": {
"node": ">= 6.0.0",
"npm": ">= 3.0.0"
},
"browserslist": [
"> 1%",
"last 2 versions",
"not ie <= 8"
]
}
<template>
<div id="app" class="h-all">
<!--<img src="./assets/logo.png">-->
<router-view/>
</div>
</template>
<script>
import localStorage from './utils/cookie'
export default {
name: 'App',
}
</script>
<style>
#app {
font-family: 'Avenir', Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
}
</style>
import {
ALARM_ADMQ,
ALARM_CONFIRM,
ALARM_DELETE,
REQUEST_CONFIG,
ALARM_CLEARUP
} from '../../utils/RequestUrls'
import Axios from 'axios'
var staticMethods = {
// 获取所有告警
getAlarmCollection: function () {
return Axios.get(ALARM_ADMQ)
},
// 告警确认
putAlarmConfirm: function (alarmKeys) {
return Axios.put(ALARM_CONFIRM, alarmKeys, REQUEST_CONFIG)
},
// 告警清除
putAlarmClearup: function (alarmKeys) {
return Axios.put(ALARM_CLEARUP, alarmKeys, REQUEST_CONFIG)
},
// 告警删除
putAlarmDelete: function (alarmKeys) {
return Axios.delete(ALARM_DELETE, {
data: alarmKeys,
REQUEST_CONFIG
})
}
// // 设备的批量删除
// batchDeleteDevice: function (deviceKeyList) {
// return Axios.delete(DEVICE_ADMQ,{
// data:deviceKeyList,
// headers:{'Content-Type':'application/json','Encoding':'utf-8'}
// });
// },
}
function AlarmAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(AlarmAPI, staticMethods)
export default AlarmAPI
import Axios from 'axios'
import {
REQUEST_CONFIG,
AlarmData_Delete,
} from "../../utils/RequestUrls";
var staticMethods = {
// 性能数据按条件查询:总条数
deleteAlarmDatas: function (selectList) {
var ret = Axios.delete(AlarmData_Delete,{
data: selectList,
REQUEST_CONFIG
})
return ret
// return Axios.delete(PerformanceData_Delete, {
// data: selectList,
// REQUEST_CONFIG
// }
// )
}
}
function AlarmDataDeleteAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(AlarmDataDeleteAPI, staticMethods);
export default AlarmDataDeleteAPI
import {ALARM_FILTER_ADMQ, ALARM_FILTER_TOTAL, ALARM_FILTER_QUERY, REQUEST_CONFIG} from '../../utils/RequestUrls'
import Axios from 'axios'
let staticMethods = {
/**
* @Description : 分页查询
* @author : ls
* @date : 2020/7/23 9:55
* @param :
* @return :
*/
putAlarmFilterQueryterms: function (beginItem, endItem, selectList) {
return Axios.put(ALARM_FILTER_QUERY + '/' + beginItem + '/' + endItem + '/', selectList, REQUEST_CONFIG)
},
/**
* @Description : 查询总数
* @author : ls
* @date : 2020/7/23 9:55
* @param :
* @return :
*/
putAlarmFilterCounts: function (selectList) {
return Axios.put(ALARM_FILTER_TOTAL, selectList, REQUEST_CONFIG)
},
// 获取告警过滤列表 cxf/nms/alarm/alarmfilterconfig
getAllAlarmFilterList: function () {
return Axios.get(ALARM_FILTER_ADMQ)
},
// 改
modifyAlarmFilter: function (alarmfilter) {
return Axios.put(ALARM_FILTER_ADMQ, alarmfilter, REQUEST_CONFIG)
},
// 增
addAlarmFilter: function (alarmfilter) {
return Axios.post(ALARM_FILTER_ADMQ, alarmfilter, REQUEST_CONFIG)
},
// 删除
deleteAlarmFilter: function (deletelist) {
return Axios.delete(ALARM_FILTER_ADMQ, {
data: deletelist,
headers: {'Content-Type': 'application/json', 'Encoding': 'utf-8'}
})
}
}
function AlarmFilterConfigAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(AlarmFilterConfigAPI, staticMethods)
export default AlarmFilterConfigAPI
import {ALARM_LEVEL_CONFIG} from "../../utils/RequestUrls";
import Axios from 'axios'
var staticMethods = {
// 获取告警配置
getAlarmLevelConfig: function(){
return Axios.get(ALARM_LEVEL_CONFIG);
},
};
function AlarmLevelConfigAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(AlarmLevelConfigAPI, staticMethods);
export default AlarmLevelConfigAPI
import Axios from 'axios'
import {
ALARM_PAGING_QUERY,
ALARM_QUERY_DOWNLOAD_EXCEL,
ALARM_QUERY_DOWNLOAD_CSV,
ALARMCFG_UPDATE,
ALARMCFGLIST_ADMQ, ALARMCOUNTS_GET,
ALARMLEVEL_UPDATE, ALARMSTATISTIC_QUERY,
ALARMTYPELIST_ADMQ,
ALARMREPORT_QUERY,
REQUEST_CONFIG,
REPORT_QUERY
} from '../../utils/RequestUrls'
var staticMethods = {
// 获取告警列表 cxf/nms/alarm/typelist
getAlarmTypeList: function () {
return Axios.get(ALARMTYPELIST_ADMQ)
},
// 获取告警配置 cxf/nms/alarmconfig/
getAllAlarmCfgList: function () {
return Axios.get(ALARMCFGLIST_ADMQ)
},
// 告警数据按条件查询:总条数cxf/nms/alarm/totalcounts/
getTotalCounts: function (selectList) {
return Axios.put(ALARMCOUNTS_GET, selectList, REQUEST_CONFIG)
},
// 性能数据按条件查询:分页 cxf/nms/alarm/queryterms/
queryAlarmPaging: function (beginItem, endItem, selectList) {
return Axios.put(ALARM_PAGING_QUERY + '' + beginItem + '/' + endItem + '/', selectList, REQUEST_CONFIG)
},
// 更新告警等级信息 cxf/nms/alarm/alarmlevelconfigbatch
updateAlarmLevel: function (alarmLevelListUpdate) {
return Axios.put(ALARMLEVEL_UPDATE, alarmLevelListUpdate, REQUEST_CONFIG)
},
// 更新告警配置 cxf/nms/alarmconfig/batch
updateAlarmConfig: function (alarmCfgListUpdate) {
return Axios.put(ALARMCFG_UPDATE, alarmCfgListUpdate, REQUEST_CONFIG)
},
// 性能数据按条件查询:统计图数据 cxf/nms/alarm/alarmstatistic/
queryAlarmStatistic: function (statisticsList) {
return Axios.put(ALARMSTATISTIC_QUERY + '/', statisticsList, REQUEST_CONFIG)
},
queryAlarmReport: function (valueTopN, statisticsList) {
return Axios.put(ALARMREPORT_QUERY + valueTopN + '/', statisticsList, REQUEST_CONFIG)
},
/**
* @Description : 告警分布统计
* @author : ls
* @date : 2020/5/12 9:43
* @param :
* @return :
*/
queryAlarmDistributionReportApi: function (statisticsList) {
return Axios.put(ALARMREPORT_QUERY, statisticsList, REQUEST_CONFIG)
},
/**
* @Description : 报表统计
* @author : ls
* @date : 2020/5/29 16:13
* @param :
* @return :
*/
queryReport: function (val) {
return Axios.put(REPORT_QUERY, val, REQUEST_CONFIG)
},
// 下载告警查询列表excel
putDownloadAlarmQuery: function (conditionSet) {
return Axios.put(ALARM_QUERY_DOWNLOAD_EXCEL, conditionSet, {
headers: {
'Content-Type': 'application/json'
},
responseType: 'arraybuffer'
})
},
// 下载告警查询列表csv
putDownloadAlarmQueryCsv: function (conditionSet) {
return Axios.put(ALARM_QUERY_DOWNLOAD_CSV, conditionSet, {
headers: {
'Content-Type': 'application/json'
},
responseType: 'arraybuffer'
})
},
// 下载
updownloadAlarmConfig: function (conditionSet) {
return Axios.put(ALARM_PAGING_QUERY, conditionSet, {
headers: {
'Content-Type': 'application/json'
},
responseType: 'arraybuffer'
})
},
downloadAllAlarmCfgList: function (conditionSet) {
return Axios.put(ALARMCFGLIST_ADMQ, conditionSet, {
headers: {
'Content-Type': 'application/json'
},
responseType: 'arraybuffer'
})
}
}
function AlarmManagerAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(AlarmManagerAPI, staticMethods)
export default AlarmManagerAPI
import Axios from 'axios'
import {
ALARM_MANG_EXP,
ALARM_MANG_EXP_TOTAL,
ALARM_MANG_EXP_QUERY,
ALARM_MANG_EXP_EXPORT,
ALARM_MANG_EXP_IMPORT,
REQUEST_CONFIG,
} from '../../utils/RequestUrls'
var staticMethods = {
/**
* @Description : 分页查询API
* @author : ls
* @date : 2020/5/6 16:16
* @param :
* @return :
*/
putAlarmMangExpQueryterms: function (beginItem, endItem, selectList) {
return Axios.put(ALARM_MANG_EXP_QUERY + '/' + beginItem + '/' + endItem + '/', selectList, REQUEST_CONFIG)
},
/**
* @Description : 查询总页数
* @author : ls
* @date : 2020/5/6 16:06
* @param :
* @return :
*/
putAlarmMangExpListCounts: function (selectList) {
return Axios.put(ALARM_MANG_EXP_TOTAL, selectList, REQUEST_CONFIG)
},
/**
* @Description : 创建报表模板
* @author : ls
* @date : 2020/5/2 14:14
* @param :
* @return :
*/
addAlarmMangExp: function (template) {
return Axios.post(ALARM_MANG_EXP, template, REQUEST_CONFIG)
},
/**
* @Description : 修改报表模板
* @author : ls
* @date : 2020/5/2 14:15
* @param :
* @return :
*/
putModifyAlarmMangExp: function (template) {
return Axios.put(ALARM_MANG_EXP, template, REQUEST_CONFIG)
},
/**
* @Description : 删除
* @author : ls
* @date : 2020/5/2 14:15
* @param :
* @return :
*/
deleteDeleteAlarmMangExp: function (keyList) {
return Axios.delete(ALARM_MANG_EXP, {
data: keyList,
headers: {'Content-Type': 'application/json', 'Encoding': 'utf-8'}
})
},
/**
* @Description : 导入
* @author : ls
* @date : 2020/7/7 11:59
* @param :
* @return :
*/
postUploadAlarmMangExp: function (fileFormData) {
// return Axios.post(ALARM_MANG_EXP_IMPORT + '/1', fileFormData, {headers: {
return Axios.post(ALARM_MANG_EXP_IMPORT, fileFormData, {headers: {
'Content-Type': 'multipart/form-data',
'Accept': 'application/json'
}})
},
/**
* @Description : 导出
* @author : ls
* @date : 2020/7/7 15:57
* @param :
* @return :
*/
putDownloadAlarmMangExp: function (conditionSet) {
return Axios.put(ALARM_MANG_EXP_EXPORT, conditionSet, {
headers: {
'Content-Type': 'application/json'
},
responseType: 'arraybuffer'
})
}
}
function AlarmMangExpAPI () {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(AlarmMangExpAPI, staticMethods)
export default AlarmMangExpAPI
import Axios from 'axios'
import {
CDP_ADQ, REQUEST_CONFIG
} from "../../../utils/RequestUrls";
var staticMethods = {
// 获取所有CDP业务
getCDPCollection: function(){
return Axios.get(CDP_ADQ);
},
// 添加CDP业务
postAddCDP: function (cdpObj) {
return Axios.post(CDP_ADQ,cdpObj,REQUEST_CONFIG);
},
// 删除CDP业务
deleteDeleteCDP: function (cdpKeyList) {
return Axios.delete(CDP_ADQ,{
data:cdpKeyList,
headers:{'Content-Type':'application/json','Encoding':'utf-8'}
});
},
};
function CDPAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(CDPAPI, staticMethods);
export default CDPAPI
import {ELINE_ADMQ, ELINE_QUERY,ELINE_DEVICE, REQUEST_CONFIG, TUNNEL_ADMQ, TUNNEL_BANDWIDTH} from "../../../utils/RequestUrls";
import Axios from 'axios'
var staticMethods = {
//获取所有Eline(待测试及确认)
getElineCollection: function(){
return Axios.get(ELINE_ADMQ);
},
//新增Eline(待测试及确认)
postElineAdd:function (eline) {
return Axios.post(ELINE_ADMQ, eline, REQUEST_CONFIG);
},
//修改Eline(待测试及确认)
putElineUpdate:function (eline) {
return Axios.put(ELINE_ADMQ, eline, REQUEST_CONFIG);
},
//删除Eline(待测试及确认)
deleteElineDelete:function (elineKeyList) {
return Axios.delete(ELINE_ADMQ,{
data:elineKeyList,
headers:{'Content-Type':'application/json','Encoding':'utf-8'}
});
},
//条件查询Eline(待测试及确认)
getElineByCondition:function (selectList) {
return Axios.put(ELINE_QUERY, selectList, REQUEST_CONFIG);
},
//获取设备列表(待测试及确认)
getElineDeviceList:function (serviceTypeID) {
return Axios.put(ELINE_DEVICE + '/' + serviceTypeID);
},
//获取所有路由路径
getTunnelCollection:function () {
return Axios.get(TUNNEL_ADMQ);
},
//获取业务路由路径
getServiceTunnelCollection:function (vpnid) {
return Axios.get(TUNNEL_ADMQ + '/' + vpnid);
},
//获取所有路由路径new
getTunnelBandwidthCollection:function () {
return Axios.get(TUNNEL_BANDWIDTH);
},
}
function ElineAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(ElineAPI, staticMethods);
export default ElineAPI
import {ELINE_TEMPLATE_ADMQ, ELINE_TEMPLATE_QUERY, REQUEST_CONFIG} from "../../../utils/RequestUrls";
import Axios from 'axios'
var staticMethods = {
//获取所有业务模板类型(待测试及确认)
getElineTemplateAPICollection: function(){
return Axios.get(ELINE_TEMPLATE_ADMQ);
},
//新增业务模板类型(待测试及确认)
postElineTemplateAPIAdd:function (elineTemplate) {
return Axios.post(ELINE_TEMPLATE_ADMQ, elineTemplate, REQUEST_CONFIG);
},
//修改业务模板类型(待测试及确认)
putElineTemplateAPIUpdate:function (elineTemplate) {
return Axios.put(ELINE_TEMPLATE_ADMQ, elineTemplate, REQUEST_CONFIG);
},
//删除业务模板类型(待测试及确认)
deleteElineTemplateAPIDelete:function (delList) {
return Axios.delete(ELINE_TEMPLATE_ADMQ,{
data:delList,
headers:{'Content-Type':'application/json','Encoding':'utf-8'}
});
},
//条件查询业务模板类型(待测试及确认)
getElineTemplateAPIByCondition:function (selectList) {
return Axios.put(ELINE_TEMPLATE_QUERY, selectList, REQUEST_CONFIG);
}
}
function ElineTemplateAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(ElineTemplateAPI, staticMethods);
export default ElineTemplateAPI
import Axios from 'axios'
import {NET_PHY_ADMQ,NET_PHY_QUERY,NET_PHY_UPLOAD,NET_PHY_DOWNLOAD,REQUEST_CONFIG} from "../../../utils/RequestUrls";
var staticMethods = {
getNetPhyLinkCollection: function(){
return Axios.get(NET_PHY_ADMQ);
},
// 添加网络物理连接
postAddNetPhyLink: function (netPhy) {
return Axios.post(NET_PHY_ADMQ,netPhy,REQUEST_CONFIG);
},
// 删除网络物理连接
deleteDeleteNetPhyLink: function (netPhyList) {
return Axios.delete(NET_PHY_ADMQ,{
data:netPhyList,
headers:{'Content-Type':'application/json','Encoding':'utf-8'}
});
},
// 修改网络物理连接
putModifyNetPhyLink: function (netPhy) {
return Axios.put(NET_PHY_ADMQ,netPhy,REQUEST_CONFIG);
},
// 条件查询网络物理连接
putConditionQueryNetPhyLink: function (conditionSet) {
return Axios.put(NET_PHY_QUERY,conditionSet,REQUEST_CONFIG);
},
// 网络物理连接文件下载
putDownloadNetPhyLink: function (conditionSet) {
return Axios.put(NET_PHY_DOWNLOAD,conditionSet,{
headers: {
'Content-Type': 'application/json'
},
responseType: 'arraybuffer'
});
},
// 网络物理连接文件上传
postUploadNetPhyLink: function (fileFormData) {
return Axios.post(NET_PHY_UPLOAD,fileFormData,{headers: {
'Content-Type': 'multipart/form-data',
'Accept': 'application/json'
}});
}
};
function NetworkPhysicsAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(NetworkPhysicsAPI, staticMethods);
export default NetworkPhysicsAPI
import {SUBNET_SERVICE, SUBNET_SERVICE_MODIFY, SUBNET_SERVICE_DELETE, REQUEST_CONFIG} from "../../../utils/RequestUrls";
import Axios from 'axios'
var staticMethods = {
getAllServiceSubnetCollection: function(){
return Axios.get(SUBNET_SERVICE);
},
//新增ServiceSubnet(待测试及确认)
postServiceSubnetAdd:function (eline) {
return Axios.post(SUBNET_SERVICE, eline, REQUEST_CONFIG);
},
//修改(待测试及确认)
putServiceSubnetUpdate:function (eline,serviceSubnetIDForupdate,serviceSubnetNameForUpdate) {
return Axios.put(SUBNET_SERVICE + '/' + serviceSubnetIDForupdate + '/' + serviceSubnetNameForUpdate, eline, REQUEST_CONFIG);
},
//删除(待测试及确认)
ServiceSubnetDelete:function (serviceSubnetKeyList) {
return Axios.delete(SUBNET_SERVICE_DELETE,{
data:serviceSubnetKeyList,
headers:{'Content-Type':'application/json','Encoding':'utf-8'}
})
},
// 修改子网设备
putModifySubnetDevices: function (serviceSubnet) {
return Axios.put(SUBNET_SERVICE_MODIFY, serviceSubnet, REQUEST_CONFIG);
}
}
function ServiceSubnetAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
Object.assign(ServiceSubnetAPI, staticMethods);
export default ServiceSubnetAPI
import {SERVICETYPE_ADMQ, SERVICETYPE_QUERY, REQUEST_CONFIG} from "../../../utils/RequestUrls";
import Axios from 'axios'
var staticMethods = {
//获取所有serviceType
getServiceTypeCollection: function(){
return Axios.get(SERVICETYPE_ADMQ);
},
//新增serviceType
postServiceTypeAdd:function (serviceType) {
return Axios.post(SERVICETYPE_ADMQ, serviceType, REQUEST_CONFIG);
},
//修改serviceType
putServiceTypeUpdate:function (serviceType) {
return Axios.put(SERVICETYPE_ADMQ, serviceType, REQUEST_CONFIG);
},
//删除serviceType
deleteServiceTypeDelete:function (serviceTypeKeyList) {
return Axios.delete(SERVICETYPE_ADMQ,{
data:serviceTypeKeyList,
headers:{'Content-Type':'application/json','Encoding':'utf-8'}
});
},
//条件查询serviceType
getServiceTypeByCondition:function (selectList) {
return Axios.put(SERVICETYPE_QUERY, selectList, REQUEST_CONFIG);
}
}
function ServiceTypeAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(ServiceTypeAPI, staticMethods);
export default ServiceTypeAPI
import Axios from 'axios'
import {
TOPOLOGICAL_DOWNLOAD,
TOPOLOGICAL_UPLOAD,
TOPOLOGICAL_QUERY,
TOPOLOGICAL_ADMQ,
TOPOLOGICAL_ATV,
TOPOLOGICAL_DATV,
REQUEST_CONFIG,
} from "../../../utils/RequestUrls";
var staticMethods = {
// 获取所有动态拓扑
getTopoCollection: function() {
return Axios.get(TOPOLOGICAL_ADMQ)
},
// 查询拓扑
queryTopoCollection: function(conditionSet) {
return Axios.put(TOPOLOGICAL_QUERY,conditionSet,REQUEST_CONFIG)
},
// 导出动态拓扑
putDownloadTopoDynamic: function (conditionSet) {
return Axios.put(TOPOLOGICAL_DOWNLOAD, conditionSet, {
headers: {
'Content-Type': 'application/json'
},
responseType: 'arraybuffer'
})
},
// 删除拓扑
deleteDeleteTopological: function (topoKeyList) {
return Axios.delete(TOPOLOGICAL_ADMQ, {
data: topoKeyList,
headers: {'Content-Type': 'application/json', 'Encoding': 'utf-8'}
});
},
putEnableTopological: function (enableString) {
return Axios.put(TOPOLOGICAL_ATV,enableString,REQUEST_CONFIG);
},
putDisableTopological: function (disableString) {
return Axios.put(TOPOLOGICAL_DATV,disableString,REQUEST_CONFIG);
},
// 动态拓扑文件上传
postUploadTopoDynamic: function (fileFormData) {
return Axios.post(TOPOLOGICAL_UPLOAD,fileFormData,{headers: {
'Content-Type': 'multipart/form-data',
'Accept': 'application/json'
}});
}
};
function TopologicalDynamicAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(TopologicalDynamicAPI, staticMethods);
export default TopologicalDynamicAPI
import Axios from 'axios'
import {
CABINET_ADMQ,
LOCATION_ADMQ,
CABINET_QUERY,
CABINET_UPLOAD,
CABINET_DOWNLOAD,
REQUEST_CONFIG,
FIRMWARE_QUERY,
LOCATION_DOWNLOAD, LOCATION_QUERY, LOCATION_UPLOAD, SUBNET_UPLOAD
} from "../../utils/RequestUrls";
var staticMethods = {
getCabinetCollection: function(){
return Axios.get(CABINET_ADMQ);
},
// 添加机架
postAddCabinet: function (cabinet) {
return Axios.post(CABINET_ADMQ,cabinet,REQUEST_CONFIG);
},
// 删除机架
deleteDeleteCabinet: function (cabinetKeyList) {
return Axios.delete(CABINET_ADMQ,{
data:cabinetKeyList,
headers:{'Content-Type':'application/json','Encoding':'utf-8'}
});
},
// 修改机架
putModifyCabinet: function (cabinet) {
return Axios.put(CABINET_ADMQ,cabinet,REQUEST_CONFIG);
},
// 条件查询机架
putConditionQueryCabinet: function (conditionSet) {
return Axios.put(CABINET_QUERY,conditionSet,REQUEST_CONFIG);
},
// 机架文件下载
putDownloadCabinet: function (conditionSet) {
return Axios.put(CABINET_DOWNLOAD,conditionSet,{
headers: {
'Content-Type': 'application/json'
},
responseType: 'arraybuffer'
});
},
// 机架文件上传
postUploadCabinet: function (fileFormData) {
return Axios.post(CABINET_UPLOAD + '/1',fileFormData,{headers: {
'Content-Type': 'multipart/form-data',
'Accept': 'application/json'
}});
}
};
function CabinetAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(CabinetAPI, staticMethods);
export default CabinetAPI
import Axios from 'axios'
import {
PERFORM_TASK_TOTAL, ALARMCOUNTS_GET,
PERFORM_TASK, PERFORM_TASK_QUERY, PERFORM_TASK_STATUS, REQUEST_CONFIG
} from '../../utils/RequestUrls'
var staticMethods = {
/**
* @Description : 获取所有
* @author : ls
* @date : 2020/4/27 16:42
* @param :
* @return :
*/
getCollectTaskCollection: function () {
return Axios.get(PERFORM_TASK)
},
/**
* @Description : chuanjianAPI
* @author : ls
* @date : 2020/4/27 16:42
* @param :
* @return :
*/
postAddCollectTask: function (colTask) {
return Axios.post(PERFORM_TASK, colTask, REQUEST_CONFIG)
},
/**
* @Description : shanchu
* @author : ls
* @date : 2020/4/27 9:55
* @param :
* @return :
*/
deleteDeleteCollectTask: function (keyList) {
return Axios.delete(PERFORM_TASK, {
data: keyList,
headers: {'Content-Type': 'application/json', 'Encoding': 'utf-8'}
})
},
/**
* @Description : 修改
* @author : ls
* @date : 2020/4/27 16:44
* @param :
* @return :
*/
putModifyCollectTask: function (colTask) {
return Axios.put(PERFORM_TASK, colTask, REQUEST_CONFIG)
},
/**
* @Description : 启用
* @author : ls
* @date : 2020/4/29 16:13
* @param :
* @return :
*/
putStartCollectTask: function (val) {
return Axios.put(PERFORM_TASK_STATUS, val, REQUEST_CONFIG)
},
/**
* @Description : 条件查询
* @author : ls
* @date : 2020/4/27 10:33
* @param :
* @return :
*/
putConditionQueryCollectTask: function (conditionSet) {
return Axios.put(PERFORM_TASK_QUERY, conditionSet, REQUEST_CONFIG)
},
/**
* @Description : 分页
* @author : ls
* @date : 2020/5/26 14:59
* @param :
* @return :
*/
queryCollectTaskPaging: function (beginItem, endItem, selectList) {
return Axios.put(PERFORM_TASK_QUERY + '/' + beginItem + '/' + endItem + '/', selectList, REQUEST_CONFIG)
},
/**
* @Description : 查询总数
* @author : ls
* @date : 2020/5/26 15:05
* @param :
* @return :
*/
getCollectTaskCounts: function (selectList) {
return Axios.put(PERFORM_TASK_TOTAL, selectList, REQUEST_CONFIG)
}
}
function CollectTaskAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(CollectTaskAPI, staticMethods)
export default CollectTaskAPI
import Axios from 'axios'
import {
CONFIG_FILE_ADMQ, DOWNLOAD_CONFIG_TO_DEVICE, REQUEST_CONFIG, CONFIG_FILE_UPLOAD, LOCAL_CONFIG_FILE_UPLOAD,
CONFIG_FILE_UPLOAD_LOCAL, DOWNLOAD_CONFIG_TO_LOCAL, DOWNLOAD_CONFIG_DEVICE_TO_LOCAL, CONFIG_FILE_TOTAL_PAGE, CONFIG_FILE_TOTAL
} from '../../utils/RequestUrls'
var staticMethods = {
/**
* @Description : 配置文件备份
* @author : ls
* @date : 2020/6/11 15:13
* @param :
* @return :
*/
putCopyProfile: function (deviceKeyList) {
return Axios.put(CONFIG_FILE_UPLOAD, deviceKeyList, REQUEST_CONFIG)
},
// 选择历史配置文件恢复到设备
putDownloadConfigToDevice: function (configFileKey, restoryToDeviceFlag, deviceKeyList) {
return Axios.put(DOWNLOAD_CONFIG_TO_DEVICE + configFileKey + '/' + restoryToDeviceFlag, deviceKeyList, REQUEST_CONFIG)
},
/**
* @Description : 分页
* @author : ls
* @date : 2020/7/16 14:58
* @param :
* @return :
*/
putConfigFileQueryterms: function (beginItem, endItem, selectList) {
return Axios.put(CONFIG_FILE_TOTAL_PAGE + '/' + beginItem + '/' + endItem + '/', selectList, REQUEST_CONFIG)
},
/**
* @Description : 查询总页数
* @author : ls
* @date : 2020/5/6 16:06
* @param :
* @return :
*/
putConfigFileCounts: function (selectList) {
return Axios.put(CONFIG_FILE_TOTAL, selectList, REQUEST_CONFIG)
},
// 获取所有配置文件
getAllConfigFileCollection: function () {
return Axios.get(CONFIG_FILE_ADMQ)
},
// 删除配置文件
deleteBatchDeleteConfigFile: function (configFileKeyList) {
return Axios.delete(CONFIG_FILE_ADMQ, {
data: configFileKeyList,
headers: {'Content-Type': 'application/json', 'Encoding': 'utf-8'}
})
},
// 设备配置文件上传
putBatchUploadConfigFile: function (deviceKeyList) {
return Axios.put(CONFIG_FILE_UPLOAD, deviceKeyList, REQUEST_CONFIG)
},
/**
* @Description : oneKeyUploadConfigApi
* @author : ls
* @date : 2021/3/25 11:38
* @param :
* @return :
*/
oneKeyUploadConfigApi: function (fileName, flag, deviceKey, fileFormData) {
return Axios.post(LOCAL_CONFIG_FILE_UPLOAD + fileName + '/' + deviceKey + '/' + flag, fileFormData, {headers: {
'Content-Type': 'multipart/form-data',
'Accept': 'application/json'
}})
},
// 本地配置文件上传
postUploadLocalConfigFile: function (fileName, fileFormData) {
return Axios.post(CONFIG_FILE_UPLOAD_LOCAL + fileName, fileFormData, {headers: {
'Content-Type': 'multipart/form-data',
'Accept': 'application/json'
}})
},
// 本地配置文件下载
putDownloadConfigFile: function (configFileKey) {
// return Axios.put(DOWNLOAD_CONFIG_TO_LOCAL + configFileKey, conditionSet, {
return Axios.get(DOWNLOAD_CONFIG_TO_LOCAL + configFileKey, {
headers: {
'Content-Type': 'application/json'
},
responseType: 'arraybuffer'
})
},
/**
* @Description : putViewConfigFile
* @author : ls
* @date : 2020/11/16 15:25
* @param :
* @return :
*/
putViewConfigFile: function (key) {
return Axios.get(DOWNLOAD_CONFIG_TO_LOCAL + key, {
headers: {
'Content-Type': 'application/json'
},
responseType: 'arraybuffer'
})
},
/**
* @Description : putDownloadConfigFile
* @author : ls
* @date : 2020/11/10 16:48
* @param :
* @return :
*/
putDownConfFileDeviceApi: function (deviceKey) {
return Axios.get(DOWNLOAD_CONFIG_DEVICE_TO_LOCAL + deviceKey, {
headers: {
'Content-Type': 'application/json'
},
responseType: 'arraybuffer'
})
},
// 修改配置文件
putModifyConfigFile: function (configFile) {
return Axios.put(CONFIG_FILE_ADMQ, configFile, REQUEST_CONFIG)
}
}
function ConfigFileAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
Object.assign(ConfigFileAPI, staticMethods)
export default ConfigFileAPI
import Axios from 'axios'
import {CONFIG_FILE_DIFFERENCE_ADMQ, CONFIG_FILE_DIFFERENCE_VIEW, REQUEST_CONFIG,CONFIG_FILE_DIFFERENCE_HANDLE} from '../../utils/RequestUrls'
var staticMethods = {
// 获取所有配置文件差异性信息
getConfigFileDifferenceCollection: function () {
return Axios.get(CONFIG_FILE_DIFFERENCE_ADMQ)
},
//查看配置文件差异性
viewFileByUser: function (fileDiffererntMessage,fileType) {
return Axios.put(CONFIG_FILE_DIFFERENCE_VIEW + fileType,fileDiffererntMessage,{
headers: {
'Content-Type': 'application/json'
},
responseType: 'arraybuffer'
})
},
//操作配置文件差异性
handleFileByUser: function (fileDiffererntMessage,userOption) {
return Axios.put(CONFIG_FILE_DIFFERENCE_HANDLE + userOption,fileDiffererntMessage, REQUEST_CONFIG)
}
}
function ConfigFileDifferenceAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(ConfigFileDifferenceAPI, staticMethods)
export default ConfigFileDifferenceAPI
import Axios from 'axios'
import {
DEVICE_ADMQ_TOTAL, DEVICE_ADMQ, DEVICE_UPLOAD, DEVICE_DOWNLOAD, DEVICE_BOOK_DOWNLOAD, DEVICE_HISTORY_CONFIG,
REQUEST_CONFIG, DEVICE_CONDITION_QUERY, DEVICE_DOWNLOAD_DEVICE_LOG,
DEVICE_DISCOVER, DEVICE_PORT_CONFIG, DEVICE_TYPE_KEY, DEVICE_PORT_STATUS,
DEVICE_INFOS, DEVICE_BATCH_ADD, DEVICE_BATCH_SEARCH, DEVICE_TYPE_ADMQ, DEVICE_QUERY,
DEVICE_PORT_NUM, DEVICE_MODEL_ADMQ, DEVICE_ADMQ_TOTAL_PAGE, DEVICE_PORT, ORACLE_QUERY
} from '../../utils/RequestUrls'
var staticMethods = {
/**
* @Description : putDataQueryAPI
* @author : ls
* @date : 2020/11/19 9:48
* @param :
* @return :
*/
putDataQueryAPI: function (val) {
return Axios.put(ORACLE_QUERY, val, REQUEST_CONFIG)
},
// 获取所有设备
getDeviceCollection: function () {
return Axios.get(DEVICE_ADMQ)
},
/**
* @Description : 分页查询API
* @author : ls
* @date : 2020/5/6 16:05
* @param :
* @return :
*/
putDeviceQueryterms: function (beginItem, endItem, selectList) {
return Axios.put(DEVICE_ADMQ_TOTAL_PAGE + '/' + beginItem + '/' + endItem + '/', selectList, REQUEST_CONFIG)
},
/**
* @Description : 查询总页数
* @author : ls
* @date : 2020/5/6 16:06
* @param :
* @return :
*/
putDeviceCounts: function (selectList) {
return Axios.put(DEVICE_ADMQ_TOTAL, selectList, REQUEST_CONFIG)
},
getDeviceTypeCollection: function () {
return Axios.get(DEVICE_TYPE_ADMQ)
},
/**
* @Description : 获取网元型号
* @author : ls
* @date : 2020/4/26 18:33
* @param :
* @return :
*/
getDeviceModelCollection: function () {
return Axios.get(DEVICE_MODEL_ADMQ)
},
getDevicePortNum: function (deviceKey) {
return Axios.put(DEVICE_PORT_NUM, deviceKey, REQUEST_CONFIG)
},
// 上传设备
postUploadDevice: function (fileFormData) {
return Axios.post(DEVICE_UPLOAD + '/1', fileFormData, {headers: {
'Content-Type': 'multipart/form-data',
'Accept': 'application/json'
}})
},
// 下载设备
putDownloadDevice: function (conditionSet) {
return Axios.put(DEVICE_DOWNLOAD, conditionSet, {
headers: {
'Content-Type': 'application/json'
},
responseType: 'arraybuffer'
})
},
/**
* @Description : 网元台账
* @author : ls
* @date : 2020/6/9 9:56
* @param :
* @return :
*/
putDownloadDeviceBook: function (conditionSet) {
return Axios.put(DEVICE_BOOK_DOWNLOAD, conditionSet, {
headers: {
'Content-Type': 'application/json'
},
responseType: 'arraybuffer'
})
},
// 查询某一设备的所有历史配置
putDeviceHistoryConfig: function (conditionSet) {
return Axios.put(DEVICE_HISTORY_CONFIG, conditionSet, REQUEST_CONFIG)
},
// 手动获取设备信息
getDeviceInfoByManual: function (ipAddress) {
return Axios.put(DEVICE_ADMQ + ipAddress, {}, REQUEST_CONFIG)
},
// 设备的条件查询
putConditionQueryDevice: function (conditionSet) {
return Axios.put(DEVICE_CONDITION_QUERY, conditionSet, REQUEST_CONFIG)
},
putQueryDevice: function (conditionSet) {
return Axios.put(DEVICE_QUERY, conditionSet, REQUEST_CONFIG)
},
// 设备的修改
putModifyDevice: function (device) {
return Axios.put(DEVICE_ADMQ, device, REQUEST_CONFIG)
},
// 设备的新建、复制
postAddDevice: function (device) {
return Axios.post(DEVICE_ADMQ, device, REQUEST_CONFIG)
},
// 设备的批量删除
batchDeleteDevice: function (deviceKeyList) {
return Axios.delete(DEVICE_ADMQ, {
data: deviceKeyList,
headers: {'Content-Type': 'application/json', 'Encoding': 'utf-8'}
})
},
// 下载设备日志
putDownloadDeviceLog: function (deviceKey) {
return Axios.put(DEVICE_DOWNLOAD_DEVICE_LOG + deviceKey, {}, {
headers: {
'Content-Type': 'application/json'
},
responseType: 'arraybuffer'
})
},
// 传统设备发现
putDiscoverTraditionalDevices: function (ipGroup) {
return Axios.put(DEVICE_DISCOVER, ipGroup, REQUEST_CONFIG)
},
// 获取设备型号Key
putDeviceTypeKey: function (conditionSet) {
return Axios.put(DEVICE_TYPE_KEY, conditionSet, REQUEST_CONFIG)
},
/**
* @Description : 获取端口状态
* @author : ls
* @date : 2020/11/2 17:21
* @param :
* @return :
*/
getDevicePortStatus: function (panelsDeviceKey) {
return Axios.put(DEVICE_PORT_STATUS, panelsDeviceKey, REQUEST_CONFIG)
},
/**
* @Description : 获取端口状态
* @author : ls
* @date : 2020/11/4 17:06
* @param :
* @return :
*/
getDevicePortAPI: function (deviceKey) {
return Axios.put(DEVICE_PORT, deviceKey, REQUEST_CONFIG)
},
// 获取设备端口配置
putDevicePortConfig: function (conditionSet) {
return Axios.put(DEVICE_PORT_CONFIG, conditionSet, REQUEST_CONFIG)
},
// 获取指定设备信息
getDeviceInfo: function (ipAddress) {
return Axios.get(DEVICE_INFO + ipAddress)
},
postDeviceInfo: function (deviceInfo) {
// return Axios.post(DEVICE_INFO, deviceInfo, REQUEST_CONFIG)
return Axios.get(DEVICE_INFOS + '/' + deviceInfo, REQUEST_CONFIG)
},
// 获取设备端口光功率
putDeviceLuminousPower: function (portName, device) {
return Axios.put(DEVICE_ADMQ + portName, device, REQUEST_CONFIG)
},
// 批量添加设备
putBatchAddDevice: function (deviceList) {
return Axios.put(DEVICE_BATCH_ADD, deviceList, REQUEST_CONFIG)
},
// ls 设备发现
postSearchDevice1: function (searchCondition) {
return Axios.get(DEVICE_BATCH_SEARCH, searchCondition, REQUEST_CONFIG)
},
postSearchDevice: function () {
return Axios.get(DEVICE_BATCH_SEARCH, REQUEST_CONFIG)
}
}
function DeviceAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(DeviceAPI, staticMethods)
export default DeviceAPI
import Axios from 'axios'
import {
REQUEST_CONFIG, CONTROLL_TEMPERATURE, CONTROLL_SOFTWARE, CONTROLL_HARDWARE,
CONTROLL_FANSTATUS, CONTROLL_REBOOT
} from '../../utils/RequestUrls'
var staticMethods = {
// 获取设备温度
getDeviceTemperature: function (panelsDeviceKey) {
return Axios.put(CONTROLL_TEMPERATURE, panelsDeviceKey, REQUEST_CONFIG)
},
// 获取软件版本
getDeviceSoftware: function (panelsDeviceKey) {
return Axios.get(CONTROLL_SOFTWARE + panelsDeviceKey + '/', REQUEST_CONFIG)
},
// 获取硬件版本
getDeviceHardware: function (panelsDeviceKey) {
return Axios.get(CONTROLL_HARDWARE + panelsDeviceKey + '/', REQUEST_CONFIG)
},
// 获取风扇状态
getDevcieFanstatus: function (panelsDeviceKey) {
// return Axios.get(CONTROLL_FANSTATUS+panelsDeviceKey+"/",REQUEST_CONFIG);
return Axios.put(CONTROLL_FANSTATUS, panelsDeviceKey, REQUEST_CONFIG)
},
// 重启设备
getRestartDevice: function (panelsDeviceKey) {
return Axios.get(CONTROLL_REBOOT + panelsDeviceKey + '/', REQUEST_CONFIG)
}
}
function DeviceControllAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(DeviceControllAPI, staticMethods)
export default DeviceControllAPI
import Axios from 'axios'
import {ELEMENT_DISCOVER_MESSAGE, REQUEST_CONFIG} from '../../utils/RequestUrls'
var staticMethods = {
// 获取网元发现及进度信息
getSpeedAndProgressMessage: function (key) {
console.log('网元发现key')
console.log(key)
return Axios.post(ELEMENT_DISCOVER_MESSAGE, key, REQUEST_CONFIG)
},
}
function ElementDiscoverAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(ElementDiscoverAPI, staticMethods)
export default ElementDiscoverAPI
import Axios from 'axios'
import {
CABINET_ADMQ,
CABINET_QUERY,
CABINET_UPLOAD,
CABINET_DOWNLOAD,
REQUEST_CONFIG,
FIRMWARE,
FIRMWARE_QUERY,
DOWNLOAD_CONFIG_TO_LOCAL_FIRMWARE,
FIRMWARE_ADMQ,
UPDATE_FIRMWARE_TO_DEVICE,
RECOVER_FIRMWARE_TO_DEVICE,
FIRMWARE_UPLOAD, CONFIG_FILE_UPLOAD_LOCAL, DOWNLOAD_CONFIG_TO_DEVICE,
} from "../../utils/RequestUrls";
var staticMethods = {
getFirmWareCollection: function () {
return Axios.get(FIRMWARE);
},
// 固件上传
postUploadLocalFirmWare: function (fileName, deviceType, fileFormData) {
// alert(FIRMWARE_UPLOAD + fileName + '/' + deviceType)
return Axios.post(FIRMWARE_UPLOAD + fileName + '/' + deviceType, fileFormData, {
headers: {
'Content-Type': 'multipart/form-data',
'Accept': 'application/json'
}
})
},
// 下载固件
putDownloadFirmWare: function (firmWareKey, selectList) {
return Axios.put(DOWNLOAD_CONFIG_TO_LOCAL_FIRMWARE + firmWareKey, {
headers: {
'Content-Type': 'application/json'
},
responseType: 'arraybuffer'
})
},
// 更新固件
updateFirmWare: function (firmwareKey, deviceKeyList) {
// return Axios.put(UPDATE_FIRMWARE_TO_DEVICE + firmwareKey + '/' + deviceKeyList, REQUEST_CONFIG)
return Axios.put(UPDATE_FIRMWARE_TO_DEVICE + firmwareKey, deviceKeyList, REQUEST_CONFIG)
},
// 回退固件
recoverFirmWare: function (deviceKeyList) {
return Axios.get(RECOVER_FIRMWARE_TO_DEVICE + deviceKeyList, REQUEST_CONFIG)
},
// 删除固件
deleteBatchFirmWare: function (deleteFirmWareKeyList){
return Axios.delete(FIRMWARE_ADMQ, {
data: deleteFirmWareKeyList,
headers: {'Content-Type': 'application/json', 'Encoding': 'utf-8'}
})
},
// 条件查询固件
putConditionQueryFirmWare: function (conditionSet) {
return Axios.put(FIRMWARE_QUERY, conditionSet, REQUEST_CONFIG);
},
// 添加机架
postAddCabinet: function (cabinet) {
return Axios.post(CABINET_ADMQ,cabinet,REQUEST_CONFIG);
},
// 删除机架
deleteDeleteCabinet: function (cabinetKeyList) {
return Axios.delete(CABINET_ADMQ,{
data:cabinetKeyList,
headers:{'Content-Type':'application/json','Encoding':'utf-8'}
});
},
// 修改机架
putModifyCabinet: function (cabinet) {
return Axios.put(CABINET_ADMQ,cabinet,REQUEST_CONFIG);
},
// 条件查询机架
putConditionQueryCabinet: function (conditionSet) {
return Axios.put(CABINET_QUERY,conditionSet,REQUEST_CONFIG);
},
// 机架文件下载
putDownloadCabinet: function (conditionSet) {
return Axios.put(CABINET_DOWNLOAD,conditionSet,{
headers: {
'Content-Type': 'application/json'
},
responseType: 'arraybuffer'
});
},
// 机架文件上传
postUploadCabinet: function (fileFormData) {
return Axios.post(CABINET_UPLOAD,fileFormData,{headers: {
'Content-Type': 'multipart/form-data',
'Accept': 'application/json'
}});
}
};
function CabinetAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(CabinetAPI, staticMethods);
export default CabinetAPI
import Axios from 'axios'
import {
REQUEST_CONFIG,
INDEX_TEMPLATE_ADMQ, INDEX_TEMPLATE_QUERY, INDEX_TEMPLATE_TOTAL, PERFORM_TASK_QUERY
} from '../../utils/RequestUrls'
var staticMethods = {
/**
* @Description : huoqusuoyou
* @author : ls
* @date : 2020/4/26 15:10
* @param :
* @return :
*/
getIndexTemplateCollection: function () {
return Axios.get(INDEX_TEMPLATE_ADMQ)
},
/**
* @Description : 添加指标模板
* @author : ls
* @date : 2020/4/27 9:45
* @param :
* @return :
*/
postAddIndexTemplate: function (indexT) {
return Axios.post(INDEX_TEMPLATE_ADMQ, indexT, REQUEST_CONFIG)
},
/**
* @Description : shanchu
* @author : ls
* @date : 2020/4/27 9:55
* @param :
* @return :
*/
deleteDeleteIndexTemplate: function (keyList) {
return Axios.delete(INDEX_TEMPLATE_ADMQ, {
data: keyList,
headers: {'Content-Type': 'application/json', 'Encoding': 'utf-8'}
})
},
/**
* @Description : 修改指标模板
* @author : ls
* @date : 2020/4/27 17:05
* @param :
* @return :
*/
putModifyIndexTemplate: function (indexT) {
return Axios.put(INDEX_TEMPLATE_ADMQ, indexT, REQUEST_CONFIG)
},
/**
* @Description : 条件查询
* @author : ls
* @date : 2020/4/27 10:33
* @param :
* @return :
*/
putConditionQueryIndexTemplate: function (conditionSet) {
return Axios.put(INDEX_TEMPLATE_QUERY, conditionSet, REQUEST_CONFIG)
},
/**
* @Description : 总数
* @author : ls
* @date : 2020/6/10 15:54
* @param :
* @return :
*/
getIndexTemplateCounts: function (conditionSet) {
return Axios.put(INDEX_TEMPLATE_TOTAL, conditionSet, REQUEST_CONFIG)
},
/**
* @Description : 分页
* @author : ls
* @date : 2020/6/10 16:03
* @param :
* @return :
*/
queryIndexTemplatePaging: function (beginItem, endItem, selectList) {
return Axios.put(INDEX_TEMPLATE_QUERY + '/' + beginItem + '/' + endItem + '/', selectList, REQUEST_CONFIG)
}
}
function IndexTemplateAPI () {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(IndexTemplateAPI, staticMethods)
export default IndexTemplateAPI
import Axios from 'axios'
import {
LINK_ADMQ,
REQUEST_CONFIG,
LINK_CONDITION_QUERY,
LINK_DOWNLOAD,
LINK_IMPORT,
LINK_ADMQ_TOTAL_PAGE, LINK_ADMQ_TOTAL
} from '../../utils/RequestUrls'
var staticMethods = {
// 获取所有链路
getLinkCollection: function () {
return Axios.get(LINK_ADMQ)
},
// 删除链路
deleteLink: function (LinkKeyList) {
return Axios.delete(LINK_ADMQ, {
data: LinkKeyList,
headers: {'Content-Type': 'application/json', 'Encoding': 'utf-8'}
})
},
// 增加链路
postLinkAdd: function (addLink) {
return Axios.post(LINK_ADMQ, addLink, REQUEST_CONFIG)
},
// 修改链路
putModifyLink: function (link) {
return Axios.put(LINK_ADMQ, link, REQUEST_CONFIG)
},
// 条件查询链路
putConditionQueryLink: function (conditionSet) {
return Axios.put(LINK_CONDITION_QUERY, conditionSet, REQUEST_CONFIG)
},
/**
* @description : 导入
* @author : ls
* @date : 2020/6/23 22:01
* @param :
* @return :
**/
postUploadLink: function (fileFormData) {
return Axios.post(LINK_IMPORT + '/1', fileFormData, {headers: {
'Content-Type': 'multipart/form-data',
'Accept': 'application/json'
}})
},
/**
* @description : 导出
* @author : ls
* @date : 2020/6/23 22:00
* @param :
* @return :
**/
putDownloadLink: function (conditionSet) {
return Axios.put(LINK_DOWNLOAD, conditionSet, {
headers: {
'Content-Type': 'application/json'
},
responseType: 'arraybuffer'
})
},
/**
* @Description : 分页查询
* @author : ls
* @date : 2020/6/24 10:00
* @param :
* @return :
*/
putLinkQueryterms: function (beginItem, endItem, selectList) {
return Axios.put(LINK_ADMQ_TOTAL_PAGE + '/' + beginItem + '/' + endItem + '/', selectList, REQUEST_CONFIG)
},
/**
* @Description : 查询总数
* @author : ls
* @date : 2020/6/24 10:00
* @param :
* @return :
*/
putLinkCounts: function (selectList) {
return Axios.put(LINK_ADMQ_TOTAL, selectList, REQUEST_CONFIG)
}
}
function LinkAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(LinkAPI, staticMethods)
export default LinkAPI
import Axios from 'axios'
import {LOCATION_ADMQ,LOCATION_QUERY,LOCATION_UPLOAD,LOCATION_DOWNLOAD,REQUEST_CONFIG} from "../../utils/RequestUrls";
var staticMethods = {
// 获取所有机房
getLocationCollection: function(){
return Axios.get(LOCATION_ADMQ);
},
// 添加机房
postAddLocation: function (location) {
return Axios.post(LOCATION_ADMQ,location,REQUEST_CONFIG);
},
// 删除机房
deleteDeleteLocation: function (locationKeyList) {
return Axios.delete(LOCATION_ADMQ,{
data:locationKeyList,
headers:{'Content-Type':'application/json','Encoding':'utf-8'}
});
},
// 修改机房
putModifyLocation: function (location) {
return Axios.put(LOCATION_ADMQ,location,REQUEST_CONFIG);
},
// 条件查询机房
putConditionQueryLocation: function (conditionSet) {
return Axios.put(LOCATION_QUERY,conditionSet,REQUEST_CONFIG);
},
// 机房文件下载
putDownloadLocation: function (conditionSet) {
return Axios.put(LOCATION_DOWNLOAD,conditionSet,{
headers: {
'Content-Type': 'application/json'
},
responseType: 'arraybuffer'
});
},
// 机房文件上传
postUploadLocation: function (fileFormData) {
return Axios.post(LOCATION_UPLOAD + '/1',fileFormData,{headers: {
'Content-Type': 'multipart/form-data',
'Accept': 'application/json'
}});
}
};
function LocationAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(LocationAPI, staticMethods);
export default LocationAPI
import Axios from 'axios'
import {
REQUEST_CONFIG,
PerformanceData_Delete
} from "../../utils/RequestUrls";
var staticMethods = {
// 性能数据按条件查询:总条数
deletePerformanceDatas: function (selectList) {
var ret = Axios.delete(PerformanceData_Delete,{
data:selectList,
REQUEST_CONFIG
})
return ret
}
}
function PerformanceDataDeleteAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(PerformanceDataDeleteAPI, staticMethods);
export default PerformanceDataDeleteAPI
import Axios from 'axios'
import {REQUEST_CONFIG, TOP_PERFORM_COUNT, PERFORMANCE_COUNT, PERFORMANCE_QUERY, PERFORMANCE_DOWNLOAD_CSV, PERFORMANCE_DOWNLOAD, HISTORY_DATA} from '../../utils/RequestUrls'
var staticMethods = {
// 性能数据按条件查询:总条数
putPerformanceCounts: function (selectList) {
return Axios.put(PERFORMANCE_COUNT, selectList, REQUEST_CONFIG)
},
/**
* @Description : topn性能查询总数
* @author : ls
* @date : 2020/6/29 9:52
* @param :
* @return :
*/
putTopNPerformanceCounts: function (num, selectList) {
return Axios.put(TOP_PERFORM_COUNT + num, selectList, REQUEST_CONFIG)
},
// 性能数据按条件查询:分页性能
putPerformanceQueryterms: function (beginItem, endItem, selectList) {
return Axios.put(PERFORMANCE_QUERY + beginItem + '/' + endItem + '/', selectList, REQUEST_CONFIG)
},
/**
* @Description : top查询
* @author : ls
* @date : 2020/6/29 10:45
* @param :
* @return :
*/
putPerformanceQuery: function (num, selectList) {
return Axios.put(PERFORMANCE_QUERY + num, selectList, REQUEST_CONFIG)
},
// 导出excel
putDownloadPerformance: function (selectList) {
return Axios.put(PERFORMANCE_DOWNLOAD, selectList, {
headers: {
'Content-Type': 'application/json'
},
responseType: 'arraybuffer'
})
},
putDownloadPerformanceCsv: function (selectList) {
return Axios.put(PERFORMANCE_DOWNLOAD_CSV, selectList, {
headers: {
'Content-Type': 'application/json'
},
responseType: 'arraybuffer'
})
},
putQueryPerformTaskData: function (val) {
return Axios.put(HISTORY_DATA, val, REQUEST_CONFIG)
}
}
function PerformanceDataQuaryAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(PerformanceDataQuaryAPI, staticMethods)
export default PerformanceDataQuaryAPI
import Axios from 'axios'
import {REQUEST_CONFIG, PERFORMANCE_CONFIG_ALL, PERFORMANCE_CONFIG_MODIFY, PERFORMANCE_TYPE_ALL} from "../../utils/RequestUrls";
var staticMethods = {
// 获取所有性能配置
getAllPerformanceMonitorCollection: function () {
return Axios.get(PERFORMANCE_CONFIG_ALL);
},
// 获取所有性能事件
getAllPerformanceTypeCollection: function () {
return Axios.get(PERFORMANCE_TYPE_ALL);
},
// 修改性能门限
/**
* @Description :
* @author : ls
* @date : 2020/4/26 10:57
* @param :
* @return :
*/
putPerformanceMonitor: function (performConfig) {
return Axios.put(PERFORMANCE_CONFIG_MODIFY,performConfig,REQUEST_CONFIG);
},
/**
* @Description : chaxun
* @author : ls
* @date : 2020/4/26 12:54
* @param :
* @return :
*/
apiConditionQueryThreshold: function (val) {
return Axios.put(PERFORMANCE_CONFIG_ALL)
}
};
function PerformanceMonitorAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(PerformanceMonitorAPI, staticMethods);
export default PerformanceMonitorAPI
import Axios from 'axios'
import {REQUEST_CONFIG, PERFORMANCE_STATISTIC, PERFORMANCE_REPORT, RT_PERFORMANCE_TYPE} from "../../utils/RequestUrls";
var staticMethods = {
/**
* @Description : 获取性能事件
* @author : ls
* @date : 2020/5/12 16:44
* @param :
* @return :
*/
getPerformTypeAPI: function () {
return Axios.get(RT_PERFORMANCE_TYPE, REQUEST_CONFIG)
},
/**
* @Description :
* @author : ls
* @date : 2020/5/12 17:46
* @param :
* @return :
*/
queryPerformDistributionReportApi: function () {
return Axios.get(RT_PERFORMANCE_TYPE, REQUEST_CONFIG)
},
// 性能数据按条件查询:统计图数据
putPerformanceStatistic: function (valueType,statisticsList) {
return Axios.put(PERFORMANCE_STATISTIC+valueType+"/",statisticsList,REQUEST_CONFIG)
},
putPerformanceReports: function (valueType,valueTopN,statisticsList) {
return Axios.put(PERFORMANCE_REPORT+valueType+"/"+valueTopN,statisticsList,REQUEST_CONFIG)
}
};
function PerformanceStatisticAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(PerformanceStatisticAPI, staticMethods);
export default PerformanceStatisticAPI
import Axios from 'axios'
import {REQUEST_CONFIG, PERFORMANCE_STATISTIC} from "../../utils/RequestUrls";
var staticMethods = {
// 性能数据按条件查询:统计图数据
putPerformanceStatistic: function (valueType,statisticsList) {
return Axios.put(PERFORMANCE_STATISTIC+valueType+"/",statisticsList,REQUEST_CONFIG)
}
};
function PerformanceStatisticAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(PerformanceStatisticAPI, staticMethods);
export default PerformanceStatisticAPI
import Axios from 'axios'
import {
REQUEST_CONFIG, PERIOD_REPORT, PERIOD_REPORT_EXPORT, PERIOD_REPORT_QUERY, PERIOD_REPORT_TOTAL, DEVICE_DOWNLOAD
} from '../../utils/RequestUrls'
var staticMethods = {
/**
* @Description : 分页查询API
* @author : ls
* @date : 2020/5/6 16:16
* @param :
* @return :
*/
putPeriodReportListQueryterms: function (beginItem, endItem, selectList) {
return Axios.put(PERIOD_REPORT_QUERY + '/' + beginItem + '/' + endItem + '/', selectList, REQUEST_CONFIG)
},
/**
* @Description : 查询总页数
* @author : ls
* @date : 2020/5/6 16:06
* @param :
* @return :
*/
putPeriodReportListCounts: function (selectList) {
return Axios.put(PERIOD_REPORT_TOTAL, selectList, REQUEST_CONFIG)
},
/**
* @Description : 删除
* @author : ls
* @date : 2020/5/2 14:15
* @param :
* @return :
*/
deleteDeletePeriodReport: function (keyList) {
return Axios.delete(PERIOD_REPORT, {
data: keyList,
headers: {'Content-Type': 'application/json', 'Encoding': 'utf-8'}
})
},
/**
* @Description : 周期报表下载
* @author : ls
* @date : 2020/6/15 14:19
* @param :
* @return :
*/
putDownloadPeriodReport: function (deviceKey) {
return Axios.put(PERIOD_REPORT_EXPORT, deviceKey, {
headers: {
'Content-Type': 'application/json'
},
responseType: 'arraybuffer'
})
}
}
function PeriodReportAPI () {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(PeriodReportAPI, staticMethods)
export default PeriodReportAPI
import Axios from 'axios'
import {
REQUEST_CONFIG, PORTLIST_ADMQ, PORTLIST_CONDITION_QUERY, PORTLIST_UPLOAD,
PORTLIST_DOWNLOAD
} from "../../utils/RequestUrls";
var staticMethods = {
// 条件查询接入业务
putConditionQueryPortList: function (conditionSet) {
return Axios.put(PORTLIST_CONDITION_QUERY,conditionSet,REQUEST_CONFIG);
},
// 删除接入业务
deleteDeletePortList: function (portKeyList) {
return Axios.delete(PORTLIST_ADMQ,{
data:portKeyList,
headers:{'Content-Type':'application/json','Encoding':'utf-8'}
});
},
// 获取全部端口信息
getAllPortList: function () {
return Axios.get(PORTLIST_ADMQ);
},
// 导入端口文件
postUploadPortListFile: function (fileFormData) {
return Axios.post(PORTLIST_UPLOAD + '/1',fileFormData,{headers: {
'Content-Type': 'multipart/form-data',
'Accept': 'application/json'
}});
},
// 下载端口文件
putDownloadPortListFile: function (conditionSet) {
return Axios.put(PORTLIST_DOWNLOAD,conditionSet,{
headers: {
'Content-Type': 'application/json'
},
responseType: 'arraybuffer'
});
},
// 创建端口
postAddPort: function (port) {
return Axios.post(PORTLIST_ADMQ,port,REQUEST_CONFIG);
},
// 修改端口
putModifyPort: function (port) {
return Axios.put(PORTLIST_ADMQ,port,REQUEST_CONFIG);
}
};
function PortListAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(PortListAPI, staticMethods);
export default PortListAPI
import Axios from 'axios'
import {RAILWAY} from "../../utils/RequestUrls";
var staticMethods = {
getRailwayCollection: function(){
return Axios.get(RAILWAY);
},
getRailwayAdminCollection: function(){
return Axios.get(RAILWAY);
},
getRailwayDivisionCollection: function(){
return Axios.get(RAILWAY);
}
};
function RailwayAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
Object.assign(RailwayAPI, staticMethods);
export default RailwayAPI
import Axios from 'axios'
import {
REPORT_TASK_TOTAL, REPORT_TASK, REPORT_TASK_QUERY, REPORT_TASK_STATUS, REQUEST_CONFIG
} from '../../utils/RequestUrls'
var staticMethods = {
/**
* @Description : 获取所有
* @author : ls
* @date : 2020/4/27 16:42
* @param :
* @return :
*/
getReportTaskCollection: function () {
return Axios.get(REPORT_TASK)
},
/**
* @Description : chuanjianAPI
* @author : ls
* @date : 2020/4/27 16:42
* @param :
* @return :
*/
postAddReportTask: function (colTask) {
return Axios.post(REPORT_TASK, colTask, REQUEST_CONFIG)
},
/**
* @Description : shanchu
* @author : ls
* @date : 2020/4/27 9:55
* @param :
* @return :
*/
deleteDeleteReportTask: function (keyList) {
return Axios.delete(REPORT_TASK, {
data: keyList,
headers: {'Content-Type': 'application/json', 'Encoding': 'utf-8'}
})
},
/**
* @Description : 修改
* @author : ls
* @date : 2020/4/27 16:44
* @param :
* @return :
*/
putModifyReportTask: function (colTask) {
return Axios.put(REPORT_TASK, colTask, REQUEST_CONFIG)
},
/**
* @Description : 启用
* @author : ls
* @date : 2020/4/29 16:13
* @param :
* @return :
*/
putStartReportTask: function (val) {
return Axios.put(REPORT_TASK_STATUS, val, REQUEST_CONFIG)
},
/**
* @Description : 条件查询
* @author : ls
* @date : 2020/4/27 10:33
* @param :
* @return :
*/
putConditionQueryReportTask: function (conditionSet) {
return Axios.put(REPORT_TASK_QUERY, conditionSet, REQUEST_CONFIG)
},
/**
* @Description : 分页
* @author : ls
* @date : 2020/5/26 14:59
* @param :
* @return :
*/
queryReportTaskPaging: function (beginItem, endItem, selectList) {
return Axios.put(REPORT_TASK_QUERY + '/' + beginItem + '/' + endItem + '/', selectList, REQUEST_CONFIG)
},
/**
* @Description : 查询总数
* @author : ls
* @date : 2020/5/26 15:05
* @param :
* @return :
*/
getReportTaskCounts: function (selectList) {
return Axios.put(REPORT_TASK_TOTAL, selectList, REQUEST_CONFIG)
}
}
function ReportTaskAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(ReportTaskAPI, staticMethods)
export default ReportTaskAPI
import Axios from 'axios'
import {
REPORT_TEMPLATE, REQUEST_CONFIG, REPORT_TEMPLATE_QUERY, PERFORMANCE_QUERY, REPORT_TEMPLATE_TOTAL
} from '../../utils/RequestUrls'
var staticMethods = {
/**
* @Description : 分页查询API
* @author : ls
* @date : 2020/5/6 16:16
* @param :
* @return :
*/
putReportTemListQueryterms: function (beginItem, endItem, selectList) {
return Axios.put(REPORT_TEMPLATE_QUERY + '/' + beginItem + '/' + endItem + '/', selectList, REQUEST_CONFIG)
},
/**
* @Description : 查询总页数
* @author : ls
* @date : 2020/5/6 16:06
* @param :
* @return :
*/
putReportTemplateListCounts: function (selectList) {
return Axios.put(REPORT_TEMPLATE_TOTAL, selectList, REQUEST_CONFIG)
},
/**
* @Description : 创建报表模板
* @author : ls
* @date : 2020/5/2 14:14
* @param :
* @return :
*/
addReportTemplate: function (template) {
return Axios.post(REPORT_TEMPLATE, template, REQUEST_CONFIG)
},
/**
* @Description : 修改报表模板
* @author : ls
* @date : 2020/5/2 14:15
* @param :
* @return :
*/
putModifyReportTemplate: function (template) {
return Axios.put(REPORT_TEMPLATE, template, REQUEST_CONFIG)
},
/**
* @Description : 删除
* @author : ls
* @date : 2020/5/2 14:15
* @param :
* @return :
*/
deleteDeleteReportTemplate: function (keyList) {
return Axios.delete(REPORT_TEMPLATE, {
data: keyList,
headers: {'Content-Type': 'application/json', 'Encoding': 'utf-8'}
})
},
/**
* @Description : 获取所有
* @author : ls
* @date : 2020/5/2 14:16
* @param :
* @return :
*/
getReportTemplateCollection: function () {
return Axios.get(REPORT_TEMPLATE)
},
/**
* @Description : 条件查询
* @author : ls
* @date : 2020/5/2 14:16
* @param :
* @return :
*/
putReportTemplateCollection: function (conditionSet) {
return Axios.put(REPORT_TEMPLATE_QUERY, conditionSet, REQUEST_CONFIG)
}
}
function ReportTemplateAPI () {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(ReportTemplateAPI, staticMethods)
export default ReportTemplateAPI
import Axios from 'axios'
import {
RT_PERFORMANCE_URL,
RT_PERFORMANCE_TYPE,
RT_PERFORMANCE_TYPE_NEW,
REQUEST_CONFIG,
} from "../../utils/RequestUrls";
var staticMethods = {
// 性能数据按条件查询:总条数
rtPerformanceDatas: function (selectList, port, event) {
let {status, ...pick} = selectList
var a = port.length === 0 ? '-1' : port
// let b = {
// device: pick,
// port: port
// }
return Axios.put(RT_PERFORMANCE_URL + '/' + a + '/' + event, pick, REQUEST_CONFIG)
},
getAllRtEventType: function () {
return Axios.get(RT_PERFORMANCE_TYPE, REQUEST_CONFIG)
},
getAllRtPerformType: function (device) {
let {status, ...pick} = device
return Axios.put(RT_PERFORMANCE_TYPE_NEW, pick, REQUEST_CONFIG)
}
}
function RtPerformanceAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(RtPerformanceAPI, staticMethods);
export default RtPerformanceAPI
import Axios from 'axios'
import {SERVER_ADMQ,SERVER_QUERY,REQUEST_CONFIG, SERVER_UNDER_DEVICES, SERVER_UNDER_DEVICES_NUM} from "../../utils/RequestUrls";
var staticMethods = {
// 获取所有服务器
getServerCollection: function(){
return Axios.get(SERVER_ADMQ);
},
// 添加服务器
postAddServer: function (server) {
return Axios.post(SERVER_ADMQ,server,REQUEST_CONFIG);
},
// 删除服务器
deleteDeleteServer: function (serverKeyList) {
return Axios.delete(SERVER_ADMQ,{
data:serverKeyList,
headers:{'Content-Type':'application/json','Encoding':'utf-8'}
});
},
// 修改服务器
putModifyServer: function (server) {
return Axios.put(SERVER_ADMQ,server,REQUEST_CONFIG);
},
// 条件查询服务器
putConditionQueryServer: function (conditionSet) {
return Axios.put(SERVER_QUERY,conditionSet,REQUEST_CONFIG);
},
// 获取SDNC服务器管辖设备列表
putDevicesUnderServer: function (serverId) {
return Axios.put(SERVER_UNDER_DEVICES+serverId,{},REQUEST_CONFIG);
},
// 获取所有SDNC服务器管辖设备数量集合
getDeviceNumUnderServer: function () {
return Axios.get(SERVER_UNDER_DEVICES_NUM);
}
};
function ServerAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(ServerAPI, staticMethods);
export default ServerAPI
import Axios from 'axios'
import {
SNAPSHOT_CMD,
SNAPSHOT_ADMQ,
SNAPSHOT_QUERY,
SNAPSHOT_CREATE,
SNAPSHOT_RECOVER,
CABINET_ADMQ,
CABINET_UPLOAD,
CABINET_DOWNLOAD,
REQUEST_CONFIG,
FIRMWARE_QUERY,
} from "../../utils/RequestUrls";
var staticMethods = {
// 获取快照
getSnapshotCollection: function () {
return Axios.get(SNAPSHOT_CMD)
},
// 删除快照
deleteDeleteSnapshot: function (snapshotKey) {
return Axios.delete(SNAPSHOT_ADMQ, {
data: snapshotKey,
REQUEST_CONFIG
})
},
// 条件查询快照
putConditionQuerySnapshot: function (conditionSet) {
return Axios.put(SNAPSHOT_QUERY, conditionSet, REQUEST_CONFIG);
},
// 创建快照
postAddSnapshot: function (snapshot, options) {
return Axios.post(SNAPSHOT_CREATE + options, snapshot)
},
// 回退快照
getRecoverSnapshot: function (snapshotKey) {
return Axios.get(SNAPSHOT_RECOVER + snapshotKey)
}
}
function CabinetAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(CabinetAPI, staticMethods);
export default CabinetAPI
import Axios from 'axios'
import {
SUBNET_ADMQ, REQUEST_CONFIG, SUBNET_CONDITION_QUERY, SUBNET_UPLOAD,
SUBNET_DOWNLOAD, SUBNET_DELETE
} from '../../utils/RequestUrls'
var staticMethods = {
// 获取所有子网
getSubnetCollection: function () {
return Axios.get(SUBNET_ADMQ)
},
// 添加子网
postAddSubnet: function (subnet) {
return Axios.post(SUBNET_ADMQ, subnet, REQUEST_CONFIG)
},
// 删除子网
deleteDeleteSubnet: function (subnetKeyList) {
return Axios.delete(SUBNET_ADMQ, {
data: subnetKeyList,
headers: {'Content-Type': 'application/json', 'Encoding': 'utf-8'}
})
},
// 修改子网
putModifySubnet: function (subnet) {
return Axios.put(SUBNET_ADMQ, subnet, REQUEST_CONFIG)
},
// 条件查询子网
putConditionQuerySubnet: function (conditionSet) {
return Axios.put(SUBNET_CONDITION_QUERY, conditionSet, REQUEST_CONFIG)
},
// 子网文件下载
putDownloadSubnet: function (conditionSet) {
return Axios.put(SUBNET_DOWNLOAD, conditionSet, {
headers: {
'Content-Type': 'application/json'
},
responseType: 'arraybuffer'
})
},
// 子网文件上传
postUploadSubnet: function (fileFormData) {
return Axios.post(SUBNET_UPLOAD + '/1', fileFormData, {headers: {
'Content-Type': 'multipart/form-data',
'Accept': 'application/json'
}})
}
}
function SubnetAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(SubnetAPI, staticMethods)
export default SubnetAPI
import Axios from 'axios'
import {
CABINET_UPLOAD,
CABINET_DOWNLOAD,
} from "../../utils/RequestUrls";
var staticMethods = {
/**
* @Author : lS
* @Date : 12:05 2019/11/18
* @Description : 系统配置上传
**/
postUploadSystemConfig: function (url, chooseOperation, fileFormData) {
return Axios.post(url + '/' + chooseOperation, fileFormData,
{
headers: {
'Content-Type': 'multipart/form-data',
'Accept': 'application/json'
}
})
},
/**
* @Author : lS
* @Date : 15:05 2019/11/18
* @Description : 系统配置数据下载
**/
putDownloadSystemConfig: function (url) {
var arr = []
return Axios.put(url, arr, {
headers: {
'Content-Type': 'application/json'
},
responseType: 'arraybuffer'
})
},
};
function SystemConfigAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(SystemConfigAPI, staticMethods);
export default SystemConfigAPI
import Axios from 'axios'
import {
TOPO_DISCOVERY_TEMPLATE, TOPO_DISCOVERY_TEMPLATE_QUERY, REQUEST_CONFIG
} from '../../../utils/RequestUrls'
var staticMethods = {
/**
* @Description : 网元发现创建API
* @author : ls
* @date : 2020/4/23 18:03
* @param :
* @return :
*/
addTemplate: function (template) {
return Axios.post(TOPO_DISCOVERY_TEMPLATE, template, REQUEST_CONFIG)
},
/**
* @Description : 网元发现修改API
* @author : ls
* @date : 2020/4/24 9:57
* @param :
* @return :
*/
putModifyTemplate: function (template) {
return Axios.put(TOPO_DISCOVERY_TEMPLATE, template, REQUEST_CONFIG)
},
/**
* @Description : shanchuAPI
* @author : ls
* @date : 2020/4/23 19:53
* @param :
* @return :
*/
deleteDeleteTemplate: function (keyList) {
return Axios.delete(TOPO_DISCOVERY_TEMPLATE, {
data: keyList,
headers: {'Content-Type': 'application/json', 'Encoding': 'utf-8'}
})
},
/**
* @Description : 查询所有API
* @author : ls
* @date : 2020/4/22 20:32
* @param :
* @return :
*/
getTemplateCollection: function () {
return Axios.get(TOPO_DISCOVERY_TEMPLATE)
},
/**
* @Description : 条件查询API
* @author : ls
* @date : 2020/4/22 17:45
* @param :
* @return :
*/
putTemplateCollection: function (conditionSet) {
return Axios.put(TOPO_DISCOVERY_TEMPLATE_QUERY, conditionSet, REQUEST_CONFIG)
}
}
function EdTemplateAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(EdTemplateAPI, staticMethods)
export default EdTemplateAPI
import Axios from 'axios'
import {REQUEST_CONFIG, TOPOLOGY_ADMQ} from '../../utils/RequestUrls'
var staticMethods = {
// 获取所有拓扑信息
getTopologyCollection: function () {
return Axios.get(TOPOLOGY_ADMQ)
},
// 保存拓扑图信息
postSaveTopologyCollection: function (topologyCollection) {
return Axios.post(TOPOLOGY_ADMQ, topologyCollection, REQUEST_CONFIG)
}
}
function TopologyAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(TopologyAPI, staticMethods)
export default TopologyAPI
import Axios from 'axios'
import {REQUEST_CONFIG, USER_ADMQ, USER_QUERY, USER_RESET_PWD, USER_AUTHORITY, USER_LOGIN, USER_LOGOUT, USER_INFO_GET,
USER_PWD_UPDATE, USER_INFO_UPDATE, USER_PWD_CHECK} from '../../utils/RequestUrls'
var staticMethods = {
// 获取全部用户
getAllUserCollection: function () {
return Axios.get(USER_ADMQ)
},
// 添加用户
postAddUser: function (user) {
return Axios.post(USER_ADMQ, user, REQUEST_CONFIG)
},
// 删除用户
deleteUser: function (userKeyList) {
return Axios.delete(USER_ADMQ, {
data: userKeyList,
headers: {'Content-Type': 'application/json', 'Encoding': 'utf-8'}
})
},
// 修改用户
putModifyUser: function (user) {
return Axios.put(USER_ADMQ, user, REQUEST_CONFIG)
},
// 条件查询用户信息
putConditionQueryUser: function (selectList) {
return Axios.put(USER_QUERY, selectList, REQUEST_CONFIG)
},
// 重置用户密码
putResetUserPassword: function (user) {
return Axios.put(USER_RESET_PWD, user, REQUEST_CONFIG)
},
// 登录
getLogin: function (arr) {
return Axios.post(USER_LOGIN, arr, {headers: {'Content-Type': 'application/json'}})
// return $.ajax({
// url:'./static/ipconfig.json',//url路径
// // type:'GET', //GET
// // async:false, //或false,是否异步
// // timeout:5000, //超时时间
// // dataType:'json', //返回的数据格式:
// success:function(data,textStatus,jqXHR){
// protocal = data.protocal;
// },
// error:function(xhr,textStatus){
// console.log("ipconfig配置失败!");
// }
// })
},
// 注销
postLogout: function () {
return Axios.post(USER_LOGOUT, {}, {headers: {'Content-Type': 'application/json'}})
},
// 获取用户权限
getAllUserAuthority: function () {
return Axios.get(USER_AUTHORITY, {headers: {'Content-Type': 'application/json'}})
},
// 获取个人信息
getUserInfo: function () {
return Axios.get(USER_INFO_GET)
},
// 修改个人信息
putModifyUserInfo: function (userInfo) {
return Axios.put(USER_INFO_UPDATE, userInfo, REQUEST_CONFIG)
},
// 修改个人密码
putModifyUserPwd: function (arr) {
return Axios.post(USER_PWD_UPDATE, arr, REQUEST_CONFIG)
},
// 用户密码认证
getCheckPwd: function (pwd) {
return Axios.put(USER_PWD_CHECK, pwd, REQUEST_CONFIG)
}
}
function UserAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(UserAPI, staticMethods)
export default UserAPI
import Axios from 'axios'
import {AUTHORITY_ADMQ, AUTHORITY_CONFIG, REQUEST_CONFIG} from "../../utils/RequestUrls"
var staticMethods = {
//获取全部权限集合
getAllAuthorityCollection: function () {
return Axios.get(AUTHORITY_ADMQ)
},
//获取用户组配置
getUserGroupConfig: function () {
return Axios.get(AUTHORITY_CONFIG)
},
//创建用户组
postAddUserGroup: function (userGroup) {
return Axios.post(AUTHORITY_CONFIG, userGroup, REQUEST_CONFIG)
},
//删除用户组
deleteDeleteUserGroup: function (userGroupKeyList) {
return Axios.delete(AUTHORITY_CONFIG,{
data:userGroupKeyList,
headers:{'Content-Type':'application/json','Encoding':'utf-8'}
});
},
//修改用户组
putModifyUserGroup: function (userGroup) {
return Axios.put(AUTHORITY_CONFIG, userGroup, REQUEST_CONFIG)
},
//条件查询用户组
putConditionQueryUserGroup: function (conditionSet) {
return Axios.put(AUTHORITY_CONFIG, conditionSet, REQUEST_CONFIG)
}
}
function UserGroupAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
Object.assign(UserGroupAPI, staticMethods)
export default UserGroupAPI
import Axios from 'axios'
import {
REQUEST_CONFIG, USER_LOGIN_LOG_SPLIT, USER_LOGIN_LOG_COUNT, USER_LOGIN_LOG_DOWNLOAD,
USER_OPTION_LOG_SPLIT, USER_OPTION_LOG_COUNT, USER_OPTION_LOGDOWNLOAD
} from "../../utils/RequestUrls";
var staticMethods = {
// 条件分页查询登录日志
putQueryLoginLogSplitByCondition: function (beginItem, endItem, selectList) {
return Axios.put(USER_LOGIN_LOG_SPLIT+beginItem+"/"+endItem,selectList,REQUEST_CONFIG);
},
//条件分页查询操作日志
putQueryOptionLogSplitByCondition: function (beginItem, endItem, selectList) {
return Axios.put(USER_OPTION_LOG_SPLIT+beginItem+"/"+endItem,selectList,REQUEST_CONFIG);
},
// 添加查询登录日志总条数
putQueryLoginLogCountsByCondition: function (selectList) {
return Axios.put(USER_LOGIN_LOG_COUNT, selectList, REQUEST_CONFIG);
},
//添加查询操作日志总条数
putQueryOLogCountsByCondition: function (selectList) {
return Axios.put(USER_OPTION_LOG_COUNT, selectList, REQUEST_CONFIG);
},
// 导出用户登录日志
putExportLoginLogToExcel: function (selectList) {
return Axios.put(USER_LOGIN_LOG_DOWNLOAD, selectList, {
headers: {
'Content-Type': 'application/json'
},
responseType: 'arraybuffer'
});
},
//导出用户操作日志
putExportOptionLogToExcel: function (selectList) {
return Axios.put(USER_OPTION_LOGDOWNLOAD, selectList, {
headers: {
'Content-Type': 'application/json'
},
responseType: 'arraybuffer'
});
}
};
function UserLogAPI (websocketService = null) {
return Object.freeze(Object.assign(
{
// object methods comes here
},
staticMethods
))
}
// inject static methods
Object.assign(UserLogAPI, staticMethods);
export default UserLogAPI
import {request} from '../utils/request'
export const requestLogin = params => {
return request('/api/user/login', params).then(data => {
localStorage.setItem('user-token', JSON.stringify(data.token))
return data
})
}
export const requestRegister = params => {
return request('/api/user/register', params)
}
export const requestUserInfo = params => {
return request('/api/user/info', params).then((data) => {
sessionStorage.setItem('user-info', JSON.stringify(data))
return data
})
}
export const requestLogout = params => {
return request('/api/user/logout', params)
}
export const requestChangePassword = params => {
return request('/api/user/changePassword', params).then(data => {
localStorage.setItem('user-token', JSON.stringify(data.token))
return data
})
}
export const requestUserQuery = params => {
return request('/api/user/query', params)
}
export const requestPermissionsQuery = params => {
return request('/api/user/permissions', params)
}
import ListenerUtil from '../../utils/ListenerUtil'
var DeviceStateSocketApi = {
MsgType: {
// 告警相关消息:
ADD_ALARM: '0:0',
DELETE_ALARM: '1:0',
MODIFY_ALARM: '2:0',
CONFIRM_ALARM: '5:0',
CLEAR_ALARM: '6:0',
RECOVER_ALARM: '8:0',
REFRESH_ALARM: '15:0',
// 设备相关消息:
ADD_DEVICE: '0:1',
DELETE_DEVICE: '1:1',
MODIFY_DEVICE: '2:1',
DISCOVER_DEVICE: '7:1',
MOVE_DEVICE_FROM_SUBNET: '9:1',
// 链路相关消息:
ADD_LINK: '0:2',
DELETE_LINK: '1:2',
MODIFY_LINK: '2:2',
DISCOVER_LINK: '7:2',
// 子网相关消息:
ADD_SUBNET: '0:4',
DELETE_SUBNET: '1:4',
MODIFY_SUBNET: '2:4',
// Eline业务相关消息:
ADD_ELINE: '0:6',
DELETE_ELINE: '1:6',
MODIFY_ELINE: '2:6',
// QOS业务相关消息:
// ADD_CDP: "0:10",
// DELETE_CDP: "1:10",
// MODIFY_CDP: "2:10",
// 告警等级配置相关消息:
MODIFY_ALARM_LEVEL_CONFIG: '2:8',
// 告警过滤器相关消息:
ADD_ALARM_FILTER: '0:9',
DELETE_ALARM_FILTER: '1:9',
MODIFY_ALARM_FILTER: '2:9',
// 服务器相关消息:
ADD_SERVER: '0:11',
DELETE_SERVER: '1:11',
MODIFY_SERVER: '2:11',
// 权限修改
MODIFY_AUTHORITY: '2:12',
// 已登录用户密码修改
MODIFY_USER_PASSWORD: '2:13',
// 修改用户组
MODIFY_USER_GROUP: '2:14',
// 删除用户
DELETE_USER: '1:14',
// 相同用户登录
SAME_USER_LOGIN: '10:14',
// 流量监控
// todo 之后须统一
BANK_WIDTH: '2:10',
// 配置文件添加
CONFIG_FILE_ADD: '0:15',
// 配置文件删除
CONFIG_FILE_DELETE: '1:15',
// 网元发现
TOPOLOGY_DISCOVER: '2:3',
// 配置文件差异
FILE_DIFFERENCE_MESSAGE_ADD: '0:19',
FILE_DIFFERENCE_MESSAGE_UPDATE: '19:2',
FILE_DIFFERENCE_MESSAGE_DELETE: '1:19',
// 未知消息 :
UNKNOWN: 'undefined:undefined'
},
/**
* 获取消息类型
* @param message 消息
* @returns {string} 类型字符串 'objectType:objectOption'
*/
getMessageType: function (message) {
return String(message.objectOption) + ':' + String(message.objectType)
},
/**
* 获取消息数据
* @param message 消息
* @returns {Object} 消息数据
*/
getMessageData: function (message) {
return message.returnObject
}
}
// 增加创建消息监听器的方法
var emptyListenerRegistry = ListenerUtil.parseListenerRegistry(DeviceStateSocketApi.MsgType)
DeviceStateSocketApi.createMessageListenerRegistry = function () {
return Object.assign({}, emptyListenerRegistry)
}
export default DeviceStateSocketApi
/*----------公共样式-----------*/
body,html{
height:100%;
width: 100%;
}
li{
list-style: none;
}
.h-all{
height: 100%;
}
.page-sub-main{
height: 100%;
margin: 0;
padding: 0;
}
/*---------------调整表格表头的高度和表头右边框------------------------*/
.el-table .table-header{
line-height: 35px;
background-color: #EBEEF5;
}
.el-table .table-header th{
border-bottom: 0;
padding-top: 0;
padding-bottom: 0;
background: #EBEEF5;
}
.el-table--border th{
border-right: 1px solid #dddddd;
}
.el-table .table-header th .cell{
line-height: 35px;
display: block;
color: #595959;
white-space:nowrap;
}
.el-table .table-header th .cell label, .el-table .table-header th .cell label .el-checkbox__input, .el-table .table-cell .cell label, .el-table .table-cell .cell label .el-checkbox__input{
line-height: 0;
}
.el-table td{
padding-top: 0;
padding-bottom: 0;
}
/*------------表格内容单元格高度设置及高亮背景色-------------------*/
.el-table .table-cell .cell{
line-height: 30px;
white-space:nowrap;
}
.el-table .table-cell .cell p{
margin: 0;
}
.el-table .table-header .el-table-column--selection .cell,.el-table .el-table__row .el-table-column--selection .cell{
text-align: center;
padding: 0;
}
.el-table--striped .el-table__body tr.el-table__row--striped.current-row td, .el-table__body tr.current-row>td, .el-table__body tr.hover-row.current-row>td, .el-table__body tr.hover-row.el-table__row--striped.current-row>td, .el-table__body tr.hover-row.el-table__row--striped>td, .el-table__body tr.hover-row>td,.el-table--enable-row-hover .el-table__body tr:hover>td{
background-color: #cce3fb;
}
/*-----------解决表格表头边框错位问题---------------------*/
body .el-table th.gutter{
display: table-cell!important;
}
body .el-table colgroup.gutter {
display: table-cell !important;
}
/*-----------调整导航栏的高度-----------*/
.menuNav .el-submenu .el-submenu__title{
height: 50px;
line-height: 50px;
}
/*----------------主要tab标题样式----------------*/
.tab-box{
height: 100%;
}
.tab-box .el-tabs__content{
padding-bottom: 0px!important;
padding-top: 0px!important;
padding-left: 0px!important;
padding-right: 0px!important;
flex: 1;
}
.tab-box .el-tabs__item{
height: 30px;
line-height: 30px;
}
.tab-box .el-tabs__nav-next, .el-tabs__nav-prev{
line-height: 30px;
}
/*兼容ie*/
.tab-box .el-tabs__item .tab-btn{
pointer-events: none;
}
.tab-box .el-tabs__item .tab-btn .el-badge{
width: 90px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
font-size: 13px;
text-align: center;
margin-top: -6px;
/*文字不能被选中*/
-webkit-user-select:none;
-moz-user-select:none;
-ms-user-select:none;
user-select:none;
}
.tab-box .el-badge__content.is-dot{
top: 4px;
right: 8px;
}
.icon {
width: 1.1em;
height: 1.1em;
vertical-align: -0.15em;
fill: #FFFFFF;
overflow: hidden;
}
/*---------------首页告警tab-------------------*/
.alarm-tab {
}
.alarm-tab .el-tabs__item{
height: 30px;
line-height: 30px;
font-size: 13px;
}
.page-content .el-tabs__content .el-main{
padding: 10px;
}
/*------------弹出框中的确定和修改居中--------------*/
.el-dialog__footer{
text-align: center;
}
/*----------上传文件-----------*/
input[type="file"]{
display: none;
}
/*--------------flex自适应-----------------*/
.adapt-height-box{
display: -webkit-flex;
display: flex;
flex-direction: column;
}
.adapt-height{
flex: 1;
}
.el-table.adapt-height {
/*display: -webkit-flex;*/
/*display: flex;*/
}
.el-table.adapt-height .el-table__body-wrapper{
flex: 1;
overflow: auto;
}
/*----------------统计中的tab----------------------*/
.statistic-tab-box .el-tabs__content{
flex: 1;
display: -webkit-flex;
display: flex;
flex-direction: column;
}
/*--------------主要内容页的header------------------------*/
.page-content .el-header {
padding: 6px 15px 0px;
background-color: #f9fafc;
color: #333;
}
.page-content .el-header label{
margin-bottom: 0;
}
.header-search{
text-align: left;
margin-bottom: 3px;
}
.header-button-box{
text-align: left;
}
.header-button-box .el-button{
margin-bottom: 6px;
}
.header-button-box .el-button{
margin-left: 0;
margin-right: 10px;
}
.header-button-box .search{
float: right;
margin-right: 3px;
}
.search .search-div{
display: inline-block;
margin-right: 15px;
margin-bottom: 3px;
}
.search-input-box{
display: inline-block;
margin-right: 15px;
margin-bottom: 3px;
}
.search-input-box label{
font-size: 10px;
}
.header-search .search-input-box .el-input{
width: 200px;
}
/*----------拓扑图header右侧的提示-----------------*/
.header-right{
position: absolute;
right: 15px;
top: 9px;
}
.icon-circle{
height: 10px;
width: 10px;
border-radius: 50%;
display: inline-block;
margin-right: 3px;
margin-left: 10px;
}
.icon-circle-subnet{
height: 20px;
width: 20px;
border-radius: 50%;
display: inline-block;
margin-right: 3px;
margin-left: 8px;
float: left;
}
.el-dialog__body{
padding: 10px 20px;
}
.el-button--bianji {
background: #093823;
}
.el-button--bianji:hover {
background: #5A8BFF;
}
.el-button--mini, .el-button--mini.is-round{
padding: 5px 10px;
font-size: 10px;
}
.el-button--mini *{
font-size:10px;
}
.el-input--mini{
font-size:10px;
}
.el-input--mini .el-input__inner{
height: 24px;
line-height: 24px;
}
.el-input--mini .el-input__icon{
line-height: 24px;
}
/*-----------label英文不换行-------------------*/
label{
white-space: nowrap;
}
/*-----------tooltip显示最大宽度-------------------*/
.el-tooltip__popper {
max-width: 400px;
line-height: 120%;
}
/*-----------页面最小宽度和header右侧隐藏------------------*/
@media (max-width: 780px){
.navbar-right{
display: none;
}
}
#app{
min-width: 1400px;
}
/*-----------pl-table分页的样式------------------*/
.plTableBox .myPagination{
text-align: center;
}
a {
color: inherit;
font-family: "宋体";
font-size: 12px;
}
* {
color: inherit;
font-family: "宋体";
font-size: 12px;
}
body {
color: inherit;
font-family: "宋体";
font-size: 12px;
}
.el-table .warning-row {
background: oldlace;
}
/*.el-checkbox__label {*/
/*font-size: 10px!important;*/
/*}*/
export function formatDate(date, fmt) {
if (/(y+)/.test(fmt)) {
fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
}
let o = {
'M+': date.getMonth() + 1,
'd+': date.getDate(),
'h+': date.getHours(),
'm+': date.getMinutes(),
's+': date.getSeconds()
};
for (let k in o) {
if (new RegExp(`(${k})`).test(fmt)) {
let str = o[k] + '';
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str));
}
}
return fmt;
};
function padLeftZero(str) {
return ('00' + str).substr(str.length);
}
/* eslint-disable */
let idTmr;
const getExplorer = () => {
let explorer = window.navigator.userAgent;
//ie
if (explorer.indexOf("MSIE") >= 0) {
return 'ie';
}
//firefox
else if (explorer.indexOf("Firefox") >= 0) {
return 'Firefox';
}
//Chrome
else if (explorer.indexOf("Chrome") >= 0) {
return 'Chrome';
}
//Opera
else if (explorer.indexOf("Opera") >= 0) {
return 'Opera';
}
//Safari
else if (explorer.indexOf("Safari") >= 0) {
return 'Safari';
}
}
// 判断浏览器是否为IE
const exportToExcel = (data,name) => {
// 判断是否为IE
if (getExplorer() == 'ie') {
tableToIE(data, name)
} else {
tableToNotIE(data,name)
}
}
const Cleanup = () => {
window.clearInterval(idTmr);
}
// ie浏览器下执行
const tableToIE = (data, name) => {
let curTbl = data;
let oXL = new ActiveXObject("Excel.Application");
//创建AX对象excel
let oWB = oXL.Workbooks.Add();
//获取workbook对象
let xlsheet = oWB.Worksheets(1);
//激活当前sheet
let sel = document.body.createTextRange();
sel.moveToElementText(curTbl);
//把表格中的内容移到TextRange中
sel.select;
//全选TextRange中内容
sel.execCommand("Copy");
//复制TextRange中内容
xlsheet.Paste();
//粘贴到活动的EXCEL中
oXL.Visible = true;
//设置excel可见属性
try {
let fname = oXL.Application.GetSaveAsFilename("Excel.xls", "Excel Spreadsheets (*.xls), *.xls");
} catch (e) {
print("Nested catch caught " + e);
} finally {
oWB.SaveAs(fname);
oWB.Close(savechanges = false);
//xls.visible = false;
oXL.Quit();
oXL = null;
// 结束excel进程,退出完成
window.setInterval("Cleanup();", 1);
idTmr = window.setInterval("Cleanup();", 1);
}
}
// 非ie浏览器下执行
const tableToNotIE = (function() {
// 编码要用utf-8不然默认gbk会出现中文乱码
let uri = 'data:application/vnd.ms-excel;base64,',
template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><meta charset="UTF-8"><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>',
base64 = function(s) {
return window.btoa(unescape(encodeURIComponent(s)));
},
format = (s, c) => {
return s.replace(/{(\w+)}/g,
(m, p) => {
return c[p];
})
}
return (table, name) => {
let ctx = {
worksheet: name,
table
}
//创建下载
let link = document.createElement('a');
link.setAttribute('href', uri + base64(format(template, ctx)));
link.setAttribute('download', name);
// window.location.href = uri + base64(format(template, ctx))
link.click();
}
})()
// 导出函数
export const export2Excel = (theadData, tbodyData, dataname) => {
let re = /http/ // 字符串中包含http,则默认为图片地址
let th_len = theadData.length // 表头的长度
let tb_len = tbodyData.length // 记录条数
let width = 40 // 设置图片大小
let height = 60
// 添加表头信息
let thead = '<thead><tr>'
for (let i = 0; i < th_len; i++) {
thead += '<th>' + theadData[i] + '</th>'
}
thead += '</tr></thead>'
// 添加每一行数据
let tbody = '<tbody>'
for (let i = 0; i < tb_len; i++) {
tbody += '<tr>'
let row = tbodyData[i] // 获取每一行数据
for (let key in row) {
if (re.test(row[key])) { // 如果为图片,则需要加div包住图片
//
tbody += '<td style="width:' + width + 'px; height:' + height + 'px; text-align: center; vertical-align: middle"><div style="display:inline"><img src=\'' + row[key] + '\' ' + ' ' + 'width=' + '\"' + width + '\"' + ' ' + 'height=' + '\"' + height + '\"' + '></div></td>'
} else {
tbody += '<td style="text-align:center">' + row[key] + '</td>'
}
}
tbody += '</tr>'
}
tbody += '</tbody>'
let table = thead + tbody
// 导出表格
exportToExcel(table, dataname)
}
This diff is collapsed.
This diff is collapsed.
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1603183354957" class="icon" viewBox="0 0 1195 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1170" xmlns:xlink="http://www.w3.org/1999/xlink" width="233.3984375" height="200"><defs><style type="text/css"></style></defs><path d="M211.814787 721.057102a26.860571 26.860571 0 0 0-27.542744 25.581496v137.628449a27.798559 27.798559 0 0 0 55.511847 0V746.638598a26.690028 26.690028 0 0 0-27.969103-25.581496z m707.754724 9.29461a85.271654 85.271654 0 1 0 91.922843 85.271654 89.023606 89.023606 0 0 0-91.922843-85.271654z m0 119.380315a34.108661 34.108661 0 1 1 36.410996-34.108661 35.131921 35.131921 0 0 1-36.410996 33.767575zM415.102409 721.398189a26.519484 26.519484 0 0 0-27.542744 25.581496v137.628448a27.372201 27.372201 0 0 0 27.542744 26.519485 27.031114 27.031114 0 0 0 27.457473-26.519485V746.979685a26.519484 26.519484 0 0 0-27.457473-25.922583z m778.18911-44.170717a25.581496 25.581496 0 0 0-0.51163-6.480646L1089.857003 84.504209a108.80663 108.80663 0 0 0-30.44198-58.581626 95.504252 95.504252 0 0 0-66.938248-25.581496H201.838004a104.713591 104.713591 0 0 0-70.008028 26.519484h-0.426358a87.573988 87.573988 0 0 0-27.969102 61.821949L1.53489 666.994874A38.969146 38.969146 0 0 0 0 677.739102v247.287795a106.163209 106.163209 0 0 0 83.395677 95.248437l0.51163 0.51163h2.04652l1.449618 0.426358 1.53489 0.51163h3.496137l1.449619 0.51163h6.992275l2.984508 1.02326h979.515484a107.527555 107.527555 0 0 0 110.853149-103.178701l-0.51163-243.194755z m-77.938291-46.984681a66.682433 66.682433 0 0 0-8.953524 0H85.953827a59.690157 59.690157 0 0 0-9.038796 0l12.534934-76.232858c6.480646 0.51163 13.984551 0.51163 22.938074 0.51163l989.151181-3.751953h1.02326l12.961291 79.473181zM168.326244 73.333622a42.124197 42.124197 0 0 0 1.02326-7.930264 5.627929 5.627929 0 0 1 1.961248-4.178311 9.465154 9.465154 0 0 1 5.031027-2.813964h840.607961a1.790705 1.790705 0 0 1 1.961248 1.449618 24.21715 24.21715 0 0 1 6.054287 13.472921l70.434386 436.505594-983.523252 3.751953h-16.457429zM1114.329968 963.569685H78.876279a19.783024 19.783024 0 0 1-18.930307-17.054331H59.690157V709.460157a19.783024 19.783024 0 0 1 20.465197-18.58922h1034.430429a18.58922 18.58922 0 0 1 13.984551 5.542657 18.930307 18.930307 0 0 1 6.054288 13.046563v235.264492a20.465197 20.465197 0 0 1-20.038839 19.015579zM313.714413 720.886559a26.860571 26.860571 0 0 0-27.542744 25.581496v137.628449a27.372201 27.372201 0 0 0 27.542744 26.519484A27.031114 27.031114 0 0 0 341.086614 884.267047V746.638598a26.519484 26.519484 0 0 0-27.372201-25.581496z" p-id="1171"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1603173478501" class="icon" viewBox="0 0 1045 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1243" xmlns:xlink="http://www.w3.org/1999/xlink" width="204.1015625" height="200"><defs><style type="text/css"></style></defs><path d="M360.844 569.855a29.942 29.942 0 1 0 30.134 29.941 30.135 30.135 0 0 0-30.134-29.941zM906.552 857.1a29.942 29.942 0 1 0 30.135 29.942 30.135 30.135 0 0 0-30.135-29.942z m-111.267-54.088a10.431 10.431 0 0 0-10.43 10.432V944.8a10.431 10.431 0 0 0 20.862 0V813.444a10.431 10.431 0 0 0-10.625-10.432zM244.362 569.855a29.942 29.942 0 1 0 30.134 29.941 30.135 30.135 0 0 0-30.134-29.941z m-115.903 0a29.942 29.942 0 1 0 30.135 29.941 30.135 30.135 0 0 0-30.521-29.941z m534.697 233.157a10.431 10.431 0 0 0-10.43 10.432V944.8a10.431 10.431 0 0 0 20.862 0V813.444a10.431 10.431 0 0 0-10.818-10.432zM361.23 857.1a29.942 29.942 0 1 0 30.135 29.942 30.135 30.135 0 0 0-30.521-29.942z m-115.903 0a29.942 29.942 0 1 0 30.135 29.942 30.135 30.135 0 0 0-31.1-29.942zM729.8 803.012a10.431 10.431 0 0 0-10.43 10.432V944.8a10.431 10.431 0 0 0 20.862 0V813.444a10.431 10.431 0 0 0-11.204-10.432zM128.845 857.1a29.942 29.942 0 1 0 30.135 29.942 29.942 29.942 0 0 0-30.907-29.942z m402.376-341.14a10.431 10.431 0 0 0-10.432 10.431v130.39a10.431 10.431 0 0 0 20.863 0V525.426a10.431 10.431 0 0 0-11.397-9.658z m0 287.245a10.431 10.431 0 0 0-10.432 10.432v131.356a10.431 10.431 0 0 0 20.863 0V813.637a10.431 10.431 0 0 0-11.397-10.625z m66.257 0a10.431 10.431 0 0 0-10.431 10.432v131.356a10.431 10.431 0 0 0 20.863 0V813.637a10.431 10.431 0 0 0-11.398-10.625z m132.516-574.297a10.431 10.431 0 0 0-10.432 10.431v131.356a10.431 10.431 0 0 0 20.863 0V239.34a10.431 10.431 0 0 0-11.397-10.624z m-132.516 0a10.431 10.431 0 0 0-10.431 10.431v131.356a10.431 10.431 0 0 0 20.863 0V239.34a10.431 10.431 0 0 0-11.398-10.624z m66.258 0a10.431 10.431 0 0 0-10.431 10.431v131.356a10.431 10.431 0 0 0 20.862 0V239.34a10.431 10.431 0 0 0-11.397-10.624zM361.81 282.996a29.942 29.942 0 1 0 30.134 29.941 30.135 30.135 0 0 0-31.1-30.328z m169.604-54.088a10.431 10.431 0 0 0-10.431 10.431v131.356a10.431 10.431 0 0 0 20.862 0V239.34a10.431 10.431 0 0 0-11.59-10.624z m513.255 179.07V203.408a41.339 41.339 0 0 0-24.34-37.668L850.533 0H193.751L24.919 165.934A41.339 41.339 0 0 0 0.58 203.602v210.364a41.339 41.339 0 0 0 40.953 35.35A41.532 41.532 0 0 0 0 490.655v204.761a41.532 41.532 0 0 0 41.532 41.532A41.532 41.532 0 0 0 0 778.286v204.375A41.532 41.532 0 0 0 41.532 1024h960.253a41.532 41.532 0 0 0 41.532-41.339V777.707a41.532 41.532 0 0 0-41.532-41.339 41.532 41.532 0 0 0 41.532-41.532V490.655a41.532 41.532 0 0 0-41.532-41.339 41.532 41.532 0 0 0 41.919-41.532zM1010.48 777.9v204.375a7.34 7.34 0 0 1-7.341 7.34H41.918a7.34 7.34 0 0 1-7.34-7.34V777.707a7.34 7.34 0 0 1 7.34-7.34h960.254a7.34 7.34 0 0 1 7.34 7.34z m0-287.245v204.761a7.34 7.34 0 0 1-7.341 7.34H41.918a7.34 7.34 0 0 1-7.34-7.34V490.655a7.34 7.34 0 0 1 7.34-7.34h960.254a7.34 7.34 0 0 1 7.34 7.34z m0-82.87a7.34 7.34 0 0 1-7.341 7.34H41.918a7.34 7.34 0 0 1-7.34-7.34V203.408a7.34 7.34 0 0 1 7.34-7.34h960.254a7.34 7.34 0 0 1 7.34 7.34zM907.517 282.608a29.942 29.942 0 1 0 30.135 29.942 30.135 30.135 0 0 0-31.101-29.942zM796.25 228.521a10.431 10.431 0 0 0-10.43 10.432v131.356a10.431 10.431 0 0 0 20.862 0V238.953a10.431 10.431 0 0 0-11.59-10.238z m-659.486 55.054a29.942 29.942 0 0 0-6.374 0 29.942 29.942 0 0 0-30.135 29.942 27.044 27.044 0 0 0 0 3.863 29.942 29.942 0 1 0 37.475-33.032zM729.994 515.38a10.431 10.431 0 0 0-10.432 10.432v130.97a10.431 10.431 0 0 0 20.863 0V525.425a10.431 10.431 0 0 0-11.397-9.658z m-66.258 0a10.431 10.431 0 0 0-10.431 10.432v130.97a10.431 10.431 0 0 0 20.862 0V525.425a10.431 10.431 0 0 0-11.397-9.658zM245.327 282.223a29.942 29.942 0 1 0 30.135 29.941 30.135 30.135 0 0 0-31.1-29.555zM796.058 515.38a10.431 10.431 0 0 0-10.431 10.432v130.97a10.431 10.431 0 0 0 20.862 0V525.425a10.431 10.431 0 0 0-11.397-9.658z m-198.58 0a10.431 10.431 0 0 0-10.431 10.432v130.97a10.431 10.431 0 0 0 20.863 0V525.425a10.431 10.431 0 0 0-11.398-9.658z m309.074 54.088a29.942 29.942 0 1 0 30.135 29.942 30.135 30.135 0 0 0-30.135-29.555z" p-id="1244"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1603173847339" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8783" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M7.777377 516.991611l156.139708 33.816146 0 196.732152 273.262356-78.68551 0-78.68551-39.052794 0 0-78.687552-147.681843-32.084551-84.974796-80.401791 27.091919-169.061333 505.521831 80.951082c3.534661-12.720491 7.960644-24.441434 13.08192-34.747288l-565.550825-90.542244 91.946103-161.96955 61.848395-23.625664 528.779939 84.680752 49.987577 8.00761 56.856784 9.091899 87.684499 14.051859-3.170168 80.601904-97.793302 107.440618-44.139357-6.176978 21.377449-133.448248 82.662258 13.219754 1.155759-28.921529-119.99673-19.213975-6.870229 2.631086-84.346889 100.799091c26.46299 10.70506 40.010481 62.769326 30.561236 121.842676-10.143517 63.352311-42.949906 110.787417-73.245685 105.909136-14.4041-2.297223-25.672745-15.999904-32.411267-36.579961l-8.061722 50.182585 83.620966 88.809628-217.790031-51.44759 0 78.687552-39.018081 0L515.252358 708.21349 163.917085 826.245839l0 157.374082-156.139708 39.360112L7.777377 516.991611 7.777377 516.991611zM755.23867 296.131468c-13.116634-2.098131-27.322662 18.431898-31.716995 45.887288-4.392291 27.421698 2.677031 51.382246 15.792644 53.479356 13.116634 2.098131 27.323683-18.447213 31.716995-45.886268C775.425646 322.17279 768.355304 298.229599 755.23867 296.131468L755.23867 296.131468zM751.108773 540.683639l29.107349 26.573257 98.289502-60.987702 29.173714-181.931909-38.193122-6.110614L843.12124 482.875294 751.108773 540.683639z" p-id="8784"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1608698592327" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1205" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M334.1 224c-61.8 0-112 50.1-112 112s50.1 112 112 112 112-50.1 112-112-50.1-112-112-112z m0 160c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z" p-id="1206"></path><path d="M858.4 95.9H171.6c-40 0-72.5 32.6-72.5 72.5v686.8c0 40 32.5 72.5 72.5 72.5h686.9c39.9 0 72.4-32.5 72.4-72.5V168.4c0-40-32.5-72.5-72.5-72.5z m8.5 759.4c0 4.6-3.9 8.5-8.5 8.5H171.6c-4.6 0-8.5-3.9-8.5-8.5V168.5c0-4.6 3.9-8.5 8.5-8.5v-0.1h686.8c4.6 0 8.5 3.9 8.5 8.5v686.9z" p-id="1207"></path><path d="M770.9 735h-214c-17.6 0-32 14.4-32 32s14.4 32 32 32h214c17.6 0 32-14.4 32-32s-14.4-32-32-32z" p-id="1208"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1603173752872" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4508" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M929.9 554.5H257v-95.6c12.5-6.1 21.1-18.8 21.1-33.6 0-20.7-16.8-37.4-37.4-37.4-20.7 0-37.4 16.7-37.4 37.4 0 14.8 8.6 27.6 21.1 33.6v95.6H94.1c-43.1 0-78.1 34.9-78.1 78v48.8c0 43.1 35 78 78.1 78h5.9c7.1 11.7 20 19.5 34.7 19.5H216c14.7 0 27.6-7.8 34.7-19.5h522.5c7.1 11.7 20 19.5 34.7 19.5h81.3c14.7 0 27.6-7.8 34.7-19.5h5.9c43.1 0 78.1-34.9 78.1-78v-48.8c0.1-43.1-34.9-78-78-78zM149.4 704.1c0 7.2-4.6 13-10.3 13-5.7 0-10.3-5.8-10.3-13v-94.4c0-7.2 4.6-13 10.3-13 5.7 0 10.3 5.8 10.3 13v94.4z m46 0c0 7.2-4.6 13-10.3 13-5.7 0-10.3-5.8-10.3-13v-94.4c0-7.2 4.6-13 10.3-13 5.7 0 10.3 5.8 10.3 13v94.4z m46 0c0 7.2-4.6 13-10.3 13-5.7 0-10.3-5.8-10.3-13v-94.4c0-7.2 4.6-13 10.3-13 5.7 0 10.3 5.8 10.3 13v94.4z m46 0c0 7.2-4.6 13-10.3 13-5.7 0-10.3-5.8-10.3-13v-94.4c0-7.2 4.6-13 10.3-13 5.7 0 10.3 5.8 10.3 13v94.4z m46 0c0 7.2-4.6 13-10.3 13-5.7 0-10.3-5.8-10.3-13v-94.4c0-7.2 4.6-13 10.3-13 5.7 0 10.3 5.8 10.3 13v94.4z m409.3-15.8c-18 0-32.6-14.6-32.6-32.6s14.6-32.6 32.6-32.6 32.5 14.6 32.5 32.6-14.5 32.6-32.5 32.6z m89.8 0c-18 0-32.6-14.6-32.6-32.6s14.6-32.6 32.6-32.6 32.5 14.6 32.5 32.6c0.1 18-14.5 32.6-32.5 32.6z m89.9 0c-18 0-32.6-14.6-32.6-32.6s14.6-32.6 32.6-32.6 32.5 14.6 32.5 32.6-14.6 32.6-32.5 32.6z" p-id="4509"></path><path d="M357.9 495c13.5-22.1 21-48.2 20-76-2.5-75.8-65.9-135.2-141.7-132.7-75.7 2.5-135.2 65.9-132.7 141.7 0.8 24.6 8 47.4 20 67l16.6-10.5c-10.2-16.7-16.3-36.2-17-57.2-1.1-32.5 11.1-62.3 31.7-84.3s49.5-36.1 82-37.2c32.5-1.1 62.2 11.1 84.2 31.7s36.1 49.5 37.2 82c0.8 23.7-5.5 46-17 64.9l16.7 10.6z" p-id="4510"></path><path d="M89.7 516.4l16.6-10.5c-14.1-22.7-22.6-49.3-23.5-77.9-1.4-43.6 14.9-83.6 42.6-113.2 27.7-29.5 66.5-48.5 110.2-49.9 43.6-1.4 83.6 14.9 113.2 42.6 29.5 27.7 48.5 66.5 49.9 110.1 1.1 32.3-7.7 62.7-23.5 88.2l16.6 10.5c17.9-28.8 27.7-63 26.5-99.4-3.2-98-85.3-174.9-183.4-171.7-98.1 3.2-175 85.3-171.7 183.4 1 32.3 10.6 62.2 26.5 87.8z" p-id="4511"></path><path d="M325.2 474.3c9.5-15.8 14.8-34.3 14.1-54.1-1.8-54.4-47.3-97.1-101.8-95.3-54.4 1.8-97 47.3-95.3 101.8 0.6 17.4 5.7 33.7 14.1 47.6l16.7-10.5c-6.6-11.1-10.6-23.9-11.1-37.8-1.4-43.5 32.7-79.9 76.3-81.5 43.5-1.3 79.9 32.7 81.5 76.3 0.5 15.7-3.6 30.4-11.1 43l16.6 10.5z" p-id="4512"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1603174038620" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="16736" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M870.4 793.6H153.6C81.92 793.6 25.6 737.28 25.6 665.6V153.6C25.6 81.92 81.92 25.6 153.6 25.6h716.8c71.68 0 128 56.32 128 128v512c0 71.68-56.32 128-128 128zM153.6 76.8c-40.96 0-76.8 35.84-76.8 76.8v512c0 40.96 35.84 76.8 76.8 76.8h716.8c40.96 0 76.8-35.84 76.8-76.8V153.6c0-40.96-35.84-76.8-76.8-76.8H153.6z" p-id="16737"></path><path d="M460.8 742.4h102.4V972.8H460.8z" p-id="16738"></path><path d="M153.6 921.6h716.8v51.2H153.6zM348.16 353.28c40.96 0 76.8 35.84 76.8 76.8s-35.84 76.8-76.8 76.8-76.8-35.84-76.8-76.8 35.84-76.8 76.8-76.8z m51.2 66.56l-15.36-25.6 240.64-117.76 15.36 30.72-240.64 112.64z m-30.72 30.72l25.6-30.72 194.56 133.12-25.6 30.72-194.56-133.12zM640 204.8c40.96 0 76.8 35.84 76.8 76.8S680.96 358.4 640 358.4 563.2 327.68 563.2 281.6 599.04 204.8 640 204.8z m-20.48 291.84c40.96 0 76.8 35.84 76.8 76.8s-35.84 76.8-76.8 76.8-76.8-35.84-76.8-76.8 35.84-76.8 76.8-76.8z" p-id="16739"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1602846659899" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1772" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M810.666667 896H213.333333a42.666667 42.666667 0 0 1-42.666666-42.666667V170.666667a42.666667 42.666667 0 0 1 42.666666-42.666667h597.333334a42.666667 42.666667 0 0 1 42.666666 42.666667v682.666666a42.666667 42.666667 0 0 1-42.666666 42.666667z m-149.333334-128a21.333333 21.333333 0 0 0 0 42.666667h85.333334a21.333333 21.333333 0 0 0 0-42.666667zM469.333333 768a21.333333 21.333333 0 0 0 0 42.666667h85.333334a21.333333 21.333333 0 0 0 0-42.666667z m-192 0a21.333333 21.333333 0 0 0 0 42.666667h85.333334a21.333333 21.333333 0 0 0 0-42.666667zM256 256v469.333333h512V256z m149.333333-85.333333a21.333333 21.333333 0 0 0 0 42.666666h213.333334a21.333333 21.333333 0 0 0 0-42.666666z" p-id="1773"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1603173956071" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="15363" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M920.7096209 241.65867035H803.86191964v-60.18974429c0-33.2097654-26.13007215-60.18974534-58.42223939-60.18974536h-642.6414099c-32.28464505 0-58.4157924 26.97890475-58.4157924 60.18974536v481.54482074c0 33.26671215 26.1322215 60.18974534 58.4157924 60.18974535h262.8973914l-58.42438875 120.38593665h233.68680824l-58.41579239-120.38593665h204.475152v120.38593665c0 33.26671215 26.13007215 60.18974534 58.4222394 60.18974535h175.26994065c32.28464505 0 58.4157924-26.92303215 58.4157924-60.18974535V301.8548627c0-33.21728656-26.13114736-60.1961913-58.4157924-60.19619235zM102.79827035 602.8175555V181.46892606h642.6403347v60.18974429c-32.29324139 0-58.4222394 26.97890475-58.4222394 60.19619235v300.9626928H102.79827035z m730.26885855 240.77079916c-16.1471583 0-29.2052103-13.46312835-29.20520926-30.09379801 0-16.639266 13.05697786-30.1023933 29.20520926-30.10239435 16.14500895 0 29.22025259 13.46312835 29.22025261 30.10239435 0 16.63066964-13.07524365 30.093798-29.22025261 30.09379801z m0-120.38486251c-16.1471583 0-29.2052103-13.46527665-29.20520926-30.09594735 0-16.63711665 13.05697786-30.093798 29.20520926-30.093798 16.14500895 0 29.22025259 13.45668135 29.22025261 30.093798 0 16.6295955-13.07524365 30.09594735-29.22025261 30.09594735z m87.642492-240.77402265H745.43968025v-60.18974535h175.26994065v60.18974535z m0-120.38593664H745.43968025v-60.18974536h175.26994065v60.18974536z" p-id="15364"></path></svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 24.2.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="路由器" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 64 64" enable-background="new 0 0 64 64" xml:space="preserve">
<circle fill="#FFFFFF" cx="32" cy="32" r="28"/>
<path d="M32,64C14.8,64,0.4,50,0,32.8C-0.4,15.2,13.6,0.4,31.2,0H32c17.2,0,31.6,14,32,31.2C64.3,48.8,50.4,63.6,32.8,64H32z M32,4
C16,4.4,4,17.2,4,32.4C4.4,47.6,16.8,60,32,60h0.4C48,59.6,59.9,46.8,59.9,31.6C59.6,16.4,47.2,4,32,4z M33.6,38.8l5.2,5.2L36,46.8
l13.2,2.4L46.8,36L44,38.8l-5.2-5.2L33.6,38.8z M30.4,25.2l-5.6-5.6l2.8-2.8l-13.2-2.4l2.4,13.2l2.8-2.8l5.2,5.2L30.4,25.2z
M25.2,33.6l-5.6,5.6l-2.4-2.8l-2.4,13.2L28,47.2l-2.8-2.8l5.2-5.2L25.2,33.6z M38.8,30.4l5.2-5.2l2.8,2.8l2.4-13.2l-12.8,2.4
l2.8,2.8l-5.6,5.2L38.8,30.4z"/>
</svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1594632666715" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1696" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><defs><style type="text/css"></style></defs><path d="M319.147 344.747l117.76 61.44s6.826 1.706 13.653 1.706c6.827-1.706 6.827-5.12 6.827-5.12v-47.786h114.346s90.454 8.533 90.454 34.133c0 0-1.707-80.213-92.16-80.213H459.093v-51.2s0-3.414-6.826-3.414c-5.12-1.706-11.947 1.707-11.947 1.707l-116.053 63.147s-10.24 3.413-10.24 11.946c-3.414 11.947 5.12 13.654 5.12 13.654z m262.826 71.68c-8.533 1.706-8.533 5.12-8.533 5.12v47.786H459.093S368.64 460.8 368.64 435.2c0 0 1.707 80.213 92.16 80.213h110.933v51.2s1.707 3.414 8.534 3.414c5.12 0 8.533-1.707 8.533-1.707l116.053-63.147s10.24-3.413 10.24-11.946c0-8.534-8.533-11.947-8.533-11.947L588.8 419.84c5.12-1.707 0-5.12-6.827-3.413zM102.4 682.667v153.6h819.2v-153.6H102.4z m-17.067-51.2h853.334c18.773 0 34.133 15.36 34.133 34.133v187.733c0 18.774-15.36 34.134-34.133 34.134H85.333c-18.773 0-34.133-15.36-34.133-34.134V665.6c0-18.773 15.36-34.133 34.133-34.133z" p-id="1697"></path><path d="M819.2 716.8h34.133c10.24 0 17.067 6.827 17.067 17.067V768c0 10.24-6.827 17.067-17.067 17.067H819.2c-10.24 0-17.067-6.827-17.067-17.067v-34.133c0-10.24 6.827-17.067 17.067-17.067z m-187.733 0h119.466c10.24 0 17.067 6.827 17.067 17.067V768c0 10.24-6.827 17.067-17.067 17.067H631.467c-10.24 0-17.067-6.827-17.067-17.067v-34.133c0-10.24 6.827-17.067 17.067-17.067z m-435.2-537.6H829.44l83.627 474.453c1.706 13.654 15.36 23.894 29.013 20.48 13.653-1.706 23.893-15.36 20.48-29.013L870.4 129.707H153.6L59.733 645.12c-1.706 13.653 6.827 27.307 20.48 29.013 13.654 1.707 27.307-6.826 29.014-20.48l87.04-474.453z" p-id="1698"></path></svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 24.2.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="服务器" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 64.8 64" enable-background="new 0 0 64.8 64" xml:space="preserve">
<path fill="#FFFFFF" fill-opacity="0" d="M0,0h64.8v64H0V0z M58.5,15.1H6.3c-1.5,0-2.7-1.3-2.7-2.8l0,0V6.5c0-1.5,1.2-2.8,2.7-2.8
l0,0h52.2c1.5,0,2.7,1.3,2.7,2.8l0,0v5.7C61.2,13.8,60,15,58.5,15.1L58.5,15.1z M58.5,37.6H6.3c-1.5,0-2.7-1.3-2.7-2.8l0,0v-5.7
c0-1.5,1.2-2.8,2.7-2.8l0,0h52.2c1.5,0,2.7,1.3,2.7,2.8l0,0v5.7C61.2,36.4,60,37.6,58.5,37.6L58.5,37.6z M58.5,60.3H6.3
c-1.5,0-2.7-1.3-2.7-2.8l0,0v-5.7c0-1.5,1.2-2.8,2.7-2.8l0,0h52.2c1.5,0,2.7,1.3,2.7,2.8l0,0v5.7C61.2,59,60,60.2,58.5,60.3
L58.5,60.3z"/>
<path d="M64.8,12.3V6.5C64.9,3,62.1,0.1,58.5,0l0,0H6.3C2.8,0.1-0.1,3,0,6.5l0,0v5.7c-0.1,3.6,2.8,6.5,6.3,6.5l0,0h52.2
C62.1,18.7,64.9,15.8,64.8,12.3L64.8,12.3z M58.5,15.1H6.3c-1.5,0-2.7-1.3-2.7-2.8l0,0V6.5c0-1.5,1.2-2.8,2.7-2.8l0,0h52.2
c1.5,0,2.7,1.3,2.7,2.8l0,0v5.7C61.2,13.8,60,15,58.5,15.1L58.5,15.1z M58.5,22.7H6.3c-3.5,0-6.3,2.9-6.3,6.5v5.7
c0,3.5,2.8,6.4,6.3,6.5h52.2c3.5-0.1,6.4-2.9,6.3-6.5v-5.6C64.9,25.6,62.1,22.7,58.5,22.7z M58.5,37.6H6.3c-1.5,0-2.7-1.3-2.7-2.8
l0,0v-5.7c0-1.5,1.2-2.8,2.7-2.8l0,0h52.2c1.5,0,2.7,1.3,2.7,2.8l0,0v5.7C61.2,36.4,60,37.6,58.5,37.6L58.5,37.6z M64.8,57.5v-5.7
c0.1-3.6-2.8-6.5-6.3-6.5l0,0H6.3c-3.6,0.1-6.4,3-6.3,6.5l0,0v5.7C-0.1,61,2.8,63.9,6.3,64l0,0h52.2C62.1,63.9,64.9,61,64.8,57.5
L64.8,57.5z M58.5,60.3H6.3c-1.5,0-2.7-1.3-2.7-2.8l0,0v-5.7c0-1.5,1.2-2.8,2.7-2.8l0,0h52.2c1.5,0,2.7,1.3,2.7,2.8l0,0v5.7
C61.2,59,60,60.2,58.5,60.3L58.5,60.3z M56,11.2H40.2c-1,0-1.9-0.8-1.9-1.9s0.8-1.9,1.9-1.9H56c1,0,1.9,0.8,1.9,1.9S57,11.2,56,11.2
L56,11.2z M56,34H40.2c-1,0-1.9-0.8-1.9-1.9c0-1,0.8-1.9,1.9-1.9H56c1,0,1.9,0.8,1.9,1.9C57.8,33.1,57,34,56,34L56,34z M56,56.6
H40.2c-1,0-1.9-0.8-1.9-1.9c0-1,0.8-1.9,1.9-1.9H56c1,0,1.9,0.8,1.9,1.9C57.8,55.7,57,56.6,56,56.6z"/>
</svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1594632102111" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="994" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><defs><style type="text/css"></style></defs><path d="M1017.99 626.883v253c0 34.785-28.458 63.252-63.243 63.252H69.258c-34.785 0-63.247-28.467-63.247-63.253v-253h727.357V563.64H6.011V120.888c0-34.785 28.462-63.247 63.247-63.247h885.489c34.785 0 63.242 28.462 63.242 63.247V563.64H796.626v63.243h221.363zM891.5 184.14c0-18.975-12.657-31.626-31.632-31.626H164.142c-18.98 0-31.626 12.651-31.626 31.626v63.247c0 18.975 12.651 31.626 31.626 31.626h695.731c18.975 0 31.632-12.651 31.632-31.626v-63.247h-0.005z m-31.632 284.62c18.975 0 31.621-12.65 31.621-31.62v-63.253c0-18.975-12.646-31.621-31.62-31.621H164.141c-18.98 0-31.626 12.646-31.626 31.621v63.252c0 18.97 12.651 31.622 31.626 31.622h695.726zM259.005 753.383c0-18.974-12.651-31.62-31.616-31.62h-63.252c-18.98 0-31.621 12.646-31.621 31.62v63.253c0 18.975 12.651 31.621 31.621 31.621h63.252c18.975 0 31.616-12.646 31.616-31.621v-63.253z m94.874 0v63.253c0 18.975 12.652 31.621 31.621 31.621h474.368c18.975 0 31.621-12.646 31.621-31.621v-63.253c0-18.974-12.646-31.62-31.62-31.62H385.5c-18.97 0-31.621 12.64-31.621 31.62z m-94.874-316.247h-63.247v-63.247h63.247v63.247z m-63.247-252.994h63.247v63.247h-63.247v-63.247z m0 0" p-id="995"></path></svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 24.2.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="交换机" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 64 64" enable-background="new 0 0 64 64" xml:space="preserve">
<path fill="#FFFFFF" d="M11.8,8.7L8,36.6h48.6L52.5,8.7H11.8z M4.7,39v16.6h54V39H4.7z"/>
<path d="M61,40.2L56,9.9c-0.2-1.2-0.7-2.3-1.5-3c-0.9-0.9-2-1.4-3.3-1.3H12.8c-1.3,0-2.5,0.5-3.4,1.4C8.6,7.9,8.1,9,8,10.2L3,40
c0,0.2,0,0.4,0,0.6v12.8c0.2,2.3,1.6,4.3,4.1,4.9l0,0h0.1h0.1h0.1h0.1l0,0h0.1h0.3h0.2h0.1h0.1h47.5c3,0,5.4-2.4,5.4-5.3V40.5l0,0
C61,40.4,61,40.3,61,40.2z M11.4,9.4c0-0.1,0-0.2,0-0.4c0-0.1,0-0.2,0.1-0.2c0.1-0.1,0.2-0.1,0.3-0.1h40.7c0,0,0.1,0,0.1,0.1
c0.2,0.2,0.3,0.4,0.3,0.7L57,36.6c-0.2,0-0.3,0-0.4,0H8c-0.1,0-0.3,0-0.4,0L11.4,9.4z M56.9,54.6H7c-0.4,0-0.8-0.3-0.9-0.8l0,0l0,0
V40.7c0-0.5,0.4-0.9,0.9-0.9h49.8c0.2,0,0.5,0.1,0.6,0.3c0.2,0.2,0.3,0.4,0.3,0.6v13l0,0C57.8,54.2,57.4,54.6,56.9,54.6z M18.9,43.5
h5.8v3h-5.8C18.9,46.5,18.9,43.5,18.9,43.5z M18.9,48h5.8v3h-5.8C18.9,51,18.9,48,18.9,48z M25.7,27.6h-5.3c-0.9,0-1.3,0.9-1.3,1.9
s0.4,2.1,1.3,2.1H27c0.5,0,1-0.9,1.3-1.3l2.7-4l-2.7-2.6C28.3,23.6,25.7,27.6,25.7,27.6z M28.7,48h5.9v3h-5.9L28.7,48z M28.7,43.5
h5.9v3h-5.9L28.7,43.5z M48.7,43.5h5.8v3h-5.8V43.5z M48.7,48h5.8v3h-5.8V48z M38.9,43.5h5.8v3h-5.8V43.5z M38.9,48h5.8v3h-5.8V48z
M21.7,18.4h5.2L35,30.2c0.3,0.4,0.8,1.3,1.3,1.3h7.6c0.9,0,1.7-0.8,1.7-1.8s-0.3-2.1-1.3-2.1h-6.6l-9.3-13.2c-0.3,0-0.8,0-1.3,0
h-5.4v-2.6l-5.3,5.3l5.3,4V18.4z M37.7,18.4H43V21l5.3-4L43,11.8v2.6h-5.3c-0.5,0-1.7,0.6-2.1,1l-3.3,3L35,21L37.7,18.4z M12.7,44.9
c-1.1,0-2,0.9-2,1.9c0,1.1,0.9,1.9,2,1.9s2-0.9,2-1.9C14.7,45.8,13.8,44.9,12.7,44.9z"/>
</svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1595213804234" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3212" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64"><defs><style type="text/css"></style></defs><path d="M164.512 862.88c97.312 52.928 213.088 84.064 336.128 84.064 4 0 7.968-0.032 11.936-0.096h-0.608c51.648 0 102.176-4.736 151.2-13.76l-5.088 0.768a17.056 17.056 0 1 0-6.208-33.44h0.064a710.272 710.272 0 0 1-137.056 12.992c-122.24 0-237.44-30.048-338.656-83.168l4 1.92c-73.152-31.488-125.664-98.304-136.416-178.368l-0.128-1.152a187.744 187.744 0 0 1 76.608-140.256L120.832 512v127.648c0.384 28.8 15.712 53.952 38.56 68.064l0.352 0.192 222.56 127.648c7.808 4.704 17.216 7.488 27.296 7.52 8.32-0.032 16.064-2.304 22.752-6.272l-0.224 0.128c14.016-8.672 23.232-23.936 23.232-41.376l-0.032-1.696v0.096-375.456a72.576 72.576 0 0 0-5.632-25.728l0.192 0.48a840.032 840.032 0 0 1 96.448 0.096l-2.24-0.096v90.784c0.384 28.8 15.712 53.952 38.56 68.064l0.352 0.192 223.232 129.024c7.808 4.704 17.216 7.488 27.296 7.52 8.32-0.064 16.064-2.336 22.752-6.272l-0.224 0.128c14.048-8.832 23.232-24.224 23.232-41.76l-0.032-1.312v0.064-143.36a205.216 205.216 0 0 1 94.848 155.584l0.064 0.768a218.208 218.208 0 0 1-119.584 175.552l-1.248 0.576v-79.872a17.056 17.056 0 1 0-34.112 0v120.832c0 9.44 7.648 17.056 17.056 17.056h119.456a17.056 17.056 0 1 0 0-34.112h-77.152c73.856-39.136 124.736-112.992 131.04-199.232l0.032-0.8a246.176 246.176 0 0 0-127.744-198.016l-1.28-0.64V262.88a81.92 81.92 0 0 0-38.56-68.064l-0.352-0.192-221.856-127.648a48.384 48.384 0 0 0-49.376 0.128l0.224-0.128a49.184 49.184 0 0 0-23.872 43.776v-0.064 247.808a877.376 877.376 0 0 0-118.08 0.16l2.688-0.16a68.416 68.416 0 0 0-12.032-10.08l-0.256-0.16L194.56 222.656a48.384 48.384 0 0 0-49.376 0.128l0.224-0.128a49.184 49.184 0 0 0-23.232 43.776v-0.096 204.8c-61.952 39.552-103.52 106.304-107.84 183.04l-0.032 0.608a259.392 259.392 0 0 0 148.576 207.552l1.6 0.672z m450.56-720.192l193.888 111.968a17.6 17.6 0 0 1 4.736 8.064l0.032 0.128v341.344l-195.232-111.968a15.552 15.552 0 0 1-4.736-7.392l-0.032-0.096zM189.792 298.336l193.888 111.968a17.408 17.408 0 0 1 4.768 8.064l0.032 0.128v341.344l-195.232-111.264a15.552 15.552 0 0 1-4.736-7.392l-0.032-0.096z" p-id="3213"></path></svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 24.2.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="主板" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 64 64" style="enable-background:new 0 0 64 64;" xml:space="preserve">
<style type="text/css">
.st0{fill:#FFFFFF;}
</style>
<path class="st0" d="M60,58c0,1.1-0.9,2-2,2H6c-1.1,0-2-0.9-2-2V6c0-1.1,0.9-2,2-2h52c1.1,0,2,0.9,2,2V58z"/>
<path d="M64,6c0-3.3-2.7-6-6-6H6C2.7,0,0,2.7,0,6v52c0,3.3,2.7,6,6,6l0,0h52c3.3,0,6-2.7,6-6l0,0V6z M60,58c0,1.1-0.9,2-2,2H6
c-1.1,0-2-0.9-2-2V6c0-1.1,0.9-2,2-2h52c1.1,0,2,0.9,2,2V58z M36,15c0-3.3-2.7-6-6-6H14c-3.3,0-6,2.7-6,6v16c0,3.3,2.7,6,6,6h16
c3.3,0,6-2.7,6-6V15z M32,31c0,1.1-0.9,2-2,2H14c-1.1,0-2-0.9-2-2V15c0-1.1,0.9-2,2-2h16c1.1,0,2,0.9,2,2V31z M21.8,30.4
c3.9,0,7.1-3.2,7.1-7.1s-3.2-7.1-7.1-7.1s-7.1,3.2-7.1,7.1l0,0C14.6,27.2,17.8,30.4,21.8,30.4z M21.8,20.1c1.7,0,3.1,1.4,3.1,3.1
s-1.4,3.1-3.1,3.1s-3.1-1.4-3.1-3.1l0,0C18.6,21.5,20,20.1,21.8,20.1z M52,57h3c1.1,0,2-0.9,2-2s-0.9-2-2-2h-3c-1.1,0-2,0.9-2,2
S50.9,57,52,57z M19,48c1.1,0,2-0.9,2-2s-0.9-2-2-2h-4c-1.1,0-2,0.9-2,2s0.9,2,2,2H19z M29,48c1.1,0,2-0.9,2-2s-0.9-2-2-2h-4
c-1.1,0-2,0.9-2,2s0.9,2,2,2H29z M10,53c-1.1,0-2,0.9-2,2s0.9,2,2,2h36c1.1,0,2-0.9,2-2s-0.9-2-2-2H10z M45,48c1.1,0,2-0.9,2-2V11
c0-1.1-0.9-2-2-2s-2,0.9-2,2v35C43,47.1,43.9,48,45,48z M54,48c1.1,0,2-0.9,2-2V11c0-1.1-0.9-2-2-2s-2,0.9-2,2v35
C52,47.1,52.9,48,54,48z"/>
</svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1595213911617" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5691" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64"><defs><style type="text/css"></style></defs><path d="M661.081272 178.921443H178.66261a81.360087 81.360087 0 0 0-82.026553 80.949954v682.614716a81.257554 81.257554 0 0 0 82.026553 80.847421h482.418662a81.257554 81.257554 0 0 0 82.026552-80.847421V260.12773a81.667686 81.667686 0 0 0-82.026552-81.206287z m24.607965 763.410871a24.607966 24.607966 0 0 1-24.607965 24.249099H178.149944a24.607966 24.607966 0 0 1-24.607966-24.249099V260.12773a24.607966 24.607966 0 0 1 24.607966-24.2491h482.931328a24.607966 24.607966 0 0 1 24.607965 24.2491v682.460917z m159.951778-942.280022H363.222353a81.61642 81.61642 0 0 0-82.026553 80.744888 28.709293 28.709293 0 0 0 57.418587 0 24.454166 24.454166 0 0 1 24.607966-24.351633h482.418662a24.454166 24.454166 0 0 1 24.607965 24.351633v682.717249a24.351633 24.351633 0 0 1-24.607965 24.2491 28.299161 28.299161 0 1 0 0 56.393255 81.206287 81.206287 0 0 0 82.026552-80.847421V80.694646a81.257554 81.257554 0 0 0-82.026552-80.642354z" p-id="5692"></path></svg>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment