├── db ├── config.js └── index.js ├── views ├── error.jade ├── account │ ├── role.jade │ ├── index.jade │ └── new.jade ├── session │ ├── layout.jade │ ├── login.jade │ └── register.jade ├── home │ └── index.jade ├── layout.jade ├── tool │ └── index.jade ├── credit │ └── index.jade ├── common │ └── navbar.jade └── email │ └── index.jade ├── public ├── javascripts │ └── layui │ │ ├── font │ │ ├── iconfont.eot │ │ ├── iconfont.ttf │ │ └── iconfont.woff │ │ ├── images │ │ └── face │ │ │ ├── 0.gif │ │ │ ├── 1.gif │ │ │ ├── 10.gif │ │ │ ├── 11.gif │ │ │ ├── 12.gif │ │ │ ├── 13.gif │ │ │ ├── 14.gif │ │ │ ├── 15.gif │ │ │ ├── 16.gif │ │ │ ├── 17.gif │ │ │ ├── 18.gif │ │ │ ├── 19.gif │ │ │ ├── 2.gif │ │ │ ├── 20.gif │ │ │ ├── 21.gif │ │ │ ├── 22.gif │ │ │ ├── 23.gif │ │ │ ├── 24.gif │ │ │ ├── 25.gif │ │ │ ├── 26.gif │ │ │ ├── 27.gif │ │ │ ├── 28.gif │ │ │ ├── 29.gif │ │ │ ├── 3.gif │ │ │ ├── 30.gif │ │ │ ├── 31.gif │ │ │ ├── 32.gif │ │ │ ├── 33.gif │ │ │ ├── 34.gif │ │ │ ├── 35.gif │ │ │ ├── 36.gif │ │ │ ├── 37.gif │ │ │ ├── 38.gif │ │ │ ├── 39.gif │ │ │ ├── 4.gif │ │ │ ├── 40.gif │ │ │ ├── 41.gif │ │ │ ├── 42.gif │ │ │ ├── 43.gif │ │ │ ├── 44.gif │ │ │ ├── 45.gif │ │ │ ├── 46.gif │ │ │ ├── 47.gif │ │ │ ├── 48.gif │ │ │ ├── 49.gif │ │ │ ├── 5.gif │ │ │ ├── 50.gif │ │ │ ├── 51.gif │ │ │ ├── 52.gif │ │ │ ├── 53.gif │ │ │ ├── 54.gif │ │ │ ├── 55.gif │ │ │ ├── 56.gif │ │ │ ├── 57.gif │ │ │ ├── 58.gif │ │ │ ├── 59.gif │ │ │ ├── 6.gif │ │ │ ├── 60.gif │ │ │ ├── 61.gif │ │ │ ├── 62.gif │ │ │ ├── 63.gif │ │ │ ├── 64.gif │ │ │ ├── 65.gif │ │ │ ├── 66.gif │ │ │ ├── 67.gif │ │ │ ├── 68.gif │ │ │ ├── 69.gif │ │ │ ├── 7.gif │ │ │ ├── 70.gif │ │ │ ├── 71.gif │ │ │ ├── 8.gif │ │ │ └── 9.gif │ │ ├── css │ │ ├── modules │ │ │ ├── layer │ │ │ │ └── default │ │ │ │ │ ├── icon.png │ │ │ │ │ ├── icon-ext.png │ │ │ │ │ ├── loading-0.gif │ │ │ │ │ ├── loading-1.gif │ │ │ │ │ ├── loading-2.gif │ │ │ │ │ └── layer.css │ │ │ ├── code.css │ │ │ └── laydate │ │ │ │ └── default │ │ │ │ └── laydate.css │ │ └── layui.mobile.css │ │ ├── lay │ │ └── modules │ │ │ ├── code.js │ │ │ ├── laytpl.js │ │ │ ├── flow.js │ │ │ ├── rate.js │ │ │ ├── tree.js │ │ │ ├── util.js │ │ │ ├── carousel.js │ │ │ ├── laypage.js │ │ │ ├── upload.js │ │ │ ├── slider.js │ │ │ ├── element.js │ │ │ ├── form.js │ │ │ ├── colorpicker.js │ │ │ ├── layedit.js │ │ │ ├── layer.js │ │ │ └── laydate.js │ │ └── layui.js └── stylesheets │ └── style.css ├── assets ├── js │ ├── common │ │ └── index.js.coffee │ ├── session │ │ ├── common.js.coffee │ │ ├── login.js.coffee │ │ └── register.js.coffee │ ├── home │ │ └── index.js.coffee │ ├── tool │ │ └── index.js.coffee │ ├── credit │ │ └── index.js.coffee │ ├── email │ │ └── index.js.coffee │ └── account │ │ ├── role.js.coffee │ │ ├── new.js.coffee │ │ └── index.js.coffee └── css │ ├── style.css.less │ ├── session │ └── style.css.less │ └── lib │ └── normalize.min.css.less ├── controller ├── DbController.js ├── EmailController.js ├── TollController.js ├── LoginController.js ├── AccountController.js ├── RegisterController.js └── CreditController.js ├── README.md ├── package.json ├── .gitignore ├── LICENSE ├── app.js ├── bin └── www └── routes └── index.js /db/config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | host: "192.168.200.131", 3 | user: "root", 4 | password: "123456" 5 | } -------------------------------------------------------------------------------- /views/error.jade: -------------------------------------------------------------------------------- 1 | extends layout 2 | 3 | block content 4 | h1= message 5 | h2= error.status 6 | pre #{error.stack} 7 | -------------------------------------------------------------------------------- /public/javascripts/layui/font/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/font/iconfont.eot -------------------------------------------------------------------------------- /public/javascripts/layui/font/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/font/iconfont.ttf -------------------------------------------------------------------------------- /public/javascripts/layui/font/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/font/iconfont.woff -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/0.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/1.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/10.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/10.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/11.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/11.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/12.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/12.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/13.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/13.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/14.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/14.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/15.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/15.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/16.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/16.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/17.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/17.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/18.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/18.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/19.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/19.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/2.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/20.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/20.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/21.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/21.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/22.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/22.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/23.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/23.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/24.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/24.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/25.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/25.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/26.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/26.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/27.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/27.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/28.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/28.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/29.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/29.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/3.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/30.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/30.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/31.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/31.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/32.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/32.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/33.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/33.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/34.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/34.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/35.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/35.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/36.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/36.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/37.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/37.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/38.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/38.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/39.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/39.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/4.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/40.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/40.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/41.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/41.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/42.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/42.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/43.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/43.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/44.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/44.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/45.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/45.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/46.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/46.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/47.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/47.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/48.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/48.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/49.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/49.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/5.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/50.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/50.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/51.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/51.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/52.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/52.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/53.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/53.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/54.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/54.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/55.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/55.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/56.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/56.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/57.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/57.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/58.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/58.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/59.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/59.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/6.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/60.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/60.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/61.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/61.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/62.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/62.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/63.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/63.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/64.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/64.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/65.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/65.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/66.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/66.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/67.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/67.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/68.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/68.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/69.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/69.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/7.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/7.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/70.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/70.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/71.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/71.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/8.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/8.gif -------------------------------------------------------------------------------- /public/javascripts/layui/images/face/9.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/images/face/9.gif -------------------------------------------------------------------------------- /assets/js/common/index.js.coffee: -------------------------------------------------------------------------------- 1 | class Common 2 | constructor: () -> 3 | @element = layui.element 4 | init: () -> 5 | @element.init() -------------------------------------------------------------------------------- /assets/js/session/common.js.coffee: -------------------------------------------------------------------------------- 1 | class Common 2 | constructor: () -> 3 | @element = layui.element 4 | init: () -> 5 | @element.init() -------------------------------------------------------------------------------- /public/stylesheets/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding: 50px; 3 | font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; 4 | } 5 | 6 | a { 7 | color: #00B7FF; 8 | } 9 | -------------------------------------------------------------------------------- /public/javascripts/layui/css/modules/layer/default/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/css/modules/layer/default/icon.png -------------------------------------------------------------------------------- /public/javascripts/layui/css/modules/layer/default/icon-ext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/css/modules/layer/default/icon-ext.png -------------------------------------------------------------------------------- /public/javascripts/layui/css/modules/layer/default/loading-0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/css/modules/layer/default/loading-0.gif -------------------------------------------------------------------------------- /public/javascripts/layui/css/modules/layer/default/loading-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/css/modules/layer/default/loading-1.gif -------------------------------------------------------------------------------- /public/javascripts/layui/css/modules/layer/default/loading-2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wubin1998/DNF_GM_Tool/HEAD/public/javascripts/layui/css/modules/layer/default/loading-2.gif -------------------------------------------------------------------------------- /assets/js/home/index.js.coffee: -------------------------------------------------------------------------------- 1 | #= require ../common/index 2 | 3 | class Index extends Common 4 | constructor: () -> 5 | super() 6 | 7 | init: () -> 8 | super() 9 | 10 | 11 | i = new Index 12 | i.init() -------------------------------------------------------------------------------- /db/index.js: -------------------------------------------------------------------------------- 1 | const config = require('./config') 2 | const mysql = require("mysql"); 3 | 4 | let connection = mysql.createConnection(config) 5 | 6 | connection.connect((err) => { 7 | if (err) throw new Error("数据库连接失败,检查数据库配置") 8 | 9 | }) 10 | 11 | module.exports = connection; -------------------------------------------------------------------------------- /controller/DbController.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index') 2 | 3 | module.exports = (sql) => { 4 | return new Promise( (r, j) => { 5 | db.query(sql, (error, results) => { 6 | if (error) { 7 | return j(error) 8 | }; 9 | r(results) 10 | }) 11 | }) 12 | } -------------------------------------------------------------------------------- /views/account/role.jade: -------------------------------------------------------------------------------- 1 | extends ../layout 2 | 3 | block content 4 | div.layui-card 5 | div.layui-card-header #{title} 6 | div.layui-card-body 7 | table#role_table 8 | 9 | script#toolbar(type="text/html") 10 | a.layui-btn.layui-btn-xs.js-select 选择角色 11 | != js("account/role") -------------------------------------------------------------------------------- /assets/css/style.css.less: -------------------------------------------------------------------------------- 1 | @import './lib/normalize.min.css.less'; 2 | 3 | body { 4 | background: #ccc; 5 | } 6 | 7 | .row { 8 | padding: 40px 0; 9 | } 10 | 11 | .mt-20 { 12 | margin-top: 20px; 13 | } 14 | 15 | .form-width { 16 | width: 450px; 17 | } 18 | 19 | .inline-block { 20 | display: inline-block; 21 | } -------------------------------------------------------------------------------- /assets/css/session/style.css.less: -------------------------------------------------------------------------------- 1 | body { 2 | background: #ccc; 3 | } 4 | 5 | .session-box { 6 | width: 400px; 7 | margin: 180px auto; 8 | } 9 | 10 | .layui-input-block { 11 | margin-left: 60px; 12 | } 13 | 14 | .layui-form-label { 15 | width: auto; 16 | } 17 | 18 | .pa-register { 19 | .layui-input-block { 20 | margin-left: 90px; 21 | } 22 | } -------------------------------------------------------------------------------- /views/session/layout.jade: -------------------------------------------------------------------------------- 1 | doctype html 2 | html 3 | head 4 | title= 'DNF GM后台管理 - ' + title 5 | != css('style') 6 | link(rel="stylesheet", href="/javascripts/layui/css/layui.css") 7 | != css('session/style') 8 | != js('lib/jquery.min') 9 | script(src="/javascripts/layui/layui.all.js") 10 | body 11 | .session-box 12 | block content 13 | -------------------------------------------------------------------------------- /views/home/index.jade: -------------------------------------------------------------------------------- 1 | extends ../layout 2 | 3 | block content 4 | div.layui-card 5 | div.layui-card-header #{title} 6 | div.layui-card-body 7 | p 使用说明: 8 | p 添加账号,添加的账号可以作为游戏登录,选择GM可以作为后台账号。 9 | p 账号管理,列出所有账号,可删除,点击登录账号可以在角色选择获取角色 10 | p 角色选择,列出当前后台登录的账号下的角色,点击选择角色可以使用充值、邮件、工具功能。 11 | p 充值、邮件、工具操作是根据当前右上角显示的账号和当前角色进行修改的。 12 | != js('home/index') -------------------------------------------------------------------------------- /views/layout.jade: -------------------------------------------------------------------------------- 1 | doctype html 2 | html 3 | head 4 | title= 'DNF GM后台管理 - ' + title 5 | != css('style') 6 | link(rel="stylesheet", href="/javascripts/layui/css/layui.css") 7 | != js('lib/jquery.min') 8 | script(src="/javascripts/layui/layui.all.js") 9 | body 10 | include ./common/navbar 11 | 12 | div.layui-container 13 | div.row 14 | block content -------------------------------------------------------------------------------- /views/tool/index.jade: -------------------------------------------------------------------------------- 1 | extends ../layout 2 | 3 | block content 4 | div.layui-card 5 | div.layui-card-header #{title} 6 | div.layui-card-body 7 | button.layui-btn.js-tool-btn(data-type="0") 清空邮件 8 | button.layui-btn.js-tool-btn(data-type="1") 清空时装栏 9 | button.layui-btn.js-tool-btn(data-type="2") 清空宠物 10 | button.layui-btn.js-tool-btn(data-type="3") 解除创建角色限制 11 | != js("tool/index") -------------------------------------------------------------------------------- /assets/js/tool/index.js.coffee: -------------------------------------------------------------------------------- 1 | #= require ../common/index 2 | 3 | class Tool extends Common 4 | constructor: () -> 5 | super() 6 | init: () -> 7 | super() 8 | 9 | $('.js-tool-btn').on 'click', @clickHandle 10 | 11 | clickHandle: () -> 12 | datas = 13 | type: $(@).attr 'data-type' 14 | 15 | load = layer.load() 16 | $.post "/tool", datas, (res) -> 17 | layer.close(load) 18 | layer.alert res.msg 19 | 20 | i = new Tool 21 | i.init() -------------------------------------------------------------------------------- /assets/js/credit/index.js.coffee: -------------------------------------------------------------------------------- 1 | #= require ../common/index 2 | 3 | class Credit extends Common 4 | constructor: () -> 5 | super() 6 | init: () -> 7 | super() 8 | 9 | $('.js-sure').on 'click', @clickHandle 10 | 11 | clickHandle: () -> 12 | datas = 13 | type: $('.js-type').val() 14 | num: $('.js-num').val() 15 | 16 | load = layer.load() 17 | $.post "/credit", datas, (res) -> 18 | layer.close(load) 19 | layer.alert res.msg 20 | 21 | i = new Credit 22 | i.init() -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DNF_GM_Tool 2 | DNF GM网页管理系统 3 | 4 | #### 已停止维护更新 5 | 6 | ## 安装环境 7 | 8 | 需要nodejs环境,下载[nodejs](https://nodejs.org/en/) 9 | 10 | ## 使用 11 | 安装好nodejs后,进入项目目录`./DNF_GM_Tool` 12 | 13 | 14 | 安装依赖模块 15 | 16 | ```bash 17 | npm install 18 | ``` 19 | 20 | 等待安装完后 21 | 22 | ```bash 23 | npm start // 启动服务 24 | ``` 25 | 26 | 打开浏览器,输入地址[http://localhost:3000](http://localhost:3000) 27 | 28 | ## 开启注册 29 | 30 | 默认禁止注册 31 | 32 | 33 | 开启注册,在项目文件夹下创建名为reg的文件即可,不需要后缀名 34 | 35 | ## 数据库设置 36 | 37 | 在目录`db/config.js` 可以修改数据库配置,连接DNF私服的数据库。 38 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "dnf-gm-tool", 3 | "version": "0.0.0", 4 | "private": true, 5 | "scripts": { 6 | "start": "node ./bin/www" 7 | }, 8 | "dependencies": { 9 | "body-parser": "~1.18.2", 10 | "coffee-script": "^1.12.7", 11 | "connect-assets": "^5.4.0", 12 | "cookie-parser": "~1.4.3", 13 | "debug": "~2.6.9", 14 | "express": "~4.15.5", 15 | "express-session": "^1.15.6", 16 | "jade": "~1.11.0", 17 | "less": "^3.8.1", 18 | "md5": "^2.2.1", 19 | "morgan": "~1.9.0", 20 | "mysql": "^2.16.0", 21 | "serve-favicon": "~2.4.5" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /assets/js/email/index.js.coffee: -------------------------------------------------------------------------------- 1 | #= require ../common/index 2 | 3 | class Email extends Common 4 | constructor: () -> 5 | super() 6 | init: () -> 7 | super() 8 | 9 | $('.js-send').on 'click', @sendHandle 10 | 11 | sendHandle: () -> 12 | datas = 13 | item_id: $('.js-item-id').val() 14 | item_num: $('.js-item-num').val() 15 | strong_num: $('.js-strong').val() 16 | coin: $('.js-coin').val() 17 | 18 | load = layer.load() 19 | $.post "/email", datas, (res) -> 20 | layer.close(load) 21 | layer.alert res.msg 22 | 23 | i = new Email 24 | i.init() -------------------------------------------------------------------------------- /views/account/index.jade: -------------------------------------------------------------------------------- 1 | extends ../layout 2 | 3 | block content 4 | div.layui-card 5 | div.layui-card-header #{title} 6 | div.layui-card-body 7 | div.inline-block(style="width: 200px;") 8 | input.layui-input.js-account(type="text", placeholder="查询账号") 9 | div.inline-block(style="vertical-align: top;") 10 | button.layui-btn.js-search-btn 查询 11 | hr 12 | table#account_table 13 | 14 | script#toolbar(type="text/html") 15 | a.layui-btn.layui-btn-xs.js-show 查看 16 | a.layui-btn.layui-btn-xs.layui-btn-normal.js-login 登录 17 | a.layui-btn.layui-btn-xs.layui-btn-danger.js-delete 删除 18 | != js("account/index") -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | 5 | # Runtime data 6 | pids 7 | *.pid 8 | *.seed 9 | 10 | # Directory for instrumented libs generated by jscoverage/JSCover 11 | lib-cov 12 | 13 | # Coverage directory used by tools like istanbul 14 | coverage 15 | 16 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 17 | .grunt 18 | 19 | # node-waf configuration 20 | .lock-wscript 21 | 22 | # Compiled binary addons (http://nodejs.org/api/addons.html) 23 | build/Release 24 | 25 | # Dependency directory 26 | # https://docs.npmjs.com/cli/shrinkwrap#caveats 27 | node_modules 28 | 29 | # Debug log from npm 30 | npm-debug.log 31 | 32 | reg -------------------------------------------------------------------------------- /assets/js/session/login.js.coffee: -------------------------------------------------------------------------------- 1 | class Login 2 | constructor: () -> 3 | @password = $('input[name="password"]') 4 | @account = $('input[name="account"]') 5 | 6 | init: () -> 7 | $('.js-login-btn').on 'click', => @clickLogin() 8 | 9 | @password.on 'keydown', (event) => 10 | if event.keyCode is 13 11 | @clickLogin() 12 | 13 | clickLogin: () -> 14 | datas = 15 | account: @account.val() 16 | password: @password.val() 17 | 18 | load = layer.load(2) 19 | 20 | $.post "/login", datas, (res) => 21 | layer.close load 22 | if res.code is 200 23 | return location.href = '/' 24 | layer.alert res.msg 25 | @password.val("").focus() 26 | 27 | 28 | 29 | login = new Login 30 | login.init() -------------------------------------------------------------------------------- /views/session/login.jade: -------------------------------------------------------------------------------- 1 | extends layout 2 | 3 | block content 4 | div.layui-card 5 | div.layui-card-header DNF GM管理登录 6 | div.layui-card-body 7 | div.layui-form-item(pane) 8 | label.layui-form-label 账号 9 | div.layui-input-block 10 | input.layui-input(type="text", placeholder="请输入账号", name="account") 11 | 12 | div.layui-form-item(pane) 13 | label.layui-form-label 密码 14 | div.layui-input-block 15 | input.layui-input(type="password", placeholder="请输入密码", name="password") 16 | 17 | div.layui-form-item(pane) 18 | div.layui-input-block 19 | button.layui-btn.js-login-btn 登录 20 | if isReg 21 | a.layui-btn.layui-btn-primary(href="/register") 注册 22 | != js('session/login') -------------------------------------------------------------------------------- /views/credit/index.jade: -------------------------------------------------------------------------------- 1 | extends ../layout 2 | 3 | block content 4 | div.layui-card 5 | div.layui-card-header #{title} 6 | div.layui-card-body 7 | label.layui-form-label 充值类型 8 | div.inline-block(style="width: 200px;") 9 | select.js-type(name="type" lay-verify="") 10 | option(value="0") D币 11 | option(value="1") D点 12 | option(value="2") 金币 13 | option(value="3") 时装币 14 | option(value="4") SP点 15 | option(value="5") TP点 16 | option(value="6") QP点 17 | 18 | div.layui-form-item.mt-20.form-width(pane) 19 | label.layui-form-label 充值数量 20 | div.layui-input-block 21 | input.layui-input.js-num(type="number", placeholder="充值数量", name="account") 22 | div.layui-form-item.mt-20.form-width(pane) 23 | div.layui-input-block 24 | button.layui-btn.js-sure 充值 25 | != js("credit/index") -------------------------------------------------------------------------------- /assets/js/session/register.js.coffee: -------------------------------------------------------------------------------- 1 | class Register 2 | constructor: () -> 3 | 4 | init: () -> 5 | $('.js-register-btn').on 'click', => @clickRegister() 6 | 7 | 8 | clickRegister: () -> 9 | datas = 10 | account: $('input[name="account"]').val() 11 | password: $('input[name="password"]').val() 12 | re_password: $('input[name="re_password"]').val() 13 | 14 | if not datas.account 15 | return layer.msg "请输入账号", icon: 7 16 | if not datas.password 17 | return layer.msg "请输入密码", icon: 7 18 | 19 | if datas.password != datas.re_password 20 | return layer.msg "输入密码不一致,请重新输入", icon: 7 21 | 22 | load = layer.load(2) 23 | $.post "/register", datas, (res) -> 24 | layer.close load 25 | if res.code is 200 26 | return layer.alert res.msg, 27 | yes: () -> 28 | location.href = '/login' 29 | layer.alert res.msg 30 | 31 | reg = new Register 32 | reg.init() -------------------------------------------------------------------------------- /views/session/register.jade: -------------------------------------------------------------------------------- 1 | extends layout 2 | 3 | block content 4 | div.layui-card.pa-register 5 | div.layui-card-header DNF GM管理注册 6 | div.layui-card-body 7 | div.layui-form-item(pane) 8 | label.layui-form-label 账号 9 | div.layui-input-block 10 | input.layui-input(type="text", placeholder="请输入账号", name="account") 11 | 12 | div.layui-form-item(pane) 13 | label.layui-form-label 密码 14 | div.layui-input-block 15 | input.layui-input(type="password", placeholder="请输入密码", name="password") 16 | 17 | div.layui-form-item(pane) 18 | label.layui-form-label 确认密码 19 | div.layui-input-block 20 | input.layui-input(type="password", placeholder="请确认密码", name="re_password") 21 | 22 | div.layui-form-item(pane) 23 | div.layui-input-block 24 | button.layui-btn.js-register-btn 完成注册 25 | a.layui-btn.layui-btn-primary(href="/login") 返回登录 26 | 27 | != js('session/register') -------------------------------------------------------------------------------- /views/common/navbar.jade: -------------------------------------------------------------------------------- 1 | div.layui-layout.layui-layout-admin 2 | div.layui-header 3 | div.layui-container 4 | ul.layui-nav.layui-layout-right 5 | li.layui-nav-item 6 | a(href="/") 使用说明 7 | if mid 8 | li.layui-nav-item 9 | a(href="/tool") 工具 10 | if mid 11 | li.layui-nav-item 12 | a(href="/email") 邮件 13 | if mid 14 | li.layui-nav-item 15 | a(href="/credit") 充值 16 | li.layui-nav-item 17 | a(href="/role") 角色选择 18 | li.layui-nav-item 19 | a(href="/account") 账号管理 20 | li.layui-nav-item 21 | a(href="/account/new") 添加账号 22 | if mid 23 | li.layui-nav-item 24 | a.js-mid(href="javascript:;", data-mid="#{mid}") 当前角色:#{role_name} 25 | li.layui-nav-item 26 | a(href="javascript:;") 账号:#{account} 27 | dl.layui-nav-child(lay-unselect="") 28 | dd 29 | a(href="javascript:;") 修改信息 30 | dd 31 | a(href="/logout") 退出 -------------------------------------------------------------------------------- /public/javascripts/layui/css/modules/code.css: -------------------------------------------------------------------------------- 1 | /** layui-v2.4.5 MIT License By https://www.layui.com */ 2 | 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} -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Bin 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /views/email/index.jade: -------------------------------------------------------------------------------- 1 | extends ../layout 2 | 3 | block content 4 | div.layui-card 5 | div.layui-card-header #{title} 6 | div.layui-card-body 7 | label.layui-form-label 物品代码 8 | div.inline-block(style="width: 340px;") 9 | input.layui-input.js-item-id(type="text", placeholder="物品代码", value="0") 10 | 11 | div.layui-form-item.mt-20.form-width(pane) 12 | label.layui-form-label 数量 13 | div.layui-input-block 14 | input.layui-input.js-item-num(type="number", placeholder="数量", value="1") 15 | 16 | div.layui-form-item.mt-20.form-width(pane) 17 | label.layui-form-label 金币 18 | div.layui-input-block 19 | input.layui-input.js-coin(type="number", placeholder="金币", value="0") 20 | 21 | 22 | div.layui-form-item.mt-20.form-width(pane) 23 | label.layui-form-label 强化 24 | div.layui-input-block 25 | input.layui-input.js-strong(type="number", placeholder="强化", value="0") 26 | 27 | div.layui-form-item.mt-20.form-width(pane) 28 | div.layui-input-block 29 | button.layui-btn.js-send 发送 30 | != js("email/index") -------------------------------------------------------------------------------- /public/javascripts/layui/lay/modules/code.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.4.5 MIT License By https://www.layui.com */ 2 | ;layui.define("jquery",function(e){"use strict";var a=layui.$,l="http://www.layui.com/doc/modules/code.html";e("code",function(e){var t=[];e=e||{},e.elem=a(e.elem||".layui-code"),e.about=!("about"in e)||e.about,e.elem.each(function(){t.push(this)}),layui.each(t.reverse(),function(t,i){var c=a(i),o=c.html();(c.attr("lay-encode")||e.encode)&&(o=o.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")),c.html('
")}}),e(n).parents("form").on("submit",function(){var t=c.html();8==l.ie&&(t=t.replace(/<.+>/g,function(t){return t.toLowerCase()})),n.value=t}),c.on("paste",function(e){r.execCommand("formatBlock",!1,"
"),setTimeout(function(){f.call(t,c),n.value=c.html()},100)})},f=function(t){var i=this;i.document;t.find("*[style]").each(function(){var t=this.style.textAlign;this.removeAttribute("style"),e(this).css({"text-align":t||""})}),t.find("table").addClass("layui-table"),t.find("script,link").remove()},m=function(t){return t.selection?t.selection.createRange():t.getSelection().getRangeAt(0)},p=function(t){return t.endContainer||t.parentElement().childNodes[0]},v=function(t,i,a){var l=this.document,n=document.createElement(t);for(var o in i)n.setAttribute(o,i[o]);if(n.removeAttribute("text"),l.selection){var r=a.text||i.text;if("a"===t&&!r)return;r&&(n.innerHTML=r),a.pasteHTML(e(n).prop("outerHTML")),a.select()}else{var r=a.toString()||i.text;if("a"===t&&!r)return;r&&(n.innerHTML=r),a.deleteContents(),a.insertNode(n)}},h=function(t,i){var a=this.document,l="layedit-tool-active",n=p(m(a)),o=function(e){return t.find(".layedit-tool-"+e)};i&&i[i.hasClass(l)?"removeClass":"addClass"](l),t.find(">i").removeClass(l),o("unlink").addClass(r),e(n).parents().each(function(){var t=this.tagName.toLowerCase(),e=this.style.textAlign;"b"!==t&&"strong"!==t||o("b").addClass(l),"i"!==t&&"em"!==t||o("i").addClass(l),"u"===t&&o("u").addClass(l),"strike"===t&&o("d").addClass(l),"p"===t&&("center"===e?o("center").addClass(l):"right"===e?o("right").addClass(l):o("left").addClass(l)),"a"===t&&(o("link").addClass(l),o("unlink").removeClass(r))})},g=function(t,a,l){var n=t.document,o=e(n.body),c={link:function(i){var a=p(i),l=e(a).parent();b.call(o,{href:l.attr("href"),target:l.attr("target")},function(e){var a=l[0];"A"===a.tagName?a.href=e.url:v.call(t,"a",{target:e.target,href:e.url,text:e.url},i)})},unlink:function(t){n.execCommand("unlink")},face:function(e){x.call(this,function(i){v.call(t,"img",{src:i.src,alt:i.alt},e)})},image:function(a){var n=this;layui.use("upload",function(o){var r=l.uploadImage||{};o.render({url:r.url,method:r.type,elem:e(n).find("input")[0],done:function(e){0==e.code?(e.data=e.data||{},v.call(t,"img",{src:e.data.src,alt:e.data.title},a)):i.msg(e.msg||"上传失败")}})})},code:function(e){k.call(o,function(i){v.call(t,"pre",{text:i.code,"lay-lang":i.lang},e)})},help:function(){i.open({type:2,title:"帮助",area:["600px","380px"],shadeClose:!0,shade:.1,skin:"layui-layer-msg",content:["http://www.layui.com/about/layedit/help.html","no"]})}},s=a.find(".layui-layedit-tool"),u=function(){var i=e(this),a=i.attr("layedit-event"),l=i.attr("lay-command");if(!i.hasClass(r)){o.focus();var u=m(n);u.commonAncestorContainer;l?(n.execCommand(l),/justifyLeft|justifyCenter|justifyRight/.test(l)&&n.execCommand("formatBlock",!1,"
"),setTimeout(function(){o.focus()},10)):c[a]&&c[a].call(this,u),h.call(t,s,i)}},d=/image/;s.find(">i").on("mousedown",function(){var t=e(this),i=t.attr("layedit-event");d.test(i)||u.call(this)}).on("click",function(){var t=e(this),i=t.attr("layedit-event");d.test(i)&&u.call(this)}),o.on("click",function(){h.call(t,s),i.close(x.index)})},b=function(t,e){var l=this,n=i.open({type:1,id:"LAY_layedit_link",area:"350px",shade:.05,shadeClose:!0,moveType:1,title:"超链接",skin:"layui-layer-msg",content:['
"+r.time[e]+"