Commit b3caa95d authored by looker's avatar looker

init

parents
Pipeline #130 canceled with stages
# 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
theme: jekyll-theme-cayman
\ No newline at end of file
require('./check-versions')()
process.env.NODE_ENV = 'production'
var ora = require('ora')
var rm = require('rimraf')
var path = require('path')
var chalk = require('chalk')
var webpack = require('webpack')
var config = require('../config')
var webpackConfig = require('./webpack.prod.conf')
var spinner = ora('building for production...')
spinner.start()
rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
if (err) throw err
webpack(webpackConfig, function (err, stats) {
spinner.stop()
if (err) throw err
process.stdout.write(stats.toString({
colors: true,
modules: false,
children: false,
chunks: false,
chunkModules: false
}) + '\n\n')
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'
))
})
})
var chalk = require('chalk')
var semver = require('semver')
var packageConfig = require('../package.json')
var shell = require('shelljs')
function exec (cmd) {
return require('child_process').execSync(cmd).toString().trim()
}
var 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 () {
var warnings = []
for (var i = 0; i < versionRequirements.length; i++) {
var 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 (var i = 0; i < warnings.length; i++) {
var warning = warnings[i]
console.log(' ' + warning)
}
console.log()
process.exit(1)
}
}
/* eslint-disable */
require('eventsource-polyfill')
var hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true')
hotClient.subscribe(function (event) {
if (event.action === 'reload') {
window.location.reload()
}
})
require('./check-versions')()
var config = require('../config')
if (!process.env.NODE_ENV) {
process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV)
}
var opn = require('opn')
var path = require('path')
var express = require('express')
var webpack = require('webpack')
var proxyMiddleware = require('http-proxy-middleware')
var webpackConfig = require('./webpack.dev.conf')
// default port where dev server listens for incoming traffic
var port = process.env.PORT || config.dev.port
// automatically open browser, if not set will be false
var autoOpenBrowser = !!config.dev.autoOpenBrowser
// Define HTTP proxies to your custom API backend
// https://github.com/chimurai/http-proxy-middleware
var proxyTable = config.dev.proxyTable
var app = express()
var compiler = webpack(webpackConfig)
var devMiddleware = require('webpack-dev-middleware')(compiler, {
publicPath: webpackConfig.output.publicPath,
quiet: true
})
var hotMiddleware = require('webpack-hot-middleware')(compiler, {
log: () => {}
})
// force page reload when html-webpack-plugin template changes
compiler.plugin('compilation', function (compilation) {
compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) {
hotMiddleware.publish({ action: 'reload' })
cb()
})
})
// proxy api requests
Object.keys(proxyTable).forEach(function (context) {
var options = proxyTable[context]
if (typeof options === 'string') {
options = { target: options }
}
app.use(proxyMiddleware(options.filter || context, options))
})
// handle fallback for HTML5 history API
app.use(require('connect-history-api-fallback')())
// serve webpack bundle output
app.use(devMiddleware)
// enable hot-reload and state-preserving
// compilation error display
app.use(hotMiddleware)
// serve pure static assets
var staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory)
app.use(staticPath, express.static('./static'))
var uri = 'http://localhost:' + port
var _resolve
var readyPromise = new Promise(resolve => {
_resolve = resolve
})
console.log('> Starting dev server...')
devMiddleware.waitUntilValid(() => {
console.log('> Listening at ' + uri + '\n')
// when env is testing, don't need open it
if (autoOpenBrowser && process.env.NODE_ENV !== 'testing') {
opn(uri)
}
_resolve()
})
var server = app.listen(port)
module.exports = {
ready: readyPromise,
close: () => {
server.close()
}
}
var path = require('path')
var config = require('../config')
var ExtractTextPlugin = require('extract-text-webpack-plugin')
exports.assetsPath = function (_path) {
var assetsSubDirectory = process.env.NODE_ENV === 'production'
? config.build.assetsSubDirectory
: config.dev.assetsSubDirectory
return path.posix.join(assetsSubDirectory, _path)
}
exports.cssLoaders = function (options) {
options = options || {}
var cssLoader = {
loader: 'css-loader',
options: {
minimize: process.env.NODE_ENV === 'production',
sourceMap: options.sourceMap
}
}
// generate loader string to be used with extract text plugin
function generateLoaders (loader, loaderOptions) {
var loaders = [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'
})
} 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) {
var output = []
var loaders = exports.cssLoaders(options)
for (var extension in loaders) {
var loader = loaders[extension]
output.push({
test: new RegExp('\\.' + extension + '$'),
use: loader
})
}
return output
}
var utils = require('./utils')
var config = require('../config')
var isProduction = process.env.NODE_ENV === 'production'
module.exports = {
loaders: utils.cssLoaders({
sourceMap: isProduction
? config.build.productionSourceMap
: config.dev.cssSourceMap,
extract: isProduction
})
}
var path = require('path')
var utils = require('./utils')
var config = require('../config')
var vueLoaderConfig = require('./vue-loader.conf')
function resolve (dir) {
return path.join(__dirname, '..', dir)
}
module.exports = {
entry: {
app: './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')
}
},
module: {
rules: [
{
test: /\.vue$/,
loader: 'vue-loader',
options: vueLoaderConfig
},
{
test: /\.js$/,
loader: 'babel-loader',
include: [resolve('src'), resolve('test')]
},
{
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('img/[name].[hash:7].[ext]')
}
},
{
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
}
}
]
}
}
var utils = require('./utils')
var webpack = require('webpack')
var config = require('../config')
var merge = require('webpack-merge')
var baseWebpackConfig = require('./webpack.base.conf')
var HtmlWebpackPlugin = require('html-webpack-plugin')
var FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
// add hot-reload related code to entry chunks
Object.keys(baseWebpackConfig.entry).forEach(function (name) {
baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name])
})
module.exports = merge(baseWebpackConfig, {
module: {
rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap })
},
// cheap-module-eval-source-map is faster for development
devtool: '#cheap-module-eval-source-map',
plugins: [
new webpack.DefinePlugin({
'process.env': config.dev.env
}),
// https://github.com/glenjamin/webpack-hot-middleware#installation--usage
new webpack.HotModuleReplacementPlugin(),
new webpack.NoEmitOnErrorsPlugin(),
// https://github.com/ampedandwired/html-webpack-plugin
new HtmlWebpackPlugin({
filename: 'index.html',
template: 'index.html',
inject: true
}),
new FriendlyErrorsPlugin()
]
})
var path = require('path')
var utils = require('./utils')
var webpack = require('webpack')
var config = require('../config')
var merge = require('webpack-merge')
var baseWebpackConfig = require('./webpack.base.conf')
var CopyWebpackPlugin = require('copy-webpack-plugin')
var HtmlWebpackPlugin = require('html-webpack-plugin')
var ExtractTextPlugin = require('extract-text-webpack-plugin')
var OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
var env = config.build.env
var webpackConfig = merge(baseWebpackConfig, {
module: {
rules: utils.styleLoaders({
sourceMap: config.build.productionSourceMap,
extract: true
})
},
devtool: config.build.productionSourceMap ? '#source-map' : false,
output: {
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
}),
new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: false
},
sourceMap: true
}),
// extract css into its own file
new ExtractTextPlugin({
filename: utils.assetsPath('css/[name].[contenthash].css')
}),
// Compress extracted CSS. We are using this plugin so that possible
// duplicated CSS from different components can be deduped.
new OptimizeCSSPlugin({
cssProcessorOptions: {
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: 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'
}),
// split vendor js into its own file
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
minChunks: function (module, count) {
// 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',
chunks: ['vendor']
}),
// copy custom static assets
new CopyWebpackPlugin([
{
from: path.resolve(__dirname, '../static'),
to: config.build.assetsSubDirectory,
ignore: ['.*']
}
])
]
})
if (config.build.productionGzip) {
var 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) {
var BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
webpackConfig.plugins.push(new BundleAnalyzerPlugin())
}
module.exports = webpackConfig
var merge = require('webpack-merge')
var prodEnv = require('./prod.env')
module.exports = merge(prodEnv, {
NODE_ENV: '"development"'
})
// see http://vuejs-templates.github.io/webpack for documentation.
var path = require('path')
module.exports = {
build: {
env: require('./prod.env'),
index: path.resolve(__dirname, '../dist/index.html'),
assetsRoot: path.resolve(__dirname, '../dist'),
assetsSubDirectory: 'static',
assetsPublicPath: './',
productionSourceMap: true,
// Gzip off by default as many popular static hosts such as
// Surge or Netlify already gzip all static assets for you.
// Before setting to `true`, make sure to:
// npm install --save-dev compression-webpack-plugin
productionGzip: false,
productionGzipExtensions: ['js', 'css'],
// Run the build command with an extra argument to
// View the bundle analyzer report after build finishes:
// `npm run build --report`
// Set to `true` or `false` to always turn it on or off
bundleAnalyzerReport: process.env.npm_config_report
},
dev: {
env: require('./dev.env'),
port: 8080,
autoOpenBrowser: true,
assetsSubDirectory: 'static',
assetsPublicPath: '/',
proxyTable: {},
// CSS Sourcemaps off by default because relative paths are "buggy"
// with this option, according to the CSS-Loader README
// (https://github.com/webpack/css-loader#sourcemaps)
// In our experience, they generally work as expected,
// just be aware of this issue when enabling this option.
cssSourceMap: false
}
}
module.exports = {
NODE_ENV: '"production"'
}
<!DOCTYPE html><html><head><meta charset=utf-8><title>wechat</title><link rel=stylesheet href=static/css/reset.css><link href=./static/css/app.2931c1ab2bf14b3070205be82a322dbe.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.d3be35f59c0dd60aaa47.js></script><script type=text/javascript src=./static/js/vendor.17b2cd8d08105dde1431.js></script><script type=text/javascript src=./static/js/app.1b3f590b64bb624453a0.js></script></body></html>
\ No newline at end of file
#app[data-v-6724880a]{display:-webkit-box;display:-ms-flexbox;display:flex;border-radius:50px;margin:20px auto;width:860px;height:600px;background-color:#fff}#app .sidebar[data-v-6724880a]{width:60px;height:600px;background:#2b2c2f}#app .main[data-v-6724880a]{-webkit-box-flex:1;-ms-flex:1;flex:1;height:600px;background:#f2f2f2}@font-face{font-family:iconfont;src:url(data:application/vnd.ms-fontobject;base64,JhkAAAwYAAABAAIAAAAAAAIABgMAAAAAAAABAPQBAAAAAExQAQAAAAAAABAAAAAAAAAAAAEAAAAAAAAAfukddAAAAAAAAAAAAAAAAAAAAAAAABAAaQBjAG8AbgBmAG8AbgB0AAAADABNAGUAZABpAHUAbQAAAIoAVgBlAHIAcwBpAG8AbgAgADEALgAwADsAIAB0AHQAZgBhAHUAdABvAGgAaQBuAHQAIAAoAHYAMAAuADkANAApACAALQBsACAAOAAgAC0AcgAgADUAMAAgAC0ARwAgADIAMAAwACAALQB4ACAAMQA0ACAALQB3ACAAIgBHACIAIAAtAGYAIAAtAHMAAAAQAGkAYwBvAG4AZgBvAG4AdAAAAAAAAAEAAAAQAQAABAAARkZUTXbQoxwAAAEMAAAAHEdERUYAOAAGAAABKAAAACBPUy8yV2pZZwAAAUgAAABWY21hcNMEmZ8AAAGgAAABeGN2dCANZf7IAAANuAAAACRmcGdtMPeelQAADdwAAAmWZ2FzcAAAABAAAA2wAAAACGdseWaBmAU4AAADGAAABzBoZWFkDbNEMwAACkgAAAA2aGhlYQffA3cAAAqAAAAAJGhtdHglPwHqAAAKpAAAACxsb2NhCFoKLAAACtAAAAAYbWF4cAEvCisAAAroAAAAIG5hbWUPLcUVAAALCAAAAitwb3N0pmfJ1AAADTQAAAB5cHJlcKW5vmYAABd0AAAAlQAAAAEAAAAAzD2izwAAAADVSYAmAAAAANVJgCYAAQAAAA4AAAAYAAAAAAACAAEAAwAKAAEABAAAAAIAAAABA/0B9AAFAAgCmQLMAAAAjwKZAswAAAHrADMBCQAAAgAGAwAAAAAAAAAAAAEQAAAAAAAAAAAAAABQZkVkAEAAeOZXA4D/gABcA4AAlgAAAAEAAAAAAAAAAAADAAAAAwAAABwAAQAAAAAAcgADAAEAAAAcAAQAVgAAABAAEAADAAAAAAB45gPmCOYK5jnmV///AAAAAAB45gPmBuYK5jnmV///AAD/ixoFAAAZ/xnRGa8AAQAAAAAAAAAKAAAAAAAAAAAABQAEAAcAAAEGAAABAAAAAAAAAAECAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUALP/hA7wDGAAWADAAOgBSAF4Bd0uwE1BYQEoCAQANDg0ADmYAAw4BDgNeAAEICAFcEAEJCAoGCV4RAQwGBAYMXgALBAtpDwEIAAYMCAZYAAoHBQIECwoEWRIBDg4NUQANDQoOQhtLsBdQWEBLAgEADQ4NAA5mAAMOAQ4DXgABCAgBXBABCQgKCAkKZhEBDAYEBgxeAAsEC2kPAQgABgwIBlgACgcFAgQLCgRZEgEODg1RAA0NCg5CG0uwGFBYQEwCAQANDg0ADmYAAw4BDgNeAAEICAFcEAEJCAoICQpmEQEMBgQGDARmAAsEC2kPAQgABgwIBlgACgcFAgQLCgRZEgEODg1RAA0NCg5CG0BOAgEADQ4NAA5mAAMOAQ4DAWYAAQgOAQhkEAEJCAoICQpmEQEMBgQGDARmAAsEC2kPAQgABgwIBlgACgcFAgQLCgRZEgEODg1RAA0NCg5CWVlZQChTUzs7MjEXF1NeU15bWDtSO1JLQzc1MToyOhcwFzBRETEYESgVQBMWKwEGKwEiDgIdASE1NCY1NC4CKwEVIQUVFBYUDgIjBiYrASchBysBIiciLgI9ARciBhQWMzI2NCYXBgcOAx4BOwYyNicuAScmJwE1ND4COwEyFh0BARkbGlMSJRwSA5ABChgnHoX+SgKiARUfIw4OHw4gLf5JLB0iFBkZIBMIdwwSEgwNEhKMCAYFCwQCBA8OJUNRUEAkFxYJBQkFBQb+pAUPGhW8HykCHwEMGScaTCkQHAQNIBsSYYg0Fzo6JRcJAQGAgAETGyAOpz8RGhERGhF8GhYTJA4QDQgYGg0jERMUAXfkCxgTDB0m4wAAAgBu/2oDmwL+ABgAIAArQCgIBwICAwFAAAAAAwIAA1kAAgEBAk0AAgIBUQABAgFFHh0aGRQSEAQPKwAiDgEVFBYXNQcGFx4BPwETMRYzMj4BNCYCIiY0NjIWFAKZwKNfOTLTFh0KFQYF1VhsYKNfX4X8s7P8sgL+X6NgSYMyAfgbGAkCAwMBBjtfo8Cj/cyz/LKy/AAAAAADAEEADAO/AkwAAwAHAAsAMUAuBgEFAAQDBQRXAAMAAgEDAlcAAQAAAUsAAQEATwAAAQBDCAgICwgLEhERERAHEys3ITUhNSE1IREVITVBA378ggN+/IIDfgxBvkIA/0FBAAAABABY/9wDqAOAAAMAEwAoAC4ANEAxJxIRDwgFAQABQAAABgUDAwEEAAFXAAQEAlEAAgILAkIpKSkuKS4sKyYlIyIgHhsHDysTNwEHAxE0Jic1NCYiBh0BBgcBJgERFA4CBwYVFBYzIR4BMjY3MwEGAQ4BIiYnWRgDNhhahmEtQC1NPAIgFv2XFCEWCRQVDwECBERdRAWM/dkRAWYDHCQcBAM9GfzJGAEQAQRenRsCIC0tIAIVOP3gJAEz/vwiNh8OBAoWDxUuPz8uAicr/gQSFxcSAAADAHf/wAOJA0AAAwAHAAsACrcLCQYEAwEDJis3BRElAQ0BJQERJRF4AX7+ggGR/owBcAF3/qIBapPSAZ7ZAQfM39/+7P5izwGoAAAABABA//QDwgMYADMANwA7AD8AikAPBAEKCQFAGBMCAD4vAQQ9S7AaUFhAKwAFAAYABQZmAAYABwgGB1cACAAJCggJVwMCAQMAAApBAAoKBFIABAQLBEIbQCgABQAGAAUGZgAGAAcIBgdXAAgACQoICVcACgAECgRWAwIBAwAACgBCWUAYPz49PDs6OTg3NjU0LiwaGRcWFRQSEQsOKyUuAjEuAzY3PgMuAicxMCIwIjkBDgMeAhceAQ4BDwEEBwYUFjMhMT4CJgMzFSMXMxUjFzMVIwNxDpSEAgYKAwoNCxgUCwwhSjYCAjZKIQwLFBgLDQsFCAQF/vogDg0BAyICBggFuP39M8nJMpiYSANdWgMJHR0mEQ42SlFOQCkCAilATlFKNg4RJh4aBwe0BgMqJgUQIxkB3TJVMlQzAAEAAP+pBAEDVwARACNAIAQBAAEBQAMBAD0AAQAAAU0AAQEAUQIBAAEARRUZEAMRKyUiJwc1LgE1ND4BIB4BFA4BIwIALjHhWWeJ7AEX7ImJ7IwfCH3QOqdgcL1ubr3gvm4AAAAHAAD/gAQAA4AACwAbABwAJAAlAC0AMwBNQEolHAIFBAFABgEEAwUDBAVmBwEFCQMFCWQAAAADBAADWQoBCQAIAgkIWQACAQECTQACAgFRAAECAUUuLi4zLjMTExQTGhcVFRALFysAIA4BEB4BID4BECYAIi4CND4CMh4CFA4BAQY0NjIWFAYiJQY0NjIWFAYiBR4BMjY3Aov+6uyJiewBFuyJif7pwLB/S0t/sMCwf0tLf/4pQiY3Jyc3AapCJzcmJjf+ZBSFroUUA4CJ7P7q7ImJ7AEW7PyvS3+wwLB/S0t/sMCwfwH3GzcnJzcnQhs3Jyc3J5hSa2tSAAABAAAAAQAAdB3pfl8PPPUACwQAAAAAANVJgCYAAAAA1UmAJgAA/2oEAQOAAAAACAACAAAAAAAAAAEAAAOA/2oAXAQBAAAAAAQBAAEAAAAAAAAAAAAAAAAAAAALBAAAAAAAAAABVQAAA+kALAQAAG4EAABBBAAAWAQAAHcEAABABAEAAAQAAAAAAAAAAAAAAAE8AYgBugIkAkoC6AMaA5gAAQAAAAsAXwAHAAAAAAACACYANABsAAAAigmWAAAAAAAAAAwAlgABAAAAAAABAAgAAAABAAAAAAACAAYACAABAAAAAAADACQADgABAAAAAAAEAAgAMgABAAAAAAAFAEUAOgABAAAAAAAGAAgAfwADAAEECQABABAAhwADAAEECQACAAwAlwADAAEECQADAEgAowADAAEECQAEABAA6wADAAEECQAFAIoA+wADAAEECQAGABABhWljb25mb250TWVkaXVtRm9udEZvcmdlIDIuMCA6IGljb25mb250IDogMjMtNS0yMDE3aWNvbmZvbnRWZXJzaW9uIDEuMDsgdHRmYXV0b2hpbnQgKHYwLjk0KSAtbCA4IC1yIDUwIC1HIDIwMCAteCAxNCAtdyAiRyIgLWYgLXNpY29uZm9udABpAGMAbwBuAGYAbwBuAHQATQBlAGQAaQB1AG0ARgBvAG4AdABGAG8AcgBnAGUAIAAyAC4AMAAgADoAIABpAGMAbwBuAGYAbwBuAHQAIAA6ACAAMgAzAC0ANQAtADIAMAAxADcAaQBjAG8AbgBmAG8AbgB0AFYAZQByAHMAaQBvAG4AIAAxAC4AMAA7ACAAdAB0AGYAYQB1AHQAbwBoAGkAbgB0ACAAKAB2ADAALgA5ADQAKQAgAC0AbAAgADgAIAAtAHIAIAA1ADAAIAAtAEcAIAAyADAAMAAgAC0AeAAgADEANAAgAC0AdwAgACIARwAiACAALQBmACAALQBzAGkAYwBvAG4AZgBvAG4AdAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAQACAFsBAgEDAQQBBQEGAQcBCAZzZWFyY2gPaWNvbmZvbnRnZW5nZHVvCGljb25mb250CGZhdm9yaXRlB2ljb25nLTIGeGlhb3hpCGJpYW9xaW5nAAAAAAEAAf//AA8AAAAAAAAAAAAAAAAAAAAAADIAMgMY/+EDgP9qAxj/4QOA/2qwACywIGBmLbABLCBkILDAULAEJlqwBEVbWCEjIRuKWCCwUFBYIbBAWRsgsDhQWCGwOFlZILAKRWFksChQWCGwCkUgsDBQWCGwMFkbILDAUFggZiCKimEgsApQWGAbILAgUFghsApgGyCwNlBYIbA2YBtgWVlZG7AAK1lZI7AAUFhlWVktsAIsIEUgsAQlYWQgsAVDUFiwBSNCsAYjQhshIVmwAWAtsAMsIyEjISBksQViQiCwBiNCsgoAAiohILAGQyCKIIqwACuxMAUlilFYYFAbYVJZWCNZISCwQFNYsAArGyGwQFkjsABQWGVZLbAELLAII0KwByNCsAAjQrAAQ7AHQ1FYsAhDK7IAAQBDYEKwFmUcWS2wBSywAEMgRSCwAkVjsAFFYmBELbAGLLAAQyBFILAAKyOxBAQlYCBFiiNhIGQgsCBQWCGwABuwMFBYsCAbsEBZWSOwAFBYZVmwAyUjYURELbAHLLEFBUWwAWFELbAILLABYCAgsApDSrAAUFggsAojQlmwC0NKsABSWCCwCyNCWS2wCSwguAQAYiC4BABjiiNhsAxDYCCKYCCwDCNCIy2wCixLVFixBwFEWSSwDWUjeC2wCyxLUVhLU1ixBwFEWRshWSSwE2UjeC2wDCyxAA1DVVixDQ1DsAFhQrAJK1mwAEOwAiVCsgABAENgQrEKAiVCsQsCJUKwARYjILADJVBYsABDsAQlQoqKIIojYbAIKiEjsAFhIIojYbAIKiEbsABDsAIlQrACJWGwCCohWbAKQ0ewC0NHYLCAYiCwAkVjsAFFYmCxAAATI0SwAUOwAD6yAQEBQ2BCLbANLLEABUVUWACwDSNCIGCwAWG1Dg4BAAwAQkKKYLEMBCuwaysbIlktsA4ssQANKy2wDyyxAQ0rLbAQLLECDSstsBEssQMNKy2wEiyxBA0rLbATLLEFDSstsBQssQYNKy2wFSyxBw0rLbAWLLEIDSstsBcssQkNKy2wGCywByuxAAVFVFgAsA0jQiBgsAFhtQ4OAQAMAEJCimCxDAQrsGsrGyJZLbAZLLEAGCstsBossQEYKy2wGyyxAhgrLbAcLLEDGCstsB0ssQQYKy2wHiyxBRgrLbAfLLEGGCstsCAssQcYKy2wISyxCBgrLbAiLLEJGCstsCMsIGCwDmAgQyOwAWBDsAIlsAIlUVgjIDywAWAjsBJlHBshIVktsCQssCMrsCMqLbAlLCAgRyAgsAJFY7ABRWJgI2E4IyCKVVggRyAgsAJFY7ABRWJgI2E4GyFZLbAmLLEABUVUWACwARawJSqwARUwGyJZLbAnLLAHK7EABUVUWACwARawJSqwARUwGyJZLbAoLCA1sAFgLbApLACwA0VjsAFFYrAAK7ACRWOwAUVisAArsAAWtAAAAAAARD4jOLEoARUqLbAqLCA8IEcgsAJFY7ABRWJgsABDYTgtsCssLhc8LbAsLCA8IEcgsAJFY7ABRWJgsABDYbABQ2M4LbAtLLECABYlIC4gR7AAI0KwAiVJiopHI0cjYSBYYhshWbABI0KyLAEBFRQqLbAuLLAAFrAEJbAEJUcjRyNhsAZFK2WKLiMgIDyKOC2wLyywABawBCWwBCUgLkcjRyNhILAEI0KwBkUrILBgUFggsEBRWLMCIAMgG7MCJgMaWUJCIyCwCUMgiiNHI0cjYSNGYLAEQ7CAYmAgsAArIIqKYSCwAkNgZCOwA0NhZFBYsAJDYRuwA0NgWbADJbCAYmEjICCwBCYjRmE4GyOwCUNGsAIlsAlDRyNHI2FgILAEQ7CAYmAjILAAKyOwBENgsAArsAUlYbAFJbCAYrAEJmEgsAQlYGQjsAMlYGRQWCEbIyFZIyAgsAQmI0ZhOFktsDAssAAWICAgsAUmIC5HI0cjYSM8OC2wMSywABYgsAkjQiAgIEYjR7AAKyNhOC2wMiywABawAyWwAiVHI0cjYbAAVFguIDwjIRuwAiWwAiVHI0cjYSCwBSWwBCVHI0cjYbAGJbAFJUmwAiVhsAFFYyMgWGIbIVljsAFFYmAjLiMgIDyKOCMhWS2wMyywABYgsAlDIC5HI0cjYSBgsCBgZrCAYiMgIDyKOC2wNCwjIC5GsAIlRlJYIDxZLrEkARQrLbA1LCMgLkawAiVGUFggPFkusSQBFCstsDYsIyAuRrACJUZSWCA8WSMgLkawAiVGUFggPFkusSQBFCstsDcssC4rIyAuRrACJUZSWCA8WS6xJAEUKy2wOCywLyuKICA8sAQjQoo4IyAuRrACJUZSWCA8WS6xJAEUK7AEQy6wJCstsDkssAAWsAQlsAQmIC5HI0cjYbAGRSsjIDwgLiM4sSQBFCstsDossQkEJUKwABawBCWwBCUgLkcjRyNhILAEI0KwBkUrILBgUFggsEBRWLMCIAMgG7MCJgMaWUJCIyBHsARDsIBiYCCwACsgiophILACQ2BkI7ADQ2FkUFiwAkNhG7ADQ2BZsAMlsIBiYbACJUZhOCMgPCM4GyEgIEYjR7AAKyNhOCFZsSQBFCstsDsssC4rLrEkARQrLbA8LLAvKyEjICA8sAQjQiM4sSQBFCuwBEMusCQrLbA9LLAAFSBHsAAjQrIAAQEVFBMusCoqLbA+LLAAFSBHsAAjQrIAAQEVFBMusCoqLbA/LLEAARQTsCsqLbBALLAtKi2wQSywABZFIyAuIEaKI2E4sSQBFCstsEIssAkjQrBBKy2wQyyyAAA6Ky2wRCyyAAE6Ky2wRSyyAQA6Ky2wRiyyAQE6Ky2wRyyyAAA7Ky2wSCyyAAE7Ky2wSSyyAQA7Ky2wSiyyAQE7Ky2wSyyyAAA3Ky2wTCyyAAE3Ky2wTSyyAQA3Ky2wTiyyAQE3Ky2wTyyyAAA5Ky2wUCyyAAE5Ky2wUSyyAQA5Ky2wUiyyAQE5Ky2wUyyyAAA8Ky2wVCyyAAE8Ky2wVSyyAQA8Ky2wViyyAQE8Ky2wVyyyAAA4Ky2wWCyyAAE4Ky2wWSyyAQA4Ky2wWiyyAQE4Ky2wWyywMCsusSQBFCstsFwssDArsDQrLbBdLLAwK7A1Ky2wXiywABawMCuwNistsF8ssDErLrEkARQrLbBgLLAxK7A0Ky2wYSywMSuwNSstsGIssDErsDYrLbBjLLAyKy6xJAEUKy2wZCywMiuwNCstsGUssDIrsDUrLbBmLLAyK7A2Ky2wZyywMysusSQBFCstsGgssDMrsDQrLbBpLLAzK7A1Ky2waiywMyuwNistsGssK7AIZbADJFB4sAEVMC0AAEu4AMhSWLEBAY5ZuQgACABjILABI0QgsAMjcLAORSAgS7gADlFLsAZTWliwNBuwKFlgZiCKVViwAiVhsAFFYyNisAIjRLMKCQUEK7MKCwUEK7MODwUEK1myBCgJRVJEswoNBgQrsQYBRLEkAYhRWLBAiFixBgNEsSYBiFFYuAQAiFixBgFEWVlZWbgB/4WwBI2xBQBEAAAA);src:url(data:application/vnd.ms-fontobject;base64,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#iefix) format("embedded-opentype"),url(data:application/font-woff;base64,d09GRgABAAAAAA+YABAAAAAAGBwAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABbAAAABoAAAAcdtCjHEdERUYAAAGIAAAAHQAAACAAOAAET1MvMgAAAagAAABHAAAAVldqWWdjbWFwAAAB8AAAAFsAAAFyzOy5jmN2dCAAAAJMAAAAGAAAACQNZf7IZnBnbQAAAmQAAAT8AAAJljD3npVnYXNwAAAHYAAAAAgAAAAIAAAAEGdseWYAAAdoAAAFTwAABzCBmQU5aGVhZAAADLgAAAAvAAAANg3HRDNoaGVhAAAM6AAAABwAAAAkB98DdmhtdHgAAA0EAAAAJAAAACohmAGVbG9jYQAADSgAAAAYAAAAGAj0CnptYXhwAAANQAAAACAAAAAgAS8CDG5hbWUAAA1gAAABRAAAAj0gSr5NcG9zdAAADqQAAABZAAAAeVkZb8pwcmVwAAAPAAAAAJUAAACVpbm+ZnicY2BgYGQAgjO2i86D6KueDWowGgBGmQYEAAB4nGNgZGBg4ANiCQYQYGJgBEIuIGYB8xgABLgAPQAAAHicY2Bk/sv4hYGVgYNpJtMZBgaGfgjN+JrBmJGTgYGJgY2ZAQYYBRgQICDNNYXBgaHiWThzw/8GhhjmBoZpIDUgOQBYCw12AHicY2BgYGaAYBkGRgYQyAHyGMF8FoYAIC0AhMxgmYpnzM84nnE9s3wW/v8/XIQNIfK/W4pR8r/kP8kLkpuhpqEARjYGuDAjE5BgQleAqYdagJl2RpMEACvmFfIAeJxjYEADRgxGzBL/HzI3/M+C0QBEiggzeJydVWl300YUlbxkT9qSxFBE2zETpzQambAFAy4EKbIL6eJAaCXoIicxXfgDfOxn/Zqn0J7Tj/y03jteElp6TtscS+++mTtv03sTcYyo7HkgrlFHSl73pLL+VCrxs6Su616eKOn1krpsp56SFlErTZXMxf0juUR1LlaySbBJxuteop6rPO+D0ksyrChLItoi2sq8LE1TTxw/TbU4vWSQpoGUjIKdSqOPEKpRL5GqDmVKh169noqbBVI2GvGoo6J6ECruHM85pY06YKRylcNcsVlt5HtJ1vP6j9JEp9jbfpxgw2P0I1eBVIzMwPY0HodPJNPRXiIzkX/suE6UhVIbXACvarDHoErxobjxQbYTyNR4zfF1Uak0MhXnus+y2Swdj5UQ5cHf2KGUG7q/g7PTpqhWY3H7wDMGOSmUKHpIFoAOU5mn9gjaPLRAZo36o+Ic8HUIL7IQZSrPlCzoUAcyZ3b3k2La3UnXZHGgXwYyb3b3kt3Hw0WvjvVlu75gCmcxepIUi4sR3Icy66dMu9QIRxkXc8DFPF7i1rRCyMgCjEojzFFb+J7ZqGucHWNvdB6P1VNk0kX83Ux+PTipWOE4y3pH3Eicu8eu68JVIIsIpxrvJ44s6lBlsPr70pLrLDhhmGfFQsWXF753EfkvMW4/kHdM4VK+a4oS5XumKFOeMUWFchmFpVwxxRTlqimmKWummKE8a4pZynNGpv1/6ft9+D6HM+fhm9KDb8oL8E35AXxTfgjflB/BN6WCb8o6fFNehG9KbeBtKVMRqpixdPjtJVq1oWo5M7jAPg9kzYj2RW8E0jBKddVJKXW/pVX+JPnrosdj65OSujVpbIi7ummz+Ph0xm9uXTLqhp2rT4wj5aE9dPXYNKFT+83h385d3SouuauIasOoNiKYBIA26LcC8U3zbDsQ85ZdfPxDMALUz6k1VFN17dSVGg/yvKu7GJ7kwOOIY6CN666uwEsTU1ZD8+FnKTIV+4O8qZVq57B1+WRbNYc2pMLbIvaVZJym7b3kVUmVlfeqtF4+n4YhenoW14S2bN3JpBKhUTPO8fCuKkXZkZZy1D9C55eivgeccXZB68Mx7kTdQbU17HT4+WYjawsmhqa0vROgZCxdFWNR5VmcY3QNax1v3BKerqcnFvEpNpmPwkp1fZSPbiPNK3ZZZtGoSnV0l/ZZ7Ks2/TI7aFgdZz9pqjbu6mFbjSpSPVW+BrQHdlbd+FAPKz7qoFFVNdvo2shjNC5rxn8MyGJc+etGqybT7+CWaqfNYs1dQXPfmCz3Ti9vvcl+K+emkab/VqMtI5f9HI75bRHg3zkodlPWQL01aYhxAdkLGC7VROcOzd3GIOI6+x+d0/1vzcIgOattjdk89eHq6SiSO0x5nGWbWdb1KM1RtJPEPkViq8OJwU2N4VhuygYG5O4/rN/DPeCuLIsPvG0kgLjP2sSonurg7h5XIzTsK7kPGJljx7kNsAPgEsTm2LUrHQC70iXnDsBn5BA8IIfgITkEu+TcBPicHIIvyCH4khyCr8i5BdAjh2CPHIJH5BA8JqcNsE8OwRNyCL4mh+AbcloACTkEKTkET8kheGZkc1Lmb6nIdaDvLLoB9L3tGihbUH4wcmXCzqhYdt8isg8sIvXQyNUJ9YiKpQ4sIvW5RaT+aOTahPoTFUv92SJSf7GI1BfGl5mBlNd6L3lHB38CK76sfgABAAH//wAPeJydVE1sVFUUPufe+37mvZk38+bvzU9nOjPtvOk47bPz0xno0Pa1QCItRdoq7aC0aEiNYBBXZaHQoDVUu9BoIsbogppgWGgDJroAhCUJiUbjggUBohtNt0Zj2lfvFGSh0aB59y/vnvOde77zAwJ0btyll2gEwtANvTAO0zg3shLYO2UPEwSP5gFtFqiGGp0GlGV82ocuWRFd0zq6RSa6p0Fl6vNelEF0y+IUKJJAmKqwhh81zTMGHo+iDcVHVgyOOPIviLJLmf2PkBEOufvhINnsQ2Hae/4Ch7McT0P50P8DbDQadsfERL1eKhrGxPTE9FNT9fH6+Mj2Wk+xt9RrdBvdY3oxoneE7EC4gGIBMxpJYLqnYvZULFLAUFoIBcNBjbSJZgFzaYlL5DIW6UMjIwbD5VK1YhqipNEk1sVSNWdhzsxhT6Wf1LEUTiBG47EJf7bFT99CJZJLLjjD5CyGWts0rVVLdTm7OhOZYDSaCshzbr/f7fH7l2RRUBlhXi27fWyv3W6EXYJLEETnY8EbC11qzZNWdEdzsd15XwvzpOL+Z05XjN7erOFCnJ/HQDylnRvQYzofL8fCgXbN55EjMU+bHgji3I9qJOBOmD8AMBjc+IVeowaUoQZ1GIA3bC9DxYV2JECg/1FkfSMrMR7hAggggiDO8lWSRWkSZHDxUExSghRAGQRFYePAmMp4ADv+SRoUYArbd18Jhhp2ZKC/b1u9d+uWWpWT3RmLGuFQ0K+rWiFrkaJFq7V+apFcsTvTndnKcyFJjCRq6EUmNalPF/uJScuhNuP+pC9p775GRIUqHjUSVN3p4Soh1eG0Ww1GVI8qyExwfk9pHqQZIsrCl+vr5evXS2fOPEYP7KeuRMLUterw2B47T0je3jM2XNV0MxmTpM9F+ogp+NqieKv0ZOmJMlAYBDf9iuzmJwlUKNqWiAIwKrBJ/ot7SCYBAXAEEOFxfoDtsiyrsurXdd0nBQq1dM/mp4fSPYP0xNqpe9M9eGUINgYHAYDAixuH6QfEgQikoGB3yBIhFG1+RQnQBreCZBQIwTFAgjuTiVg06PcxbwEyGvKcNXokkfM1gIEiT9N+rJgkY1aqpXCQvH91eWZr6btwQgmJwvdTLxxcnplZWLt4ce0CcWaWD+56tYS/xSMuQimK9Znlq8vrN/jdhTVoGofjG9foaTpw33flC9UlMorULNQEPYsezKKe1Y/jCecUvu0s4TGcc87i4Xe+xY9uonTj9m1n1Xn2a/wEmrTAxnmGdB/o0GanGHK6bIrQt0neaJO8Md4PEHaGoj6qF7KZnNRjNasLU0kMathGwCrebTy3uIrG6uLi6lKr/Mo3vecOHrt89OjlO1eOchsStzHPgM7zt8ahBdohC10850ft4WwLERjaIvLAUSbMSii4qOA61PSSazQUdIFMXPLfuLYsq2yVA4FgIGaEQj7VKEBKQ18SU/3oM4G3B17/pSThL0Rxk3Ixk/3zICSxVK2RN52fmy/GMF+dn66unBwZOblyb3PyQ2Ytl6vh+aFczTRrzqHgwqcLQTq/uPpAae2zB+LNDX+NNzVyQ/e2M+NHjow3a7yxcYue475TCEAHWFCxizm/7pUFzipPJVHgIWaAk7x6yRh3UCVD+XzeyludBTPblkkl45K3EKihRPWKmeNdMSMmUJTQRJ33REkMNetw06Eyirw2M2auEaHVyP7Xn+myu0a3kVR4/b1gOuwKhrxI2I4DO4Sl9Zs6ztKW9hZG+6Jr1yPoQzb9YZykurpSJLRl/U47lp21TLVVY0rYG7IGBngTKDjMbxh++AO41jaBAHicY2BkYGAA4n8Loori+W2+MsizMIDAVc8GNQT9P4uFkbkByOVgYAKJAgAncwmyAHicY2BkYGBu+J/FEMMCZDEwAEkwjQS4AES+Al94nGNhgADGUAYG5pcMOiwMDI5QnA/EFSyMDAwsIAWRAEOBA04AAAAAAAAAAAE8AdoCDAJYAn4CsAMuA5gAAQAAAAsAXwAHAAAAAAACACYANABsAAAAigF3AAAAAHicfZC7TsNAEEWv81KQKCJampFFkRRrrR1b5FHj0NDSR4mdWAq2ZDsP8QmImhK+gZav43qzNBSxtTNndq9n7hrANT7goHkc9HFjuYUeRpbbuMOr5Q4135a7eHBiyz30nU8qnc4Vdwbmq4Zb7H9ruY1HaMsdar4sd/GGH8s9DJx3ZFihQI7UxBrIVkWeFjnpCQnWFOzxwiJZZ3vm2OqaXGJDiSCAx2mCGdf/fufdAGMoRFwBlT7u2Ygz4qLcJBJ4WmbyN5cYjFWkAu1TdcHeM2eXqChpjoRdGxdzUs03xZLGa55tqTg7GeJAhYcpQv5xoZsd48RQyRiZWygsjGNtq5PpHRo+Mro8d02VmljRSlJWWZGL7+m51HW63NfFNuNdhgftTcORqJ1MRJUSaVELCTTTSfxQ1FHchSsqFVVduuwvIOhZK3icY2BiwA+4gZiRgYkhmpGJkZmRhZGVkY2RnZGDPTM5Py9d14gfRKfl55Wkp+alp5TmsxWnJhYlZ3CkJZblF2WWpLJVZCbmV2RyJAGpwsy8dA6YegAyihiaAAAAS7gAyFJYsQEBjlm5CAAIAGMgsAEjRCCwAyNwsA5FICBLuAAOUUuwBlNaWLA0G7AoWWBmIIpVWLACJWGwAUVjI2KwAiNEswoJBQQrswoLBQQrsw4PBQQrWbIEKAlFUkSzCg0GBCuxBgFEsSQBiFFYsECIWLEGA0SxJgGIUVi4BACIWLEGAURZWVlZuAH/hbAEjbEFAEQAAAA=) format("woff"),url(data:application/x-font-ttf;base64,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) format("truetype"),url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiID4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8bWV0YWRhdGE+CkNyZWF0ZWQgYnkgRm9udEZvcmdlIDIwMTIwNzMxIGF0IFR1ZSBNYXkgMjMgMTM6NTk6MDIgMjAxNwogQnkgYWRtaW4KPC9tZXRhZGF0YT4KPGRlZnM+Cjxmb250IGlkPSJpY29uZm9udCIgaG9yaXotYWR2LXg9IjEwMjQiID4KICA8Zm9udC1mYWNlIAogICAgZm9udC1mYW1pbHk9Imljb25mb250IgogICAgZm9udC13ZWlnaHQ9IjUwMCIKICAgIGZvbnQtc3RyZXRjaD0ibm9ybWFsIgogICAgdW5pdHMtcGVyLWVtPSIxMDI0IgogICAgcGFub3NlLTE9IjIgMCA2IDMgMCAwIDAgMCAwIDAiCiAgICBhc2NlbnQ9Ijg5NiIKICAgIGRlc2NlbnQ9Ii0xMjgiCiAgICB4LWhlaWdodD0iNzkyIgogICAgYmJveD0iMCAtMTUwLjI1IDEwMjUgODk2IgogICAgdW5kZXJsaW5lLXRoaWNrbmVzcz0iMCIKICAgIHVuZGVybGluZS1wb3NpdGlvbj0iMCIKICAgIHVuaWNvZGUtcmFuZ2U9IlUrMDA3OC1FNjU3IgogIC8+CjxtaXNzaW5nLWdseXBoIAogLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSIubm90ZGVmIiAKIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iLm5vdGRlZiIgCiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Ii5udWxsIiBob3Jpei1hZHYteD0iMCIgCiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Im5vbm1hcmtpbmdyZXR1cm4iIGhvcml6LWFkdi14PSIzNDEiIAogLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ4IiB1bmljb2RlPSJ4IiBob3Jpei1hZHYteD0iMTAwMSIgCmQ9Ik0yODEgNTQzcS0yNyAtMSAtNTMgLTFoLTgzcS0xOCAwIC0zNi41IC02dC0zMi41IC0xOC41dC0yMyAtMzJ0LTkgLTQ1LjV2LTc2aDkxMnY0MXEwIDE2IC0wLjUgMzB0LTAuNSAxOHEwIDEzIC01IDI5dC0xNyAyOS41dC0zMS41IDIyLjV0LTQ5LjUgOWgtMTMzdi05N2gtNDM4djk3ek05NTUgMzEwdi01MnEwIC0yMyAwLjUgLTUydDAuNSAtNTh0LTEwLjUgLTQ3LjV0LTI2IC0zMHQtMzMgLTE2dC0zMS41IC00LjVxLTE0IC0xIC0yOS41IC0wLjUKdC0yOS41IDAuNWgtMzJsLTQ1IDEyOGgtNDM5bC00NCAtMTI4aC0yOWgtMzRxLTIwIDAgLTQ1IDFxLTI1IDAgLTQxIDkuNXQtMjUuNSAyM3QtMTMuNSAyOS41dC00IDMwdjE2N2g5MTF6TTE2MyAyNDdxLTEyIDAgLTIxIC04LjV0LTkgLTIxLjV0OSAtMjEuNXQyMSAtOC41cTEzIDAgMjIgOC41dDkgMjEuNXQtOSAyMS41dC0yMiA4LjV6TTMxNiAxMjNxLTggLTI2IC0xNCAtNDhxLTUgLTE5IC0xMC41IC0zN3QtNy41IC0yNXQtMyAtMTV0MSAtMTQuNQp0OS41IC0xMC41dDIxLjUgLTRoMzdoNjdoODFoODBoNjRoMzZxMjMgMCAzNCAxMnQyIDM4cS01IDEzIC05LjUgMzAuNXQtOS41IDM0LjVxLTUgMTkgLTExIDM5aC0zNjh6TTMzNiA0OTh2MjI4cTAgMTEgMi41IDIzdDEwIDIxLjV0MjAuNSAxNS41dDM0IDZoMTg4cTMxIDAgNTEuNSAtMTQuNXQyMC41IC01Mi41di0yMjdoLTMyN3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic2VhcmNoIiB1bmljb2RlPSImI3hlNjA3OyIgCmQ9Ik01NjkgNzY2cS05NiAwIC0xNzcuNSAtNDcuNXQtMTI5IC0xMjl0LTQ3LjUgLTE3Ny41cTAgLTczIDI4LjUgLTEzOC41dDc4LjUgLTExNS41djFsLTIxMSAtMjQ4cS0yMiAtMjcgNyAtNTFxMTAgLTkgMjAuNSAtMTB0MTYuNSAybDUgM2wyMTMgMjYydjBxODggLTU5IDE5NiAtNTlxOTYgMCAxNzcuNSA0Ny41dDEyOSAxMjl0NDcuNSAxNzcuNXQtNDcuNSAxNzcuNXQtMTI5IDEyOXQtMTc3LjUgNDcuNXpNNTY5IDEwNwpxLTEyNiAwIC0yMTUuNSA4OS41dC04OS41IDIxNS41dDg5LjUgMjE1dDIxNS41IDg5dDIxNSAtODl0ODkgLTIxNXQtODkgLTIxNS41dC0yMTUgLTg5LjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Imljb25mb250Z2VuZ2R1byIgdW5pY29kZT0iJiN4ZTYwNjsiIApkPSJNNjUgMTJoODk0djY1aC04OTR2LTY1ek02NSAyNjdoODk0djY2aC04OTR2LTY2ek02NSA1ODh2LTY1aDg5NHY2NWgtODk0eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJpY29uZm9udCIgdW5pY29kZT0iJiN4ZTY1NzsiIApkPSJNODkgODI5bDI0IDI1bDgyMiAtODIzbC0yNCAtMjR6TTgyMSAyNzl2MjYwcTAgOTQgLTY3IDE3Mi41dC0xNjQgMTA1LjV2MnEwIDMyIC0yMi41IDU0LjV0LTU0LjUgMjIuNXQtNTQuNSAtMjIuNXQtMjIuNSAtNTQuNXYtMnEtNzcgLTIxIC0xMzcgLTc3bDU0NCAtNTQ0cS0yMiAzNiAtMjIgODN6TTIwNCA1Mzl2LTI2MHEwIC0zNCAtMTAgLTYxdC0yNi41IC00Mi41dC0yNy41IC0yMi41dC0yMCAtMTFxLTIwIC0xMCAtMjAgLTMyCnEwIC0xNSAxMC41IC0yNS41dDI1LjUgLTEwLjVoMjU4cTQgLTQ2IDM4IC03Ny41dDgwLjUgLTMxLjV0ODAuNSAzMS41dDM5IDc3LjVoMTQwbC01NTEgNTUxcS0xNyAtNDMgLTE3IC04NnpNNTYyIDc0cS0zIC0xOCAtMTcgLTI5LjV0LTMyIC0xMS41dC0zMiAxMS41dC0xOCAyOS41aDk5eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmYXZvcml0ZSIgdW5pY29kZT0iJiN4ZTYwODsiIApkPSJNMTIwIDE0N2wzODIgLTIxMHY0MTRsLTM4MiAyMTd2LTQyMXpNNTIxIDgzMWwtMzcyIC0yMDRsMzY4IC0yMjNsMzc1IDIyM3pNNTQyIDM1MXYtNDE0bDM2MiAyMDd2NDI0eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJpY29uZy0yIiB1bmljb2RlPSImI3hlNjAzOyIgCmQ9Ik04ODEgNzJxLTE0IDMgLTg4IDQ5LjV0LTE0MCA5MS41bC02NiA0NWwtNSA3LjV0LTggMTl0LTYuNSAyOXQzLjUgMzMuNXQxOCAzNnExMSAxNCAyMyA0MXQyMiA2NHQxNS41IDc3LjV0LTAuNSA3OS41dC0yMi41IDcxdC01My41IDUyLjV0LTkxIDIyLjV2MGgtMWgtMWgtMWgtMXYwcS01NCAtMiAtOTEgLTIyLjV0LTUzLjUgLTUyLjV0LTIyLjUgLTcxdC0wLjUgLTc5LjV0MTUuNSAtNzcuNXQyMiAtNjR0MjMgLTQxcTEzIC0xNyAxOC41IC0zNgp0MyAtMzR0LTYuNSAtMjh0LTggLTIwbC01IC03cS0yNjIgLTE4MCAtMjk0IC0xODZxLTE0IC0zIC0xNCAtMjR0Ni41IC00MHQ3LjUgLTE5aDgwMnYwcTIgNSA1IDEzdDcgMjUuNXQxLjUgMzB0LTEzLjUgMTQuNXpNNzA4IDU0N2gyNTN2LTUwaC0yNTN2NTB6TTc1OSA0MTJoMjAxdi01MGgtMjAxdjUwek04MDkgMjc4aDE1MnYtNTFoLTE1MnY1MXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ieGlhb3hpIiB1bmljb2RlPSImI3hlNjBhOyIgaG9yaXotYWR2LXg9IjEwMjUiIApkPSJNNTEyIDMxcS00NiAwIC05NSA4bC0yMjUgLTEyNXYyMDhxLTg5IDU4IC0xNDAuNSAxNDEuNXQtNTEuNSAxNzkuNXEwIDExMiA2OC41IDIwNi41dDE4Ni41IDE0OS41dDI1Ny41IDU1dDI1Ny41IC01NXQxODYuNSAtMTQ5LjV0NjguNSAtMjA2LjV0LTY4LjUgLTIwN3QtMTg2LjUgLTE1MHQtMjU4IC01NXYweiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJiaWFvcWluZyIgdW5pY29kZT0iJiN4ZTYzOTsiIApkPSJNNTEyIDg5NnEtMTM5IDAgLTI1NyAtNjguNXQtMTg2LjUgLTE4Ni41dC02OC41IC0yNTd0NjguNSAtMjU3dDE4Ni41IC0xODYuNXQyNTcgLTY4LjV0MjU3IDY4LjV0MTg2LjUgMTg2LjV0NjguNSAyNTd0LTY4LjUgMjU3dC0xODYuNSAxODYuNXQtMjU3IDY4LjV6TTUxMiAtOTBxLTk2IDAgLTE4NCAzNy41dC0xNTEuNSAxMDF0LTEwMSAxNTEuNXQtMzcuNSAxODR0MzcuNSAxODR0MTAxIDE1MS41dDE1MS41IDEwMXQxODQgMzcuNQp0MTg0IC0zNy41dDE1MS41IC0xMDF0MTAxIC0xNTEuNXQzNy41IC0xODR0LTM3LjUgLTE4NHQtMTAxIC0xNTEuNXQtMTUxLjUgLTEwMXQtMTg0IC0zNy41ek0zMTMgNDg4ek0yNDcgNDg4LjVxMCAyNy41IDE5IDQ3dDQ2LjUgMTkuNXQ0NyAtMTkuNXQxOS41IC00N3QtMTkuNSAtNDd0LTQ3IC0xOS41dC00Ni41IDE5LjV0LTE5IDQ3ek03MTEgNDg4ek02NDUgNDg4LjVxMCAyNy41IDE5LjUgNDd0NDcgMTkuNXQ0Ni41IC0xOS41dDE5IC00Nwp0LTE5IC00N3QtNDYuNSAtMTkuNXQtNDcgMTkuNXQtMTkuNSA0N3pNMjcyIDI3MHEyMCAtODIgODYuNSAtMTM1LjV0MTUzLjUgLTUzLjV0MTUzLjUgNTMuNXQ4Ni41IDEzNS41aC00ODB6IiAvPgogIDwvZm9udD4KPC9kZWZzPjwvc3ZnPgo=#iconfont) format("svg")}.iconfont{font-family:iconfont!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-search:before{content:"\E607"}.icon-more:before{content:"\E606"}.icon-warn:before{content:"\E657"}.icon-collection:before{content:"\E608"}.icon-friend:before{content:"\E603"}.icon-msg:before{content:"\E60A"}.icon-look:before{content:"\E639"}.mycard[data-v-6d69d72c]{position:relative;width:100%;height:100%}.mycard .avatar[data-v-6d69d72c]{width:36px;height:36px;margin:20px 12px 0;border-radius:2px}.mycard .navbar[data-v-6d69d72c]{width:100%;text-align:center}.mycard .icon[data-v-6d69d72c]{display:inline-block;font-size:26px;margin-top:28px;padding:0 16px;box-sizing:border-box;color:#adaeaf;opacity:.8;cursor:pointer}.mycard .icon.active[data-v-6d69d72c]{color:#00dc41}.mycard .icon[data-v-6d69d72c]:hover{opacity:1}.mycard .icon-more[data-v-6d69d72c],.mycard .icon-msg[data-v-6d69d72c]{font-size:22px}.mycard .icon-msg[data-v-6d69d72c]{padding:0 19px}footer[data-v-6d69d72c]{position:absolute;bottom:20px;width:100%;text-align:center}.content[data-v-fe8a4bb6]{display:-webkit-box;display:-ms-flexbox;display:flex;width:800px}.content .msglist[data-v-fe8a4bb6]{width:250px;background:#e6e6e6}.content .chatbox[data-v-fe8a4bb6]{-webkit-box-flex:1;-ms-flex:1;flex:1}.wrapper[data-v-3cb894a8]{padding:22px 12px 12px}.search-wrapper[data-v-3cb894a8]{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;box-sizing:border-box;height:26px;width:100%;background-color:#e5e3e2;border:1px solid #d9d7d6;border-radius:2px}.search-wrapper .searchInput[data-v-3cb894a8]{-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:12px;padding:6px;background-color:#e5e3e2;outline:none}.search-wrapper .searchInput[data-v-3cb894a8]:focus{background-color:#f2efee}.search-wrapper .icon-search[data-v-3cb894a8]{display:inline-block;width:24px;height:24px;font-size:14px;line-height:24px;text-align:center}.search-wrapper .searchInput-delete[data-v-3cb894a8]{display:block;position:absolute;outline:none;top:0;right:0;width:24px;height:100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8BAMAAADI0sRBAAAAJFBMVEUAAACysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrIIg5e5AAAAC3RSTlMAcffkx0IcAopiuTB56aAAAADDSURBVDjL7ZO9DgFBFIVHBNGpNEqh2UYkotgXkEwjFAoNWo1GoddpdB5CZXeIOC/H3FiKO5vzALtf+82Zv3uvKSkuteOwO5nm2UOMD+klbOsWglsF9RxfRsGDo0wnoeM3+NHXtmH/2u2UbgKvtXftK3BWugo8TAe4mS0wUHrpTQVo+TV3pU8QJUvwVNpC4hKGUzqGxCWMVOkIEpcwEqL55vxq/GH8W/SnjklJSEFJO7Bm0swy3aONzMdAs/dDtDAlheUNgke1MOUMlfgAAAAASUVORK5CYII=);background-size:26px;background-position:50%;background-repeat:no-repeat;cursor:pointer}.msglist[data-v-93a1c5a8]{height:540px;overflow-y:auto}.msglist .sessionlist[data-v-93a1c5a8]{display:-webkit-box;display:-ms-flexbox;display:flex;padding:12px;transition:background-color .1s;font-size:0}.msglist .sessionlist[data-v-93a1c5a8]:hover{background-color:#dcdcdc}.msglist .sessionlist.active[data-v-93a1c5a8]{background-color:#c4c4c4}.msglist .sessionlist .avatar[data-v-93a1c5a8]{border-radius:2px;margin-right:12px}.msglist .sessionlist .list-right[data-v-93a1c5a8]{position:relative;-webkit-box-flex:1;-ms-flex:1;flex:1;margin-top:4px}.msglist .sessionlist .name[data-v-93a1c5a8]{display:inline-block;vertical-align:top;font-size:14px}.msglist .sessionlist .time[data-v-93a1c5a8]{float:right;color:#999;font-size:10px;vertical-align:top}.msglist .sessionlist .lastmsg[data-v-93a1c5a8]{position:absolute;font-size:12px;width:130px;height:15px;line-height:15px;color:#999;bottom:4px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.message[data-v-2b06ab08]{width:100%;height:450px}.message .header[data-v-2b06ab08]{height:60px;padding:28px 0 0 30px;box-sizing:border-box;border-bottom:1px solid #e7e7e7}.message .header .friendname[data-v-2b06ab08]{font-size:18px}.message .message-wrapper[data-v-2b06ab08]{min-height:390px;max-height:390px;padding:10px 15px;box-sizing:border-box;overflow-y:auto;border-bottom:1px solid #e7e7e7}.message .message-wrapper .message[data-v-2b06ab08]{margin-bottom:15px}.message .message-wrapper .time[data-v-2b06ab08]{width:100%;font-size:12px;margin:7px auto;text-align:center}.message .message-wrapper .time span[data-v-2b06ab08]{display:inline-block;padding:4px 6px;color:#fff;border-radius:3px;background-color:#dcdcdc}.message .message-wrapper .main .avatar[data-v-2b06ab08]{float:left;margin-left:15px;border-radius:3px}.message .message-wrapper .main .content[data-v-2b06ab08]{display:inline-block;margin-left:10px;position:relative;padding:6px 10px;max-width:330px;min-height:36px;line-height:24px;box-sizing:border-box;font-size:14px;text-align:left;word-break:break-all;background-color:#fafafa;border-radius:4px}.message .message-wrapper .main .content[data-v-2b06ab08]:before{content:" ";position:absolute;top:12px;right:100%;border:6px solid transparent;border-right-color:#fafafa}.message .message-wrapper .self[data-v-2b06ab08]{text-align:right}.message .message-wrapper .self .avatar[data-v-2b06ab08]{float:right;margin:0 15px}.message .message-wrapper .self .content[data-v-2b06ab08]{background-color:#b2e281}.message .message-wrapper .self .content[data-v-2b06ab08]:before{right:-12px;vertical-align:middle;border-right-color:transparent;border-left-color:#b2e281}.text[data-v-7530310c]{position:relative;height:150px;background:#fff}.text .emoji[data-v-7530310c]{position:relative;width:100%;height:40px;line-height:40px;font-size:12px;padding:0 30px;box-sizing:border-box;color:#7c7c7c}.text .emoji .icon-look[data-v-7530310c]{cursor:pointer}.text .emoji .icon-look[data-v-7530310c]:hover{color:#1aad19}.text .emoji .emojiBox[data-v-7530310c]{position:absolute;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;top:-210px;left:-100px;width:300px;height:200px;padding:5px;background-color:#fff;border:1px solid #d1d1d1;border-radius:2px;box-shadow:0 1px 2px 1px #d1d1d1}.text .emoji .emojiBox.showbox-enter-active[data-v-7530310c],.text .emoji .emojiBox.showbox-leave-active[data-v-7530310c]{transition:all .5s}.text .emoji .emojiBox.showbox-enter[data-v-7530310c],.text .emoji .emojiBox.showbox-leave-active[data-v-7530310c]{opacity:0}.text textarea[data-v-7530310c]{box-sizing:border-box;padding:0 30px;height:110px;width:100%;border:none;outline:none;font-family:Micrsofot Yahei;resize:none}.text .send[data-v-7530310c]{position:absolute;bottom:10px;right:30px;width:75px;height:28px;line-height:28px;box-sizing:border-box;text-align:center;border:1px solid #e5e5e5;border-radius:3px;background:#f5f5f5;font-size:14px;color:#7c7c7c}.text .send[data-v-7530310c]:hover{background:#129611;color:#fff}.text .warn[data-v-7530310c]{position:absolute;bottom:50px;right:10px;width:110px;height:30px;line-height:30px;font-size:12px;text-align:center;border:1px solid #bdbdbd;border-radius:4px;box-shadow:0 1px 5px 1px #bdbdbd}.text .warn.appear-enter-active[data-v-7530310c],.text .warn.appear-leave-active[data-v-7530310c]{transition:all 1s}.text .warn.appear-enter[data-v-7530310c],.text .warn.appear-leave-active[data-v-7530310c]{opacity:0}.text .warn[data-v-7530310c]:before{content:" ";position:absolute;top:100%;right:20px;border:7px solid transparent;border-top-color:#fff;-webkit-filter:drop-shadow(1px 3px 2px #bdbdbd);filter:drop-shadow(1px 3px 2px #bdbdbd)}.content[data-v-7bf0e6a5]{display:-webkit-box;display:-ms-flexbox;display:flex;width:800px}.content .friend-wrapper[data-v-7bf0e6a5]{width:250px;background:#e6e6e6}.content .friendinfo[data-v-7bf0e6a5]{-webkit-box-flex:1;-ms-flex:1;flex:1}.friendlist[data-v-2916bea8]{height:540px;overflow-y:auto}.friendlist .frienditem[data-v-2916bea8]{border-top:1px solid #dadada}.friendlist .frienditem.noborder[data-v-2916bea8],.friendlist .frienditem[data-v-2916bea8]:first-child{border-top:none}.friendlist .frienditem .list_title[data-v-2916bea8]{box-sizing:border-box;width:100%;font-size:12px;padding:15px 0 3px 12px;color:#999}.friendlist .frienditem .friend-info[data-v-2916bea8]{display:-webkit-box;display:-ms-flexbox;display:flex;padding:12px;transition:background-color .1s;font-size:0}.friendlist .frienditem .friend-info[data-v-2916bea8]:hover{background-color:#dcdcdc}.friendlist .frienditem .friend-info.active[data-v-2916bea8]{background-color:#c4c4c4}.friendlist .frienditem .friend-info .avatar[data-v-2916bea8]{border-radius:2px;margin-right:12px}.friendlist .frienditem .friend-info .remark[data-v-2916bea8]{font-size:14px;line-height:36px}.newfriend[data-v-f8912ca8]{height:60px;padding:28px 0 0 30px;box-sizing:border-box;border-bottom:1px solid #e7e7e7}.newfriend .nickname[data-v-f8912ca8]{font-size:18px}.friendInfo[data-v-f8912ca8]{padding:0 90px}.esInfo[data-v-f8912ca8]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:100px 0 45px}.esInfo .left[data-v-f8912ca8]{-webkit-box-flex:1;-ms-flex:1;flex:1}.esInfo .left .people .nickname[data-v-f8912ca8]{display:inline-block;font-size:20px;margin-bottom:16px}.esInfo .left .people .gender-female[data-v-f8912ca8],.esInfo .left .people .gender-male[data-v-f8912ca8]{display:inline-block;width:18px;height:18px;vertical-align:top;margin-top:2px}.esInfo .left .people .gender-male[data-v-f8912ca8]{background-image:url(data:image/png;base64,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);background-size:cover}.esInfo .left .people .gender-female[data-v-f8912ca8]{background-image:url(data:image/png;base64,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);background-size:cover}.esInfo .left .signature[data-v-f8912ca8]{font-size:14px;color:hsla(0,0%,60%,.8)}.esInfo .right .avatar[data-v-f8912ca8]{border-radius:3px}.detInfo[data-v-f8912ca8]{padding:40px 0;border-top:1px solid #e7e7e7;border-bottom:1px solid #e7e7e7}.detInfo .area[data-v-f8912ca8],.detInfo .remark[data-v-f8912ca8],.detInfo .wxid[data-v-f8912ca8]{font-size:14px;margin-top:20px}.detInfo .area span[data-v-f8912ca8],.detInfo .remark span[data-v-f8912ca8],.detInfo .wxid span[data-v-f8912ca8]{font-size:14px;color:hsla(0,0%,60%,.8);margin-right:40px}.detInfo .remark[data-v-f8912ca8]{margin-top:0}.send[data-v-f8912ca8]{position:relative;text-align:center;width:140px;height:36px;left:115px;top:50px;line-height:36px;font-size:14px;color:#fff;background-color:#1aad19;cursor:pointer;border-radius:2px}.send[data-v-f8912ca8]:hover{background:#129611}.resume[data-v-5ec67076]{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%}.resume .about[data-v-5ec67076]{width:250px;background-color:#244664;padding:10px;box-sizing:border-box;color:#fff}.resume .about .name[data-v-5ec67076]{text-align:center;margin:20px auto 40px;font-size:28px;font-weight:600}.resume .about .intention[data-v-5ec67076]{font-size:20px}.resume .about .intention span[data-v-5ec67076]{display:block;text-align:right;font-size:16px;line-height:18px;margin:20px 0;letter-spacing:1px}.resume .about .info .info-title[data-v-5ec67076]{font-size:20px}.resume .about .info .info-item[data-v-5ec67076]{display:-webkit-box;display:-ms-flexbox;display:flex;margin:10px 0 20px;height:40px;line-height:40px}.resume .about .info .info-item .icon[data-v-5ec67076]{width:40px;height:40px;background-color:#fff;border-radius:50%;margin-right:20px;background-position:50%;background-repeat:no-repeat;background-size:26px}.resume .about .info .info-item .icon.school[data-v-5ec67076]{background-image:url(data:image/png;base64,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)}.resume .about .info .info-item .icon.major[data-v-5ec67076]{background-image:url(data:image/png;base64,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)}.resume .about .info .info-item .icon.phone[data-v-5ec67076]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAHNElEQVR4Xu2dTXIaVxCAu4eJt1FOEBS0t3QCoypDZRf5BEaGrC2fIOgEJuuATU5geZcCVQWfIHgPNjmBla00Q6feDMiULDQ/9LyZN6+15U2rf77p1+93EOTPag+g1daL8SAAWA6BACAAWO4By82XDCAAWO4By82XDCAAWO4By82XDCAAWO4By82XDCAAWO4By82XDCAAWO4By82XDCAAWO4By82XDCAAWO4By82XDCAAWO4By80vZAao1lt7rus+AQfqQHAICPV1nAhoAQQT/8Z/tZgMryyP387mFwqAauPXwwosXyJiK8oyIrrywTlejP+YRrWV37d7oBAAqDe+8l3ldZzAb5qissF8NNiXAKf3QO4AHDzt1AnpHSLupTGDaHk6H78ZpnlWnoF8t4UfNDu/AUB3l0BIFtjFezkCUGu03yZN+dtMlSyQHoJcugDO4CvTJQsYBECt0e4h4sv0Kt//pGSBdB7VmgFUwQcO/J1O1YinCCazcf84E9klFqoVgFqz/RkBq5n5cwnHs8v+JDP5JRSsDYBM3/6v04SSBRJCqg2AWrM9RMDnCfVL3NxzvP3FX8NF4gctfUAfAI32l7STPUliQ0B/zkeDyKnkJDLL3FYLAMHiziP3iy5HShaI72ktAGjp/zdsJqLf5+PBWXw32NuyrABc+Tf+viwXR4NdSgCU2cslvPp02e9Fu8DuFloA0F0DyPRwfKi1AKDUOWh2KL5aPC09wiPZMPKwL7UBUGu0F4j4I09o40mRbiDaT/oA0DQRdMfk89mov9N+g2gXmt1CGwA/Pe2cOQ681uouWRuIdLc2ANSGTxfpn0iNmBoQwX/+jVeVoWBBagClhs46QCaD4r1J2jLACoBMNoN8ayp9nI0Gh/FcYHcrrQDo6AYI4L1/7bUk9ccDWysA4XxAewqAj+Opl6yVbAtL5i/VWjsAWYwGgoIPsC6TPgYAEJ4CcheI8H1yde9/goCezUeDCy55NsnRngGCYpBzUojgw2zcvz08alPwOGzNBYDqz62qu3Q/cxgAADLbt4MjcwGAOQsIACYCwDUklFNBO0Q/j1HAprpctYCs+qWHILcuQKnMWQvI2n86CHIFgLMWUF2Bf+0fyQxgMhByB4B1XkDOByaLft41wFrbg2ZHbdpQl0Vw/MmoIIEXc88AQS0Q3hE05doyJjOD8QkoBACrWuAEAd/FV317y+AGsYp/JGcEo71ZGACUqgeNzgQQnkSrHaMFwdS78Y6lKHzYV4UCQA0LK7475VooIqLhfDw4jYGLtU0KBUCQBXgLQjkhFIF24QAI6gHuMwSyO3grBoUEgPs0sRSF29NAIQFYZQHeDaRSFN5LQWEB4J4bUNZLUfgtA4UFICgIs7lWTmYKNzgoNACZdAXhzaKyh3AFQeEBCIeGvFvJ5VsDX1OAEQBw7R7a7AFl+Tj0hhEAKEWzOE+gPj1j+/WyxgDAvlawSge2jwyMAoB188hGf2DzkTKjAAhGBc0227LxnZrAypGBcQBkNjRM8RUytXrp+JVfnNX3joLCkpyPJp1RNBKALIaGq5nC2BdMPvi9I4IJEJybcHW9sQCE3xikCdfegdvuIMaaQYJP3vS8a++8yJtSjAUgy3oAHoAgQfADplS3gEs8LWo2MBqArOqBdXeAiD2P8D1Ubq5cz30MCF1ASHv1TCGzgfEAZDU/sH0FPf0vRcwGpQAgvIu4Msnq6pn0Id/6ZGGyQSkAUG7OrCjMIPrr2sAn51neQ8bSALCGQOdllExsdGej/jmTrMRiSgVAWBS+aCE6bxN7Is8H1KgD8DSPbFA6AIyFIARQezYoJQBGQ0AwnY37R7oSUmkBMBoCjRdflRoAUyFQW9bm48EPOrJA6QEwFQJdV95YAYCREGg6zmYNAKZBIBkgow5QHTYhhAv2ZWRGfdXl1/Nxf49R5FZRVmWAtRfCbebLYYHXDrSdXrISgGDauKALSLq/dWQtAOtsUGu0eU8h75i3dd96aj0AQXHYbJ8A4TD3uiCHq+8FgNUbG1xb67tDtkuqEmYC3al/rZ4AcCdQ3HcUxeVA17Dvrj4CwD0R0j1KyPNkkgDwwCuqDqQiQjfL2iDP4CvTBYCIHB2cR3xU6SHg87jpPG67vIMvAMSN1OrbBpVlpcsBgir4AKlVhC+dSQZIAEEwgaROJOHyLDUIBB88wLM8tn/dZ6oAkBCA2+nk8MtnLSJqxbnlXL31RND9dNnvpfyXmTwmADC4dXWFzQkQ1AngcF00EtG/gDgFWl7Mx2+GDP+KXYQAwO5SswQKAGbFi11bAYDdpWYJFADMihe7tgIAu0vNEigAmBUvdm0FAHaXmiVQADArXuzaCgDsLjVLoABgVrzYtRUA2F1qlkABwKx4sWsrALC71CyBAoBZ8WLXVgBgd6lZAgUAs+LFrq0AwO5SswQKAGbFi11bAYDdpWYJFADMihe7tgIAu0vNEvg/RAjxn9hRSPIAAAAASUVORK5CYII=);background-size:32px}.resume .about .info .info-item .icon.email[data-v-5ec67076]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAEoElEQVR4Xu2aX4gbVRTGvzNJd9W2tOI/lIW6mwiCghV8KYJstZntKuo+tIhKaZqkvhVcEB9E2Cj0RQSLvtlkGykqWpGqaN3Jahdf+iJ0BQWhyW4Li6IibnH9s7uZOXLHTDKbTpKZnZlsZjPzEpLcO/d+vznnu+fehNDjF/W4foQAwgjocQJhCvR4AIQmGKZAmAI9TiBMgR4PgHAVCFMgTIEeJ9A0BYYSqQcklrZtBj4aaUtzxclvrbQ0BRAfOXoPNE0B0R2BhsD8EyRJLk2d/MEWgJicHisr+bOicXz0yC2oSFMguj+QEJgvIqqNlM6d+k3M36zN0HNNBMTlDDNzQV1Vxy/PFBbjo8f6Ufn7NIgOBgoC8xlEbzhUOvfW8p3DyZ2RLZE3iChZUnJrNFsC0IUyZiurlb0Cgh4NcmaCmSeIqKuXTvH0GMjOFfOvinkL8dEt0fMg7Bbv7QMQDJgXVUh7LxdPzuoQEqknGPQBEV3XjdHAzP8S+KlScfJTXXzi6O4ItPNEtNOYryMAeiAwLwI8Xi5OFuo35Ski3NpNEJjxqwoaMR5WLJFKAiTCvibecQQ0CMyWlNwr4rNdI8/dHtVUhYju7QYIzPx9RYrIV6be/rmarlkAE1ZzcxwB5puYzXFgz8Hr+7fveJ+AJzcSAgOfLP959emFC2f+MZtdszm5AmBljrFE5jgRXtoICAw+XlbyL1uZnX8ALMxxUM4ciIDfBaivMyB4RQU9O6/kPmpmdr4CsDJHvXQGfQmim3yFwPy7Bt5vlLbNzM53AKYBauYYH84MoA9FAHf7AUGYHa3SaGkmt9DO7DoJQCyVtcrxNvnQ1m3c/yERHvUSAjO+WF66esCu2XUUgIU5UkxOv0agF7yAwODXy0r+RWE/jZWd0/u7XwVajNhYOQ7tSz8jEb0DQtTpRKtQKxrz4bnp/HtOza7zEVAdsbFyjD+S2sMR6XMCbnQCgYE/SNUeK301eUH0c2p2GwbAGJhZO2KUz4MPp3dJUUwTKG4Two9qhffPf52/Yognkk7Z7Nuyma8pUB+Zv6usqMPGTlJ8fvODqe07tkofE7Cv1QwZmF7C8tgvyum/jHZ63vdFZgC6zy2EDgCoizdKU+NsAchKMXnhBAHHrIQw481ycWAcyGqNfb2C4DOAteKNfXijOer5TJQjUEQvqsAqmDNrd5zVbazpXMILCD4CsBZf94S12+pBOf1QBPhMfK8Cj88r+W+amp2HEHwC0Fp8Q7jXKsehRPIu8d1csXBJvIpTJwBiK3vt5REEHwA4Ev//8m6qHPX13XRm19LkPIDgMQDn4msCq2LEe/OZXVuXdwnBQwAuxLdV2aaBCwgeAdhA8TVXrZ9aO1kdPADQBeJdQHAJoIvErxOCCwBdKH4dENYJoIvFO4SwDgABEO8AgkMAARJvE4IDAAEUbwOCTQABFt8GQlsAMTlzVl2pJMVhhtsDSLcFn+v+DRVjpC9aKCu5MfN9m/7WH3jxFpFgBbQpgFgifYJA+p8Kgn4xeLZczD/vCEDQRdudf1f/3cWuCDftQgBu6G2GvmEEbIan6EZDGAFu6G2Gvj0fAf8BedeXbn7FgnsAAAAASUVORK5CYII=)}.resume .power[data-v-5ec67076]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:70px 50px 30px;background-color:#fff}.resume .power .power-item[data-v-5ec67076]{color:#244664}.resume .power .power-item .title[data-v-5ec67076]{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:20px}.resume .power .power-item .title .icon[data-v-5ec67076]{display:inline-block;width:50px;height:50px;background-color:#244664;border-radius:50%;margin-right:10px;background-position:50%;background-repeat:no-repeat;background-size:30px}.resume .power .power-item .title .icon.technology[data-v-5ec67076]{background-size:35px;background-image:url(data:image/png;base64,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)}.resume .power .power-item .title .icon.evaluation[data-v-5ec67076]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAJv0lEQVR4Xu2djdHUNhCGtRUkVBBSQT4qIFQQUgGhgoQKIBUEKghUQKggUAFQQUgFgQo284LM+Hy2tbuSfKeVNPMNmZx/ZL2PVqvVWqYwStctQF0//Xj4MAC4MATM/FMI4ccQwk38d6rR6xDCuxDCayJ6VauaA4BaLZu4LjPfDyH8EUK4LajChxDCQyICFEXLAKBoc8ouxsx/hhB+kR19ctRTInpkOG/zlAFAydYUXIuZX4YQ0Put5TkRPbSevDxvAFCqJQXXyej5y6sXg2AAIBCuxCHMDJMP01+qFIFgAFBKjp3rMDO8/L8r3CobggFABVXml2RmTO8g/rfCW/0bQvhOeCwOy4JgAKBoae2hzAzR3wqnes9CCE+I6GM872kI4YHwnmYIBgDCFtYeFkVEz4cFSBXM8Z8vD2Jm/L+qEBQDIJq6b6Kpkzx0qlGO+B2BlffodaVvpvD4V8Wf6lMbAjMAkfApjIl5rXSMK93WudcrHmVj5ichhMeCiu2KfwQEagCi8L+GEH5rWPSlNrAA35ewBIrpnkj82hCoAFDGrwUd4KoOeUREcLzMJQ6DcPpSRSV+TQjEADAzFi7Q672W34kIpttUmBmLOhA/NRSaxK8FQRKAaPIRv0Yww3MxCxPFRxulnN8syGpAIAHAunLVEiwIvtxYfABloAe+xj0iwjp/VlHODjbB2wVA4c1mPcyFT36DpVkiwmxAVZTiT9e+FAQA7yyfYBMAY/wamSugG3/F59YqdWQHf7AIj0sbxb8kBMgsurdslj0AEMWSjvtfw5iydm/7qEzxLwnBneXwswqAYi6LsfN+iTGtFSQKiX8pCJ4R0clMbgsATGdSHu17WAiL49SK2Mt6xmER3n5qqqd5xJI+wV8hBERnt8obIjqx6mcAxCnNP4kn+IQVrs7E1yR0oHOgp0EQrI+kShEI4pT9v52bfSSiW/Pf1wCQPOiqR5l6ylZ/VwyJeMSvljEOF/C8j4SA99qZiE40XwMgZUZeEJElo7VJ/a3iTw97JAQS6y0BAMTe3VHrzJNsUllBpXPFPxoCQcYxlr5PfLs1C4Dxf+tlhU9EVNIBEshwmUNKiX8UBML8gzPrvQbA3hhy5kVeRp66d2VmrOVLF4bEs6Faw4FQfDTa2XrHAGDBkqIxTxw+KZKlIVDUd3XmNgCYKadoTJP4pYcDZX1XF4QGAFEVZWOKzf6WZci1BNr6Lp2/qV4DgC8LO5ol72zxcy2Bsr67QbvuAVA2ZjHxMyDANF36cinqi7WazaXubgGIYVP0fE1jVln7UA4HUn/zBcLRqXB9lwAoX9rIcvikahWGQJx61h0A1yi+cThYYwvjPbKbEM4Xla4AuGbxC0Bgys3oBoAWxJ9BoH2dHHmNcPbUaXhdANCY+Fhrkb5UCmayVmfdAxCdK2TxSHbjOsTh2wkOacU3v8vQRSDIkL9XfJ4v8sS+BKM04sPZw5Q0+/0CtxbAsfjJ4I4UOhznEgDn4hcNRrkDwLH4VRJxXQHgXPwiY/5yeHADQEzhwivs0pS17hy+Nd/ABQDK/L2WpnrFvP0tx7B5AIb4Gp///NimAXAsPpQ6JP2+WQCci58d4ZPahSYBGOJL5U0f1xwAyhSulhw+1DXZ8+PrX9hLGC/p9BUK7ln8jRQ2APCzdZeTpkLBPYsPoZgZexhig85leUdEd9LGfv2IJoYA5+KL1vOZee+VPfPr+lcPwBD/c+9PZQiJk0CbCgUP8b/I1R0AyuSICepWYvvqNK6uABjinztr3QDQgfim/RW6AKAD8c1DlHsAhvj7s3jXACi2Wp+3krk3WQMm03kGWLPr6hYAQwpXa7H9bPHdTgNbEz8KodlA2/wNgqWVcmcBGhVfs4tI0VQuVwAM8fVeiDcApN/Uu3iEL5r9i/X8mePpZy2AmVN7EV+Ft38t4rtzApk5tRfxBECxjznqja5657CiY75rJ5CZ9/YiXj67+avYFtFnJldj9nEasnLE27Jo6+bNB9jdz36lcQ6FwLAEnczj0wru1gIIvmix1VaHQHCN4rvyAQSmbK+zVIXgWsUfAJwiUQWCaxbfGwDaGMCaRSgKgUF8c/6d1RcQWE5znQ5NCi34KdoiEBjEF2XwWoXeOs8TAKkYwKMQAt7xl5QsCFoR39sQsAsAvmilfO/PBEFL4nsDAB813NzBY/qkWU0IWhPfGwDijxrWgMAg/isikm4nLxm2TMe48AEEHzU8+6ZdSQgM4hfJ5jEpvjjJCwCpJc3VlOkSELQsvpshQCDkZs684Nx5nzlxDFsX3xMAqSDQ7ksTFgg8iO8JgK3326fe+4yI8Mn1zaKEAB9Kku4QjntezZjvcjVQkAgiCmcqIZD6YEjouMnZaUN6I8txXpzAVBRQBEA0ifh8PZI2SpSq2TwlKugFgFQiiBiAghBcvfiefIAUAKuZNbNdsdAWiCLexF6F/4YlkO4NvOyMTYjvAgCBCcNzYser6aNHENkqrMTqNiN+TwBIhCt1jHlTpVIV0FxH0IFUw+f83ofkAzAzpnfSZV5N21iOrZ7EaalUYvqbiqJePQCpIFDpNtu6XnPiexkCnocQHhyl8sZ9mhTfCwCpGEAtNvCKNiKCWB8AhE0WDz7A29n0rbQI+GwqCiDDLAKziQ/XGtWzPLwHAFIxgL12wZTts6iLP+yRq/5WrkWAS5/jAYCUEziZ6ikWgN4ciOjzv72X5gGIjgyidvhza6prgeoCgFqN08N1BwA9qLzzjAOAAUDbkcDO9ct+/GEBspuw7QscDQDm2/gq1Vr5SES32m7O9movWEwzh7nXVgNTYduq++G0J0/9Ggt2VjMvb68BkFq4yfpKVf3m8nWHuK0ONtbaS5Axf2Z2DQC8C/cy0Yymt3J9SXPM0wj2VMAHJM3ZU2cAxKidJHY/IKjMgMD5Qw2yXmDdAiA1DEyPDn8BPkEXizKV9T65PDPDEiP1PdW7HxERXroxlS0A8EYNxh1JgfioALZPwQxilIwWiFnQj+O6SepKWCm9ndMBVwGIw0BqBW+tcljNm5ZuU5Ufv5+2AHo6In5T2rukfcy5gNPF9wBAhWDif5DUZBxzeAtk937UeBOAaAUAAcz6N4c/3rhhqgXMU7/5hXcBiBDAJMESDAhSkhz3uznyt6xiEoCZJcBu2HePe8Zxp40WKCZ+cghYViDGpOEcDmtwPJ9Im7tPRHCyixWRBZjfLYYm8aYP0ru2Fo2KVXBcKED4J7XS2tUALGDAtGX6G8NDOVqxWwn8rtc1P0ShHgIkzxe/CpaKXkku1d0xl8iCzrIA3Snk8IEHAA5F1TzSAEDTWg6PHQA4FFXzSAMATWs5PPZ/pNzQ6gPQbx8AAAAASUVORK5CYII=)}.resume .power .power-item .title .name[data-v-5ec67076]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:inline-block;height:50px;font-size:24px;font-weight:600;line-height:50px;box-sizing:border-box;border-bottom:2px solid #244664}.resume .power .power-item .technology-item[data-v-5ec67076]{margin:20px auto;font-size:14px;line-height:25px}.resume .power .power-item .technology-item span[data-v-5ec67076]{display:inline-block;font-size:18px}.resume .power .power-item .myevaluation[data-v-5ec67076]{font-size:15px;line-height:18px;text-indent:2em}
\ No newline at end of file
{"version":3,"sources":["webpack:///./src/App.vue","webpack:///./src/assets/fonts/iconfont.css","webpack:///./src/components/mycard/mycard.vue","webpack:///./src/page/chat/chat.vue","webpack:///./src/components/search/search.vue","webpack:///./src/components/chatlist/chatlist.vue","webpack:///./src/components/message/message.vue","webpack:///./src/components/text/text.vue","webpack:///./src/page/friend/friend.vue","webpack:///./src/components/friendlist/friendlist.vue","webpack:///./src/components/info/info.vue","webpack:///./src/page/resume/resume.vue"],"names":[],"mappings":"AACA,sBACE,oBACA,oBACA,aACA,mBACA,iBACA,YACA,aACA,qBAAuB,CAEzB,+BACE,WACA,aACA,kBAAoB,CAEtB,4BACE,mBACI,WACI,OACR,aACA,kBAAoB,CCpBtB,WAAY,qBACV,kCACA,uMAG2D,CAG7D,UACE,+BACA,eACA,kBACA,mCACA,iCAAmC,CAGrC,oBAAsB,eAAiB,CAEvC,kBAAoB,eAAiB,CAErC,kBAAoB,eAAiB,CAErC,wBAA0B,eAAiB,CAE3C,oBAAsB,eAAiB,CAEvC,iBAAmB,eAAiB,CAEpC,kBAAoB,eAAiB,CAAE,8gnCC3BvC,yBACE,kBACA,WACA,WAAa,CAEf,iCACE,WACA,YACA,mBACA,iBAAmB,CAErB,iCACE,WACA,iBAAmB,CAErB,+BACE,qBACA,eACA,gBACA,eACA,sBACA,cACA,WACA,cAAgB,CAElB,sCACE,aAAe,CAEjB,qCACE,SAAW,CAEb,uEAEE,cAAgB,CAElB,mCACE,cAAgB,CAElB,wBACE,kBACA,YACA,WACA,iBAAmB,CC3CrB,0BACE,oBACA,oBACA,aACA,WAAa,CAEf,mCACE,YACA,kBAAoB,CAEtB,mCACE,mBACI,WACI,MAAQ,CCblB,0BACE,sBAA6B,CAE/B,iCACE,kBACA,oBACA,oBACA,aACA,sBACA,YACA,WACA,yBACA,yBACA,iBAAmB,CAErB,8CACE,mBACI,WACI,OACR,eACA,YACA,yBACA,YAAc,CAEhB,oDACE,wBAA0B,CAE5B,8CACE,qBACA,WACA,YACA,eACA,iBACA,iBAAmB,CAErB,qDACE,cACA,kBACA,aACA,MACA,QACA,WACA,YACA,+CACA,qBACA,wBACA,4BACA,cAAgB,CACjB,8aChDD,0BACE,aACA,eAAiB,CAEnB,uCACE,oBACA,oBACA,aACA,aACA,gCACA,WAAa,CAEf,6CACE,wBAA0B,CAE5B,8CACE,wBAA0B,CAE5B,+CACE,kBACA,iBAAmB,CAErB,mDACE,kBACA,mBACI,WACI,OACR,cAAgB,CAElB,6CACE,qBACA,mBACA,cAAgB,CAElB,6CACE,YACA,WACA,eACA,kBAAoB,CAEtB,gDACE,kBACA,eACA,YACA,YACA,iBACA,WACA,WACA,gBACA,mBACA,sBAAwB,CClD1B,0BACE,WACA,YAAc,CAEhB,kCACE,YACA,sBACA,sBACA,+BAAiC,CAEnC,8CACE,cAAgB,CAElB,2CACE,iBACA,iBACA,kBACA,sBACA,gBACA,+BAAiC,CAEnC,oDACE,kBAAoB,CAEtB,iDACE,WACA,eACA,gBACA,iBAAmB,CAErB,sDACE,qBACA,gBACA,WACA,kBACA,wBAA0B,CAE5B,yDACE,WACA,iBACA,iBAAmB,CAErB,0DACE,qBACA,iBACA,kBACA,iBACA,gBACA,gBACA,iBACA,sBACA,eACA,gBACA,qBACA,yBACA,iBAAmB,CAErB,iEACE,YACA,kBACA,SACA,WACA,6BACA,0BAA4B,CAE9B,iDACE,gBAAkB,CAEpB,yDACE,YACA,aAAe,CAEjB,0DACE,wBAA0B,CAE5B,iEACE,YACA,sBACA,+BACA,yBAA2B,CC/E7B,uBACE,kBACA,aACA,eAAiB,CAEnB,8BACE,kBACA,WACA,YACA,iBACA,eACA,eACA,sBACA,aAAe,CAEjB,yCACE,cAAgB,CAElB,+CACE,aAAe,CAEjB,wCACE,kBACA,oBACA,oBACA,aACA,mBACI,eACJ,WACA,YACA,YACA,aACA,YACA,sBACA,yBACA,kBACA,gCAAkC,CAEpC,0HAEE,kBAAqB,CAEvB,mHAEE,SAAW,CAEb,gCACE,sBACA,eACA,aACA,WACA,YACA,aACA,4BACA,WAAa,CAEf,6BACE,kBACA,YACA,WACA,WACA,YACA,iBACA,sBACA,kBACA,yBACA,kBACA,mBACA,eACA,aAAe,CAEjB,mCACE,mBACA,UAAY,CAEd,6BACE,kBACA,YACA,WACA,YACA,YACA,iBACA,eACA,kBACA,yBACA,kBACA,gCAAkC,CAEpC,kGAEE,iBAAmB,CAErB,2FAEE,SAAW,CAEb,oCACE,YACA,kBACA,SACA,WACA,6BACA,sBACA,gDACQ,uCAAyC,CCxGnD,0BACE,oBACA,oBACA,aACA,WAAa,CAEf,0CACE,YACA,kBAAoB,CAEtB,sCACE,mBACI,WACI,MAAQ,CCblB,6BACE,aACA,eAAiB,CAEnB,yCACE,4BAA8B,CAEhC,uGAEE,eAAiB,CAEnB,qDACE,sBACA,WACA,eACA,wBACA,UAAY,CAEd,sDACE,oBACA,oBACA,aACA,aACA,gCACA,WAAa,CAEf,4DACE,wBAA0B,CAE5B,6DACE,wBAA0B,CAE5B,8DACE,kBACA,iBAAmB,CAErB,8DACE,eACA,gBAAkB,CCtCpB,4BACE,YACA,sBACA,sBACA,+BAAiC,CAEnC,sCACE,cAAgB,CAElB,6BACE,cAAgB,CAElB,yBACE,oBACA,oBACA,aACA,yBACI,sBACI,mBACR,oBAAwB,CAE1B,+BACE,mBACI,WACI,MAAQ,CAElB,iDACE,qBACA,eACA,kBAAoB,CAEtB,0GAEE,qBACA,WACA,YACA,mBACA,cAAgB,CAElB,oDACE,+CACA,qBAAuB,CAEzB,sDACE,+CACA,qBAAuB,CAEzB,0CACE,eACA,uBAA6B,CAE/B,wCACE,iBAAmB,CAErB,0BACE,eACA,6BACA,+BAAiC,CAEnC,kGAGE,eACA,eAAiB,CAEnB,iHAGE,eACA,wBACA,iBAAmB,CAErB,kCACE,YAAc,CAEhB,uBACE,kBACA,kBACA,YACA,YACA,WACA,SACA,iBACA,eACA,WACA,yBACA,eACA,iBAAmB,CAErB,6BACE,kBAAoB,CACrB,41VC3FD,yBACE,oBACA,oBACA,aACA,WAAa,CAEf,gCACE,YACA,yBACA,aACA,sBACA,UAAY,CAEd,sCACE,kBACA,sBACA,eACA,eAAiB,CAEnB,2CACE,cAAgB,CAElB,gDACE,cACA,iBACA,eACA,iBACA,cACA,kBAAoB,CAEtB,kDACE,cAAgB,CAElB,iDACE,oBACA,oBACA,aACA,mBACA,YACA,gBAAkB,CAEpB,uDACE,WACA,YACA,sBACA,kBACA,kBACA,wBACA,4BACA,oBAAsB,CAExB,8DACE,8CAAoC,CAEtC,6DACE,8CAAmC,CAErC,6DACE,+CACA,oBAAsB,CAExB,6DACE,8CAAmC,CAErC,gCACE,mBACI,WACI,OACR,gBACA,uBACA,qBAAuB,CAEzB,4CACE,aAAe,CAEjB,mDACE,oBACA,oBACA,aACA,kBAAoB,CAEtB,yDACE,qBACA,WACA,YACA,yBACA,kBACA,kBACA,wBACA,4BACA,oBAAsB,CAExB,oEACE,qBACA,8CAAwC,CAE1C,oEACE,8CAAwC,CAE1C,yDACE,mBACI,WACI,OACR,qBACA,YACA,eACA,gBACA,iBACA,sBACA,+BAAiC,CAEnC,6DACE,iBACA,eACA,gBAAkB,CAEpB,kEACE,qBACA,cAAgB,CAElB,0DACE,eACA,iBACA,eAAiB,CAClB","file":"static/css/app.2931c1ab2bf14b3070205be82a322dbe.css","sourcesContent":["\n#app[data-v-6724880a] {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n border-radius: 50px;\n margin: 20px auto;\n width: 860px;\n height: 600px;\n background-color: #fff;\n}\n#app .sidebar[data-v-6724880a] {\n width: 60px;\n height: 600px;\n background: #2b2c2f;\n}\n#app .main[data-v-6724880a] {\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n height: 600px;\n background: #f2f2f2;\n}\n\n\n// WEBPACK FOOTER //\n// ./src/App.vue","\n@font-face {font-family: \"iconfont\";\n src: url('iconfont.eot?t=1495519142886'); /* IE9*/\n src: url('iconfont.eot?t=1495519142886#iefix') format('embedded-opentype'), /* IE6-IE8 */\n url('iconfont.woff?t=1495519142886') format('woff'), /* chrome, firefox */\n url('iconfont.ttf?t=1495519142886') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/\n url('iconfont.svg?t=1495519142886#iconfont') format('svg'); /* iOS 4.1- */\n}\n\n.iconfont {\n font-family:\"iconfont\" !important;\n font-size:16px;\n font-style:normal;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.icon-search:before { content: \"\\e607\"; }\n\n.icon-more:before { content: \"\\e606\"; }\n\n.icon-warn:before { content: \"\\e657\"; }\n\n.icon-collection:before { content: \"\\e608\"; }\n\n.icon-friend:before { content: \"\\e603\"; }\n\n.icon-msg:before { content: \"\\e60a\"; }\n\n.icon-look:before { content: \"\\e639\"; }\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/assets/fonts/iconfont.css","\n@import '../../assets/fonts/iconfont.css';\n.mycard[data-v-6d69d72c] {\n position: relative;\n width: 100%;\n height: 100%;\n}\n.mycard .avatar[data-v-6d69d72c] {\n width: 36px;\n height: 36px;\n margin: 20px 12px 0 12px;\n border-radius: 2px;\n}\n.mycard .navbar[data-v-6d69d72c] {\n width: 100%;\n text-align: center;\n}\n.mycard .icon[data-v-6d69d72c] {\n display: inline-block;\n font-size: 26px;\n margin-top: 28px;\n padding: 0 16px;\n box-sizing: border-box;\n color: #adaeaf;\n opacity: 0.8;\n cursor: pointer;\n}\n.mycard .icon.active[data-v-6d69d72c] {\n color: #00dc41;\n}\n.mycard .icon[data-v-6d69d72c]:hover {\n opacity: 1;\n}\n.mycard .icon-msg[data-v-6d69d72c],\n.mycard .icon-more[data-v-6d69d72c] {\n font-size: 22px;\n}\n.mycard .icon-msg[data-v-6d69d72c] {\n padding: 0 19px;\n}\nfooter[data-v-6d69d72c] {\n position: absolute;\n bottom: 20px;\n width: 100%;\n text-align: center;\n}\n\n\n// WEBPACK FOOTER //\n// ./src/components/mycard/mycard.vue","\n.content[data-v-fe8a4bb6] {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n width: 800px;\n}\n.content .msglist[data-v-fe8a4bb6] {\n width: 250px;\n background: #e6e6e6;\n}\n.content .chatbox[data-v-fe8a4bb6] {\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n}\n\n\n// WEBPACK FOOTER //\n// ./src/page/chat/chat.vue","\n.wrapper[data-v-3cb894a8] {\n padding: 22px 12px 12px 12px;\n}\n.search-wrapper[data-v-3cb894a8] {\n position: relative;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n box-sizing: border-box;\n height: 26px;\n width: 100%;\n background-color: #e5e3e2;\n border: 1px solid #d9d7d6;\n border-radius: 2px;\n}\n.search-wrapper .searchInput[data-v-3cb894a8] {\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n font-size: 12px;\n padding: 6px;\n background-color: #e5e3e2;\n outline: none;\n}\n.search-wrapper .searchInput[data-v-3cb894a8]:focus {\n background-color: #f2efee;\n}\n.search-wrapper .icon-search[data-v-3cb894a8] {\n display: inline-block;\n width: 24px;\n height: 24px;\n font-size: 14px;\n line-height: 24px;\n text-align: center;\n}\n.search-wrapper .searchInput-delete[data-v-3cb894a8] {\n display: block;\n position: absolute;\n outline: none;\n top: 0;\n right: 0;\n width: 24px;\n height: 100%;\n background-image: url(\"delete.png\");\n background-size: 26px;\n background-position: center;\n background-repeat: no-repeat;\n cursor: pointer;\n}\n\n\n// WEBPACK FOOTER //\n// ./src/components/search/search.vue","\n.msglist[data-v-93a1c5a8] {\n height: 540px;\n overflow-y: auto;\n}\n.msglist .sessionlist[data-v-93a1c5a8] {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n padding: 12px;\n transition: background-color 0.1s;\n font-size: 0;\n}\n.msglist .sessionlist[data-v-93a1c5a8]:hover {\n background-color: #dcdcdc;\n}\n.msglist .sessionlist.active[data-v-93a1c5a8] {\n background-color: #c4c4c4;\n}\n.msglist .sessionlist .avatar[data-v-93a1c5a8] {\n border-radius: 2px;\n margin-right: 12px;\n}\n.msglist .sessionlist .list-right[data-v-93a1c5a8] {\n position: relative;\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n margin-top: 4px;\n}\n.msglist .sessionlist .name[data-v-93a1c5a8] {\n display: inline-block;\n vertical-align: top;\n font-size: 14px;\n}\n.msglist .sessionlist .time[data-v-93a1c5a8] {\n float: right;\n color: #999;\n font-size: 10px;\n vertical-align: top;\n}\n.msglist .sessionlist .lastmsg[data-v-93a1c5a8] {\n position: absolute;\n font-size: 12px;\n width: 130px;\n height: 15px;\n line-height: 15px;\n color: #999;\n bottom: 4px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n\n\n// WEBPACK FOOTER //\n// ./src/components/chatlist/chatlist.vue","\n.message[data-v-2b06ab08] {\n width: 100%;\n height: 450px;\n}\n.message .header[data-v-2b06ab08] {\n height: 60px;\n padding: 28px 0 0 30px;\n box-sizing: border-box;\n border-bottom: 1px solid #e7e7e7;\n}\n.message .header .friendname[data-v-2b06ab08] {\n font-size: 18px;\n}\n.message .message-wrapper[data-v-2b06ab08] {\n min-height: 390px;\n max-height: 390px;\n padding: 10px 15px;\n box-sizing: border-box;\n overflow-y: auto;\n border-bottom: 1px solid #e7e7e7;\n}\n.message .message-wrapper .message[data-v-2b06ab08] {\n margin-bottom: 15px;\n}\n.message .message-wrapper .time[data-v-2b06ab08] {\n width: 100%;\n font-size: 12px;\n margin: 7px auto;\n text-align: center;\n}\n.message .message-wrapper .time span[data-v-2b06ab08] {\n display: inline-block;\n padding: 4px 6px;\n color: #fff;\n border-radius: 3px;\n background-color: #dcdcdc;\n}\n.message .message-wrapper .main .avatar[data-v-2b06ab08] {\n float: left;\n margin-left: 15px;\n border-radius: 3px;\n}\n.message .message-wrapper .main .content[data-v-2b06ab08] {\n display: inline-block;\n margin-left: 10px;\n position: relative;\n padding: 6px 10px;\n max-width: 330px;\n min-height: 36px;\n line-height: 24px;\n box-sizing: border-box;\n font-size: 14px;\n text-align: left;\n word-break: break-all;\n background-color: #fafafa;\n border-radius: 4px;\n}\n.message .message-wrapper .main .content[data-v-2b06ab08]:before {\n content: \" \";\n position: absolute;\n top: 12px;\n right: 100%;\n border: 6px solid transparent;\n border-right-color: #fafafa;\n}\n.message .message-wrapper .self[data-v-2b06ab08] {\n text-align: right;\n}\n.message .message-wrapper .self .avatar[data-v-2b06ab08] {\n float: right;\n margin: 0 15px;\n}\n.message .message-wrapper .self .content[data-v-2b06ab08] {\n background-color: #b2e281;\n}\n.message .message-wrapper .self .content[data-v-2b06ab08]:before {\n right: -12px;\n vertical-align: middle;\n border-right-color: transparent;\n border-left-color: #b2e281;\n}\n\n\n// WEBPACK FOOTER //\n// ./src/components/message/message.vue","\n.text[data-v-7530310c] {\n position: relative;\n height: 150px;\n background: #fff;\n}\n.text .emoji[data-v-7530310c] {\n position: relative;\n width: 100%;\n height: 40px;\n line-height: 40px;\n font-size: 12px;\n padding: 0 30px;\n box-sizing: border-box;\n color: #7c7c7c;\n}\n.text .emoji .icon-look[data-v-7530310c] {\n cursor: pointer;\n}\n.text .emoji .icon-look[data-v-7530310c]:hover {\n color: #1aad19;\n}\n.text .emoji .emojiBox[data-v-7530310c] {\n position: absolute;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n top: -210px;\n left: -100px;\n width: 300px;\n height: 200px;\n padding: 5px;\n background-color: #fff;\n border: 1px solid #d1d1d1;\n border-radius: 2px;\n box-shadow: 0 1px 2px 1px #d1d1d1;\n}\n.text .emoji .emojiBox.showbox-enter-active[data-v-7530310c],\n.text .emoji .emojiBox.showbox-leave-active[data-v-7530310c] {\n transition: all 0.5s;\n}\n.text .emoji .emojiBox.showbox-enter[data-v-7530310c],\n.text .emoji .emojiBox.showbox-leave-active[data-v-7530310c] {\n opacity: 0;\n}\n.text textarea[data-v-7530310c] {\n box-sizing: border-box;\n padding: 0 30px;\n height: 110px;\n width: 100%;\n border: none;\n outline: none;\n font-family: \"Micrsofot Yahei\";\n resize: none;\n}\n.text .send[data-v-7530310c] {\n position: absolute;\n bottom: 10px;\n right: 30px;\n width: 75px;\n height: 28px;\n line-height: 28px;\n box-sizing: border-box;\n text-align: center;\n border: 1px solid #e5e5e5;\n border-radius: 3px;\n background: #f5f5f5;\n font-size: 14px;\n color: #7c7c7c;\n}\n.text .send[data-v-7530310c]:hover {\n background: #129611;\n color: #fff;\n}\n.text .warn[data-v-7530310c] {\n position: absolute;\n bottom: 50px;\n right: 10px;\n width: 110px;\n height: 30px;\n line-height: 30px;\n font-size: 12px;\n text-align: center;\n border: 1px solid #bdbdbd;\n border-radius: 4px;\n box-shadow: 0 1px 5px 1px #bdbdbd;\n}\n.text .warn.appear-enter-active[data-v-7530310c],\n.text .warn.appear-leave-active[data-v-7530310c] {\n transition: all 1s;\n}\n.text .warn.appear-enter[data-v-7530310c],\n.text .warn.appear-leave-active[data-v-7530310c] {\n opacity: 0;\n}\n.text .warn[data-v-7530310c]:before {\n content: \" \";\n position: absolute;\n top: 100%;\n right: 20px;\n border: 7px solid transparent;\n border-top-color: #fff;\n -webkit-filter: drop-shadow(1px 3px 2px #bdbdbd);\n filter: drop-shadow(1px 3px 2px #bdbdbd);\n}\n\n\n// WEBPACK FOOTER //\n// ./src/components/text/text.vue","\n.content[data-v-7bf0e6a5] {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n width: 800px;\n}\n.content .friend-wrapper[data-v-7bf0e6a5] {\n width: 250px;\n background: #e6e6e6;\n}\n.content .friendinfo[data-v-7bf0e6a5] {\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n}\n\n\n// WEBPACK FOOTER //\n// ./src/page/friend/friend.vue","\n.friendlist[data-v-2916bea8] {\n height: 540px;\n overflow-y: auto;\n}\n.friendlist .frienditem[data-v-2916bea8] {\n border-top: 1px solid #dadada;\n}\n.friendlist .frienditem[data-v-2916bea8]:first-child,\n.friendlist .frienditem.noborder[data-v-2916bea8] {\n border-top: none;\n}\n.friendlist .frienditem .list_title[data-v-2916bea8] {\n box-sizing: border-box;\n width: 100%;\n font-size: 12px;\n padding: 15px 0 3px 12px;\n color: #999;\n}\n.friendlist .frienditem .friend-info[data-v-2916bea8] {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n padding: 12px;\n transition: background-color 0.1s;\n font-size: 0;\n}\n.friendlist .frienditem .friend-info[data-v-2916bea8]:hover {\n background-color: #dcdcdc;\n}\n.friendlist .frienditem .friend-info.active[data-v-2916bea8] {\n background-color: #c4c4c4;\n}\n.friendlist .frienditem .friend-info .avatar[data-v-2916bea8] {\n border-radius: 2px;\n margin-right: 12px;\n}\n.friendlist .frienditem .friend-info .remark[data-v-2916bea8] {\n font-size: 14px;\n line-height: 36px;\n}\n\n\n// WEBPACK FOOTER //\n// ./src/components/friendlist/friendlist.vue","\n.newfriend[data-v-f8912ca8] {\n height: 60px;\n padding: 28px 0 0 30px;\n box-sizing: border-box;\n border-bottom: 1px solid #e7e7e7;\n}\n.newfriend .nickname[data-v-f8912ca8] {\n font-size: 18px;\n}\n.friendInfo[data-v-f8912ca8] {\n padding: 0 90px;\n}\n.esInfo[data-v-f8912ca8] {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n padding: 100px 0 45px 0;\n}\n.esInfo .left[data-v-f8912ca8] {\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n}\n.esInfo .left .people .nickname[data-v-f8912ca8] {\n display: inline-block;\n font-size: 20px;\n margin-bottom: 16px;\n}\n.esInfo .left .people .gender-male[data-v-f8912ca8],\n.esInfo .left .people .gender-female[data-v-f8912ca8] {\n display: inline-block;\n width: 18px;\n height: 18px;\n vertical-align: top;\n margin-top: 2px;\n}\n.esInfo .left .people .gender-male[data-v-f8912ca8] {\n background-image: url(\"man.png\");\n background-size: cover;\n}\n.esInfo .left .people .gender-female[data-v-f8912ca8] {\n background-image: url(\"woman.png\");\n background-size: cover;\n}\n.esInfo .left .signature[data-v-f8912ca8] {\n font-size: 14px;\n color: rgba(153,153,153,0.8);\n}\n.esInfo .right .avatar[data-v-f8912ca8] {\n border-radius: 3px;\n}\n.detInfo[data-v-f8912ca8] {\n padding: 40px 0;\n border-top: 1px solid #e7e7e7;\n border-bottom: 1px solid #e7e7e7;\n}\n.detInfo .remark[data-v-f8912ca8],\n.detInfo .area[data-v-f8912ca8],\n.detInfo .wxid[data-v-f8912ca8] {\n font-size: 14px;\n margin-top: 20px;\n}\n.detInfo .remark span[data-v-f8912ca8],\n.detInfo .area span[data-v-f8912ca8],\n.detInfo .wxid span[data-v-f8912ca8] {\n font-size: 14px;\n color: rgba(153,153,153,0.8);\n margin-right: 40px;\n}\n.detInfo .remark[data-v-f8912ca8] {\n margin-top: 0;\n}\n.send[data-v-f8912ca8] {\n position: relative;\n text-align: center;\n width: 140px;\n height: 36px;\n left: 115px;\n top: 50px;\n line-height: 36px;\n font-size: 14px;\n color: #fff;\n background-color: #1aad19;\n cursor: pointer;\n border-radius: 2px;\n}\n.send[data-v-f8912ca8]:hover {\n background: #129611;\n}\n\n\n// WEBPACK FOOTER //\n// ./src/components/info/info.vue","\n.resume[data-v-5ec67076] {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n height: 100%;\n}\n.resume .about[data-v-5ec67076] {\n width: 250px;\n background-color: #244664;\n padding: 10px;\n box-sizing: border-box;\n color: #fff;\n}\n.resume .about .name[data-v-5ec67076] {\n text-align: center;\n margin: 20px auto 40px;\n font-size: 28px;\n font-weight: 600;\n}\n.resume .about .intention[data-v-5ec67076] {\n font-size: 20px;\n}\n.resume .about .intention span[data-v-5ec67076] {\n display: block;\n text-align: right;\n font-size: 16px;\n line-height: 18px;\n margin: 20px 0;\n letter-spacing: 1px;\n}\n.resume .about .info .info-title[data-v-5ec67076] {\n font-size: 20px;\n}\n.resume .about .info .info-item[data-v-5ec67076] {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n margin: 10px 0 20px 0;\n height: 40px;\n line-height: 40px;\n}\n.resume .about .info .info-item .icon[data-v-5ec67076] {\n width: 40px;\n height: 40px;\n background-color: #fff;\n border-radius: 50%;\n margin-right: 20px;\n background-position: center;\n background-repeat: no-repeat;\n background-size: 26px;\n}\n.resume .about .info .info-item .icon.school[data-v-5ec67076] {\n background-image: url(\"school.png\");\n}\n.resume .about .info .info-item .icon.major[data-v-5ec67076] {\n background-image: url(\"major.png\");\n}\n.resume .about .info .info-item .icon.phone[data-v-5ec67076] {\n background-image: url(\"phone.png\");\n background-size: 32px;\n}\n.resume .about .info .info-item .icon.email[data-v-5ec67076] {\n background-image: url(\"email.png\");\n}\n.resume .power[data-v-5ec67076] {\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n overflow-y: auto;\n padding: 70px 50px 30px 50px;\n background-color: #fff;\n}\n.resume .power .power-item[data-v-5ec67076] {\n color: #244664;\n}\n.resume .power .power-item .title[data-v-5ec67076] {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n margin-bottom: 20px;\n}\n.resume .power .power-item .title .icon[data-v-5ec67076] {\n display: inline-block;\n width: 50px;\n height: 50px;\n background-color: #244664;\n border-radius: 50%;\n margin-right: 10px;\n background-position: center;\n background-repeat: no-repeat;\n background-size: 30px;\n}\n.resume .power .power-item .title .icon.technology[data-v-5ec67076] {\n background-size: 35px;\n background-image: url(\"technology.png\");\n}\n.resume .power .power-item .title .icon.evaluation[data-v-5ec67076] {\n background-image: url(\"evaluation.png\");\n}\n.resume .power .power-item .title .name[data-v-5ec67076] {\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n display: inline-block;\n height: 50px;\n font-size: 24px;\n font-weight: 600;\n line-height: 50px;\n box-sizing: border-box;\n border-bottom: 2px solid #244664;\n}\n.resume .power .power-item .technology-item[data-v-5ec67076] {\n margin: 20px auto;\n font-size: 14px;\n line-height: 25px;\n}\n.resume .power .power-item .technology-item span[data-v-5ec67076] {\n display: inline-block;\n font-size: 18px;\n}\n.resume .power .power-item .myevaluation[data-v-5ec67076] {\n font-size: 15px;\n line-height: 18px;\n text-indent: 2em;\n}\n\n\n// WEBPACK FOOTER //\n// ./src/page/resume/resume.vue"],"sourceRoot":""}
\ No newline at end of file
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header,
menu, nav, output, ruby, section, summary,
time, mark, audio, video, input {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font-weight: normal;
vertical-align: baseline;
}
article, aside, details, figcaption, figure,
footer, header, menu, nav, section {
display: block;
}
body {
line-height: 1;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
a {
color: #7e8c8d;
text-decoration: none;
-webkit-backface-visibility: hidden;
}
li {
list-style: none;
}
html, body {
width: 100%;
height: 100%;
overflow-y: hidden
}
body {
-webkit-text-size-adjust: none;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
background-image: url(../images/bg.png);
background-size: cover;
}
/* 设置滚动条的样式 */
::-webkit-scrollbar {
width: 8px;
}
/* 滚动条滑块 */
::-webkit-scrollbar-thumb {
border-radius: 6px;
background: rgba(0,0,0,0.1);
}
\ No newline at end of file
webpackJsonp([1],[,,,,,function(e,t,i){"use strict";var s=i(4),a=i(105);s.a.use(a.a);var n=new a.a({routes:[{path:"/chat",component:i(51)},{path:"/friend",component:i(52)},{path:"/my",component:i(53)}],linkActiveClass:"active"});n.push({path:"/chat"}),t.a=n},,,,,,,,,,,,function(e,t,i){i(68);var s=i(1)(i(115),i(56),"data-v-3cb894a8",null);e.exports=s.exports},,,,,,function(e,t,i){i(70);var s=i(1)(i(109),i(58),"data-v-6724880a",null);e.exports=s.exports},,function(e,t,i){"use strict";var s=i(107),a=i.n(s),n=i(4),c=i(2),r=i(5);n.a.use(c.b);var o=new Date,l={searchText:"",user:{name:"ratel",img:"static/images/UserAvatar.jpg"},chatlist:[{id:1,user:{name:"妈咪",img:"static/images/mother.jpg"},messages:[{content:"么么哒,妈咪爱你",date:o},{content:"按回车可以发送信息,还可以给我发送表情哟",date:o}],index:1},{id:2,user:{name:"father",img:"static/images/father.jpg"},messages:[{content:"Are you kidding me?",date:o}],index:2},{id:3,user:{name:"机器人",img:"static/images/vue.jpg"},messages:[{content:"我会跟你聊聊天的哟",date:o}],index:3}],friendlist:[{id:0,wxid:"",initial:"新的朋友",img:"static/images/newfriend.jpg",signature:"",nickname:"新的朋友",sex:0,remark:"新的朋友",area:""},{id:1,wxid:"AmorAres-",initial:"A",img:"static/images/小姨妈.jpg",signature:"每天我就萌萌哒",nickname:"Amor",sex:0,remark:"Amor",area:"浙江 宁波"},{id:2,wxid:"Big-fly",initial:"B",img:"static/images/大飞哥.jpg",signature:"你不知道的js",nickname:"fly",sex:1,remark:"大飞哥",area:"奥地利 布尔根兰"},{id:3,wxid:"microzz",initial:"D",img:"static/images/microzz.jpg",signature:"学习让我快乐让我成长",nickname:"microzz",sex:1,remark:"大佬",area:"江西 赣州"},{id:4,wxid:"hwn0366",initial:"F",img:"static/images/father.jpg",signature:"学习让我快乐让我成长",nickname:"丢",sex:1,remark:"father",area:"江西 抚州"},{id:5,wxid:"orange66",initial:"J",img:"static/images/orange.jpg",signature:"你可以笑的很阳光!",nickname:"orange",sex:1,remark:"橘子",area:"江西 赣州"},{id:6,wxid:"Seto_L",img:"static/images/加菲猫.jpg",signature:"自强不息",nickname:"21",sex:1,remark:"加菲",area:"北京 海淀"},{id:7,wxid:"wxid_itjz73t1ajt722",initial:"M",img:"static/images/mother.jpg",signature:"开开心心就好",nickname:"娄娄",sex:0,remark:"妈咪",area:"江西 抚州"},{id:8,wxid:"hj960503",img:"static/images/萌萌俊.jpg",signature:"原谅我有点蠢。。",nickname:"。。。。。",sex:1,remark:"萌萌均",area:"江西 萍乡"}],emojis:[{file:"100.gif",code:"/::)",title:"微笑",reg:/\/::\)/g},{file:"101.gif",code:"/::~",title:"伤心",reg:/\/::~/g},{file:"102.gif",code:"/::B",title:"美女",reg:/\/::B/g},{file:"103.gif",code:"/::|",title:"发呆",reg:/\/::\|/g},{file:"104.gif",code:"/:8-)",title:"墨镜",reg:/\/:8-\)/g},{file:"105.gif",code:"/::<",title:"哭",reg:/\/::</g},{file:"106.gif",code:"/::$",title:"羞",reg:/\/::\$/g},{file:"107.gif",code:"/::X",title:"哑",reg:/\/::X/g},{file:"108.gif",code:"/::Z",title:"睡",reg:/\/::Z/g},{file:"109.gif",code:"/::'(",title:"哭",reg:/\/::'\(/g},{file:"110.gif",code:"/::-|",title:"囧",reg:/\/::-\|/g},{file:"111.gif",code:"/::@",title:"怒",reg:/\/::@/g},{file:"112.gif",code:"/::P",title:"调皮",reg:/\/::P/g},{file:"113.gif",code:"/::D",title:"笑",reg:/\/::D/g},{file:"114.gif",code:"/::O",title:"惊讶",reg:/\/::O/g},{file:"115.gif",code:"/::(",title:"难过",reg:/\/::\(/g},{file:"116.gif",code:"/::+",title:"酷",reg:/\/::\+/g},{file:"117.gif",code:"/:--b",title:"汗",reg:/\/:--b/g},{file:"118.gif",code:"/::Q",title:"抓狂",reg:/\/::Q/g},{file:"119.gif",code:"/::T",title:"吐",reg:/\/::T/g},{file:"120.gif",code:"/:,@P",title:"笑",reg:/\/:,@P/g},{file:"121.gif",code:"/:,@-D",title:"快乐",reg:/\/:,@-D/g},{file:"122.gif",code:"/::d",title:"奇",reg:/\/::d/g},{file:"123.gif",code:"/:,@o",title:"傲",reg:/\/:,@o/g},{file:"124.gif",code:"/::g",title:"饿",reg:/\/::g/g},{file:"125.gif",code:"/:|-)",title:"累",reg:/\/:\|-\)/g},{file:"126.gif",code:"/::!",title:"吓",reg:/\/::!/g},{file:"127.gif",code:"/::L",title:"汗",reg:/\/::L/g},{file:"128.gif",code:"/::>",title:"高兴",reg:/\/::>/g},{file:"129.gif",code:"/::,@",title:"闲",reg:/\/::,@/g},{file:"130.gif",code:"/:,@f",title:"努力",reg:/\/:,@f/g},{file:"131.gif",code:"/::-S",title:"骂",reg:/\/::-S/g},{file:"133.gif",code:"/:,@x",title:"秘密",reg:/\/:,@x/g},{file:"134.gif",code:"/:,@@",title:"乱",reg:/\/:,@@/g},{file:"135.gif",code:"/::8",title:"疯",reg:/\/::8/g},{file:"136.gif",code:"/:,@!",title:"哀",reg:/\/:,@!/g},{file:"137.gif",code:"/:!!!",title:"鬼",reg:/\/:!!!/g},{file:"138.gif",code:"/:xx",title:"打击",reg:/\/:xx/g},{file:"139.gif",code:"/:bye",title:"bye",reg:/\/:bye/g},{file:"142.gif",code:"/:handclap",title:"鼓掌",reg:/\/:handclap/g},{file:"145.gif",code:"/:<@",title:"什么",reg:/\/:<@/g},{file:"147.gif",code:"/::-O",title:"累",reg:/\/::-O/g},{file:"153.gif",code:"/:@x",title:"吓",reg:/\/:@x/g},{file:"155.gif",code:"/:pd",title:"刀",reg:/\/:pd/g},{file:"156.gif",code:"/:<W>",title:"水果",reg:/\/:<W>/g},{file:"157.gif",code:"/:beer",title:"酒",reg:/\/:beer/g},{file:"158.gif",code:"/:basketb",title:"篮球",reg:/\/:basketb/g},{file:"159.gif",code:"/:oo",title:"乒乓",reg:/\/:oo/g},{file:"195.gif",code:"/:circle",title:"跳舞",reg:/\/:circle/g},{file:"160.gif",code:"/:coffee",title:"咖啡",reg:/\/:coffee/g}],selectId:1,selectFriendId:0},d={initData:function(e){var t=localStorage.getItem("vue-chat");t&&(e.chatlist=JSON.parse(t))},search:function(e,t){e.searchText=t},selectSession:function(e,t){e.selectId=t},selectFriend:function(e,t){e.selectFriendId=t},sendMessage:function(e,t){var i=e.chatlist.find(function(t){return t.id===e.selectId});i.messages.push({content:t,date:new Date,self:!0}),console.log(),"机器人"===i.user.name&&n.a.axios.get("https://zhaoplus.com/api/AI?search="+t).then(function(e){var s=e.data.result.text;t.includes("/:")?s="嘻嘻":t.includes("是谁")&&(s="宇宙无底小可爱"),s.includes("没有找到")&&(s="人家听不懂你说的是什么了啦"),i.messages.push({content:s,date:new Date,self:!1})})},send:function(e){var t=e.friendlist.find(function(t){return t.id===e.selectFriendId}),i=e.chatlist.find(function(e){return e.user.name===t.remark});if(i)e.selectId=i.index,r.a.push({path:"/chat"});else{e.selectId=1;for(var s=0;s<e.chatlist.length;s++)e.chatlist[s].id++,e.chatlist[s].index++;e.chatlist.unshift({id:1,user:{name:t.remark,img:t.img},messages:[{content:"已经置顶聊天,可以给我发信息啦!",date:new Date}],index:1})}}},f={searchedChatlist:function(e){return e.chatlist.filter(function(t){return t.user.name.includes(e.searchText)})},searchedFriendlist:function(e){return e.friendlist.filter(function(t){return t.remark.includes(e.searchText)})},selectedChat:function(e){return e.chatlist.find(function(t){return t.id===e.selectId})},selectedFriend:function(e){return e.friendlist.find(function(t){return t.id===e.selectFriendId})},messages:function(e){return e.chatlist.find(function(t){return t.id===e.selectId}).messages}},u={search:function(e,t){var i=e.commit;setTimeout(function(){i("search",t)},100)},selectSession:function(e,t){return(0,e.commit)("selectSession",t)},selectFriend:function(e,t){return(0,e.commit)("selectFriend",t)},sendMessage:function(e,t){return(0,e.commit)("sendMessage",t)},send:function(e){return(0,e.commit)("send")},initData:function(e){return(0,e.commit)("initData")}},g=new c.b.Store({state:l,mutations:d,getters:f,actions:u});g.watch(function(e){return e.chatlist},function(e){localStorage.setItem("vue-chat",a()(e))},{deep:!0}),t.a=g},,,,,,,,,,,,,,,,,,,,function(e,t,i){i(74);var s=i(1)(i(110),i(62),"data-v-93a1c5a8",null);e.exports=s.exports},function(e,t,i){i(66);var s=i(1)(i(111),i(54),"data-v-2916bea8",null);e.exports=s.exports},function(e,t,i){i(75);var s=i(1)(i(112),i(63),"data-v-f8912ca8",null);e.exports=s.exports},function(e,t,i){i(67);var s=i(1)(i(113),i(55),"data-v-2b06ab08",null);e.exports=s.exports},function(e,t,i){i(71);var s=i(1)(i(114),i(59),"data-v-6d69d72c",null);e.exports=s.exports},function(e,t,i){i(72);var s=i(1)(i(116),i(60),"data-v-7530310c",null);e.exports=s.exports},function(e,t,i){i(76);var s=i(1)(i(117),i(64),"data-v-fe8a4bb6",null);e.exports=s.exports},function(e,t,i){i(73);var s=i(1)(i(118),i(61),"data-v-7bf0e6a5",null);e.exports=s.exports},function(e,t,i){i(69);var s=i(1)(i(119),i(57),"data-v-5ec67076",null);e.exports=s.exports},function(e,t){e.exports={render:function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"friendlist"},[i("ul",e._l(e.searchedFriendlist,function(t){return i("li",{staticClass:"frienditem",class:{noborder:!t.initial}},[t.initial?i("div",{staticClass:"list_title"},[e._v(e._s(t.initial))]):e._e(),e._v(" "),i("div",{staticClass:"friend-info",class:{active:t.id===e.selectFriendId},on:{click:function(i){e.selectFriend(t.id)}}},[i("img",{staticClass:"avatar",attrs:{width:"36",height:"36",src:t.img}}),e._v(" "),i("div",{staticClass:"remark"},[e._v(e._s(t.remark))])])])}))])},staticRenderFns:[]}},function(e,t){e.exports={render:function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"message"},[i("header",{staticClass:"header"},[i("div",{staticClass:"friendname"},[e._v(e._s(e.selectedChat.user.name))])]),e._v(" "),i("div",{ref:"list",staticClass:"message-wrapper"},[e.selectedChat?i("ul",e._l(e.selectedChat.messages,function(t){return i("li",{staticClass:"message-item"},[i("div",{staticClass:"time"},[i("span",[e._v(e._s(e._f("time")(t.date)))])]),e._v(" "),i("div",{staticClass:"main",class:{self:t.self}},[i("img",{staticClass:"avatar",attrs:{width:"36",height:"36",src:t.self?e.user.img:e.selectedChat.user.img}}),e._v(" "),i("div",{staticClass:"content"},[i("div",{staticClass:"text",domProps:{innerHTML:e._s(e.replaceFace(t.content))}})])])])})):e._e()])])},staticRenderFns:[]}},function(e,t){e.exports={render:function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"wrapper"},[i("div",{staticClass:"search-wrapper"},[i("input",{directives:[{name:"model",rawName:"v-model",value:e.search,expression:"search"}],staticClass:"searchInput",attrs:{type:"text",placeholder:"搜索"},domProps:{value:e.search},on:{keyup:e.change,input:function(t){t.target.composing||(e.search=t.target.value)}}}),e._v(" "),i("i",{directives:[{name:"show",rawName:"v-show",value:e.noText,expression:"noText"}],staticClass:"icon iconfont icon-search"}),e._v(" "),i("div",{directives:[{name:"show",rawName:"v-show",value:e.haveText,expression:"haveText"}],staticClass:"searchInput-delete",on:{click:e.del}})])])},staticRenderFns:[]}},function(e,t){e.exports={render:function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},staticRenderFns:[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"resume"},[i("div",{staticClass:"about"},[i("h1",{staticClass:"name"},[e._v("韩超男")]),e._v(" "),i("div",{staticClass:"intention"},[e._v("求职意向:"),i("br"),i("span",[e._v("web前端工程师")])]),e._v(" "),i("div",{staticClass:"info"},[i("div",{staticClass:"info-title"},[e._v("个人信息:")]),e._v(" "),i("div",{staticClass:"info-item"},[i("i",{staticClass:"icon school"}),e._v(" "),i("span",[e._v("东华理工大学(本科)")])]),e._v(" "),i("div",{staticClass:"info-item"},[i("i",{staticClass:"icon major"}),e._v(" "),i("span",[e._v("软件工程(2018毕业)")])]),e._v(" "),i("div",{staticClass:"info-item"},[i("i",{staticClass:"icon phone"}),e._v(" "),i("span",[e._v("18174019297")])]),e._v(" "),i("div",{staticClass:"info-item"},[i("i",{staticClass:"icon email"}),e._v(" "),i("span",[e._v("1062384845@qq.com")])])])]),e._v(" "),i("div",{staticClass:"power"},[i("div",{staticClass:"power-item"},[i("div",{staticClass:"title"},[i("i",{staticClass:"icon technology"}),e._v(" "),i("span",{staticClass:"name"},[e._v("技术栈")])]),e._v(" "),i("div",{staticClass:"technology-item"},[i("span",[e._v("【前端】")]),e._v("HTML/HTML5   CSS/CSS3   JavaScript(ES6,ES5)   SASS   Stylus   Vue.JS   AJAX   jQuery   微信小程序   Babel\n ")]),e._v(" "),i("div",{staticClass:"technology-item"},[i("span",[e._v("【后端】")]),e._v("Node.js (express)\n ")]),e._v(" "),i("div",{staticClass:"technology-item"},[i("span",[e._v("【数据库】")]),e._v("MongoDB\n ")]),e._v(" "),i("div",{staticClass:"technology-item"},[i("span",[e._v("【自动化构建】")]),e._v("Webpack\n ")]),e._v(" "),i("div",{staticClass:"technology-item"},[i("span",[e._v("【版本管理】")]),e._v("git\n ")])]),e._v(" "),i("div",{staticClass:"power-item"},[i("div",{staticClass:"title"},[i("i",{staticClass:"icon evaluation"}),e._v(" "),i("span",{staticClass:"name"},[e._v("个人评价")])]),e._v(" "),i("div",{staticClass:"myevaluation"},[e._v("本人是软件学院的学生,在校学习了多门编程语言,有良好的编程思想。除了学校课程\n 以外自学能力较强,能独立思考,独立解决问题,也会经常逛技术社区,学习好的分享技术.技术发展太快,我会以更开发的心态去接受新技术,不断扩展自己。我相信自己可以做好本职工作。我相信自己可以很快的融入公司的技术团队。\n ")])])])])}]}},function(e,t){e.exports={render:function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{attrs:{id:"app"}},[i("div",{staticClass:"sidebar"},[i("mycard")],1),e._v(" "),i("div",{staticClass:"main"},[i("router-view")],1)])},staticRenderFns:[]}},function(e,t){e.exports={render:function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"mycard"},[i("header",[i("img",{staticClass:"avatar",attrs:{src:e.user.img}})]),e._v(" "),i("div",{staticClass:"navbar",on:{click:e.clearSearch}},[i("router-link",{staticClass:"icon iconfont icon-msg",attrs:{to:"/chat"}}),e._v(" "),i("router-link",{staticClass:"icon iconfont icon-friend",attrs:{to:"/friend"}}),e._v(" "),i("router-link",{staticClass:"icon iconfont icon-collection",attrs:{to:"/my"}})],1),e._v(" "),e._m(0)])},staticRenderFns:[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("footer",[i("i",{staticClass:"icon iconfont icon-more"})])}]}},function(e,t){e.exports={render:function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"text"},[i("div",{staticClass:"emoji"},[i("i",{staticClass:"icon iconfont icon-look",on:{click:function(t){e.showEmoji=!e.showEmoji}}}),e._v(" "),i("transition",{attrs:{name:"showbox"}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.showEmoji,expression:"showEmoji"}],staticClass:"emojiBox"},e._l(e.emojis,function(t,s){return i("li",[i("img",{attrs:{src:"static/emoji/"+t.file,data:t.code},on:{click:function(i){e.content+=t.code}}})])}))])],1),e._v(" "),i("textarea",{directives:[{name:"model",rawName:"v-model",value:e.content,expression:"content"}],ref:"text",domProps:{value:e.content},on:{keyup:e.onKeyup,click:function(t){e.showEmoji=!1},input:function(t){t.target.composing||(e.content=t.target.value)}}}),e._v(" "),i("div",{staticClass:"send",on:{click:e.send}},[i("span",[e._v("发送(ent)")])]),e._v(" "),i("transition",{attrs:{name:"appear"}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.warn,expression:"warn"}],staticClass:"warn"},[i("div",{staticClass:"description"},[e._v("不能发送空白信息")])])])],1)},staticRenderFns:[]}},function(e,t){e.exports={render:function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"content"},[i("div",{staticClass:"friend-wrapper"},[i("search"),e._v(" "),i("friendlist")],1),e._v(" "),i("div",{staticClass:"friendinfo"},[i("info")],1)])},staticRenderFns:[]}},function(e,t){e.exports={render:function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"msglist"},[i("ul",e._l(e.searchedChatlist,function(t){return i("li",{staticClass:"sessionlist",class:{active:t.id===e.selectId},on:{click:function(i){e.selectSession(t.id)}}},[i("div",{staticClass:"list-left"},[i("img",{staticClass:"avatar",attrs:{width:"42",height:"42",alt:t.user.name,src:t.user.img}})]),e._v(" "),i("div",{staticClass:"list-right"},[i("p",{staticClass:"name"},[e._v(e._s(t.user.name))]),e._v(" "),i("span",{staticClass:"time"},[e._v(e._s(e._f("time")(t.messages[t.messages.length-1].date)))]),e._v(" "),i("p",{staticClass:"lastmsg"},[e._v(e._s(t.messages[t.messages.length-1].content))])])])}))])},staticRenderFns:[]}},function(e,t){e.exports={render:function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"Info-wrapper"},[i("div",{directives:[{name:"show",rawName:"v-show",value:0===e.selectedFriend.id,expression:"selectedFriend.id === 0"}],staticClass:"newfriend"},[i("div",{staticClass:"nickname"},[e._v(e._s(e.selectedFriend.nickname))])]),e._v(" "),i("div",{directives:[{name:"show",rawName:"v-show",value:e.selectedFriend.id>0,expression:"selectedFriend.id > 0"}],staticClass:"friendInfo"},[i("div",{staticClass:"esInfo"},[i("div",{staticClass:"left"},[i("div",{staticClass:"people"},[i("div",{staticClass:"nickname"},[e._v(e._s(e.selectedFriend.nickname))]),e._v(" "),i("div",{class:[1===e.selectedFriend.sex?"gender-male":"gender-female"]})]),e._v(" "),i("div",{staticClass:"signature"},[e._v(e._s(e.selectedFriend.signature))])]),e._v(" "),i("div",{staticClass:"right"},[i("img",{staticClass:"avatar",attrs:{width:"60",height:"60",src:e.selectedFriend.img}})])]),e._v(" "),i("div",{staticClass:"detInfo"},[i("div",{staticClass:"remark"},[i("span",[e._v("备   注")]),e._v(e._s(e.selectedFriend.remark))]),e._v(" "),i("div",{staticClass:"area"},[i("span",[e._v("地   区")]),e._v(e._s(e.selectedFriend.area))]),e._v(" "),i("div",{staticClass:"wxid"},[i("span",[e._v("微信号")]),e._v(e._s(e.selectedFriend.wxid))])]),e._v(" "),i("div",{staticClass:"send",on:{click:e.send}},[i("span",[e._v("发消息")])])])])},staticRenderFns:[]}},function(e,t){e.exports={render:function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"content"},[i("div",{staticClass:"msglist"},[i("search"),e._v(" "),i("chatlist")],1),e._v(" "),i("div",{staticClass:"chatbox"},[i("message"),e._v(" "),i("v-text")],1)])},staticRenderFns:[]}},,function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s=i(49),a=i.n(s);i(2);t.default={components:{mycard:a.a},created:function(){this.$store.dispatch("initData")}}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s=i(3),a=i.n(s),n=i(2);t.default={computed:a()({},i.i(n.a)(["selectId","searchText"]),i.i(n.c)(["searchedChatlist"])),methods:a()({},i.i(n.d)(["selectSession"])),filters:{time:function(e){return"string"==typeof e&&(e=new Date(e)),e.getMinutes()<10?e.getHours()+":0"+e.getMinutes():e.getHours()+":"+e.getMinutes()}}}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s=i(3),a=i.n(s),n=i(2);t.default={computed:a()({},i.i(n.a)(["selectFriendId","searchText"]),i.i(n.c)(["searchedFriendlist"])),methods:a()({},i.i(n.d)(["selectFriend"]))}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s=i(3),a=i.n(s),n=(i(5),i(2));t.default={computed:a()({},i.i(n.c)(["selectedFriend"])),methods:{send:function(){this.$store.dispatch("send"),this.$store.dispatch("search","")}}}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s=i(3),a=i.n(s),n=i(2);t.default={computed:a()({},i.i(n.c)(["selectedChat","messages"]),i.i(n.a)(["user","emojis"])),mounted:function(){var e=this;setTimeout(function(){return e.$refs.list.scrollTop=e.$refs.list.scrollHeight},0)},watch:{messages:function(){var e=this;setTimeout(function(){return e.$refs.list.scrollTop=e.$refs.list.scrollHeight},0)}},methods:{replaceFace:function(e){if(e.includes("/:")){for(var t=this.emojis,i=0;i<t.length;i++)e=e.replace(t[i].reg,'<img src="static/emoji/'+t[i].file+'" alt="" style="vertical-align: middle; width: 24px; height: 24px" />');return e}return e}},filters:{time:function(e){return"string"==typeof e&&(e=new Date(e)),e.getMinutes()<10?e.getHours()+":0"+e.getMinutes():e.getHours()+":"+e.getMinutes()}}}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s=i(3),a=i.n(s),n=i(2);t.default={computed:a()({},i.i(n.a)(["user"])),methods:{clearSearch:function(){this.$store.dispatch("search","")}}}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={methods:{change:function(){this.$store.dispatch("search",this.search)},del:function(){this.search="",this.change()}},data:function(){return{search:"",active:!1}},computed:{noText:function(){return""===this.search},haveText:function(){return""!==this.search}}}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s=i(3),a=i.n(s),n=i(2);t.default={data:function(){return{content:"",frequency:0,warn:!1,showEmoji:!1}},computed:a()({},i.i(n.a)(["selectId","emojis"]),i.i(n.c)(["selectedChat"])),methods:{onKeyup:function(e){13===e.keyCode&&this.send()},send:function(){var e=this;this.content.length<=1?(this.warn=!0,this.content="",setTimeout(function(){e.warn=!1},1e3)):(this.$store.dispatch("sendMessage",this.content),this.content="")}},mounted:function(){this.$refs.text.focus()},watch:{selectId:function(){var e=this;setTimeout(function(){e.$refs.text.focus()},0)},content:function(){var e=this;""===this.content&&0===this.frequency&&(this.warn=!0,this.frequency++,setTimeout(function(){e.warn=!1},1e3))}}}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s=i(17),a=i.n(s),n=i(45),c=i.n(n),r=i(48),o=i.n(r),l=i(50),d=i.n(l);t.default={components:{search:a.a,chatlist:c.a,message:o.a,vText:d.a}}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s=i(17),a=i.n(s),n=i(46),c=i.n(n),r=i(47),o=i.n(r);t.default={components:{search:a.a,friendlist:c.a,info:o.a}}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s=i(4),a=i(23),n=i.n(a),c=i(5),r=i(22),o=i.n(r),l=i(24),d=i.n(l),f=i(25);s.a.config.productionTip=!1,s.a.use(d.a,o.a);new s.a({el:"#app",router:c.a,store:f.a,template:"<App/>",components:{App:n.a}})}],[120]);
//# sourceMappingURL=app.1b3f590b64bb624453a0.js.map
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
!function(e){function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}var r=window.webpackJsonp;window.webpackJsonp=function(t,c,i){for(var u,a,f,s=0,l=[];s<t.length;s++)a=t[s],o[a]&&l.push(o[a][0]),o[a]=0;for(u in c)Object.prototype.hasOwnProperty.call(c,u)&&(e[u]=c[u]);for(r&&r(t,c,i);l.length;)l.shift()();if(i)for(s=0;s<i.length;s++)f=n(n.s=i[s]);return f};var t={},o={2:0},c=new Promise(function(e){e()});n.e=function(e){function r(){u.onerror=u.onload=null,clearTimeout(a);var n=o[e];0!==n&&(n&&n[1](new Error("Loading chunk "+e+" failed.")),o[e]=void 0)}if(0===o[e])return c;if(o[e])return o[e][2];var t=new Promise(function(n,r){o[e]=[n,r]});o[e][2]=t;var i=document.getElementsByTagName("head")[0],u=document.createElement("script");u.type="text/javascript",u.charset="utf-8",u.async=!0,u.timeout=12e4,n.nc&&u.setAttribute("nonce",n.nc),u.src=n.p+"static/js/"+e+"."+{0:"17b2cd8d08105dde1431",1:"1b3f590b64bb624453a0"}[e]+".js";var a=setTimeout(r,12e4);return u.onerror=u.onload=r,i.appendChild(u),t},n.m=e,n.c=t,n.i=function(e){return e},n.d=function(e,r,t){n.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:t})},n.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(r,"a",r),r},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p="./",n.oe=function(e){throw console.error(e),e}}([]);
//# sourceMappingURL=manifest.d3be35f59c0dd60aaa47.js.map
\ No newline at end of file
{"version":3,"sources":["webpack:///static/js/manifest.d3be35f59c0dd60aaa47.js","webpack:///webpack/bootstrap 18fbab2010c107150b8b"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","parentJsonpFunction","window","chunkIds","moreModules","executeModules","chunkId","result","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","shift","s","2","resolvedPromise","Promise","resolve","e","onScriptComplete","script","onerror","onload","clearTimeout","timeout","chunk","Error","undefined","promise","reject","head","document","getElementsByTagName","createElement","type","charset","async","nc","setAttribute","src","p","0","1","setTimeout","appendChild","m","c","value","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","oe","err","console","error"],"mappings":"CAAS,SAAUA,GCyCnB,QAAAC,GAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAE,OAGA,IAAAC,GAAAF,EAAAD,IACAI,EAAAJ,EACAK,GAAA,EACAH,WAUA,OANAJ,GAAAE,GAAAM,KAAAH,EAAAD,QAAAC,IAAAD,QAAAH,GAGAI,EAAAE,GAAA,EAGAF,EAAAD,QA5DA,GAAAK,GAAAC,OAAA,YACAA,QAAA,sBAAAC,EAAAC,EAAAC,GAIA,IADA,GAAAX,GAAAY,EAAAC,EAAAT,EAAA,EAAAU,KACQV,EAAAK,EAAAM,OAAoBX,IAC5BQ,EAAAH,EAAAL,GACAY,EAAAJ,IACAE,EAAAG,KAAAD,EAAAJ,GAAA,IAEAI,EAAAJ,GAAA,CAEA,KAAAZ,IAAAU,GACAQ,OAAAC,UAAAC,eAAAd,KAAAI,EAAAV,KACAF,EAAAE,GAAAU,EAAAV,GAIA,KADAO,KAAAE,EAAAC,EAAAC,GACAG,EAAAC,QACAD,EAAAO,SAEA,IAAAV,EACA,IAAAP,EAAA,EAAYA,EAAAO,EAAAI,OAA2BX,IACvCS,EAAAd,IAAAuB,EAAAX,EAAAP,GAGA,OAAAS,GAIA,IAAAZ,MAGAe,GACAO,EAAA,GAGAC,EAAA,GAAAC,SAAA,SAAAC,GAAuDA,KA4BvD3B,GAAA4B,EAAA,SAAAf,GA8BA,QAAAgB,KAEAC,EAAAC,QAAAD,EAAAE,OAAA,KACAC,aAAAC,EACA,IAAAC,GAAAlB,EAAAJ,EACA,KAAAsB,IACAA,GACAA,EAAA,MAAAC,OAAA,iBAAAvB,EAAA,aAEAI,EAAAJ,OAAAwB,IAtCA,OAAApB,EAAAJ,GACA,MAAAY,EAIA,IAAAR,EAAAJ,GACA,MAAAI,GAAAJ,GAAA,EAIA,IAAAyB,GAAA,GAAAZ,SAAA,SAAAC,EAAAY,GACAtB,EAAAJ,IAAAc,EAAAY,IAEAtB,GAAAJ,GAAA,GAAAyB,CAGA,IAAAE,GAAAC,SAAAC,qBAAA,WACAZ,EAAAW,SAAAE,cAAA,SACAb,GAAAc,KAAA,kBACAd,EAAAe,QAAA,QACAf,EAAAgB,OAAA,EACAhB,EAAAI,QAAA,KAEAlC,EAAA+C,IACAjB,EAAAkB,aAAA,QAAAhD,EAAA+C,IAEAjB,EAAAmB,IAAAjD,EAAAkD,EAAA,aAAArC,EAAA,KAAwEsC,EAAA,uBAAAC,EAAA,wBAAsDvC,GAAA,KAC9H,IAAAqB,GAAAmB,WAAAxB,EAAA,KAgBA,OAfAC,GAAAC,QAAAD,EAAAE,OAAAH,EAaAW,EAAAc,YAAAxB,GAEAQ,GAIAtC,EAAAuD,EAAAxD,EAGAC,EAAAwD,EAAAtD,EAGAF,EAAAK,EAAA,SAAAoD,GAA2C,MAAAA,IAG3CzD,EAAA0D,EAAA,SAAAvD,EAAAwD,EAAAC,GACA5D,EAAA6D,EAAA1D,EAAAwD,IACAxC,OAAA2C,eAAA3D,EAAAwD,GACAI,cAAA,EACAC,YAAA,EACAC,IAAAL,KAMA5D,EAAAkE,EAAA,SAAA9D,GACA,GAAAwD,GAAAxD,KAAA+D,WACA,WAA2B,MAAA/D,GAAA,SAC3B,WAAiC,MAAAA,GAEjC,OADAJ,GAAA0D,EAAAE,EAAA,IAAAA,GACAA,GAIA5D,EAAA6D,EAAA,SAAAO,EAAAC,GAAsD,MAAAlD,QAAAC,UAAAC,eAAAd,KAAA6D,EAAAC,IAGtDrE,EAAAkD,EAAA,KAGAlD,EAAAsE,GAAA,SAAAC,GAA8D,KAApBC,SAAAC,MAAAF,GAAoBA","file":"static/js/manifest.d3be35f59c0dd60aaa47.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// install a JSONP callback for chunk loading\n/******/ \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n/******/ \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n/******/ \t\t// add \"moreModules\" to the modules object,\n/******/ \t\t// then flag all \"chunkIds\" as loaded and fire callback\n/******/ \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n/******/ \t\tfor(;i < chunkIds.length; i++) {\n/******/ \t\t\tchunkId = chunkIds[i];\n/******/ \t\t\tif(installedChunks[chunkId]) {\n/******/ \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n/******/ \t\t\t}\n/******/ \t\t\tinstalledChunks[chunkId] = 0;\n/******/ \t\t}\n/******/ \t\tfor(moduleId in moreModules) {\n/******/ \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n/******/ \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n/******/ \t\twhile(resolves.length) {\n/******/ \t\t\tresolves.shift()();\n/******/ \t\t}\n/******/ \t\tif(executeModules) {\n/******/ \t\t\tfor(i=0; i < executeModules.length; i++) {\n/******/ \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\treturn result;\n/******/ \t};\n/******/\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// objects to store loaded and loading chunks\n/******/ \tvar installedChunks = {\n/******/ \t\t2: 0\n/******/ \t};\n/******/\n/******/ \tvar resolvedPromise = new Promise(function(resolve) { resolve(); });\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/ \t// This file contains only the entry chunk.\n/******/ \t// The chunk loading function for additional chunks\n/******/ \t__webpack_require__.e = function requireEnsure(chunkId) {\n/******/ \t\tif(installedChunks[chunkId] === 0) {\n/******/ \t\t\treturn resolvedPromise;\n/******/ \t\t}\n/******/\n/******/ \t\t// a Promise means \"currently loading\".\n/******/ \t\tif(installedChunks[chunkId]) {\n/******/ \t\t\treturn installedChunks[chunkId][2];\n/******/ \t\t}\n/******/\n/******/ \t\t// setup Promise in chunk cache\n/******/ \t\tvar promise = new Promise(function(resolve, reject) {\n/******/ \t\t\tinstalledChunks[chunkId] = [resolve, reject];\n/******/ \t\t});\n/******/ \t\tinstalledChunks[chunkId][2] = promise;\n/******/\n/******/ \t\t// start chunk loading\n/******/ \t\tvar head = document.getElementsByTagName('head')[0];\n/******/ \t\tvar script = document.createElement('script');\n/******/ \t\tscript.type = 'text/javascript';\n/******/ \t\tscript.charset = 'utf-8';\n/******/ \t\tscript.async = true;\n/******/ \t\tscript.timeout = 120000;\n/******/\n/******/ \t\tif (__webpack_require__.nc) {\n/******/ \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n/******/ \t\t}\n/******/ \t\tscript.src = __webpack_require__.p + \"static/js/\" + chunkId + \".\" + {\"0\":\"17b2cd8d08105dde1431\",\"1\":\"1b3f590b64bb624453a0\"}[chunkId] + \".js\";\n/******/ \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n/******/ \t\tscript.onerror = script.onload = onScriptComplete;\n/******/ \t\tfunction onScriptComplete() {\n/******/ \t\t\t// avoid mem leaks in IE.\n/******/ \t\t\tscript.onerror = script.onload = null;\n/******/ \t\t\tclearTimeout(timeout);\n/******/ \t\t\tvar chunk = installedChunks[chunkId];\n/******/ \t\t\tif(chunk !== 0) {\n/******/ \t\t\t\tif(chunk) {\n/******/ \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n/******/ \t\t\t\t}\n/******/ \t\t\t\tinstalledChunks[chunkId] = undefined;\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t\thead.appendChild(script);\n/******/\n/******/ \t\treturn promise;\n/******/ \t};\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"./\";\n/******/\n/******/ \t// on error function for async loading\n/******/ \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n/******/ })\n/************************************************************************/\n/******/ ([]);\n\n\n// WEBPACK FOOTER //\n// static/js/manifest.d3be35f59c0dd60aaa47.js"," \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t2: 0\n \t};\n\n \tvar resolvedPromise = new Promise(function(resolve) { resolve(); });\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tif(installedChunks[chunkId] === 0) {\n \t\t\treturn resolvedPromise;\n \t\t}\n\n \t\t// a Promise means \"currently loading\".\n \t\tif(installedChunks[chunkId]) {\n \t\t\treturn installedChunks[chunkId][2];\n \t\t}\n\n \t\t// setup Promise in chunk cache\n \t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\tinstalledChunks[chunkId] = [resolve, reject];\n \t\t});\n \t\tinstalledChunks[chunkId][2] = promise;\n\n \t\t// start chunk loading\n \t\tvar head = document.getElementsByTagName('head')[0];\n \t\tvar script = document.createElement('script');\n \t\tscript.type = 'text/javascript';\n \t\tscript.charset = 'utf-8';\n \t\tscript.async = true;\n \t\tscript.timeout = 120000;\n\n \t\tif (__webpack_require__.nc) {\n \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t}\n \t\tscript.src = __webpack_require__.p + \"static/js/\" + chunkId + \".\" + {\"0\":\"17b2cd8d08105dde1431\",\"1\":\"1b3f590b64bb624453a0\"}[chunkId] + \".js\";\n \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n \t\tscript.onerror = script.onload = onScriptComplete;\n \t\tfunction onScriptComplete() {\n \t\t\t// avoid mem leaks in IE.\n \t\t\tscript.onerror = script.onload = null;\n \t\t\tclearTimeout(timeout);\n \t\t\tvar chunk = installedChunks[chunkId];\n \t\t\tif(chunk !== 0) {\n \t\t\t\tif(chunk) {\n \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n \t\t\t\t}\n \t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t}\n \t\t};\n \t\thead.appendChild(script);\n\n \t\treturn promise;\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"./\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 18fbab2010c107150b8b"],"sourceRoot":""}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>wechat</title>
<link rel="stylesheet" href="static/css/reset.css">
</head>
<body>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"name": "wechat",
"version": "1.0.0",
"description": "A Vue.js project",
"author": "hcn",
"private": true,
"scripts": {
"dev": "node build/dev-server.js",
"start": "node build/dev-server.js",
"build": "node build/build.js"
},
"dependencies": {
"element-ui": "^2.8.2",
"stylus": "^0.54.5",
"stylus-loader": "^3.0.1",
"vue": "^2.2.6",
"vue-router": "^2.3.1",
"vuex": "^2.3.1"
},
"devDependencies": {
"autoprefixer": "^6.7.2",
"babel-core": "^6.22.1",
"babel-loader": "^6.2.10",
"babel-plugin-transform-runtime": "^6.22.0",
"babel-preset-env": "^1.3.2",
"babel-preset-stage-2": "^6.22.0",
"babel-register": "^6.22.0",
"chalk": "^1.1.3",
"connect-history-api-fallback": "^1.3.0",
"copy-webpack-plugin": "^4.0.1",
"css-loader": "^0.28.0",
"eventsource-polyfill": "^0.9.6",
"express": "^4.14.1",
"extract-text-webpack-plugin": "^2.0.0",
"file-loader": "^0.11.1",
"friendly-errors-webpack-plugin": "^1.1.3",
"html-webpack-plugin": "^2.28.0",
"http-proxy-middleware": "^0.17.3",
"webpack-bundle-analyzer": "^2.2.1",
"semver": "^5.3.0",
"shelljs": "^0.7.6",
"opn": "^4.0.2",
"optimize-css-assets-webpack-plugin": "^1.3.0",
"ora": "^1.2.0",
"rimraf": "^2.6.0",
"url-loader": "^0.5.8",
"vue-loader": "^11.3.4",
"vue-style-loader": "^2.0.5",
"vue-template-compiler": "^2.2.6",
"webpack": "^2.3.3",
"webpack-dev-middleware": "^1.10.0",
"webpack-hot-middleware": "^2.18.0",
"webpack-merge": "^4.1.0"
},
"engines": {
"node": ">= 4.0.0",
"npm": ">= 3.0.0"
},
"browserslist": [
"> 1%",
"last 2 versions",
"not ie <= 8"
]
}
<template>
<div id="app">
<div class="sidebar">
<mycard></mycard>
</div>
<div class="main">
<router-view></router-view>
</div>
<div class="tarbar">
<toolbar></toolbar>
</div>
</div>
</template>
<script>
import mycard from './components/mycard/mycard'
import toolbar from '@/page/toolbar'
import { mapActions } from 'vuex'
export default {
components: {
mycard,
toolbar
},
created () {
this.$store.dispatch('initData')
}
}
</script>
<style lang="stylus" scoped>
#app
display: flex
border-radius 50px
margin: 20px auto
width: 1260px
height: 600px
background-color: #fff
.sidebar
width: 60px
height: 800px
background: #2b2c2f
.main
flex: 1
height: 800px
background: #f2f2f2
.tarbar
flex: 2
width:800px;
height: 800px;
</style>
@font-face {font-family: "iconfont";
src: url('iconfont.eot?t=1495519142886'); /* IE9*/
src: url('iconfont.eot?t=1495519142886#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('iconfont.woff?t=1495519142886') format('woff'), /* chrome, firefox */
url('iconfont.ttf?t=1495519142886') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
url('iconfont.svg?t=1495519142886#iconfont') format('svg'); /* iOS 4.1- */
}
.iconfont {
font-family:"iconfont" !important;
font-size:16px;
font-style:normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-search:before { content: "\e607"; }
.icon-more:before { content: "\e606"; }
.icon-warn:before { content: "\e657"; }
.icon-collection:before { content: "\e608"; }
.icon-friend:before { content: "\e603"; }
.icon-msg:before { content: "\e60a"; }
.icon-look:before { content: "\e639"; }
(function(window){var svgSprite="<svg>"+""+'<symbol id="icon-search" viewBox="0 0 1024 1024">'+""+'<path d="M568.94085 46.341445c-195.393155 0-353.790722 158.397566-353.790722 353.790722 0 99.347682 40.96704 189.114149 106.907868 253.375731l-0.211824-0.171915L110.778013 901.270794c-18.418488 23.023366-6.836709 39.180348 7.372921 50.891064 23.213701 19.130709 41.74373 4.364401 41.74373 4.364401l213.273385-261.328867-0.057305-0.046049c56.278771 37.757952 122.966613 58.770522 195.830107 58.770522 195.393155 0 353.790722-158.397566 353.790722-353.790722S764.334006 46.341445 568.94085 46.341445zM568.94085 704.627159c-168.168094 0-304.496016-136.326898-304.496016-304.496016S400.772756 95.636151 568.94085 95.636151 873.436866 231.964072 873.436866 400.132166 737.108944 704.627159 568.94085 704.627159z" ></path>'+""+"</symbol>"+""+'<symbol id="icon-iconfontgengduo" viewBox="0 0 1024 1024">'+""+'<path d="M65.075623 799.979854l893.847731 0 0-65.155952L65.075623 734.823901 65.075623 799.979854zM65.075623 544.595372l893.847731 0 0-65.157999L65.075623 479.437373 65.075623 544.595372zM65.075623 224.02117l0 65.187675 893.847731 0 0-65.187675L65.075623 224.02117z" ></path>'+""+"</symbol>"+""+'<symbol id="icon-iconfont" viewBox="0 0 1024 1024">'+""+'<path d="M88.788328 66.71444l24.221574-24.221574 822.190304 822.190304-24.221574 24.221574-822.190304-822.190304ZM821.127454 616.648196l0-259.780182c0-126.327235-103.041914-242.851476-231.243074-277.611592l0-2.175398c0-42.488773-34.592251-77.081024-77.081024-77.081024s-77.081024 34.592251-77.081024 77.081024l0 2.175398c-51.320547 13.917407-98.425617 41.082473-136.698915 76.579142l543.883709 543.883709C830.428564 679.410993 821.127454 652.511428 821.127454 616.648196zM204.479257 356.868014l0 259.780182c0 98.024795-68.751135 130.876728-84.876486 137.233343-11.709464 5.988339-19.772139 18.098625-19.772139 32.183898 0 19.97255 16.159609 36.132159 36.132159 36.132159l258.140925 0c5.520715 61.022478 56.272574 109.198119 118.699639 109.198119s113.178925-48.17564 118.699639-109.198119l140.111035 0L220.503546 271.088824C210.267186 298.555363 204.479257 327.426489 204.479257 356.868014zM562.484646 822.197596c-5.018831 23.08491-25.09073 40.681651-49.68129 40.681651s-44.629914-17.564196-49.647031-40.681651L562.484646 822.197596z" ></path>'+""+"</symbol>"+""+'<symbol id="icon-favorite" viewBox="0 0 1024 1024">'+""+'<path d="M119.693568 748.775658 502.351758 959.24416 502.351758 545.089629 119.693568 327.8407Z" ></path>'+""+'<path d="M520.510326 64.75584 149.097248 269.033339 517.415848 491.8818 891.925451 269.033339Z" ></path>'+""+'<path d="M542.176788 545.089629 542.176788 959.24416 904.305409 752.166895 904.305409 327.8407Z" ></path>'+""+"</symbol>"+""+'<symbol id="icon-icong-2" viewBox="0 0 1024 1024">'+""+'<path d="M881.137 824.103c-32.028-6.411-294.542-186.476-294.542-186.476s-45.602-64.86 2.397-124.847c47.781-59.699 155.655-397.1-106.736-408.016v-0.166c-0.758 0.020-1.501 0.057-2.254 0.084-0.753-0.027-1.495-0.063-2.254-0.084v0.166c-262.338 10.918-154.466 348.316-106.738 408.015 48.001 59.987 2.397 124.847 2.397 124.847s-262.489 180.066-294.489 186.477c-32.027 6.358 0 83.205 0 83.205h802.218c0-0.001 31.999-76.847 0-83.205z" ></path>'+""+'<path d="M708.15603 349.45395l253.240655 0 0 49.287543-253.240655 0 0-49.287543Z" ></path>'+""+'<path d="M758.543627 483.666698l201.342658 0 0 50.661843-201.342658 0 0-50.661843Z" ></path>'+""+'<path d="M808.906665 618.198717l152.055115 0 0 50.638307-152.055115 0 0-50.638307Z" ></path>'+""+"</symbol>"+""+'<symbol id="icon-xiaoxi" viewBox="0 0 1025 1024">'+""+'<path d="M512.448 864.704c-32.768 0-64.704-2.752-95.808-7.424l-224.512 124.992 0-208.128C75.136 698.688 0 583.04 0 453.248c0-227.264 229.376-411.456 512.448-411.456s512.448 184.192 512.448 411.456C1024.896 680.512 795.52 864.704 512.448 864.704L512.448 864.704z" ></path>'+""+"</symbol>"+""+'<symbol id="icon-biaoqing" viewBox="0 0 1024 1024">'+""+'<path d="M512 0C229.229985 0 0 229.228089 0 512c0 282.768119 229.229985 512 512 512 282.771911 0 512-229.231881 512-512C1024 229.228089 794.770015 0 512 0zM512 986.074074c-261.82163 0-474.074074-212.250548-474.074074-474.074074S250.176474 37.925926 512 37.925926c261.823526 0 474.074074 212.250548 474.074074 474.074074S773.82163 986.074074 512 986.074074z" ></path>'+""+'<path d="M312.888889 407.703704m-66.37037 0a35 35 0 1 0 132.740741 0 35 35 0 1 0-132.740741 0Z" ></path>'+""+'<path d="M711.111111 407.703704m-66.37037 0a35 35 0 1 0 132.740741 0 35 35 0 1 0-132.740741 0Z" ></path>'+""+'<path d="M272.090074 625.777778C297.773511 734.498133 395.43277 815.407407 512 815.407407s214.226489-80.909274 239.909926-189.62963L272.090074 625.777778z" ></path>'+""+"</symbol>"+""+"</svg>";var script=function(){var scripts=document.getElementsByTagName("script");return scripts[scripts.length-1]}();var shouldInjectCss=script.getAttribute("data-injectcss");var ready=function(fn){if(document.addEventListener){if(~["complete","loaded","interactive"].indexOf(document.readyState)){setTimeout(fn,0)}else{var loadFn=function(){document.removeEventListener("DOMContentLoaded",loadFn,false);fn()};document.addEventListener("DOMContentLoaded",loadFn,false)}}else if(document.attachEvent){IEContentLoaded(window,fn)}function IEContentLoaded(w,fn){var d=w.document,done=false,init=function(){if(!done){done=true;fn()}};var polling=function(){try{d.documentElement.doScroll("left")}catch(e){setTimeout(polling,50);return}init()};polling();d.onreadystatechange=function(){if(d.readyState=="complete"){d.onreadystatechange=null;init()}}}};var before=function(el,target){target.parentNode.insertBefore(el,target)};var prepend=function(el,target){if(target.firstChild){before(el,target.firstChild)}else{target.appendChild(el)}};function appendSvg(){var div,svg;div=document.createElement("div");div.innerHTML=svgSprite;svgSprite=null;svg=div.getElementsByTagName("svg")[0];if(svg){svg.setAttribute("aria-hidden","true");svg.style.position="absolute";svg.style.width=0;svg.style.height=0;svg.style.overflow="hidden";prepend(svg,document.body)}}if(shouldInjectCss&&!window.__iconfont__svg__cssinject__){window.__iconfont__svg__cssinject__=true;try{document.write("<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>")}catch(e){console&&console.log(e)}}ready(appendSvg)})(window)
\ No newline at end of file
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>
Created by FontForge 20120731 at Tue May 23 13:59:02 2017
By admin
</metadata>
<defs>
<font id="iconfont" horiz-adv-x="1024" >
<font-face
font-family="iconfont"
font-weight="500"
font-stretch="normal"
units-per-em="1024"
panose-1="2 0 6 3 0 0 0 0 0 0"
ascent="896"
descent="-128"
x-height="792"
bbox="0 -150.25 1025 896"
underline-thickness="0"
underline-position="0"
unicode-range="U+0078-E657"
/>
<missing-glyph
/>
<glyph glyph-name=".notdef"
/>
<glyph glyph-name=".notdef"
/>
<glyph glyph-name=".null" horiz-adv-x="0"
/>
<glyph glyph-name="nonmarkingreturn" horiz-adv-x="341"
/>
<glyph glyph-name="x" unicode="x" horiz-adv-x="1001"
d="M281 543q-27 -1 -53 -1h-83q-18 0 -36.5 -6t-32.5 -18.5t-23 -32t-9 -45.5v-76h912v41q0 16 -0.5 30t-0.5 18q0 13 -5 29t-17 29.5t-31.5 22.5t-49.5 9h-133v-97h-438v97zM955 310v-52q0 -23 0.5 -52t0.5 -58t-10.5 -47.5t-26 -30t-33 -16t-31.5 -4.5q-14 -1 -29.5 -0.5
t-29.5 0.5h-32l-45 128h-439l-44 -128h-29h-34q-20 0 -45 1q-25 0 -41 9.5t-25.5 23t-13.5 29.5t-4 30v167h911zM163 247q-12 0 -21 -8.5t-9 -21.5t9 -21.5t21 -8.5q13 0 22 8.5t9 21.5t-9 21.5t-22 8.5zM316 123q-8 -26 -14 -48q-5 -19 -10.5 -37t-7.5 -25t-3 -15t1 -14.5
t9.5 -10.5t21.5 -4h37h67h81h80h64h36q23 0 34 12t2 38q-5 13 -9.5 30.5t-9.5 34.5q-5 19 -11 39h-368zM336 498v228q0 11 2.5 23t10 21.5t20.5 15.5t34 6h188q31 0 51.5 -14.5t20.5 -52.5v-227h-327z" />
<glyph glyph-name="search" unicode="&#xe607;"
d="M569 766q-96 0 -177.5 -47.5t-129 -129t-47.5 -177.5q0 -73 28.5 -138.5t78.5 -115.5v1l-211 -248q-22 -27 7 -51q10 -9 20.5 -10t16.5 2l5 3l213 262v0q88 -59 196 -59q96 0 177.5 47.5t129 129t47.5 177.5t-47.5 177.5t-129 129t-177.5 47.5zM569 107
q-126 0 -215.5 89.5t-89.5 215.5t89.5 215t215.5 89t215 -89t89 -215t-89 -215.5t-215 -89.5z" />
<glyph glyph-name="iconfontgengduo" unicode="&#xe606;"
d="M65 12h894v65h-894v-65zM65 267h894v66h-894v-66zM65 588v-65h894v65h-894z" />
<glyph glyph-name="iconfont" unicode="&#xe657;"
d="M89 829l24 25l822 -823l-24 -24zM821 279v260q0 94 -67 172.5t-164 105.5v2q0 32 -22.5 54.5t-54.5 22.5t-54.5 -22.5t-22.5 -54.5v-2q-77 -21 -137 -77l544 -544q-22 36 -22 83zM204 539v-260q0 -34 -10 -61t-26.5 -42.5t-27.5 -22.5t-20 -11q-20 -10 -20 -32
q0 -15 10.5 -25.5t25.5 -10.5h258q4 -46 38 -77.5t80.5 -31.5t80.5 31.5t39 77.5h140l-551 551q-17 -43 -17 -86zM562 74q-3 -18 -17 -29.5t-32 -11.5t-32 11.5t-18 29.5h99z" />
<glyph glyph-name="favorite" unicode="&#xe608;"
d="M120 147l382 -210v414l-382 217v-421zM521 831l-372 -204l368 -223l375 223zM542 351v-414l362 207v424z" />
<glyph glyph-name="icong-2" unicode="&#xe603;"
d="M881 72q-14 3 -88 49.5t-140 91.5l-66 45l-5 7.5t-8 19t-6.5 29t3.5 33.5t18 36q11 14 23 41t22 64t15.5 77.5t-0.5 79.5t-22.5 71t-53.5 52.5t-91 22.5v0h-1h-1h-1h-1v0q-54 -2 -91 -22.5t-53.5 -52.5t-22.5 -71t-0.5 -79.5t15.5 -77.5t22 -64t23 -41q13 -17 18.5 -36
t3 -34t-6.5 -28t-8 -20l-5 -7q-262 -180 -294 -186q-14 -3 -14 -24t6.5 -40t7.5 -19h802v0q2 5 5 13t7 25.5t1.5 30t-13.5 14.5zM708 547h253v-50h-253v50zM759 412h201v-50h-201v50zM809 278h152v-51h-152v51z" />
<glyph glyph-name="xiaoxi" unicode="&#xe60a;" horiz-adv-x="1025"
d="M512 31q-46 0 -95 8l-225 -125v208q-89 58 -140.5 141.5t-51.5 179.5q0 112 68.5 206.5t186.5 149.5t257.5 55t257.5 -55t186.5 -149.5t68.5 -206.5t-68.5 -207t-186.5 -150t-258 -55v0z" />
<glyph glyph-name="biaoqing" unicode="&#xe639;"
d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM512 -90q-96 0 -184 37.5t-151.5 101t-101 151.5t-37.5 184t37.5 184t101 151.5t151.5 101t184 37.5
t184 -37.5t151.5 -101t101 -151.5t37.5 -184t-37.5 -184t-101 -151.5t-151.5 -101t-184 -37.5zM313 488zM247 488.5q0 27.5 19 47t46.5 19.5t47 -19.5t19.5 -47t-19.5 -47t-47 -19.5t-46.5 19.5t-19 47zM711 488zM645 488.5q0 27.5 19.5 47t47 19.5t46.5 -19.5t19 -47
t-19 -47t-46.5 -19.5t-47 19.5t-19.5 47zM272 270q20 -82 86.5 -135.5t153.5 -53.5t153.5 53.5t86.5 135.5h-480z" />
</font>
</defs></svg>
<!-- 聊天列表 -->
<template>
<div class="msglist">
<ul>
<li v-for="item in searchedChatlist" class="sessionlist" :class="{ active: item.id === selectId }" @click="selectSession(item.id)">
<div class="list-left">
<img class="avatar" width="42" height="42" :alt="item.user.name" :src="item.user.img">
</div>
<div class="list-right">
<p class="name">{{item.user.name}}</p>
<span class="time">{{item.messages[item.messages.length-1].date | time}}</span>
<p class="lastmsg">{{item.messages[item.messages.length-1].content}}</p>
</div>
</li>
</ul>
</div>
</template>
<script>
import { mapState, mapActions ,mapGetters } from 'vuex'
export default {
computed: {
...mapState([
'selectId',
'searchText'
]),
...mapGetters([
'searchedChatlist'
])
},
methods: {
...mapActions([
'selectSession',
])
},
filters: {
// 将日期过滤为 hour:minutes
time (date) {
if (typeof date === 'string') {
date = new Date(date);
}
if(date.getMinutes()<10){
return date.getHours() + ':0' +date.getMinutes();
}else{
return date.getHours() + ':' + date.getMinutes();
}
}
},
}
</script>
<style lang="stylus" scoped>
.msglist
height: 740px
overflow-y: auto
.sessionlist
display: flex
padding: 12px
transition: background-color .1s
font-size: 0
&:hover
background-color: rgb(220,220,220)
&.active
background-color: #c4c4c4
.avatar
border-radius: 2px
margin-right: 12px
.list-right
position: relative
flex: 1
margin-top: 4px
.name
display: inline-block
vertical-align: top
font-size: 14px
.time
float: right
color: #999
font-size: 10px
vertical-align: top
.lastmsg
position: absolute
font-size: 12px
width: 130px
height: 15px
line-height: 15px
color: #999
bottom: 4px
overflow: hidden
white-space:nowrap
text-overflow:ellipsis
</style>
<!-- 好友列表 -->
<template>
<div class="friendlist">
<ul>
<li v-for="item in searchedFriendlist" class="frienditem" :class="{ noborder: !item.initial}">
<div class="list_title" v-if="item.initial">{{item.initial}}</div>
<div class="friend-info" :class="{ active: item.id === selectFriendId }" @click="selectFriend(item.id)">
<img class="avatar" width="36" height="36" :src="item.img">
<div class="remark">{{item.remark}}</div>
</div>
</li>
</ul>
</div>
</template>
<script>
import { mapState, mapActions ,mapGetters } from 'vuex'
export default {
computed: {
...mapState([
'selectFriendId',
'searchText'
]),
...mapGetters([
'searchedFriendlist'
])
},
methods: {
...mapActions([
'selectFriend',
])
}
}
</script>
<style lang="stylus" scoped>
.friendlist
height: 540px
overflow-y: auto
.frienditem
border-top: 1px solid #dadada
&:first-child,&.noborder
border-top: none
.list_title
box-sizing: border-box
width: 100%
font-size: 12px
padding: 15px 0 3px 12px
color: #999
.friend-info
display: flex
padding: 12px
transition: background-color .1s
font-size: 0
&:hover
background-color: rgb(220,220,220)
&.active
background-color: #c4c4c4
.avatar
border-radius: 2px
margin-right: 12px
.remark
font-size: 14px
line-height: 36px
</style>
<!-- 好友信息 -->
<template>
<div class="Info-wrapper">
<div class="newfriend" v-show="selectedFriend.id === 0">
<div class="nickname">{{selectedFriend.nickname}}</div>
</div>
<div class="friendInfo" v-show="selectedFriend.id > 0">
<div class="esInfo" >
<div class="left">
<div class="people">
<div class="nickname">{{selectedFriend.nickname}}</div>
<div :class="[selectedFriend.sex===1?'gender-male':'gender-female']"></div>
</div>
<div class="signature">{{selectedFriend.signature}}</div>
</div>
<div class="right">
<img class="avatar" width="60" height="60" :src="selectedFriend.img">
</div>
</div>
<div class="detInfo">
<div class="remark"><span>&nbsp&nbsp&nbsp注</span>{{selectedFriend.remark}}</div>
<div class="area"><span>&nbsp&nbsp&nbsp区</span>{{selectedFriend.area}}</div>
<div class="wxid"><span>微信号</span>{{selectedFriend.wxid}}</div>
</div>
<div class="send" @click="send">
<span>发消息</span>
</div>
</div>
</div>
</template>
<script>
import router from '../../router'
import { mapGetters } from 'vuex'
export default {
computed: {
...mapGetters([
'selectedFriend'
])
},
methods: {
send () {
this.$store.dispatch('send')
this.$store.dispatch('search', '')
}
}
}
</script>
<style lang="stylus" scoped>
.newfriend
height: 60px
padding: 28px 0 0 30px
box-sizing: border-box
border-bottom: 1px solid #e7e7e7
.nickname
font-size: 18px
.friendInfo
padding: 0 90px
.esInfo
display: flex
align-items: center
padding: 100px 0 45px 0
.left
flex: 1
.people
.nickname
display: inline-block
font-size: 20px
margin-bottom: 16px
.gender-male,.gender-female
display: inline-block
width: 18px
height: 18px
vertical-align: top
margin-top: 2px
.gender-male
background-image: url(man.png)
background-size: cover
.gender-female
background-image: url(woman.png)
background-size: cover
.signature
font-size: 14px
color: rgba(153,153,153,.8)
.right
.avatar
border-radius: 3px
.detInfo
padding: 40px 0
border-top: 1px solid #e7e7e7
border-bottom: 1px solid #e7e7e7
.remark,.area,.wxid
font-size: 14px
margin-top: 20px
span
font-size: 14px
color: rgba(153,153,153,.8)
margin-right: 40px
.remark
margin-top: 0
.send
position: relative
text-align: center
width: 140px
height: 36px
left: 115px
top: 50px
line-height: 36px
font-size: 14px
color: #fff
background-color: #1aad19
cursor: pointer
border-radius: 2px
&:hover
background: rgb(18,150,17)
</style>
<!-- 消息框 -->
<template>
<div class="message">
<header class="header">
<div class="friendname">{{selectedChat.user.name}}</div>
</header>
<div class="message-wrapper" ref="list">
<ul v-if="selectedChat">
<li v-for="item in selectedChat.messages" class="message-item">
<div class="time"><span>{{item.date | time}}</span></div>
<div class="main" :class="{ self: item.self }">
<img class="avatar" width="36" height="36" :src="item.self ? user.img : selectedChat.user.img" />
<div class="content">
<div class="text" v-html="replaceFace(item.content)"></div>
</div>
</div>
</li>
</ul>
</div>
</div>
</template>
<script>
import { mapGetters, mapState } from 'vuex'
export default {
computed: {
...mapGetters([
'selectedChat',
'messages'
]),
...mapState([
'user',
'emojis'
])
},
mounted() {
// 在页面加载时让信息滚动到最下面
setTimeout(() => this.$refs.list.scrollTop = this.$refs.list.scrollHeight, 0)
},
watch: {
// 发送信息后,让信息滚动到最下面
messages() {
setTimeout(() => this.$refs.list.scrollTop = this.$refs.list.scrollHeight, 0)
}
},
methods: {
// 在发送信息之后,将输入的内容中属于表情的部分替换成emoji图片标签
// 再经过v-html 渲染成真正的图片
replaceFace (con) {
if(con.includes('/:')) {
var emojis=this.emojis;
for(var i=0;i<emojis.length;i++){
con = con.replace(emojis[i].reg, '<img src="static/emoji/' + emojis[i].file +'" alt="" style="vertical-align: middle; width: 24px; height: 24px" />');
}
return con;
}
return con;
}
},
filters: {
// 将日期过滤为 hour:minutes
time (date) {
if (typeof date === 'string') {
date = new Date(date);
}
if(date.getMinutes()<10){
return date.getHours() + ':0' +date.getMinutes();
}else{
return date.getHours() + ':' + date.getMinutes();
}
}
}
}
</script>
<style lang="stylus" scoped>
.message
width: 100%
height: 650px
.header
height: 60px
padding: 28px 0 0 30px
box-sizing: border-box
border-bottom: 1px solid #e7e7e7
.friendname
font-size: 18px
.message-wrapper
min-height: 590px
max-height: 590px
padding: 10px 15px
box-sizing: border-box
overflow-y: auto
border-bottom: 1px solid #e7e7e7
.message
margin-bottom: 15px
.time
width: 100%
font-size: 12px
margin: 7px auto
text-align: center
span
display: inline-block
padding: 4px 6px
color: #fff
border-radius: 3px
background-color: #dcdcdc
.main
.avatar
float: left
margin-left: 15px
border-radius: 3px
.content
display: inline-block
margin-left: 10px
position: relative
padding: 6px 10px
max-width: 330px
min-height: 36px
line-height: 24px
box-sizing: border-box
font-size: 14px
text-align: left
word-break: break-all
background-color: #fafafa
border-radius: 4px
&:before
content: " "
position: absolute
top: 12px
right: 100%
border: 6px solid transparent
border-right-color: #fafafa
.self
text-align: right
.avatar
float: right
margin:0 15px
.content
background-color: #b2e281
&:before
right: -12px
vertical-align: middle
border-right-color: transparent
border-left-color: #b2e281
</style>
<!-- 最左边的选择框 -->
<template>
<div class="mycard">
<header>
<img :src="user.img" class="avatar">
</header>
<div class="navbar" @click="clearSearch">
<router-link to="/chat" class="icon iconfont icon-msg" ></router-link>
<router-link to="/friend" class="icon iconfont icon-friend"></router-link>
<router-link to="/my" class="icon iconfont icon-collection"></router-link>
</div>
<footer>
<i class="icon iconfont icon-more"></i>
</footer>
</div>
</template>
<script>
import { mapState } from 'vuex'
export default {
computed: {
...mapState([
'user',
])
},
methods: {
clearSearch() {
this.$store.dispatch('search', '')
}
}
}
</script>
<style lang="stylus" scoped>
@import '../../assets/fonts/iconfont.css'
.mycard
position: relative
width: 100%
height: 100%
.avatar
width: 36px
height: 36px
margin: 20px 12px 0 12px
border-radius: 2px
.navbar
width: 100%
text-align: center
.icon
display: inline-block
font-size: 26px
margin-top: 28px
padding: 0 16px
box-sizing: border-box
color: rgb(173,174,175)
opacity: 0.8
cursor: pointer
&.active
color: rgb(0,220,65)
&:hover
opacity: 1;
.icon-msg,.icon-more
font-size: 22px
.icon-msg
padding: 0 19px
footer
position: absolute
bottom: 20px
width: 100%
text-align: center
</style>
<!-- 搜索框 -->
<template>
<div class="wrapper">
<div class="search-wrapper">
<input type="text" class="searchInput" v-model="search" @keyup="change" placeholder="搜索">
<i class="icon iconfont icon-search" v-show="noText"></i>
<div class="searchInput-delete" v-show="haveText" @click="del"></div>
</div>
</div>
</template>
<script>
export default {
methods: {
change () {
this.$store.dispatch('search', this.search)
},
del () {
this.search= ''
this.change()
}
},
data () {
return {
search: '',
active: false
}
},
computed: {
noText () {
if(this.search === '') return true
return false
},
haveText () {
if(this.search === '') return false
return true
}
}
}
</script>
<style lang="stylus" scoped>
.wrapper
padding: 22px 12px 12px 12px
.search-wrapper
position: relative
display: flex
box-sizing: border-box
height: 26px
width: 100%
background-color: #e5e3e2
border: 1px solid #d9d7d6
border-radius: 2px
.searchInput
flex: 1
font-size: 12px
padding: 6px
background-color: #e5e3e2
outline: none
&:focus
background-color: #f2efee
.icon-search
display: inline-block
width: 24px
height: 24px
font-size: 14px
line-height: 24px
text-align: center
.searchInput-delete
display: block
position: absolute
outline: none
top: 0;
right: 0;
width: 24px
height: 100%
background-image: url(delete.png)
background-size: 26px
background-position: center
background-repeat: no-repeat
cursor: pointer
</style>
<!-- 文本输入框 -->
<template>
<div class="text">
<div class="emoji">
<i class="icon iconfont icon-look" @click="showEmoji=!showEmoji"></i>
<transition name="showbox">
<div class="emojiBox" v-show="showEmoji">
<li v-for="(item, index) in emojis">
<img :src="'static/emoji/'+item.file" :data="item.code" @click="content +=item.code">
</li>
</div>
</transition>
</div>
<textarea ref="text" v-model="content" @keyup="onKeyup" @click="showEmoji=false"></textarea>
<div class="send" @click="send">
<span>发送(ent)</span>
</div>
<transition name="appear">
<div class="warn" v-show="warn">
<div class="description">不能发送空白信息</div>
</div>
</transition>
</div>
</template>
<script>
import { mapGetters, mapState } from 'vuex'
export default {
data () {
return {
content: '',
reply: '未找到',
frequency: 0,
warn: false,
showEmoji: false,
};
},
computed: {
...mapState([
'selectId',
'emojis'
]),
...mapGetters([
'selectedChat',
])
},
methods: {
// 按回车发送信息
onKeyup (e) {
if ( e.keyCode === 13 ) {
this.send()
}
},
// 点击发送按钮发送信息
send () {
if(this.content.length <= 1){
this.warn = true
this.content = ''
setTimeout(() => {
this.warn = false;
}, 1000)
}else{
if(this.selectedChat.user.name === '机器人'){
this.$http.get(`https://zhaoplus.com/api/AI?search=${this.content}`).then(res => {
this.reply = res.data.result.text
if(this.content.includes('/:')){
this.reply = '嘻嘻'
}
var msg = {
content: this.content,
reply: this.reply
}
this.$store.dispatch('sendMessage', msg)
this.content = ''
})
}else{
var msg = {
content: this.content,
}
this.$store.dispatch('sendMessage', msg)
this.content = ''
}
}
}
},
// 在进入的时候 聚焦输入框
mounted() {
this.$refs.text.focus()
},
watch: {
// 在选择其它对话的时候 聚焦输入框
selectId() {
setTimeout(() => {
this.$refs.text.focus()
}, 0)
},
// 当输入框中的值为空时 弹出提示 并在一秒后消失
content() {
if(this.content === ''){
if( this.frequency === 0){
this.warn = true;
this.frequency++
setTimeout(() => {
this.warn = false;
}, 1000)
}
}
}
}
}
</script>
<style lang="stylus" scoped>
.text
position: relative
height: 150px
background: #fff
.emoji
position: relative
width: 100%
height: 40px
line-height: 40px
font-size: 12px
padding: 0 30px
box-sizing: border-box
color: #7c7c7c
.icon-look
cursor: pointer
&:hover
color: #1aad19
.emojiBox
position: absolute
display: flex
flex-wrap: wrap
top: -210px
left: -100px
width: 300px
height: 200px
padding: 5px
background-color: #fff
border: 1px solid #d1d1d1
border-radius: 2px
box-shadow:0 1px 2px 1px #d1d1d1
&.showbox-enter-active, &.showbox-leave-active
transition: all .5s
&.showbox-enter,&.showbox-leave-active
opacity: 0
textarea
box-sizing: border-box
padding: 0 30px
height: 110px
width: 100%
border: none
outline: none
font-family: "Micrsofot Yahei"
resize: none
.send
position: absolute
bottom: 10px
right: 30px
width: 75px
height: 28px
line-height: 28px
box-sizing: border-box
text-align: center
border: 1px solid #e5e5e5
border-radius: 3px
background: #f5f5f5
font-size: 14px
color: #7c7c7c
&:hover
background: rgb(18,150,17)
color: #fff
.warn
position: absolute
bottom: 50px
right: 10px
width: 110px
height: 30px
line-height: 30px
font-size: 12px
text-align: center
border: 1px solid #bdbdbd
border-radius: 4px
box-shadow:0 1px 5px 1px #bdbdbd
&.appear-enter-active, &.appear-leave-active
transition: all 1s
&.appear-enter,&.appear-leave-active
opacity: 0
&:before
content: " "
position: absolute
top: 100%
right: 20px
border: 7px solid transparent
border-top-color: #fff
filter:drop-shadow(1px 3px 2px #bdbdbd)
</style>
// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
import store from './store'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
Vue.config.productionTip = false
Vue.use(ElementUI)
/* eslint-disable no-new */
const vm = new Vue({
el: '#app',
router,
store,
template: '<App/>',
components: { App }
})
<template>
<div class="content">
<div class="msglist">
<search></search>
<chatlist></chatlist>
</div>
<div class="chatbox">
<message></message>
<v-text></v-text>
</div>
</div>
</template>
<script>
import search from '../../components/search/search'
import chatlist from '../../components/chatlist/chatlist'
import message from '../../components/message/message'
import vText from '../../components/text/text'
export default {
components: {
search,
chatlist,
message,
vText
}
}
</script>
<style lang="stylus" scoped>
.content
display: flex
width: 800px
.msglist
width: 250px
background: rgb(230,230,230)
.chatbox
flex: 1
</style>
<template>
<div class="content">
<div class="friend-wrapper">
<search></search>
<friendlist></friendlist>
</div>
<div class="friendinfo">
<info></info>
</div>
</div>
</template>
<script>
import search from '../../components/search/search'
import friendlist from '../../components/friendlist/friendlist'
import info from '../../components/info/info'
export default{
components: {
search,
friendlist,
info
}
}
</script>
<style lang="stylus" scoped>
.content
display: flex
width: 800px
.friend-wrapper
width: 250px
background: rgb(230,230,230)
.friendinfo
flex: 1
</style>
\ No newline at end of file
<template>
<div class="tabs-body">
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>卡片名称</span>
<el-button style="float: right; padding: 3px 0" type="text">操作按钮</el-button>
</div>
</el-card>
</div>
</template>
<script>
export default{
data(){
return {
activeName:'second',
}
},
components: {
},
methods: {
handleClick(){
console.log(43434)
}
}
}
</script>
<style lang="stylus" scoped>
.tabs-body
height:800px;
width:100%;
.tool-body
width:100%;
height:729px;
.clearfix:before,
.clearfix:after {
display: table;
content: "";
}
.clearfix:after {
clear: both
}
.box-card {
width: 480px;
}
</style>
\ No newline at end of file
<template>
<div class="tabs-body">
<search-from></search-from>
<div style="margin-top: 10px">
<el-row :gutter="20">
<el-col :span="12">
<div class="grid-content bg-purple">
<img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1557837447103&di=5da71b5a1a7f501f25969ff8348f5649&imgtype=0&src=http%3A%2F%2Fc.hiphotos.baidu.com%2Fimage%2Fpic%2Fitem%2F377adab44aed2e7371d6b8698c01a18b87d6fabc.jpg" alt="">
<img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1557837447103&di=5da71b5a1a7f501f25969ff8348f5649&imgtype=0&src=http%3A%2F%2Fc.hiphotos.baidu.com%2Fimage%2Fpic%2Fitem%2F377adab44aed2e7371d6b8698c01a18b87d6fabc.jpg" alt="">
</div>
</el-col>
<el-col :span="12">
<div class="grid-content bg-purple">
<img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1557837447103&di=5da71b5a1a7f501f25969ff8348f5649&imgtype=0&src=http%3A%2F%2Fc.hiphotos.baidu.com%2Fimage%2Fpic%2Fitem%2F377adab44aed2e7371d6b8698c01a18b87d6fabc.jpg" alt="">
<img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1557837447103&di=5da71b5a1a7f501f25969ff8348f5649&imgtype=0&src=http%3A%2F%2Fc.hiphotos.baidu.com%2Fimage%2Fpic%2Fitem%2F377adab44aed2e7371d6b8698c01a18b87d6fabc.jpg" alt="">
</div>
</el-col>
</el-row>
</div>
<div style="margin-top: 10px">
<el-row :gutter="20">
<el-col :span="12">
<div class="grid-content bg-purple">
<img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1557837447103&di=5da71b5a1a7f501f25969ff8348f5649&imgtype=0&src=http%3A%2F%2Fc.hiphotos.baidu.com%2Fimage%2Fpic%2Fitem%2F377adab44aed2e7371d6b8698c01a18b87d6fabc.jpg" alt="">
<img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1557837447103&di=5da71b5a1a7f501f25969ff8348f5649&imgtype=0&src=http%3A%2F%2Fc.hiphotos.baidu.com%2Fimage%2Fpic%2Fitem%2F377adab44aed2e7371d6b8698c01a18b87d6fabc.jpg" alt="">
</div>
</el-col>
<el-col :span="12">
<div class="grid-content bg-purple">
<img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1557837447103&di=5da71b5a1a7f501f25969ff8348f5649&imgtype=0&src=http%3A%2F%2Fc.hiphotos.baidu.com%2Fimage%2Fpic%2Fitem%2F377adab44aed2e7371d6b8698c01a18b87d6fabc.jpg" alt="">
<img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1557837447103&di=5da71b5a1a7f501f25969ff8348f5649&imgtype=0&src=http%3A%2F%2Fc.hiphotos.baidu.com%2Fimage%2Fpic%2Fitem%2F377adab44aed2e7371d6b8698c01a18b87d6fabc.jpg" alt="">
</div>
</el-col>
</el-row>
</div>
</div>
</template>
<script>
import searchFrom from './search-from'
export default{
data(){
return {
activeName:'second',
formInline:{},
baseInfo:[
{
label:'微信昵称',
value:'李元霸'
},
{
label:'微信号',
value:'李元霸'
},
{
label:'微信备注',
value:'李元霸'
},
{
label:'来源',
value:'李元霸'
}
]
}
},
components: {
searchFrom
},
methods: {
handleClick(){
console.log(43434)
}
}
}
</script>
<style lang="stylus" scoped>
.tabs-body
height:800px;
width:100%;
.tool-body
width:100%;
height:729px;
.clearfix:before,
.clearfix:after {
display: table;
content: "";
}
.clearfix:after {
clear: both
}
.clearfix{
span{
font-weight: 800;
}
}
.box-card {
width: 100%;
}
.box-body{
padding-left:10px;
div{
font-size:15px;
margin-bottom:10px;
}
}
.grid-content{
img{
width:100%;
}
}
</style>
\ No newline at end of file
<template>
<div class="from-body">
<el-form :inline="true" :model="formInline" label-width="80" class="demo-form-inline">
<el-row :gutter="20">
<el-col :span="12">
<div class="grid-content bg-purple">
<el-form-item>
<el-input v-model="formInline.user" placeholder="输入检索服务项"></el-input>
</el-form-item>
</div>
</el-col>
<el-col :span="12">
<div class="grid-content bg-purple">
<el-form-item>
<el-input v-model="formInline.user" placeholder="输入检索颜色"></el-input>
</el-form-item>
</div>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<div class="grid-content bg-purple">
<el-form-item>
<el-input v-model="formInline.user" placeholder="输入检索品牌"></el-input>
</el-form-item>
</div>
</el-col>
<el-col :span="12">
<div class="grid-content bg-purple">
<el-form-item>
<el-select v-model="formInline.region" placeholder="分类">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
</el-select>
</el-form-item>
</div>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<div class="grid-content bg-purple">
<el-form-item>
<el-select v-model="formInline.region" placeholder="部位">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
</el-select>
</el-form-item>
</div>
</el-col>
<el-col :span="12">
<div class="grid-content bg-purple">
<el-form-item>
<el-select v-model="formInline.region" placeholder="材质">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
</el-select>
</el-form-item>
</div>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<div class="grid-content bg-purple">
<el-form-item>
<el-select v-model="formInline.region" placeholder="症状">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
</el-select>
</el-form-item>
</div>
</el-col>
<el-col :span="12">
<div class="grid-content bg-purple">
<el-form-item>
<el-input v-model="formInline.user" placeholder="订单号"></el-input>
</el-form-item>
</div>
</el-col>
</el-row>
<el-form-item>
<el-button type="primary" @click="onSubmit">搜索</el-button>
</el-form-item>
</el-form>
</div>
</template>
<script>
export default{
data(){
return {
activeName:'second',
formInline:{},
baseInfo:[
{
label:'微信昵称',
value:'李元霸'
},
{
label:'微信号',
value:'李元霸'
},
{
label:'微信备注',
value:'李元霸'
},
{
label:'来源',
value:'李元霸'
}
]
}
},
components: {
},
methods: {
handleClick(){
console.log(43434)
}
}
}
</script>
<style lang="stylus" scoped>
.from-body
width:100%;
.tool-body
width:100%;
height:729px;
.clearfix:before,
.clearfix:after {
display: table;
content: "";
}
.clearfix:after {
clear: both
}
.clearfix{
span{
font-weight: 800;
}
}
.box-card {
width: 100%;
}
.box-body{
padding-left:10px;
div{
font-size:15px;
margin-bottom:10px;
}
}
</style>
\ No newline at end of file
<template>
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>顾客信息</span>
</div>
<div>
<div class="box-body">
<div>
<span>顾客ID:</span>
<span>107507</span>
<el-button type="success" size="mini">修改</el-button>
</div>
<div>
<span>系统顾客名称:</span>
<span>毛毛 13434343434</span>
<el-button type="success" size="mini">新建预约单</el-button>
</div>
<div>
<span>来源:</span>
<span> 清仓自增长</span>
</div>
<div>
<span>余额:</span>
<span>25.0</span>
<el-button type="info" size="mini">发送充值链接</el-button>
</div>
<div>
<span>6天内预约单数据:</span>
<span>2</span>
</div>
<div>
<span>6天前预约单数据:</span>
<span> 2</span>
</div>
<div>
<span>历史订单:</span>
<span>2</span>
</div>
<div>
<span>返工:</span>
<span>2</span>
</div>
</div>
</div>
</el-card>
</template>
<script>
export default{
data(){
return {
activeName:'second',
baseInfo:[
{
label:'微信昵称',
value:'李元霸'
},
{
label:'微信号',
value:'李元霸'
},
{
label:'微信备注',
value:'李元霸'
},
{
label:'来源',
value:'李元霸'
}
]
}
},
components: {
},
methods: {
handleClick(){
console.log(43434)
}
}
}
</script>
<style lang="stylus" scoped>
.tabs-body
height:800px;
width:100%;
.tool-body
width:100%;
height:729px;
.clearfix:before,
.clearfix:after {
display: table;
content: "";
}
.clearfix:after {
clear: both
}
.clearfix{
span{
font-weight: 800;
}
}
.box-card {
width: 100%;
}
.box-body{
padding-left:10px;
div{
font-size:15px;
margin-bottom:10px;
span{
margin-right:10px;
}
}
}
</style>
\ No newline at end of file
<template>
<div class="tabs-body">
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>基本信息</span>
</div>
<div class="box-body">
<div v-for="item in baseInfo">
<span>{{item.label}}</span>
<span>{{item.value}}</span>
</div>
</div>
</el-card>
<cus-info></cus-info>
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>售前咨询</span>
</div>
<div>
<el-button>新粉咨询</el-button>
<el-button type="success">日常咨询</el-button>
</div>
</el-card>
</div>
</template>
<script>
import cusInfo from './cus-info'
export default{
data(){
return {
activeName:'second',
baseInfo:[
{
label:'微信昵称',
value:'李元霸'
},
{
label:'微信号',
value:'李元霸'
},
{
label:'微信备注',
value:'李元霸'
},
{
label:'来源',
value:'李元霸'
}
]
}
},
components: {
cusInfo
},
methods: {
handleClick(){
console.log(43434)
}
}
}
</script>
<style lang="stylus" scoped>
.tabs-body
height:800px;
width:100%;
.tool-body
width:100%;
height:729px;
.clearfix:before,
.clearfix:after {
display: table;
content: "";
}
.clearfix:after {
clear: both
}
.clearfix{
span{
font-weight: 800;
}
}
.box-card {
width: 100%;
}
.box-body{
padding-left:10px;
div{
font-size:15px;
margin-bottom:10px;
}
}
</style>
\ No newline at end of file
<template>
<div class="tabs-body">
<el-collapse v-model="activeName">
<el-collapse-item v-for="(item, index) in queryLists" :title="item.title" :name="index">
<div class="query-box" v-for="(ite) in item.numItem">
<span>{{ite.label}}:</span>
<span v-if="index!=0" style="color: #007dfd">{{ite.value}}</span>
<span v-if="index==0">{{ite.value}}</span>
</div>
</el-collapse-item>
</el-collapse>
</div>
</template>
<script>
export default{
data(){
return {
activeName:'second',
queryLists:[
{
title:'个人统计',
numItem:[
{
label:'今日接入量',
value:54
},
{
label:'今日预约量',
value:54
},
{
label:'今日开单量',
value:54
},
{
label:'本月开单量',
value:54
},
{
label:'6日内预约单未转正',
value:54
},
{
label:'6日外预约单未转正',
value:54
}
]
},
{
title:'个人待办事项',
numItem:[
{
label:'诊断方案未发送',
value:54
},
{
label:'诊断方案未确认',
value:54
},
{
label:'效果方案未发送',
value:54
},
{
label:'效果方案未确认',
value:54
}
]
},
{
title:'组内待办事项',
numItem:[
{
label:'诊断方案未发送',
value:54
},
{
label:'诊断方案未确认',
value:54
},
{
label:'效果方案未发送',
value:54
},
{
label:'效果方案未确认',
value:54
}
]
}
]
}
},
components: {
},
methods: {
handleClick(){
console.log(43434)
}
}
}
</script>
<style lang="stylus" scoped>
.el-collapse-item__header{
font-size:20px!important;
}
.tabs-body
height:800px;
width:100%;
.tool-body
width:100%;
height:729px;
.query-box{
margin-left:20px;
span{
font-size:15px;
margin-right:10px;
}
}
</style>
\ No newline at end of file
<template>
<div class="tabs-body">
<img width="95px" src="https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=4239577881,3334823103&fm=200&gp=0.jpg" alt=""/>
<img width="95px" src="https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=4239577881,3334823103&fm=200&gp=0.jpg" alt=""/>
<img width="95px" src="https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=4239577881,3334823103&fm=200&gp=0.jpg" alt=""/>
<img width="95px" src="https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=4239577881,3334823103&fm=200&gp=0.jpg" alt=""/>
<img width="95px" src="https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=4239577881,3334823103&fm=200&gp=0.jpg" alt=""/><img width="95px" src="https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=4239577881,3334823103&fm=200&gp=0.jpg" alt=""/>
<img width="95px" src="https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=4239577881,3334823103&fm=200&gp=0.jpg" alt=""/>
<img width="95px" src="https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=4239577881,3334823103&fm=200&gp=0.jpg" alt=""/>
</div>
</template>
<script>
export default{
data(){
return {
activeName:'second',
}
},
components: {
},
methods: {
handleClick(){
console.log(43434)
}
}
}
</script>
<style lang="stylus" scoped>
.tabs-body
height:800px;
width:100%;
.tool-body
width:100%;
height:729px;
</style>
\ No newline at end of file
<template>
<div class="tabs-body">
<el-tabs type="border-card" v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="顾客" name="first">
<div class="tool-body">
<cuss-service></cuss-service>
</div>
</el-tab-pane>
<el-tab-pane label="看板" name="second">
<div class="tool-body">
<cus-users></cus-users>
</div>
</el-tab-pane>
<el-tab-pane label="话术" name="third">
<div class="tool-body">
<takel-script></takel-script>
</div>
</el-tab-pane>
<el-tab-pane label="表情包" name="fourth">
<div class="tool-body">
<doutu-picture></doutu-picture>
</div>
</el-tab-pane>
<el-tab-pane label="对比图" name="fivth">
<div class="tool-body">
<compre-picture></compre-picture>
</div>
</el-tab-pane>
<el-tab-pane label="其他" name="sixth"><div class="tool-body">用户管理</div></el-tab-pane>
</el-tabs>
</div>
</template>
<script>
import cussService from './cus-service'
import cusUsers from './cus-users'
import takelScript from './takel-script'
import doutuPicture from './doutu-picture'
import comparisonMap from './comparison-map'
import comprePicture from './compre-picture'
import labelUserList from './label-userList'
export default{
data(){
return {
activeName:'second',
}
},
components: {
cussService,
cusUsers,
takelScript,
doutuPicture,
comparisonMap,
comprePicture,
labelUserList
},
methods: {
handleClick(){
console.log(43434)
}
}
}
</script>
<style lang="stylus" scoped>
.tabs-body
height:800px;
width:100%;
.tool-body
width:100%;
height:729px;
overflow-y: auto;
</style>
\ No newline at end of file
<template>
<div class="tabs-body">
<el-tabs type="border-card" v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="客服" name="first"><div class="tool-body">用户管理</div></el-tab-pane>
<el-tab-pane label="顾客" name="second"><div class="tool-body">用户管理</div></el-tab-pane>
<el-tab-pane label="话术" name="third"><div class="tool-body">用户管理</div></el-tab-pane>
<el-tab-pane label="图片" name="fourth"><div class="tool-body">用户管理</div></el-tab-pane>
<el-tab-pane label="对比图" name="fivth"><div class="tool-body">用户管理</div></el-tab-pane>
<el-tab-pane label="其他" name="sixth"><div class="tool-body">用户管理</div></el-tab-pane>
</el-tabs>
</div>
</template>
<script>
export default{
data(){
return {
activeName:'second',
}
},
components: {
},
methods: {
handleClick(){
console.log(43434)
}
}
}
</script>
<style lang="stylus" scoped>
.tabs-body
height:800px;
width:100%;
.tool-body
width:100%;
height:729px;
</style>
\ No newline at end of file
<template>
<div class="tabs-body">
<el-input v-model="input" placeholder="请输入内容">
</el-input>
<i class="el-icon-search" style="position:relative;top: -30px;right: -380px;"></i>
<div class="huashu-type">
<el-button v-for="item in buttons">{{item}}</el-button>
</div>
<div>
<el-card class="box-card">
央视网消息:眼下,东北正在大面积地春播。记者从农业农村部了解到,今年我国东北四省区及黄淮海地区,大豆种植面积大幅增加。
</el-card>
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>卡片名称</span>
</div>
<div>
央视网消息:眼下,东北正在大面积地春播。记者从农业农村部了解到,今年我国东北四省区及黄淮海地区,大豆种植面积大幅增加。
</div>
</el-card>
</div>
</div>
</template>
<script>
export default{
data(){
return {
activeName:'second',
input:'gregreg',
buttons:[
'全部',
'回访调查'
]
}
},
components: {
},
methods: {
handleClick(){
console.log(43434)
}
}
}
</script>
<style lang="stylus" scoped>
.clearfix{
span{
font-weight: 800;
}
}
.box-card{
margin-top:20px;
}
.tabs-body
height:800px;
width:100%;
.tool-body
width:100%;
height:729px;
</style>
\ No newline at end of file
import Vue from 'vue'
import Router from 'vue-router'
Vue.use(Router)
const router = new Router({
// 共三个页面: 聊天页面,好友页面,个人简历分别对应一下路由
routes: [
{
path: '/chat',
component: require('@/page/chat/chat.vue')
},
{
path: '/friend',
component: require('@/page/friend/friend.vue')
},
{
path: '/my',
component: require('@/page/friend/friend.vue')
}
],
linkActiveClass: 'active'
})
router.push({ path: '/chat' });
export default router
\ No newline at end of file
import Vue from 'vue'
import Vuex from 'vuex'
import router from './router'
Vue.use(Vuex)
//获取当前时间
const now = new Date();
const state = {
// 输入的搜索值
searchText: '',
// 当前登录用户
user: {
name: 'ratel',
img: 'static/images/UserAvatar.jpg'
},
// 对话好友列表
chatlist: [
{
id: 1,
user: {
name: '妈咪',
img: 'static/images/mother.jpg'
},
messages: [
{
content: '么么哒,妈咪爱你', //聊天内容
date: now //时间
},
{
content: '按回车可以发送信息,还可以给我发送表情哟',
date: now
}
],
index: 1 // 当前在聊天列表中的位置,从1开始
},
{
id: 2,
user: {
name: 'father',
img: 'static/images/father.jpg'
},
messages: [
{
content: 'Are you kidding me?',
date: now
}
],
index: 2
},
{
id: 3,
user: {
name: '机器人',
img: 'static/images/vue.jpg'
},
messages: [
{
content: '我会跟你聊聊天的哟',
date: now
}
],
index: 3
}
],
// 好友列表
friendlist: [
{
id: 0,
wxid: "", //微信号
initial: '新的朋友', //姓名首字母
img: 'static/images/newfriend.jpg', //头像
signature: "", //个性签名
nickname: "新的朋友", //昵称
sex: 0, //性别 1为男,0为女
remark: "新的朋友", //备注
area: "", //地区
},
{
id: 1,
wxid: "AmorAres-", //微信号
initial: 'A', //姓名首字母
img: 'static/images/小姨妈.jpg', //头像
signature: "每天我就萌萌哒", //个性签名
nickname: "Amor", //昵称
sex: 0, //性别 1为男,0为女
remark: "Amor", //备注
area: "浙江 宁波", //地区
},
{
id: 2,
wxid: "Big-fly",
initial: 'B',
img: 'static/images/大飞哥.jpg',
signature: "你不知道的js",
nickname: "fly",
sex: 1,
remark: "大飞哥",
area: "奥地利 布尔根兰",
},
{
id: 3,
wxid: "microzz",
initial: 'D',
img: 'static/images/microzz.jpg',
signature: "学习让我快乐让我成长",
nickname: "microzz",
sex: 1,
remark: "大佬",
area: "江西 赣州",
},
{
id: 4,
wxid: "hwn0366",
initial: 'F',
img: 'static/images/father.jpg',
signature: "学习让我快乐让我成长",
nickname: "丢",
sex: 1,
remark: "father",
area: "江西 抚州",
},
{
id: 5,
wxid: "orange66",
initial: 'J',
img: 'static/images/orange.jpg',
signature: "你可以笑的很阳光!",
nickname: "orange",
sex: 1,
remark: "橘子",
area: "江西 赣州",
},
{
id: 6,
wxid: "Seto_L",
img: 'static/images/加菲猫.jpg',
signature: "自强不息",
nickname: "21",
sex: 1,
remark: "加菲",
area: "北京 海淀",
},
{
id: 7,
wxid: "wxid_itjz73t1ajt722",
initial: 'M',
img: 'static/images/mother.jpg',
signature: "开开心心就好",
nickname: "娄娄",
sex: 0,
remark: "妈咪",
area: "江西 抚州",
},
{
id: 8,
wxid: "hj960503",
img: 'static/images/萌萌俊.jpg',
signature: "原谅我有点蠢。。",
nickname: "。。。。。",
sex: 1,
remark: "萌萌均",
area: "江西 萍乡",
}
],
//emoji表情
emojis: [
{ file: '100.gif', code: '/::)', title: '微笑',reg:/\/::\)/g },
{ file: '101.gif', code: '/::~', title: '伤心',reg:/\/::~/g },
{ file: '102.gif', code: '/::B', title: '美女',reg:/\/::B/g },
{ file: '103.gif', code: '/::|', title: '发呆',reg:/\/::\|/g },
{ file: '104.gif', code: '/:8-)', title: '墨镜',reg:/\/:8-\)/g },
{ file: '105.gif', code: '/::<', title: '哭',reg:/\/::</g },
{ file: '106.gif', code: '/::$', title: '羞',reg:/\/::\$/g },
{ file: '107.gif', code: '/::X', title: '哑',reg:/\/::X/g },
{ file: '108.gif', code: '/::Z', title: '睡',reg:/\/::Z/g },
{ file: '109.gif', code: '/::\'(', title: '哭',reg:/\/::'\(/g },
{ file: '110.gif', code: '/::-|', title: '囧',reg:/\/::-\|/g },
{ file: '111.gif', code: '/::@', title: '怒',reg:/\/::@/g },
{ file: '112.gif', code: '/::P', title: '调皮',reg:/\/::P/g },
{ file: '113.gif', code: '/::D', title: '笑',reg:/\/::D/g },
{ file: '114.gif', code: '/::O', title: '惊讶',reg:/\/::O/g },
{ file: '115.gif', code: '/::(', title: '难过',reg:/\/::\(/g },
{ file: '116.gif', code: '/::+', title: '酷',reg:/\/::\+/g },
{ file: '117.gif', code: '/:--b', title: '汗',reg:/\/:--b/g },
{ file: '118.gif', code: '/::Q', title: '抓狂',reg:/\/::Q/g },
{ file: '119.gif', code: '/::T', title: '吐',reg:/\/::T/g },
{ file: '120.gif', code: '/:,@P', title: '笑',reg:/\/:,@P/g },
{ file: '121.gif', code: '/:,@-D', title: '快乐',reg:/\/:,@-D/g },
{ file: '122.gif', code: '/::d', title: '奇',reg:/\/::d/g },
{ file: '123.gif', code: '/:,@o', title: '傲' ,reg:/\/:,@o/g},
{ file: '124.gif', code: '/::g', title: '饿',reg:/\/::g/g },
{ file: '125.gif', code: '/:|-)', title: '累' ,reg:/\/:\|-\)/g},
{ file: '126.gif', code: '/::!', title: '吓',reg:/\/::!/g },
{ file: '127.gif', code: '/::L', title: '汗',reg:/\/::L/g },
{ file: '128.gif', code: '/::>', title: '高兴',reg:/\/::>/g },
{ file: '129.gif', code: '/::,@', title: '闲',reg:/\/::,@/g },
{ file: '130.gif', code: '/:,@f', title: '努力',reg:/\/:,@f/g },
{ file: '131.gif', code: '/::-S', title: '骂',reg:/\/::-S/g },
{ file: '133.gif', code: '/:,@x', title: '秘密',reg:/\/:,@x/g },
{ file: '134.gif', code: '/:,@@', title: '乱',reg:/\/:,@@/g },
{ file: '135.gif', code: '/::8', title: '疯',reg:/\/::8/g },
{ file: '136.gif', code: '/:,@!', title: '哀',reg:/\/:,@!/g },
{ file: '137.gif', code: '/:!!!', title: '鬼',reg:/\/:!!!/g },
{ file: '138.gif', code: '/:xx', title: '打击',reg:/\/:xx/g },
{ file: '139.gif', code: '/:bye', title: 'bye',reg:/\/:bye/g },
{ file: '142.gif', code: '/:handclap', title: '鼓掌',reg:/\/:handclap/g },
{ file: '145.gif', code: '/:<@', title: '什么',reg:/\/:<@/g },
{ file: '147.gif', code: '/::-O', title: '累',reg:/\/::-O/g },
{ file: '153.gif', code: '/:@x', title: '吓',reg:/\/:@x/g },
{ file: '155.gif', code: '/:pd', title: '刀',reg:/\/:pd/g },
{ file: '156.gif', code: '/:<W>', title: '水果',reg:/\/:<W>/g },
{ file: '157.gif', code: '/:beer', title: '酒',reg:/\/:beer/g },
{ file: '158.gif', code: '/:basketb', title: '篮球',reg:/\/:basketb/g },
{ file: '159.gif', code: '/:oo', title: '乒乓',reg:/\/:oo/g },
{ file: '195.gif', code: '/:circle', title: '跳舞',reg:/\/:circle/g },
{ file: '160.gif', code: '/:coffee', title: '咖啡',reg:/\/:coffee/g }
],
// 得知当前选择的是哪个对话
selectId: 1,
// 得知当前选择的是哪个好友
selectFriendId: 0
}
const mutations = {
// 从localStorage 中获取数据
initData (state) {
let data = localStorage.getItem('vue-chat');
if (data) {
state.chatlist = JSON.parse(data);
}
},
// 获取搜索值
search (state, value) {
state.searchText = value
},
// 得知用户当前选择的是哪个对话。便于匹配对应的对话框
selectSession (state, value) {
state.selectId = value
},
// 得知用户当前选择的是哪个好友。
selectFriend (state, value) {
state.selectFriendId = value
},
// 发送信息
sendMessage (state, msg){
let result = state.chatlist.find(session => session.id === state.selectId);
result.messages.push({
content: msg.content,
date: new Date(),
self: true
});
if(result.user.name === '机器人'){
setTimeout(() => {
result.messages.push({
content: msg.reply,
date: new Date(),
self: false
});
},500)
}
},
// 选择好友后,点击发送信息。判断在聊天列表中是否有该好友,有的话跳到该好友对话。没有的话
// 添加该好友的对话 并置顶
send (state) {
let result = state.friendlist.find(friend => friend.id === state.selectFriendId)
let msg = state.chatlist.find(msg => msg.user.name === result.remark)
if( !msg ){
state.selectId = 1
for(let i = 0; i < state.chatlist.length; i++ ){
state.chatlist[i].id++;
state.chatlist[i].index++;
}
state.chatlist.unshift({
id: 1,
user: {
name: result.remark,
img: result.img
},
messages: [
{
content: '已经置顶聊天,可以给我发信息啦!',
date: new Date()
}
],
index: 1
})
}else {
state.selectId = msg.index
router.push({ path: '/chat'})
}
}
}
const getters = {
// 筛选出含有搜索值的聊天列表
searchedChatlist (state) {
let sessions = state.chatlist.filter(sessions => sessions.user.name.includes(state.searchText));
return sessions
},
// 筛选出含有搜索值的好友列表
searchedFriendlist (state) {
let friends = state.friendlist.filter(friends => friends.remark.includes(state.searchText));
return friends
},
// 通过当前选择是哪个对话匹配相应的对话
selectedChat (state) {
let session = state.chatlist.find(session => session.id === state.selectId);
return session
},
// 通过当前选择是哪个好友匹配相应的好友
selectedFriend (state) {
let friend = state.friendlist.find(friend => friend.id === state.selectFriendId);
return friend
},
messages (state) {
let session = state.chatlist.find(session => session.id === state.selectId);
return session.messages
}
}
const actions = {
search: ({ commit }, value) => {
setTimeout(() => {
commit('search', value)
}, 100)
},
selectSession: ({ commit }, value) => commit('selectSession', value),
selectFriend: ({ commit }, value) => commit('selectFriend', value),
sendMessage: ({ commit }, msg) => commit('sendMessage', msg),
send: ({ commit }) => commit('send'),
initData: ({ commit }) => commit('initData')
}
const store = new Vuex.Store({
state,
mutations,
getters,
actions
})
// 监听聊天列表的值, 发生变化就保存在localStorage中
store.watch(
(state) => state.chatlist,
(val) => {
localStorage.setItem('vue-chat', JSON.stringify(val));
},
{
deep: true
}
)
export default store;
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header,
menu, nav, output, ruby, section, summary,
time, mark, audio, video, input {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font-weight: normal;
vertical-align: baseline;
}
article, aside, details, figcaption, figure,
footer, header, menu, nav, section {
display: block;
}
body {
line-height: 1;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
a {
color: #7e8c8d;
text-decoration: none;
-webkit-backface-visibility: hidden;
}
li {
list-style: none;
}
html, body {
width: 100%;
height: 100%;
overflow-y: hidden
}
body {
-webkit-text-size-adjust: none;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
background-image: url(../images/bg.png);
background-size: cover;
}
/* 设置滚动条的样式 */
::-webkit-scrollbar {
width: 8px;
}
/* 滚动条滑块 */
::-webkit-scrollbar-thumb {
border-radius: 6px;
background: rgba(0,0,0,0.1);
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment