Browse Source

7.12

master
xiaohei 1 year ago
parent
commit
d6efb34005
670 changed files with 186394 additions and 2 deletions
  1. +18
    -0
      .babelrc
  2. +9
    -0
      .editorconfig
  3. +17
    -0
      .gitignore
  4. +10
    -0
      .postcssrc.js
  5. +29
    -2
      README.md
  6. +41
    -0
      build/build.js
  7. +54
    -0
      build/check-versions.js
  8. BIN
      build/logo.png
  9. +102
    -0
      build/utils.js
  10. +22
    -0
      build/vue-loader.conf.js
  11. +106
    -0
      build/webpack.base.conf.js
  12. +96
    -0
      build/webpack.dev.conf.js
  13. +140
    -0
      build/webpack.prod.conf.js
  14. +7
    -0
      config/dev.env.js
  15. +60
    -0
      config/index.js
  16. +4
    -0
      config/prod.env.js
  17. +7
    -0
      config/test.env.js
  18. +49
    -0
      dtpl.error.log
  19. +22
    -0
      index.html
  20. +17131
    -0
      package-lock.json
  21. +131
    -0
      package.json
  22. +125
    -0
      src/App.vue
  23. +7
    -0
      src/api/GlobalConst.js
  24. +231
    -0
      src/api/all.js
  25. +749
    -0
      src/api/allFun.js
  26. +3
    -0
      src/api/fetch.js
  27. +101
    -0
      src/api/index.js
  28. +20
    -0
      src/api/registerDeletion/index.js
  29. +28
    -0
      src/assets/css/color-dark.css
  30. +4
    -0
      src/assets/css/icon.css
  31. +87
    -0
      src/assets/css/iconfont.css
  32. +539
    -0
      src/assets/css/iconfont/demo.css
  33. +1246
    -0
      src/assets/css/iconfont/demo_index.html
  34. +208
    -0
      src/assets/css/iconfont/iconfont.css
  35. +1
    -0
      src/assets/css/iconfont/iconfont.js
  36. +331
    -0
      src/assets/css/iconfont/iconfont.json
  37. BIN
      src/assets/css/iconfont/iconfont.ttf
  38. BIN
      src/assets/css/iconfont/iconfont.woff
  39. BIN
      src/assets/css/iconfont/iconfont.woff2
  40. +539
    -0
      src/assets/css/iconfont1/demo.css
  41. +303
    -0
      src/assets/css/iconfont1/demo_index.html
  42. +35
    -0
      src/assets/css/iconfont1/iconfont.css
  43. +1
    -0
      src/assets/css/iconfont1/iconfont.js
  44. +44
    -0
      src/assets/css/iconfont1/iconfont.json
  45. BIN
      src/assets/css/iconfont1/iconfont.ttf
  46. BIN
      src/assets/css/iconfont1/iconfont.woff
  47. BIN
      src/assets/css/iconfont1/iconfont.woff2
  48. +495
    -0
      src/assets/css/index.css
  49. +5
    -0
      src/assets/css/info/style.scss
  50. +189
    -0
      src/assets/css/main.css
  51. +5
    -0
      src/assets/css/primary/style.scss
  52. +5
    -0
      src/assets/css/success/style.scss
  53. +5
    -0
      src/assets/css/vue/style.scss
  54. +107
    -0
      src/assets/css/zTreeStyle.css
  55. +257
    -0
      src/assets/iconfont.css
  56. BIN
      src/assets/img/1.png
  57. BIN
      src/assets/img/1662.docx
  58. BIN
      src/assets/img/2.png
  59. BIN
      src/assets/img/3.png
  60. BIN
      src/assets/img/4.png
  61. BIN
      src/assets/img/add.png
  62. BIN
      src/assets/img/alarm.png
  63. BIN
      src/assets/img/alert.png
  64. BIN
      src/assets/img/avator.d7401229.png
  65. BIN
      src/assets/img/beijing02.jpg
  66. BIN
      src/assets/img/beijingtu.png
  67. BIN
      src/assets/img/beijingtu001.jpg
  68. BIN
      src/assets/img/beijingtu002.jpg
  69. BIN
      src/assets/img/beijingtu003.jpg
  70. BIN
      src/assets/img/beijingtu01.png
  71. BIN
      src/assets/img/beijingtu03.jpg
  72. BIN
      src/assets/img/beijingtu04.jpg
  73. BIN
      src/assets/img/beijingtu05.jpg
  74. BIN
      src/assets/img/beijingtu06.jpg
  75. BIN
      src/assets/img/beijingtu07.jpg
  76. BIN
      src/assets/img/beijingtu08.jpg
  77. BIN
      src/assets/img/beijingtu09.jpg
  78. BIN
      src/assets/img/beijingtu10.jpg
  79. BIN
      src/assets/img/beijingtu11.jpg
  80. BIN
      src/assets/img/beijingtu12.jpg
  81. BIN
      src/assets/img/beijingtu20.jpg
  82. BIN
      src/assets/img/beijingtu21.jpg
  83. BIN
      src/assets/img/beijingtu22.jpg
  84. BIN
      src/assets/img/beijingtu23.jpg
  85. BIN
      src/assets/img/beijingtu24.jpg
  86. BIN
      src/assets/img/beijingtu25.jpg
  87. BIN
      src/assets/img/beijingtu26.jpg
  88. BIN
      src/assets/img/beijingtu27.jpg
  89. BIN
      src/assets/img/beijingtu28.jpg
  90. BIN
      src/assets/img/beijingtu29.jpg
  91. BIN
      src/assets/img/beijingtu30.jpg
  92. BIN
      src/assets/img/beijingtu31.jpg
  93. BIN
      src/assets/img/beijingtu32.jpg
  94. BIN
      src/assets/img/beijingtu33.jpg
  95. BIN
      src/assets/img/beijingtu34.jpg
  96. BIN
      src/assets/img/beijingtu35.jpg
  97. BIN
      src/assets/img/beijingtu36.jpg
  98. BIN
      src/assets/img/beijingtu37.jpg
  99. BIN
      src/assets/img/beijingtu38.jpg
  100. BIN
      src/assets/img/beijingtu50.jpg

+ 18
- 0
.babelrc View File

@ -0,0 +1,18 @@
{
"presets": [
["env", {
"modules": false,
"targets": {
"browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
}
}],
"stage-2"
],
"plugins": ["transform-vue-jsx", "transform-runtime"],
"env": {
"test": {
"presets": ["env", "stage-2"],
"plugins": ["transform-vue-jsx", "transform-es2015-modules-commonjs", "dynamic-import-node"]
}
}
}

+ 9
- 0
.editorconfig View File

@ -0,0 +1,9 @@
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true

+ 17
- 0
.gitignore View File

@ -0,0 +1,17 @@
.DS_Store
node_modules/
/dist/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
/test/unit/coverage/
/test/e2e/reports/
selenium-debug.log
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln

+ 10
- 0
.postcssrc.js View 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": {}
}
}

+ 29
- 2
README.md View File

@ -1,3 +1,30 @@
# style-saas
# zhiwei
修改过页面
> A Vue.js project
## Build Setup
``` bash
# install dependencies
npm install
# serve with hot reload at localhost:8080
npm run dev
# build for production with minification
npm run build
# build for production and view the bundle analyzer report
npm run build --report
# run unit tests
npm run unit
# run e2e tests
npm run e2e
# run all tests
npm test
```
For a detailed explanation on how things work, check out the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader).

+ 41
- 0
build/build.js View File

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

+ 54
- 0
build/check-versions.js View File

@ -0,0 +1,54 @@
'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 View File

Before After
Width: 32  |  Height: 32  |  Size: 1.6 KiB

+ 102
- 0
build/utils.js View File

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

+ 22
- 0
build/vue-loader.conf.js View File

@ -0,0 +1,22 @@
'use strict'
const utils = require('./utils')
const config = require('../config')
const isProduction = process.env.NODE_ENV === 'production'
const sourceMapEnabled = isProduction
? config.build.productionSourceMap
: config.dev.cssSourceMap
module.exports = {
loaders: utils.cssLoaders({
sourceMap: sourceMapEnabled,
extract: isProduction
}),
cssSourceMap: sourceMapEnabled,
cacheBusting: config.dev.cacheBusting,
transformToRequire: {
video: ['src', 'poster'],
source: 'src',
img: 'src',
image: 'xlink:href'
}
}

+ 106
- 0
build/webpack.base.conf.js View File

@ -0,0 +1,106 @@
'use strict'
const path = require('path')
const utils = require('./utils')
const config = require('../config')
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'
app: ['babel-polyfill','./src/main.js']
},
output: {
path: config.build.assetsRoot,
filename: '[name].js',
publicPath: process.env.NODE_ENV === 'production' ?
config.build.assetsPublicPath :
config.dev.assetsPublicPath
},
resolve: {
extensions: ['.js', '.vue', '.json'],
alias: {
'vue$': 'vue/dist/vue.esm.js',
'@': resolve('src'),
'jquery': path.resolve(__dirname, '../node_modules/jquery/src/jquery')
}
},
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: /\.js$/,
loader: 'babel-loader',
include: [resolve('src'), resolve('test'), resolve('node_modules/@jiaminghi/data-view/lib')]
},
{
test: /\.js$/,
loader: 'babel-loader',
include: [resolve('src'),resolve('test'),resolve('node_modules/element-ui/src'),resolve('/node_modules/element-ui/packages')
]
},
{
test: /\.js$/,
loader: 'babel-loader',
include: [resolve('src'),resolve('test'),resolve('node_modules/element-ui/src'),resolve('/node_modules/vue-baidu-map/components/base')
]
},
{
test: /\.js$/,
loader: 'babel-loader',
include: [resolve('src'),resolve('test'),resolve('node_modules/js-base64')
]
},
{
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('img/[name].[hash:7].[ext]')
}
},
{
test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('media/[name].[hash:7].[ext]')
}
},
{
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
}
}
]
},
node: {
// prevent webpack from injecting useless setImmediate polyfill because Vue
// source contains it (although only uses it if it's native).
setImmediate: false,
// prevent webpack from injecting mocks to Node native modules
// that does not make sense for the client
dgram: 'empty',
fs: 'empty',
net: 'empty',
tls: 'empty',
child_process: 'empty'
}
}

+ 96
- 0
build/webpack.dev.conf.js View File

@ -0,0 +1,96 @@
'use strict'
const utils = require('./utils')
const webpack = require('webpack')
const config = require('../config')
const merge = require('webpack-merge')
const path = require('path')
const baseWebpackConfig = require('./webpack.base.conf')
const CopyWebpackPlugin = require('copy-webpack-plugin')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
const portfinder = require('portfinder')
const HOST = process.env.HOST
const PORT = process.env.PORT && Number(process.env.PORT)
const devWebpackConfig = merge(baseWebpackConfig, {
module: {
rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap, usePostCSS: true })
},
// cheap-module-eval-source-map is faster for development
devtool: config.dev.devtool,
// these devServer options should be customized in /config/index.js
devServer: {
clientLogLevel: 'warning',
historyApiFallback: {
rewrites: [
{ from: /.*/, to: path.posix.join(config.dev.assetsPublicPath, 'index.html') },
],
},
https:false,
hot: true,
contentBase: false, // since we use CopyWebpackPlugin.
compress: true,
host: HOST || config.dev.host,
port: PORT || config.dev.port,
open: config.dev.autoOpenBrowser,
overlay: config.dev.errorOverlay
? { warnings: false, errors: true }
: false,
publicPath: config.dev.assetsPublicPath,
proxy: config.dev.proxyTable,
quiet: true, // necessary for FriendlyErrorsPlugin
watchOptions: {
poll: config.dev.poll,
}
},
plugins: [
new webpack.DefinePlugin({
'process.env': require('../config/dev.env')
}),
new webpack.HotModuleReplacementPlugin(),
new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update.
new webpack.NoEmitOnErrorsPlugin(),
// https://github.com/ampedandwired/html-webpack-plugin
new HtmlWebpackPlugin({
filename: 'index.html',
template: 'index.html',
inject: true
}),
// copy custom static assets
new CopyWebpackPlugin([
{
from: path.resolve(__dirname, '../static'),
to: config.dev.assetsSubDirectory,
ignore: ['.*']
}
])
]
})
module.exports = new Promise((resolve, reject) => {
portfinder.basePort = process.env.PORT || config.dev.port
portfinder.getPort((err, port) => {
if (err) {
reject(err)
} else {
// publish the new Port, necessary for e2e tests
process.env.PORT = port
// add port to devServer config
devWebpackConfig.devServer.port = port
// Add FriendlyErrorsPlugin
devWebpackConfig.plugins.push(new FriendlyErrorsPlugin({
compilationSuccessInfo: {
messages: [`Your application is running here: http://${devWebpackConfig.devServer.host}:${port}`],
},
onErrors: config.dev.notifyOnErrors
? utils.createNotifierCallback()
: undefined
}))
resolve(devWebpackConfig)
}
})
})

+ 140
- 0
build/webpack.prod.conf.js View File

