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