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