@ -0,0 +1,140 @@
'use strict'
const path = require('path')
const utils = require('./utils')
const webpack = require('webpack')
const config = require('../config')
const merge = require('webpack-merge')
const baseWebpackConfig = require('./webpack.base.conf')
const CopyWebpackPlugin = require('copy-webpack-plugin')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const ExtractTextPlugin = require('extract-text-webpack-plugin')
const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
const env = process.env.NODE_ENV === 'testing'
? require('../config/test.env')
: require('../config/prod.env')
const webpackConfig = merge(baseWebpackConfig, {
module: {
rules: utils.styleLoaders({
sourceMap: config.build.productionSourceMap,
extract: true,
usePostCSS: true
})
},
devtool: config.build.productionSourceMap ? config.build.devtool : false,
output: {
publicPath: '/',
path: config.build.assetsRoot,
filename: utils.assetsPath('js/[name].[chunkhash].js'),
chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')
},
plugins: [
// http://vuejs.github.io/vue-loader/en/workflow/production.html
new webpack.DefinePlugin({
'process.env': env
}),
// extract css into its own file
new ExtractTextPlugin({
filename: utils.assetsPath('css/[name].[contenthash].css'),
// Setting the following option to `false` will not extract CSS from codesplit chunks.
// Their CSS will instead be inserted dynamically with style-loader when the codesplit chunk has been loaded by webpack.
// It's currently set to `true` because we are seeing that sourcemaps are included in the codesplit bundle as well when it's `false`,
// increasing file size: https://github.com/vuejs-templates/webpack/issues/1110
allChunks: true,
}),
// Compress extracted CSS. We are using this plugin so that possible
// duplicated CSS from different components can be deduped.
new OptimizeCSSPlugin({
cssProcessorOptions: config.build.productionSourceMap
? { safe: true, map: { inline: false } }
: { safe: true }
}),
// generate dist index.html with correct asset hash for caching.
// you can customize output by editing /index.html
// see https://github.com/ampedandwired/html-webpack-plugin
new HtmlWebpackPlugin({
filename: process.env.NODE_ENV === 'testing'
? 'index.html'
: config.build.index,
template: 'index.html',
inject: true,
minify: {
removeComments: true,
collapseWhitespace: true,
removeAttributeQuotes: true
// more options:
// https://github.com/kangax/html-minifier#options-quick-reference
},
// necessary to consistently work with multiple chunks via CommonsChunkPlugin
chunksSortMode: 'dependency'
}),
// keep module.id stable when vendor modules does not change
new webpack.HashedModuleIdsPlugin(),
// enable scope hoisting
new webpack.optimize.ModuleConcatenationPlugin(),
// split vendor js into its own file
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
minChunks (module) {
// any required modules inside node_modules are extracted to vendor
return (
module.resource &&
/\.js$/.test(module.resource) &&
module.resource.indexOf(
path.join(__dirname, '../node_modules')
) === 0
)
}
}),
// extract webpack runtime and module manifest to its own file in order to
// prevent vendor hash from being updated whenever app bundle is updated
new webpack.optimize.CommonsChunkPlugin({
name: 'manifest',
minChunks: Infinity
}),
// This instance extracts shared chunks from code splitted chunks and bundles them
// in a separate chunk, similar to the vendor chunk
// see: https://webpack.js.org/plugins/commons-chunk-plugin/#extra-async-commons-chunk
new webpack.optimize.CommonsChunkPlugin({
name: 'app',
async: 'vendor-async',
children: true,
minChunks: 3
}),
// copy custom static assets
new CopyWebpackPlugin([
{
from: path.resolve(__dirname, '../static'),
to: config.build.assetsSubDirectory,
ignore: ['.*']
}
])
]
})
if (config.build.productionGzip) {
const CompressionWebpackPlugin = require('compression-webpack-plugin')
webpackConfig.plugins.push(
new CompressionWebpackPlugin({
asset: '[path].gz[query]',
algorithm: 'gzip',
test: new RegExp(
'\\.(' +
config.build.productionGzipExtensions.join('|') +
')$'
),
threshold: 10240,
minRatio: 0.8
})
)
}
if (config.build.bundleAnalyzerReport) {
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
webpackConfig.plugins.push(new BundleAnalyzerPlugin())
}
module.exports = webpackConfig

+ 7
- 0
config/dev.env.js View File

@ -0,0 +1,7 @@
'use strict'
const merge = require('webpack-merge')
const prodEnv = require('./prod.env')
module.exports = merge(prodEnv, {
NODE_ENV: '"development"'
})

+ 60
- 0
config/index.js View File

@ -0,0 +1,60 @@
'use strict'
// Template version: 1.3.1
// see http://vuejs-templates.github.io/webpack for documentation.
const path = require('path')
module.exports = {
dev: {
// Paths
assetsSubDirectory: 'static',
assetsPublicPath: '/',
proxyTable: {
'/api': {
// target: 'http://apartmentcloud.xiaozhisz.cn/',
target: 'http://test.zhiweisz.cn/',
// target: 'http://192.168.1.26:8600/',
changeOrigin: true, //是否跨域
pathRewrite: {
//重写路径
'^/api': '' //代理路径
}
}
},
configureWebpack: {
resolve: {
extensions: ['.js', '.vue', '.json'],
alias: {
vue$: 'vue/dist/vue.esm.js',
'@': path.join(__dirname, '/', 'src')
}
}
},
host: '192.168.1.20',
port: 8082,
autoOpenBrowser: false,
errorOverlay: true,
notifyOnErrors: true,
poll: false,
devtool: 'cheap-module-eval-source-map',
cacheBusting: true,
cssSourceMap: true
},
build: {
// Template for index.html
index: path.resolve(__dirname, '../dist/index.html'),
assetsRoot: path.resolve(__dirname, '../dist'),
assetsSubDirectory: 'static',
assetsPublicPath: '/',
/**
* Source Maps
*/
productionSourceMap: false,
devtool: '#source-map',
productionGzip: false,
productionGzipExtensions: ['js', 'css'],
bundleAnalyzerReport: process.env.npm_config_report
}
}

+ 4
- 0
config/prod.env.js View File

@ -0,0 +1,4 @@
'use strict'
module.exports = {
NODE_ENV: '"production"'
}

+ 7
- 0
config/test.env.js View File

@ -0,0 +1,7 @@
'use strict'
const merge = require('webpack-merge')
const devEnv = require('./dev.env')
module.exports = merge(devEnv, {
NODE_ENV: '"testing"'
})

+ 49
- 0
dtpl.error.log View File

@ -0,0 +1,49 @@
Error: EBUSY: resource busy or locked, open 'd:\工作\志为\20211123\20211123.rar'
at Object.openSync (fs.js:476:3)
at Object.func [as openSync] (electron/js2c/asar_bundle.js:5:1846)
at Object.readFileSync (fs.js:377:35)
at Object.e.readFileSync (electron/js2c/asar_bundle.js:5:8872)
at VscodeEditor.getFileContent (c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\out\adapter\VscodeEditor.js:187:19)
at isFileEmpty (c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\node_modules\dot-template-core\out\core\commands\Command.js:65:113)
at c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\node_modules\dot-template-core\out\core\commands\Command.js:72:80
at Array.filter (<anonymous>)
at CreateTemplateFilesCommand.Command.filter (c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\node_modules\dot-template-core\out\core\commands\Command.js:70:14)
at new CreateTemplateFilesCommand (c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\node_modules\dot-template-core\out\core\commands\CreateTemplateFilesCommand.js:31:29)
at c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\node_modules\dot-template-core\out\core\Commander.js:160:80
at Commander.<anonymous> (c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\node_modules\dot-template-core\out\core\Commander.js:129:46)
at step (c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\node_modules\dot-template-core\node_modules\tslib\tslib.js:133:27)
at Object.next (c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\node_modules\dot-template-core\node_modules\tslib\tslib.js:114:57)
at c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\node_modules\dot-template-core\node_modules\tslib\tslib.js:107:75
at new Promise (<anonymous>)
at Object.__awaiter (c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\node_modules\dot-template-core\node_modules\tslib\tslib.js:103:16)
at Commander.wrap (c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\node_modules\dot-template-core\out\core\Commander.js:123:24)
at Commander.<anonymous> (c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\node_modules\dot-template-core\out\core\Commander.js:160:44)
at step (c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\node_modules\dot-template-core\node_modules\tslib\tslib.js:133:27)
at Object.next (c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\node_modules\dot-template-core\node_modules\tslib\tslib.js:114:57)
at c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\node_modules\dot-template-core\node_modules\tslib\tslib.js:107:75
at new Promise (<anonymous>)
at Object.__awaiter (c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\node_modules\dot-template-core\node_modules\tslib\tslib.js:103:16)
at Commander.addCreateTemplateFilesCommand (c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\node_modules\dot-template-core\out\core\Commander.js:157:24)
at Application.<anonymous> (c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\node_modules\dot-template-core\out\core\Application.js:49:61)
at step (c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\node_modules\dot-template-core\node_modules\tslib\tslib.js:133:27)
at Object.next (c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\node_modules\dot-template-core\node_modules\tslib\tslib.js:114:57)
at c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\node_modules\dot-template-core\node_modules\tslib\tslib.js:107:75
at new Promise (<anonymous>)
at Object.__awaiter (c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\node_modules\dot-template-core\node_modules\tslib\tslib.js:103:16)
at Application.createTemplateFiles (c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\node_modules\dot-template-core\out\core\Application.js:47:28)
at Application.<anonymous> (c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\node_modules\dot-template-core\out\core\Application.js:109:51)
at step (c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\node_modules\dot-template-core\node_modules\tslib\tslib.js:133:27)
at Object.next (c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\node_modules\dot-template-core\node_modules\tslib\tslib.js:114:57)
at c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\node_modules\dot-template-core\node_modules\tslib\tslib.js:107:75
at new Promise (<anonymous>)
at Object.__awaiter (c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\node_modules\dot-template-core\node_modules\tslib\tslib.js:103:16)
at run (c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\node_modules\dot-template-core\out\core\Application.js:84:48)
at Application.<anonymous> (c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\node_modules\dot-template-core\out\core\Application.js:153:50)
at step (c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\node_modules\dot-template-core\node_modules\tslib\tslib.js:133:27)
at Object.next (c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\node_modules\dot-template-core\node_modules\tslib\tslib.js:114:57)
at c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\node_modules\dot-template-core\node_modules\tslib\tslib.js:107:75
at new Promise (<anonymous>)
at Object.__awaiter (c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\node_modules\dot-template-core\node_modules\tslib\tslib.js:103:16)
at Timeout._onTimeout (c:\Users\xuhan\.vscode\extensions\qiu8310.dot-template-vscode-0.3.0\node_modules\dot-template-core\out\core\Application.js:144:59)
at listOnTimeout (internal/timers.js:554:17)
at processTimers (internal/timers.js:497:7)

+ 22
- 0
index.html View File

@ -0,0 +1,22 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Language">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<!-- <meta name="GENERATOR" content="Microsoft FrontPage 6.0">
<meta name="ProgId" content="FrontPage.Editor.Document"> -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<!-- <script src="https://pv.sohu.com/cityjson?ie=utf-8"></script> -->
<!-- <link rel="icon" type="image/x-icon" href="/static/favicon.ico"> -->
<title>智慧公寓管理系统</title>
</head>
<body>
<div id="app"></div>
<!-- <object classid="clsid:05782014-9FF7-468C-BE96-8EDC73084202" id="IcCardReader" viewastext
width="0" height="0">
</object> -->
<!-- built files will be auto injected -->
<!-- webpack-dev-server --inline --progress --config build/webpack.dev.conf.js -->
</body>
</html>

+ 17131
- 0
package-lock.json
File diff suppressed because it is too large
View File


+ 131
- 0
package.json View File

@ -0,0 +1,131 @@
{
"name": "zhiwei",
"version": "1.0.0",
"description": "A Vue.js project",
"author": "xuhan <2838199541@qq.com>",
"private": true,
"scripts": {
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
"start": "npm run dev",
"unit": "jest --config test/unit/jest.conf.js --coverage",
"e2e": "node test/e2e/runner.js",
"test": "npm run unit && npm run e2e",
"build": "node build/build.js"
},
"dependencies": {
"@jiaminghi/data-view": "^2.10.0",
"@types/echarts": "^4.4.3",
"@wangeditor/editor": "^5.1.23",
"axios": "^0.21.1",
"babel-polyfill": "^6.26.0",
"babel-runtime": "^6.26.0",
"codemirror": "^5.63.3",
"core-js": "^3.6.4",
"cropper": "^4.1.0",
"css-loader": "^0.28.11",
"docx-preview": "^0.1.4",
"echarts": "^4.9.0",
"echarts-liquidfill": "^2.0.6",
"element-china-area-data": "^5.0.2",
"element-ui": "^2.15.2",
"es6-promise": "^4.2.8",
"file-saver": "^2.0.5",
"html-docx-js": "^0.3.1",
"jquery": "^3.6.0",
"js-base64": "^3.7.2",
"js-cookie": "^2.2.1",
"js-md5": "^0.7.3",
"js-xlsx": "^0.8.22",
"jsencrypt": "^3.2.0",
"jszip": "^3.10.1",
"less": "^4.1.2",
"less-loader": "^10.2.0",
"lodash": "^4.17.21",
"moment": "^2.29.1",
"pako": "^2.0.4",
"qrcodejs2": "0.0.2",
"simditor": "^2.3.6",
"style-loader": "^2.0.0",
"swiper": "^5.4.5",
"v-charts": "^1.19.0",
"v-distpicker": "^1.2.12",
"vue": "^2.5.2",
"vue-amap": "^0.5.10",
"vue-awesome": "^4.3.1",
"vue-baidu-map": "^0.21.22",
"vue-cropperjs": "^5.0.0",
"vue-loader": "^13.7.3",
"vue-qriously": "^1.1.1",
"vue-router": "^3.0.1",
"vue-schart": "^2.0.0",
"vue-seamless-scroll": "^1.1.23",
"vue-style-loader": "^3.1.2",
"vuex": "^3.6.2",
"xlsx": "^0.17.1"
},
"devDependencies": {
"autoprefixer": "^7.1.2",
"babel-core": "^6.22.1",
"babel-helper-vue-jsx-merge-props": "^2.0.3",
"babel-jest": "^21.0.2",
"babel-loader": "^7.1.1",
"babel-plugin-dynamic-import-node": "^1.2.0",
"babel-plugin-syntax-jsx": "^6.18.0",
"babel-plugin-transform-es2015-modules-commonjs": "^6.26.0",
"babel-plugin-transform-runtime": "^6.22.0",
"babel-plugin-transform-vue-jsx": "^3.5.0",
"babel-preset-env": "^1.3.2",
"babel-preset-stage-2": "^6.22.0",
"babel-register": "^6.22.0",
"chalk": "^2.0.1",
"chromedriver": "^2.27.2",
"copy-webpack-plugin": "^4.0.1",
"cross-spawn": "^5.0.1",
"crypto-js": "^4.1.1",
"css-loader": "^0.28.11",
"extract-text-webpack-plugin": "^3.0.0",
"file-loader": "^1.1.4",
"friendly-errors-webpack-plugin": "^1.6.1",
"generate-asset-webpack-plugin": "^0.3.0",
"html-webpack-plugin": "^2.30.1",
"jest": "^22.0.4",
"jest-serializer-vue": "^0.3.0",
"nightwatch": "^0.9.12",
"node-notifier": "^5.1.2",
"optimize-css-assets-webpack-plugin": "^3.2.0",
"ora": "^1.2.0",
"portfinder": "^1.0.13",
"postcss-import": "^11.0.0",
"postcss-loader": "^2.0.8",
"postcss-url": "^7.2.1",
"rimraf": "^2.6.0",
"sass": "^1.50.0",
"sass-loader": "^7.3.1",
"script-loader": "^0.7.2",
"selenium-server": "^3.0.1",
"semver": "^5.3.0",
"shelljs": "^0.7.6",
"style-loader": "^2.0.0",
"stylus-loader": "^6.1.0",
"uglifyjs-webpack-plugin": "^1.0.0-rc.0",
"url-loader": "^0.5.8",
"vue-awesome-swiper": "^3.1.3",
"vue-jest": "^1.0.2",
"vue-loader": "^13.3.0",
"vue-style-loader": "^3.0.1",
"vue-template-compiler": "^2.5.2",
"webpack": "^3.6.0",
"webpack-bundle-analyzer": "^2.9.0",
"webpack-dev-server": "^2.9.1",
"webpack-merge": "^4.1.0"
},
"engines": {
"node": ">= 6.0.0",
"npm": ">= 3.0.0"
},
"browserslist": [
"> 1%",
"last 2 versions",
"not ie <= 8"
]
}

