@ -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"] | |||
} | |||
} | |||
} |
@ -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 |
@ -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 |
@ -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": {} | |||
} | |||
} |
@ -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). |
@ -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' | |||
)) | |||
}) | |||
}) |
@ -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) | |||
} | |||
} |
@ -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') | |||
}) | |||
} | |||
} |
@ -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' | |||
} | |||
} |
@ -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' | |||
} | |||
} |
@ -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) | |||
} | |||
}) | |||
}) |
@ -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 |
@ -0,0 +1,7 @@ | |||
'use strict' | |||
const merge = require('webpack-merge') | |||
const prodEnv = require('./prod.env') | |||
module.exports = merge(prodEnv, { | |||
NODE_ENV: '"development"' | |||
}) |
@ -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 | |||
} | |||
} |
@ -0,0 +1,4 @@ | |||
'use strict' | |||
module.exports = { | |||
NODE_ENV: '"production"' | |||
} |
@ -0,0 +1,7 @@ | |||
'use strict' | |||
const merge = require('webpack-merge') | |||
const devEnv = require('./dev.env') | |||
module.exports = merge(devEnv, { | |||
NODE_ENV: '"testing"' | |||
}) |
@ -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) |
@ -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> |
@ -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" | |||
] | |||
} |
@ -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> |
@ -0,0 +1,7 @@ | |||
export default { | |||
install(Vue,options){ | |||
Vue.prototype.GlobalConst = { | |||
customCode:'d39eaa7fc1f34190869608259133d2fb', | |||
}; | |||
} | |||
} |
@ -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 | |||
} |
@ -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; | |||
} | |||
} |
@ -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) |
@ -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} |
@ -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); | |||
} | |||
}) | |||
}) | |||
} |
@ -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); | |||
} |
@ -0,0 +1,4 @@ | |||
[class*=" el-icon-lx"], | |||
[class^=el-icon-lx] { | |||
font-family: lx-iconfont !important; | |||
} |
@ -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"; | |||
} | |||
@ -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; | |||
} |
@ -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"; | |||
} | |||
@ -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 | |||
} | |||
] | |||
} |
@ -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; | |||
} |
@ -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"></span> | |||
<div class="name">主页</div> | |||
<div class="code-name">&#xe619;</div> | |||
</li> | |||
<li class="dib"> | |||
<span class="icon gongyu"></span> | |||
<div class="name">数据大屏</div> | |||
<div class="code-name">&#xe742;</div> | |||
</li> | |||
<li class="dib"> | |||
<span class="icon gongyu"></span> | |||
<div class="name">签约 确认签约 电子签约</div> | |||
<div class="code-name">&#xe68f;</div> | |||
</li> | |||
<li class="dib"> | |||
<span class="icon gongyu"></span> | |||
<div class="name">全屏</div> | |||
<div class="code-name">&#xeb11;</div> | |||
</li> | |||
<li class="dib"> | |||
<span class="icon gongyu"></span> | |||
<div class="name">关机</div> | |||
<div class="code-name">&#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" | |||
><span class="gongyu">&#x33;</span> | |||
</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"><link rel="stylesheet" href="./iconfont.css"> | |||
</code></pre> | |||
<h3 id="-">第二步:挑选相应图标并获取类名,应用于页面:</h3> | |||
<pre><code class="language-html"><span class="gongyu gy-xxx"></span> | |||
</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"><script src="./iconfont.js"></script> | |||
</code></pre> | |||
<h3 id="-css-">第二步:加入通用 CSS 代码(引入一次就行):</h3> | |||
<pre><code class="language-html"><style> | |||
.icon { | |||
width: 1em; | |||
height: 1em; | |||
vertical-align: -0.15em; | |||
fill: currentColor; | |||
overflow: hidden; | |||
} | |||
</style> | |||
</code></pre> | |||
<h3 id="-">第三步:挑选相应图标并获取类名,应用于页面:</h3> | |||
<pre><code class="language-html"><svg class="icon" aria-hidden="true"> | |||
<use xlink:href="#icon-xxx"></use> | |||
</svg> | |||
</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> |
@ -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"; | |||
} | |||
@ -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 | |||
} | |||
] | |||
} |
@ -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; | |||
} |
@ -0,0 +1,5 @@ | |||
:root{ | |||
/*默认主题颜色*/ | |||
--custom-color: #e14eca; | |||
--border-color:#e14eca; | |||
} |
@ -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); | |||
} | |||
} |
@ -0,0 +1,5 @@ | |||
:root{ | |||
/*默认主题颜色*/ | |||
--custom-color: #59adf7; | |||
--border-color:#4ca3f0; | |||
} |
@ -0,0 +1,5 @@ | |||
:root{ | |||
/*默认主题颜色*/ | |||
--custom-color: #00f2c3; | |||
--border-color:#00f2c3; | |||
} |
@ -0,0 +1,5 @@ | |||
:root{ | |||
/*默认主题颜色*/ | |||
--custom-color: #42b883; | |||
--border-color:#42b883; | |||
} |
@ -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; | |||
}*/ |