| @ -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; | |||||
| }*/ | |||||