+ 125
- 0
src/App.vue View File

@ -0,0 +1,125 @@
<template>
<div id="app">
<router-view v-if="isrouterview"/>
</div>
</template>
<script>
export default {
name: 'App',
provide(){
return{
reload:this.reload
}
},
data() {
return {
isrouterview: true,
};
},
computed: {
count() {
return this.$store.lange
},
},
watch: {
count() {
this.isrouterview = false;
this.$nextTick(function () {
this.isrouterview = true;
});
},
},
mounted () {
// //
// var themesCss = localStorage.getItem('cssStyle');
// if(themesCss){
// require("./assets/css/" + 'primary' + "/style.scss");
// }
},
methods:{
reload(){
// var themesCss = localStorage.getItem('cssStyle');
// console.log(themesCss)
// require("./assets/css/" + themesCss + "/style.scss");
this.isrouterview = false;
this.$nextTick(function () {
this.isrouterview = true;
});
}
}
}
</script>
<style >
@import "./assets/css/main.css";
@import "./assets/css/color-dark.css";
@import "./assets/css/iconfont/iconfont.css";
/*.el-menu-item.is-active {*/
/* background-color: rgb(20, 100, 197) !important;*/
/*}*/
#app{
background-color: rgb(231 238 241);
}
.el-tooltip__popper {
max-width: 40% !important;
display: -webkit-box;
overflow: hidden;
text-overflow: ellipsis;
-webkit-line-clamp: 19;
-webkit-box-orient: vertical;
}
.red{color: red;}
.mTop10{margin-top: 10px;}
.Width200{width: 2rem;}
.datapicker{z-index: 999999 !important;}
.headselect.el-select-dropdown.el-popper{
z-index: 9999999 !important;
}
:root {
--sldebarLeft: 180px;
--sldebarLeftOne: 0;
--custom-color: #59adf7;
--border-color:#4ca3f0;
}
.el-tree-node.is-current.is-focusable{
background: #f3f4f5;
}
.container .wRem3{
width: 2rem !important;
}
.w-4{
width: 4rem;
}
.w-2{
width: 2rem;
}
.p-2{
padding: 20px;
box-sizing: border-box;
}
.pa-2{
padding: 20px;
}
.mb-2{
margin-bottom: 20px;
}
.m-y-2{
margin: 20px 0;
}
.d-block{
display: block;
width: 100%;
}
.tags-li.active{
background-color:var(--custom-color);
border-color: var(--border-color);
}
.el-button--primary{
background-color:var(--custom-color);
border-color: var(--border-color);
}
.el-pagination.is-background .el-pager li:not(.disabled).active{
background-color:var(--custom-color);
}
</style>

+ 7
- 0
src/api/GlobalConst.js View File

@ -0,0 +1,7 @@
export default {
install(Vue,options){
Vue.prototype.GlobalConst = {
customCode:'d39eaa7fc1f34190869608259133d2fb',
};
}
}

+ 231
- 0
src/api/all.js View File

@ -0,0 +1,231 @@
let api = {}
api.postLogin = '/oauth/token' //登录
api.getlistNum = '/v1/card/get/list' //获取人员(卡)列表
api.getTenant = '/v1/card/get/tenant' //获取入住人员信息
api.getDeviceItems = '/v1/device/get/items' //获取设备信息
api.unbindCard = '/v1/site/unbind/card' //解绑房间
api.bindCard = "/v1/site/bind/card" //绑定房间
api.setTenant = "/v1/card/set/tenant" //绑定房间
api.addCard = "/v1/card/add" //创建人员(卡)
api.updateCard = "/v1/card/update" //修改卡信息
api.deleteCard = "/v1/card/delete" //删除卡
api.exportCard = "/v1/card/export" //导出卡信息
api.exportSite = "/v1/site/export" //导出房源信息
api.exportDeviceOrder = "/v1/device/export/DeviceOrder" //导出设备信息
api.getTree = "/v1/site/get/tree" //获取所有房源
api.getSiteList = "/v1/site/get/list" //获取房间列表信息
api.getIntegration = "/v1/card/get/integration" //获取房间列表信息
api.deleteSite = "/v1/site/delete" //房源批量删除
api.removeAssign = "/v1/site/remove/assign" //解绑
api.siteAssign = "/v1/site/assign" //绑定
api.siteAddRoot = "/v1/site/add/root" //房源创建根级
api.siteUpdate = "/v1/site/update" //房源修改
api.sitCreateMod = "/v1/site/create/mod" //房源创建模板
api.sitAddChild = "/v1/site/add/child" //房源创建下一级
api.sitAddNodes = "/v1/site/add/nodes" //房源批量创建下一级
api.getSiteTenant = "/v1/site/get/tenant" //获取已入住人员信息
api.sendCommand = "/v1/device/send/command" //通用接口
api.getCertificates = "/v1/device/certificate/list" //凭证列表获取
api.updateCertificates = "/v1/device/update/certificate" //凭证列表修改
api.deleteCertificates = "/v1/device/delete/certificate" //凭证列表删除
api.addCertificates = "/v1/device/add/certificate" //添加凭证
api.getDeviceList = "/v1/device/get/list" // 查询设备列表
api.getDeviceResult = "/v1/device/get/command/result" // 查询反馈日志列表
api.unbindDeviceSite = "/v1/device/unbind/site" // 解除绑定房间
api.deleteDevice = "/v1/device/delete/device" // 删除设备
api.bindDeviceSite = "/v1/device/bind/site" // 绑定房间
api.fingerprintTransfer = "/v1/device/isp/fingerprintTransfer" //下发指纹
api.getDeviceRegisterManager = "/v1/device/isp/registerManager" // 重置添加管理员
api.getDeviceOperateUserInfo = "/v1/device/isp/operateUserInfo" // 下发凭证用户命令
api.DeviceRegisterDevice = "/v1/device/isp/registerDevice" // 设备初始化
api.openLock = "/v1/device/isp/openLock" //远程开锁
// api.fingerprintTransfer = "/v1/device/onenet/fingerprintTransfer" //下发指纹
// api.getDeviceRegisterManager = "/v1/device/onenet/registerManager" // 重置添加管理员
// api.getDeviceOperateUserInfo = "/v1/device/onenet/operateUserInfo" // 下发凭证用户命令
// api.DeviceRegisterDevice = "/v1/device/onenet/registerDevice" // 设备初始化
// api.openLock = "v1/device/onenet/openLock"//远程开锁
api.getOpenRecord = "/v1/device/get/open/record" //获取开门数据
api.bindRole = "/v1/account/bind/role" //用户绑定角色
api.getUserList = "/v1/account/user/list" //获取用户列表
api.getRoleList = "/v1/account/role/list" //获取角色信息
api.getRoleList = "/v1/account/role/list" //获取角色信息
api.updateRole = "/v1/account/update/role" //修改角色权限
api.deleteRole = "/v1/account/role/delete" //删除角色
api.addRole = "/v1/account/add/role" //添加角色
api.getStatisticsTotal = "/v1/statistics/get/total" // 获取房间总数
api.getStatisticsVacancy = "/v1/statistics/get/vacancy" // 查询空房总数
api.getTenantCount="/v1/statistics/get/tenant/count"//查询入住人数
api.getOperateList = "/v1/log/operate/list" // 获取操作日志
api.getExceptionList = "/v1/log/exception/list" // 获取操作日志
api.getLockAlert = "/v1/device/get/lock/alert" // 获取警告日志
api.getCheckCode = "/v1/account/checkCode" // 获取验证码
api.checkCodeMatches = "/v1/account/checkCode/matches" // 校验验证码
api.addUser = "/v1/account/add/user" // 添加用户
api.queryList = "/v1/card/query/list" //获取卡号(IMEI)
api.countStatus = "/v1/card/count/status" //获卡状态统计
api.lateOpenLock = "/v1/statistics/late/open/lock" //晚归
api.unOpenLockByDay = "/v1/statistics/unOpen/lock" //不在校
api.analysis = "/v1/statistics/analysis" //电量统计
api.userInfo = "/v1/account/user/info" //用户信息
api.getEnterprise = "/v1/account/get/enterprise" //查询所属部门
api.addEnterprise = "/v1/account/add/enterprise" //添加部门
api.getHeartbeat = "/v1/statistics/get/heartbeat" //获取心跳
api.editPassword = "/v1/account/edit/password" //修改登录账户
api.deleteUser = "/v1/account/delete/user" //删除用户
api.updateEnterprise = "/v1/account/update/enterprise" //更新部门信息
api.lockDeviceInfoList = "/v1/device/refresh/list" //刷新设备信息
api.getLockAlert1 = "/v1/device/refresh/alert" //门锁报警日志刷新
api.getOpenRecordList = "/v1/device/refresh/record" //开锁日志刷新
api.getHeartbeat1 = "/v1/device/refresh/ " //心跳刷新
api.deleteEnterprise = "/v1/account/delete/enterprise" //删除部门
api.assignSite = "/v1/site/assign" //房源和部门绑定
api.setEnterprise = "/v1/site/set/enterprise" //房源和部门绑定
api.infoImport = "/v1/card/infoImport" //批量导入
api.getMark = "/v1/card/get/mark" //获取指纹库
api.addMark = "/v1/card/add/mark" //导入指纹库
api.deleteMark = "/v1/card/delete/mark" //删除信息库
api.editMark = "/v1/card/edit/mark" //编辑信息库
api.onlySiteDevice = "/v1/card/only/siteDevice" //查询房间和设备数据
api.onlyTenant = "/v1/card/only/tenant" //查询房间和人员信息
api.export = "/v1/device/export/openRecord" //导出接口
api.editType = "/v1/account/edit/type" //修改类型
api.orderKill = "/v1/account/order/kill" //强制删除登录用户
api.editUserEnterprise = "/v1/account/edit/user/enterprise" //修改账户部门
api.getDeletes = "/v1/account/get/deletes" //获取已删除账户
// ZG
api.ZGdeleteDevice = "/v1/zg/deleteDevice" //删除设备
api.ZGregisterDevice = "/v1/zg/registerDevice" //注册平台
api.ZGduserOperation = "/v1/zg/userOperation" //添加用户
api.formDataCommand = "/v1/device/send/fromData" //formdata指纹
api.sendEmergence = "/v1/device/send/emergence" //发送离线密码短信
api.getProjects = "/v1/statistics/get/project" //获取项目下门锁总数
api.getRolesByUser = "/v1/account/get/role" //获取用户对应角色
api.orderLockOpen = "/v1/statistics/order/openLock" //获取开锁记录
api.lockOpenStatistics = "/v1/statistics/statistics/openLock" //获取当天开锁记录时间间隔
api.alertTypeStatistics = "/v1/statistics/alert/type" //获取警告日志统计
api.cancelDistribution = "/v1/device/delete/by/serial"//取消下发指令
api.syncCommands = "/v1/device/syncCommands" //从paas同步能对应得上的有效凭证
api.orderDeviceData = "/v1/device/order/deviceData" //获取指定锁所有非703凭证数据
api.editConfig = "/v1/auto/edit/config" //修改配置
api.getConfig = "/v1/auto/get/config" //获取配置
api.editQuota="/v1/device/edit/quota/{id}/{quota}"//修改lincense
api.edutLicense="/v1/device/edit/license"//edutLicense
api.getPlaceList = "/v1/place/get/list" //获取房间列表信息
api.addNodes="/v1/place/add/nodes"//创建房源
api.createModPlace="/v1/place/create/mod"//创建房源
api.updatePlace="/v1/place/update"//更新房源信息
api.deleteRoom="/v1/place/delete"//删除房源信息
api.addRoot="/v1/place/add/root"//添加根目录
api.getList="/v1/houseSensor/get/list"//获取警告日志
api.getReportList="/v1/houseSensor/report/list"//获取警告日志
api.registerDevice="/v1/houseSensor/isp/registerDevice"//注册设备
api.bindSite="/v1/houseSensor/bind/site"//绑定地点
api.getAlarmUser="/v1/place/get/alarm"//获取联系人
api.addAlarmUser="/v1/place/add/alarm"//添加联系人
api.unbindSite="/v1/houseSensor/unbind/site"//解绑地点
api.deleteAlarm="/v1/place/delete/alarm"//删除联系人
api.deleteAlarmUser="/v1/pay/delete/alarmUser"//删除联系人
api.updateAlarm="/v1/place/update/alarm"//更新联系人
api.editAlarmUser="/v1/pay/edit/alarmUser"//更新联系人
api.monitorDevices="/v1/place/monitor/devices"//统计设备总数和房间总数
api.getOrderReport="/v1/houseSensor/order/report"//根据类型和指定天数范围获取报警记录
api.getReports="/v1/houseSensor/get/reports"//获取所有报警信息
api.siteDevices="/v1/houseSensor/site/device"//获取所关系
api.deviceReport="/v1/houseSensor/export/report"
api.monitorReport="/v1/houseSensor/monitor/report"
api.updatePush="/v1/push/paas/update/push"//修改反馈日志状态
// fluorite
api.fluoriteRegisterDevice="/v1/ys/registerDevice"//注册设备
api.fluoriteDeleteDevice="/v1/ys/deleteDevice"//注销设备
api.deviceLink="/v1/ys/deviceLink"//子设备关联
api.deviceUnlink="/v1/ys/deviceUnlink"//子设备解除关联
// 注册设备集成接口
api.registerDeviceAll="/v1/device/all/registerDevice"
api.getAirSwitch="/v1/device/get/airSwitch"//获取空开信息
api.getAirSwitchParameter="/v1/device/get/device/parameter"//获取空开列表
api.getAirSwitchParameter="/v1/device/get/device/parameter"//获取空开列表
api.personBindEnterprise="/v1/card/bind/enterprise"//人员绑定部门
api.personUnBindEnterprise="/v1/card/unbind/enterprise"//人员解绑部门
api.getPersonBindEnterprise="/v1/card/get/enterprise"//获取人员绑定部门
api.getBase64Code="/test/en/aed"//
api.getUserid="/work/wechat/convert_to_userid"//获取企业微信userid
api.createKey="/auto/create/key"//创建普通用户
api.orderCreateKey="/v1/card/order/create/key"//生成普通用户账号
api.editMyKey="/v1/account/edit/myKey"
api.createOrder="/v1/pay/createOrder"//充值
api.getOrderList="/v1/pay/list"//充值
// 接警联系人
api.lockAddAlarmUser="/v1/pay/add/alarmUser"//添加联系人
api.lockAlarmUsers="/v1/pay/alarmUsers"//获取联系人
api.rechargeAlarmBalance="/v1/pay/recharge/alarmBalance"
api.getAlwaysOpensApi="/v1/device/alwaysOpen/list"
// 设备状态统计筛选
api.screenStatisticsItems="/v1/statistics/device/items"
// 合同
api.postLeasesList="/v1/leases/get/list" // 获取合同列表
api.postAddLeases="/v1/leases/add" // 创建合同
api.postUpdateLeases="/v1/leases/update" // 修改合同
api.postDeleteLeases="/v1/leases/delete" // 删除合同
api.getLeasesStatusstatistics="/v1/leases/status/statistics" // 首页数据获取
api.getAutoRetreat="/v1/leases/to/retreat" // 同步合同状态
api.getBalance='/v1/pay/get/balance'//获取余额
api.backRefunds='/v1/pay/refunds/[orderNo}/[reason}'//退款
api.getRoomStatistics = '/v1/leases/room/statistics' //按社区进行房屋总数统计
api.getRentedRoomStatistics = '/v1/leases/rentedroom/statistics' //按社区进行入住房屋总数统计
api.getCommunitystatus = '/v1/leases/communitystatus/statistics/{status}'//按社区对租房状态统计的通用接口
api.getCommonStatistics = '/v1/leases/common/statistics' //按社区、按状态 分组统计房间总数
api.getCommunityrentStatistics = '/v1/leases/communityrent/statistics' //缴费的截至时间大于或等于当日时间,都算租金收缴成功
api.createkeyCard = '/v1/card/order/create/key' //传人员id生成可登录的小程序用户
api.getTotalRevenue = '/v1/leases/order/totalRevenue' //获取总收入
api.getStatisticsByMonth = '/v1/leases/statisticsByMonth/' // 入住统计
api.getRevenueByMonth = '/v1/leases/revenueByMonth/' // 月收入统计
api.getStatisticsRevenueTop = '/v1/leases/statistics/revenueTop' // 收入排行
api.sendSigningNotice = '/v1/leases/to/signingNotice' // 签约成功通知
api.getContracts='/v1/auto/getContracts'//获取所有合同模板
api.createUpdateContractHandle='/v1/auto/contractHandle'//新建或修改合同模板
api.getOrderContract='/v1/auto/getOrderContract'//查询指定模板
api.deleteContracts='/v1/auto/deleteContracts'//删除模板
api.editLincense='/v1/device/edit/license'//授权
export {
api
}

