From 3dba4147eacc1efdb70be2827aa918d67404976a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=82=B0=E5=B9=BF=E9=93=B6?= <273650669@qq.com>
Date: Fri, 27 Oct 2017 13:34:42 +0800
Subject: [PATCH] Base Code
---
.gitignore | 4 +
app.js | 46 ++
bin/www | 93 ++++
io/io.js | 126 ++++++
io/ioHelper.js | 37 ++
io/messageTpye.js | 6 +
package.json | 20 +
public/css/client.css | 196 +++++++++
public/js/client/client.js | 59 +++
public/js/common.js | 30 ++
public/layui/css/layui.css | 2 +
public/layui/css/layui.mobile.css | 2 +
public/layui/css/modules/code.css | 2 +
.../css/modules/laydate/default/laydate.css | 2 +
.../css/modules/layer/default/icon-ext.png | Bin 0 -> 5911 bytes
.../layui/css/modules/layer/default/icon.png | Bin 0 -> 11493 bytes
.../layui/css/modules/layer/default/layer.css | 2 +
.../css/modules/layer/default/loading-0.gif | Bin 0 -> 5793 bytes
.../css/modules/layer/default/loading-1.gif | Bin 0 -> 701 bytes
.../css/modules/layer/default/loading-2.gif | Bin 0 -> 1787 bytes
public/layui/font/iconfont.eot | Bin 0 -> 33180 bytes
public/layui/font/iconfont.svg | 402 ++++++++++++++++++
public/layui/font/iconfont.ttf | Bin 0 -> 33004 bytes
public/layui/font/iconfont.woff | Bin 0 -> 21688 bytes
public/layui/images/face/0.gif | Bin 0 -> 2689 bytes
public/layui/images/face/1.gif | Bin 0 -> 5514 bytes
public/layui/images/face/10.gif | Bin 0 -> 2797 bytes
public/layui/images/face/11.gif | Bin 0 -> 4121 bytes
public/layui/images/face/12.gif | Bin 0 -> 3361 bytes
public/layui/images/face/13.gif | Bin 0 -> 7425 bytes
public/layui/images/face/14.gif | Bin 0 -> 2375 bytes
public/layui/images/face/15.gif | Bin 0 -> 1793 bytes
public/layui/images/face/16.gif | Bin 0 -> 6721 bytes
public/layui/images/face/17.gif | Bin 0 -> 4439 bytes
public/layui/images/face/18.gif | Bin 0 -> 3017 bytes
public/layui/images/face/19.gif | Bin 0 -> 3040 bytes
public/layui/images/face/2.gif | Bin 0 -> 3222 bytes
public/layui/images/face/20.gif | Bin 0 -> 5144 bytes
public/layui/images/face/21.gif | Bin 0 -> 5191 bytes
public/layui/images/face/22.gif | Bin 0 -> 9823 bytes
public/layui/images/face/23.gif | Bin 0 -> 3792 bytes
public/layui/images/face/24.gif | Bin 0 -> 8096 bytes
public/layui/images/face/25.gif | Bin 0 -> 3127 bytes
public/layui/images/face/26.gif | Bin 0 -> 3291 bytes
public/layui/images/face/27.gif | Bin 0 -> 4377 bytes
public/layui/images/face/28.gif | Bin 0 -> 2793 bytes
public/layui/images/face/29.gif | Bin 0 -> 4854 bytes
public/layui/images/face/3.gif | Bin 0 -> 4017 bytes
public/layui/images/face/30.gif | Bin 0 -> 2555 bytes
public/layui/images/face/31.gif | Bin 0 -> 2002 bytes
public/layui/images/face/32.gif | Bin 0 -> 3481 bytes
public/layui/images/face/33.gif | Bin 0 -> 2454 bytes
public/layui/images/face/34.gif | Bin 0 -> 3700 bytes
public/layui/images/face/35.gif | Bin 0 -> 1800 bytes
public/layui/images/face/36.gif | Bin 0 -> 2331 bytes
public/layui/images/face/37.gif | Bin 0 -> 1513 bytes
public/layui/images/face/38.gif | Bin 0 -> 3615 bytes
public/layui/images/face/39.gif | Bin 0 -> 6495 bytes
public/layui/images/face/4.gif | Bin 0 -> 5689 bytes
public/layui/images/face/40.gif | Bin 0 -> 3154 bytes
public/layui/images/face/41.gif | Bin 0 -> 3644 bytes
public/layui/images/face/42.gif | Bin 0 -> 5305 bytes
public/layui/images/face/43.gif | Bin 0 -> 2674 bytes
public/layui/images/face/44.gif | Bin 0 -> 4126 bytes
public/layui/images/face/45.gif | Bin 0 -> 3417 bytes
public/layui/images/face/46.gif | Bin 0 -> 3007 bytes
public/layui/images/face/47.gif | Bin 0 -> 2333 bytes
public/layui/images/face/48.gif | Bin 0 -> 2689 bytes
public/layui/images/face/49.gif | Bin 0 -> 2315 bytes
public/layui/images/face/5.gif | Bin 0 -> 4567 bytes
public/layui/images/face/50.gif | Bin 0 -> 5866 bytes
public/layui/images/face/51.gif | Bin 0 -> 2785 bytes
public/layui/images/face/52.gif | Bin 0 -> 777 bytes
public/layui/images/face/53.gif | Bin 0 -> 2127 bytes
public/layui/images/face/54.gif | Bin 0 -> 2196 bytes
public/layui/images/face/55.gif | Bin 0 -> 1971 bytes
public/layui/images/face/56.gif | Bin 0 -> 2034 bytes
public/layui/images/face/57.gif | Bin 0 -> 2705 bytes
public/layui/images/face/58.gif | Bin 0 -> 2258 bytes
public/layui/images/face/59.gif | Bin 0 -> 10311 bytes
public/layui/images/face/6.gif | Bin 0 -> 2213 bytes
public/layui/images/face/60.gif | Bin 0 -> 3245 bytes
public/layui/images/face/61.gif | Bin 0 -> 2495 bytes
public/layui/images/face/62.gif | Bin 0 -> 2017 bytes
public/layui/images/face/63.gif | Bin 0 -> 5871 bytes
public/layui/images/face/64.gif | Bin 0 -> 6448 bytes
public/layui/images/face/65.gif | Bin 0 -> 3576 bytes
public/layui/images/face/66.gif | Bin 0 -> 3029 bytes
public/layui/images/face/67.gif | Bin 0 -> 2701 bytes
public/layui/images/face/68.gif | Bin 0 -> 1424 bytes
public/layui/images/face/69.gif | Bin 0 -> 2431 bytes
public/layui/images/face/7.gif | Bin 0 -> 3398 bytes
public/layui/images/face/70.gif | Bin 0 -> 4590 bytes
public/layui/images/face/71.gif | Bin 0 -> 5304 bytes
public/layui/images/face/8.gif | Bin 0 -> 4050 bytes
public/layui/images/face/9.gif | Bin 0 -> 4221 bytes
public/layui/lay/modules/carousel.js | 2 +
public/layui/lay/modules/code.js | 2 +
public/layui/lay/modules/element.js | 2 +
public/layui/lay/modules/flow.js | 2 +
public/layui/lay/modules/form.js | 2 +
public/layui/lay/modules/jquery.js | 5 +
public/layui/lay/modules/laydate.js | 2 +
public/layui/lay/modules/layedit.js | 2 +
public/layui/lay/modules/layer.js | 2 +
public/layui/lay/modules/laypage.js | 2 +
public/layui/lay/modules/laytpl.js | 2 +
public/layui/lay/modules/mobile.js | 2 +
public/layui/lay/modules/table.js | 2 +
public/layui/lay/modules/tree.js | 2 +
public/layui/lay/modules/upload.js | 2 +
public/layui/lay/modules/util.js | 2 +
public/layui/layui.all.js | 5 +
public/layui/layui.js | 2 +
routes/index.js | 20 +
routes/users.js | 9 +
utils/redis.js | 81 ++++
views/client/error.ejs | 3 +
views/client/index.ejs | 53 +++
views/server/footer.ejs | 16 +
views/server/header.ejs | 67 +++
views/server/index.ejs | 57 +++
views/server/setup.ejs | 20 +
views/server/users.ejs | 19 +
124 files changed, 1416 insertions(+)
create mode 100644 .gitignore
create mode 100644 app.js
create mode 100755 bin/www
create mode 100644 io/io.js
create mode 100644 io/ioHelper.js
create mode 100644 io/messageTpye.js
create mode 100644 package.json
create mode 100644 public/css/client.css
create mode 100644 public/js/client/client.js
create mode 100644 public/js/common.js
create mode 100755 public/layui/css/layui.css
create mode 100755 public/layui/css/layui.mobile.css
create mode 100755 public/layui/css/modules/code.css
create mode 100755 public/layui/css/modules/laydate/default/laydate.css
create mode 100755 public/layui/css/modules/layer/default/icon-ext.png
create mode 100755 public/layui/css/modules/layer/default/icon.png
create mode 100755 public/layui/css/modules/layer/default/layer.css
create mode 100755 public/layui/css/modules/layer/default/loading-0.gif
create mode 100755 public/layui/css/modules/layer/default/loading-1.gif
create mode 100755 public/layui/css/modules/layer/default/loading-2.gif
create mode 100755 public/layui/font/iconfont.eot
create mode 100755 public/layui/font/iconfont.svg
create mode 100755 public/layui/font/iconfont.ttf
create mode 100755 public/layui/font/iconfont.woff
create mode 100755 public/layui/images/face/0.gif
create mode 100755 public/layui/images/face/1.gif
create mode 100755 public/layui/images/face/10.gif
create mode 100755 public/layui/images/face/11.gif
create mode 100755 public/layui/images/face/12.gif
create mode 100755 public/layui/images/face/13.gif
create mode 100755 public/layui/images/face/14.gif
create mode 100755 public/layui/images/face/15.gif
create mode 100755 public/layui/images/face/16.gif
create mode 100755 public/layui/images/face/17.gif
create mode 100755 public/layui/images/face/18.gif
create mode 100755 public/layui/images/face/19.gif
create mode 100755 public/layui/images/face/2.gif
create mode 100755 public/layui/images/face/20.gif
create mode 100755 public/layui/images/face/21.gif
create mode 100755 public/layui/images/face/22.gif
create mode 100755 public/layui/images/face/23.gif
create mode 100755 public/layui/images/face/24.gif
create mode 100755 public/layui/images/face/25.gif
create mode 100755 public/layui/images/face/26.gif
create mode 100755 public/layui/images/face/27.gif
create mode 100755 public/layui/images/face/28.gif
create mode 100755 public/layui/images/face/29.gif
create mode 100755 public/layui/images/face/3.gif
create mode 100755 public/layui/images/face/30.gif
create mode 100755 public/layui/images/face/31.gif
create mode 100755 public/layui/images/face/32.gif
create mode 100755 public/layui/images/face/33.gif
create mode 100755 public/layui/images/face/34.gif
create mode 100755 public/layui/images/face/35.gif
create mode 100755 public/layui/images/face/36.gif
create mode 100755 public/layui/images/face/37.gif
create mode 100755 public/layui/images/face/38.gif
create mode 100755 public/layui/images/face/39.gif
create mode 100755 public/layui/images/face/4.gif
create mode 100755 public/layui/images/face/40.gif
create mode 100755 public/layui/images/face/41.gif
create mode 100755 public/layui/images/face/42.gif
create mode 100755 public/layui/images/face/43.gif
create mode 100755 public/layui/images/face/44.gif
create mode 100755 public/layui/images/face/45.gif
create mode 100755 public/layui/images/face/46.gif
create mode 100755 public/layui/images/face/47.gif
create mode 100755 public/layui/images/face/48.gif
create mode 100755 public/layui/images/face/49.gif
create mode 100755 public/layui/images/face/5.gif
create mode 100755 public/layui/images/face/50.gif
create mode 100755 public/layui/images/face/51.gif
create mode 100755 public/layui/images/face/52.gif
create mode 100755 public/layui/images/face/53.gif
create mode 100755 public/layui/images/face/54.gif
create mode 100755 public/layui/images/face/55.gif
create mode 100755 public/layui/images/face/56.gif
create mode 100755 public/layui/images/face/57.gif
create mode 100755 public/layui/images/face/58.gif
create mode 100755 public/layui/images/face/59.gif
create mode 100755 public/layui/images/face/6.gif
create mode 100755 public/layui/images/face/60.gif
create mode 100755 public/layui/images/face/61.gif
create mode 100755 public/layui/images/face/62.gif
create mode 100755 public/layui/images/face/63.gif
create mode 100755 public/layui/images/face/64.gif
create mode 100755 public/layui/images/face/65.gif
create mode 100755 public/layui/images/face/66.gif
create mode 100755 public/layui/images/face/67.gif
create mode 100755 public/layui/images/face/68.gif
create mode 100755 public/layui/images/face/69.gif
create mode 100755 public/layui/images/face/7.gif
create mode 100755 public/layui/images/face/70.gif
create mode 100755 public/layui/images/face/71.gif
create mode 100755 public/layui/images/face/8.gif
create mode 100755 public/layui/images/face/9.gif
create mode 100755 public/layui/lay/modules/carousel.js
create mode 100755 public/layui/lay/modules/code.js
create mode 100755 public/layui/lay/modules/element.js
create mode 100755 public/layui/lay/modules/flow.js
create mode 100755 public/layui/lay/modules/form.js
create mode 100755 public/layui/lay/modules/jquery.js
create mode 100755 public/layui/lay/modules/laydate.js
create mode 100755 public/layui/lay/modules/layedit.js
create mode 100755 public/layui/lay/modules/layer.js
create mode 100755 public/layui/lay/modules/laypage.js
create mode 100755 public/layui/lay/modules/laytpl.js
create mode 100755 public/layui/lay/modules/mobile.js
create mode 100755 public/layui/lay/modules/table.js
create mode 100755 public/layui/lay/modules/tree.js
create mode 100755 public/layui/lay/modules/upload.js
create mode 100755 public/layui/lay/modules/util.js
create mode 100755 public/layui/layui.all.js
create mode 100755 public/layui/layui.js
create mode 100644 routes/index.js
create mode 100644 routes/users.js
create mode 100644 utils/redis.js
create mode 100644 views/client/error.ejs
create mode 100644 views/client/index.ejs
create mode 100644 views/server/footer.ejs
create mode 100644 views/server/header.ejs
create mode 100644 views/server/index.ejs
create mode 100644 views/server/setup.ejs
create mode 100644 views/server/users.ejs
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9ac0709
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+# Created by .ignore support plugin (hsz.mobi)
+.gitignore
+.idea/
+node_modules
\ No newline at end of file
diff --git a/app.js b/app.js
new file mode 100644
index 0000000..b2a5037
--- /dev/null
+++ b/app.js
@@ -0,0 +1,46 @@
+var express = require('express');
+var path = require('path');
+var favicon = require('serve-favicon');
+var logger = require('morgan');
+var cookieParser = require('cookie-parser');
+var bodyParser = require('body-parser');
+
+var index = require('./routes/index');
+var users = require('./routes/users');
+
+var app = express();
+
+// view engine setup
+app.set('views', path.join(__dirname, 'views'));
+app.set('view engine', 'ejs');
+
+// uncomment after placing your favicon in /public
+//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
+app.use(logger('dev'));
+app.use(bodyParser.json());
+app.use(bodyParser.urlencoded({ extended: false }));
+app.use(cookieParser());
+app.use(express.static(path.join(__dirname, 'public')));
+
+app.use('/', index);
+app.use('/users', users);
+
+// catch 404 and forward to error handler
+app.use(function(req, res, next) {
+ var err = new Error('Not Found');
+ err.status = 404;
+ next(err);
+});
+
+// error handler
+app.use(function(err, req, res, next) {
+ // set locals, only providing error in development
+ res.locals.message = err.message;
+ res.locals.error = req.app.get('env') === 'development' ? err : {};
+
+ // render the error page
+ res.status(err.status || 500);
+ res.render('error');
+});
+
+module.exports = app;
diff --git a/bin/www b/bin/www
new file mode 100755
index 0000000..9cf83a1
--- /dev/null
+++ b/bin/www
@@ -0,0 +1,93 @@
+#!/usr/bin/env node
+
+/**
+ * Module dependencies.
+ */
+
+var app = require('../app');
+var debug = require('debug')('kefu:server');
+var http = require('http');
+
+var ioSvc = require('../io/io');
+/**
+ * Get port from environment and store in Express.
+ */
+
+var port = normalizePort(process.env.PORT || '9010');
+app.set('port', port);
+
+/**
+ * Create HTTP server.
+ */
+
+var server = http.createServer(app);
+var io = require('socket.io')(server);
+ioSvc.ioServer(io);
+
+/**
+ * Listen on provided port, on all network interfaces.
+ */
+
+server.listen(port);
+server.on('error', onError);
+server.on('listening', onListening);
+
+/**
+ * Normalize a port into a number, string, or false.
+ */
+
+function normalizePort(val) {
+ var port = parseInt(val, 10);
+
+ if (isNaN(port)) {
+ // named pipe
+ return val;
+ }
+
+ if (port >= 0) {
+ // port number
+ return port;
+ }
+
+ return false;
+}
+
+/**
+ * Event listener for HTTP server "error" event.
+ */
+
+function onError(error) {
+ if (error.syscall !== 'listen') {
+ throw error;
+ }
+
+ var bind = typeof port === 'string'
+ ? 'Pipe ' + port
+ : 'Port ' + port;
+
+ // handle specific listen errors with friendly messages
+ switch (error.code) {
+ case 'EACCES':
+ console.error(bind + ' requires elevated privileges');
+ process.exit(1);
+ break;
+ case 'EADDRINUSE':
+ console.error(bind + ' is already in use');
+ process.exit(1);
+ break;
+ default:
+ throw error;
+ }
+}
+
+/**
+ * Event listener for HTTP server "listening" event.
+ */
+
+function onListening() {
+ var addr = server.address();
+ var bind = typeof addr === 'string'
+ ? 'pipe ' + addr
+ : 'port ' + addr.port;
+ debug('Listening on ' + bind);
+}
diff --git a/io/io.js b/io/io.js
new file mode 100644
index 0000000..a4ee67d
--- /dev/null
+++ b/io/io.js
@@ -0,0 +1,126 @@
+/*
+*介绍:socket.io 功能封装
+*作者:TaiGuangYin
+*时间:2017-09-09
+* */
+var redis = require('../utils/redis');
+var msgType = require('./messageTpye');
+var ioSvc = require('./ioHelper').ioSvc;
+
+//服务端连接
+function ioServer(io) {
+
+ var _self = this;
+ ioSvc.setInstance(io);
+
+ //初始化连接人数
+ redis.set('online_count',0,null,function (err,ret) {
+ if(err){
+ console.error(err);
+ }
+ });
+
+ io.on('connection', function (socket) {
+ console.log('SocketIO有新的连接!');
+
+ _self.updateOnlieCount(true);
+
+ //用户与Socket进行绑定
+ socket.on('login', function (uid) {
+ console.log(uid+'登录成功');
+ redis.set(uid,socket.id,null,function (err,ret) {
+ if(err){
+ console.error(err);
+ }
+ });
+ redis.set(socket.id,uid,null,function (err,ret) {
+ if(err){
+ console.error(err);
+ }
+ });
+ });
+
+ //断开事件
+ socket.on('disconnect', function() {
+ console.log("与服务其断开");
+ _self.updateOnlieCount(false);
+ redis.get(socket.id,function (err,val) {
+ if(err){
+ console.error(err);
+ }
+ redis.del(socket.id,function (err,ret) {
+ if(err){
+ console.error(err);
+ }
+
+ });
+ redis.del(val,function (err,ret) {
+ if(err){
+ console.error(err);
+ }
+ });
+ });
+ });
+
+ //重连事件
+ socket.on('reconnect', function() {
+ console.log("重新连接到服务器");
+ });
+
+ //监听客户端发送的信息,实现消息转发到各个其他客户端
+ socket.on('message',function(msg){
+ if(msg.type == msgType.messageType.public){
+ socket.broadcast.emit("message",msg.content);
+ }else if(msg.type == msgType.messageType.private){
+ var uid = msg.uid;
+ redis.get(uid,function (err,sid) {
+ if(err){
+ console.error(err);
+ }
+ if(sid){
+ //给指定的客户端发送消息
+ io.sockets.socket(sid).emit('message', msg.content);
+ }
+ });
+ }
+
+ });
+ });
+
+ this.updateOnlieCount = function (isConnect) {
+ //记录在线客户连接数
+ redis.get('online_count',function (err,val) {
+ if(err){
+ console.error(err);
+ }
+ if(!val){
+ val = 0;
+ }
+ if(typeof val == 'string'){
+ val = parseInt(val);
+ }
+ if(isConnect){
+ val += 1;
+ }else{
+ val -= 1;
+ if(val<=0){
+ val = 0;
+ }
+ }
+
+ console.log('当前在线人数:'+val);
+ io.sockets.emit('update_online_count', { online_count: val });
+
+ redis.set('online_count',val,null,function (err,ret) {
+ if(err){
+ console.error(err);
+ }
+ });
+ });
+ };
+
+}
+
+
+//模块导出
+exports.ioServer = ioServer;
\ No newline at end of file
diff --git a/io/ioHelper.js b/io/ioHelper.js
new file mode 100644
index 0000000..20693aa
--- /dev/null
+++ b/io/ioHelper.js
@@ -0,0 +1,37 @@
+var redis = require('../utils/redis');
+
+var ioSvc = {};
+ioSvc.io = null;
+
+//初始化实例
+ioSvc.setInstance = function (io) {
+ this.io = io;
+};
+
+ioSvc.getInstance =function () {
+ return this.io;
+};
+
+//服务器给所有客户端广播消息
+ioSvc.serverBroadcastMsg = function (data) {
+ console.log('发送广播消息');
+ console.log(data);
+ this.io.sockets.emit('message',data);
+};
+
+//服务端给指定用户发消息
+ioSvc.serverToPrivateMsg = function (uid,data) {
+ console.log('发送私人消息');
+ console.log(data);
+ redis.get(uid,function (err,sid) {
+ if(err){
+ console.error(err);
+ }
+ if(sid){
+ //给指定的客户端发送消息
+ this.io.sockets.socket(sid).emit('message',data);
+ }
+ });
+};
+
+exports.ioSvc = ioSvc;
\ No newline at end of file
diff --git a/io/messageTpye.js b/io/messageTpye.js
new file mode 100644
index 0000000..ccd4c92
--- /dev/null
+++ b/io/messageTpye.js
@@ -0,0 +1,6 @@
+const messageType= {
+ 'public':'public',
+ 'private':'private'
+};
+
+exports.messageType = messageType;
\ No newline at end of file
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..5c88f7e
--- /dev/null
+++ b/package.json
@@ -0,0 +1,20 @@
+{
+ "name": "kefu",
+ "version": "0.0.0",
+ "private": true,
+ "scripts": {
+ "start": "node ./bin/www"
+ },
+ "dependencies": {
+ "body-parser": "~1.17.1",
+ "cookie-parser": "~1.4.3",
+ "debug": "~2.6.3",
+ "ejs": "~2.5.6",
+ "express": "~4.15.2",
+ "morgan": "~1.8.1",
+ "serve-favicon": "~2.4.2",
+ "socket.io":"~2.0.4",
+ "socket.io-client":"^2.0.4",
+ "redis":"^2.8.0"
+ }
+}
diff --git a/public/css/client.css b/public/css/client.css
new file mode 100644
index 0000000..98158bc
--- /dev/null
+++ b/public/css/client.css
@@ -0,0 +1,196 @@
+body {
+ padding: 50px;
+ font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
+}
+
+a {
+ color: #00B7FF;
+}
+
+.page-current{
+ background: #ffffff;
+}
+
+.msg-box {
+ margin-bottom: 20px;
+}
+
+.msg-agent, .msg-bot, .msg-client {
+ position: relative;
+ width: 100%;
+ margin-bottom: 20px;
+ padding-left: 50px;
+}
+
+.msg-agent .agent-avatar,.msg-bot .agent-avatar {
+ position: absolute;
+ top: 18px;
+ left: 0;
+}
+
+.msg-client .date {
+ margin-bottom: 2px;
+ font-size: 12px;
+ line-height: 14px;
+ color: #b2b2b2;
+ width: 100%;
+ text-align: right;
+}
+
+ .msg-client .bubble, .msg-client .photo {
+ float: right;
+ width: auto;
+ max-width: 100%;
+ margin-left: 35px;
+}
+
+.msg-agent .bubble, .msg-bot .bubble, .msg-client .bubble {
+ position: relative;
+ padding: 8px 12px;
+ font-size: 13px;
+ line-height: 20px;
+ border-radius: 4px;
+ word-wrap: break-word;
+}
+
+.msg-client .arrow {
+ top: 14px;
+ right: -6px;
+ border-top: 5px solid transparent;
+ border-bottom: 5px solid transparent;
+ border-left: 6px solid #007aff;
+}
+
+ .msg-agent .arrow, .msg-agent .arrow-bg, .msg-bot .arrow, .msg-bot .arrow-bg, .msg-client .arrow, .msg-client .arrow-bg {
+ position: absolute;
+ display: block;
+ width: 0;
+ height: 0;
+ font-size: 0;
+}
+
+.msg-client .status {
+ position: absolute;
+ left: -25px;
+ top: 8px;
+}
+
+.msg-agent:after, .msg-bot:after, .msg-client:after, .evaluation-body .evaluation-btn-group:after {
+ display: block;
+ clear: both;
+ content: '';
+}
+
+.msg-client .bubble {
+ background-color: #007aff;
+ color: #fff;
+}
+
+.msg-agent .date,.msg-bot .date {
+ margin-bottom: 2px;
+ font-size: 12px;
+ line-height: 14px;
+ color: #b2b2b2;
+ text-align: left;
+}
+
+.msg-agent .bubble,.msg-bot .bubble {
+ color: #000;
+ background-color: #fff;
+ border-left: 1px solid #f0f0f0;
+}
+
+.msg-agent .agent-avatar, .msg-bot .agent-avatar {
+ position: absolute;
+ top: 18px;
+ left: 0;
+}
+
+.msg-agent .agent-avatar>img,.msg-bot .agent-avatar>img {
+ width: 36px;
+ height: 36px;
+ margin-top: 1px;
+ border-radius: 18px;
+}
+
+.msg-agent .arrow-bg,.msg-bot .arrow-bg {
+ top: 13px;
+ left: -7px;
+ border-top: 6px solid transparent;
+ border-bottom: 6px solid transparent;
+ border-right: 7px solid #f0f0f0;
+}
+
+.msg-agent .arrow,.msg-bot .arrow {
+ top: 14px;
+ left: -6px;
+ border-top: 5px solid transparent;
+ border-bottom: 5px solid transparent;
+ border-right: 6px solid #fff;
+}
+
+*, :after, :before {
+ box-sizing: border-box;
+ outline: none;
+}
+
+.footer {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 2;
+ width: 100%;
+ height: 50px;
+ background-color: #fff;
+ box-shadow: 0 -1px 0 0 rgba(0,0,0,.04), 0 -2px 0 0 rgba(0,0,0,.01);
+}
+
+.input-holder {
+ position: relative;
+ height: 50px;
+}
+
+.footer .input-holder .feature-holder {
+ float: left;
+ padding-left: 4px;
+}
+
+.footer .input-holder .text-holder {
+ position: relative;
+ padding-right: 50px;
+ padding-left: 4px;
+ overflow: hidden;
+ zoom: 1;
+}
+
+.footer .input-holder .text-holder #textarea {
+ display: block;
+ width: 100%;
+ height: 32px;
+ padding: 5px;
+ margin-top: 12px;
+ overflow-x: hidden;
+ overflow-y: auto;
+ resize: none;
+ vertical-align: middle;
+ outline: 0;
+ border: 0;
+ word-break: break-all;
+ font-size: 14px;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+}
+
+.footer .input-holder .text-holder #btnSend {
+ position: absolute;
+ top: 3px;
+ right: 2px;
+ width: 46px;
+ height: 44px;
+ text-align: center;
+ line-height: 44px;
+ font-size: 14px;
+ color: #858e99;
+}
diff --git a/public/js/client/client.js b/public/js/client/client.js
new file mode 100644
index 0000000..c723d72
--- /dev/null
+++ b/public/js/client/client.js
@@ -0,0 +1,59 @@
+$(function(){
+ //Socket.IO 连接
+ var socket = io.connect('http://'+document.domain+':9010');
+
+ function insert_client_html(time,content){
+ var tpl = '
'+
+ '
'+
+ '
' + time + '
'+
+ '
'+
+ '
'+
+ '
' + content + '
'+
+ '
'+
+ '
'+
+ '
'+
+ '
';
+ $(".msg-container").append(tpl);
+ }
+
+ function insert_agent_html(time,content){
+ var tpl = ''+
+ '
'+
+ '
'+
+ '

'+
+ '
'+
+ '
' + time + '
'+
+ '
'+
+ '
'+
+ '
'+
+ '
' + content + '
'+
+ '
'+
+ '
'+
+ '
';
+ $(".msg-container").append(tpl);
+ }
+
+
+ $("#btnSend").click(function(){
+ var date = dateFormat();
+ var msg = $("#textarea").val();
+ insert_client_html(date,msg);
+ });
+
+ //连接服务器
+ socket.on('connect', function () {
+ console.log('连接成功...');
+ var uuid = 'chat'+ guid();
+ socket.emit('login', uuid);
+ });
+
+ // /* 后端推送来消息时
+ // msg:
+ // type 消息类型 image,text
+ // content 消息
+ // */
+ socket.on('message', function(msg){
+ insert_agent_html(dateFormat(),msg.content);
+ });
+
+});
\ No newline at end of file
diff --git a/public/js/common.js b/public/js/common.js
new file mode 100644
index 0000000..6280dd8
--- /dev/null
+++ b/public/js/common.js
@@ -0,0 +1,30 @@
+ //用于生成uuid
+ function S4() {
+ return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
+ }
+
+ function guid() {
+ return (S4()+S4()+"-"+S4()+S4()+S4());
+ }
+
+ function dateFormat(fmt,date) {
+ if(!fmt){
+ fmt = "yyyy-MM-dd hh:mm:ss";
+ }
+ if(!date){
+ date = new Date();
+ }
+ var o = {
+ "M+": date.getMonth() + 1, //月份
+ "d+": date.getDate(), //日
+ "h+": date.getHours(), //小时
+ "m+": date.getMinutes(), //分
+ "s+": date.getSeconds(), //秒
+ "q+": Math.floor((date.getMonth() + 3) / 3), //季度
+ "S": date.getMilliseconds() //毫秒
+ };
+ if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
+ for (var k in o)
+ if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
+ return fmt;
+ }
\ No newline at end of file
diff --git a/public/layui/css/layui.css b/public/layui/css/layui.css
new file mode 100755
index 0000000..743cd49
--- /dev/null
+++ b/public/layui/css/layui.css
@@ -0,0 +1,2 @@
+/** layui-v2.1.5 MIT License By http://www.layui.com */
+ .layui-btn,.layui-inline,img{vertical-align:middle}.layui-btn,.layui-disabled,.layui-icon,.layui-unselect{-webkit-user-select:none;-ms-user-select:none;-moz-user-select:none}blockquote,body,button,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,input,li,ol,p,pre,td,textarea,th,ul{margin:0;padding:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}a:active,a:hover{outline:0}img{display:inline-block;border:none}li{list-style:none}table{border-collapse:collapse;border-spacing:0}h1,h2,h3{font-size:14px;font-weight:400}h4,h5,h6{font-size:100%;font-weight:400}button,input,optgroup,option,select,textarea{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;outline:0}pre{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}@font-face{font-family:layui-icon;src:url(../font/iconfont.eot?v=213);src:url(../font/iconfont.eot?v=213#iefix) format('embedded-opentype'),url(../font/iconfont.svg?v=213#iconfont) format('svg'),url(../font/iconfont.woff?v=213) format('woff'),url(../font/iconfont.ttf?v=213) format('truetype')}.layui-icon{font-family:layui-icon!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{line-height:24px;font:14px Helvetica Neue,Helvetica,PingFang SC,\5FAE\8F6F\96C5\9ED1,Tahoma,Arial,sans-serif}hr{height:1px;margin:10px 0;border:0;background-color:#e2e2e2;clear:both}a{color:#333;text-decoration:none}a:hover{color:#777}a cite{font-style:normal;*cursor:pointer}.layui-border-box,.layui-border-box *{box-sizing:border-box}.layui-box,.layui-box *{box-sizing:content-box}.layui-clear{clear:both;*zoom:1}.layui-clear:after{content:'\20';clear:both;*zoom:1;display:block;height:0}.layui-inline{position:relative;display:inline-block;*display:inline;*zoom:1}.layui-edge{position:absolute;width:0;height:0;border-style:dashed;border-color:transparent;overflow:hidden}.layui-elip{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-disabled,.layui-disabled:hover{color:#d2d2d2!important;cursor:not-allowed!important}.layui-circle{border-radius:100%}.layui-show{display:block!important}.layui-hide{display:none!important}.layui-main{position:relative;width:1140px;margin:0 auto}.layui-header{position:relative;z-index:1000;height:60px}.layui-header a:hover{transition:all .5s;-webkit-transition:all .5s}.layui-side{position:fixed;top:0;bottom:0;z-index:999;width:200px;overflow-x:hidden}.layui-side-scroll{width:220px;height:100%;overflow-x:hidden}.layui-body{position:absolute;left:200px;right:0;top:0;bottom:0;z-index:998;width:auto;overflow:hidden;overflow-y:auto;box-sizing:border-box}.layui-layout-body{overflow:hidden}.layui-layout-admin .layui-header{background-color:#23262E}.layui-layout-admin .layui-side{top:60px;width:200px;overflow-x:hidden}.layui-layout-admin .layui-body{top:60px;bottom:44px}.layui-layout-admin .layui-main{width:auto;margin:0 15px}.layui-layout-admin .layui-footer{position:fixed;left:200px;right:0;bottom:0;height:44px;line-height:44px;padding:0 15px;background-color:#eee}.layui-layout-admin .layui-logo{position:absolute;left:0;top:0;width:200px;height:100%;line-height:60px;text-align:center;color:#009688;font-size:16px}.layui-layout-admin .layui-header .layui-nav{background:0 0}.layui-layout-left{position:absolute!important;left:200px;top:0}.layui-layout-right{position:absolute!important;right:0;top:0}.layui-container{position:relative;margin:0 auto;padding:0 15px;box-sizing:border-box}.layui-fluid{position:relative;margin:0 auto;padding:0 15px}.layui-row:after,.layui-row:before{content:'';display:block;clear:both}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9,.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9,.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9,.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{position:relative;display:block;box-sizing:border-box}.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{float:left}.layui-col-xs1{width:8.33333333%}.layui-col-xs2{width:16.66666667%}.layui-col-xs3{width:25%}.layui-col-xs4{width:33.33333333%}.layui-col-xs5{width:41.66666667%}.layui-col-xs6{width:50%}.layui-col-xs7{width:58.33333333%}.layui-col-xs8{width:66.66666667%}.layui-col-xs9{width:75%}.layui-col-xs10{width:83.33333333%}.layui-col-xs11{width:91.66666667%}.layui-col-xs12{width:100%}.layui-col-xs-offset1{margin-left:8.33333333%}.layui-col-xs-offset2{margin-left:16.66666667%}.layui-col-xs-offset3{margin-left:25%}.layui-col-xs-offset4{margin-left:33.33333333%}.layui-col-xs-offset5{margin-left:41.66666667%}.layui-col-xs-offset6{margin-left:50%}.layui-col-xs-offset7{margin-left:58.33333333%}.layui-col-xs-offset8{margin-left:66.66666667%}.layui-col-xs-offset9{margin-left:75%}.layui-col-xs-offset10{margin-left:83.33333333%}.layui-col-xs-offset11{margin-left:91.66666667%}.layui-col-xs-offset12{margin-left:100%}@media screen and (max-width:768px){.layui-hide-xs{display:none!important}.layui-show-xs-block{display:block!important}.layui-show-xs-inline{display:inline!important}.layui-show-xs-inline-block{display:inline-block!important}}@media screen and (min-width:768px){.layui-container{width:750px}.layui-hide-sm{display:none!important}.layui-show-sm-block{display:block!important}.layui-show-sm-inline{display:inline!important}.layui-show-sm-inline-block{display:inline-block!important}.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9{float:left}.layui-col-sm1{width:8.33333333%}.layui-col-sm2{width:16.66666667%}.layui-col-sm3{width:25%}.layui-col-sm4{width:33.33333333%}.layui-col-sm5{width:41.66666667%}.layui-col-sm6{width:50%}.layui-col-sm7{width:58.33333333%}.layui-col-sm8{width:66.66666667%}.layui-col-sm9{width:75%}.layui-col-sm10{width:83.33333333%}.layui-col-sm11{width:91.66666667%}.layui-col-sm12{width:100%}.layui-col-sm-offset1{margin-left:8.33333333%}.layui-col-sm-offset2{margin-left:16.66666667%}.layui-col-sm-offset3{margin-left:25%}.layui-col-sm-offset4{margin-left:33.33333333%}.layui-col-sm-offset5{margin-left:41.66666667%}.layui-col-sm-offset6{margin-left:50%}.layui-col-sm-offset7{margin-left:58.33333333%}.layui-col-sm-offset8{margin-left:66.66666667%}.layui-col-sm-offset9{margin-left:75%}.layui-col-sm-offset10{margin-left:83.33333333%}.layui-col-sm-offset11{margin-left:91.66666667%}.layui-col-sm-offset12{margin-left:100%}}@media screen and (min-width:992px){.layui-container{width:970px}.layui-hide-md{display:none!important}.layui-show-md-block{display:block!important}.layui-show-md-inline{display:inline!important}.layui-show-md-inline-block{display:inline-block!important}.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9{float:left}.layui-col-md1{width:8.33333333%}.layui-col-md2{width:16.66666667%}.layui-col-md3{width:25%}.layui-col-md4{width:33.33333333%}.layui-col-md5{width:41.66666667%}.layui-col-md6{width:50%}.layui-col-md7{width:58.33333333%}.layui-col-md8{width:66.66666667%}.layui-col-md9{width:75%}.layui-col-md10{width:83.33333333%}.layui-col-md11{width:91.66666667%}.layui-col-md12{width:100%}.layui-col-md-offset1{margin-left:8.33333333%}.layui-col-md-offset2{margin-left:16.66666667%}.layui-col-md-offset3{margin-left:25%}.layui-col-md-offset4{margin-left:33.33333333%}.layui-col-md-offset5{margin-left:41.66666667%}.layui-col-md-offset6{margin-left:50%}.layui-col-md-offset7{margin-left:58.33333333%}.layui-col-md-offset8{margin-left:66.66666667%}.layui-col-md-offset9{margin-left:75%}.layui-col-md-offset10{margin-left:83.33333333%}.layui-col-md-offset11{margin-left:91.66666667%}.layui-col-md-offset12{margin-left:100%}}@media screen and (min-width:1200px){.layui-container{width:1170px}.layui-hide-lg{display:none!important}.layui-show-lg-block{display:block!important}.layui-show-lg-inline{display:inline!important}.layui-show-lg-inline-block{display:inline-block!important}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9{float:left}.layui-col-lg1{width:8.33333333%}.layui-col-lg2{width:16.66666667%}.layui-col-lg3{width:25%}.layui-col-lg4{width:33.33333333%}.layui-col-lg5{width:41.66666667%}.layui-col-lg6{width:50%}.layui-col-lg7{width:58.33333333%}.layui-col-lg8{width:66.66666667%}.layui-col-lg9{width:75%}.layui-col-lg10{width:83.33333333%}.layui-col-lg11{width:91.66666667%}.layui-col-lg12{width:100%}.layui-col-lg-offset1{margin-left:8.33333333%}.layui-col-lg-offset2{margin-left:16.66666667%}.layui-col-lg-offset3{margin-left:25%}.layui-col-lg-offset4{margin-left:33.33333333%}.layui-col-lg-offset5{margin-left:41.66666667%}.layui-col-lg-offset6{margin-left:50%}.layui-col-lg-offset7{margin-left:58.33333333%}.layui-col-lg-offset8{margin-left:66.66666667%}.layui-col-lg-offset9{margin-left:75%}.layui-col-lg-offset10{margin-left:83.33333333%}.layui-col-lg-offset11{margin-left:91.66666667%}.layui-col-lg-offset12{margin-left:100%}}.layui-col-space1{margin:-.5px}.layui-col-space1>*{padding:.5px}.layui-col-space3{margin:-1.5px}.layui-col-space3>*{padding:1.5px}.layui-col-space5{margin:-2.5px}.layui-col-space5>*{padding:2.5px}.layui-col-space8{margin:-3.5px}.layui-col-space8>*{padding:3.5px}.layui-col-space10{margin:-5px}.layui-col-space10>*{padding:5px}.layui-col-space12{margin:-6px}.layui-col-space12>*{padding:6px}.layui-col-space15{margin:-7.5px}.layui-col-space15>*{padding:7.5px}.layui-col-space18{margin:-9px}.layui-col-space18>*{padding:9px}.layui-col-space20{margin:-10px}.layui-col-space20>*{padding:10px}.layui-col-space22{margin:-11px}.layui-col-space22>*{padding:11px}.layui-col-space25{margin:-12.5px}.layui-col-space25>*{padding:12.5px}.layui-col-space30{margin:-15px}.layui-col-space30>*{padding:15px}.layui-btn,.layui-input,.layui-select,.layui-textarea,.layui-upload-button{outline:0;-webkit-appearance:none;transition:all .3s;-webkit-transition:all .3s;box-sizing:border-box}.layui-elem-quote{margin-bottom:10px;padding:15px;line-height:22px;border-left:5px solid #009688;border-radius:0 2px 2px 0;background-color:#f2f2f2}.layui-quote-nm{border-color:#e2e2e2;border-style:solid;border-width:1px 1px 1px 5px;background:0 0}.layui-elem-field{margin-bottom:10px;padding:0;border:1px solid #e2e2e2}.layui-elem-field legend{margin-left:20px;padding:0 10px;font-size:20px;font-weight:300}.layui-field-title{margin:10px 0 20px;border:none;border-top:1px solid #e2e2e2}.layui-field-box{padding:10px 15px}.layui-field-title .layui-field-box{padding:10px 0}.layui-progress{position:relative;height:6px;border-radius:20px;background-color:#e2e2e2}.layui-progress-bar{position:absolute;width:0;max-width:100%;height:6px;border-radius:20px;text-align:right;background-color:#5FB878;transition:all .3s;-webkit-transition:all .3s}.layui-progress-big,.layui-progress-big .layui-progress-bar{height:18px;line-height:18px}.layui-progress-text{position:relative;top:-18px;line-height:18px;font-size:12px;color:#666}.layui-progress-big .layui-progress-text{position:static;padding:0 10px;color:#fff}.layui-collapse{border:1px solid #e2e2e2;border-radius:2px}.layui-colla-item{border-top:1px solid #e2e2e2}.layui-colla-item:first-child{border-top:none}.layui-colla-title{position:relative;height:42px;line-height:42px;padding:0 15px 0 35px;color:#333;background-color:#f2f2f2;cursor:pointer}.layui-colla-content{display:none;padding:10px 15px;line-height:22px;border-top:1px solid #e2e2e2;color:#666}.layui-bg-black,.layui-bg-blue,.layui-bg-cyan,.layui-bg-green,.layui-bg-orange,.layui-bg-red{color:#fff!important}.layui-colla-icon{position:absolute;left:15px;top:0;font-size:14px}.layui-bg-red{background-color:#FF5722!important}.layui-bg-orange{background-color:#FFB800!important}.layui-bg-green{background-color:#009688!important}.layui-bg-cyan{background-color:#2F4056!important}.layui-bg-blue{background-color:#1E9FFF!important}.layui-bg-black{background-color:#393D49!important}.layui-bg-gray{background-color:#eee!important;color:#666!important}.layui-text{line-height:22px;font-size:14px;color:#666}.layui-text h1,.layui-text h2,.layui-text h3{font-weight:500;color:#333}.layui-text h1{font-size:30px}.layui-text h2{font-size:24px}.layui-text h3{font-size:18px}.layui-text a{color:#01AAED}.layui-text a:hover{text-decoration:underline}.layui-text ul{padding:5px 0 5px 15px}.layui-text ul li{margin-top:5px;list-style-type:disc}.layui-text em,.layui-word-aux{color:#999!important;padding:0 5px!important}.layui-btn{display:inline-block;height:38px;line-height:38px;padding:0 18px;background-color:#009688;color:#fff;white-space:nowrap;text-align:center;font-size:14px;border:none;border-radius:2px;cursor:pointer}.layui-btn:hover{opacity:.8;filter:alpha(opacity=80);color:#fff}.layui-btn:active{opacity:1;filter:alpha(opacity=100)}.layui-btn+.layui-btn{margin-left:10px}.layui-btn-radius{border-radius:100px}.layui-btn .layui-icon{margin-right:3px;font-size:18px;vertical-align:bottom;vertical-align:middle\9}.layui-btn-primary{border:1px solid #C9C9C9;background-color:#fff;color:#555}.layui-btn-primary:hover{border-color:#009688;color:#333}.layui-btn-normal{background-color:#1E9FFF}.layui-btn-warm{background-color:#FFB800}.layui-btn-danger{background-color:#FF5722}.layui-btn-disabled,.layui-btn-disabled:active,.layui-btn-disabled:hover{border:1px solid #e6e6e6;background-color:#FBFBFB;color:#C9C9C9;cursor:not-allowed;opacity:1}.layui-btn-big{height:44px;line-height:44px;padding:0 25px;font-size:16px}.layui-btn-small{height:30px;line-height:30px;padding:0 10px;font-size:12px}.layui-btn-small i{font-size:16px!important}.layui-btn-mini{height:22px;line-height:22px;padding:0 5px;font-size:12px}.layui-btn-mini i{font-size:14px!important}.layui-btn-group{display:inline-block;vertical-align:middle;font-size:0}.layui-btn-group .layui-btn{margin-left:0!important;margin-right:0!important;border-left:1px solid rgba(255,255,255,.5);border-radius:0}.layui-btn-group .layui-btn-primary{border-left:none}.layui-btn-group .layui-btn-primary:hover{border-color:#C9C9C9;color:#009688}.layui-btn-group .layui-btn:first-child{border-left:none;border-radius:2px 0 0 2px}.layui-btn-group .layui-btn-primary:first-child{border-left:1px solid #c9c9c9}.layui-btn-group .layui-btn:last-child{border-radius:0 2px 2px 0}.layui-btn-group .layui-btn+.layui-btn{margin-left:0}.layui-btn-group+.layui-btn-group{margin-left:10px}.layui-input,.layui-select,.layui-textarea{height:38px;line-height:1.3;line-height:38px\9;border:1px solid #e6e6e6;background-color:#fff;border-radius:2px}.layui-input::-webkit-input-placeholder,.layui-select::-webkit-input-placeholder,.layui-textarea::-webkit-input-placeholder{line-height:1.3}.layui-form-label,.layui-form-mid,.layui-textarea{line-height:20px;position:relative}.layui-input,.layui-textarea{display:block;width:100%;padding-left:10px}.layui-input:hover,.layui-textarea:hover{border-color:#D2D2D2!important}.layui-input:focus,.layui-textarea:focus{border-color:#C9C9C9!important}.layui-textarea{min-height:100px;height:auto;padding:6px 10px;resize:vertical}.layui-select{padding:0 10px}.layui-form input[type=checkbox],.layui-form input[type=radio],.layui-form select{display:none}.layui-form-item{margin-bottom:15px;clear:both;*zoom:1}.layui-form-item:after{content:'\20';clear:both;*zoom:1;display:block;height:0}.layui-form-label{float:left;display:block;padding:9px 15px;width:80px;font-weight:400;text-align:right}.layui-form-item .layui-inline{margin-bottom:5px;margin-right:10px}.layui-input-block,.layui-input-inline{position:relative}.layui-input-block{margin-left:110px;min-height:36px}.layui-input-inline{display:inline-block;vertical-align:middle}.layui-form-item .layui-input-inline{float:left;width:190px;margin-right:10px}.layui-form-text .layui-input-inline{width:auto}.layui-form-mid{float:left;display:block;padding:8px 0!important;margin-right:10px}.layui-form-danger+.layui-form-select .layui-input,.layui-form-danger:focus{border:1px solid #FF5722!important}.layui-form-select{position:relative}.layui-form-select .layui-input{padding-right:30px;cursor:pointer}.layui-form-select .layui-edge{position:absolute;right:10px;top:50%;margin-top:-3px;cursor:pointer;border-width:6px;border-top-color:#c2c2c2;border-top-style:solid;transition:all .3s;-webkit-transition:all .3s}.layui-form-select dl{display:none;position:absolute;left:0;top:42px;padding:5px 0;z-index:999;min-width:100%;border:1px solid #d2d2d2;max-height:300px;overflow-y:auto;background-color:#fff;border-radius:2px;box-shadow:0 2px 4px rgba(0,0,0,.12);box-sizing:border-box}.layui-form-select dl dd,.layui-form-select dl dt{padding:0 10px;line-height:36px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layui-form-select dl dt{font-size:12px;color:#999}.layui-form-select dl dd{cursor:pointer}.layui-form-select dl dd:hover{background-color:#f2f2f2}.layui-form-select .layui-select-group dd{padding-left:20px}.layui-form-select dl dd.layui-select-tips{padding-left:10px!important;color:#999}.layui-form-select dl dd.layui-this{background-color:#5FB878;color:#fff}.layui-form-checkbox,.layui-form-select dl dd.layui-disabled{background-color:#fff}.layui-form-selected dl{display:block}.layui-form-checkbox,.layui-form-checkbox *,.layui-form-radio,.layui-form-radio *,.layui-form-switch{display:inline-block;vertical-align:middle}.layui-form-selected .layui-edge{margin-top:-9px;-webkit-transform:rotate(180deg);transform:rotate(180deg);margin-top:-3px\9}:root .layui-form-selected .layui-edge{margin-top:-9px\0/IE9}.layui-form-selectup dl{top:auto;bottom:42px}.layui-select-none{margin:5px 0;text-align:center;color:#999}.layui-select-disabled .layui-disabled{border-color:#eee!important}.layui-select-disabled .layui-edge{border-top-color:#d2d2d2}.layui-form-checkbox{position:relative;height:30px;line-height:28px;margin-right:10px;padding-right:30px;border:1px solid #d2d2d2;cursor:pointer;font-size:0;border-radius:2px;-webkit-transition:.1s linear;transition:.1s linear;box-sizing:border-box}.layui-form-checkbox:hover{border:1px solid #c2c2c2}.layui-form-checkbox span{padding:0 10px;height:100%;font-size:14px;background-color:#d2d2d2;color:#fff;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.layui-form-checkbox:hover span{background-color:#c2c2c2}.layui-form-checkbox i{position:absolute;right:0;width:30px;color:#fff;font-size:20px;text-align:center}.layui-form-checkbox:hover i{color:#c2c2c2}.layui-form-checked,.layui-form-checked:hover{border-color:#5FB878}.layui-form-checked span,.layui-form-checked:hover span{background-color:#5FB878}.layui-form-checked i,.layui-form-checked:hover i{color:#5FB878}.layui-form-item .layui-form-checkbox{margin-top:4px}.layui-form-checkbox[lay-skin=primary]{height:auto!important;line-height:normal!important;border:none!important;margin-right:0;padding-right:0;background:0 0}.layui-form-checkbox[lay-skin=primary] span{float:right;padding-right:15px;line-height:18px;background:0 0;color:#666}.layui-form-checkbox[lay-skin=primary] i{position:relative;top:0;width:16px;height:16px;line-height:16px;border:1px solid #d2d2d2;font-size:12px;border-radius:2px;background-color:#fff;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-checkbox[lay-skin=primary]:hover i{border-color:#5FB878;color:#fff}.layui-form-checked[lay-skin=primary] i{border-color:#5FB878;background-color:#5FB878;color:#fff}.layui-checkbox-disbaled[lay-skin=primary] span{background:0 0!important}.layui-checkbox-disbaled[lay-skin=primary]:hover i{border-color:#d2d2d2}.layui-form-item .layui-form-checkbox[lay-skin=primary]{margin-top:10px}.layui-form-switch{position:relative;height:22px;line-height:22px;width:42px;padding:0 5px;margin-top:8px;border:1px solid #d2d2d2;border-radius:20px;cursor:pointer;background-color:#fff;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-switch i{position:absolute;left:5px;top:3px;width:16px;height:16px;border-radius:20px;background-color:#d2d2d2;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-switch em{position:absolute;right:5px;top:0;width:25px;padding:0!important;text-align:center!important;color:#999!important;font-style:normal!important;font-size:12px}.layui-form-onswitch{border-color:#5FB878;background-color:#5FB878}.layui-form-onswitch i{left:32px;background-color:#fff}.layui-form-onswitch em{left:5px;right:auto;color:#fff!important}.layui-checkbox-disbaled{border-color:#e2e2e2!important}.layui-checkbox-disbaled span{background-color:#e2e2e2!important}.layui-checkbox-disbaled:hover i{color:#fff!important}.layui-form-radio{line-height:28px;margin:6px 10px 0 0;padding-right:10px;cursor:pointer;font-size:0}.layui-form-radio i{margin-right:8px;font-size:22px;color:#c2c2c2}.layui-form-radio span{font-size:14px}.layui-form-radio i:hover,.layui-form-radioed i{color:#5FB878}.layui-radio-disbaled i{color:#e2e2e2!important}.layui-form-pane .layui-form-label{width:110px;padding:8px 15px;height:38px;line-height:20px;border:1px solid #e6e6e6;border-radius:2px 0 0 2px;text-align:center;background-color:#FBFBFB;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;box-sizing:border-box}.layui-form-pane .layui-input-inline{margin-left:-1px}.layui-form-pane .layui-input-block{margin-left:110px;left:-1px}.layui-form-pane .layui-input{border-radius:0 2px 2px 0}.layui-form-pane .layui-form-text .layui-form-label{float:none;width:100%;border-right:1px solid #e6e6e6;border-radius:2px;box-sizing:border-box;text-align:left}.layui-form-pane .layui-form-text .layui-input-inline{display:block;margin:0;top:-1px;clear:both}.layui-form-pane .layui-form-text .layui-input-block{margin:0;left:0;top:-1px}.layui-form-pane .layui-form-text .layui-textarea{min-height:100px;border-radius:0 0 2px 2px}.layui-form-pane .layui-form-checkbox{margin:4px 0 4px 10px}.layui-form-pane .layui-form-radio,.layui-form-pane .layui-form-switch{margin-top:6px;margin-left:10px}.layui-form-pane .layui-form-item[pane]{position:relative;border:1px solid #e6e6e6}.layui-form-pane .layui-form-item[pane] .layui-form-label{position:absolute;left:0;top:0;height:100%;border-width:0 1px 0 0}.layui-form-pane .layui-form-item[pane] .layui-input-inline{margin-left:110px}@media screen and (max-width:450px){.layui-form-item .layui-form-label{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-form-item .layui-inline{display:block;margin-right:0;margin-bottom:20px;clear:both}.layui-form-item .layui-inline:after{content:'\20';clear:both;display:block;height:0}.layui-form-item .layui-input-inline{display:block;float:none;left:-3px;width:auto;margin:0 0 10px 112px}.layui-form-item .layui-input-inline+.layui-form-mid{margin-left:110px;top:-5px;padding:0}.layui-form-item .layui-form-checkbox{margin-right:5px;margin-bottom:5px}}.layui-layedit{border:1px solid #d2d2d2;border-radius:2px}.layui-layedit-tool{padding:3px 5px;border-bottom:1px solid #e2e2e2;font-size:0}.layedit-tool-fixed{position:fixed;top:0;border-top:1px solid #e2e2e2}.layui-layedit-tool .layedit-tool-mid,.layui-layedit-tool .layui-icon{display:inline-block;vertical-align:middle;text-align:center;font-size:14px}.layui-layedit-tool .layui-icon{position:relative;width:32px;height:30px;line-height:30px;margin:3px 5px;color:#777;cursor:pointer;border-radius:2px}.layui-layedit-tool .layui-icon:hover{color:#393D49}.layui-layedit-tool .layui-icon:active{color:#000}.layui-layedit-tool .layedit-tool-active{background-color:#e2e2e2;color:#000}.layui-layedit-tool .layui-disabled,.layui-layedit-tool .layui-disabled:hover{color:#d2d2d2;cursor:not-allowed}.layui-layedit-tool .layedit-tool-mid{width:1px;height:18px;margin:0 10px;background-color:#d2d2d2}.layedit-tool-html{width:50px!important;font-size:30px!important}.layedit-tool-b,.layedit-tool-code,.layedit-tool-help{font-size:16px!important}.layedit-tool-d,.layedit-tool-face,.layedit-tool-image,.layedit-tool-unlink{font-size:18px!important}.layedit-tool-image input{position:absolute;font-size:0;left:0;top:0;width:100%;height:100%;opacity:.01;filter:Alpha(opacity=1);cursor:pointer}.layui-layedit-iframe iframe{display:block;width:100%}#LAY_layedit_code{overflow:hidden}.layui-laypage{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;margin:10px 0;font-size:0}.layui-laypage>a:first-child,.layui-laypage>a:first-child em{border-radius:2px 0 0 2px}.layui-laypage>a:last-child,.layui-laypage>a:last-child em{border-radius:0 2px 2px 0}.layui-laypage>:first-child{margin-left:0!important}.layui-laypage>:last-child{margin-right:0!important}.layui-laypage a,.layui-laypage button,.layui-laypage input,.layui-laypage select,.layui-laypage span{border:1px solid #e2e2e2}.layui-laypage a,.layui-laypage span{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding:0 15px;height:28px;line-height:28px;margin:0 -1px 5px 0;background-color:#fff;color:#333;font-size:12px}.layui-laypage a:hover{color:#009688}.layui-laypage em{font-style:normal}.layui-laypage .layui-laypage-spr{color:#999;font-weight:700}.layui-laypage a{text-decoration:none}.layui-laypage .layui-laypage-curr{position:relative}.layui-laypage .layui-laypage-curr em{position:relative;color:#fff}.layui-laypage .layui-laypage-curr .layui-laypage-em{position:absolute;left:-1px;top:-1px;padding:1px;width:100%;height:100%;background-color:#009688}.layui-laypage-em{border-radius:2px}.layui-laypage-next em,.layui-laypage-prev em{font-family:Sim sun;font-size:16px}.layui-laypage .layui-laypage-count,.layui-laypage .layui-laypage-limits,.layui-laypage .layui-laypage-skip{margin-left:10px;margin-right:10px;padding:0;border:none}.layui-laypage .layui-laypage-limits{vertical-align:top}.layui-laypage select{height:22px;padding:3px;border-radius:2px;cursor:pointer}.layui-laypage .layui-laypage-skip{height:30px;line-height:30px;color:#999}.layui-laypage button,.layui-laypage input{height:30px;line-height:30px;border:1px solid #e2e2e2;border-radius:2px;vertical-align:top;background-color:#fff;box-sizing:border-box}.layui-laypage input{display:inline-block;width:40px;margin:0 10px;padding:0 3px;text-align:center}.layui-laypage input:focus,.layui-laypage select:focus{border-color:#009688!important}.layui-laypage button{margin-left:10px;padding:0 10px;cursor:pointer}.layui-flow-more{margin:10px 0;text-align:center;color:#999;font-size:14px}.layui-flow-more a{height:32px;line-height:32px}.layui-flow-more a *{display:inline-block;vertical-align:top}.layui-flow-more a cite{padding:0 20px;border-radius:3px;background-color:#eee;color:#333;font-style:normal}.layui-flow-more a cite:hover{opacity:.8}.layui-flow-more a i{font-size:30px;color:#737383}.layui-table{width:100%;margin:10px 0;background-color:#fff}.layui-table tr{transition:all .3s;-webkit-transition:all .3s}.layui-table thead tr,.layui-table-fixed-l tr,.layui-table-header,.layui-table-mend,.layui-table-patch,.layui-table-tool{background-color:#f2f2f2}.layui-table th{text-align:left;font-weight:400}.layui-table td,.layui-table th,.layui-table-header,.layui-table-tool,.layui-table-view,.layui-table[lay-skin=row],.layui-table[lay-skin=line]{border:1px solid #e2e2e2}.layui-table td,.layui-table th{position:relative;padding:9px 15px;min-height:20px;line-height:20px;font-size:14px}.layui-table[lay-even] tr:nth-child(even){background-color:#f8f8f8}.layui-table tbody tr:hover,.layui-table-hover{background-color:#f2f2f2!important}.layui-table-click{background-color:#FFEEE8!important}.layui-table[lay-skin=line] td,.layui-table[lay-skin=line] th{border-width:0 0 1px}.layui-table[lay-skin=row] td,.layui-table[lay-skin=row] th{border-width:0 1px 0 0}.layui-table[lay-skin=nob] td,.layui-table[lay-skin=nob] th{border:none}.layui-table img{max-width:100px}.layui-table[lay-size=lg] td,.layui-table[lay-size=lg] th{padding:15px 30px}.layui-table-view .layui-table[lay-size=lg] .layui-table-cell{height:40px;line-height:40px}.layui-table[lay-size=sm] td,.layui-table[lay-size=sm] th{font-size:12px;padding:5px 10px}.layui-table-view .layui-table[lay-size=sm] .layui-table-cell{height:20px;line-height:20px}.layui-table[lay-data]{display:none}.layui-table-view{position:relative;margin:10px 0;overflow:hidden}.layui-table-view .layui-table{position:relative;width:auto;margin:0}.layui-table-body,.layui-table-header .layui-table,.layui-table-tool{margin-bottom:-1px}.layui-table-view .layui-table[lay-skin=line]{border-width:0 1px 0 0}.layui-table-view .layui-table[lay-skin=row]{border-width:0 0 1px}.layui-table-view .layui-table td,.layui-table-view .layui-table th{padding:5px 0;border-top:none;border-left:none}.layui-table-view .layui-table td{cursor:default}.layui-table-view .layui-form-checkbox[lay-skin=primary] i{width:18px;height:18px}.layui-table-header{border-width:0 0 1px;overflow:hidden}.layui-table-sort{width:20px;height:20px;margin-left:5px;cursor:pointer!important}.layui-table-sort .layui-edge{left:5px;border-width:5px}.layui-table-sort .layui-table-sort-asc{top:4px;border-top:none;border-bottom-style:solid;border-bottom-color:#b2b2b2}.layui-table-sort .layui-table-sort-asc:hover{border-bottom-color:#666}.layui-table-sort .layui-table-sort-desc{bottom:4px;border-bottom:none;border-top-style:solid;border-top-color:#b2b2b2}.layui-table-sort .layui-table-sort-desc:hover{border-top-color:#666}.layui-table-sort[lay-sort=asc] .layui-table-sort-asc{border-bottom-color:#000}.layui-table-sort[lay-sort=desc] .layui-table-sort-desc{border-top-color:#000}.layui-table-cell{height:28px;line-height:28px;padding:0 15px;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;box-sizing:border-box}.layui-table-cell .layui-form-checkbox{top:-1px}.layui-table-cell .layui-table-link{color:#01AAED}.laytable-cell-space{width:15px;padding:0;text-align:center}.layui-table-body{position:relative;overflow:auto;margin-right:-1px}.layui-table-body .layui-none{line-height:40px;text-align:center;color:#999}.layui-table-fixed{position:absolute;left:0;top:0}.layui-table-fixed .layui-table-body{overflow:hidden}.layui-table-fixed-r{left:auto;right:-1px;border-left:1px solid #e2e2e2;box-shadow:-1px 0 8px rgba(0,0,0,.1)}.layui-table-fixed-r .layui-table-header{position:relative;overflow:visible}.layui-table-mend{position:absolute;right:-49px;top:0;height:100%;width:50px}.layui-table-tool{position:relative;width:100%;padding:7px 10px 0 0;border-width:1px 0 0;height:41px;font-size:12px;white-space:nowrap}.layui-table-tool:hover{overflow-x:auto}.layui-table-page{height:26px}.layui-table-tool .layui-laypage{margin:0}.layui-table-tool .layui-laypage a,.layui-table-tool .layui-laypage span{height:26px;line-height:26px;border:none;background:0 0;padding:0 12px}.layui-table-tool .layui-laypage .layui-laypage-count,.layui-table-tool .layui-laypage .layui-laypage-limits,.layui-table-tool .layui-laypage .layui-laypage-skip{margin-left:0;padding:0}.layui-table-tool .layui-laypage .layui-laypage-total{padding:0 10px}.layui-table-tool .layui-laypage .layui-laypage-spr{padding:0}.layui-table-tool .layui-laypage button,.layui-table-tool .layui-laypage input{height:26px;line-height:26px}.layui-table-tool .layui-laypage input{width:40px}.layui-table-tool .layui-laypage button{padding:0 10px}.layui-table-view select[lay-ignore]{display:inline-block}.layui-table-tool select{height:18px}.layui-table-patch .layui-table-cell{padding:0;width:30px}.layui-table-edit{position:absolute;left:0;top:0;width:100%;height:100%;padding:0 15px 1px;border:none}.layui-table-edit:focus{background-color:#F0F9F2}body .layui-table-tips .layui-layer-content{background:0 0;padding:0;box-shadow:0 1px 6px rgba(0,0,0,.1)}.layui-table-tips-main{margin:-44px 0 0 -1px;max-height:150px;padding:8px 15px;font-size:14px;overflow-y:scroll;background-color:#fff;color:#333;border:1px solid #e2e2e2}.layui-code,.layui-upload-list{margin:10px 0}.layui-table-tips-c{position:absolute;right:-3px;top:-12px;width:18px;height:18px;padding:3px;text-align:center;font-weight:700;border-radius:100%;font-size:14px;cursor:pointer;background-color:#666}.layui-table-tips-c:hover{background-color:#999}.layui-upload-file{display:none!important;opacity:.01;filter:Alpha(opacity=1)}.layui-upload-drag,.layui-upload-form,.layui-upload-wrap{display:inline-block}.layui-upload-choose{padding:0 10px;color:#999}.layui-upload-drag{position:relative;padding:30px;border:1px dashed #e2e2e2;background-color:#fff;text-align:center;cursor:pointer;color:#999}.layui-upload-drag .layui-icon{font-size:50px;color:#009688}.layui-upload-drag[lay-over]{border-color:#009688}.layui-upload-iframe{position:absolute;width:0;height:0;border:0;visibility:hidden}.layui-upload-wrap{position:relative;vertical-align:middle}.layui-upload-wrap .layui-upload-file{display:block!important;position:absolute;left:0;top:0;z-index:10;font-size:100px;width:100%;height:100%;opacity:.01;filter:Alpha(opacity=1);cursor:pointer}.layui-code{position:relative;padding:15px;line-height:20px;border:1px solid #ddd;border-left-width:6px;background-color:#F2F2F2;color:#333;font-family:Courier New;font-size:12px}.layui-tree{line-height:26px}.layui-tree li{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-tree li .layui-tree-spread,.layui-tree li a{display:inline-block;vertical-align:top;height:26px;*display:inline;*zoom:1;cursor:pointer}.layui-tree li a{font-size:0}.layui-tree li a i{font-size:16px}.layui-tree li a cite{padding:0 6px;font-size:14px;font-style:normal}.layui-tree li i{padding-left:6px;color:#333;-moz-user-select:none}.layui-tree li .layui-tree-check{font-size:13px}.layui-tree li .layui-tree-check:hover{color:#009E94}.layui-tree li ul{display:none;margin-left:20px}.layui-tree li .layui-tree-enter{line-height:24px;border:1px dotted #000}.layui-tree-drag{display:none;position:absolute;left:-666px;top:-666px;background-color:#f2f2f2;padding:5px 10px;border:1px dotted #000;white-space:nowrap}.layui-tree-drag i{padding-right:5px}.layui-nav{position:relative;padding:0 20px;background-color:#393D49;color:#fff;border-radius:2px;font-size:0;box-sizing:border-box}.layui-nav *{font-size:14px}.layui-nav .layui-nav-item{position:relative;display:inline-block;*display:inline;*zoom:1;vertical-align:middle;line-height:60px}.layui-nav .layui-nav-item a{display:block;padding:0 20px;color:#fff;color:rgba(255,255,255,.7);transition:all .3s;-webkit-transition:all .3s}.layui-nav .layui-this:after,.layui-nav-bar,.layui-nav-tree .layui-nav-itemed:after{position:absolute;left:0;top:0;width:0;height:5px;background-color:#5FB878;transition:all .2s;-webkit-transition:all .2s}.layui-nav-bar{z-index:1000}.layui-nav .layui-nav-item a:hover,.layui-nav .layui-this a{color:#fff}.layui-nav .layui-this:after{content:'';top:auto;bottom:0;width:100%}.layui-nav-img{width:30px;height:30px;margin-right:10px;border-radius:50%}.layui-nav .layui-nav-more{content:'';width:0;height:0;border-style:solid dashed dashed;border-color:#fff transparent transparent;overflow:hidden;cursor:pointer;transition:all .2s;-webkit-transition:all .2s;position:absolute;top:28px;right:3px;border-width:6px;border-top-color:rgba(255,255,255,.7)}.layui-nav .layui-nav-mored,.layui-nav-itemed .layui-nav-more{top:22px;border-style:dashed dashed solid;border-color:transparent transparent #fff}.layui-nav-child{display:none;position:absolute;left:0;top:65px;min-width:100%;line-height:36px;padding:5px 0;box-shadow:0 2px 4px rgba(0,0,0,.12);border:1px solid #d2d2d2;background-color:#fff;z-index:100;border-radius:2px;white-space:nowrap}.layui-nav .layui-nav-child a{color:#333}.layui-nav .layui-nav-child a:hover{background-color:#f2f2f2;color:#000}.layui-nav-child dd{position:relative}.layui-nav .layui-nav-child dd.layui-this a,.layui-nav-child dd.layui-this{background-color:#5FB878;color:#fff}.layui-nav-child dd.layui-this:after{display:none}.layui-nav-tree{width:200px;padding:0}.layui-nav-tree .layui-nav-item{display:block;width:100%;line-height:45px}.layui-nav-tree .layui-nav-item a{height:45px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-nav-tree .layui-nav-item a:hover{background-color:#4E5465}.layui-nav-tree .layui-nav-bar{width:5px;height:0;background-color:#009688}.layui-nav-tree .layui-nav-child dd.layui-this,.layui-nav-tree .layui-nav-child dd.layui-this a,.layui-nav-tree .layui-this,.layui-nav-tree .layui-this>a,.layui-nav-tree .layui-this>a:hover{background-color:#009688;color:#fff}.layui-nav-tree .layui-this:after{display:none}.layui-nav-itemed>a,.layui-nav-tree .layui-nav-title a,.layui-nav-tree .layui-nav-title a:hover{color:#fff!important}.layui-nav-tree .layui-nav-child{position:relative;z-index:0;top:0;border:none;box-shadow:none}.layui-nav-tree .layui-nav-child a{height:40px;line-height:40px;color:#fff;color:rgba(255,255,255,.7)}.layui-nav-tree .layui-nav-child,.layui-nav-tree .layui-nav-child a:hover{background:0 0;color:#fff}.layui-nav-tree .layui-nav-more{top:20px;right:10px}.layui-nav-itemed .layui-nav-more{top:14px}.layui-nav-itemed .layui-nav-child{display:block;padding:0;background-color:rgba(0,0,0,.3)!important}.layui-nav-side{position:fixed;top:0;bottom:0;left:0;overflow-x:hidden;z-index:999}.layui-bg-blue .layui-nav-bar,.layui-bg-blue .layui-nav-itemed:after,.layui-bg-blue .layui-this:after{background-color:#93D1FF}.layui-bg-blue .layui-nav-child dd.layui-this{background-color:#1E9FFF}.layui-bg-blue .layui-nav-itemed>a,.layui-nav-tree.layui-bg-blue .layui-nav-title a,.layui-nav-tree.layui-bg-blue .layui-nav-title a:hover{background-color:#007DDB!important}.layui-breadcrumb{visibility:hidden;font-size:0}.layui-breadcrumb a{padding-right:8px;line-height:22px;font-size:14px;color:#333!important}.layui-breadcrumb a:hover{color:#01AAED!important}.layui-breadcrumb a cite,.layui-breadcrumb a span{color:#666;cursor:text;font-style:normal}.layui-breadcrumb a span{padding-left:8px;font-family:Sim sun}.layui-tab{margin:10px 0;text-align:left!important}.layui-tab[overflow]>.layui-tab-title{overflow:hidden}.layui-tab-title{position:relative;left:0;height:40px;white-space:nowrap;font-size:0;border-bottom:1px solid #e2e2e2;transition:all .2s;-webkit-transition:all .2s}.layui-tab-title li{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;font-size:14px;transition:all .2s;-webkit-transition:all .2s;position:relative;line-height:40px;min-width:65px;padding:0 15px;text-align:center;cursor:pointer}.layui-tab-title li a{display:block}.layui-tab-title .layui-this{color:#000}.layui-tab-title .layui-this:after{position:absolute;left:0;top:0;content:'';width:100%;height:41px;border:1px solid #e2e2e2;border-bottom-color:#fff;border-radius:2px 2px 0 0;box-sizing:border-box;pointer-events:none}.layui-tab-bar{position:absolute;right:0;top:0;z-index:10;width:30px;height:39px;line-height:39px;border:1px solid #e2e2e2;border-radius:2px;text-align:center;background-color:#fff;cursor:pointer}.layui-tab-bar .layui-icon{position:relative;display:inline-block;top:3px;transition:all .3s;-webkit-transition:all .3s}.layui-tab-item{display:none}.layui-tab-more{padding-right:30px;height:auto!important;white-space:normal!important}.layui-tab-more li.layui-this:after{border-bottom-color:#e2e2e2;border-radius:2px}.layui-tab-more .layui-tab-bar .layui-icon{top:-2px;top:3px\9;-webkit-transform:rotate(180deg);transform:rotate(180deg)}:root .layui-tab-more .layui-tab-bar .layui-icon{top:-2px\0/IE9}.layui-tab-content{padding:10px}.layui-tab-title li .layui-tab-close{position:relative;display:inline-block;width:18px;height:18px;line-height:20px;margin-left:8px;top:1px;text-align:center;font-size:14px;color:#c2c2c2;transition:all .2s;-webkit-transition:all .2s}.layui-tab-title li .layui-tab-close:hover{border-radius:2px;background-color:#FF5722;color:#fff}.layui-tab-brief>.layui-tab-title .layui-this{color:#009688}.layui-tab-brief>.layui-tab-more li.layui-this:after,.layui-tab-brief>.layui-tab-title .layui-this:after{border:none;border-radius:0;border-bottom:2px solid #5FB878}.layui-tab-brief[overflow]>.layui-tab-title .layui-this:after{top:-1px}.layui-tab-card{border:1px solid #e2e2e2;border-radius:2px;box-shadow:0 2px 5px 0 rgba(0,0,0,.1)}.layui-tab-card>.layui-tab-title{background-color:#f2f2f2}.layui-tab-card>.layui-tab-title li{margin-right:-1px;margin-left:-1px}.layui-tab-card>.layui-tab-title .layui-this{background-color:#fff}.layui-tab-card>.layui-tab-title .layui-this:after{border-top:none;border-width:1px;border-bottom-color:#fff}.layui-tab-card>.layui-tab-title .layui-tab-bar{height:40px;line-height:40px;border-radius:0;border-top:none;border-right:none}.layui-tab-card>.layui-tab-more .layui-this{background:0 0;color:#5FB878}.layui-tab-card>.layui-tab-more .layui-this:after{border:none}.layui-timeline{padding-left:5px}.layui-timeline-item{position:relative;padding-bottom:20px}.layui-timeline-axis{position:absolute;left:-5px;top:0;z-index:10;width:20px;height:20px;line-height:20px;background-color:#fff;color:#5FB878;border-radius:50%;text-align:center;cursor:pointer}.layui-timeline-axis:hover{color:#FF5722}.layui-timeline-item:before{content:'';position:absolute;left:5px;top:0;z-index:0;width:1px;height:100%;background-color:#e2e2e2}.layui-timeline-item:last-child:before{display:none}.layui-timeline-item:first-child:before{display:block}.layui-timeline-content{padding-left:25px}.layui-badge,.layui-badge-rim{line-height:18px;padding:0 5px}.layui-timeline-title{position:relative;margin-bottom:10px}.layui-badge,.layui-badge-dot,.layui-badge-rim{position:relative;display:inline-block;font-size:12px;background-color:#FF5722;color:#fff}.layui-badge{min-width:8px;height:18px;text-align:center;border-radius:9px}.layui-badge-dot{width:8px;height:8px;border-radius:50%}.layui-badge-rim{height:18px;border:1px solid #e2e2e2;border-radius:3px;background-color:#fff;color:#666}.layui-btn .layui-badge,.layui-btn .layui-badge-dot{margin-left:5px}.layui-nav .layui-badge,.layui-nav .layui-badge-dot{position:absolute;top:50%;margin:-10px 6px 0}.layui-tab-title .layui-badge,.layui-tab-title .layui-badge-dot{left:5px;top:-2px}.layui-carousel{position:relative;left:0;top:0;background-color:#f2f2f2}.layui-carousel>[carousel-item]{position:relative;width:100%;height:100%;overflow:hidden}.layui-carousel>[carousel-item]:before{position:absolute;content:'\e63d';left:50%;top:50%;width:100px;line-height:20px;margin:-10px 0 0 -50px;text-align:center;color:#999;font-family:layui-icon!important;font-size:20px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-carousel>[carousel-item]>*{display:none;position:absolute;left:0;top:0;width:100%;height:100%;background-color:#f2f2f2;transition-duration:.3s;-webkit-transition-duration:.3s}.layui-carousel-updown>*{-webkit-transition:.3s ease-in-out up;transition:.3s ease-in-out up}.layui-carousel-arrow{display:none\9;opacity:0;position:absolute;left:10px;top:50%;margin-top:-18px;width:36px;height:36px;line-height:36px;text-align:center;font-size:20px;border:0;border-radius:50%;background-color:rgba(0,0,0,.2);color:#fff;-webkit-transition-duration:.3s;transition-duration:.3s;cursor:pointer}.layui-carousel-arrow[lay-type=add]{left:auto!important;right:10px}.layui-carousel:hover .layui-carousel-arrow[lay-type=add],.layui-carousel[lay-arrow=always] .layui-carousel-arrow[lay-type=add]{right:20px}.layui-carousel[lay-arrow=always] .layui-carousel-arrow{opacity:1;left:20px}.layui-carousel[lay-arrow=none] .layui-carousel-arrow{display:none}.layui-carousel-arrow:hover,.layui-carousel-ind ul:hover{background-color:rgba(0,0,0,.35)}.layui-carousel:hover .layui-carousel-arrow{display:block\9;opacity:1;left:20px}.layui-carousel-ind{position:relative;top:-35px;width:100%;line-height:0!important;text-align:center;font-size:0}.layui-carousel[lay-indicator=outside]{margin-bottom:30px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind{top:10px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind ul{background-color:rgba(0,0,0,.5)}.layui-carousel[lay-indicator=none] .layui-carousel-ind{display:none}.layui-carousel-ind ul{display:inline-block;padding:5px;background-color:rgba(0,0,0,.2);border-radius:10px;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind li{display:inline-block;width:10px;height:10px;margin:0 3px;font-size:14px;background-color:#e2e2e2;background-color:rgba(255,255,255,.5);border-radius:50%;cursor:pointer;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind li:hover{background-color:rgba(255,255,255,.7)}.layui-carousel-ind li.layui-this{background-color:#fff}.layui-carousel>[carousel-item]>.layui-carousel-next,.layui-carousel>[carousel-item]>.layui-carousel-prev,.layui-carousel>[carousel-item]>.layui-this{display:block}.layui-carousel>[carousel-item]>.layui-this{left:0}.layui-carousel>[carousel-item]>.layui-carousel-prev{left:-100%}.layui-carousel>[carousel-item]>.layui-carousel-next{left:100%}.layui-carousel>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel>[carousel-item]>.layui-carousel-prev.layui-carousel-right{left:0}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-left{left:-100%}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-right{left:100%}.layui-carousel[lay-anim=updown] .layui-carousel-arrow{left:50%!important;top:20px;margin:0 0 0 -18px}.layui-carousel[lay-anim=updown]>[carousel-item]>*,.layui-carousel[lay-anim=fade]>[carousel-item]>*{left:0!important}.layui-carousel[lay-anim=updown] .layui-carousel-arrow[lay-type=add]{top:auto!important;bottom:20px}.layui-carousel[lay-anim=updown] .layui-carousel-ind{position:absolute;top:50%;right:20px;width:auto;height:auto}.layui-carousel[lay-anim=updown] .layui-carousel-ind ul{padding:3px 5px}.layui-carousel[lay-anim=updown] .layui-carousel-ind li{display:block;margin:6px 0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next{top:100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-left{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-right{top:100%}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev{opacity:0}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{opacity:1}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-right{opacity:0}.layui-fixbar{position:fixed;right:15px;bottom:15px;z-index:9999}.layui-fixbar li{width:50px;height:50px;line-height:50px;margin-bottom:1px;text-align:center;cursor:pointer;font-size:30px;background-color:#9F9F9F;color:#fff;border-radius:2px;opacity:.95}.layui-fixbar li:hover{opacity:.85}.layui-fixbar li:active{opacity:1}.layui-fixbar .layui-fixbar-top{display:none;font-size:40px}body .layui-util-face{border:none;background:0 0}body .layui-util-face .layui-layer-content{padding:0;background-color:#fff;color:#666;box-shadow:none}.layui-util-face .layui-layer-TipsG{display:none}.layui-util-face ul{position:relative;width:372px;padding:10px;border:1px solid #D9D9D9;background-color:#fff;box-shadow:0 0 20px rgba(0,0,0,.2)}.layui-util-face ul li{cursor:pointer;float:left;border:1px solid #e8e8e8;height:22px;width:26px;overflow:hidden;margin:-1px 0 0 -1px;padding:4px 2px;text-align:center}.layui-util-face ul li:hover{position:relative;z-index:2;border:1px solid #eb7350;background:#fff9ec}.layui-anim{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.layui-anim.layui-icon{display:inline-block}.layui-anim-loop{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}@-webkit-keyframes layui-rotate{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@keyframes layui-rotate{from{transform:rotate(0)}to{transform:rotate(360deg)}}.layui-anim-rotate{-webkit-animation-name:layui-rotate;animation-name:layui-rotate;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-timing-function:linear;animation-timing-function:linear}@-webkit-keyframes layui-up{from{-webkit-transform:translate3d(0,100%,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes layui-up{from{transform:translate3d(0,100%,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-anim-up{-webkit-animation-name:layui-up;animation-name:layui-up}@-webkit-keyframes layui-upbit{from{-webkit-transform:translate3d(0,30px,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes layui-upbit{from{transform:translate3d(0,30px,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-anim-upbit{-webkit-animation-name:layui-upbit;animation-name:layui-upbit}@-webkit-keyframes layui-scale{0%{opacity:.3;-webkit-transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1)}}@keyframes layui-scale{0%{opacity:.3;-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-ms-transform:scale(1);transform:scale(1)}}.layui-anim-scale{-webkit-animation-name:layui-scale;animation-name:layui-scale}@-webkit-keyframes layui-scale-spring{0%{opacity:.5;-webkit-transform:scale(.5)}80%{opacity:.8;-webkit-transform:scale(1.1)}100%{opacity:1;-webkit-transform:scale(1)}}@keyframes layui-scale-spring{0%{opacity:.5;transform:scale(.5)}80%{opacity:.8;transform:scale(1.1)}100%{opacity:1;transform:scale(1)}}.layui-anim-scaleSpring{-webkit-animation-name:layui-scale-spring;animation-name:layui-scale-spring}@-webkit-keyframes layui-fadein{0%{opacity:0}100%{opacity:1}}@keyframes layui-fadein{0%{opacity:0}100%{opacity:1}}.layui-anim-fadein{-webkit-animation-name:layui-fadein;animation-name:layui-fadein}@-webkit-keyframes layui-fadeout{0%{opacity:1}100%{opacity:0}}@keyframes layui-fadeout{0%{opacity:1}100%{opacity:0}}.layui-anim-fadeout{-webkit-animation-name:layui-fadeout;animation-name:layui-fadeout}
\ No newline at end of file
diff --git a/public/layui/css/layui.mobile.css b/public/layui/css/layui.mobile.css
new file mode 100755
index 0000000..3c21633
--- /dev/null
+++ b/public/layui/css/layui.mobile.css
@@ -0,0 +1,2 @@
+/** layui-v2.1.5 MIT License By http://www.layui.com */
+ blockquote,body,button,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,input,legend,li,ol,p,td,textarea,th,ul{margin:0;padding:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}html{font:12px 'Helvetica Neue','PingFang SC',STHeitiSC-Light,Helvetica,Arial,sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}a,button,input{-webkit-tap-highlight-color:rgba(255,0,0,0)}a{text-decoration:none;background:0 0}a:active,a:hover{outline:0}table{border-collapse:collapse;border-spacing:0}li{list-style:none}b,strong{font-weight:700}h1,h2,h3,h4,h5,h6{font-weight:500}address,cite,dfn,em,var{font-style:normal}dfn{font-style:italic}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}img{border:0;vertical-align:bottom}.layui-inline,input,label{vertical-align:middle}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0;outline:0}button,select{text-transform:none}select{-webkit-appearance:none;border:none}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}@font-face{font-family:layui-icon;src:url(../font/iconfont.eot?v=1.0.7);src:url(../font/iconfont.eot?v=1.0.7#iefix) format('embedded-opentype'),url(../font/iconfont.woff?v=1.0.7) format('woff'),url(../font/iconfont.ttf?v=1.0.7) format('truetype'),url(../font/iconfont.svg?v=1.0.7#iconfont) format('svg')}.layui-icon{font-family:layui-icon!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-box,.layui-box *{-webkit-box-sizing:content-box!important;-moz-box-sizing:content-box!important;box-sizing:content-box!important}.layui-border-box,.layui-border-box *{-webkit-box-sizing:border-box!important;-moz-box-sizing:border-box!important;box-sizing:border-box!important}.layui-inline{position:relative;display:inline-block;*display:inline;*zoom:1}.layui-edge,.layui-upload-iframe{position:absolute;width:0;height:0}.layui-edge{border-style:dashed;border-color:transparent;overflow:hidden}.layui-elip{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-unselect{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-disabled,.layui-disabled:active{background-color:#d2d2d2!important;color:#fff!important;cursor:not-allowed!important}.layui-circle{border-radius:100%}.layui-show{display:block!important}.layui-hide{display:none!important}.layui-upload-iframe{border:0;visibility:hidden}.layui-upload-enter{border:1px solid #009E94;background-color:#009E94;color:#fff;-webkit-transform:scale(1.1);transform:scale(1.1)}@-webkit-keyframes layui-m-anim-scale{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes layui-m-anim-scale{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.layui-m-anim-scale{animation-name:layui-m-anim-scale;-webkit-animation-name:layui-m-anim-scale}@-webkit-keyframes layui-m-anim-up{0%{opacity:0;-webkit-transform:translateY(800px);transform:translateY(800px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layui-m-anim-up{0%{opacity:0;-webkit-transform:translateY(800px);transform:translateY(800px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}.layui-m-anim-up{-webkit-animation-name:layui-m-anim-up;animation-name:layui-m-anim-up}@-webkit-keyframes layui-m-anim-left{0%{-webkit-transform:translateX(100%);transform:translateX(100%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes layui-m-anim-left{0%{-webkit-transform:translateX(100%);transform:translateX(100%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}.layui-m-anim-left{-webkit-animation-name:layui-m-anim-left;animation-name:layui-m-anim-left}@-webkit-keyframes layui-m-anim-right{0%{-webkit-transform:translateX(-100%);transform:translateX(-100%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes layui-m-anim-right{0%{-webkit-transform:translateX(-100%);transform:translateX(-100%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}.layui-m-anim-right{-webkit-animation-name:layui-m-anim-right;animation-name:layui-m-anim-right}@-webkit-keyframes layui-m-anim-lout{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{-webkit-transform:translateX(-100%);transform:translateX(-100%)}}@keyframes layui-m-anim-lout{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{-webkit-transform:translateX(-100%);transform:translateX(-100%)}}.layui-m-anim-lout{-webkit-animation-name:layui-m-anim-lout;animation-name:layui-m-anim-lout}@-webkit-keyframes layui-m-anim-rout{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{-webkit-transform:translateX(100%);transform:translateX(100%)}}@keyframes layui-m-anim-rout{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{-webkit-transform:translateX(100%);transform:translateX(100%)}}.layui-m-anim-rout{-webkit-animation-name:layui-m-anim-rout;animation-name:layui-m-anim-rout}.layui-m-layer{position:relative;z-index:19891014}.layui-m-layer *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.layui-m-layermain,.layui-m-layershade{position:fixed;left:0;top:0;width:100%;height:100%}.layui-m-layershade{background-color:rgba(0,0,0,.7);pointer-events:auto}.layui-m-layermain{display:table;font-family:Helvetica,arial,sans-serif;pointer-events:none}.layui-m-layermain .layui-m-layersection{display:table-cell;vertical-align:middle;text-align:center}.layui-m-layerchild{position:relative;display:inline-block;text-align:left;background-color:#fff;font-size:14px;border-radius:5px;box-shadow:0 0 8px rgba(0,0,0,.1);pointer-events:auto;-webkit-overflow-scrolling:touch;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.2s;animation-duration:.2s}.layui-m-layer0 .layui-m-layerchild{width:90%;max-width:640px}.layui-m-layer1 .layui-m-layerchild{border:none;border-radius:0}.layui-m-layer2 .layui-m-layerchild{width:auto;max-width:260px;min-width:40px;border:none;background:0 0;box-shadow:none;color:#fff}.layui-m-layerchild h3{padding:0 10px;height:60px;line-height:60px;font-size:16px;font-weight:400;border-radius:5px 5px 0 0;text-align:center}.layui-m-layerbtn span,.layui-m-layerchild h3{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-m-layercont{padding:50px 30px;line-height:22px;text-align:center}.layui-m-layer1 .layui-m-layercont{padding:0;text-align:left}.layui-m-layer2 .layui-m-layercont{text-align:center;padding:0;line-height:0}.layui-m-layer2 .layui-m-layercont i{width:25px;height:25px;margin-left:8px;display:inline-block;background-color:#fff;border-radius:100%;-webkit-animation:layui-m-anim-loading 1.4s infinite ease-in-out;animation:layui-m-anim-loading 1.4s infinite ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}.layui-m-layerbtn,.layui-m-layerbtn span{position:relative;text-align:center;border-radius:0 0 5px 5px}.layui-m-layer2 .layui-m-layercont p{margin-top:20px}@-webkit-keyframes layui-m-anim-loading{0%,100%,80%{transform:scale(0);-webkit-transform:scale(0)}40%{transform:scale(1);-webkit-transform:scale(1)}}@keyframes layui-m-anim-loading{0%,100%,80%{transform:scale(0);-webkit-transform:scale(0)}40%{transform:scale(1);-webkit-transform:scale(1)}}.layui-m-layer2 .layui-m-layercont i:first-child{margin-left:0;-webkit-animation-delay:-.32s;animation-delay:-.32s}.layui-m-layer2 .layui-m-layercont i.layui-m-layerload{-webkit-animation-delay:-.16s;animation-delay:-.16s}.layui-m-layer2 .layui-m-layercont>div{line-height:22px;padding-top:7px;margin-bottom:20px;font-size:14px}.layui-m-layerbtn{display:box;display:-moz-box;display:-webkit-box;width:100%;height:50px;line-height:50px;font-size:0;border-top:1px solid #D0D0D0;background-color:#F2F2F2}.layui-m-layerbtn span{display:block;-moz-box-flex:1;box-flex:1;-webkit-box-flex:1;font-size:14px;cursor:pointer}.layui-m-layerbtn span[yes]{color:#40AFFE}.layui-m-layerbtn span[no]{border-right:1px solid #D0D0D0;border-radius:0 0 0 5px}.layui-m-layerbtn span:active{background-color:#F6F6F6}.layui-m-layerend{position:absolute;right:7px;top:10px;width:30px;height:30px;border:0;font-weight:400;background:0 0;cursor:pointer;-webkit-appearance:none;font-size:30px}.layui-m-layerend::after,.layui-m-layerend::before{position:absolute;left:5px;top:15px;content:'';width:18px;height:1px;background-color:#999;transform:rotate(45deg);-webkit-transform:rotate(45deg);border-radius:3px}.layui-m-layerend::after{transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}body .layui-m-layer .layui-m-layer-footer{position:fixed;width:95%;max-width:100%;margin:0 auto;left:0;right:0;bottom:10px;background:0 0}.layui-m-layer-footer .layui-m-layercont{padding:20px;border-radius:5px 5px 0 0;background-color:rgba(255,255,255,.8)}.layui-m-layer-footer .layui-m-layerbtn{display:block;height:auto;background:0 0;border-top:none}.layui-m-layer-footer .layui-m-layerbtn span{background-color:rgba(255,255,255,.8)}.layui-m-layer-footer .layui-m-layerbtn span[no]{color:#FD482C;border-top:1px solid #c2c2c2;border-radius:0 0 5px 5px}.layui-m-layer-footer .layui-m-layerbtn span[yes]{margin-top:10px;border-radius:5px}body .layui-m-layer .layui-m-layer-msg{width:auto;max-width:90%;margin:0 auto;bottom:-150px;background-color:rgba(0,0,0,.7);color:#fff}.layui-m-layer-msg .layui-m-layercont{padding:10px 20px}
\ No newline at end of file
diff --git a/public/layui/css/modules/code.css b/public/layui/css/modules/code.css
new file mode 100755
index 0000000..b8d1795
--- /dev/null
+++ b/public/layui/css/modules/code.css
@@ -0,0 +1,2 @@
+/** layui-v2.1.5 MIT License By http://www.layui.com */
+ html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-h3,.layui-code-view{position:relative;font-size:12px}.layui-code-view{display:block;margin:10px 0;padding:0;border:1px solid #e2e2e2;border-left-width:6px;background-color:#F2F2F2;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:32px;line-height:32px;border-bottom:1px solid #e2e2e2}.layui-code-h3 a{position:absolute;right:10px;top:0;color:#999}.layui-code-view .layui-code-ol{position:relative;overflow:auto}.layui-code-view .layui-code-ol li{position:relative;margin-left:45px;line-height:20px;padding:0 5px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view pre{margin:0}.layui-code-notepad{border:1px solid #0C0C0C;border-left-color:#3F3F3F;background-color:#0C0C0C;color:#C2BE9E}.layui-code-notepad .layui-code-h3{border-bottom:none}.layui-code-notepad .layui-code-ol li{background-color:#3F3F3F;border-left:none}
\ No newline at end of file
diff --git a/public/layui/css/modules/laydate/default/laydate.css b/public/layui/css/modules/laydate/default/laydate.css
new file mode 100755
index 0000000..fef46e3
--- /dev/null
+++ b/public/layui/css/modules/laydate/default/laydate.css
@@ -0,0 +1,2 @@
+/** layui-v2.1.5 MIT License By http://www.layui.com */
+ .laydate-set-ym,.layui-laydate,.layui-laydate *,.layui-laydate-list{box-sizing:border-box}html #layuicss-laydate{display:none;position:absolute;width:1989px}.layui-laydate *{margin:0;padding:0}.layui-laydate{position:absolute;z-index:66666666;margin:5px 0;border-radius:2px;font-size:14px;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-name:laydate-upbit;animation-name:laydate-upbit}.layui-laydate-main{width:272px}.layui-laydate-content td,.layui-laydate-header *,.layui-laydate-list li{transition-duration:.3s;-webkit-transition-duration:.3s}@-webkit-keyframes laydate-upbit{from{-webkit-transform:translate3d(0,20px,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes laydate-upbit{from{transform:translate3d(0,20px,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-laydate-static{position:relative;z-index:0;display:inline-block;margin:0;-webkit-animation:none;animation:none}.laydate-ym-show .laydate-next-m,.laydate-ym-show .laydate-prev-m{display:none!important}.laydate-ym-show .laydate-next-y,.laydate-ym-show .laydate-prev-y{display:inline-block!important}.laydate-time-show .laydate-set-ym span[lay-type=month],.laydate-time-show .laydate-set-ym span[lay-type=year],.laydate-time-show .layui-laydate-header .layui-icon,.laydate-ym-show .laydate-set-ym span[lay-type=month]{display:none!important}.layui-laydate-header{position:relative;line-height:30px;padding:10px 70px 5px}.laydate-set-ym span,.layui-laydate-header i{padding:0 5px;cursor:pointer}.layui-laydate-header *{display:inline-block;vertical-align:bottom}.layui-laydate-header i{position:absolute;top:10px;color:#999;font-size:18px}.layui-laydate-header i.laydate-prev-y{left:15px}.layui-laydate-header i.laydate-prev-m{left:45px}.layui-laydate-header i.laydate-next-y{right:15px}.layui-laydate-header i.laydate-next-m{right:45px}.laydate-set-ym{width:100%;text-align:center;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.laydate-time-text{cursor:default!important}.layui-laydate-content{position:relative;padding:10px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-laydate-content table{border-collapse:collapse;border-spacing:0}.layui-laydate-content td,.layui-laydate-content th{width:36px;height:30px;padding:5px;text-align:center}.layui-laydate-content td{position:relative;cursor:pointer}.laydate-day-mark{position:absolute;left:0;top:0;width:100%;height:100%;line-height:30px;font-size:12px;overflow:hidden}.laydate-day-mark::after{position:absolute;content:'';right:2px;top:2px;width:5px;height:5px;border-radius:50%}.layui-laydate-footer{position:relative;height:46px;line-height:26px;padding:10px 20px}.layui-laydate-footer span{margin-right:15px;display:inline-block;cursor:pointer;font-size:12px}.layui-laydate-footer span:hover{color:#5FB878}.laydate-footer-btns{position:absolute;right:10px;top:10px}.laydate-footer-btns span{height:26px;line-height:26px;margin:0 0 0 -1px;padding:0 10px;border:1px solid #C9C9C9;background-color:#fff;white-space:nowrap;vertical-align:top;border-radius:2px}.layui-laydate-list>li,.layui-laydate-range .layui-laydate-main{display:inline-block;vertical-align:middle}.layui-laydate-list{position:absolute;left:0;top:0;width:100%;height:100%;padding:10px;background-color:#fff}.layui-laydate-list>li{position:relative;width:33.3%;height:36px;line-height:36px;margin:3px 0;text-align:center;cursor:pointer}.laydate-month-list>li{width:25%;margin:17px 0}.laydate-time-list>li{height:100%;margin:0;line-height:normal;cursor:default}.laydate-time-list p{position:relative;top:-4px;line-height:29px}.laydate-time-list ol{height:181px;overflow:hidden}.laydate-time-list>li:hover ol{overflow-y:auto}.laydate-time-list ol li{width:130%;padding-left:33px;line-height:30px;text-align:left;cursor:pointer}.layui-laydate-hint{position:absolute;top:115px;left:50%;width:250px;margin-left:-125px;line-height:20px;padding:15px;text-align:center;font-size:12px}.layui-laydate-range{width:546px}.layui-laydate-range .laydate-main-list-0 .laydate-next-m,.layui-laydate-range .laydate-main-list-0 .laydate-next-y,.layui-laydate-range .laydate-main-list-1 .laydate-prev-m,.layui-laydate-range .laydate-main-list-1 .laydate-prev-y{display:none}.layui-laydate-range .laydate-main-list-1 .layui-laydate-content{border-left:1px solid #e2e2e2}.layui-laydate,.layui-laydate-hint{border:1px solid #d2d2d2;box-shadow:0 2px 4px rgba(0,0,0,.12);background-color:#fff;color:#666}.layui-laydate-header{border-bottom:1px solid #e2e2e2}.layui-laydate-header i:hover,.layui-laydate-header span:hover{color:#5FB878}.layui-laydate-content{border-top:none 0;border-bottom:none 0}.layui-laydate-content th{font-weight:400;color:#333}.layui-laydate-content td{color:#666}.layui-laydate-content td.laydate-selected{background-color:#00F7DE}.laydate-selected:hover{background-color:#00F7DE!important}.layui-laydate-content td:hover,.layui-laydate-list li:hover{background-color:#eaeaea;color:#333}.laydate-time-list li ol{margin:0;padding:0;border:1px solid #e2e2e2;border-left-width:0}.laydate-time-list li:first-child ol{border-left-width:1px}.laydate-time-list>li:hover{background:0 0}.layui-laydate-content .laydate-day-next,.layui-laydate-content .laydate-day-prev{color:#d2d2d2}.laydate-selected.laydate-day-next,.laydate-selected.laydate-day-prev{color:#fff!important}.layui-laydate-footer{border-top:1px solid #e2e2e2}.layui-laydate-hint{color:#FF5722}.laydate-day-mark::after{background-color:#5FB878}.layui-laydate-content td.layui-this .laydate-day-mark::after{display:none}.layui-laydate-footer span[lay-type=date]{color:#5FB878}.layui-laydate .layui-this{background-color:#009688!important;color:#fff!important}.layui-laydate .laydate-disabled,.layui-laydate .laydate-disabled:hover{background:0 0!important;color:#d2d2d2!important;cursor:not-allowed!important;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.laydate-theme-molv{border:none}.laydate-theme-molv.layui-laydate-range{width:548px}.laydate-theme-molv .layui-laydate-main{width:274px}.laydate-theme-molv .layui-laydate-header{border:none;background-color:#009688}.laydate-theme-molv .layui-laydate-header i,.laydate-theme-molv .layui-laydate-header span{color:#f6f6f6}.laydate-theme-molv .layui-laydate-header i:hover,.laydate-theme-molv .layui-laydate-header span:hover{color:#fff}.laydate-theme-molv .layui-laydate-content{border:1px solid #e2e2e2;border-top:none;border-bottom:none}.laydate-theme-molv .laydate-main-list-1 .layui-laydate-content{border-left:none}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li,.laydate-theme-grid .layui-laydate-content td,.laydate-theme-grid .layui-laydate-content thead,.laydate-theme-molv .layui-laydate-footer{border:1px solid #e2e2e2}.laydate-theme-grid .laydate-selected,.laydate-theme-grid .laydate-selected:hover{background-color:#f2f2f2!important;color:#009688!important}.laydate-theme-grid .laydate-selected.laydate-day-next,.laydate-theme-grid .laydate-selected.laydate-day-prev{color:#d2d2d2!important}.laydate-theme-grid .laydate-month-list,.laydate-theme-grid .laydate-year-list{margin:1px 0 0 1px}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li{margin:0 -1px -1px 0}.laydate-theme-grid .laydate-year-list>li{height:43px;line-height:43px}.laydate-theme-grid .laydate-month-list>li{height:71px;line-height:71px}
\ No newline at end of file
diff --git a/public/layui/css/modules/layer/default/icon-ext.png b/public/layui/css/modules/layer/default/icon-ext.png
new file mode 100755
index 0000000000000000000000000000000000000000..bbbb669bb311514baa5db3a6a00b4644d0e280f1
GIT binary patch
literal 5911
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
bWW^%>x7XlHV^#Q1uOX^B?ki3(VEg|7!QHuF
literal 0
HcmV?d00001
diff --git a/public/layui/css/modules/layer/default/loading-1.gif b/public/layui/css/modules/layer/default/loading-1.gif
new file mode 100755
index 0000000000000000000000000000000000000000..db3a483e4b74971fbfb1cc0fb6499852cedfe650
GIT binary patch
literal 701
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