更新
12
.babelrc
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"presets": [
|
||||
["env", {
|
||||
"modules": false,
|
||||
"targets": {
|
||||
"browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
|
||||
}
|
||||
}],
|
||||
"stage-2"
|
||||
],
|
||||
"plugins":["transform-vue-jsx", "transform-runtime"]
|
||||
}
|
14
.editorconfig
Normal file
@ -0,0 +1,14 @@
|
||||
# http://editorconfig.org
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[*.md]
|
||||
insert_final_newline = false
|
||||
trim_trailing_whitespace = false
|
15
.gitignore
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
.DS_Store
|
||||
node_modules/
|
||||
dist/
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
package-lock.json
|
||||
|
||||
# Editor directories and files
|
||||
.idea
|
||||
.vscode
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
10
.postcssrc.js
Normal file
@ -0,0 +1,10 @@
|
||||
// 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": {}
|
||||
}
|
||||
}
|
4
Dockerfile
Normal file
@ -0,0 +1,4 @@
|
||||
# Dockerfile
|
||||
FROM nginx:alpine
|
||||
COPY dist/ /usr/share/nginx/html/
|
||||
EXPOSE 80
|
22
README.md
Normal file
@ -0,0 +1,22 @@
|
||||
### 本地运行
|
||||
```
|
||||
npm install
|
||||
npm run dev
|
||||
```
|
||||
### 打包
|
||||
```
|
||||
npm install
|
||||
npm run build:prod
|
||||
编译结果:report/report-ui/dist目录
|
||||
```
|
||||
### 前端技术
|
||||
- [npm](https://www.npmjs.com/):node.js的包管理工具,用于统一管理我们前端项目中需要用到的包、插件、工具、命令等,便于开发和维护。
|
||||
- [webpack](https://webpack.docschina.org/):用于现代 JavaScript 应用程序的_静态模块打包工具
|
||||
- [ES6](https://es6.ruanyifeng.com/):Javascript的新版本,ECMAScript6的简称。利用ES6我们可以简化我们的JS代码,同时利用其提供的强大功能来快速实现JS逻辑。
|
||||
- [vue-cli](https://cli.vuejs.org/):Vue的脚手架工具,用于自动生成Vue项目的目录及文件。
|
||||
- [vue-router](https://router.vuejs.org/): Vue提供的前端路由工具,利用其我们实现页面的路由控制,局部刷新及按需加载,构建单页应用,实现前后端分离。
|
||||
- [element-ui](https://element.eleme.cn/#/zh-CN):基于MVVM框架Vue开源出来的一套前端ui组件。
|
||||
- [avue](https://www.avuejs.com/): 用该组件包裹后可以变成拖拽组件,采用相对于父类绝对定位;用键盘的上下左右也可以控制移动
|
||||
- [vue-echarts](https://www.npmjs.com/package/vue-echarts/): vue-echarts是封装后的vue插件,基于 ECharts v4.0.1+ 开发
|
||||
- [vue-superslide](https://www.npmjs.com/package/vue-super-slider/): Vue-SuperSlide(Github) 是 SuperSlide 的 Vue 封装版本
|
||||
- [vuedraggable](https://github.com/SortableJS/Vue.Draggable/): 是一款基于Sortable.js实现的vue拖拽插件。
|
45
build/build.js
Normal file
@ -0,0 +1,45 @@
|
||||
'use strict'
|
||||
require('./check-versions')()
|
||||
|
||||
//process.env.NODE_ENV = 'production'
|
||||
|
||||
const ora = require('ora')
|
||||
const rm = require('rimraf')
|
||||
const path = require('path')
|
||||
const chalk = require('chalk')
|
||||
const webpack = require('webpack')
|
||||
const config = require('../config')
|
||||
const webpackConfig = require('./webpack.prod.conf')
|
||||
|
||||
const spinner = ora('building for ' + process.env.NODE_ENV + '...')
|
||||
spinner.start()
|
||||
|
||||
rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
|
||||
if (err) throw err
|
||||
webpack(webpackConfig, (err, stats) => {
|
||||
spinner.stop()
|
||||
if (err) throw err
|
||||
process.stdout.write(
|
||||
stats.toString({
|
||||
colors: true,
|
||||
modules: false,
|
||||
children: false,
|
||||
chunks: false,
|
||||
chunkModules: false
|
||||
}) + '\n\n'
|
||||
)
|
||||
|
||||
if (stats.hasErrors()) {
|
||||
console.log(chalk.red(' Build failed with errors.\n'))
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
console.log(chalk.cyan(' Build complete.\n'))
|
||||
console.log(
|
||||
chalk.yellow(
|
||||
' Tip: built files are meant to be served over an HTTP server.\n' +
|
||||
" Opening index.html over file:// won't work.\n"
|
||||
)
|
||||
)
|
||||
})
|
||||
})
|
64
build/check-versions.js
Normal file
@ -0,0 +1,64 @@
|
||||
'use strict'
|
||||
const chalk = require('chalk')
|
||||
const semver = require('semver')
|
||||
const packageConfig = require('../package.json')
|
||||
const shell = require('shelljs')
|
||||
|
||||
function exec(cmd) {
|
||||
return require('child_process')
|
||||
.execSync(cmd)
|
||||
.toString()
|
||||
.trim()
|
||||
}
|
||||
|
||||
const versionRequirements = [
|
||||
{
|
||||
name: 'node',
|
||||
currentVersion: semver.clean(process.version),
|
||||
versionRequirement: packageConfig.engines.node
|
||||
}
|
||||
]
|
||||
|
||||
if (shell.which('npm')) {
|
||||
versionRequirements.push({
|
||||
name: 'npm',
|
||||
currentVersion: exec('npm --version'),
|
||||
versionRequirement: packageConfig.engines.npm
|
||||
})
|
||||
}
|
||||
|
||||
module.exports = function() {
|
||||
const warnings = []
|
||||
|
||||
for (let i = 0; i < versionRequirements.length; i++) {
|
||||
const mod = versionRequirements[i]
|
||||
|
||||
if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
|
||||
warnings.push(
|
||||
mod.name +
|
||||
': ' +
|
||||
chalk.red(mod.currentVersion) +
|
||||
' should be ' +
|
||||
chalk.green(mod.versionRequirement)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
if (warnings.length) {
|
||||
console.log('')
|
||||
console.log(
|
||||
chalk.yellow(
|
||||
'To use this template, you must update following to modules:'
|
||||
)
|
||||
)
|
||||
console.log()
|
||||
|
||||
for (let i = 0; i < warnings.length; i++) {
|
||||
const warning = warnings[i]
|
||||
console.log(' ' + warning)
|
||||
}
|
||||
|
||||
console.log()
|
||||
process.exit(1)
|
||||
}
|
||||
}
|
BIN
build/logo.png
Normal file
After Width: | Height: | Size: 6.7 KiB |
108
build/utils.js
Normal file
@ -0,0 +1,108 @@
|
||||
'use strict'
|
||||
const path = require('path')
|
||||
const config = require('../config')
|
||||
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
|
||||
const packageConfig = require('../package.json')
|
||||
|
||||
exports.assetsPath = function(_path) {
|
||||
const assetsSubDirectory =
|
||||
process.env.NODE_ENV === 'production'
|
||||
? config.build.assetsSubDirectory
|
||||
: config.dev.assetsSubDirectory
|
||||
|
||||
return path.posix.join(assetsSubDirectory, _path)
|
||||
}
|
||||
|
||||
exports.cssLoaders = function(options) {
|
||||
options = options || {}
|
||||
|
||||
const cssLoader = {
|
||||
loader: 'css-loader',
|
||||
options: {
|
||||
sourceMap: options.sourceMap
|
||||
}
|
||||
}
|
||||
|
||||
const postcssLoader = {
|
||||
loader: 'postcss-loader',
|
||||
options: {
|
||||
sourceMap: options.sourceMap
|
||||
}
|
||||
}
|
||||
|
||||
// generate loader string to be used with extract text plugin
|
||||
function generateLoaders(loader, loaderOptions) {
|
||||
const loaders = []
|
||||
|
||||
// Extract CSS when that option is specified
|
||||
// (which is the case during production build)
|
||||
if (options.extract) {
|
||||
loaders.push(MiniCssExtractPlugin.loader)
|
||||
} else {
|
||||
loaders.push('vue-style-loader')
|
||||
}
|
||||
|
||||
loaders.push(cssLoader)
|
||||
|
||||
if (options.usePostCSS) {
|
||||
loaders.push(postcssLoader)
|
||||
}
|
||||
|
||||
if (loader) {
|
||||
loaders.push({
|
||||
loader: loader + '-loader',
|
||||
options: Object.assign({}, loaderOptions, {
|
||||
sourceMap: options.sourceMap
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
return loaders
|
||||
}
|
||||
// https://vue-loader.vuejs.org/en/configurations/extract-css.html
|
||||
return {
|
||||
css: generateLoaders(),
|
||||
postcss: generateLoaders(),
|
||||
less: generateLoaders('less'),
|
||||
sass: generateLoaders('sass', {
|
||||
indentedSyntax: true
|
||||
}),
|
||||
scss: generateLoaders('sass'),
|
||||
stylus: generateLoaders('stylus'),
|
||||
styl: generateLoaders('stylus')
|
||||
}
|
||||
}
|
||||
|
||||
// Generate loaders for standalone style files (outside of .vue)
|
||||
exports.styleLoaders = function(options) {
|
||||
const output = []
|
||||
const loaders = exports.cssLoaders(options)
|
||||
|
||||
for (const extension in loaders) {
|
||||
const loader = loaders[extension]
|
||||
output.push({
|
||||
test: new RegExp('\\.' + extension + '$'),
|
||||
use: loader
|
||||
})
|
||||
}
|
||||
|
||||
return output
|
||||
}
|
||||
|
||||
exports.createNotifierCallback = () => {
|
||||
const notifier = require('node-notifier')
|
||||
|
||||
return (severity, errors) => {
|
||||
if (severity !== 'error') return
|
||||
|
||||
const error = errors[0]
|
||||
const filename = error.file && error.file.split('!').pop()
|
||||
|
||||
notifier.notify({
|
||||
title: packageConfig.name,
|
||||
message: severity + ': ' + error.name,
|
||||
subtitle: filename || '',
|
||||
icon: path.join(__dirname, 'logo.png')
|
||||
})
|
||||
}
|
||||
}
|
5
build/vue-loader.conf.js
Normal file
@ -0,0 +1,5 @@
|
||||
'use strict'
|
||||
|
||||
module.exports = {
|
||||
//You can set the vue-loader configuration by yourself.
|
||||
}
|
93
build/webpack.base.conf.js
Normal file
@ -0,0 +1,93 @@
|
||||
'use strict'
|
||||
const path = require('path')
|
||||
const utils = require('./utils')
|
||||
const config = require('../config')
|
||||
const {
|
||||
VueLoaderPlugin
|
||||
} = require('vue-loader')
|
||||
const vueLoaderConfig = require('./vue-loader.conf')
|
||||
|
||||
function resolve(dir) {
|
||||
return path.join(__dirname, '..', dir)
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
context: path.resolve(__dirname, '../'),
|
||||
entry: {
|
||||
app: './src/main.js'
|
||||
},
|
||||
output: {
|
||||
path: config.build.assetsRoot,
|
||||
filename: '[name].js',
|
||||
publicPath: config.build.assetsPublicPath //process.env.NODE_ENV === 'production' ? config.build.assetsPublicPath : config.dev.assetsPublicPath
|
||||
},
|
||||
resolve: {
|
||||
extensions: ['.js', '.vue', '.json'],
|
||||
alias: {
|
||||
'@': resolve('src')
|
||||
}
|
||||
},
|
||||
module: {
|
||||
rules: [{
|
||||
test: /\.vue$/,
|
||||
loader: 'vue-loader',
|
||||
options: vueLoaderConfig
|
||||
},
|
||||
{
|
||||
test: /\.js$/,
|
||||
loader: 'babel-loader',
|
||||
include: [
|
||||
resolve('src'),
|
||||
resolve('test'),
|
||||
resolve('node_modules/webpack-dev-server/client')
|
||||
]
|
||||
},
|
||||
{
|
||||
test: /\.svg$/,
|
||||
loader: 'svg-sprite-loader',
|
||||
include: [resolve('src/icons')],
|
||||
options: {
|
||||
symbolId: 'icon-[name]'
|
||||
}
|
||||
},
|
||||
{
|
||||
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
|
||||
loader: 'url-loader',
|
||||
exclude: [resolve('src/icons')],
|
||||
options: {
|
||||
limit: 10000,
|
||||
name: utils.assetsPath('img/[name].[hash:7].[ext]')
|
||||
}
|
||||
},
|
||||
{
|
||||
test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
|
||||
loader: 'url-loader',
|
||||
options: {
|
||||
limit: 10000,
|
||||
name: utils.assetsPath('media/[name].[hash:7].[ext]')
|
||||
}
|
||||
},
|
||||
{
|
||||
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
|
||||
loader: 'url-loader',
|
||||
options: {
|
||||
limit: 10000,
|
||||
name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
plugins: [new VueLoaderPlugin()],
|
||||
node: {
|
||||
// prevent webpack from injecting useless setImmediate polyfill because Vue
|
||||
// source contains it (although only uses it if it's native).
|
||||
setImmediate: false,
|
||||
// prevent webpack from injecting mocks to Node native modules
|
||||
// that does not make sense for the client
|
||||
dgram: 'empty',
|
||||
fs: 'empty',
|
||||
net: 'empty',
|
||||
tls: 'empty',
|
||||
child_process: 'empty'
|
||||
}
|
||||
}
|
100
build/webpack.dev.conf.js
Normal file
@ -0,0 +1,100 @@
|
||||
'use strict'
|
||||
const path = require('path')
|
||||
const utils = require('./utils')
|
||||
const webpack = require('webpack')
|
||||
const config = require('../config')
|
||||
const merge = require('webpack-merge')
|
||||
const baseWebpackConfig = require('./webpack.base.conf')
|
||||
const HtmlWebpackPlugin = require('html-webpack-plugin')
|
||||
const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
|
||||
const portfinder = require('portfinder')
|
||||
|
||||
function resolve(dir) {
|
||||
return path.join(__dirname, '..', dir)
|
||||
}
|
||||
|
||||
const HOST = process.env.HOST
|
||||
const PORT = process.env.PORT && Number(process.env.PORT)
|
||||
|
||||
const devWebpackConfig = merge(baseWebpackConfig, {
|
||||
mode: 'development',
|
||||
output: {
|
||||
path: config.build.assetsRoot,
|
||||
filename: '[name].js',
|
||||
publicPath: config.dev.assetsPublicPath
|
||||
},
|
||||
module: {
|
||||
rules: utils.styleLoaders({
|
||||
sourceMap: config.dev.cssSourceMap,
|
||||
usePostCSS: true
|
||||
})
|
||||
},
|
||||
// cheap-module-eval-source-map is faster for development
|
||||
devtool: config.dev.devtool,
|
||||
|
||||
// these devServer options should be customized in /config/index.js
|
||||
devServer: {
|
||||
clientLogLevel: 'warning',
|
||||
historyApiFallback: true,
|
||||
hot: true,
|
||||
compress: true,
|
||||
host: HOST || config.dev.host,
|
||||
port: PORT || config.dev.port,
|
||||
open: config.dev.autoOpenBrowser,
|
||||
overlay: config.dev.errorOverlay
|
||||
? { warnings: false, errors: true }
|
||||
: false,
|
||||
publicPath: config.dev.assetsPublicPath,
|
||||
proxy: config.dev.proxyTable,
|
||||
quiet: true, // necessary for FriendlyErrorsPlugin
|
||||
watchOptions: {
|
||||
poll: config.dev.poll
|
||||
}
|
||||
},
|
||||
plugins: [
|
||||
new webpack.DefinePlugin({
|
||||
'process.env': require('../config/dev.env')
|
||||
}),
|
||||
new webpack.HotModuleReplacementPlugin(),
|
||||
// https://github.com/ampedandwired/html-webpack-plugin
|
||||
new HtmlWebpackPlugin({
|
||||
filename: 'index.html',
|
||||
template: 'index.html',
|
||||
inject: true,
|
||||
favicon: resolve('static/favicon.ico'),
|
||||
title: 'vue-admin-template'
|
||||
})
|
||||
]
|
||||
})
|
||||
|
||||
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)
|
||||
}
|
||||
})
|
||||
})
|
182
build/webpack.prod.conf.js
Normal file
@ -0,0 +1,182 @@
|
||||
'use strict'
|
||||
const path = require('path')
|
||||
const utils = require('./utils')
|
||||
const webpack = require('webpack')
|
||||
const config = require('../config')
|
||||
const merge = require('webpack-merge')
|
||||
const baseWebpackConfig = require('./webpack.base.conf')
|
||||
const CopyWebpackPlugin = require('copy-webpack-plugin')
|
||||
const HtmlWebpackPlugin = require('html-webpack-plugin')
|
||||
const ScriptExtHtmlWebpackPlugin = require('script-ext-html-webpack-plugin')
|
||||
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
|
||||
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin')
|
||||
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
|
||||
|
||||
function resolve(dir) {
|
||||
return path.join(__dirname, '..', dir)
|
||||
}
|
||||
|
||||
var env = require('../config/dev.env')
|
||||
if (process.env.NODE_ENV === 'testing') {
|
||||
env = require('../config/test.env')
|
||||
}
|
||||
if (process.env.NODE_ENV === 'production') {
|
||||
env = require('../config/prod.env')
|
||||
}
|
||||
|
||||
// For NamedChunksPlugin
|
||||
const seen = new Set()
|
||||
const nameLength = 4
|
||||
|
||||
const webpackConfig = merge(baseWebpackConfig, {
|
||||
mode: 'production',
|
||||
module: {
|
||||
rules: utils.styleLoaders({
|
||||
sourceMap: config.build.productionSourceMap,
|
||||
extract: true,
|
||||
usePostCSS: true
|
||||
})
|
||||
},
|
||||
devtool: config.build.productionSourceMap ? config.build.devtool : false,
|
||||
output: {
|
||||
path: config.build.assetsRoot,
|
||||
filename: utils.assetsPath('js/[name].[chunkhash:8].js'),
|
||||
chunkFilename: utils.assetsPath('js/[name].[chunkhash:8].js')
|
||||
},
|
||||
plugins: [
|
||||
// http://vuejs.github.io/vue-loader/en/workflow/production.html
|
||||
new webpack.DefinePlugin({
|
||||
'process.env': env
|
||||
}),
|
||||
// extract css into its own file
|
||||
new MiniCssExtractPlugin({
|
||||
filename: utils.assetsPath('css/[name].[contenthash:8].css'),
|
||||
chunkFilename: utils.assetsPath('css/[name].[contenthash:8].css')
|
||||
}),
|
||||
// generate dist index.html with correct asset hash for caching.
|
||||
// you can customize output by editing /index.html
|
||||
// see https://github.com/ampedandwired/html-webpack-plugin
|
||||
new HtmlWebpackPlugin({
|
||||
filename: config.build.index,
|
||||
template: 'index.html',
|
||||
inject: true,
|
||||
favicon: resolve('static/favicon.ico'),
|
||||
title: 'vue-admin-template',
|
||||
minify: {
|
||||
removeComments: true,
|
||||
collapseWhitespace: true,
|
||||
removeAttributeQuotes: true
|
||||
// more options:
|
||||
// https://github.com/kangax/html-minifier#options-quick-reference
|
||||
}
|
||||
// default sort mode uses toposort which cannot handle cyclic deps
|
||||
// in certain cases, and in webpack 4, chunk order in HTML doesn't
|
||||
// matter anyway
|
||||
}),
|
||||
new ScriptExtHtmlWebpackPlugin({
|
||||
//`runtime` must same as runtimeChunk name. default is `runtime`
|
||||
inline: /runtime\..*\.js$/
|
||||
}),
|
||||
// keep chunk.id stable when chunk has no name
|
||||
new webpack.NamedChunksPlugin(chunk => {
|
||||
if (chunk.name) {
|
||||
return chunk.name
|
||||
}
|
||||
const modules = Array.from(chunk.modulesIterable)
|
||||
if (modules.length > 1) {
|
||||
const hash = require('hash-sum')
|
||||
const joinedHash = hash(modules.map(m => m.id).join('_'))
|
||||
let len = nameLength
|
||||
while (seen.has(joinedHash.substr(0, len))) len++
|
||||
seen.add(joinedHash.substr(0, len))
|
||||
return `chunk-${joinedHash.substr(0, len)}`
|
||||
} else {
|
||||
return modules[0].id
|
||||
}
|
||||
}),
|
||||
// keep module.id stable when vender modules does not change
|
||||
new webpack.HashedModuleIdsPlugin(),
|
||||
// copy custom static assets
|
||||
new CopyWebpackPlugin([{
|
||||
from: path.resolve(__dirname, '../static'),
|
||||
to: config.build.assetsSubDirectory,
|
||||
ignore: ['.*']
|
||||
}])
|
||||
],
|
||||
optimization: {
|
||||
splitChunks: {
|
||||
chunks: 'all',
|
||||
cacheGroups: {
|
||||
libs: {
|
||||
name: 'chunk-libs',
|
||||
test: /[\\/]node_modules[\\/]/,
|
||||
priority: 10,
|
||||
chunks: 'initial' // 只打包初始时依赖的第三方
|
||||
},
|
||||
elementUI: {
|
||||
name: 'chunk-elementUI', // 单独将 elementUI 拆包
|
||||
priority: 20, // 权重要大于 libs 和 app 不然会被打包进 libs 或者 app
|
||||
test: /[\\/]node_modules[\\/]element-ui[\\/]/
|
||||
}
|
||||
}
|
||||
},
|
||||
runtimeChunk: 'single',
|
||||
minimizer: [
|
||||
new UglifyJsPlugin({
|
||||
uglifyOptions: {
|
||||
mangle: {
|
||||
safari10: true
|
||||
}
|
||||
},
|
||||
sourceMap: config.build.productionSourceMap,
|
||||
cache: true,
|
||||
parallel: true
|
||||
}),
|
||||
// Compress extracted CSS. We are using this plugin so that possible
|
||||
// duplicated CSS from different components can be deduped.
|
||||
new OptimizeCSSAssetsPlugin()
|
||||
]
|
||||
}
|
||||
})
|
||||
|
||||
if (config.build.productionGzip) {
|
||||
const CompressionWebpackPlugin = require('compression-webpack-plugin')
|
||||
|
||||
webpackConfig.plugins.push(
|
||||
new CompressionWebpackPlugin({
|
||||
asset: '[path].gz[query]',
|
||||
algorithm: 'gzip',
|
||||
test: new RegExp(
|
||||
'\\.(' + config.build.productionGzipExtensions.join('|') + ')$'
|
||||
),
|
||||
threshold: 10240,
|
||||
minRatio: 0.8
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
if (config.build.generateAnalyzerReport || config.build.bundleAnalyzerReport) {
|
||||
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer')
|
||||
.BundleAnalyzerPlugin
|
||||
|
||||
if (config.build.bundleAnalyzerReport) {
|
||||
webpackConfig.plugins.push(
|
||||
new BundleAnalyzerPlugin({
|
||||
analyzerPort: 8080,
|
||||
generateStatsFile: false
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
if (config.build.generateAnalyzerReport) {
|
||||
webpackConfig.plugins.push(
|
||||
new BundleAnalyzerPlugin({
|
||||
analyzerMode: 'static',
|
||||
reportFilename: 'bundle-report.html',
|
||||
openAnalyzer: false
|
||||
})
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = webpackConfig
|
16
config/dev.env.js
Normal file
@ -0,0 +1,16 @@
|
||||
/*
|
||||
* @Author: zwq
|
||||
* @Date: 2023-02-07 08:55:09
|
||||
* @LastEditors: zwq
|
||||
* @LastEditTime: 2023-02-27 14:59:13
|
||||
* @Description:
|
||||
*/
|
||||
'use strict'
|
||||
const merge = require('webpack-merge')
|
||||
const prodEnv = require('./prod.env')
|
||||
|
||||
module.exports = merge(prodEnv, {
|
||||
NODE_ENV: '"development"',
|
||||
BASE_API: '"http://192.168.1.12:9095"'
|
||||
//BASE_API: '"http://10.108.26.197:9095"'
|
||||
})
|
93
config/index.js
Normal file
@ -0,0 +1,93 @@
|
||||
/*
|
||||
* @Author: zwq
|
||||
* @Date: 2023-02-07 08:55:09
|
||||
* @LastEditors: zwq
|
||||
* @LastEditTime: 2023-02-24 10:25:00
|
||||
* @Description:
|
||||
*/
|
||||
'use strict'
|
||||
// Template version: 1.2.6
|
||||
// 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: '192.168.1.59', // can be overwritten by process.env.HOST
|
||||
port: 9528, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
|
||||
autoOpenBrowser: true,
|
||||
errorOverlay: true,
|
||||
notifyOnErrors: false,
|
||||
poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
|
||||
|
||||
// Use Eslint Loader?
|
||||
// If true, your code will be linted during bundling and
|
||||
// linting errors and warnings will be shown in the console.
|
||||
useEslint: true,
|
||||
// If true, eslint errors and warnings will also be shown in the error overlay
|
||||
// in the browser.
|
||||
showEslintErrorsInOverlay: false,
|
||||
|
||||
/**
|
||||
* Source Maps
|
||||
*/
|
||||
|
||||
// https://webpack.js.org/configuration/devtool/#development
|
||||
devtool: 'cheap-source-map',
|
||||
|
||||
// CSS Sourcemaps off by default because relative paths are "buggy"
|
||||
// with this option, according to the CSS-Loader README
|
||||
// (https://github.com/webpack/css-loader#sourcemaps)
|
||||
// In our experience, they generally work as expected,
|
||||
// just be aware of this issue when enabling this option.
|
||||
cssSourceMap: false
|
||||
},
|
||||
|
||||
build: {
|
||||
// Template for index.html
|
||||
index: path.resolve(__dirname, '../dist/index.html'),
|
||||
|
||||
// Paths
|
||||
assetsRoot: path.resolve(__dirname, '../dist'),
|
||||
assetsSubDirectory: 'static',
|
||||
|
||||
/**
|
||||
* You can set by youself according to actual condition
|
||||
* You will need to set this if you plan to deploy your site under a sub path,
|
||||
* for example GitHub pages. If you plan to deploy your site to https://foo.github.io/bar/,
|
||||
* then assetsPublicPath should be set to "/bar/".
|
||||
* In most cases please use '/' !!!
|
||||
*/
|
||||
assetsPublicPath: '/',
|
||||
|
||||
/**
|
||||
* Source Maps
|
||||
*/
|
||||
|
||||
productionSourceMap: false,
|
||||
// https://webpack.js.org/configuration/devtool/#production
|
||||
devtool: 'source-map',
|
||||
|
||||
// Gzip off by default as many popular static hosts such as
|
||||
// Surge or Netlify already gzip all static assets for you.
|
||||
// Before setting to `true`, make sure to:
|
||||
// npm install --save-dev compression-webpack-plugin
|
||||
productionGzip: false,
|
||||
productionGzipExtensions: ['js', 'css'],
|
||||
|
||||
// Run the build command with an extra argument to
|
||||
// View the bundle analyzer report after build finishes:
|
||||
// `npm run build --report`
|
||||
// Set to `true` or `false` to always turn it on or off
|
||||
bundleAnalyzerReport: process.env.npm_config_report || false,
|
||||
|
||||
// `npm run build:prod --generate_report`
|
||||
generateAnalyzerReport: process.env.npm_config_generate_report || false
|
||||
}
|
||||
}
|
5
config/prod.env.js
Normal file
@ -0,0 +1,5 @@
|
||||
'use strict'
|
||||
module.exports = {
|
||||
NODE_ENV: '"production"',
|
||||
BASE_API: '"./"'
|
||||
}
|
8
config/test.env.js
Normal file
@ -0,0 +1,8 @@
|
||||
'use strict'
|
||||
const merge = require('webpack-merge')
|
||||
const prodEnv = require('./prod.env')
|
||||
|
||||
module.exports = merge(prodEnv, {
|
||||
NODE_ENV: '"testing"',
|
||||
BASE_API: '"./"'
|
||||
})
|
31
index.html
Normal file
@ -0,0 +1,31 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<title>AJ-Report</title>
|
||||
<link rel='stylesheet' href='./static/luckysheet/plugins/css/pluginsCss.css' />
|
||||
<link rel='stylesheet' href='./static/luckysheet/plugins/plugins.css' />
|
||||
<link rel='stylesheet' href='./static/luckysheet/css/luckysheet.css' />
|
||||
<!-- <link rel='stylesheet' href='./static/luckysheet/assets/iconfont/iconfont.css' /> -->
|
||||
<script src="./static/luckysheet/plugins/js/plugin.js"></script>
|
||||
<script src="./static/luckysheet/luckysheet.umd.js"></script>
|
||||
|
||||
<!-- <link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/plugins/css/pluginsCss.css' />-->
|
||||
<!-- <link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/plugins/plugins.css' />-->
|
||||
<!-- <link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/css/luckysheet.css' />-->
|
||||
<!-- <link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/assets/iconfont/iconfont.css' />-->
|
||||
<!-- <script src="https://cdn.jsdelivr.net/npm/luckysheet/dist/plugins/js/plugin.js"></script>-->
|
||||
<!-- <script src="https://cdn.jsdelivr.net/npm/luckysheet/dist/luckysheet.umd.js"></script>-->
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
<!-- built files will be auto injected -->
|
||||
</body>
|
||||
|
||||
</html>
|
104
package.json
Normal file
@ -0,0 +1,104 @@
|
||||
{
|
||||
"name": "mirror-manager",
|
||||
"version": "3.8.0",
|
||||
"description": "mirror-manager",
|
||||
"author": "mirror-team@anji-plus.com",
|
||||
"scripts": {
|
||||
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
|
||||
"start": "npm run dev",
|
||||
"build": "cross-env NODE_ENV=production node build/build.js",
|
||||
"build:dev": "cross-env NODE_ENV=development node build/build.js",
|
||||
"build:test": "cross-env NODE_ENV=testing node build/build.js",
|
||||
"build:prod": "cross-env NODE_ENV=production node build/build.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"@ckeditor/ckeditor5-build-decoupled-document": "^23.1.0",
|
||||
"@smallwei/avue": "^2.8.23",
|
||||
"axios": "0.18.0",
|
||||
"chokidar": "^3.5.2",
|
||||
"codemirror": "^5.58.1",
|
||||
"crypto-js": "^3.1.9-1",
|
||||
"echarts": "^4.9.0",
|
||||
"echarts-gl": "^1.1.1",
|
||||
"element-ui": "^2.9.2",
|
||||
"js-cookie": "2.2.0",
|
||||
"jsbarcode": "^3.11.4",
|
||||
"miment": "^0.0.9",
|
||||
"moment": "^2.29.1",
|
||||
"monaco-editor": "^0.20.0",
|
||||
"normalize.css": "7.0.0",
|
||||
"nprogress": "0.2.0",
|
||||
"qrcodejs2": "0.0.2",
|
||||
"sortablejs": "^1.10.2",
|
||||
"uninstall": "0.0.0",
|
||||
"v-chart": "^1.0.0",
|
||||
"vue": "2.6.11",
|
||||
"vue-codemirror": "^4.0.6",
|
||||
"vue-color": "^2.8.1",
|
||||
"vue-drag-resize": "^1.5.4",
|
||||
"vue-echarts": "^5.0.0-beta.0",
|
||||
"vue-json-editor": "^1.4.3",
|
||||
"vue-router": "3.0.1",
|
||||
"vue-ruler-tool": "^1.2.4",
|
||||
"vue-superslide": "^0.1.1",
|
||||
"vuedraggable": "^2.24.1",
|
||||
"vuex": "3.0.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"autoprefixer": "8.5.0",
|
||||
"babel-core": "6.26.0",
|
||||
"babel-helper-vue-jsx-merge-props": "2.0.3",
|
||||
"babel-loader": "7.1.5",
|
||||
"babel-plugin-syntax-jsx": "6.18.0",
|
||||
"babel-plugin-transform-runtime": "6.23.0",
|
||||
"babel-plugin-transform-vue-jsx": "3.7.0",
|
||||
"babel-preset-env": "1.7.0",
|
||||
"babel-preset-stage-2": "6.24.1",
|
||||
"chalk": "2.4.1",
|
||||
"copy-webpack-plugin": "4.5.2",
|
||||
"cross-env": "^5.2.0",
|
||||
"css-loader": "1.0.0",
|
||||
"eventsource-polyfill": "0.9.6",
|
||||
"file-loader": "1.1.11",
|
||||
"friendly-errors-webpack-plugin": "1.7.0",
|
||||
"html-webpack-plugin": "4.0.0-alpha",
|
||||
"js-md5": "^0.7.3",
|
||||
"mini-css-extract-plugin": "0.4.1",
|
||||
"monaco-editor-webpack-plugin": "^4.1.1",
|
||||
"node-notifier": "5.2.1",
|
||||
"node-sass": "^4.7.2",
|
||||
"optimize-css-assets-webpack-plugin": "5.0.0",
|
||||
"ora": "3.0.0",
|
||||
"path-to-regexp": "2.4.0",
|
||||
"portfinder": "1.0.16",
|
||||
"postcss-import": "12.0.0",
|
||||
"postcss-loader": "2.1.6",
|
||||
"postcss-url": "7.3.2",
|
||||
"rimraf": "2.6.2",
|
||||
"sass-loader": "7.0.3",
|
||||
"script-ext-html-webpack-plugin": "2.0.1",
|
||||
"semver": "5.5.0",
|
||||
"shelljs": "0.8.2",
|
||||
"svg-sprite-loader": "3.8.0",
|
||||
"svgo": "1.0.5",
|
||||
"uglifyjs-webpack-plugin": "1.2.7",
|
||||
"url-loader": "1.0.1",
|
||||
"vue-loader": "15.3.0",
|
||||
"vue-style-loader": "4.1.2",
|
||||
"vue-template-compiler": "2.6.11",
|
||||
"webpack": "4.16.5",
|
||||
"webpack-bundle-analyzer": "2.13.1",
|
||||
"webpack-cli": "3.1.0",
|
||||
"webpack-dev-server": "3.1.5",
|
||||
"webpack-merge": "4.1.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 6.0.0",
|
||||
"npm": ">= 3.0.0"
|
||||
},
|
||||
"browserslist": [
|
||||
"> 1%",
|
||||
"last 2 versions",
|
||||
"not ie <= 8"
|
||||
]
|
||||
}
|
48
src/App.vue
Normal file
@ -0,0 +1,48 @@
|
||||
<template>
|
||||
<div id="app">
|
||||
<router-view v-if="isRouterAlive" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import "@/assets/iconfont/iconfont.css";
|
||||
import { initDictToLocalstorage } from "@/api/dict-data";
|
||||
export default {
|
||||
name: "App",
|
||||
provide() {
|
||||
return {
|
||||
reload: this.reload
|
||||
};
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isRouterAlive: false
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
$route(to, form) {
|
||||
if (to.path == "/login") {
|
||||
this.queryDictName();
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {},
|
||||
created() {
|
||||
this.queryDictName();
|
||||
},
|
||||
methods: {
|
||||
queryDictName() {
|
||||
// 初始化数据字典到浏览器本地缓存
|
||||
initDictToLocalstorage(() => {
|
||||
this.isRouterAlive = true;
|
||||
});
|
||||
},
|
||||
reload() {
|
||||
this.isRouterAlive = false;
|
||||
this.$nextTick(function() {
|
||||
this.isRouterAlive = true;
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
71
src/api/GaeaReport.js
Normal file
@ -0,0 +1,71 @@
|
||||
import request from '@/utils/request'
|
||||
import {getShareToken, getToken} from "@/utils/auth";
|
||||
|
||||
// 设计报表
|
||||
export function design(data) {
|
||||
return request({
|
||||
url: 'report/design',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 预览报表,渲染数据
|
||||
export function preview(data) {
|
||||
return request({
|
||||
url: 'reportExcel/preview',
|
||||
method: 'post',
|
||||
headers: { 'Share-Token': getShareToken(), 'Authorization': getToken() },
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 导出报表
|
||||
export function exportExcel(data) {
|
||||
return request({
|
||||
url: 'reportExcel/exportExcel',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 导出报表
|
||||
export function exportPdf(data) {
|
||||
return request({
|
||||
url: 'reportExcel/exportPdf',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 获取所有数据集
|
||||
export function queryAllDataSet() {
|
||||
return request({
|
||||
url: 'dataSet/queryAllDataSet',
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
// 获取对应数据集的列集合
|
||||
export function detail(data) {
|
||||
return request({
|
||||
url: 'dataSet/detailBysetId/' + data,
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
// 获取对应数据集的列集合
|
||||
export function detailBysetCode(data) {
|
||||
return request({
|
||||
url: 'dataSet/detailBysetCode/' + data,
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
// 根据reportCode获取报表表格详情
|
||||
export function detailByReportCode(data) {
|
||||
return request({
|
||||
url: 'reportExcel/detailByReportCode/' + data,
|
||||
method: 'get',
|
||||
})
|
||||
}
|
42
src/api/accessAuthority.js
Normal file
@ -0,0 +1,42 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
export function accessAuthorityList(params) {
|
||||
return request({
|
||||
url: 'accessAuthority/pageList',
|
||||
method: 'GET',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
export function accessAuthorityAdd(data) {
|
||||
return request({
|
||||
url: 'accessAuthority',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function accessAuthorityDeleteBatch(data) {
|
||||
return request({
|
||||
url: 'accessAuthority/delete/batch',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function accessAuthorityUpdate(data) {
|
||||
return request({
|
||||
url: 'accessAuthority',
|
||||
method: 'put', data,
|
||||
})
|
||||
}
|
||||
|
||||
export function accessAuthorityDetail(data) {
|
||||
return request({
|
||||
url: 'accessAuthority/' + data.id,
|
||||
method: 'get',
|
||||
params: { accessKey: data.accessKey }
|
||||
})
|
||||
}
|
||||
|
||||
export default { accessAuthorityList, accessAuthorityAdd, accessAuthorityDeleteBatch, accessAuthorityUpdate, accessAuthorityDetail }
|
58
src/api/accessRole.js
Normal file
@ -0,0 +1,58 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
export function accessRoleList (params) {
|
||||
return request({
|
||||
url: 'accessRole/pageList',
|
||||
method: 'GET',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
export function accessRoleAdd (data) {
|
||||
return request({
|
||||
url: 'accessRole',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function accessRoleDeleteBatch (data) {
|
||||
return request({
|
||||
url: 'accessRole/delete/batch',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function accessRoleUpdate (data) {
|
||||
return request({
|
||||
url: 'accessRole',
|
||||
method: 'put', data,
|
||||
})
|
||||
}
|
||||
|
||||
export function accessRoleDetail (data) {
|
||||
return request({
|
||||
url: 'accessRole/' + data.id,
|
||||
method: 'get',
|
||||
params: { accessKey: data.accessKey }
|
||||
})
|
||||
}
|
||||
|
||||
export function accessRoleAuthorityTree (roleCode) {
|
||||
return request({
|
||||
url: 'accessRole/authorityTree/' + roleCode,
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
export function saveAuthorityTree (data) {
|
||||
return request({
|
||||
url: 'accessRole/saveAuthorityTree',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
export default { accessRoleList, accessRoleAdd, accessRoleDeleteBatch, accessRoleUpdate, accessRoleDetail, accessRoleAuthorityTree, saveAuthorityTree }
|
59
src/api/accessUser.js
Normal file
@ -0,0 +1,59 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
export function accessUserList (params) {
|
||||
return request({
|
||||
url: 'accessUser/pageList',
|
||||
method: 'GET',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
export function accessUserAdd (data) {
|
||||
return request({
|
||||
url: 'accessUser',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function accessUserDeleteBatch (data) {
|
||||
return request({
|
||||
url: 'accessUser/delete/batch',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function accessUserUpdate (data) {
|
||||
return request({
|
||||
url: 'accessUser',
|
||||
method: 'put', data,
|
||||
})
|
||||
}
|
||||
|
||||
export function accessUserDetail (data) {
|
||||
return request({
|
||||
url: 'accessUser/' + data.id,
|
||||
method: 'get',
|
||||
params: { accessKey: data.accessKey }
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
export function getRoleTree (loginName) {
|
||||
return request({
|
||||
url: 'accessUser/roleTree/' + loginName,
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
export function saveRoleTree (data) {
|
||||
return request({
|
||||
url: 'accessUser/saveRoleTree',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
export default { accessUserList, accessUserAdd, accessUserDeleteBatch, accessUserUpdate, accessUserDetail, getRoleTree, saveRoleTree }
|
71
src/api/axios.js
Normal file
@ -0,0 +1,71 @@
|
||||
import axios from 'axios';
|
||||
import { Message, MessageBox } from 'element-ui';
|
||||
axios.defaults.baseURL = process.env.BASE_API
|
||||
const service = axios.create({
|
||||
withCredentials: false,
|
||||
timeout: 60000,
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
}
|
||||
})
|
||||
|
||||
service.interceptors.request.use(
|
||||
config => {
|
||||
return config
|
||||
},
|
||||
error => {
|
||||
// Do something with request error
|
||||
Promise.reject(error)
|
||||
}
|
||||
)
|
||||
|
||||
// response interceptor
|
||||
service.interceptors.response.use(
|
||||
response => {
|
||||
const res = response.data;
|
||||
if (res.code == 200) {
|
||||
return res
|
||||
}
|
||||
|
||||
else if (res.code == '50014') {
|
||||
//登录超时或被登出,弹确认框,用户确认后,跳转到登录页面
|
||||
MessageBox({
|
||||
message: "当前登录已失效或异地登录,请重新登录",
|
||||
type: 'error',
|
||||
duration: 3 * 1000,
|
||||
}).then(() => {
|
||||
sessionStorage.clear();
|
||||
localStorage.clear();
|
||||
window.location.href = "/";
|
||||
}).catch(err => {
|
||||
})
|
||||
} else if (res.code == "3100" || res.code == "3101") {
|
||||
return res;
|
||||
}
|
||||
else {
|
||||
Message({
|
||||
message: res.repMsg || res.message,
|
||||
type: 'error',
|
||||
duration: 3 * 1000
|
||||
})
|
||||
return res;
|
||||
}
|
||||
},
|
||||
error => {
|
||||
var errorStatus = error.response.code;
|
||||
var errorData = error.response.data;
|
||||
var messageTxt = "";
|
||||
if (errorStatus != 200) {
|
||||
messageTxt = "服务器内部错误,请联系管理员";
|
||||
} else {
|
||||
messageTxt = '失败原因:' + errorData.code + '--' + errorData.repMsg;
|
||||
}
|
||||
Message({
|
||||
message: messageTxt,
|
||||
type: 'error',
|
||||
duration: 5 * 1000
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
export default service
|
75
src/api/bigscreen.js
Normal file
@ -0,0 +1,75 @@
|
||||
import request from '@/utils/request'
|
||||
import { getShareToken, getToken } from "@/utils/auth";
|
||||
import axios from 'axios';
|
||||
|
||||
// 保存大屏设计
|
||||
export function insertDashboard(data) {
|
||||
return request({
|
||||
url: 'reportDashboard',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 预览、查询大屏详情
|
||||
export function detailDashboard(data) {
|
||||
return request({
|
||||
url: 'reportDashboard/' + data,
|
||||
headers: { 'Share-Token': getShareToken(), 'Authorization': getToken() },
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
// 数据集查询
|
||||
export function queryAllDataSet(data) {
|
||||
return request({
|
||||
url: 'dataSet/queryAllDataSet',
|
||||
method: 'get',
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
// 获取数据集信息
|
||||
export function detailBysetId(data) {
|
||||
return request({
|
||||
url: 'dataSet/detailBysetId/' + data,
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
// 获取动态数据
|
||||
export function getData(data) {
|
||||
return request({
|
||||
url: 'reportDashboard/getData',
|
||||
method: 'post',
|
||||
headers: { 'Share-Token': getShareToken(), 'Authorization': getToken() },
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 导出大屏
|
||||
export function exportDashboard(data) {
|
||||
return new Promise((resolve) =>{
|
||||
axios({
|
||||
method:'get',
|
||||
url: process.env.BASE_API + '/reportDashboard/export',
|
||||
headers: { 'Authorization': getToken() },
|
||||
params:data,
|
||||
responseType:'blob'
|
||||
}).then(res =>{
|
||||
resolve(res.data);
|
||||
}).catch(err =>{
|
||||
resolve('error');
|
||||
})
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
// 导入大屏
|
||||
export function importDashboard(data) {
|
||||
return request({
|
||||
url: 'reportDashboard/import',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
64
src/api/calculation/calculation.js
Normal file
@ -0,0 +1,64 @@
|
||||
import request from '@/api/axios'
|
||||
|
||||
// 分页查询
|
||||
export const reqPageList = data => {
|
||||
return request({
|
||||
url: '/analysis-service/calculate/queryByPage',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 新增
|
||||
export const reqAddDeviceType = data => {
|
||||
return request({
|
||||
url: '/analysis-service/calculate/create',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 编辑
|
||||
export const reqEditDeviceType = data => {
|
||||
return request({
|
||||
url: '/analysis-service/calculate/updateById',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 删除
|
||||
export const reqDeleteDeviceType = data => {
|
||||
return request({
|
||||
url: '/analysis-service/calculate/deleteByIds',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 根据id查明细
|
||||
export const reqDetail = data => {
|
||||
return request({
|
||||
url: '/analysis-service/calculate/queryById',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 根据监控项id 拉取监控项树结构
|
||||
export const reqItemTree = data => {
|
||||
return request({
|
||||
url: '/analysis-service/item/tree',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 计算执行sql 语句
|
||||
export const reqExecuteSql = data => {
|
||||
return request({
|
||||
url: '/analysis-service/calculate/executeSql',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
25
src/api/common.js
Normal file
@ -0,0 +1,25 @@
|
||||
/*
|
||||
* @Author: qianlishi
|
||||
* @Date: 2020-07-13 15:13:34
|
||||
* @Last Modified by: qianlishi
|
||||
* @Last Modified time: 2021-03-15 13:28:28
|
||||
*/
|
||||
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 数据字典接口
|
||||
export function dataDictionary (dictName) {
|
||||
return request({
|
||||
url: '/gaeaDict/select/' + dictName,
|
||||
method: 'GET',
|
||||
})
|
||||
}
|
||||
|
||||
// 图片上传接口
|
||||
export function uploadImg (data) {
|
||||
return request({
|
||||
url: '/file/upload',
|
||||
method: 'POST',
|
||||
data,
|
||||
})
|
||||
}
|
79
src/api/dict-data.js
Normal file
@ -0,0 +1,79 @@
|
||||
/*
|
||||
* @Author: qianlishi
|
||||
* @Date: 2020-07-13 15:13:17
|
||||
* @Last Modified by: qianlishi
|
||||
* @Last Modified time: 2020-12-15 15:34:34
|
||||
*/
|
||||
import request from '@/utils/request'
|
||||
import { setStorageItem } from '@/utils/storage'
|
||||
// 数据字典和基础数据查询的相关接口
|
||||
|
||||
/**
|
||||
* 数据字典多类型编码查询接口
|
||||
* type参数 类型 String
|
||||
* type参数 格式 'type'
|
||||
*/
|
||||
export function getDictList (type) {
|
||||
return request({
|
||||
url: `/gaeaDict/select/${type}`,
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
export function getDictCodes (project) {
|
||||
return request({
|
||||
url: `/gaeaDict/selectAll/${project}`,
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据字典多类型编码查询接口
|
||||
* typeList参数 类型 Array
|
||||
* typeList参数 格式 ['type1','type2',...]
|
||||
*/
|
||||
export function getMultipleDictList (typeList) {
|
||||
const types = typeList + ''
|
||||
return request({
|
||||
url: `/v1/dict/types`,
|
||||
method: 'get',
|
||||
params: { types },
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 主数据编码查询接口
|
||||
* typeList参数 类型 Array
|
||||
* typeList参数 格式 ['type1','type2',...]
|
||||
*/
|
||||
export function getBaseDataList (typeList) {
|
||||
const types = typeList + ''
|
||||
return request({
|
||||
url: `/v1/master/types`,
|
||||
method: 'get',
|
||||
params: { types },
|
||||
})
|
||||
}
|
||||
|
||||
// 查询所有数据字典接口
|
||||
export function getAllDict() {
|
||||
return request({
|
||||
url: '/gaeaDict/all',
|
||||
method: 'GET',
|
||||
})
|
||||
}
|
||||
|
||||
// 将所有接口初始化到浏览器本地缓存
|
||||
export function initDictToLocalstorage(callback) {
|
||||
getAllDict().then((res) => {
|
||||
if (res.code != 200) {
|
||||
console.error('初始化数据字典到local storage失败: ' + res.message)
|
||||
return
|
||||
}
|
||||
|
||||
// 保存数据字典到localStorage
|
||||
setStorageItem('AJReportDict', res.data)
|
||||
if (callback != null) {
|
||||
callback()
|
||||
}
|
||||
})
|
||||
}
|
75
src/api/dict.js
Normal file
@ -0,0 +1,75 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 字典管理查询
|
||||
export function getDictList(params) {
|
||||
return request({
|
||||
url: '/gaeaDict/pageList',
|
||||
method: 'GET',
|
||||
params,
|
||||
})
|
||||
}
|
||||
// 获取单个字典数据
|
||||
export function getDictItems(dictCode) {
|
||||
return request({
|
||||
url: `/gaeaDict/select/${dictCode}`,
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
// 字典管理新增
|
||||
export function dictAdd(data) {
|
||||
return request({
|
||||
url: '/gaeaDict',
|
||||
method: 'POST',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 字典管理编辑
|
||||
export function dictEdit(data) {
|
||||
return request({
|
||||
url: '/gaeaDict',
|
||||
method: 'PUT',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
export function dictDetail(data) {
|
||||
return request({
|
||||
url: '/gaeaDict/' + data.id,
|
||||
method: 'get',
|
||||
params: { accessKey: data.accessKey },
|
||||
})
|
||||
}
|
||||
|
||||
// 字典管理批量删除
|
||||
export function dictsDelect(data) {
|
||||
return request({
|
||||
url: `/gaeaDict/delete/batch`,
|
||||
method: 'POST',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 刷新数据字典
|
||||
* @param data
|
||||
*/
|
||||
export function freshDict(data) {
|
||||
return request({
|
||||
url: '/gaeaDict/freshDict',
|
||||
method: 'POST',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 获取国家省份城市
|
||||
export function queryCountryCity(value) {
|
||||
return request({
|
||||
url: `/countryCity/select`,
|
||||
method: 'get',
|
||||
params: {
|
||||
value: value,
|
||||
},
|
||||
})
|
||||
}
|
||||
export default { dictDetail, getDictList, dictAdd, dictEdit, dictsDelect }
|
47
src/api/dictItem.js
Normal file
@ -0,0 +1,47 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 字典项管理查询
|
||||
export function dictItemPageList(params) {
|
||||
return request({
|
||||
url: '/gaeaDictItem/pageList',
|
||||
method: 'GET',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
// 字典项管理新增
|
||||
export function dictItemAdd(data) {
|
||||
return request({
|
||||
url: '/gaeaDictItem',
|
||||
method: 'POST',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 字典项管理编辑
|
||||
export function dictItemEdit(data) {
|
||||
return request({
|
||||
url: '/gaeaDictItem',
|
||||
method: 'PUT',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 字典项管理批量删除
|
||||
export function dictsItemDelect(data) {
|
||||
return request({
|
||||
url: `/gaeaDictItem/delete/batch`,
|
||||
method: 'POST',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
export function dictItemDetail(data) {
|
||||
return request({
|
||||
url: '/gaeaDictItem/' + data.id,
|
||||
method: 'get',
|
||||
params: { accessKey: data.accessKey },
|
||||
})
|
||||
}
|
||||
|
||||
export default { dictItemDetail, dictItemPageList, dictItemAdd, dictItemEdit, dictsItemDelect }
|
58
src/api/file.js
Normal file
@ -0,0 +1,58 @@
|
||||
/*
|
||||
* @Author: zyk
|
||||
* @Date: 2021-02-23 15:13:17
|
||||
* @Last Modified by: zyk
|
||||
* @Last Modified time: 2021-03-15 13:28:36
|
||||
*/
|
||||
import request from '@/utils/request'
|
||||
// 导出中心
|
||||
|
||||
export function download(fileId) {
|
||||
return request({
|
||||
url: `/file/download/${fileId}`,
|
||||
responseType: 'blob',
|
||||
method: 'GET',
|
||||
})
|
||||
}
|
||||
|
||||
export function fileList(params) {
|
||||
return request({
|
||||
url: '/file/pageList',
|
||||
method: 'GET',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
export function fileAdd(data) {
|
||||
return request({
|
||||
url: '/file',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
export function fileDel(data) {
|
||||
return request({
|
||||
url: `/file/delete/batch`,
|
||||
method: 'POST',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
export function fileUpdate(data) {
|
||||
return request({
|
||||
url: '/file',
|
||||
method: 'put',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
export function fileDetail(data) {
|
||||
return request({
|
||||
url: '/file/' + data.id,
|
||||
method: 'get',
|
||||
params: data,
|
||||
})
|
||||
}
|
||||
|
||||
export default { fileList, fileAdd, fileDel, fileUpdate, fileDetail }
|
25
src/api/login/index.js
Normal file
@ -0,0 +1,25 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
export function login (data) {
|
||||
return request({
|
||||
url: 'accessUser/login',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function logout () {
|
||||
return request({
|
||||
url: 'accessUser/logout',
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
|
||||
// 登录之后 根据旧修改密码
|
||||
export function reqUpdatePassword (data) {
|
||||
return request({
|
||||
url: '/accessUser/updatePassword',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
131
src/api/report.js
Normal file
@ -0,0 +1,131 @@
|
||||
/*
|
||||
* @Author: qianlishi
|
||||
* @Date: 2020-07-13 15:13:37
|
||||
* @Last Modified by: qianlishi
|
||||
* @Last Modified time: 2021-03-04 10:46:26
|
||||
*/
|
||||
import request from '@/utils/request'
|
||||
|
||||
// resultset
|
||||
export function dataSetPreview (data) {
|
||||
return request({
|
||||
url: `/dataSet/detailBysetId/${data.id}`,
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
export function addDataSet (data) {
|
||||
return request({
|
||||
url: '/dataSet',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
export function editDataSet (data) {
|
||||
return request({
|
||||
url: '/dataSet',
|
||||
method: 'put',
|
||||
data,
|
||||
})
|
||||
}
|
||||
// delete dataset
|
||||
export function deleteDataSet (data) {
|
||||
return request({
|
||||
url: '/dataSet/' + data.id,
|
||||
method: 'delete',
|
||||
data,
|
||||
})
|
||||
}
|
||||
// 下拉数据源
|
||||
export function queryAllDataSourceSet (data) {
|
||||
return request({
|
||||
url: '/dataSource/queryAllDataSource',
|
||||
method: 'get',
|
||||
data,
|
||||
})
|
||||
}
|
||||
// 数据集高级规则js验证
|
||||
export function verificationSet (data) {
|
||||
return request({
|
||||
url: '/dataSetParam/verification',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
// 测试数据转换,以及返回数据table列表
|
||||
export function testTransformSet (data) {
|
||||
return request({
|
||||
url: '/dataSet/testTransform',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// report
|
||||
export function reportPageList (params) {
|
||||
return request({
|
||||
url: '/report/pageList',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
// report
|
||||
export function addReport (data) {
|
||||
return request({
|
||||
url: '/report',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// report
|
||||
export function editReport (data) {
|
||||
return request({
|
||||
url: '/report',
|
||||
method: 'put',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// report
|
||||
export function delReport (data) {
|
||||
return request({
|
||||
url: '/report/delReport',
|
||||
method: 'delete',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// report
|
||||
export function detailReport (id, accessKey) {
|
||||
return request({
|
||||
url: `/report/${id}?accessKey=${accessKey}`,
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
// reportExcel
|
||||
export function addReportExcel (data) {
|
||||
return request({
|
||||
url: '/reportExcel',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// reportExcel
|
||||
export function editReportExcel (data) {
|
||||
return request({
|
||||
url: '/reportExcel',
|
||||
method: 'put',
|
||||
data,
|
||||
})
|
||||
}
|
||||
// /dataSet/pageList
|
||||
export function dataSetPageList (params) {
|
||||
return request({
|
||||
url: '/dataSet/pageList',
|
||||
method: 'GET',
|
||||
params,
|
||||
})
|
||||
}
|
42
src/api/reportDataSet.js
Normal file
@ -0,0 +1,42 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
export function reportDataSetList(params) {
|
||||
return request({
|
||||
url: 'dataSet/pageList',
|
||||
method: 'GET',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
export function reportDataSetAdd(data) {
|
||||
return request({
|
||||
url: 'dataSet',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function reportDataSetDeleteBatch(data) {
|
||||
return request({
|
||||
url: 'dataSet/delete/batch',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function reportDataSetUpdate(data) {
|
||||
return request({
|
||||
url: 'dataSet',
|
||||
method: 'put', data,
|
||||
})
|
||||
}
|
||||
|
||||
export function reportDataSetDetail(data) {
|
||||
return request({
|
||||
url: 'dataSet/' + data.id,
|
||||
method: 'get',
|
||||
params: { accessKey: data.accessKey }
|
||||
})
|
||||
}
|
||||
|
||||
export default { reportDataSetList, reportDataSetAdd, reportDataSetDeleteBatch, reportDataSetUpdate, reportDataSetDetail }
|
51
src/api/reportDataSource.js
Normal file
@ -0,0 +1,51 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
export function reportDataSourceList(params) {
|
||||
return request({
|
||||
url: 'dataSource/pageList',
|
||||
method: 'GET',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
export function reportDataSourceAdd(data) {
|
||||
return request({
|
||||
url: 'dataSource',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function reportDataSourceDeleteBatch(data) {
|
||||
return request({
|
||||
url: 'dataSource/delete/batch',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function reportDataSourceUpdate(data) {
|
||||
return request({
|
||||
url: 'dataSource',
|
||||
method: 'put',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function reportDataSourceDetail(data) {
|
||||
return request({
|
||||
url: 'dataSource/' + data.id,
|
||||
method: 'get',
|
||||
params: { accessKey: data.accessKey }
|
||||
})
|
||||
}
|
||||
|
||||
export function testConnection (data) {
|
||||
return request({
|
||||
url: '/dataSource/testConnection',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
export default { reportDataSourceList, reportDataSourceAdd, reportDataSourceDeleteBatch, reportDataSourceUpdate, reportDataSourceDetail, testConnection}
|
66
src/api/reportShare.js
Normal file
@ -0,0 +1,66 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
export function reportShareList(params) {
|
||||
return request({
|
||||
url: 'reportShare/pageList',
|
||||
method: 'GET',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
export function reportShareAdd(data) {
|
||||
return request({
|
||||
url: 'reportDashboard/share',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function excelShareAdd(data) {
|
||||
return request({
|
||||
url: 'reportExcel/share',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function reportShareDelay(data) {
|
||||
return request({
|
||||
url: 'reportShare/shareDelay',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function reportShareDeleteBatch(data) {
|
||||
return request({
|
||||
url: 'reportShare/delete/batch',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function reportShareUpdate(data) {
|
||||
return request({
|
||||
url: 'reportShare',
|
||||
method: 'put', data,
|
||||
})
|
||||
}
|
||||
|
||||
export function reportShareDetail(data) {
|
||||
return request({
|
||||
url: 'reportShare/' + data.id,
|
||||
method: 'get',
|
||||
params: {accessKey: data.accessKey}
|
||||
})
|
||||
}
|
||||
|
||||
export function reportShareDetailByCode(data) {
|
||||
return request({
|
||||
url: 'reportShare/detailByCode',
|
||||
method: 'get',
|
||||
params: {shareCode: data}
|
||||
})
|
||||
}
|
||||
|
||||
export default {reportShareList, reportShareAdd, reportShareDeleteBatch, reportShareUpdate, reportShareDetail}
|
50
src/api/reportmanage.js
Normal file
@ -0,0 +1,50 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
export function reportList(params) {
|
||||
return request({
|
||||
url: '/report/pageList',
|
||||
method: 'GET',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
export function reportAdd(data) {
|
||||
return request({
|
||||
url: '/report',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function reportDeleteBatch(data) {
|
||||
return request({
|
||||
url: '/report/delete/batch',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function reportUpdate(data) {
|
||||
return request({
|
||||
url: '/report',
|
||||
method: 'put', data,
|
||||
})
|
||||
}
|
||||
|
||||
export function reportDetail(data) {
|
||||
return request({
|
||||
url: '/report/' + data.id,
|
||||
method: 'get',
|
||||
params: { accessKey: data.accessKey }
|
||||
})
|
||||
}
|
||||
|
||||
export function reportCopy(data) {
|
||||
return request({
|
||||
url: '/report/copy',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export default { reportList, reportAdd, reportDeleteBatch, reportUpdate, reportDetail }
|
70
src/api/upload.js
Normal file
@ -0,0 +1,70 @@
|
||||
import axios from 'axios';
|
||||
import { Message, MessageBox } from 'element-ui';
|
||||
import { delItem } from '@/utils/storage';
|
||||
|
||||
axios.defaults.baseURL = process.env.BASE_API
|
||||
// axios.defaults.baseURL = 'http://10.108.12.23:8080' // 德明本地
|
||||
// axios.defaults.baseURL = "http://haitongnla.test.anji-plus.com"
|
||||
// axios.defaults.baseURL = "http://10.108.26.163:8080"
|
||||
|
||||
const service = axios.create({
|
||||
withCredentials: true,
|
||||
timeout: 60000,
|
||||
headers: {
|
||||
'Content-Type': 'multipart/form-data'
|
||||
}
|
||||
})
|
||||
|
||||
// response interceptor
|
||||
service.interceptors.response.use(
|
||||
response => {
|
||||
const res = response.data;
|
||||
if (res.repCode == '0000') {
|
||||
return res
|
||||
}
|
||||
else if (res.repCode == '0024') {
|
||||
|
||||
//登录超时或被登出,弹确认框,用户确认后,跳转到登录页面
|
||||
MessageBox({
|
||||
message: "当前登录已失效或异地登录,请重新登录",
|
||||
type: 'error',
|
||||
duration: 3 * 1000,
|
||||
}).then(() => {
|
||||
console.log(1)
|
||||
sessionStorage.clear();
|
||||
localStorage.clear();
|
||||
// location.reload();
|
||||
window.location.href = "/";
|
||||
}).catch(err => {
|
||||
console.log(2)
|
||||
})
|
||||
}else if(res.repCode == "3100" || res.repCode == "3101"){
|
||||
return res;
|
||||
}
|
||||
else {
|
||||
Message({
|
||||
message: res.repMsg,
|
||||
type: 'error',
|
||||
duration: 3 * 1000
|
||||
})
|
||||
return res;
|
||||
}
|
||||
},
|
||||
error => {
|
||||
var errorStatus = error.response.status;
|
||||
var errorData = error.response.data;
|
||||
var messageTxt = "";
|
||||
if (errorStatus != 200) {
|
||||
messageTxt = "服务器内部错误,请联系管理员";
|
||||
} else {
|
||||
messageTxt = '失败原因:' + errorData.repCode + '--' + errorData.repMsg;
|
||||
}
|
||||
Message({
|
||||
message: messageTxt,
|
||||
type: 'error',
|
||||
duration: 5 * 1000
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
export default service
|
539
src/assets/iconfont/demo.css
Normal file
@ -0,0 +1,539 @@
|
||||
/* Logo 字体 */
|
||||
@font-face {
|
||||
font-family: "iconfont logo";
|
||||
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
|
||||
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
|
||||
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
|
||||
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
|
||||
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
|
||||
}
|
||||
|
||||
.logo {
|
||||
font-family: "iconfont logo";
|
||||
font-size: 160px;
|
||||
font-style: normal;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
/* tabs */
|
||||
.nav-tabs {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.nav-tabs .nav-more {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
height: 42px;
|
||||
line-height: 42px;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
#tabs {
|
||||
border-bottom: 1px solid #eee;
|
||||
}
|
||||
|
||||
#tabs li {
|
||||
cursor: pointer;
|
||||
width: 100px;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
text-align: center;
|
||||
font-size: 16px;
|
||||
border-bottom: 2px solid transparent;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
margin-bottom: -1px;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
|
||||
#tabs .active {
|
||||
border-bottom-color: #f00;
|
||||
color: #222;
|
||||
}
|
||||
|
||||
.tab-container .content {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* 页面布局 */
|
||||
.main {
|
||||
padding: 30px 100px;
|
||||
width: 960px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.main .logo {
|
||||
color: #333;
|
||||
text-align: left;
|
||||
margin-bottom: 30px;
|
||||
line-height: 1;
|
||||
height: 110px;
|
||||
margin-top: -50px;
|
||||
overflow: hidden;
|
||||
*zoom: 1;
|
||||
}
|
||||
|
||||
.main .logo a {
|
||||
font-size: 160px;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.helps {
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
.helps pre {
|
||||
padding: 20px;
|
||||
margin: 10px 0;
|
||||
border: solid 1px #e7e1cd;
|
||||
background-color: #fffdef;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.icon_lists {
|
||||
width: 100% !important;
|
||||
overflow: hidden;
|
||||
*zoom: 1;
|
||||
}
|
||||
|
||||
.icon_lists li {
|
||||
width: 100px;
|
||||
margin-bottom: 10px;
|
||||
margin-right: 20px;
|
||||
text-align: center;
|
||||
list-style: none !important;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.icon_lists li .code-name {
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.icon_lists .icon {
|
||||
display: block;
|
||||
height: 100px;
|
||||
line-height: 100px;
|
||||
font-size: 42px;
|
||||
margin: 10px auto;
|
||||
color: #333;
|
||||
-webkit-transition: font-size 0.25s linear, width 0.25s linear;
|
||||
-moz-transition: font-size 0.25s linear, width 0.25s linear;
|
||||
transition: font-size 0.25s linear, width 0.25s linear;
|
||||
}
|
||||
|
||||
.icon_lists .icon:hover {
|
||||
font-size: 100px;
|
||||
}
|
||||
|
||||
.icon_lists .svg-icon {
|
||||
/* 通过设置 font-size 来改变图标大小 */
|
||||
width: 1em;
|
||||
/* 图标和文字相邻时,垂直对齐 */
|
||||
vertical-align: -0.15em;
|
||||
/* 通过设置 color 来改变 SVG 的颜色/fill */
|
||||
fill: currentColor;
|
||||
/* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
|
||||
normalize.css 中也包含这行 */
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.icon_lists li .name,
|
||||
.icon_lists li .code-name {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
/* markdown 样式 */
|
||||
.markdown {
|
||||
color: #666;
|
||||
font-size: 14px;
|
||||
line-height: 1.8;
|
||||
}
|
||||
|
||||
.highlight {
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.markdown img {
|
||||
vertical-align: middle;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.markdown h1 {
|
||||
color: #404040;
|
||||
font-weight: 500;
|
||||
line-height: 40px;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.markdown h2,
|
||||
.markdown h3,
|
||||
.markdown h4,
|
||||
.markdown h5,
|
||||
.markdown h6 {
|
||||
color: #404040;
|
||||
margin: 1.6em 0 0.6em 0;
|
||||
font-weight: 500;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.markdown h1 {
|
||||
font-size: 28px;
|
||||
}
|
||||
|
||||
.markdown h2 {
|
||||
font-size: 22px;
|
||||
}
|
||||
|
||||
.markdown h3 {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.markdown h4 {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.markdown h5 {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.markdown h6 {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.markdown hr {
|
||||
height: 1px;
|
||||
border: 0;
|
||||
background: #e9e9e9;
|
||||
margin: 16px 0;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.markdown p {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
.markdown>p,
|
||||
.markdown>blockquote,
|
||||
.markdown>.highlight,
|
||||
.markdown>ol,
|
||||
.markdown>ul {
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
.markdown ul>li {
|
||||
list-style: circle;
|
||||
}
|
||||
|
||||
.markdown>ul li,
|
||||
.markdown blockquote ul>li {
|
||||
margin-left: 20px;
|
||||
padding-left: 4px;
|
||||
}
|
||||
|
||||
.markdown>ul li p,
|
||||
.markdown>ol li p {
|
||||
margin: 0.6em 0;
|
||||
}
|
||||
|
||||
.markdown ol>li {
|
||||
list-style: decimal;
|
||||
}
|
||||
|
||||
.markdown>ol li,
|
||||
.markdown blockquote ol>li {
|
||||
margin-left: 20px;
|
||||
padding-left: 4px;
|
||||
}
|
||||
|
||||
.markdown code {
|
||||
margin: 0 3px;
|
||||
padding: 0 5px;
|
||||
background: #eee;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.markdown strong,
|
||||
.markdown b {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.markdown>table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
empty-cells: show;
|
||||
border: 1px solid #e9e9e9;
|
||||
width: 95%;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.markdown>table th {
|
||||
white-space: nowrap;
|
||||
color: #333;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.markdown>table th,
|
||||
.markdown>table td {
|
||||
border: 1px solid #e9e9e9;
|
||||
padding: 8px 16px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.markdown>table th {
|
||||
background: #F7F7F7;
|
||||
}
|
||||
|
||||
.markdown blockquote {
|
||||
font-size: 90%;
|
||||
color: #999;
|
||||
border-left: 4px solid #e9e9e9;
|
||||
padding-left: 0.8em;
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
.markdown blockquote p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.markdown .anchor {
|
||||
opacity: 0;
|
||||
transition: opacity 0.3s ease;
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
.markdown .waiting {
|
||||
color: #ccc;
|
||||
}
|
||||
|
||||
.markdown h1:hover .anchor,
|
||||
.markdown h2:hover .anchor,
|
||||
.markdown h3:hover .anchor,
|
||||
.markdown h4:hover .anchor,
|
||||
.markdown h5:hover .anchor,
|
||||
.markdown h6:hover .anchor {
|
||||
opacity: 1;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.markdown>br,
|
||||
.markdown>p>br {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
|
||||
.hljs {
|
||||
display: block;
|
||||
background: white;
|
||||
padding: 0.5em;
|
||||
color: #333333;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
.hljs-comment,
|
||||
.hljs-meta {
|
||||
color: #969896;
|
||||
}
|
||||
|
||||
.hljs-string,
|
||||
.hljs-variable,
|
||||
.hljs-template-variable,
|
||||
.hljs-strong,
|
||||
.hljs-emphasis,
|
||||
.hljs-quote {
|
||||
color: #df5000;
|
||||
}
|
||||
|
||||
.hljs-keyword,
|
||||
.hljs-selector-tag,
|
||||
.hljs-type {
|
||||
color: #a71d5d;
|
||||
}
|
||||
|
||||
.hljs-literal,
|
||||
.hljs-symbol,
|
||||
.hljs-bullet,
|
||||
.hljs-attribute {
|
||||
color: #0086b3;
|
||||
}
|
||||
|
||||
.hljs-section,
|
||||
.hljs-name {
|
||||
color: #63a35c;
|
||||
}
|
||||
|
||||
.hljs-tag {
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.hljs-title,
|
||||
.hljs-attr,
|
||||
.hljs-selector-id,
|
||||
.hljs-selector-class,
|
||||
.hljs-selector-attr,
|
||||
.hljs-selector-pseudo {
|
||||
color: #795da3;
|
||||
}
|
||||
|
||||
.hljs-addition {
|
||||
color: #55a532;
|
||||
background-color: #eaffea;
|
||||
}
|
||||
|
||||
.hljs-deletion {
|
||||
color: #bd2c00;
|
||||
background-color: #ffecec;
|
||||
}
|
||||
|
||||
.hljs-link {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/* 代码高亮 */
|
||||
/* PrismJS 1.15.0
|
||||
https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
|
||||
/**
|
||||
* prism.js default theme for JavaScript, CSS and HTML
|
||||
* Based on dabblet (http://dabblet.com)
|
||||
* @author Lea Verou
|
||||
*/
|
||||
code[class*="language-"],
|
||||
pre[class*="language-"] {
|
||||
color: black;
|
||||
background: none;
|
||||
text-shadow: 0 1px white;
|
||||
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
|
||||
text-align: left;
|
||||
white-space: pre;
|
||||
word-spacing: normal;
|
||||
word-break: normal;
|
||||
word-wrap: normal;
|
||||
line-height: 1.5;
|
||||
|
||||
-moz-tab-size: 4;
|
||||
-o-tab-size: 4;
|
||||
tab-size: 4;
|
||||
|
||||
-webkit-hyphens: none;
|
||||
-moz-hyphens: none;
|
||||
-ms-hyphens: none;
|
||||
hyphens: none;
|
||||
}
|
||||
|
||||
pre[class*="language-"]::-moz-selection,
|
||||
pre[class*="language-"] ::-moz-selection,
|
||||
code[class*="language-"]::-moz-selection,
|
||||
code[class*="language-"] ::-moz-selection {
|
||||
text-shadow: none;
|
||||
background: #b3d4fc;
|
||||
}
|
||||
|
||||
pre[class*="language-"]::selection,
|
||||
pre[class*="language-"] ::selection,
|
||||
code[class*="language-"]::selection,
|
||||
code[class*="language-"] ::selection {
|
||||
text-shadow: none;
|
||||
background: #b3d4fc;
|
||||
}
|
||||
|
||||
@media print {
|
||||
|
||||
code[class*="language-"],
|
||||
pre[class*="language-"] {
|
||||
text-shadow: none;
|
||||
}
|
||||
}
|
||||
|
||||
/* Code blocks */
|
||||
pre[class*="language-"] {
|
||||
padding: 1em;
|
||||
margin: .5em 0;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
:not(pre)>code[class*="language-"],
|
||||
pre[class*="language-"] {
|
||||
background: #f5f2f0;
|
||||
}
|
||||
|
||||
/* Inline code */
|
||||
:not(pre)>code[class*="language-"] {
|
||||
padding: .1em;
|
||||
border-radius: .3em;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
.token.comment,
|
||||
.token.prolog,
|
||||
.token.doctype,
|
||||
.token.cdata {
|
||||
color: slategray;
|
||||
}
|
||||
|
||||
.token.punctuation {
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.namespace {
|
||||
opacity: .7;
|
||||
}
|
||||
|
||||
.token.property,
|
||||
.token.tag,
|
||||
.token.boolean,
|
||||
.token.number,
|
||||
.token.constant,
|
||||
.token.symbol,
|
||||
.token.deleted {
|
||||
color: #905;
|
||||
}
|
||||
|
||||
.token.selector,
|
||||
.token.attr-name,
|
||||
.token.string,
|
||||
.token.char,
|
||||
.token.builtin,
|
||||
.token.inserted {
|
||||
color: #690;
|
||||
}
|
||||
|
||||
.token.operator,
|
||||
.token.entity,
|
||||
.token.url,
|
||||
.language-css .token.string,
|
||||
.style .token.string {
|
||||
color: #9a6e3a;
|
||||
background: hsla(0, 0%, 100%, .5);
|
||||
}
|
||||
|
||||
.token.atrule,
|
||||
.token.attr-value,
|
||||
.token.keyword {
|
||||
color: #07a;
|
||||
}
|
||||
|
||||
.token.function,
|
||||
.token.class-name {
|
||||
color: #DD4A68;
|
||||
}
|
||||
|
||||
.token.regex,
|
||||
.token.important,
|
||||
.token.variable {
|
||||
color: #e90;
|
||||
}
|
||||
|
||||
.token.important,
|
||||
.token.bold {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.token.italic {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.token.entity {
|
||||
cursor: help;
|
||||
}
|
3040
src/assets/iconfont/demo_index.html
Normal file
511
src/assets/iconfont/iconfont.css
Normal file
@ -0,0 +1,511 @@
|
||||
@font-face {
|
||||
font-family: "iconfont"; /* Project id 1513211 */
|
||||
src: url('iconfont.woff2?t=1666946350865') format('woff2'),
|
||||
url('iconfont.woff?t=1666946350865') format('woff'),
|
||||
url('iconfont.ttf?t=1666946350865') format('truetype');
|
||||
}
|
||||
|
||||
.iconfont {
|
||||
font-family: "iconfont" !important;
|
||||
font-size: 16px;
|
||||
font-style: normal;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
.iconleidatu:before {
|
||||
content: "\e640";
|
||||
}
|
||||
|
||||
.iconrelitu:before {
|
||||
content: "\e683";
|
||||
}
|
||||
|
||||
.iconhuifubeifen:before {
|
||||
content: "\e60d";
|
||||
}
|
||||
|
||||
.iconundo:before {
|
||||
content: "\e60e";
|
||||
}
|
||||
|
||||
.iconciyuntu:before {
|
||||
content: "\e7af";
|
||||
}
|
||||
|
||||
.icondaochu:before {
|
||||
content: "\e618";
|
||||
}
|
||||
|
||||
.icondaoru:before {
|
||||
content: "\e608";
|
||||
}
|
||||
|
||||
.iconduibitupu:before {
|
||||
content: "\e9ca";
|
||||
}
|
||||
|
||||
.iconzhexian:before {
|
||||
content: "\e635";
|
||||
}
|
||||
|
||||
.iconbianzu23:before {
|
||||
content: "\e621";
|
||||
}
|
||||
|
||||
.iconduidietu:before {
|
||||
content: "\e61f";
|
||||
}
|
||||
|
||||
.iconfill_folder:before {
|
||||
content: "\e645";
|
||||
}
|
||||
|
||||
.iconzidianxiang:before {
|
||||
content: "\e7df";
|
||||
}
|
||||
|
||||
.iconAPIwangguan:before {
|
||||
content: "\e66b";
|
||||
}
|
||||
|
||||
.icondatabase:before {
|
||||
content: "\e7b6";
|
||||
}
|
||||
|
||||
.iconbaifenbi:before {
|
||||
content: "\e616";
|
||||
}
|
||||
|
||||
.iconfolder-o:before {
|
||||
content: "\e70f";
|
||||
}
|
||||
|
||||
.iconjinlingyingcaiwangtubiao01:before {
|
||||
content: "\e724";
|
||||
}
|
||||
|
||||
.iconleft-copy:before {
|
||||
content: "\e6af";
|
||||
}
|
||||
|
||||
.iconfuzhi1:before {
|
||||
content: "\e626";
|
||||
}
|
||||
|
||||
.iconzhongguoditu:before {
|
||||
content: "\e738";
|
||||
}
|
||||
|
||||
.iconbiaoge:before {
|
||||
content: "\e625";
|
||||
}
|
||||
|
||||
.icongexingzhuangban:before {
|
||||
content: "\e646";
|
||||
}
|
||||
|
||||
.iconyibiaopan-chaobiao:before {
|
||||
content: "\e72e";
|
||||
}
|
||||
|
||||
.iconnandinggeermeiguitu:before {
|
||||
content: "\e851";
|
||||
}
|
||||
|
||||
.iconzhankai:before {
|
||||
content: "\e631";
|
||||
}
|
||||
|
||||
.iconexcel:before {
|
||||
content: "\e650";
|
||||
}
|
||||
|
||||
.iconbaocun:before {
|
||||
content: "\e737";
|
||||
}
|
||||
|
||||
.iconguanbi:before {
|
||||
content: "\e6c5";
|
||||
}
|
||||
|
||||
.iconpdf:before {
|
||||
content: "\e614";
|
||||
}
|
||||
|
||||
.iconfuzhi:before {
|
||||
content: "\e61e";
|
||||
}
|
||||
|
||||
.icon020kongxinbingtu:before {
|
||||
content: "\e78c";
|
||||
}
|
||||
|
||||
.iconshijian:before {
|
||||
content: "\e662";
|
||||
}
|
||||
|
||||
.iconsave:before {
|
||||
content: "\e6f6";
|
||||
}
|
||||
|
||||
.icontupian:before {
|
||||
content: "\e612";
|
||||
}
|
||||
|
||||
.iconzhuzhuangtu:before {
|
||||
content: "\e691";
|
||||
}
|
||||
|
||||
.iconchaolianjie:before {
|
||||
content: "\e65f";
|
||||
}
|
||||
|
||||
.iconziyuan:before {
|
||||
content: "\e605";
|
||||
}
|
||||
|
||||
.iconshipin:before {
|
||||
content: "\ecc1";
|
||||
}
|
||||
|
||||
.iconkuangjia:before {
|
||||
content: "\e66a";
|
||||
}
|
||||
|
||||
.iconyulan:before {
|
||||
content: "\e728";
|
||||
}
|
||||
|
||||
.iconhengxiangwenzi:before {
|
||||
content: "\e601";
|
||||
}
|
||||
|
||||
.iconicon_tubiao_bingtu:before {
|
||||
content: "\e602";
|
||||
}
|
||||
|
||||
.iconloudoutu:before {
|
||||
content: "\e6d5";
|
||||
}
|
||||
|
||||
.icontubiaozhexiantu:before {
|
||||
content: "\e630";
|
||||
}
|
||||
|
||||
.iconzhuxiantu:before {
|
||||
content: "\e607";
|
||||
}
|
||||
|
||||
.icontupian1:before {
|
||||
content: "\e81d";
|
||||
}
|
||||
|
||||
.iconyibiaopan:before {
|
||||
content: "\e706";
|
||||
}
|
||||
|
||||
.icon1:before {
|
||||
content: "\e63b";
|
||||
}
|
||||
|
||||
.iconxiazai:before {
|
||||
content: "\e639";
|
||||
}
|
||||
|
||||
.icon11-04:before {
|
||||
content: "\e784";
|
||||
}
|
||||
|
||||
.iconyouxiang:before {
|
||||
content: "\e769";
|
||||
}
|
||||
|
||||
.iconbangdingshouji:before {
|
||||
content: "\e64d";
|
||||
}
|
||||
|
||||
.iconshouji:before {
|
||||
content: "\e854";
|
||||
}
|
||||
|
||||
.icon52-shouji:before {
|
||||
content: "\e871";
|
||||
}
|
||||
|
||||
.iconhome:before {
|
||||
content: "\e610";
|
||||
}
|
||||
|
||||
.iconhome2:before {
|
||||
content: "\e61a";
|
||||
}
|
||||
|
||||
.iconKafka:before {
|
||||
content: "\e65a";
|
||||
}
|
||||
|
||||
.iconshujujieruKafkajiqun:before {
|
||||
content: "\e64f";
|
||||
}
|
||||
|
||||
.iconkafka:before {
|
||||
content: "\e6f2";
|
||||
}
|
||||
|
||||
.iconelasticsearch-Elasticsearch:before {
|
||||
content: "\e853";
|
||||
}
|
||||
|
||||
.iconapachekafka:before {
|
||||
content: "\eb3f";
|
||||
}
|
||||
|
||||
.iconelasticsearch:before {
|
||||
content: "\eb85";
|
||||
}
|
||||
|
||||
.iconwentifankui:before {
|
||||
content: "\e8d1";
|
||||
}
|
||||
|
||||
.iconwentifankui1:before {
|
||||
content: "\e70e";
|
||||
}
|
||||
|
||||
.iconwentifankui2:before {
|
||||
content: "\e643";
|
||||
}
|
||||
|
||||
.iconalikafkaxiaoxiduilieKafka:before {
|
||||
content: "\e8a4";
|
||||
}
|
||||
|
||||
.iconxiangmuchaxun-chakanshebei:before {
|
||||
content: "\e682";
|
||||
}
|
||||
|
||||
.iconelasticsearchElasticsearch:before {
|
||||
content: "\e6a1";
|
||||
}
|
||||
|
||||
.icon511tongji_shutu:before {
|
||||
content: "\e64a";
|
||||
}
|
||||
|
||||
.iconfenxiang1:before {
|
||||
content: "\e615";
|
||||
}
|
||||
|
||||
.iconfenxiang2:before {
|
||||
content: "\e60f";
|
||||
}
|
||||
|
||||
.iconfenxiang_2:before {
|
||||
content: "\e600";
|
||||
}
|
||||
|
||||
.iconNMStubiao-:before {
|
||||
content: "\e628";
|
||||
}
|
||||
|
||||
.iconwanchenganquanshijian:before {
|
||||
content: "\e68a";
|
||||
}
|
||||
|
||||
.iconeventbridgexiaoxishijianzongxian:before {
|
||||
content: "\e74d";
|
||||
}
|
||||
|
||||
.iconshu:before {
|
||||
content: "\e629";
|
||||
}
|
||||
|
||||
.iconshebeiguanji:before {
|
||||
content: "\e61d";
|
||||
}
|
||||
|
||||
.iconhaofangtuo400iconfontduanxin:before {
|
||||
content: "\e6d8";
|
||||
}
|
||||
|
||||
.iconnavicon-ywcs:before {
|
||||
content: "\e661";
|
||||
}
|
||||
|
||||
.iconliebiao:before {
|
||||
content: "\e660";
|
||||
}
|
||||
|
||||
.iconbianji:before {
|
||||
content: "\e60c";
|
||||
}
|
||||
|
||||
.iconyoujian:before {
|
||||
content: "\e63a";
|
||||
}
|
||||
|
||||
.iconshejiaodingding:before {
|
||||
content: "\e678";
|
||||
}
|
||||
|
||||
.iconzidianguanli:before {
|
||||
content: "\e624";
|
||||
}
|
||||
|
||||
.icontubiao:before {
|
||||
content: "\e73f";
|
||||
}
|
||||
|
||||
.icondingding:before {
|
||||
content: "\e690";
|
||||
}
|
||||
|
||||
.iconduanxin:before {
|
||||
content: "\e603";
|
||||
}
|
||||
|
||||
.icondirectmailyoujiantuisong:before {
|
||||
content: "\e714";
|
||||
}
|
||||
|
||||
.iconshebeisheshi:before {
|
||||
content: "\e61c";
|
||||
}
|
||||
|
||||
.icontongzhi:before {
|
||||
content: "\e606";
|
||||
}
|
||||
|
||||
.iconrizhi:before {
|
||||
content: "\e663";
|
||||
}
|
||||
|
||||
.iconchufaqipeizhi-hui:before {
|
||||
content: "\e689";
|
||||
}
|
||||
|
||||
.iconvcsshijuejisuanfuwu:before {
|
||||
content: "\e759";
|
||||
}
|
||||
|
||||
.iconbar_icon_shebei:before {
|
||||
content: "\e60a";
|
||||
}
|
||||
|
||||
.iconuser-before:before {
|
||||
content: "\e617";
|
||||
}
|
||||
|
||||
.iconkemuweihutubiao:before {
|
||||
content: "\e60b";
|
||||
}
|
||||
|
||||
.iconaccounting-subjects:before {
|
||||
content: "\e677";
|
||||
}
|
||||
|
||||
.iconRectangleCopy:before {
|
||||
content: "\e6dd";
|
||||
}
|
||||
|
||||
.iconchengbenshujuguanli:before {
|
||||
content: "\e6c7";
|
||||
}
|
||||
|
||||
.iconjibenshuju:before {
|
||||
content: "\e71d";
|
||||
}
|
||||
|
||||
.iconB-shengshiqu:before {
|
||||
content: "\e72d";
|
||||
}
|
||||
|
||||
.iconzuzhijigou:before {
|
||||
content: "\e66e";
|
||||
}
|
||||
|
||||
.iconanniu:before {
|
||||
content: "\e8c5";
|
||||
}
|
||||
|
||||
.iconcaidan2:before {
|
||||
content: "\e61b";
|
||||
}
|
||||
|
||||
.iconwenhao:before {
|
||||
content: "\e67f";
|
||||
}
|
||||
|
||||
.iconlajitong:before {
|
||||
content: "\e636";
|
||||
}
|
||||
|
||||
.iconzhongzhimima:before {
|
||||
content: "\e620";
|
||||
}
|
||||
|
||||
.iconshezhi:before {
|
||||
content: "\e68f";
|
||||
}
|
||||
|
||||
.iconzhongzhuan:before {
|
||||
content: "\e69b";
|
||||
}
|
||||
|
||||
.iconadd:before {
|
||||
content: "\e6b9";
|
||||
}
|
||||
|
||||
.iconminus:before {
|
||||
content: "\e6ba";
|
||||
}
|
||||
|
||||
.iconpassword:before {
|
||||
content: "\e622";
|
||||
}
|
||||
|
||||
.iconyonghu:before {
|
||||
content: "\e604";
|
||||
}
|
||||
|
||||
.iconquanxian:before {
|
||||
content: "\e633";
|
||||
}
|
||||
|
||||
.iconjiaose1:before {
|
||||
content: "\e64c";
|
||||
}
|
||||
|
||||
.iconzidian:before {
|
||||
content: "\e716";
|
||||
}
|
||||
|
||||
.iconcssz:before {
|
||||
content: "\e672";
|
||||
}
|
||||
|
||||
.iconbianji1:before {
|
||||
content: "\e642";
|
||||
}
|
||||
|
||||
.icondfzq-:before {
|
||||
content: "\e609";
|
||||
}
|
||||
|
||||
.iconfenxiang:before {
|
||||
content: "\e641";
|
||||
}
|
||||
|
||||
.iconshouquan1:before {
|
||||
content: "\e634";
|
||||
}
|
||||
|
||||
.iconjiantou:before {
|
||||
content: "\e653";
|
||||
}
|
||||
|
||||
.iconjiantou-copy-copy:before {
|
||||
content: "\e654";
|
||||
}
|
||||
|
1
src/assets/iconfont/iconfont.js
Normal file
877
src/assets/iconfont/iconfont.json
Normal file
@ -0,0 +1,877 @@
|
||||
{
|
||||
"id": "1513211",
|
||||
"name": "基础权限",
|
||||
"font_family": "iconfont",
|
||||
"css_prefix_text": "icon",
|
||||
"description": "",
|
||||
"glyphs": [
|
||||
{
|
||||
"icon_id": "9013588",
|
||||
"name": "雷达图2",
|
||||
"font_class": "leidatu",
|
||||
"unicode": "e640",
|
||||
"unicode_decimal": 58944
|
||||
},
|
||||
{
|
||||
"icon_id": "19004935",
|
||||
"name": "热力图",
|
||||
"font_class": "relitu",
|
||||
"unicode": "e683",
|
||||
"unicode_decimal": 59011
|
||||
},
|
||||
{
|
||||
"icon_id": "15047024",
|
||||
"name": "恢复备份",
|
||||
"font_class": "huifubeifen",
|
||||
"unicode": "e60d",
|
||||
"unicode_decimal": 58893
|
||||
},
|
||||
{
|
||||
"icon_id": "19657550",
|
||||
"name": "撤销",
|
||||
"font_class": "undo",
|
||||
"unicode": "e60e",
|
||||
"unicode_decimal": 58894
|
||||
},
|
||||
{
|
||||
"icon_id": "23043843",
|
||||
"name": "词云图",
|
||||
"font_class": "ciyuntu",
|
||||
"unicode": "e7af",
|
||||
"unicode_decimal": 59311
|
||||
},
|
||||
{
|
||||
"icon_id": "14325372",
|
||||
"name": "导出",
|
||||
"font_class": "daochu",
|
||||
"unicode": "e618",
|
||||
"unicode_decimal": 58904
|
||||
},
|
||||
{
|
||||
"icon_id": "15040056",
|
||||
"name": "导入",
|
||||
"font_class": "daoru",
|
||||
"unicode": "e608",
|
||||
"unicode_decimal": 58888
|
||||
},
|
||||
{
|
||||
"icon_id": "18140536",
|
||||
"name": "对比图谱",
|
||||
"font_class": "duibitupu",
|
||||
"unicode": "e9ca",
|
||||
"unicode_decimal": 59850
|
||||
},
|
||||
{
|
||||
"icon_id": "23013771",
|
||||
"name": "折线",
|
||||
"font_class": "zhexian",
|
||||
"unicode": "e635",
|
||||
"unicode_decimal": 58933
|
||||
},
|
||||
{
|
||||
"icon_id": "18888301",
|
||||
"name": "堆叠图",
|
||||
"font_class": "bianzu23",
|
||||
"unicode": "e621",
|
||||
"unicode_decimal": 58913
|
||||
},
|
||||
{
|
||||
"icon_id": "23457042",
|
||||
"name": "堆叠图",
|
||||
"font_class": "duidietu",
|
||||
"unicode": "e61f",
|
||||
"unicode_decimal": 58911
|
||||
},
|
||||
{
|
||||
"icon_id": "5472881",
|
||||
"name": "文件",
|
||||
"font_class": "fill_folder",
|
||||
"unicode": "e645",
|
||||
"unicode_decimal": 58949
|
||||
},
|
||||
{
|
||||
"icon_id": "15994720",
|
||||
"name": "字典项",
|
||||
"font_class": "zidianxiang",
|
||||
"unicode": "e7df",
|
||||
"unicode_decimal": 59359
|
||||
},
|
||||
{
|
||||
"icon_id": "1364704",
|
||||
"name": "API网关",
|
||||
"font_class": "APIwangguan",
|
||||
"unicode": "e66b",
|
||||
"unicode_decimal": 58987
|
||||
},
|
||||
{
|
||||
"icon_id": "14341931",
|
||||
"name": "database",
|
||||
"font_class": "database",
|
||||
"unicode": "e7b6",
|
||||
"unicode_decimal": 59318
|
||||
},
|
||||
{
|
||||
"icon_id": "15338097",
|
||||
"name": "百分比",
|
||||
"font_class": "baifenbi",
|
||||
"unicode": "e616",
|
||||
"unicode_decimal": 58902
|
||||
},
|
||||
{
|
||||
"icon_id": "15461480",
|
||||
"name": "文件",
|
||||
"font_class": "folder-o",
|
||||
"unicode": "e70f",
|
||||
"unicode_decimal": 59151
|
||||
},
|
||||
{
|
||||
"icon_id": "182207",
|
||||
"name": "上",
|
||||
"font_class": "jinlingyingcaiwangtubiao01",
|
||||
"unicode": "e724",
|
||||
"unicode_decimal": 59172
|
||||
},
|
||||
{
|
||||
"icon_id": "2773923",
|
||||
"name": "下",
|
||||
"font_class": "left-copy",
|
||||
"unicode": "e6af",
|
||||
"unicode_decimal": 59055
|
||||
},
|
||||
{
|
||||
"icon_id": "4653465",
|
||||
"name": "复制",
|
||||
"font_class": "fuzhi1",
|
||||
"unicode": "e626",
|
||||
"unicode_decimal": 58918
|
||||
},
|
||||
{
|
||||
"icon_id": "22378736",
|
||||
"name": "中国地图",
|
||||
"font_class": "zhongguoditu",
|
||||
"unicode": "e738",
|
||||
"unicode_decimal": 59192
|
||||
},
|
||||
{
|
||||
"icon_id": "21338828",
|
||||
"name": "表格",
|
||||
"font_class": "biaoge",
|
||||
"unicode": "e625",
|
||||
"unicode_decimal": 58917
|
||||
},
|
||||
{
|
||||
"icon_id": "13087633",
|
||||
"name": "个性装扮",
|
||||
"font_class": "gexingzhuangban",
|
||||
"unicode": "e646",
|
||||
"unicode_decimal": 58950
|
||||
},
|
||||
{
|
||||
"icon_id": "16466332",
|
||||
"name": "仪表盘-抄表",
|
||||
"font_class": "yibiaopan-chaobiao",
|
||||
"unicode": "e72e",
|
||||
"unicode_decimal": 59182
|
||||
},
|
||||
{
|
||||
"icon_id": "15872322",
|
||||
"name": "南丁格尔玫瑰图",
|
||||
"font_class": "nandinggeermeiguitu",
|
||||
"unicode": "e851",
|
||||
"unicode_decimal": 59473
|
||||
},
|
||||
{
|
||||
"icon_id": "11990084",
|
||||
"name": "展 开 ",
|
||||
"font_class": "zhankai",
|
||||
"unicode": "e631",
|
||||
"unicode_decimal": 58929
|
||||
},
|
||||
{
|
||||
"icon_id": "1990758",
|
||||
"name": "excel",
|
||||
"font_class": "excel",
|
||||
"unicode": "e650",
|
||||
"unicode_decimal": 58960
|
||||
},
|
||||
{
|
||||
"icon_id": "9445573",
|
||||
"name": "保存",
|
||||
"font_class": "baocun",
|
||||
"unicode": "e737",
|
||||
"unicode_decimal": 59191
|
||||
},
|
||||
{
|
||||
"icon_id": "11920154",
|
||||
"name": "关 闭",
|
||||
"font_class": "guanbi",
|
||||
"unicode": "e6c5",
|
||||
"unicode_decimal": 59077
|
||||
},
|
||||
{
|
||||
"icon_id": "16968592",
|
||||
"name": "pdf",
|
||||
"font_class": "pdf",
|
||||
"unicode": "e614",
|
||||
"unicode_decimal": 58900
|
||||
},
|
||||
{
|
||||
"icon_id": "21538118",
|
||||
"name": "复制",
|
||||
"font_class": "fuzhi",
|
||||
"unicode": "e61e",
|
||||
"unicode_decimal": 58910
|
||||
},
|
||||
{
|
||||
"icon_id": "1066041",
|
||||
"name": "020空心饼图",
|
||||
"font_class": "020kongxinbingtu",
|
||||
"unicode": "e78c",
|
||||
"unicode_decimal": 59276
|
||||
},
|
||||
{
|
||||
"icon_id": "2032219",
|
||||
"name": "时间",
|
||||
"font_class": "shijian",
|
||||
"unicode": "e662",
|
||||
"unicode_decimal": 58978
|
||||
},
|
||||
{
|
||||
"icon_id": "2721664",
|
||||
"name": "保存",
|
||||
"font_class": "save",
|
||||
"unicode": "e6f6",
|
||||
"unicode_decimal": 59126
|
||||
},
|
||||
{
|
||||
"icon_id": "4803230",
|
||||
"name": "图片",
|
||||
"font_class": "tupian",
|
||||
"unicode": "e612",
|
||||
"unicode_decimal": 58898
|
||||
},
|
||||
{
|
||||
"icon_id": "5963559",
|
||||
"name": "柱状图",
|
||||
"font_class": "zhuzhuangtu",
|
||||
"unicode": "e691",
|
||||
"unicode_decimal": 59025
|
||||
},
|
||||
{
|
||||
"icon_id": "6642296",
|
||||
"name": "超链接",
|
||||
"font_class": "chaolianjie",
|
||||
"unicode": "e65f",
|
||||
"unicode_decimal": 58975
|
||||
},
|
||||
{
|
||||
"icon_id": "7732218",
|
||||
"name": "文本",
|
||||
"font_class": "ziyuan",
|
||||
"unicode": "e605",
|
||||
"unicode_decimal": 58885
|
||||
},
|
||||
{
|
||||
"icon_id": "9592086",
|
||||
"name": "视频",
|
||||
"font_class": "shipin",
|
||||
"unicode": "ecc1",
|
||||
"unicode_decimal": 60609
|
||||
},
|
||||
{
|
||||
"icon_id": "12252496",
|
||||
"name": "框架",
|
||||
"font_class": "kuangjia",
|
||||
"unicode": "e66a",
|
||||
"unicode_decimal": 58986
|
||||
},
|
||||
{
|
||||
"icon_id": "14717060",
|
||||
"name": "预览",
|
||||
"font_class": "yulan",
|
||||
"unicode": "e728",
|
||||
"unicode_decimal": 59176
|
||||
},
|
||||
{
|
||||
"icon_id": "14728974",
|
||||
"name": "横向文字",
|
||||
"font_class": "hengxiangwenzi",
|
||||
"unicode": "e601",
|
||||
"unicode_decimal": 58881
|
||||
},
|
||||
{
|
||||
"icon_id": "15066193",
|
||||
"name": "图表 _饼图",
|
||||
"font_class": "icon_tubiao_bingtu",
|
||||
"unicode": "e602",
|
||||
"unicode_decimal": 58882
|
||||
},
|
||||
{
|
||||
"icon_id": "17247792",
|
||||
"name": "漏斗图",
|
||||
"font_class": "loudoutu",
|
||||
"unicode": "e6d5",
|
||||
"unicode_decimal": 59093
|
||||
},
|
||||
{
|
||||
"icon_id": "21925168",
|
||||
"name": "图表 折线图",
|
||||
"font_class": "tubiaozhexiantu",
|
||||
"unicode": "e630",
|
||||
"unicode_decimal": 58928
|
||||
},
|
||||
{
|
||||
"icon_id": "22117888",
|
||||
"name": "柱线图",
|
||||
"font_class": "zhuxiantu",
|
||||
"unicode": "e607",
|
||||
"unicode_decimal": 58887
|
||||
},
|
||||
{
|
||||
"icon_id": "22300259",
|
||||
"name": "图片",
|
||||
"font_class": "tupian1",
|
||||
"unicode": "e81d",
|
||||
"unicode_decimal": 59421
|
||||
},
|
||||
{
|
||||
"icon_id": "22398839",
|
||||
"name": "仪表盘",
|
||||
"font_class": "yibiaopan",
|
||||
"unicode": "e706",
|
||||
"unicode_decimal": 59142
|
||||
},
|
||||
{
|
||||
"icon_id": "18774317",
|
||||
"name": "返回",
|
||||
"font_class": "1",
|
||||
"unicode": "e63b",
|
||||
"unicode_decimal": 58939
|
||||
},
|
||||
{
|
||||
"icon_id": "5388367",
|
||||
"name": "下载",
|
||||
"font_class": "xiazai",
|
||||
"unicode": "e639",
|
||||
"unicode_decimal": 58937
|
||||
},
|
||||
{
|
||||
"icon_id": "14245657",
|
||||
"name": "下载",
|
||||
"font_class": "11-04",
|
||||
"unicode": "e784",
|
||||
"unicode_decimal": 59268
|
||||
},
|
||||
{
|
||||
"icon_id": "4933441",
|
||||
"name": "邮箱",
|
||||
"font_class": "youxiang",
|
||||
"unicode": "e769",
|
||||
"unicode_decimal": 59241
|
||||
},
|
||||
{
|
||||
"icon_id": "7140630",
|
||||
"name": "绑定手机",
|
||||
"font_class": "bangdingshouji",
|
||||
"unicode": "e64d",
|
||||
"unicode_decimal": 58957
|
||||
},
|
||||
{
|
||||
"icon_id": "8288872",
|
||||
"name": "手机",
|
||||
"font_class": "shouji",
|
||||
"unicode": "e854",
|
||||
"unicode_decimal": 59476
|
||||
},
|
||||
{
|
||||
"icon_id": "16218102",
|
||||
"name": "52-手机",
|
||||
"font_class": "52-shouji",
|
||||
"unicode": "e871",
|
||||
"unicode_decimal": 59505
|
||||
},
|
||||
{
|
||||
"icon_id": "684484",
|
||||
"name": "home",
|
||||
"font_class": "home",
|
||||
"unicode": "e610",
|
||||
"unicode_decimal": 58896
|
||||
},
|
||||
{
|
||||
"icon_id": "7165766",
|
||||
"name": "home",
|
||||
"font_class": "home2",
|
||||
"unicode": "e61a",
|
||||
"unicode_decimal": 58906
|
||||
},
|
||||
{
|
||||
"icon_id": "981325",
|
||||
"name": "Kafka",
|
||||
"font_class": "Kafka",
|
||||
"unicode": "e65a",
|
||||
"unicode_decimal": 58970
|
||||
},
|
||||
{
|
||||
"icon_id": "4772840",
|
||||
"name": "数据接入—Kafka集群",
|
||||
"font_class": "shujujieruKafkajiqun",
|
||||
"unicode": "e64f",
|
||||
"unicode_decimal": 58959
|
||||
},
|
||||
{
|
||||
"icon_id": "8691927",
|
||||
"name": "kafka",
|
||||
"font_class": "kafka",
|
||||
"unicode": "e6f2",
|
||||
"unicode_decimal": 59122
|
||||
},
|
||||
{
|
||||
"icon_id": "13140799",
|
||||
"name": "elasticsearch-Elasticsearch",
|
||||
"font_class": "elasticsearch-Elasticsearch",
|
||||
"unicode": "e853",
|
||||
"unicode_decimal": 59475
|
||||
},
|
||||
{
|
||||
"icon_id": "15378137",
|
||||
"name": "apachekafka",
|
||||
"font_class": "apachekafka",
|
||||
"unicode": "eb3f",
|
||||
"unicode_decimal": 60223
|
||||
},
|
||||
{
|
||||
"icon_id": "15378319",
|
||||
"name": "elasticsearch",
|
||||
"font_class": "elasticsearch",
|
||||
"unicode": "eb85",
|
||||
"unicode_decimal": 60293
|
||||
},
|
||||
{
|
||||
"icon_id": "3253279",
|
||||
"name": "问题反馈",
|
||||
"font_class": "wentifankui",
|
||||
"unicode": "e8d1",
|
||||
"unicode_decimal": 59601
|
||||
},
|
||||
{
|
||||
"icon_id": "3922909",
|
||||
"name": "问题反馈",
|
||||
"font_class": "wentifankui1",
|
||||
"unicode": "e70e",
|
||||
"unicode_decimal": 59150
|
||||
},
|
||||
{
|
||||
"icon_id": "13177275",
|
||||
"name": "问题反馈",
|
||||
"font_class": "wentifankui2",
|
||||
"unicode": "e643",
|
||||
"unicode_decimal": 58947
|
||||
},
|
||||
{
|
||||
"icon_id": "5583350",
|
||||
"name": "alikafka 消息队列Kafka",
|
||||
"font_class": "alikafkaxiaoxiduilieKafka",
|
||||
"unicode": "e8a4",
|
||||
"unicode_decimal": 59556
|
||||
},
|
||||
{
|
||||
"icon_id": "11033199",
|
||||
"name": "项目查询-查看设备",
|
||||
"font_class": "xiangmuchaxun-chakanshebei",
|
||||
"unicode": "e682",
|
||||
"unicode_decimal": 59010
|
||||
},
|
||||
{
|
||||
"icon_id": "13543355",
|
||||
"name": "elasticsearch Elasticsearch",
|
||||
"font_class": "elasticsearchElasticsearch",
|
||||
"unicode": "e6a1",
|
||||
"unicode_decimal": 59041
|
||||
},
|
||||
{
|
||||
"icon_id": "1308482",
|
||||
"name": "511统计_树图",
|
||||
"font_class": "511tongji_shutu",
|
||||
"unicode": "e64a",
|
||||
"unicode_decimal": 58954
|
||||
},
|
||||
{
|
||||
"icon_id": "8084555",
|
||||
"name": "分享",
|
||||
"font_class": "fenxiang1",
|
||||
"unicode": "e615",
|
||||
"unicode_decimal": 58901
|
||||
},
|
||||
{
|
||||
"icon_id": "9148583",
|
||||
"name": "分享",
|
||||
"font_class": "fenxiang2",
|
||||
"unicode": "e60f",
|
||||
"unicode_decimal": 58895
|
||||
},
|
||||
{
|
||||
"icon_id": "9810108",
|
||||
"name": "分享",
|
||||
"font_class": "fenxiang_2",
|
||||
"unicode": "e600",
|
||||
"unicode_decimal": 58880
|
||||
},
|
||||
{
|
||||
"icon_id": "10064575",
|
||||
"name": "告警-紧急",
|
||||
"font_class": "NMStubiao-",
|
||||
"unicode": "e628",
|
||||
"unicode_decimal": 58920
|
||||
},
|
||||
{
|
||||
"icon_id": "13186637",
|
||||
"name": "完成安全事件",
|
||||
"font_class": "wanchenganquanshijian",
|
||||
"unicode": "e68a",
|
||||
"unicode_decimal": 59018
|
||||
},
|
||||
{
|
||||
"icon_id": "14772380",
|
||||
"name": "eventbridge 消息事件总线",
|
||||
"font_class": "eventbridgexiaoxishijianzongxian",
|
||||
"unicode": "e74d",
|
||||
"unicode_decimal": 59213
|
||||
},
|
||||
{
|
||||
"icon_id": "16852593",
|
||||
"name": "树",
|
||||
"font_class": "shu",
|
||||
"unicode": "e629",
|
||||
"unicode_decimal": 58921
|
||||
},
|
||||
{
|
||||
"icon_id": "16800949",
|
||||
"name": "设备关机",
|
||||
"font_class": "shebeiguanji",
|
||||
"unicode": "e61d",
|
||||
"unicode_decimal": 58909
|
||||
},
|
||||
{
|
||||
"icon_id": "1111782",
|
||||
"name": "好房拓 4.0.0 iconfont_短信",
|
||||
"font_class": "haofangtuo400iconfontduanxin",
|
||||
"unicode": "e6d8",
|
||||
"unicode_decimal": 59096
|
||||
},
|
||||
{
|
||||
"icon_id": "3703026",
|
||||
"name": "业务参数",
|
||||
"font_class": "navicon-ywcs",
|
||||
"unicode": "e661",
|
||||
"unicode_decimal": 58977
|
||||
},
|
||||
{
|
||||
"icon_id": "3851361",
|
||||
"name": "列表",
|
||||
"font_class": "liebiao",
|
||||
"unicode": "e660",
|
||||
"unicode_decimal": 58976
|
||||
},
|
||||
{
|
||||
"icon_id": "3858850",
|
||||
"name": "编辑",
|
||||
"font_class": "bianji",
|
||||
"unicode": "e60c",
|
||||
"unicode_decimal": 58892
|
||||
},
|
||||
{
|
||||
"icon_id": "5203312",
|
||||
"name": "邮件",
|
||||
"font_class": "youjian",
|
||||
"unicode": "e63a",
|
||||
"unicode_decimal": 58938
|
||||
},
|
||||
{
|
||||
"icon_id": "5321887",
|
||||
"name": "社交钉钉",
|
||||
"font_class": "shejiaodingding",
|
||||
"unicode": "e678",
|
||||
"unicode_decimal": 59000
|
||||
},
|
||||
{
|
||||
"icon_id": "6627754",
|
||||
"name": "字典管理",
|
||||
"font_class": "zidianguanli",
|
||||
"unicode": "e624",
|
||||
"unicode_decimal": 58916
|
||||
},
|
||||
{
|
||||
"icon_id": "7092362",
|
||||
"name": "图表",
|
||||
"font_class": "tubiao",
|
||||
"unicode": "e73f",
|
||||
"unicode_decimal": 59199
|
||||
},
|
||||
{
|
||||
"icon_id": "9307592",
|
||||
"name": "钉钉",
|
||||
"font_class": "dingding",
|
||||
"unicode": "e690",
|
||||
"unicode_decimal": 59024
|
||||
},
|
||||
{
|
||||
"icon_id": "10392609",
|
||||
"name": "短信",
|
||||
"font_class": "duanxin",
|
||||
"unicode": "e603",
|
||||
"unicode_decimal": 58883
|
||||
},
|
||||
{
|
||||
"icon_id": "13592918",
|
||||
"name": "directmail 邮件推送",
|
||||
"font_class": "directmailyoujiantuisong",
|
||||
"unicode": "e714",
|
||||
"unicode_decimal": 59156
|
||||
},
|
||||
{
|
||||
"icon_id": "16589013",
|
||||
"name": "设备设施",
|
||||
"font_class": "shebeisheshi",
|
||||
"unicode": "e61c",
|
||||
"unicode_decimal": 58908
|
||||
},
|
||||
{
|
||||
"icon_id": "6249282",
|
||||
"name": "通知",
|
||||
"font_class": "tongzhi",
|
||||
"unicode": "e606",
|
||||
"unicode_decimal": 58886
|
||||
},
|
||||
{
|
||||
"icon_id": "7450630",
|
||||
"name": "日志",
|
||||
"font_class": "rizhi",
|
||||
"unicode": "e663",
|
||||
"unicode_decimal": 58979
|
||||
},
|
||||
{
|
||||
"icon_id": "11103449",
|
||||
"name": "触发器配置-灰",
|
||||
"font_class": "chufaqipeizhi-hui",
|
||||
"unicode": "e689",
|
||||
"unicode_decimal": 59017
|
||||
},
|
||||
{
|
||||
"icon_id": "17566612",
|
||||
"name": "vcs 视觉计算服务",
|
||||
"font_class": "vcsshijuejisuanfuwu",
|
||||
"unicode": "e759",
|
||||
"unicode_decimal": 59225
|
||||
},
|
||||
{
|
||||
"icon_id": "17755673",
|
||||
"name": "设备",
|
||||
"font_class": "bar_icon_shebei",
|
||||
"unicode": "e60a",
|
||||
"unicode_decimal": 58890
|
||||
},
|
||||
{
|
||||
"icon_id": "1327507",
|
||||
"name": "user-before",
|
||||
"font_class": "user-before",
|
||||
"unicode": "e617",
|
||||
"unicode_decimal": 58903
|
||||
},
|
||||
{
|
||||
"icon_id": "12353050",
|
||||
"name": "科目维护图标",
|
||||
"font_class": "kemuweihutubiao",
|
||||
"unicode": "e60b",
|
||||
"unicode_decimal": 58891
|
||||
},
|
||||
{
|
||||
"icon_id": "2152435",
|
||||
"name": "会计科目维护",
|
||||
"font_class": "accounting-subjects",
|
||||
"unicode": "e677",
|
||||
"unicode_decimal": 58999
|
||||
},
|
||||
{
|
||||
"icon_id": "7553622",
|
||||
"name": "成本查询",
|
||||
"font_class": "RectangleCopy",
|
||||
"unicode": "e6dd",
|
||||
"unicode_decimal": 59101
|
||||
},
|
||||
{
|
||||
"icon_id": "12453907",
|
||||
"name": "成本数据管理",
|
||||
"font_class": "chengbenshujuguanli",
|
||||
"unicode": "e6c7",
|
||||
"unicode_decimal": 59079
|
||||
},
|
||||
{
|
||||
"icon_id": "13745309",
|
||||
"name": "基本数据",
|
||||
"font_class": "jibenshuju",
|
||||
"unicode": "e71d",
|
||||
"unicode_decimal": 59165
|
||||
},
|
||||
{
|
||||
"icon_id": "7193675",
|
||||
"name": "B-省市区",
|
||||
"font_class": "B-shengshiqu",
|
||||
"unicode": "e72d",
|
||||
"unicode_decimal": 59181
|
||||
},
|
||||
{
|
||||
"icon_id": "16065650",
|
||||
"name": "组织机构",
|
||||
"font_class": "zuzhijigou",
|
||||
"unicode": "e66e",
|
||||
"unicode_decimal": 58990
|
||||
},
|
||||
{
|
||||
"icon_id": "10885920",
|
||||
"name": "按钮",
|
||||
"font_class": "anniu",
|
||||
"unicode": "e8c5",
|
||||
"unicode_decimal": 59589
|
||||
},
|
||||
{
|
||||
"icon_id": "7588087",
|
||||
"name": "菜单",
|
||||
"font_class": "caidan2",
|
||||
"unicode": "e61b",
|
||||
"unicode_decimal": 58907
|
||||
},
|
||||
{
|
||||
"icon_id": "343234",
|
||||
"name": "问号",
|
||||
"font_class": "wenhao",
|
||||
"unicode": "e67f",
|
||||
"unicode_decimal": 59007
|
||||
},
|
||||
{
|
||||
"icon_id": "485800",
|
||||
"name": "垃圾桶",
|
||||
"font_class": "lajitong",
|
||||
"unicode": "e636",
|
||||
"unicode_decimal": 58934
|
||||
},
|
||||
{
|
||||
"icon_id": "524416",
|
||||
"name": "重置密码",
|
||||
"font_class": "zhongzhimima",
|
||||
"unicode": "e620",
|
||||
"unicode_decimal": 58912
|
||||
},
|
||||
{
|
||||
"icon_id": "666885",
|
||||
"name": "设置",
|
||||
"font_class": "shezhi",
|
||||
"unicode": "e68f",
|
||||
"unicode_decimal": 59023
|
||||
},
|
||||
{
|
||||
"icon_id": "666902",
|
||||
"name": "中转",
|
||||
"font_class": "zhongzhuan",
|
||||
"unicode": "e69b",
|
||||
"unicode_decimal": 59035
|
||||
},
|
||||
{
|
||||
"icon_id": "1226780",
|
||||
"name": "add",
|
||||
"font_class": "add",
|
||||
"unicode": "e6b9",
|
||||
"unicode_decimal": 59065
|
||||
},
|
||||
{
|
||||
"icon_id": "1226781",
|
||||
"name": "minus",
|
||||
"font_class": "minus",
|
||||
"unicode": "e6ba",
|
||||
"unicode_decimal": 59066
|
||||
},
|
||||
{
|
||||
"icon_id": "1388130",
|
||||
"name": "password",
|
||||
"font_class": "password",
|
||||
"unicode": "e622",
|
||||
"unicode_decimal": 58914
|
||||
},
|
||||
{
|
||||
"icon_id": "1824319",
|
||||
"name": "用户",
|
||||
"font_class": "yonghu",
|
||||
"unicode": "e604",
|
||||
"unicode_decimal": 58884
|
||||
},
|
||||
{
|
||||
"icon_id": "2881221",
|
||||
"name": "权限",
|
||||
"font_class": "quanxian",
|
||||
"unicode": "e633",
|
||||
"unicode_decimal": 58931
|
||||
},
|
||||
{
|
||||
"icon_id": "3280236",
|
||||
"name": "角色",
|
||||
"font_class": "jiaose1",
|
||||
"unicode": "e64c",
|
||||
"unicode_decimal": 58956
|
||||
},
|
||||
{
|
||||
"icon_id": "3299246",
|
||||
"name": "字典",
|
||||
"font_class": "zidian",
|
||||
"unicode": "e716",
|
||||
"unicode_decimal": 59158
|
||||
},
|
||||
{
|
||||
"icon_id": "4374688",
|
||||
"name": "参数设置",
|
||||
"font_class": "cssz",
|
||||
"unicode": "e672",
|
||||
"unicode_decimal": 58994
|
||||
},
|
||||
{
|
||||
"icon_id": "4880425",
|
||||
"name": "编辑",
|
||||
"font_class": "bianji1",
|
||||
"unicode": "e642",
|
||||
"unicode_decimal": 58946
|
||||
},
|
||||
{
|
||||
"icon_id": "5472800",
|
||||
"name": "用户权限",
|
||||
"font_class": "dfzq-",
|
||||
"unicode": "e609",
|
||||
"unicode_decimal": 58889
|
||||
},
|
||||
{
|
||||
"icon_id": "6693043",
|
||||
"name": "分享",
|
||||
"font_class": "fenxiang",
|
||||
"unicode": "e641",
|
||||
"unicode_decimal": 58945
|
||||
},
|
||||
{
|
||||
"icon_id": "10213484",
|
||||
"name": "授权",
|
||||
"font_class": "shouquan1",
|
||||
"unicode": "e634",
|
||||
"unicode_decimal": 58932
|
||||
},
|
||||
{
|
||||
"icon_id": "13416544",
|
||||
"name": "左箭头",
|
||||
"font_class": "jiantou",
|
||||
"unicode": "e653",
|
||||
"unicode_decimal": 58963
|
||||
},
|
||||
{
|
||||
"icon_id": "13416596",
|
||||
"name": "左箭头",
|
||||
"font_class": "jiantou-copy-copy",
|
||||
"unicode": "e654",
|
||||
"unicode_decimal": 58964
|
||||
}
|
||||
]
|
||||
}
|
BIN
src/assets/iconfont/iconfont.ttf
Normal file
BIN
src/assets/iconfont/iconfont.woff
Normal file
BIN
src/assets/iconfont/iconfont.woff2
Normal file
BIN
src/assets/images/404/404.png
Normal file
After Width: | Height: | Size: 96 KiB |
BIN
src/assets/images/404/404_cloud.png
Normal file
After Width: | Height: | Size: 4.7 KiB |
BIN
src/assets/images/apache.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
src/assets/images/banner1.png
Normal file
After Width: | Height: | Size: 181 KiB |
BIN
src/assets/images/bianzu.png
Normal file
After Width: | Height: | Size: 859 B |
BIN
src/assets/images/charts.jpg
Normal file
After Width: | Height: | Size: 221 KiB |
BIN
src/assets/images/close.png
Normal file
After Width: | Height: | Size: 297 B |
BIN
src/assets/images/editor.png
Normal file
After Width: | Height: | Size: 727 B |
BIN
src/assets/images/home-logo.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
src/assets/images/login.jpg
Normal file
After Width: | Height: | Size: 163 KiB |
BIN
src/assets/images/login.png
Normal file
After Width: | Height: | Size: 2.0 MiB |
BIN
src/assets/images/qrcode.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
src/assets/images/rightIcon.png
Normal file
After Width: | Height: | Size: 821 B |
BIN
src/assets/images/tiaoxingma.png
Normal file
After Width: | Height: | Size: 940 B |
BIN
src/assets/images/user/appro.png
Normal file
After Width: | Height: | Size: 778 B |
BIN
src/assets/images/user/appro2.png
Normal file
After Width: | Height: | Size: 300 KiB |
BIN
src/assets/images/user/avatar.gif
Normal file
After Width: | Height: | Size: 6.2 KiB |
103310
src/assets/map/china.json
Normal file
14357
src/assets/map/上海市.json
Normal file
21493
src/assets/map/云南省.json
Normal file
13685
src/assets/map/内蒙古自治区.json
Normal file
17469
src/assets/map/北京市.json
Normal file
761
src/assets/map/台湾省.json
Normal file
@ -0,0 +1,761 @@
|
||||
{
|
||||
"type": "FeatureCollection",
|
||||
"features": [
|
||||
{
|
||||
"type": "Feature",
|
||||
"properties": {
|
||||
"adcode": 710000,
|
||||
"name": "台湾省",
|
||||
"center": [
|
||||
121.509062,
|
||||
25.044332
|
||||
],
|
||||
"centroid": [
|
||||
120.971485,
|
||||
23.749452
|
||||
],
|
||||
"childrenNum": 0,
|
||||
"level": "province",
|
||||
"acroutes": [
|
||||
100000
|
||||
],
|
||||
"parent": {
|
||||
"adcode": 100000
|
||||
}
|
||||
},
|
||||
"geometry": {
|
||||
"type": "MultiPolygon",
|
||||
"coordinates": [
|
||||
[
|
||||
[
|
||||
[
|
||||
120.443558,
|
||||
22.441245
|
||||
],
|
||||
[
|
||||
120.517584,
|
||||
22.408536
|
||||
],
|
||||
[
|
||||
120.569903,
|
||||
22.361728
|
||||
],
|
||||
[
|
||||
120.640505,
|
||||
22.241347
|
||||
],
|
||||
[
|
||||
120.659209,
|
||||
22.15432
|
||||
],
|
||||
[
|
||||
120.662001,
|
||||
22.066983
|
||||
],
|
||||
[
|
||||
120.651464,
|
||||
22.033165
|
||||
],
|
||||
[
|
||||
120.667691,
|
||||
21.983168
|
||||
],
|
||||
[
|
||||
120.70157,
|
||||
21.927065
|
||||
],
|
||||
[
|
||||
120.743246,
|
||||
21.915569
|
||||
],
|
||||
[
|
||||
120.78155,
|
||||
21.923957
|
||||
],
|
||||
[
|
||||
120.85468,
|
||||
21.883333
|
||||
],
|
||||
[
|
||||
120.87291,
|
||||
21.897387
|
||||
],
|
||||
[
|
||||
120.866482,
|
||||
21.98436
|
||||
],
|
||||
[
|
||||
120.907315,
|
||||
22.033208
|
||||
],
|
||||
[
|
||||
120.904154,
|
||||
22.119757
|
||||
],
|
||||
[
|
||||
120.914955,
|
||||
22.302718
|
||||
],
|
||||
[
|
||||
120.981658,
|
||||
22.528305
|
||||
],
|
||||
[
|
||||
121.015009,
|
||||
22.584168
|
||||
],
|
||||
[
|
||||
121.033292,
|
||||
22.650725
|
||||
],
|
||||
[
|
||||
121.078498,
|
||||
22.669656
|
||||
],
|
||||
[
|
||||
121.170544,
|
||||
22.723133
|
||||
],
|
||||
[
|
||||
121.210481,
|
||||
22.770665
|
||||
],
|
||||
[
|
||||
121.237931,
|
||||
22.836327
|
||||
],
|
||||
[
|
||||
121.324708,
|
||||
22.945666
|
||||
],
|
||||
[
|
||||
121.354687,
|
||||
23.01006
|
||||
],
|
||||
[
|
||||
121.370388,
|
||||
23.084347
|
||||
],
|
||||
[
|
||||
121.409535,
|
||||
23.102669
|
||||
],
|
||||
[
|
||||
121.430294,
|
||||
23.137196
|
||||
],
|
||||
[
|
||||
121.415015,
|
||||
23.195973
|
||||
],
|
||||
[
|
||||
121.440358,
|
||||
23.272096
|
||||
],
|
||||
[
|
||||
121.479558,
|
||||
23.3223
|
||||
],
|
||||
[
|
||||
121.497788,
|
||||
23.419789
|
||||
],
|
||||
[
|
||||
121.521497,
|
||||
23.483198
|
||||
],
|
||||
[
|
||||
121.523078,
|
||||
23.538708
|
||||
],
|
||||
[
|
||||
121.587778,
|
||||
23.76102
|
||||
],
|
||||
[
|
||||
121.621604,
|
||||
23.92075
|
||||
],
|
||||
[
|
||||
121.659381,
|
||||
24.006893
|
||||
],
|
||||
[
|
||||
121.639992,
|
||||
24.064276
|
||||
],
|
||||
[
|
||||
121.643838,
|
||||
24.097713
|
||||
],
|
||||
[
|
||||
121.678085,
|
||||
24.133906
|
||||
],
|
||||
[
|
||||
121.689044,
|
||||
24.174401
|
||||
],
|
||||
[
|
||||
121.809172,
|
||||
24.339055
|
||||
],
|
||||
[
|
||||
121.826717,
|
||||
24.423579
|
||||
],
|
||||
[
|
||||
121.867498,
|
||||
24.478978
|
||||
],
|
||||
[
|
||||
121.885464,
|
||||
24.529677
|
||||
],
|
||||
[
|
||||
121.892524,
|
||||
24.617912
|
||||
],
|
||||
[
|
||||
121.862598,
|
||||
24.671515
|
||||
],
|
||||
[
|
||||
121.837993,
|
||||
24.76015
|
||||
],
|
||||
[
|
||||
121.845053,
|
||||
24.836269
|
||||
],
|
||||
[
|
||||
121.932883,
|
||||
24.938645
|
||||
],
|
||||
[
|
||||
122.012178,
|
||||
25.001469
|
||||
],
|
||||
[
|
||||
121.980776,
|
||||
25.03079
|
||||
],
|
||||
[
|
||||
121.947425,
|
||||
25.031955
|
||||
],
|
||||
[
|
||||
121.917077,
|
||||
25.137908
|
||||
],
|
||||
[
|
||||
121.842155,
|
||||
25.135332
|
||||
],
|
||||
[
|
||||
121.782407,
|
||||
25.160425
|
||||
],
|
||||
[
|
||||
121.750531,
|
||||
25.160716
|
||||
],
|
||||
[
|
||||
121.707327,
|
||||
25.191493
|
||||
],
|
||||
[
|
||||
121.700319,
|
||||
25.226913
|
||||
],
|
||||
[
|
||||
121.655324,
|
||||
25.241859
|
||||
],
|
||||
[
|
||||
121.623026,
|
||||
25.294694
|
||||
],
|
||||
[
|
||||
121.584986,
|
||||
25.308926
|
||||
],
|
||||
[
|
||||
121.535038,
|
||||
25.307515
|
||||
],
|
||||
[
|
||||
121.444415,
|
||||
25.270624
|
||||
],
|
||||
[
|
||||
121.413487,
|
||||
25.238912
|
||||
],
|
||||
[
|
||||
121.371864,
|
||||
25.159885
|
||||
],
|
||||
[
|
||||
121.319281,
|
||||
25.140691
|
||||
],
|
||||
[
|
||||
121.209322,
|
||||
25.127104
|
||||
],
|
||||
[
|
||||
121.133135,
|
||||
25.078728
|
||||
],
|
||||
[
|
||||
121.102102,
|
||||
25.075153
|
||||
],
|
||||
[
|
||||
121.024704,
|
||||
25.040479
|
||||
],
|
||||
[
|
||||
121.009688,
|
||||
24.993649
|
||||
],
|
||||
[
|
||||
120.960899,
|
||||
24.940227
|
||||
],
|
||||
[
|
||||
120.908475,
|
||||
24.852012
|
||||
],
|
||||
[
|
||||
120.892299,
|
||||
24.767526
|
||||
],
|
||||
[
|
||||
120.823753,
|
||||
24.688321
|
||||
],
|
||||
[
|
||||
120.762371,
|
||||
24.658335
|
||||
],
|
||||
[
|
||||
120.688661,
|
||||
24.600678
|
||||
],
|
||||
[
|
||||
120.64277,
|
||||
24.490172
|
||||
],
|
||||
[
|
||||
120.589187,
|
||||
24.432354
|
||||
],
|
||||
[
|
||||
120.546299,
|
||||
24.370413
|
||||
],
|
||||
[
|
||||
120.521009,
|
||||
24.312038
|
||||
],
|
||||
[
|
||||
120.470534,
|
||||
24.24259
|
||||
],
|
||||
[
|
||||
120.451461,
|
||||
24.182691
|
||||
],
|
||||
[
|
||||
120.392029,
|
||||
24.11824
|
||||
],
|
||||
[
|
||||
120.316158,
|
||||
23.984881
|
||||
],
|
||||
[
|
||||
120.278276,
|
||||
23.927798
|
||||
],
|
||||
[
|
||||
120.245768,
|
||||
23.840553
|
||||
],
|
||||
[
|
||||
120.175377,
|
||||
23.807385
|
||||
],
|
||||
[
|
||||
120.102773,
|
||||
23.700981
|
||||
],
|
||||
[
|
||||
120.094817,
|
||||
23.587466
|
||||
],
|
||||
[
|
||||
120.121741,
|
||||
23.504664
|
||||
],
|
||||
[
|
||||
120.107831,
|
||||
23.341264
|
||||
],
|
||||
[
|
||||
120.081434,
|
||||
23.29191
|
||||
],
|
||||
[
|
||||
120.018947,
|
||||
23.073115
|
||||
],
|
||||
[
|
||||
120.029537,
|
||||
23.048623
|
||||
],
|
||||
[
|
||||
120.131382,
|
||||
23.002118
|
||||
],
|
||||
[
|
||||
120.149138,
|
||||
22.896715
|
||||
],
|
||||
[
|
||||
120.200403,
|
||||
22.721101
|
||||
],
|
||||
[
|
||||
120.274272,
|
||||
22.560181
|
||||
],
|
||||
[
|
||||
120.297191,
|
||||
22.531315
|
||||
],
|
||||
[
|
||||
120.443558,
|
||||
22.441245
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
[
|
||||
124.542984,
|
||||
25.903911
|
||||
],
|
||||
[
|
||||
124.586346,
|
||||
25.913777
|
||||
],
|
||||
[
|
||||
124.572805,
|
||||
25.93974
|
||||
],
|
||||
[
|
||||
124.541825,
|
||||
25.931031
|
||||
],
|
||||
[
|
||||
124.542984,
|
||||
25.903911
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
[
|
||||
123.445286,
|
||||
25.725966
|
||||
],
|
||||
[
|
||||
123.472104,
|
||||
25.713024
|
||||
],
|
||||
[
|
||||
123.508933,
|
||||
25.723237
|
||||
],
|
||||
[
|
||||
123.514834,
|
||||
25.751226
|
||||
],
|
||||
[
|
||||
123.483063,
|
||||
25.768587
|
||||
],
|
||||
[
|
||||
123.444496,
|
||||
25.746514
|
||||
],
|
||||
[
|
||||
123.445286,
|
||||
25.725966
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
[
|
||||
119.64597,
|
||||
23.55091
|
||||
],
|
||||
[
|
||||
119.701081,
|
||||
23.550657
|
||||
],
|
||||
[
|
||||
119.678057,
|
||||
23.600041
|
||||
],
|
||||
[
|
||||
119.610089,
|
||||
23.603953
|
||||
],
|
||||
[
|
||||
119.594388,
|
||||
23.577245
|
||||
],
|
||||
[
|
||||
119.566306,
|
||||
23.584732
|
||||
],
|
||||
[
|
||||
119.562565,
|
||||
23.530377
|
||||
],
|
||||
[
|
||||
119.573788,
|
||||
23.505885
|
||||
],
|
||||
[
|
||||
119.609141,
|
||||
23.503864
|
||||
],
|
||||
[
|
||||
119.64597,
|
||||
23.55091
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
[
|
||||
123.667207,
|
||||
25.914066
|
||||
],
|
||||
[
|
||||
123.707092,
|
||||
25.916873
|
||||
],
|
||||
[
|
||||
123.678008,
|
||||
25.938667
|
||||
],
|
||||
[
|
||||
123.667207,
|
||||
25.914066
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
[
|
||||
119.506031,
|
||||
23.625567
|
||||
],
|
||||
[
|
||||
119.505241,
|
||||
23.575814
|
||||
],
|
||||
[
|
||||
119.472416,
|
||||
23.557136
|
||||
],
|
||||
[
|
||||
119.523207,
|
||||
23.563699
|
||||
],
|
||||
[
|
||||
119.525578,
|
||||
23.624895
|
||||
],
|
||||
[
|
||||
119.506031,
|
||||
23.625567
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
[
|
||||
119.49739,
|
||||
23.386683
|
||||
],
|
||||
[
|
||||
119.495125,
|
||||
23.350156
|
||||
],
|
||||
[
|
||||
119.516885,
|
||||
23.349903
|
||||
],
|
||||
[
|
||||
119.49739,
|
||||
23.386683
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
[
|
||||
119.557454,
|
||||
23.666474
|
||||
],
|
||||
[
|
||||
119.604083,
|
||||
23.616989
|
||||
],
|
||||
[
|
||||
119.615516,
|
||||
23.660925
|
||||
],
|
||||
[
|
||||
119.586485,
|
||||
23.675974
|
||||
],
|
||||
[
|
||||
119.557454,
|
||||
23.666474
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
[
|
||||
121.46823,
|
||||
22.676644
|
||||
],
|
||||
[
|
||||
121.476502,
|
||||
22.64166
|
||||
],
|
||||
[
|
||||
121.513541,
|
||||
22.631833
|
||||
],
|
||||
[
|
||||
121.5147,
|
||||
22.67639
|
||||
],
|
||||
[
|
||||
121.46823,
|
||||
22.676644
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
[
|
||||
121.510538,
|
||||
22.087185
|
||||
],
|
||||
[
|
||||
121.507693,
|
||||
22.048523
|
||||
],
|
||||
[
|
||||
121.534089,
|
||||
22.022146
|
||||
],
|
||||
[
|
||||
121.594522,
|
||||
21.995382
|
||||
],
|
||||
[
|
||||
121.604586,
|
||||
22.022699
|
||||
],
|
||||
[
|
||||
121.575028,
|
||||
22.037122
|
||||
],
|
||||
[
|
||||
121.575607,
|
||||
22.084421
|
||||
],
|
||||
[
|
||||
121.510538,
|
||||
22.087185
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
[
|
||||
122.097533,
|
||||
25.500168
|
||||
],
|
||||
[
|
||||
122.093581,
|
||||
25.47183
|
||||
],
|
||||
[
|
||||
122.124825,
|
||||
25.475932
|
||||
],
|
||||
[
|
||||
122.097533,
|
||||
25.500168
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
[
|
||||
119.421467,
|
||||
23.216684
|
||||
],
|
||||
[
|
||||
119.421309,
|
||||
23.18935
|
||||
],
|
||||
[
|
||||
119.453396,
|
||||
23.217697
|
||||
],
|
||||
[
|
||||
119.421467,
|
||||
23.216684
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
[
|
||||
120.355042,
|
||||
22.327259
|
||||
],
|
||||
[
|
||||
120.395454,
|
||||
22.342287
|
||||
],
|
||||
[
|
||||
120.383072,
|
||||
22.355573
|
||||
],
|
||||
[
|
||||
120.355042,
|
||||
22.327259
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
25715
src/assets/map/吉林省.json
Normal file
28807
src/assets/map/四川省.json
Normal file
12138
src/assets/map/天津市.json
Normal file
8611
src/assets/map/宁夏回族自治区.json
Normal file
22053
src/assets/map/安徽省.json
Normal file
29293
src/assets/map/山东省.json
Normal file
10503
src/assets/map/山西省.json
Normal file
33743
src/assets/map/广东省.json
Normal file
29257
src/assets/map/广西壮族自治区.json
Normal file
21513
src/assets/map/新疆维吾尔自治区.json
Normal file
16899
src/assets/map/江苏省.json
Normal file
21187
src/assets/map/江西省.json
Normal file
12711
src/assets/map/河北省.json
Normal file
26701
src/assets/map/河南省.json
Normal file
6063
src/assets/map/海南省.json
Normal file
27151
src/assets/map/湖北省.json
Normal file
30605
src/assets/map/湖南省.json
Normal file
2197
src/assets/map/澳门特别行政区.json
Normal file
18429
src/assets/map/甘肃省.json
Normal file
20143
src/assets/map/福建省.json
Normal file
24575
src/assets/map/西藏自治区.json
Normal file
22711
src/assets/map/贵州省.json
Normal file
28197
src/assets/map/辽宁省.json
Normal file
27761
src/assets/map/重庆市.json
Normal file
12429
src/assets/map/陕西省.json
Normal file
17541
src/assets/map/青海省.json
Normal file
23417
src/assets/map/香港特别行政区.json
Normal file
25543
src/assets/map/黑龙江省.json
Normal file
97
src/assets/styles/anji.scss
Normal file
@ -0,0 +1,97 @@
|
||||
.anji-card {
|
||||
margin-bottom: 5px;
|
||||
box-sizing: border-box;
|
||||
padding: 0;
|
||||
color: rgba(0, 0, 0, 0.65);
|
||||
font-size: 14px;
|
||||
font-variant: tabular-nums;
|
||||
line-height: 1.5;
|
||||
list-style: none;
|
||||
font-feature-settings: "tnum";
|
||||
position: relative;
|
||||
background: #fff;
|
||||
border-radius: 2px;
|
||||
transition: all 0.3s;
|
||||
|
||||
.card-head {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
box-sizing: border-box;
|
||||
min-height: 35px;
|
||||
padding: 0 24px;
|
||||
color: rgba(0, 0, 0, 0.85);
|
||||
font-weight: 500;
|
||||
font-size: 16px;
|
||||
background: transparent;
|
||||
border-bottom: 1px solid #e8e8e8;
|
||||
border-radius: 2px 2px 0 0;
|
||||
zoom: 1;
|
||||
|
||||
.main-card-header-button {
|
||||
position: absolute;
|
||||
right: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
.card-body {
|
||||
padding: 24px;
|
||||
zoom: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.el-form-item .el-form-item__label {
|
||||
line-height: 28px;
|
||||
}
|
||||
.el-form-item__content {
|
||||
line-height: 28px;
|
||||
}
|
||||
.el-input__icon {
|
||||
line-height: 28px;
|
||||
}
|
||||
|
||||
.el-input--suffix .el-input__inner {
|
||||
height: 28px;
|
||||
line-height: 28px;
|
||||
}
|
||||
.el-input .el-input__inner {
|
||||
height: 28px;
|
||||
line-height: 28px;
|
||||
}
|
||||
.el-button {
|
||||
padding: 7px 15px;
|
||||
font-size: 12px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
.el-dropdown-menu__item {
|
||||
min-width: 80px;
|
||||
max-width: 110px;
|
||||
.el-button--text {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
.el-dropdown-menu__item:focus,
|
||||
.el-dropdown-menu__item:not(.is-disabled):hover {
|
||||
background: none !important;
|
||||
}
|
||||
|
||||
.el-table td {
|
||||
padding: 6px 0;
|
||||
}
|
||||
|
||||
@keyframes turn {
|
||||
0% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
}
|
||||
25% {
|
||||
-webkit-transform: rotate(90deg);
|
||||
}
|
||||
50% {
|
||||
-webkit-transform: rotate(180deg);
|
||||
}
|
||||
75% {
|
||||
-webkit-transform: rotate(270deg);
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: rotate(360deg);
|
||||
}
|
||||
}
|