+ 749
- 0
src/api/allFun.js View File

@ -0,0 +1,749 @@
import {
httpGet,
RefreshToken,
httpPost,
setCode,
httpGet1,
httpPost1,
httpGetno,
httpPostno,
silentRequest
} from '@/api/index'
import {
api
} from '@/api/all'
import utils from '@/utils/util.js'
import moment from "moment"
// zg注册设备
export default class RequestSet {
// 冻结管理 action 0-解冻,1-冻结
static freeUserManage(action,row,callback){
let order=""
if(action==0){
order=6127
}else if(action==1){
order=6126
}
var data={
code: "zg/bleRegisterInfo",
data: {lockerId: row.deviceNum}
}
httpPost(data,api.sendCommand).then(res=>{
if(res.code==200){
var data1={
code: "zg/frozenUserOperation",
data: {
lockerId: row.deviceNum,
lockerSuperAdminId: res.data.superId,
lockerUserId:row.userId,
keyId:row.keyId,
action:action,
frozenStartTime:row.frozenStartTime,
frozenEndTime:row.frozenEndTime,
authKey:res.data.authKey,
order:order,
roomName:row.roomName,
cardName:row.name,
}
}
httpPost(data1,api.sendCommand).then(res1=>{
if(res1.code==200){
callback(res1)
}else{
callback(res1)
}
})
}else{
callback(res)
}
})
}
// 冻结管理 action 0-解冻,1-冻结
static freeManageMethods(action,row,callback){
let order=""
if(action==0){
order=5103
}else if(action==1){
order=5104
}
var data={
code: "zg/bleRegisterInfo",
data: {lockerId: row.deviceNum}
}
httpPost(data,api.sendCommand).then(res=>{
if(res.code==200){
var data1={
code: "zg/frozenOperation",
data: {
lockerId: row.deviceNum,
lockerSuperAdminId: res.data.superId,
keyId:res.data.superId,
action:action,
frozenStartTime:"1659077751",
frozenEndTime:"1911538551",
authKey:res.data.authKey,
order:order,
roomName:row.roomName,
cardName:"管理员",
}
}
httpPost(data1,api.sendCommand).then(res1=>{
if(res1.code==200){
callback(res1)
}else{
callback(res1)
}
})
}else{
callback(res)
}
})
}
// 注册设备
static RegisterDevice(data, callback) {
if (data.manufactureId == 101) {
var str = {
data: {
deviceNum: data.deviceNum,
imei: data.imei,
imsi: data.imei, //row.imsi,
order: 5101,
platformId: data.platformId,
manufactureId: data.manufactureId,
},
code: "/v1/isp/registerDevice",
enterpriseId: data.enterpriseId,
key: data.deviceNum
}
httpPost(str, api.registerDeviceAll).then((res) => {
callback(res)
});
} else if (data.manufactureId == 201 || data.manufactureId == 221) {
var str = {
data: {
lockerId: data.lockerId,
imei: data.imei,
customerCode: data.customerCode,
lockerSuperAdminId: data.lockerSuperAdminId,
authKey: data.authKey,
type: data.type,
manufactureId: data.manufactureId,
order: 5101,
},
code: "/v1/zg/registerDevice",
enterpriseId: data.enterpriseId,
key: data.lockerId
}
httpPost(str, api.registerDeviceAll).then(res => {
callback(res)
});
} else if (data.manufactureId == 799) {
var str = {
data: {
deviceNum: data.deviceNum,
validateCode: data.validateCode,
manufactureId: data.manufactureId,
order: 5101,
},
code: "/v1/ys/registerDevice",
enterpriseId: data.enterpriseId,
key: data.deviceNum
}
httpPost(str, api.registerDeviceAll).then(res => {
callback(res)
});
} else if (data.manufactureId == 1003) {
var str = {
data: {
deviceNum: data.deviceNum,
order: 5101,
platformId: data.platformId,
manufactureId: data.manufactureId,
},
code: "/v1/common/registerDevice",
enterpriseId: data.enterpriseId,
key: data.deviceNum
}
httpPost(str, api.registerDeviceAll).then(res => {
callback(res)
});
} else {
var str = {
data: {
deviceNum: data.deviceNum,
imei: data.imei,
imsi: data.imei,
order: 5101,
platformId: data.platformId,
manufactureId: data.manufactureId,
},
code: "/v1/isp/registerDevice",
enterpriseId: data.enterpriseId,
key: data.deviceNum
}
httpPost(str, api.registerDeviceAll).then(res => {
callback(res)
});
}
}
// 删除设备
static DeleteDevic(data, manufactureId, callback) {
if (manufactureId == 101) {
var str = {
device: data.deviceNum,
imei: data.imei,
order: data.order
}
httpPost(str, api.deleteDevice).then(res => {
callback(res)
})
} else if (manufactureId == 201|| data.manufactureId == 221) {
var str = {
lockerId: data.deviceNum,
imei: data.imei,
order: data.order
}
return httpPost(str, api.ZGdeleteDevice);
} else if (manufactureId == 799) {
var str = {
deviceNum: data.deviceNum,
order: data.order
}
httpPost(str, api.fluoriteDeleteDevice).then(res => {
callback(res)
})
} else if (manufactureId == 707 || manufactureId == 706 || manufactureId == 702) {
var str = {
code: "ys/deviceUnlink",
data: {
deviceNum: data.deviceNum,
gatewayDevice: data.gatewayDevice
}
}
httpPost(str, api.sendCommand).then(res => {
callback(res)
})
} else if (manufactureId == 1003) {
var str = {
code: "common/deleteDevice ",
data: {
deviceNum: data.deviceNum
}
}
httpPost(str, api.sendCommand).then(res => {
callback(res)
})
} else {
var str = {
device: data.deviceNum,
imei: data.imei,
order: data.order
}
httpPost(str, api.deleteDevice).then(res => {
callback(res)
})
}
}
// 网关绑定子设备
static gatewayBindsChildDevic(data, callback) {
var str = {
data: {
deviceNum: data.deviceNum,
gatewayDevice: data.gatewayDevice,
manufactureId: data.manufactureId,
order: 5101,
},
code: "/v1/ys/deviceLink",
enterpriseId: data.enterpriseId,
key: data.deviceNum
}
httpPost(str, api.registerDeviceAll).then(res => {
callback(res)
})
}
// 获取网关子设备
static getGatewaySubequipment(deviceNum, callback) {
var data2 = {
code: "ys/childDeviceList",
data: {
deviceNum: deviceNum,
}
}
httpPost(data2, api.sendCommand).then(res => {
callback(res)
})
}
// 获取统计
static getAnalysis(data, type, callback) {
silentRequest(data, `/v1/statistics/analysis/${type}`).then((res) => {
callback(res)
});
}
// 获取设备警告日志
static getWarningLog(data, callback) {
var data1 = {
pageNum: 1,
pageSize: 10,
q: JSON.stringify({
deviceType: data.deviceType
}),
orderBy: "alert_time desc"
};
silentRequest(data1, api.getLockAlert).then((res) => {
callback(res)
})
}
// 添加凭证(不执行)
static staaddingCredentialsIsNotExecuted(data, callback) {
var data = {
cardId: data.cardId,
content: data.content, //operateMode:NFC-10、把人员添加到凭证-1
type: data.type,
startTime: data.startTime,
endTime: data.endTime,
};
httpPost(data, api.addCertificates).then((res) => {
callback(res)
})
}
// 获取空开信息
static getAirSwitchMethds(data, callback) {
var para = {
pageNum: data.pageNum,
pageSize: data.pageSize,
q:data.q
}
httpGet(data, api.getAirSwitch).then(res => {
callback(res)
})
}
// 添加人员
static addPeople(data, callback) {
var data = {
cardId: data.cardId,
cardState: data.cardState,
info: data.info,
name: data.name,
number: data.number,
phone: data.phone,
sex: parseInt(data.sex),
enterpriseId: data.enterpriseId,
type: data.type,
};
httpPost(data, api.addCard).then((res) => {
callback(res)
}).catch(err => {
callback(err)
})
}
// 补全人员凭证
static completePersonnelVouchers(item,index,type){
var content=JSON.parse(item.content)
var pzname='';
if(type==1){
if(content.pzname==""){
pzname='密码'+(index+1)
}else{
pzname=content.pzname
}
var str ={
userTelephone: content.userTelephone,
userPassword: content.userPassword,
password: content.password,
length: content.length,
fpTimeId: content.fpTimeId,
operateMode: content.operateMode,
type: 11,
order: 6216,
fingerprint: content.fingerprint,
passwordStartTime: content.passwordStartTime,
passwordEndTime: content.passwordEndTime,
pzname: pzname,
cardName: item.cardName
};
var data = {
cardId: item.cardId,
content: JSON.stringify(str), //operateMode:NFC-10、把人员添加到凭证-1
type: 11,
startTime: item.startTime,
endTime: item.endTime
};
httpPost(data, api.addCertificates).then((res) => {
})
}else if(type==2){
if(content.pzname==""){
pzname='身份证'+(index+1)
}else{
pzname=content.pzname
}
var str = {
userTelephone: content.userTelephone,
userPassword: content.userPassword,
password: content.password,
operateMode: content.operateMode,
type: 12,
order: 6213,
fingerprint: content.fingerprint,
passwordStartTime: content.passwordStartTime,
passwordEndTime: content.passwordEndTime,
pzname: pzname,
cardName: item.cardName
};
var data = {
cardId: item.cardId,
content: JSON.stringify(str), //operateMode:NFC-10、把人员添加到凭证-1
type: 12,
startTime: item.startTime,
endTime: item.endTime
};
httpPost(data, api.addCertificates).then((res) => {
})
}else if(type==3){
if(content.pzname==""){
pzname='NFC'+(index+1)
}else{
pzname=content.pzname
}
var password=utils.cardFormatConversion(content.password)
var str = {
userTelephone: content.userTelephone,
userPassword: content.userPassword,
password: password,
operateMode: content.operateMode,
type: 13,
order: 6210,
fingerprint: content.fingerprint,
passwordStartTime: content.passwordStartTime,
passwordEndTime: content.passwordEndTime,
pzname: pzname,
cardName: item.cardName
};
var data = {
cardId: item.cardId,
content: JSON.stringify(str), //operateMode:NFC-10、把人员添加到凭证-1
type: 13,
startTime: item.startTime,
endTime: item.endTime
};
httpPost(data, api.addCertificates).then((res) => {
})
}else if(type==4){
if(content.pzname==""){
pzname='密码'+(index+1)
}else{
pzname=content.pzname
}
var str = {
userTelephone: content.userTelephone,
userPassword: content.userPassword,
password: content.password,
operateMode: content.operateMode,
type: 14,
order: 6207,
fingerprint: content.fingerprint,
passwordStartTime: content.passwordStartTime,
passwordEndTime: content.passwordEndTime,
pzname: pzname,
cardName: item.cardName
};
var data = {
cardId: item.cardId,
content: JSON.stringify(str), //operateMode:NFC-10、把人员添加到凭证-1
type: 14,
startTime: item.startTime,
endTime: item.endTime
};
httpPost(data, api.addCertificates).then((res) => {
})
}
}
// 获取凭证列表
static GetCredentialList(item,type,callback){
var data = {
pageNum: 0,
pageSize: 0,
orderBy: "create_at desc",
q: JSON.stringify({
cardId: item.id,
instatus:"0,1",
types: type,
}),
};
httpGet(data, api.getCertificates).then((res) => {
callback(res)
}).catch(err=>{
callback(err)
})
}
// 根据id获取房源完整路径
static getFullPathHousing(item,data,name){
console.log(name,item)
if(item.id==item.pid){
name.push(item.name)
// console.log(name,item)
return name
}else{
data.map(li=>{
if(li.id==item.id){
name.push(li.name)
// console.log(name,item)
this.getFullPathHousing(li,data,name)
}
})
}
}
// 是否可以解绑人员和房间关系
static unbindPeopleAndRooms(personid,imei,callback){
var data = {
pageNum: 0,
pageSize: 1,
orderBy: "create_at desc",
q: JSON.stringify({
cardId: personid,
imei:imei,
instatus:"0,1",
type: 26,
}),
};
httpGet(data, api.getCertificates).then((res) => {
callback(res)
}).catch(err=>{
callback(err)
})
}
// 获取某个人某种凭证编号
static getCertificatesNum(id,type,mode,content){
if(mode == 1){
var data = {
pageNum: 0,
pageSize: 1,
orderBy: "create_at desc",
q: JSON.stringify({
cardId: id,
type: type
}),
};
httpGet(data, api.getCertificates).then((res) => {
if(res.success){
return res.data.total+1
}else{
return 1
}
}).catch(err=>{
return 1
})
}else if(mode ==2){
var data = {
pageNum: 0,
pageSize: 1,
orderBy: "create_at desc",
q: JSON.stringify({
cardId: id,
password:content,
type: type,
types: "10,11,12,13,14"
}),
};
httpGet(data, api.getCertificates).then((res) => {
if(res.success){
let dataOne=utils.zlib_unzip(res.data)
let pzname=JSON.parse(dataOne[0].content).pzname
return pzname
}else{
return ''
}
}).catch(err=>{
return ''
})
}
}
// 16进制转10进制
static hex2int(hex, callback) {
var len = hex.length,
a = new Array(len),
code;
for (var i = 0; i < len; i++) {
code = hex.charCodeAt(i);
if (48 <= code && code < 58) {
code -= 48;
} else {
code = (code & 0xdf) - 65 + 10;
}
a[i] = code;
}
let str = a.reduce(function(acc, c) {
acc = 16 * acc + c;
return acc;
}, 0);
callback(str)
}
static int2hex(num, width) {
var hex = "0123456789abcdef";
var s = "";
while (num) {
s = hex.charAt(num % 16) + s;
num = Math.floor(num / 16);
}
if (typeof width === "undefined" || width <= s.length) {
return "0x" + s;
}
var delta = width - s.length;
var padding = "";
while (delta-- > 0) {
padding += "0";
}
return "0x" + padding + s;
}
// 判断设备最近日志是否在num秒内
static judgmentTimestamp(alertTime) {
var curDate = new Date().getTime() / 1000
var endDate = parseInt(curDate - alertTime)
if (endDate > 5) {
return false
} else {
return true
}
}
static voucherClassification(data) {
let str = []
var array = this.groupBy(data, ["type", "password"], function(cul, data) {
return cul + 1
})
console.log(array)
}
static getAlertTypeOrder(data, type, callback) {
silentRequest(data, `/v1/statistics/alert/by/order/${type}`).then((res) => {
callback(res)
});
}
static classification() {
let day = []
for (let i = 0; i < 7; i++) {
var time = moment(new Date()).subtract(i, "days").format("YYYY-MM-DD")
day.push(time)
}
return day.reverse()
}
static loopObjectSum(array, alertTypeList) {
var objectArray = []
var days = this.classification()
for (let i in array) {
var alertTypeDesc = alertTypeList.filter(item => item.code == i)[0]
var obj = {}
if (alertTypeDesc) {
obj = {
name: alertTypeDesc.desc,
value: array[i]
}
} else {
obj = {
name: '',
value: array[i]
}
}
objectArray.push(obj)
}
return objectArray
}
static loopObject(array, alertTypeList) {
var objectArray = []
var days = this.classification()
for (let i in array) {
var alertTypeDesc = alertTypeList.filter(item => item.code == i)[0]
var obj = {}
if (alertTypeDesc) {
obj = {
name: alertTypeDesc.desc,
type: 'line',
// stack: 'Total',
arr: array[i],
data: new Array(7).fill(0)
}
} else {
obj = {
name: '',
type: 'line',
// stack: 'Total',
arr: {},
data: new Array(7).fill(0)
}
}
objectArray.push(obj)
}
objectArray.map((li, index) => {
for (let j in li.arr) {
var index1 = days.map(item => item).indexOf(j)
if (index1 != -1) {
li.data[index1] = li.arr[j]
}
}
})
return objectArray
}
/**
* 分组统计
* @param datas 数据集合
* @param keys 分组键值
* @param callback 回调函数(例如求和还是计算总数)
* @returns {{}}
*/
static deWeight(arr, ...arguements) {
// console.log(arguements);//获得需要去重的字段数组
function getBoolean(o, m) {
let list = arguements.map(x => o[x] == m[x]); //值均为布尔
return list.every(i => i); //要使这些布尔值都真才能满足条件,因为要求的条件是 并且
}
let result = [];//新数组
//总数组与新数组比较,遍历总数组时用新数组的some方法进行判断
arr.map(o => !result.some(m => getBoolean(o, m)) ? result.push(o) : '');
return result;
}
static groupBy(datas, keys, callback) {
var groups = {};
var len = keys.length;
datas.forEach(function(data) {
var tempObj = null;
keys.forEach(function(key, index) {
var val = data[key];
if (tempObj == null) {
tempObj = groups;
}
//最后一个元素赋值操作
if (index == len - 1) {
var cal = 0;
if (tempObj.hasOwnProperty(val)) {
cal = tempObj[val];
}
tempObj[val] = callback(cal, data);
} else {
if (tempObj.hasOwnProperty(val)) {
tempObj = tempObj[val];
} else {
tempObj[val] = {};
tempObj = tempObj[val];
}
}
})
});
return groups;
}
}

+ 3
- 0
src/api/fetch.js View File

@ -0,0 +1,3 @@
import {httpGet,RefreshToken,httpPost,setCode,httpGet1,httpPost1,download} from './index.js'
import {api} from './all.js'
export const getlistNum1 = (params) => httpPost(params,api.getlistNum)

+ 101
- 0
src/api/index.js View File

@ -0,0 +1,101 @@
import request from '../utils/request';
import request1 from '../utils/request1';
import request2 from '../utils/request2';
import request3 from '../utils/requsetThree.js';
import JSEncrypt from 'jsencrypt'
import url1 from '../utils/url'
const httpGet = (query,url) => {
return request({
url:url1 +url,
method: "GET",
params: query
});
};
// const httpGet2 = (query,url) => {
// return request4({
// url:url1 +url,
// method: "GET",
// params: query
// });
// };
const httpPost = (query,url) => {
return request({
url: url1+url,
method: "POST",
data: query
});
};
const download = (query,url) => {
return request({
url: url1+url,
method: "GET",
params: query,
responseType: 'blob'
});
};
const downloadPost = (query,url) => {
return request({
url: url1+url,
method: "POST",
data: query,
responseType: 'blob'
});
};
function setCode(str,text){ // 注册方法
let pubKey = str;// ES6 模板字符串 引用 rsa 公钥
let encryptStr = new JSEncrypt();
encryptStr.setPublicKey(pubKey); // 设置 加密公钥
let data = encryptStr.encrypt(text.toString()); // 进行加密
return data;
}
const httpGet1 = (query,url) => {
return request1({
url: url1+url,
method: "GET",
params: query
});
};
const httpPost1 = (query,url) => {
return request2({
url: url1+url,
method: "POST",
data: query
});
};
const httgetaxio = (query,url) => {
return request1({
url: url,
method: "GET",
params: query
});
};
const httgetaxio1 = (query,url) => {
return request2({
url: url1+url,
method: "POST",
data: query
});
};
const httpPostno = (query,url) => {
return request3({
url: url1+url,
method: "POST",
data: query
});
};
const httpGetno = (query,url) => {
return request3({
url: url1+url,
method: "GET",
data: query
});
};
const silentRequest = (query,url) => {
return request3({
url: url1+url,
method: "GET",
params: query
});
};
export {httpGet,RefreshToken,httpPost,setCode,httpGet1,httpPost1,download,httgetaxio,httgetaxio1,downloadPost,httpPostno,httpGetno,silentRequest}

+ 20
- 0
src/api/registerDeletion/index.js View File

@ -0,0 +1,20 @@
/**
* @descripting 轮询功能
* @param {String} type 请求类型
* @param {String} url 地址
* @param {Object} data 请求数据
* @param {Number} delay 轮询间隔时间
*/
export default function polling(type, url, data, delay = 1000) {
return new Promise((resolve, reject) =>{
ajax[type](url, data).then(res => {
if (res.data === 'polling') { // 这个继续进行轮询的条件,需要根据自己的需要修改
setTimeout(() => {
resolve(polling(type, url, data, delay));
}, delay)
} else {
resolve(res);
}
})
})
}

+ 28
- 0
src/assets/css/color-dark.css View File

@ -0,0 +1,28 @@
.header{
background-color: #fff;
}
.login-wrap{
background: #324157;
}
.plugins-tips{
background: #eef1f6;
}
.plugins-tips a{
color: #20a0ff;
}
.el-upload--text em {
color: #20a0ff;
}
.pure-button{
background: #20a0ff;
}
.tags-li.active {
border: 1px solid #409EFF;
background-color: #409EFF;
}
.message-title{
color: #20a0ff;
}
.collapse-btn:hover{
background: rgb(40,52,70);
}

+ 4
- 0
src/assets/css/icon.css View File

@ -0,0 +1,4 @@
[class*=" el-icon-lx"],
[class^=el-icon-lx] {
font-family: lx-iconfont !important;
}

+ 87
- 0
src/assets/css/iconfont.css View File

@ -0,0 +1,87 @@
@font-face {
font-family: "iconfont"; /* Project id 2554665 */
src: url('iconfont.woff2?t=1622425370183') format('woff2'),
url('iconfont.woff?t=1622425370183') format('woff'),
url('iconfont.ttf?t=1622425370183') format('truetype');
}
.iconfont {
font-family: "iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-chazhaofangyuan:before {
content: "\e629";
}
.icon-tongjifenxi:before {
content: "\e63d";
}
.icon-kongkai:before {
content: "\e606";
}
.icon-shouye:before {
content: "\e619";
}
.icon-zhusujiedai:before {
content: "\e60d";
}
.icon-jiaoshihuaxiang:before {
content: "\e62b";
}
.icon-yangan:before {
content: "\e600";
}
.icon-wuyedangan:before {
content: "\e60a";
}
.icon-xueshengdangan:before {
content: "\e604";
}
.icon-mensuo1:before {
content: "\e6c3";
}
.icon-shebei:before {
content: "\e615";
}
.icon-yewuguanli:before {
content: "\e626";
}
.icon-tubiaozhizuomoban-101:before {
content: "\e60b";
}
.icon-jiaoshijiaoshiguanli:before {
content: "\e7c7";
}
.icon-renyuanguanli:before {
content: "\e63a";
}
.icon-loufang01:before {
content: "\e6bc";
}
.icon-bluetooth-01:before {
content: "\e737";
}
.icon-mensuo:before {
content: "\e637";
}

+ 539
- 0
src/assets/css/iconfont/demo.css View 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;
}

+ 1246
- 0
src/assets/css/iconfont/demo_index.html
File diff suppressed because it is too large
View File


+ 208
- 0
src/assets/css/iconfont/iconfont.css View File

@ -0,0 +1,208 @@
@font-face {
font-family: "iconfont"; /* Project id 2554665 */
src: url('iconfont.woff2?t=1651054305690') format('woff2'),
url('iconfont.woff?t=1651054305690') format('woff'),
url('iconfont.ttf?t=1651054305690') format('truetype');
}
.iconfont {
font-family: "iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.httpicon-shouye1:before {
content: "\e650";
}
.httpicon-weibo:before {
content: "\e62f";
}
.httpicon-weixin-copy:before {
content: "\e654";
}
.httpicon-QQ:before {
content: "\e675";
}
.httpicon-yiqiatong:before {
content: "\e647";
color: #333333;
}
.httpicon-gongdanguanli:before {
content: "\e624";
}
.httpicon-xitongguanli:before {
content: "\e64b";
color: #333333;
}
.httpicon-yonghuguanli:before {
content: "\e607";
color: #333333;
}
.httpicon-rizhiguanli:before {
content: "\eaad";
color: #333333;
}
.httpicon-icon-test:before {
content: "\e612";
}
.httpicon-wuxinhao:before {
content: "\e620";
}
.httpicon-xinhao38:before {
content: "\e697";
}
.httpicon-dianchi-didianliang:before {
content: "\e7a7";
}
.httpicon-mendoor13:before {
content: "\e6f7";
}
.httpicon-men:before {
content: "\e609";
}
.httpicon-liebiao:before {
content: "\e601";
}
.httpicon-liebiao1:before {
content: "\e602";
}
.httpicon-shanchu:before {
content: "\e696";
}
.httpicon-pingzhengguanli:before {
content: "\e610";
color: #333333;
}
.httpicon-bianji:before {
content: "\e603";
}
.httpicon-chaxun:before {
content: "\e7ef";
}
.httpicon-mima:before {
content: "\e635";
}
.httpicon-zhanghao:before {
content: "\e60e";
}
.httpicon-yanzhengma:before {
content: "\e6bf";
}
.httpicon-xia:before {
content: "\e689";
}
.httpicon-shouqi:before {
content: "\e605";
}
.httpicon-tuichu:before {
content: "\e65b";
}
.httpicon-shijian:before {
content: "\e64f";
}
.httpicon-chazhaofangyuan:before {
content: "\e629";
}
.httpicon-tongjifenxi:before {
content: "\e63d";
color: #333333;
}
.httpicon-kongkai:before {
content: "\e606";
}
.httpicon-shouye:before {
content: "\e619";
}
.httpicon-zhusujiedai:before {
content: "\e60d";
}
.httpicon-jiaoshihuaxiang:before {
content: "\e62b";
}
.httpicon-yangan:before {
content: "\e600";
}
.httpicon-wuyedangan:before {
content: "\e60a";
}
.httpicon-xueshengdangan:before {
content: "\e604";
}
.httpicon-mensuo1:before {
content: "\e6c3";
}
.httpicon-shebei:before {
content: "\e615";
color: #333333;
}
.httpicon-yewuguanli:before {
content: "\e626";
color: #333333;
}
.httpicon-tubiaozhizuomoban-101:before {
content: "\e60b";
}
.httpicon-jiaoshijiaoshiguanli:before {
content: "\e7c7";
}
.httpicon-renyuanguanli:before {
content: "\e63a";
}
.httpicon-loufang01:before {
content: "\e6bc";
color: #333333;
}
.httpicon-bluetooth-01:before {
content: "\e737";
}
.httpicon-mensuo:before {
content: "\e637";
}

+ 1
- 0
src/assets/css/iconfont/iconfont.js
File diff suppressed because it is too large
View File


+ 331
- 0
src/assets/css/iconfont/iconfont.json View File

@ -0,0 +1,331 @@
{
"id": "2554665",
"name": "物联网门锁管理系统",
"font_family": "iconfont",
"css_prefix_text": "httpicon-",
"description": "",
"glyphs": [
{
"icon_id": "4656563",
"name": "首页",
"font_class": "shouye1",
"unicode": "e650",
"unicode_decimal": 58960
},
{
"icon_id": "356478",
"name": "微博",
"font_class": "weibo",
"unicode": "e62f",
"unicode_decimal": 58927
},
{
"icon_id": "986189",
"name": "微信",
"font_class": "weixin-copy",
"unicode": "e654",
"unicode_decimal": 58964
},
{
"icon_id": "10268522",
"name": "QQ",
"font_class": "QQ",
"unicode": "e675",
"unicode_decimal": 58997
},
{
"icon_id": "6349785",
"name": "一卡通",
"font_class": "yiqiatong",
"unicode": "e647",
"unicode_decimal": 58951
},
{
"icon_id": "19526975",
"name": "工单管理",
"font_class": "gongdanguanli",
"unicode": "e624",
"unicode_decimal": 58916
},
{
"icon_id": "566972",
"name": "系统管理",
"font_class": "xitongguanli",
"unicode": "e64b",
"unicode_decimal": 58955
},
{
"icon_id": "6866628",
"name": "用户管理",
"font_class": "yonghuguanli",
"unicode": "e607",
"unicode_decimal": 58887
},
{
"icon_id": "15660196",
"name": "日志管理",
"font_class": "rizhiguanli",
"unicode": "eaad",
"unicode_decimal": 60077
},
{
"icon_id": "1629876",
"name": "电量条",
"font_class": "icon-test",
"unicode": "e612",
"unicode_decimal": 58898
},
{
"icon_id": "2328340",
"name": "无信号",
"font_class": "wuxinhao",
"unicode": "e620",
"unicode_decimal": 58912
},
{
"icon_id": "14143309",
"name": "信号",
"font_class": "xinhao38",
"unicode": "e697",
"unicode_decimal": 59031
},
{
"icon_id": "19985106",
"name": "电池-低电量",
"font_class": "dianchi-didianliang",
"unicode": "e7a7",
"unicode_decimal": 59303
},
{
"icon_id": "609485",
"name": "门",
"font_class": "mendoor13",
"unicode": "e6f7",
"unicode_decimal": 59127
},
{
"icon_id": "1327253",
"name": "门",
"font_class": "men",
"unicode": "e609",
"unicode_decimal": 58889
},
{
"icon_id": "5029",
"name": "列表",
"font_class": "liebiao",
"unicode": "e601",
"unicode_decimal": 58881
},
{
"icon_id": "7556169",
"name": "列表",
"font_class": "liebiao1",
"unicode": "e602",
"unicode_decimal": 58882
},
{
"icon_id": "15765352",
"name": "删 除",
"font_class": "shanchu",
"unicode": "e696",
"unicode_decimal": 59030
},
{
"icon_id": "1249065",
"name": "凭证管理",
"font_class": "pingzhengguanli",
"unicode": "e610",
"unicode_decimal": 58896
},
{
"icon_id": "5485615",
"name": "编辑",
"font_class": "bianji",
"unicode": "e603",
"unicode_decimal": 58883
},
{
"icon_id": "16505884",
"name": "查询",
"font_class": "chaxun",
"unicode": "e7ef",
"unicode_decimal": 59375
},
{
"icon_id": "6929256",
"name": "密码",
"font_class": "mima",
"unicode": "e635",
"unicode_decimal": 58933
},
{
"icon_id": "10281814",
"name": "账号",
"font_class": "zhanghao",
"unicode": "e60e",
"unicode_decimal": 58894
},
{
"icon_id": "6282785",
"name": "验证码",
"font_class": "yanzhengma",
"unicode": "e6bf",
"unicode_decimal": 59071
},
{
"icon_id": "7550203",
"name": "下",
"font_class": "xia",
"unicode": "e689",
"unicode_decimal": 59017
},
{
"icon_id": "6184954",
"name": "收起",
"font_class": "shouqi",
"unicode": "e605",
"unicode_decimal": 58885
},
{
"icon_id": "15778188",
"name": "退出",
"font_class": "tuichu",
"unicode": "e65b",
"unicode_decimal": 58971
},
{
"icon_id": "13637010",
"name": "时间",
"font_class": "shijian",
"unicode": "e64f",
"unicode_decimal": 58959
},
{
"icon_id": "386440",
"name": "查找房源",
"font_class": "chazhaofangyuan",
"unicode": "e629",
"unicode_decimal": 58921
},
{
"icon_id": "741927",
"name": "统计分析",
"font_class": "tongjifenxi",
"unicode": "e63d",
"unicode_decimal": 58941
},
{
"icon_id": "5149544",
"name": "空开",
"font_class": "kongkai",
"unicode": "e606",
"unicode_decimal": 58886
},
{
"icon_id": "5969562",
"name": "首页",
"font_class": "shouye",
"unicode": "e619",
"unicode_decimal": 58905
},
{
"icon_id": "7819599",
"name": "住宿接待",
"font_class": "zhusujiedai",
"unicode": "e60d",
"unicode_decimal": 58893
},
{
"icon_id": "8497502",
"name": "教师画像",
"font_class": "jiaoshihuaxiang",
"unicode": "e62b",
"unicode_decimal": 58923
},
{
"icon_id": "8728353",
"name": "烟感",
"font_class": "yangan",
"unicode": "e600",
"unicode_decimal": 58880
},
{
"icon_id": "9922613",
"name": "物业档案",
"font_class": "wuyedangan",
"unicode": "e60a",
"unicode_decimal": 58890
},
{
"icon_id": "10359997",
"name": "学生档案",
"font_class": "xueshengdangan",
"unicode": "e604",
"unicode_decimal": 58884
},
{
"icon_id": "10555228",
"name": "门锁",
"font_class": "mensuo1",
"unicode": "e6c3",
"unicode_decimal": 59075
},
{
"icon_id": "12314781",
"name": "设备",
"font_class": "shebei",
"unicode": "e615",
"unicode_decimal": 58901
},
{
"icon_id": "15232406",
"name": "业务管理",
"font_class": "yewuguanli",
"unicode": "e626",
"unicode_decimal": 58918
},
{
"icon_id": "17619151",
"name": "宿舍管理",
"font_class": "tubiaozhizuomoban-101",
"unicode": "e60b",
"unicode_decimal": 58891
},
{
"icon_id": "18493071",
"name": "教师教室管理",
"font_class": "jiaoshijiaoshiguanli",
"unicode": "e7c7",
"unicode_decimal": 59335
},
{
"icon_id": "20032506",
"name": "人员管理",
"font_class": "renyuanguanli",
"unicode": "e63a",
"unicode_decimal": 58938
},
{
"icon_id": "781660",
"name": "楼房-01",
"font_class": "loufang01",
"unicode": "e6bc",
"unicode_decimal": 59068
},
{
"icon_id": "18458589",
"name": "蓝牙",
"font_class": "bluetooth-01",
"unicode": "e737",
"unicode_decimal": 59191
},
{
"icon_id": "19117408",
"name": "门锁",
"font_class": "mensuo",
"unicode": "e637",
"unicode_decimal": 58935
}
]
}

BIN
src/assets/css/iconfont/iconfont.ttf View File


BIN
src/assets/css/iconfont/iconfont.woff View File


BIN
src/assets/css/iconfont/iconfont.woff2 View File


+ 539
- 0
src/assets/css/iconfont1/demo.css View 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;
}

+ 303
- 0
src/assets/css/iconfont1/demo_index.html View File

@ -0,0 +1,303 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>iconfont Demo</title>
<link rel="shortcut icon" href="//img.alicdn.com/imgextra/i4/O1CN01Z5paLz1O0zuCC7osS_!!6000000001644-55-tps-83-82.svg" type="image/x-icon"/>
<link rel="icon" type="image/svg+xml" href="//img.alicdn.com/imgextra/i4/O1CN01Z5paLz1O0zuCC7osS_!!6000000001644-55-tps-83-82.svg"/>
<link rel="stylesheet" href="https://g.alicdn.com/thx/cube/1.3.2/cube.min.css">
<link rel="stylesheet" href="demo.css">
<link rel="stylesheet" href="iconfont.css">
<script src="iconfont.js"></script>
<!-- jQuery -->
<script src="https://a1.alicdn.com/oss/uploads/2018/12/26/7bfddb60-08e8-11e9-9b04-53e73bb6408b.js"></script>
<!-- 代码高亮 -->
<script src="https://a1.alicdn.com/oss/uploads/2018/12/26/a3f714d0-08e6-11e9-8a15-ebf944d7534c.js"></script>
<style>
.main .logo {
margin-top: 0;
height: auto;
}
.main .logo a {
display: flex;
align-items: center;
}
.main .logo .sub-title {
margin-left: 0.5em;
font-size: 22px;
color: #fff;
background: linear-gradient(-45deg, #3967FF, #B500FE);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
</style>
</head>
<body>
<div class="main">
<h1 class="logo"><a href="https://www.iconfont.cn/" title="iconfont 首页" target="_blank">
<img width="200" src="https://img.alicdn.com/imgextra/i3/O1CN01Mn65HV1FfSEzR6DKv_!!6000000000514-55-tps-228-59.svg">
</a></h1>
<div class="nav-tabs">
<ul id="tabs" class="dib-box">
<li class="dib active"><span>Unicode</span></li>
<li class="dib"><span>Font class</span></li>
<li class="dib"><span>Symbol</span></li>
</ul>
<a href="https://www.iconfont.cn/manage/index?manage_type=myprojects&projectId=3985889" target="_blank" class="nav-more">查看项目</a>
</div>
<div class="tab-container">
<div class="content unicode" style="display: block;">
<ul class="icon_lists dib-box">
<li class="dib">
<span class="icon gongyu">&#xe619;</span>
<div class="name">主页</div>
<div class="code-name">&amp;#xe619;</div>
</li>
<li class="dib">
<span class="icon gongyu">&#xe742;</span>
<div class="name">数据大屏</div>
<div class="code-name">&amp;#xe742;</div>
</li>
<li class="dib">
<span class="icon gongyu">&#xe68f;</span>
<div class="name">签约 确认签约 电子签约</div>
<div class="code-name">&amp;#xe68f;</div>
</li>
<li class="dib">
<span class="icon gongyu">&#xeb11;</span>
<div class="name">全屏</div>
<div class="code-name">&amp;#xeb11;</div>
</li>
<li class="dib">
<span class="icon gongyu">&#xe603;</span>
<div class="name">关机</div>
<div class="code-name">&amp;#xe603;</div>
</li>
</ul>
<div class="article markdown">
<h2 id="unicode-">Unicode 引用</h2>
<hr>
<p>Unicode 是字体在网页端最原始的应用方式,特点是:</p>
<ul>
<li>支持按字体的方式去动态调整图标大小,颜色等等。</li>
<li>默认情况下不支持多色,直接添加多色图标会自动去色。</li>
</ul>
<blockquote>
<p>注意:新版 iconfont 支持两种方式引用多色图标:SVG symbol 引用方式和彩色字体图标模式。(使用彩色字体图标需要在「编辑项目」中开启「彩色」选项后并重新生成。)</p>
</blockquote>
<p>Unicode 使用步骤如下:</p>
<h3 id="-font-face">第一步:拷贝项目下面生成的 <code>@font-face</code></h3>
<pre><code class="language-css"
>@font-face {
font-family: 'gongyu';
src: url('iconfont.woff2?t=1686792116900') format('woff2'),
url('iconfont.woff?t=1686792116900') format('woff'),
url('iconfont.ttf?t=1686792116900') format('truetype');
}
</code></pre>
<h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
<pre><code class="language-css"
>.gongyu {
font-family: "gongyu" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
</code></pre>
<h3 id="-">第三步:挑选相应图标并获取字体编码,应用于页面</h3>
<pre>
<code class="language-html"
>&lt;span class="gongyu"&gt;&amp;#x33;&lt;/span&gt;
</code></pre>
<blockquote>
<p>"gongyu" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。</p>
</blockquote>
</div>
</div>
<div class="content font-class">
<ul class="icon_lists dib-box">
<li class="dib">
<span class="icon gongyu gy-zhuye"></span>
<div class="name">
主页
</div>
<div class="code-name">.gy-zhuye
</div>
</li>
<li class="dib">
<span class="icon gongyu gy-shujudaping"></span>
<div class="name">
数据大屏
</div>
<div class="code-name">.gy-shujudaping
</div>
</li>
<li class="dib">
<span class="icon gongyu gy-qianyuequerenqianyuedianziqianyue"></span>
<div class="name">
签约 确认签约 电子签约
</div>
<div class="code-name">.gy-qianyuequerenqianyuedianziqianyue
</div>
</li>
<li class="dib">
<span class="icon gongyu gy-quanping1"></span>
<div class="name">
全屏
</div>
<div class="code-name">.gy-quanping1
</div>
</li>
<li class="dib">
<span class="icon gongyu gy-guanji"></span>
<div class="name">
关机
</div>
<div class="code-name">.gy-guanji
</div>
</li>
</ul>
<div class="article markdown">
<h2 id="font-class-">font-class 引用</h2>
<hr>
<p>font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。</p>
<p>与 Unicode 使用方式相比,具有如下特点:</p>
<ul>
<li>相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。</li>
<li>因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。</li>
</ul>
<p>使用步骤如下:</p>
<h3 id="-fontclass-">第一步:引入项目下面生成的 fontclass 代码:</h3>
<pre><code class="language-html">&lt;link rel="stylesheet" href="./iconfont.css"&gt;
</code></pre>
<h3 id="-">第二步:挑选相应图标并获取类名,应用于页面:</h3>
<pre><code class="language-html">&lt;span class="gongyu gy-xxx"&gt;&lt;/span&gt;
</code></pre>
<blockquote>
<p>"
gongyu" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。</p>
</blockquote>
</div>
</div>
<div class="content symbol">
<ul class="icon_lists dib-box">
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#gy-zhuye"></use>
</svg>
<div class="name">主页</div>
<div class="code-name">#gy-zhuye</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#gy-shujudaping"></use>
</svg>
<div class="name">数据大屏</div>
<div class="code-name">#gy-shujudaping</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#gy-qianyuequerenqianyuedianziqianyue"></use>
</svg>
<div class="name">签约 确认签约 电子签约</div>
<div class="code-name">#gy-qianyuequerenqianyuedianziqianyue</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#gy-quanping1"></use>
</svg>
<div class="name">全屏</div>
<div class="code-name">#gy-quanping1</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#gy-guanji"></use>
</svg>
<div class="name">关机</div>
<div class="code-name">#gy-guanji</div>
</li>
</ul>
<div class="article markdown">
<h2 id="symbol-">Symbol 引用</h2>
<hr>
<p>这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇<a href="">文章</a>
这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:</p>
<ul>
<li>支持多色图标了,不再受单色限制。</li>
<li>通过一些技巧,支持像字体那样,通过 <code>font-size</code>, <code>color</code> 来调整样式。</li>
<li>兼容性较差,支持 IE9+,及现代浏览器。</li>
<li>浏览器渲染 SVG 的性能一般,还不如 png。</li>
</ul>
<p>使用步骤如下:</p>
<h3 id="-symbol-">第一步:引入项目下面生成的 symbol 代码:</h3>
<pre><code class="language-html">&lt;script src="./iconfont.js"&gt;&lt;/script&gt;
</code></pre>
<h3 id="-css-">第二步:加入通用 CSS 代码(引入一次就行):</h3>
<pre><code class="language-html">&lt;style&gt;
.icon {
width: 1em;
height: 1em;
vertical-align: -0.15em;
fill: currentColor;
overflow: hidden;
}
&lt;/style&gt;
</code></pre>
<h3 id="-">第三步:挑选相应图标并获取类名,应用于页面:</h3>
<pre><code class="language-html">&lt;svg class="icon" aria-hidden="true"&gt;
&lt;use xlink:href="#icon-xxx"&gt;&lt;/use&gt;
&lt;/svg&gt;
</code></pre>
</div>
</div>
</div>
</div>
<script>
$(document).ready(function () {
$('.tab-container .content:first').show()
$('#tabs li').click(function (e) {
var tabContent = $('.tab-container .content')
var index = $(this).index()
if ($(this).hasClass('active')) {
return
} else {
$('#tabs li').removeClass('active')
$(this).addClass('active')
tabContent.hide().eq(index).fadeIn()
}
})
})
</script>
</body>
</html>

+ 35
- 0
src/assets/css/iconfont1/iconfont.css View File

@ -0,0 +1,35 @@
@font-face {
font-family: "gongyu"; /* Project id 3985889 */
src: url('iconfont.woff2?t=1686792116900') format('woff2'),
url('iconfont.woff?t=1686792116900') format('woff'),
url('iconfont.ttf?t=1686792116900') format('truetype');
}
.gongyu {
font-family: "gongyu" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.gy-zhuye:before {
content: "\e619";
}
.gy-shujudaping:before {
content: "\e742";
}
.gy-qianyuequerenqianyuedianziqianyue:before {
content: "\e68f";
}
.gy-quanping1:before {
content: "\eb11";
}
.gy-guanji:before {
content: "\e603";
}

+ 1
- 0
src/assets/css/iconfont1/iconfont.js
File diff suppressed because it is too large
View File


+ 44
- 0
src/assets/css/iconfont1/iconfont.json View File

@ -0,0 +1,44 @@
{
"id": "3985889",
"name": "公寓系统",
"font_family": "gongyu",
"css_prefix_text": "gy-",
"description": "",
"glyphs": [
{
"icon_id": "4422025",
"name": "主页",
"font_class": "zhuye",
"unicode": "e619",
"unicode_decimal": 58905
},
{
"icon_id": "2611798",
"name": "数据大屏",
"font_class": "shujudaping",
"unicode": "e742",
"unicode_decimal": 59202
},
{
"icon_id": "783683",
"name": "签约 确认签约 电子签约",
"font_class": "qianyuequerenqianyuedianziqianyue",
"unicode": "e68f",
"unicode_decimal": 59023
},
{
"icon_id": "5387606",
"name": "全屏",
"font_class": "quanping1",
"unicode": "eb11",
"unicode_decimal": 60177
},
{
"icon_id": "6540380",
"name": "关机",
"font_class": "guanji",
"unicode": "e603",
"unicode_decimal": 58883
}
]
}

BIN
src/assets/css/iconfont1/iconfont.ttf View File


BIN
src/assets/css/iconfont1/iconfont.woff View File


BIN
src/assets/css/iconfont1/iconfont.woff2 View File


+ 495
- 0
src/assets/css/index.css View File

@ -0,0 +1,495 @@
/* padding */
.pt-1{
padding-top: 4px;
}
.pt-2{
padding-top: 8px;
}
.pt-3{
padding-top: 12px;
}
.pt-4{
padding-top: 16px;
}
.pt-5{
padding-top: 20px;
}
.pb-1{
padding-bottom: 4px;
}
.pb-2{
padding-bottom: 8px;
}
.pb-3{
padding-bottom: 12px;
}
.pb-4{
padding-bottom: 16px;
}
.pb-5{
padding-bottom: 20px;
}
.pl-1{
padding-left: 4px;
}
.pl-2{
padding-left: 8px;
}
.pl-3{
padding-left: 12px;
}
.pl-4{
padding-left: 16px;
}
.pr-5{
padding-left: 20px;
}
.pr-1{
padding-right: 4px;
}
.pr-2{
padding-right: 8px;
}
.pr-3{
padding-right: 12px;
}
.pr-4{
padding-right: 16px;
}
.pr-5{
padding-right: 20px;
}
.px-1{
padding-left: 4px;
padding-right: 4px;
}
.p-2{
padding-left: 8px;
padding-right: 8px;
}
.px-3{
padding-left: 12px;
padding-right: 12px;
}
.px-4{
padding-left: 16px;
padding-right: 16px;
}
.px-5{
padding-left: 20px;
padding-right: 20px;
}
.py-1{
padding-top: 4px;
padding-bottom: 4px;
}
.py-2{
padding-top: 8px;
padding-bottom: 8px;
}
.py-3{
padding-top: 12px;
padding-bottom: 12px;
}
.py-4{
padding-top: 16px;
padding-bottom: 16px;
}
.py-5{
padding-top: 20px;
padding-bottom: 20px;
}
/* margin */
.mt-1{
margin-top: 4px;
}
.mt-2{
margin-top: 8px;
}
.mt-3{
margin-top: 12px;
}
.mt-4{
margin-top: 16px;
}
.mt-5{
margin-top: 20px;
}
.mb-1{
margin-bottom: 4px;
}
.mb-2{
margin-bottom: 8px;
}
.mb-3{
margin-bottom: 12px;
}
.mb-4{
margin-bottom: 16px;
}
.mb-5{
margin-bottom: 20px;
}
.ml-1{
margin-left: 4px;
}
.ml-2{
margin-left: 8px;
}
.ml-3{
margin-left: 12px;
}
.ml-4{
margin-left: 16px;
}
.mr-5{
margin-left: 20px;
}
.mr-1{
margin-right: 4px;
}
.mr-2{
margin-right: 8px;
}
.mr-3{
margin-right: 12px;
}
.mr-4{
margin-right: 16px;
}
.mr-5{
margin-right: 20px;
}
.mx-1{
margin-left: 4px;
margin-right: 4px;
}
.mx-2{
margin-left: 8px;
margin-right: 8px;
}
.mx-3{
margin-left: 12px;
margin-right: 12px;
}
.mx-4{
margin-left: 16px;
margin-right: 16px;
}
.mx-5{
margin-left: 20px;
margin-right: 20px;
}
.my-1{
margin-top: 4px;
margin-bottom: 4px;
}
.my-2{
margin-top: 8px;
margin-bottom: 8px;
}
.my-3{
margin-top: 12px;
margin-bottom: 12px;
}
.my-4{
margin-top: 16px;
margin-bottom: 16px;
}
.my-5{
margin-top: 20px;
margin-bottom: 20px;
}
/*position*/
.position-absolute{
position: absolute;
}
.position-relative{
position: relative;
}
.left-10{
left: 10px;
}
.left-15{
left: 15px;
}
.left-20{
left: 20px;
}
.left-30{
left: 30px;
}
.top-10{
top: 10px;
}
.top-20{
top: 20px;
}
.right-20{
right: 20px;
}
.right-30{
right: 30px;
}
.right-40{
right: 40px;
}
/* display */
.hand-type{
cursor: pointer;
}
.d-flex{
display: flex;
}
.d-inlie-block{
display: inline-block;
}
.d-grid{
display: grid;
}
.grid-template-columns{
grid-template-columns: 0fr 2fr 2fr 0fr;
}
.align-center{
align-items: center;
}
.algin-items-stretch{
align-items: stretch;
}
.justify-space-between{
justify-content: space-between;
}
.justify-space-around{
justify-content: space-around;
}
.height-auto{
height: auto;
}
.height-percentage-100{
height: 100%;
}
/* 字体大小 */
.font-size-12{
font-size: 12px;
}
.font-size-13{
font-size: 13px;
}
.font-size-14{
font-size: 14px;
}
.font-size-14{
font-size: 14px;
}
.font-size-15{
font-size: 15px;
}
.font-size-16{
font-size: 16px;
}
.font-size-17{
font-size: 17px;
}
.font-size-18{
font-size: 18px;
}
.font-size-19{
font-size: 19px;
}
.font-size-20{
font-size: 20px;
}
.font-size-21{
font-size: 21px;
}
.font-size-22{
font-size: 22px;
}
.font-size-23{
font-size: 23px;
}
.font-size-24{
font-size: 24px;
}
.font-size-25{
font-size: 25px;
}
.font-size-26{
font-size: 26px;
}
.font-size-27{
font-size: 27px;
}
.font-size-28{
font-size: 28px;
}
.font-size-30{
font-size: 30px;
}
.font-size-32{
font-size: 32px;
}
.font-size-40{
font-size: 40px;
}
.font-style .font-size-30{
font-size: 30px;
}
.font-style .font-size-40{
font-size: 40px;
}
/* 文本对齐方式 */
.text-center{
text-align: center;
}
.text-left{
text-align: left;
}
.text-right{
text-align: right;
}
.text-center-justify{
text-align: justify;
}
/* 字体颜色 */
.color-red{
color: red;
}
.color-333{
color: #333;
}
.color-666{
color: #666;
}
.color-999{
color: #999;
}
.color-59adf7{
color: #59adf7;
}
.color-e94848{
color: #e94848;
}
.color-59adf7{
color: #59adf7;
}
.color-00000073{
color: #00000073;
}
.color-FB8C00{
color: #FB8C00;
}
.color-03A9F4{
color: #03A9F4;
}
.color-D32F2F{
color: #D32F2F;
}
.color-1DE9B6{
color: #1DE9B6;
}
.color-FF3D00{
color: #FF3D00;
}
.color-64DD17{
color: #64DD17;
}
.color-4CAF50{
color: #4CAF50;
}
.color-0091EA{
color: #0091EA;
}
.color-FF6D00{
color: #FF6D00;
}
.color-FFD600{
color: #FFD600;
}
.color-FF9100{
color: #FF9100;
}
.color-F56C6C{
color: #F56C6C;
}
.color-ff9900{
color: #ff9900;
}
/* 字体粗细 */
.font-weight-500{
font-weight: 500;
}
.font-weight-600{
font-weight: 600;
}
.font-weight-700{
font-weight: 700;
}
.font-weight-800{
font-weight: 800;
}
.font-weight-900{
font-weight: 900;
}
/* 宽度百分比 */
.width-percentage-10{
width: 10%;
}
.width-percentage-20{
width: 20%;
}
.width-percentage-30{
width: 30%;
}
.width-percentage-40{
width: 40%;
}
.width-percentage-50{
width: 50%;
}
.width-percentage-60{
width: 60%;
}
.width-percentage-70{
width: 70%;
}
.width-percentage-80{
width: 80%;
}
.width-percentage-90{
width: 90%;
}
.width-percentage-100{
width: 100%;
}
/*宽度px*/
.width-60-px{
width: 60px;
}
.width-70-px{
width: 70px;
}
.width-80-px{
width: 80px;
}
.width-90-px{
width: 90px;
}
.width-100-px{
width: 100px;
}
.width-3rem{
width: 3rem !important;
}

+ 5
- 0
src/assets/css/info/style.scss View File

@ -0,0 +1,5 @@
:root{
/*默认主题颜色*/
--custom-color: #e14eca;
--border-color:#e14eca;
}

+ 189
- 0
src/assets/css/main.css View File

@ -0,0 +1,189 @@
* {
margin: 0;
padding: 0;
}
html,
body,
#app,
.wrapper {
width: 100%;
height: 100%;
overflow-x: auto;
overflow-y: initial;
}
body {
font-family: 'Microsoft YaHei';
}
a {
text-decoration: none
}
.content-box {
position: absolute;
left: var(--sldebarLeft);
right: 0;
top: 50px;
bottom: 0;
padding-bottom: 30px;
-webkit-transition: left .3s ease-in-out;
transition: left .3s ease-in-out;
background: #fff;
}
.content {
width: auto;
height: 100%;
padding: 10px;
overflow-y: scroll;
box-sizing: border-box;
position: relative;
}
.content-collapse {
left: var(--sldebarLeft);
}
.container {
padding: 30px;
background: #fff;
border: 1px solid #ddd;
border-radius: 5px;
}
.crumbs {
margin: 10px 0;
}
.el-table th {
background-color: #f5f7fa !important;
}
.pagination {
margin: 20px 0;
text-align: right;
}
.plugins-tips {
padding: 20px 10px;
margin-bottom: 20px;
}
.el-button+.el-tooltip {
margin-left: 10px;
}
.el-table tr:hover {
background: #f6faff;
}
.mgb20 {
margin-bottom: 20px;
}
.move-enter-active,
.move-leave-active {
transition: opacity .1s ease;
}
.move-enter-from,
.move-leave-to {
opacity: 0;
}
/*BaseForm*/
.form-box {
width: 600px;
}
.form-box .line {
text-align: center;
}
.el-time-panel__content::after,
.el-time-panel__content::before {
margin-top: -7px;
}
.el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default) {
padding-bottom: 0;
}
/*Upload*/
.pure-button {
width: 150px;
height: 40px;
line-height: 40px;
text-align: center;
color: #fff;
border-radius: 3px;
}
.g-core-image-corp-container .info-aside {
height: 45px;
}
.el-upload--text {
background-color: #fff;
border: 1px dashed #d9d9d9;
border-radius: 6px;
box-sizing: border-box;
width: 360px;
height: 180px;
text-align: center;
cursor: pointer;
position: relative;
overflow: hidden;
}
.el-upload--text .el-icon-upload {
font-size: 67px;
color: #97a8be;
margin: 40px 0 16px;
line-height: 50px;
}
.el-upload--text {
color: #97a8be;
font-size: 14px;
text-align: center;
}
.el-upload--text em {
font-style: normal;
}
/*VueEditor*/
.ql-container {
min-height: 400px;
}
.ql-snow .ql-tooltip {
transform: translateX(117.5px) translateY(10px) !important;
}
.editor-btn {
margin-top: 20px;
}
/*markdown*/
.v-note-wrapper .v-note-panel {
min-height: 500px;
}
@media only screen and (max-width: 1080px){
.content-collapse{
left: var(--sldebarLeftOne);
}
}

+ 5
- 0
src/assets/css/primary/style.scss View File

@ -0,0 +1,5 @@
:root{
/*默认主题颜色*/
--custom-color: #59adf7;
--border-color:#4ca3f0;
}

+ 5
- 0
src/assets/css/success/style.scss View File

@ -0,0 +1,5 @@
:root{
/*默认主题颜色*/
--custom-color: #00f2c3;
--border-color:#00f2c3;
}

+ 5
- 0
src/assets/css/vue/style.scss View File

@ -0,0 +1,5 @@
:root{
/*默认主题颜色*/
--custom-color: #42b883;
--border-color:#42b883;
}

+ 107
- 0
src/assets/css/zTreeStyle.css View File

@ -0,0 +1,107 @@
/*-------------------------------------
zTree Style
version: 3.5.19
author: Hunter.z
email: hunter.z@263.net
website: http://code.google.com/p/jquerytree/
-------------------------------------*/
.ztree * {padding:0; margin:0; font-size:16px; font-family: Verdana, Arial, Helvetica, AppleGothic, sans-serif}
.ztree {margin:0; padding:5px; color:#333}
.ztree li{padding:0; margin:0; list-style:none; line-height:40px; text-align:left; white-space:nowrap; outline:0}
.ztree li ul{ margin:0; padding:0 0 0 18px}
.ztree li ul.line{ background:url(../img/line_conn.gif) 0 0 repeat-y;}
.ztree li a {padding:1px 3px 0 0; margin:0; cursor:pointer; height:17px; color:#333; background-color: transparent;
text-decoration:none; vertical-align:top; display: inline-block}
.ztree li a:hover {text-decoration:underline}
/* .ztree li a.curSelectedNode {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid; opacity:0.8;} */
.ztree li a.curSelectedNode {padding-top:0px; color:black; height:16px; opacity:0.8;}
.ztree li a.curSelectedNode::after{
content: '';
width: 100%;
height: 30px;
position: absolute;
z-index: -1;
left: 0;
background: #F5F7FA;
}
.ztree li a.curSelectedNode_Edit {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid; opacity:0.8;}
.ztree li a.tmpTargetNode_inner {padding-top:0px; background-color:#316AC5; color:white; height:16px; border:1px #316AC5 solid;
opacity:0.8; filter:alpha(opacity=80)}
.ztree li a.tmpTargetNode_prev {}
.ztree li a.tmpTargetNode_next {}
.ztree li a input.rename {height:14px; width:80px; padding:0; margin:0;
font-size:12px; border:1px #7EC4CC solid; *border:0px}
.ztree li span {line-height:16px; margin-right:2px;margin-left: 6px;}
.ztree li span.button {line-height:0; margin:0; width:16px; height:16px; display: inline-block; vertical-align:middle;
border:0 none; cursor: pointer;outline:none;
background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
background-image:url("../img/zTreeStandard.png"); *background-image:url("../img/zTreeStandard.gif")}
.ztree li span.button.chk {width:13px; height:13px; margin:0 3px 0 0; cursor: auto}
.ztree li span.button.chk.checkbox_false_full {background-position:0 0}
.ztree li span.button.chk.checkbox_false_full_focus {background-position:0 -14px}
.ztree li span.button.chk.checkbox_false_part {background-position:0 -28px}
.ztree li span.button.chk.checkbox_false_part_focus {background-position:0 -42px}
.ztree li span.button.chk.checkbox_false_disable {background-position:0 -56px}
.ztree li span.button.chk.checkbox_true_full {background-position:-14px 0}
.ztree li span.button.chk.checkbox_true_full_focus {background-position:-14px -14px}
.ztree li span.button.chk.checkbox_true_part {background-position:-14px -28px}
.ztree li span.button.chk.checkbox_true_part_focus {background-position:-14px -42px}
.ztree li span.button.chk.checkbox_true_disable {background-position:-14px -56px}
.ztree li span.button.chk.radio_false_full {background-position:-28px 0}
.ztree li span.button.chk.radio_false_full_focus {background-position:-28px -14px}
.ztree li span.button.chk.radio_false_part {background-position:-28px -28px}
.ztree li span.button.chk.radio_false_part_focus {background-position:-28px -42px}
.ztree li span.button.chk.radio_false_disable {background-position:-28px -56px}
.ztree li span.button.chk.radio_true_full {background-position:-42px 0}
.ztree li span.button.chk.radio_true_full_focus {background-position:-42px -14px}
.ztree li span.button.chk.radio_true_part {background-position:-42px -28px}
.ztree li span.button.chk.radio_true_part_focus {background-position:-42px -42px}
.ztree li span.button.chk.radio_true_disable {background-position:-42px -56px}
.ztree li span.button.switch {width:18px; height:18px}
.ztree li span.button.root_open{background-position:-92px -54px}
.ztree li span.button.root_close{background-position:-74px -54px}
.ztree li span.button.roots_open{background-position:-92px 0}
.ztree li span.button.roots_close{background-position:-74px 0}
.ztree li span.button.center_open{background-position:-92px -18px}
.ztree li span.button.center_close{background-position:-74px -18px}
.ztree li span.button.bottom_open{background-position:-92px -36px}
.ztree li span.button.bottom_close{background-position:-74px -36px}
.ztree li span.button.noline_open{background-position:-92px -72px}
.ztree li span.button.noline_close{background-position:-74px -72px}
.ztree li span.button.root_docu{ background:none;}
.ztree li span.button.roots_docu{background-position:-56px 0}
.ztree li span.button.center_docu{background-position:-56px -18px}
.ztree li span.button.bottom_docu{background-position:-56px -36px}
.ztree li span.button.noline_docu{ background:none;}
.ztree li span.button.ico_open{margin-right:2px; background-position:-110px -16px; vertical-align:middle; *vertical-align:middle}
.ztree li span.button.ico_close{margin-right:2px; background-position:-110px 0; vertical-align:middle; *vertical-align:middle}
.ztree li span.button.ico_docu{margin-right:2px; background-position:-110px -32px; vertical-align:middle; *vertical-align:middle}
.ztree li span.button.edit {margin-right:2px; background-position:-110px -48px; vertical-align:middle; *vertical-align:middle}
.ztree li span.button.remove {margin-right:2px; background-position:-110px -64px; vertical-align:middle; *vertical-align:middle}
.ztree li span.button.ico_loading{margin-right:2px; background:url(../img/loading.gif) no-repeat scroll 0 0 transparent; vertical-align:middle; *vertical-align:middle}
ul.tmpTargetzTree {background-color:#FFE6B0; opacity:0.8; filter:alpha(opacity=80)}
span.tmpzTreeMove_arrow {width:16px; height:16px; display: inline-block; padding:0; margin:2px 0 0 1px; border:0 none; position:absolute;
background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
background-position:-110px -80px; background-image:url("../img/zTreeStandard.png"); *background-image:url("../img/zTreeStandard.gif")}
ul.ztree.zTreeDragUL {margin:0; padding:0; position:absolute; width:auto; height:auto;overflow:hidden; background-color:#cfcfcf; border:1px #00B83F dotted; opacity:0.8; filter:alpha(opacity=80)}
.zTreeMask {z-index:10000; background-color:#cfcfcf; opacity:0.0; filter:alpha(opacity=0); position:absolute}
/* level style*/
/*.ztree li span.button.level0 {
display:none;
}
.ztree li ul.level0 {
padding:0;
background:none;
}*/

+ 257
- 0
src/assets/iconfont.css
File diff suppressed because it is too large
View File


BIN
src/assets/img/1.png View File

Before After
Width: 44  |  Height: 44  |  Size: 1.4 KiB

BIN
src/assets/img/1662.docx View File


BIN
src/assets/img/2.png View File

Before After
Width: 44  |  Height: 44  |  Size: 1.6 KiB

BIN
src/assets/img/3.png View File

Before After
Width: 44  |  Height: 44  |  Size: 1.7 KiB

BIN
src/assets/img/4.png View File

Before After
Width: 44  |  Height: 44  |  Size: 1.5 KiB

BIN
src/assets/img/add.png View File

Before After
Width: 81  |  Height: 80  |  Size: 5.5 KiB

BIN
src/assets/img/alarm.png View File

Before After
Width: 80  |  Height: 80  |  Size: 2.4 KiB

BIN
src/assets/img/alert.png View File

Before After
Width: 300  |  Height: 200  |  Size: 10 KiB

BIN
src/assets/img/avator.d7401229.png View File

Before After
Width: 120  |  Height: 120  |  Size: 8.5 KiB

BIN
src/assets/img/beijing02.jpg View File

Before After
Width: 600  |  Height: 600  |  Size: 126 KiB

BIN
src/assets/img/beijingtu.png View File

Before After
Width: 1920  |  Height: 1080  |  Size: 356 KiB

BIN
src/assets/img/beijingtu001.jpg View File

Before After
Width: 1700  |  Height: 1112  |  Size: 461 KiB

BIN
src/assets/img/beijingtu002.jpg View File

Before After
Width: 1700  |  Height: 799  |  Size: 666 KiB

BIN
src/assets/img/beijingtu003.jpg View File

Before After
Width: 1700  |  Height: 944  |  Size: 1.2 MiB

BIN
src/assets/img/beijingtu01.png View File

Before After
Width: 1890  |  Height: 1417  |  Size: 641 KiB

BIN
src/assets/img/beijingtu03.jpg View File

Before After
Width: 1920  |  Height: 960  |  Size: 501 KiB

BIN
src/assets/img/beijingtu04.jpg View File

Before After
Width: 1920  |  Height: 1008  |  Size: 100 KiB

BIN
src/assets/img/beijingtu05.jpg View File

Before After
Width: 1700  |  Height: 796  |  Size: 291 KiB

BIN
src/assets/img/beijingtu06.jpg View File

Before After
Width: 1700  |  Height: 1133  |  Size: 496 KiB

BIN
src/assets/img/beijingtu07.jpg View File

Before After
Width: 1700  |  Height: 1201  |  Size: 1.0 MiB

BIN
src/assets/img/beijingtu08.jpg View File

Before After
Width: 1700  |  Height: 956  |  Size: 118 KiB

BIN
src/assets/img/beijingtu09.jpg View File

Before After
Width: 2048  |  Height: 1362  |  Size: 61 KiB

BIN
src/assets/img/beijingtu10.jpg View File

Before After
Width: 1700  |  Height: 1135  |  Size: 4.0 MiB

BIN
src/assets/img/beijingtu11.jpg View File

Before After
Width: 1700  |  Height: 1135  |  Size: 408 KiB

BIN
src/assets/img/beijingtu12.jpg View File

Before After
Width: 1700  |  Height: 1133  |  Size: 1.3 MiB

BIN
src/assets/img/beijingtu20.jpg View File

Before After
Width: 1700  |  Height: 1150  |  Size: 280 KiB

BIN
src/assets/img/beijingtu21.jpg View File

Before After
Width: 1700  |  Height: 1133  |  Size: 815 KiB

BIN
src/assets/img/beijingtu22.jpg View File

Before After
Width: 1700  |  Height: 1045  |  Size: 1.6 MiB

BIN
src/assets/img/beijingtu23.jpg View File

Before After
Width: 1700  |  Height: 1215  |  Size: 1.8 MiB

BIN
src/assets/img/beijingtu24.jpg View File

Before After
Width: 1700  |  Height: 1275  |  Size: 225 KiB

BIN
src/assets/img/beijingtu25.jpg View File

Before After
Width: 1700  |  Height: 1133  |  Size: 857 KiB

BIN
src/assets/img/beijingtu26.jpg View File

Before After
Width: 1700  |  Height: 810  |  Size: 184 KiB

BIN
src/assets/img/beijingtu27.jpg View File

Before After
Width: 1700  |  Height: 1000  |  Size: 1.9 MiB

BIN
src/assets/img/beijingtu28.jpg View File

Before After
Width: 1700  |  Height: 1129  |  Size: 198 KiB

BIN
src/assets/img/beijingtu29.jpg View File

Before After
Width: 1700  |  Height: 1133  |  Size: 985 KiB

BIN
src/assets/img/beijingtu30.jpg View File

Before After
Width: 1700  |  Height: 1201  |  Size: 484 KiB

BIN
src/assets/img/beijingtu31.jpg View File

Before After
Width: 1700  |  Height: 1133  |  Size: 272 KiB

BIN
src/assets/img/beijingtu32.jpg View File

Before After
Width: 1700  |  Height: 1202  |  Size: 256 KiB

BIN
src/assets/img/beijingtu33.jpg View File

Before After
Width: 1700  |  Height: 810  |  Size: 184 KiB

BIN
src/assets/img/beijingtu34.jpg View File

Before After
Width: 1700  |  Height: 956  |  Size: 126 KiB

BIN
src/assets/img/beijingtu35.jpg View File

Before After
Width: 1700  |  Height: 956  |  Size: 137 KiB

BIN
src/assets/img/beijingtu36.jpg View File

Before After
Width: 1700  |  Height: 1237  |  Size: 996 KiB

BIN
src/assets/img/beijingtu37.jpg View File

Before After
Width: 1700  |  Height: 848  |  Size: 43 KiB

BIN
src/assets/img/beijingtu38.jpg View File

Before After
Width: 1700  |  Height: 846  |  Size: 402 KiB

BIN
src/assets/img/beijingtu50.jpg View File

Before After
Width: 1700  |  Height: 1130  |  Size: 1.2 MiB

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

Loading…
Cancel
Save