瀏覽代碼

用户模块合并

caiaolin 8 年之前
父節點
當前提交
a73b050de7

+ 3 - 0
.babelrc

@@ -0,0 +1,3 @@
+{
+  "presets": ["es2015", "stage-2"]
+}

+ 1 - 2
modules/ration_repository/models/repository_map.js

@@ -28,8 +28,7 @@ function createNewLibModel(rationLibObj){
     rst.deleted = false;
     return rst;
 }
-
-rationRepositoryDao = function(){};
+var rationRepositoryDao = function(){};
 
 rationRepositoryDao.prototype.getRealLibName = function(dispName,callback){
     if (callback) {

+ 31 - 0
modules/users/controllers/boot_controller.js

@@ -0,0 +1,31 @@
+/**
+ * 引导页相关控制器
+ *
+ * @author CaiAoLin
+ * @date 2017/6/12
+ * @version
+ */
+let UserModel = require("../models/user_model");
+
+class BootController {
+
+    /**
+     * 引导页
+     *
+     * @param {object} request
+     * @param {object} response
+     * @return {void}
+     */
+    boot(request, response) {
+        let userModel = new UserModel();
+        let renderData = {
+            provinceList: userModel.province,
+            companyTypeList: userModel.companyType,
+            companyScaleList: userModel.companyScale
+        };
+        response.render('users/html/login-infoinput', renderData);
+    }
+
+}
+
+module.exports = BootController;

+ 75 - 0
modules/users/controllers/login_controller.js

@@ -0,0 +1,75 @@
+/**
+ * 登录相关控制器
+ *
+ * @author CaiAoLin
+ * @date 2017/6/8
+ * @version
+ */
+let Request = require('request');
+let UserModel = require("../models/user_model");
+
+class LoginController {
+
+    /**
+     * 登录页面
+     *
+     * @param {object} request
+     * @param {object} response
+     * @return {void}
+     */
+    index(request, response) {
+        response.render('users/html/login', {});
+    }
+
+    /**
+     * 登录操作
+     *
+     * @param {object} request
+     * @param {object} response
+     * @return {string}
+     */
+    async login(request, response) {
+        let account = request.body.account;
+        let password = request.body.pw;
+        let userExist = true;
+
+        try {
+            // 调用接口验证登录信息
+            let userModel = new UserModel();
+            let responseData = await userModel.getInfoFromSSO(account, password);
+            responseData = JSON.parse(responseData);
+            if (typeof responseData !== 'object') {
+                throw '邮箱/手机 或 密码错误';
+            }
+
+            if (responseData.length <= 0) {
+                throw '接口返回数据错误';
+            }
+
+            // 正确登录后 存入session
+            let userData = responseData[0];
+            let sessionUser = {
+                ssoId: userData.id,
+                username: userData.username,
+                email: userData.useremail,
+                mobile: userData.mobile
+            };
+            request.session.sessionUser = sessionUser;
+            // 记录用户数据到数据库
+            let [result, exist] = await userModel.markUser(sessionUser);
+            userExist = exist;
+
+            if (!result) {
+                throw '标记用户信息失败!';
+            }
+
+        } catch (error) {
+            return response.json({error: 1, msg: error});
+        }
+
+        response.json({error: 0, msg: '', exist: userExist ? 1 : 0});
+    }
+
+}
+
+module.exports = LoginController;

+ 93 - 0
modules/users/controllers/user_controller.js

@@ -0,0 +1,93 @@
+/**
+ * 用户相关控制器
+ *
+ * @author CaiAoLin
+ * @date 2017/6/13
+ * @version
+ */
+import UserModel from "../models/user_model";
+
+class UserController {
+
+    /**
+     * 用户信息页面
+     *
+     * @param {object} request
+     * @param {object} response
+     * @return {void}
+     */
+    async info(request, response) {
+        // 获取当前用户数据
+        let sessionUser = request.session.sessionUser;
+        let userModel = new UserModel();
+        let userData = await userModel.findDataByName(sessionUser.username);
+        userData = userData.length <= 0 ? [] : userData[0];
+
+        let renderData = {
+            userData: userData,
+            provinceList: userModel.province,
+            companyTypeList: userModel.companyType,
+            companyScaleList: userModel.companyScale
+        };
+        response.render('users/html/user-info', renderData);
+    }
+
+    /**
+     * 保存个人数据
+     *
+     * @param {object} request
+     * @param {object} response
+     * @return
+     */
+    async saveData(request, response) {
+        try {
+            if (request.body.real_name === undefined || request.body.real_name === '' ||
+                request.body.province === undefined || request.body.province === '' ||
+                request.body.company === undefined || request.body.company === '') {
+                throw '缺少数据';
+            }
+            let updateData = {
+                real_name: request.body.real_name,
+                province: request.body.province,
+                company: request.body.company,
+                company_type: request.body.company_type,
+                company_scale: request.body.company_scale
+            };
+            let sessionUser = request.session.sessionUser;
+
+            let userModel = new UserModel();
+            let condition = {email: sessionUser.email};
+            let result = await userModel.updateUser(condition, updateData);
+            if (result.ok !== 1) {
+                throw '用户数据保存失败';
+            }
+        } catch (error) {
+            return response.redirect(request.headers.referer);
+        }
+
+        response.redirect('/pm');
+    }
+
+    /**
+     * 账号安全页面
+     *
+     * @param {object} request
+     * @param {object} response
+     * @return {void}
+     */
+    async safe(request, response) {
+        // 获取当前用户信息
+        let sessionUser = request.session.sessionUser;
+        let userModel = new UserModel();
+        let userData = await userModel.findDataByName(sessionUser.username);
+        userData = userData.length <= 0 ? [] : userData[0];
+
+        let renderData = {
+            userData: userData,
+        };
+        response.render('users/html/user-safe', renderData);
+    }
+
+}
+
+export default UserController;

+ 0 - 85
modules/users/controllers/users_controller.js

@@ -1,85 +0,0 @@
-var ut = require('../models/users');
-var rq = require('request');
-var online = true;
-
-module.exports = {
-    userLogin: function (req, res) {
-        var account = req.body.account;
-        var pw = req.body.pw;
-
-        if (online) {
-            rq.post(
-                {
-                    url: 'http://sso.smartcost.com.cn/api/jzlogin',
-                    form: {username: account, userpasswd: pw},
-                    encoding: 'utf8'
-                },
-                function (err, response, userData) {
-                    if (response.statusCode !== 200) {
-                        res.json({state: false, error: '通行证验证失败!出错代号:' + response.statusCode});
-                    } else {
-                        switch (userData) {
-                            case '-2':
-                                res.json({state: false, error: '密码错误!'});
-                                break;
-                            case '-22':
-                                res.json({state: false, error: '输入的邮箱/手机无效!'});
-                                break;
-                            default:
-                                userData = JSON.parse(userData);
-                                req.session.userID = userData[0].id;
-                                req.session.userAccount = userData[0].username;
-                                req.session.userEmail = userData[0].useremail;
-                                req.session.userMobile = userData[0].mobile;
-                                res.json({state: true, data: userData});
-                        }
-
-                    }
-                }
-            );
-        }
-        else {
-            ut.findUser(account, pw, function (err, userData) {
-                if (err) {
-                    res.json({state: false, error: err});
-                }
-                else {
-                    req.session.userID = userData[0].profile.id;
-                    req.session.userName = userData[0].profile.userName;
-                    req.session.userAccount = userData[0].profile.userAccount;
-                    req.session.userEmail = userData[0].profile.useRemail;
-                    req.session.userMobile = userData[0].profile.Mobile;
-                    res.json({state: true, data: userData});
-                }
-                ;
-            })
-        }
-    },
-
-    userReg: function (req, res) {
-        var account = req.body.account;
-        var pw = req.body.pw;
-        var name = req.body.name;
-
-        ut.checkAccount(account, function (userData) {
-            if (!userData) {  // 找不到用户,则注册
-                ut.addUser(account, pw, name, function (err) {
-                    if (err) {
-                        res.json({state: false, error: '“注册失败,原因:' + err});
-                    }
-                    else {
-                        res.json({state: true});
-                    }
-                });
-            }
-            else {  // 找到用户,则提示
-                res.json({state: false, error: '“' + account + '”已存在!'});
-            }
-            ;
-        })
-    }
-
-}
-
-
-

+ 202 - 0
modules/users/models/user_model.js

@@ -0,0 +1,202 @@
+/**
+ * 用户数据模型
+ *
+ * @author CaiAoLin
+ * @date 2017/6/9
+ * @version
+ */
+let mongoose = require("mongoose");
+let dbm = require("../../../config/db/db_manager");
+let Request = require("request");
+
+class UserModel {
+
+    /**
+     * 模型
+     *
+     * @var {object}
+     */
+    model = null;
+
+    /**
+     * 构造函数
+     *
+     * @return {void}
+     */
+    constructor() {
+        let umDB = dbm.getCfgConnection("usersManages");
+        let usersSchema = new mongoose.Schema({
+            username: String,
+            email: String,
+            mobile: String,
+            real_name: String,
+            company: String,
+            province: Number,
+            company_type: Number,
+            company_scale: Number,
+            last_login: Number,
+            create_time: Number
+        });
+        this.model = umDB.model('users', usersSchema);
+    }
+
+    /**
+     * 企业所在地区
+     *
+     * @var {object}
+     */
+    province = ['广东省', '北京市'];
+
+    /**
+     * 企业类型
+     *
+     * @var
+     */
+    companyType = ['设计', '施工'];
+
+    /**
+     * 企业类型
+     *
+     * @var
+     */
+    companyScale = ['1-20', '20-50', '50-100', '100+'];
+
+    /**
+     * 根据用户名密码调用SSO接口获取信息
+     *
+     * @param {string} username
+     * @param {string} password
+     * @return {object}
+     */
+    async getInfoFromSSO(username, password) {
+        let postData = {
+            url: 'http://sso.smartcost.com.cn/api/jzlogin',
+            form: {username: username, userpasswd: password},
+            encoding: 'utf8'
+        };
+        return new Promise(function (resolve, reject) {
+            try {
+                // 请求接口
+                Request.post(postData, function (err, postResponse, body) {
+                    if (err) {
+                        throw '请求错误';
+                    }
+                    if (postResponse.statusCode !== 200) {
+                        throw '通行证验证失败!';
+                    }
+                    resolve(body);
+                });
+            } catch (error) {
+                reject([]);
+            }
+        });
+    }
+
+    /**
+     * 标记用户
+     *
+     * @param {object} userData
+     * @return {Promise}
+     */
+    async markUser(userData) {
+        let userDataFromDb = await this.findDataByName(userData.username);
+        let result = false;
+        // 信息是否补全
+        let info = false;
+        if (userDataFromDb.length <= 0) {
+            // 不存在用户则入库
+            result = await this.addUser(userData);
+        } else {
+            // 存在则更新用户信息
+            let updateData = {last_login: new Date().getTime()};
+            let condition = {email: userData.email};
+            result = await this.updateUser(condition, updateData);
+
+            userDataFromDb = userDataFromDb[0];
+            info = userDataFromDb.real_name !== undefined && userDataFromDb.real_name !== '';
+            result = result.ok === 1;
+        }
+
+        return [result, info];
+    }
+
+    /**
+     * 根据用户名查找数据
+     *
+     * @param {string} username
+     * @return {object}
+     */
+    findDataByName(username) {
+        let self = this;
+        return new Promise(function (resolve, reject) {
+            self.model.find({username: username}, function (error, data) {
+                if (error) {
+                    console.log(error);
+                    reject([]);
+                } else {
+                    resolve(data);
+                }
+            });
+        });
+    }
+
+    /**
+     * 新增用户
+     *
+     * @param {object} userData
+     * @return {Promise}
+     */
+    addUser(userData) {
+        let insertData = {
+            username: userData.username,
+            email: userData.email,
+            mobile: userData.mobile,
+            real_name: '',
+            company: '',
+            province: -1,
+            company_type: -1,
+            company_scale: -1,
+            last_login: 0,
+            create_time: new Date().getTime()
+        };
+        let userModel = new this.model(insertData);
+        return new Promise(function (resolve, reject) {
+            userModel.save(function (error) {
+                if (error) {
+                    console.log(error);
+                    reject(false);
+                } else {
+                    resolve(true);
+                }
+            });
+        });
+    }
+
+    /**
+     * 更新用户数据
+     *
+     * @param {object} updateData
+     * @return {Promise}
+     */
+    updateUser(condition, updateData) {
+        if (Object.keys(condition).length <= 0 || Object.keys(updateData).length <= 0) {
+            return null;
+        }
+        let self = this;
+        return new Promise(function(resolve, reject) {
+            self.model.update(condition, {$set: updateData}, function(error, result) {
+                if (error) {
+                    reject(false);
+                } else {
+                    resolve(result);
+                }
+            });
+        });
+
+
+
+    }
+
+}
+
+module.exports = UserModel;

+ 0 - 49
modules/users/models/users.js

@@ -1,49 +0,0 @@
-//*/
-var mongoose = require("mongoose");
-
-var dbm = require("../../../config/db/db_manager");
-var umDB = dbm.getCfgConnection("usersManages");
-var usersSchema = new mongoose.Schema({ account: String, pw: String, name: String });
-var usersModel = umDB.model('users', usersSchema);
-/*/
-var umDB = require('./umDB');
-var usersSchema = new umDB.mongoose.Schema({ account: String, pw: String, name: String });
-var usersModel = umDB.mongoose.model('users', usersSchema);
-//*/
-
-var usersData = function(){};
-
-usersData.prototype.findUser = function(account, pw, controllerFun){
-    usersModel.find({"account": account, "pw": pw}, function(err, data){
-        if(data.length){
-            controllerFun(0, data[0]);
-        }
-        else{
-            controllerFun('用户名或密码错误!', 0);
-        }
-    })
-};
-
-usersData.prototype.checkAccount = function(account, controllerFun){
-    usersModel.find({"account": account}, function(err, data){
-        if(data.length){
-            controllerFun(data[0]);
-        }
-        else{
-            controllerFun(0);
-        }
-    })
-};
-
-usersData.prototype.addUser = function(account, pw, name, controllerFun){
-    var user = new usersModel({account: account, pw: pw, name: name});
-    user.save(function (err) {
-        if (err) {
-            controllerFun(err);
-        } else {
-            controllerFun(0);
-        }
-    });
-};
-
-module.exports = new usersData();

+ 18 - 0
modules/users/routes/boot_route.js

@@ -0,0 +1,18 @@
+/**
+ * 控制面板相关路由分发
+ *
+ * @author CaiAoLin
+ * @date 2017/6/12
+ * @version
+ */
+
+let express = require('express');
+let router = express.Router();
+let BootController = require('../controllers/boot_controller');
+
+let bootController = new BootController();
+
+// 引导页面
+router.get('/:province', bootController.boot);
+
+module.exports = router;

+ 24 - 0
modules/users/routes/login_route.js

@@ -0,0 +1,24 @@
+/**
+ * 登录路由分发
+ *
+ * @author CaiAoLin
+ * @date 2017/6/1
+ * @version
+ */
+let express = require('express');
+let router = express.Router();
+let LoginController = require('../controllers/login_controller');
+let loginController = new LoginController();
+
+// 登录页面action
+router.get('/login', loginController.index);
+
+// 登录操作
+router.post('/login', loginController.login);
+
+router.get("/logout", function (req, res) {
+    delete req.session.sessionUser;
+    res.redirect("/");
+});
+
+module.exports = router;

+ 19 - 0
modules/users/routes/user_route.js

@@ -0,0 +1,19 @@
+/**
+ * 用户相关路由
+ *
+ * @author CaiAoLin
+ * @date 2017/6/13
+ * @version
+ */
+import Express from "express";
+import UserController from "../controllers/user_controller";
+
+const router = Express.Router();
+const userController = new UserController();
+
+// action定义区域
+router.get('/info', userController.info);
+router.get('/safe', userController.safe);
+router.post('/info', userController.saveData);
+
+module.exports = router;

+ 0 - 37
modules/users/routes/users_route.js

@@ -1,37 +0,0 @@
-var express = require('express');
-var path = require('path');
-var router = express.Router();
-var uc = require('../controllers/users_controller');
-
-var htmlPath = path.join(__dirname,'../../../','web/users/');
-
-router.get('/', function(req, res) {
-    if(!req.session.userAccount){
-        res.redirect('/login');
-    }
-    else{
-        res.redirect('/pm');
-    }
-});
-
-router.get('/login', function(req, res) {
-  res.render('users/login', {});
-});
-
-router.post('/login', uc.userLogin);
-
-router.get('/reg', function(req, res, next) {
-  res.render('reg',{});
-});
-
-router.post('/reg', uc.userReg);
-
-router.get("/logout",function(req,res){
-    delete req.session.userID;
-    delete req.session.userAccount;
-    delete req.session.userEmail;
-    delete req.session.userMobile;
-    res.redirect("/");
-});
-
-module.exports = router;

+ 4 - 1
package.json

@@ -4,6 +4,9 @@
   "description": "Smart Soft - Construct Cost",
   "devDependencies": {
     "body-parser": "^1.13.2",
+    "babel-cli": "^6.24.1",
+    "babel-preset-es2015": "^6.24.1",
+    "babel-preset-stage-2": "^6.24.1",
     "express": "^4.13.1",
     "mongoose": "^4.8.5",
     "async": "^2.1.5",
@@ -20,7 +23,7 @@
     "bluebird": "^3.5.0",
     "jszip": "^3.1.3"
   },
-  "scripts" :{
+  "scripts": {
     "start": "nodemon server.js"
   }
 }

+ 27 - 11
server.js

@@ -38,20 +38,36 @@ app.use(session({
     //*/
 }));
 
+// 登录状态全局判断
 app.use(function (req, res, next) {
-    let url = req.originalUrl, referer;
-    if (!/^\/login/.test(req.originalUrl) && !req.session.userAccount) {
-        if (/\/api/.test(req.originalUrl)) {
-            referer = URL.parse(req.headers.referer);
-            return res.redirect('/login' + '?referer=' + referer.path);
-        } else {
-            return res.redirect("/login" + '?referer=' + req.originalUrl);
+    let url = req.originalUrl;
+    // @todo 上一个页面跳转
+    let referer = '';
+    if (/^\/login/.test(url)) {
+        // 如果是登录页面则忽略判断数据
+        next();
+    } else {
+        try {
+            // 判断session
+            let sessionUser = req.session.sessionUser;
+            if (!sessionUser) {
+                throw 'session error';
+            }
+
+            res.locals.sessionUser = sessionUser;
+        } catch (error) {
+            return res.redirect('/login');
         }
+
+        next();
     }
-    next();
 });
 
-app.use('/', require('./modules/users/routes/users_route'));
+// 用户相关路由区域
+app.use('/', require("./modules/users/routes/login_route"));
+app.use('/boot', require("./modules/users/routes/boot_route"));
+app.use('/user', require("./modules/users/routes/user_route"));
+
 app.use('/feeRates', require('./modules/fee_rates/routes/fee_rates_route'));
 
 app.get('/template/bills', function (req, res) {
@@ -71,7 +87,7 @@ app.use('/template/bills/api', function (req, res, next) {
     let checkAdmin = function (userAccount) {
         return true;
     }
-    if (checkAdmin(req.session.userAccount)) {
+    if (checkAdmin(req.session.sessionUser)) {
         next();
     } else {
         res.json({error: 1, message: '对不起,您无权限操作清单模板。', data: null});
@@ -118,7 +134,7 @@ app.use('/glj', GLJ_Router);
 //app.use("/rationLibEditor",rations_Router);
 
 app.get("/stdBillsmain", function(req, res){
-    if(!req.session.userAccount){
+    if(!req.session.sessionUser){
         res.redirect('/login');
     }
     else {

+ 18 - 0
web/common/html/header.html

@@ -0,0 +1,18 @@
+<nav class="navbar navbar-toggleable-lg navbar-light bg-faded p-0 justify-content-between">
+    <span class="header-logo px-2">Smartcost</span>
+    <div class="navbar-text"><a href="project-management.html">项目管理</a></div>
+    <div class="float-lg-right navbar-text pt-0">
+        <div class="dropdown d-inline-block">
+            <button class="btn btn-link btn-sm dropdown-toggle" type="button" data-toggle="dropdown"><%= sessionUser.email %></button>
+            <div class="dropdown-menu dropdown-menu-right">
+                <a class="dropdown-item" href="user-info.html" target="_blank">账号资料</a>
+                <a class="dropdown-item" href="user-buy.html" target="_blank">产品购买</a>
+                <a class="dropdown-item" href="user-set.html" target="_blank">偏好设置</a>
+            </div>
+        </div>
+        <span class="btn btn-link btn-sm new-msg">
+                  <i class="fa fa-envelope-o" aria-hidden="true"></i>&nbsp;2
+                </span>
+        <a class="btn btn-link btn-sm" href="/logout">注销</a>
+    </div>
+</nav>

+ 79 - 0
web/users/html/login-infoinput.html

@@ -0,0 +1,79 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+    <meta http-equiv="x-ua-compatible" content="ie=edge">
+    <title>用户信息填写-Smartcost</title>
+    <link rel="stylesheet" href="/lib/bootstrap/css/bootstrap.min.css">
+    <link rel="stylesheet" href="/web/building_saas/css/main.css">
+    <link rel="stylesheet" href="/lib/font-awesome/font-awesome.min.css">
+</head>
+
+<body>
+<div class="header">
+    <%include ../../common/html/header.html %>
+</div>
+<div class="container mt-3">
+    <form class="row" method="post" action="/user/info" id="info-form">
+        <div class="col-lg-8 offset-lg-2">
+            <div class="card newuser-input">
+                <div class="card-block">
+                    <h4 class="card-title">在开始使用前,请填写以下信息。</h4>
+                    <h6 class="card-subtitle text-muted">详细填写这些信息,可以让我们更好的服务您。</h6>
+                </div>
+                <div class="card-block">
+                    <div class="form-group">
+                        <input class="form-control" placeholder="你的姓名" name="real_name" id="name">
+                    </div>
+                    <div class="form-group">
+                        <input class="form-control" placeholder="企业名称" name="company" id="company">
+                    </div>
+                    <div class="form-group">
+                        <select class="form-control" name="province" id="province">
+                            <option value="">请选择企业所在地区</option>
+                            <% provinceList.forEach(function(province, index) {%>
+                            <option value="<%= index %>"><%= province %></option>
+                            <% })%>
+                        </select>
+                    </div>
+                    <div class="form-group">
+                        <a class="btn btn-link" data-toggle="collapse" href="#moreinfo" aria-expanded="false"
+                           aria-controls="moreinfo">更多选项</a>
+                    </div>
+                    <div class="collapse" id="moreinfo">
+                        <div class="form-group">
+                            <select class="form-control" name="company_type">
+                                <option value="">请选择企业类型</option>
+                                <% companyTypeList.forEach(function(companyType, index) {%>
+                                <option value="<%= index %>"><%= companyType %></option>
+                                <% })%>
+                            </select>
+                        </div>
+                        <div class="form-group">
+                            <select class="form-control" name="company_scale">
+                                <option value="">请选择企业规模</option>
+                                <% companyScaleList.forEach(function(companyScale, index) {%>
+                                <option value="<%= index %>"><%= companyScale %></option>
+                                <% })%>
+                            </select>
+                        </div>
+                    </div>
+                    <div class="form-group">
+                        <button class="btn btn-primary btn-block" type="submit">下一步</button>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </form>
+</div>
+<!-- JS. -->
+<script src="/lib/jquery/jquery.min.js"></script>
+<script src="/lib/tether/tether.min.js"></script>
+<script src="/lib/bootstrap/bootstrap.min.js"></script>
+<script src="/web/building_saas/js/global.js"></script>
+<script src="/web/users/js/user.js"></script>
+</body>
+
+</html>

+ 10 - 64
web/users/login.html

@@ -17,16 +17,18 @@
             <h1 class="d-flex justify-content-center">Smartcost</h1>
             <h4 class="d-flex justify-content-center mb-2">用户登录</h4>
             <div class="form-group">
-                <input id="inputEmail" class="form-control " placeholder="通行账号 邮箱/手机" required="" autofocus="" value="laiku123@qq.com">
+                <input id="inputEmail" class="form-control " name="inputEmail" placeholder="通行账号 邮箱/手机" autofocus="" value="laiku123@qq.com
+" />
             </div>
             <div class="form-group">
-                <input id="inputPassword" class="form-control " placeholder="输入密码" required="" type="password" value="19930523">
+                <input id="inputPassword" class="form-control " name="inputPassword" placeholder="输入密码" type="password" value="19930523" />
             </div>
-            <div class="form-group has-danger">
-                <div id="hint" class="form-control-feedback">&nbsp;</div>
+            <div class="form-group" id="error-tips" style="display: none;">
+                <div class="alert alert-danger" role="alert">
+                    <strong>登录失败</strong> <span id="message"</span>
+                </div>
             </div>
             <div class="form-group">
-                <!--<button id="login" class="btn btn-primary btn-block" data-toggle="modal" data-target="#ver">登录</button>-->
                 <button id="login" class="btn btn-primary btn-block">登录</button>
             </div>
             <div class="pt-1 d-flex justify-content-center">
@@ -35,63 +37,7 @@
             </div>
         </form>
 
-        <script>
-            $(document).ready(function () {
-                var referer = scUrlUtil.GetQueryString('referer');
-
-                $("#login").click(function () {
-                    var account = $("#inputEmail").val();
-                    var pw = $("#inputPassword").val();
-
-                    $.ajax({
-                        url: '/login',
-                        type: 'post',
-                        data: {"account": account, "pw": pw},
-                        success: function (result) {
-                            if (result.data) {
-//                                $('#ver').modal('show');
-                                if (referer) {
-                                    location.href = referer;
-                                } else {
-                                    location.href = '/';
-                                }
-                            }
-                            else {
-                                $('#hint').html(result.error);
-                            }
-                        },
-                        error: function (result) {
-                            $('#hint').html('内部程序错误!');
-                        }
-                    });
-                });
-
-                $(".form-control").on('input', function () {
-                    $('#hint').html('&nbsp;');
-                });
-            });
-        </script>
-
-        <!--登录错误-->
-        <!--<form class="form-signin login-error">
-            <h1 class="d-flex justify-content-center">Smartcost</h1>
-            <h4 class="d-flex justify-content-center mb-2">用户登录</h4>
-            <div class="form-group has-danger">
-                <input class="form-control form-control-danger" value="1212@qq.com" placeholder="通行账号 邮箱/手机" required="" autofocus="">
-                <div class="form-control-feedback">输入的邮箱/手机无效</div>
-            </div>
-            <div class="form-group has-danger">
-                <input class="form-control gform-control-danger" value="12313" placeholder="输入密码" required="" type="password">
-                <div class="form-control-feedback">密码错误</div>
-            </div>
-            <div class="form-group">
-                <button class="btn btn-primary btn-block">登录</button>
-            </div>
-            <div class="pt-1 d-flex justify-content-center">
-                <a href="http://sso.smartcost.com.cn/getpasswd" target="_blank" class="mr-3">忘记密码</a>
-                <a href="http://sso.smartcost.com.cn/reg" target="_blank">免费注册</a>
-            </div>
-        </form>-->
+        <script type="text/javascript" src="/web/users/js/login.js"></script>
     </div>
     <!--弹出信息-->
     <div class="modal fade" id="ver" data-backdrop="static">
@@ -107,14 +53,14 @@
                             <div class="card card-block">
                                 <h3 class="card-title">重庆版免费版</h3>
                                 <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
-                                <a class="btn btn-primary" href="login-infoinput.html">开始使用</a>
+                                <a class="btn btn-primary" href="/boot/cq">开始使用</a>
                             </div>
                         </div>
                         <div class="col-sm-6">
                             <div class="card card-block">
                                 <h3 class="card-title">广东版免费版</h3>
                                 <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
-                                <a class="btn btn-primary" href="login-infoinput.html">开始使用</a>
+                                <a class="btn btn-primary" href="/boot/gd">开始使用</a>
                             </div>
                         </div>
                     </div>

+ 97 - 0
web/users/html/user-info.html

@@ -0,0 +1,97 @@
+    <!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+    <meta http-equiv="x-ua-compatible" content="ie=edge">
+    <title>账号资料-Smartcost</title>
+    <link rel="stylesheet" href="/lib/bootstrap/css/bootstrap.min.css">
+    <link rel="stylesheet" href="/web/building_saas/css/main.css">
+    <link rel="stylesheet" href="/lib/font-awesome/font-awesome.min.css">
+</head>
+
+<body>
+<div class="header">
+    <%include ../../common/html/header.html %>
+</div>
+<div class="main">
+    <div class="poj-manage container-fluid">
+        <div class="row">
+            <div class="col-lg-2">
+                <div class="poj-cate mt-3">
+                    <ul class="nav nav-pills flex-column">
+                        <li class="nav-item">
+                            <a class="nav-link active" href="user-info.html">账号资料</a>
+                        </li>
+                        <li class="nav-item">
+                            <a class="nav-link" href="/user/safe">账号安全</a>
+                        </li>
+                        <li class="nav-item">
+                            <a class="nav-link" href="user-buy.html">产品购买</a>
+                        </li>
+                        <li class="nav-item">
+                            <a class="nav-link" href="user-set.html">偏好设置</a>
+                        </li>
+                    </ul>
+                </div>
+            </div>
+            <div class="col-lg-10">
+                <div class="col-lg-4">
+                    <legend class="my-3">账号资料</legend>
+                    <form id="info-form" method="post" action="/user/info">
+                        <div class="form-group">
+                            <label class="form-control-label">您的姓名</label>
+                            <input class="form-control" value="<%= userData.real_name %>" placeholder="输入您的姓名" id="name" name="real_name"/>
+                        </div>
+                        <div class="form-group">
+                            <label class="form-control-label">企业名称</label>
+                            <input class="form-control" value="<%= userData.company %>" placeholder="输入您的企业名称" id="company" name="company"/>
+                        </div>
+                        <div class="form-group">
+                            <label class="form-control-label">企业所在地区</label>
+                            <select class="form-control" name="province" id="province">
+                                <% provinceList.forEach(function(province, index) {%>
+                                <option value="<%= index %>" <% if(index === userData.province) {%>selected="selected"<% } %>><%= province %></option>
+                                <% })%>
+                            </select>
+                        </div>
+                        <div class="form-group">
+                            <label class="form-control-label">企业类型</label>
+                            <select class="form-control" name="company_type">
+                                <option value="">请选择企业类型</option>
+                                <% companyTypeList.forEach(function(companyType, index) {%>
+                                <option value="<%= index %>" <% if(index === userData.company_type) {%>selected="selected"<% } %>><%= companyType %></option>
+                                <% })%>
+                            </select>
+                        </div>
+                        <div class="form-group">
+                            <label class="form-control-label">企业规模</label>
+                            <select class="form-control" name="company_scale">
+                                <option value="">请选择企业规模</option>
+                                <% companyScaleList.forEach(function(companyScale, index) {%>
+                                <option value="<%= index %>" <% if(index === userData.company_scale) {%>selected="selected"<% } %>><%= companyScale %></option>
+                                <% })%>
+                            </select>
+                        </div>
+                        <div class="form-group mt-3">
+                            <button class="btn btn-primary" type="submit">确认</button>
+                        </div>
+                    </form>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<!-- JS. -->
+<script src="/lib/jquery/jquery.min.js"></script>
+<script src="/lib/tether/tether.min.js"></script>
+<script src="/lib/bootstrap/bootstrap.min.js"></script>
+<script src="/web/building_saas/js/global.js"></script>
+<script src="/web/users/js/user.js"></script>
+</body>
+<script type="text/javascript">
+    autoFlashHeight();
+</script>
+
+</html>

+ 157 - 0
web/users/html/user-safe.html

@@ -0,0 +1,157 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+    <meta http-equiv="x-ua-compatible" content="ie=edge">
+    <title>账号资料-Smartcost</title>
+    <link rel="stylesheet" href="/lib/bootstrap/css/bootstrap.min.css">
+    <link rel="stylesheet" href="/web/building_saas/css/main.css">
+    <link rel="stylesheet" href="/lib/font-awesome/font-awesome.min.css">
+</head>
+
+<body>
+<div class="header">
+    <%include ../../common/html/header.html %>
+</div>
+<div class="main">
+    <div class="poj-manage container-fluid">
+        <div class="row">
+            <div class="col-lg-2">
+                <div class="poj-cate mt-3">
+                    <ul class="nav nav-pills flex-column">
+                        <li class="nav-item">
+                            <a class="nav-link" href="/user/info">账号资料</a>
+                        </li>
+                        <li class="nav-item">
+                            <a class="nav-link active" href="/user/safe">账号安全</a>
+                        </li>
+                        <li class="nav-item">
+                            <a class="nav-link" href="user-buy.html">产品购买</a>
+                        </li>
+                        <li class="nav-item">
+                            <a class="nav-link" href="user-set.html">偏好设置</a>
+                        </li>
+                    </ul>
+                </div>
+            </div>
+            <div class="col-lg-10">
+                <div class="col-lg-4">
+                    <legend class="my-3">账号安全</legend>
+                    <from>
+                        <div class="form-group">
+                            <label class="form-control-label">登录密码</label>
+                            <div class="form-control-static">
+                                <button class="btn btn-secondary btn-sm">修改密码</button>
+                            </div>
+                        </div>
+                        <div class="form-group">
+                            <label class="form-control-label">邮箱地址</label>
+                            <p class="form-control-static mb-0"><%= userData.email %><span
+                                    class="badge badge-default">未验证</span></p>
+                            <button class="btn btn-secondary btn-sm">验证邮箱</button>
+                            <button class="btn btn-secondary btn-sm">更换邮箱</button>
+                            <p class="form-control-static mb-0"><%= userData.email %><span
+                                    class="badge badge-success">已验证</span></p>
+                            <button class="btn btn-secondary btn-sm">更换邮箱</button>
+                        </div>
+                        <div class="form-group">
+                            <label class="form-control-label">手机号码</label>
+                            <p class="form-control-static mb-0"><%= userData.mobile %></p>
+                            <button class="btn btn-secondary btn-sm">更换手机</button>
+                            <div class="form-control-static">
+                                <button class="btn btn-secondary btn-sm">添加手机</button>
+                            </div>
+                        </div>
+                        <div class="form-group">
+                            <label class="form-control-label">异常登录提醒</label>
+                            <div class="form-control-static">
+                                <label class="custom-control custom-checkbox" data-toggle="modal"
+                                       data-target="#phoneTips">
+                                    <input type="checkbox" class="custom-control-input">
+                                    <span class="custom-control-indicator"></span>
+                                    <span class="custom-control-description">开启</span>
+                                </label>
+                                <p class="text-muted">
+                                    账号出现异常登录时将给你的手机号码发送通知。
+                                </p>
+                            </div>
+                        </div>
+                    </from>
+                </div>
+                <!--<div class="mt-5">-->
+                    <!--<legend>访问日志</legend>-->
+                    <!--<table class="table table-hover">-->
+                        <!--<thead>-->
+                        <!--<tr>-->
+                            <!--<th>系统</th>-->
+                            <!--<th>浏览器</th>-->
+                            <!--<th>访问日期</th>-->
+                            <!--<th>地址</th>-->
+                        <!--</tr>-->
+                        <!--</thead>-->
+                        <!--<tbody>-->
+                        <!--<tr>-->
+                            <!--<td>Windows NT 10.0 64-bit</td>-->
+                            <!--<td>Chrome 55.0.2883.87 m (64-bit)</td>-->
+                            <!--<td>2017-01-12 09:09</td>-->
+                            <!--<td>广东省珠海市 电信(116.19.86.133)</td>-->
+                        <!--</tr>-->
+                        <!--<tr>-->
+                            <!--<td>Windows NT 10.0 64-bit</td>-->
+                            <!--<td>Chrome 55.0.2883.87 m (64-bit)</td>-->
+                            <!--<td>2017-01-12 09:09</td>-->
+                            <!--<td>广东省珠海市 电信(116.19.86.133)</td>-->
+                        <!--</tr>-->
+                        <!--<tr>-->
+                            <!--<td>Windows NT 10.0 64-bit</td>-->
+                            <!--<td>Chrome 55.0.2883.87 m (64-bit)</td>-->
+                            <!--<td>2017-01-12 09:09</td>-->
+                            <!--<td>广东省珠海市 电信(116.19.86.133)</td>-->
+                        <!--</tr>-->
+                        <!--</tbody>-->
+                    <!--</table>-->
+                    <!--<nav aria-label="...">-->
+                        <!--<ul class="pagination">-->
+                            <!--<li class="page-item disabled">-->
+                                <!--<a class="page-link" href="#" tabindex="-1">上一页</a>-->
+                            <!--</li>-->
+                            <!--<li class="page-item active"><a class="page-link" href="#">1</a></li>-->
+                            <!--<li class="page-item"><a class="page-link" href="#">2</a></li>-->
+                            <!--<li class="page-item"><a class="page-link" href="#">3</a></li>-->
+                            <!--<li class="page-item">-->
+                                <!--<a class="page-link" href="#">下一页</a>-->
+                            <!--</li>-->
+                        <!--</ul>-->
+                    <!--</nav>-->
+                <!--</div>-->
+            </div>
+        </div>
+    </div>
+</div>
+<!--弹出异常登录提醒-->
+<div class="modal fade" id="phoneTips" data-backdrop="static">
+    <div class="modal-dialog" role="document">
+        <div class="modal-content">
+            <div class="modal-body">
+                <p>开启异常登录提醒,需要先为您的通行账号添加手机号码。</p>
+                <p><a class="btn btn-primary btn-sm" href="#">去添加手机</a></p>
+            </div>
+            <div class="modal-footer">
+                <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
+            </div>
+        </div>
+    </div>
+</div>
+<!-- JS. -->
+<script src="/lib/jquery/jquery.min.js"></script>
+<script src="/lib/tether/tether.min.js"></script>
+<script src="/lib/bootstrap/bootstrap.min.js"></script>
+<script src="/web/building_saas/js/global.js"></script>
+</body>
+<script type="text/javascript">
+    autoFlashHeight();
+</script>
+
+</html>

+ 101 - 0
web/users/js/login.js

@@ -0,0 +1,101 @@
+/**
+ * 登录相关js
+ *
+ * @author CaiAoLin
+ * @date 2017/6/8
+ * @version
+ */
+$(document).ready(function () {
+    let referer = scUrlUtil.GetQueryString('referer');
+
+    $("#login").click(function () {
+        if (!valid()) {
+            return false;
+        }
+        let account = $("#inputEmail").val();
+        let pw = $("#inputPassword").val();
+
+        $.ajax({
+            url: '/login',
+            type: 'post',
+            data: {"account": account, "pw": pw},
+            success: function (response) {
+                if (response.error === 0) {
+                    if (response.exist == 1) {
+                        location.href = '/pm';
+                    } else {
+                        $('#ver').modal('show');
+                    }
+                    // if (referer) {
+                    //     location.href = referer;
+                    // } else {
+                    //     location.href = '/';
+                    // }
+                } else {
+                    let msg = response.msg !== undefined ? response.msg : '未知错误';
+                    showError(msg, $("input"));
+                }
+            },
+            error: function (result) {
+                showError('内部程序错误', null);
+            }
+        });
+    });
+
+    $("input").blur(function () {
+        cleanError();
+    });
+
+    $(".form-control").on('input', function () {
+        $('#hint').html('&nbsp;');
+    });
+
+});
+
+/**
+ * 验证数据
+ *
+ * @return {boolean}
+ */
+function valid() {
+    let result = true;
+    let account = $("#inputEmail").val();
+    if (account === undefined || account === '') {
+        showError('用户名不能为空!', $("#inputEmail"));
+        return false;
+    }
+
+    let password = $("#inputPassword").val();
+    if (password === undefined || password === '') {
+        showError('密码不能为空!', $("#inputPassword"));
+        return false;
+    }
+
+    return result;
+}
+
+/**
+ * 提示错误
+ *
+ * @param {string} msg
+ * @param {object} element
+ * @return {void}
+ */
+function showError(msg, element) {
+    if (element !== null) {
+        element.parent().addClass('has-danger');
+    }
+    $("#message").text(msg);
+    $("#error-tips").show("fast");
+}
+
+/**
+ * 清除错误提示
+ *
+ * @return {void}
+ */
+function cleanError() {
+    $("input").parent().removeClass('has-danger');
+    $("#message").text('');
+    $("#error-tips").hide("fast");
+}

+ 78 - 0
web/users/js/user.js

@@ -0,0 +1,78 @@
+/**
+ * 用户相关js
+ *
+ * @author CaiAoLin
+ * @date 2017/6/13
+ * @version
+ */
+$(document).ready(function() {
+
+    $("#info-form").submit(function() {
+        if (!valid()) {
+            return false;
+        }
+    });
+
+    $("input").blur(function () {
+        cleanError();
+    });
+});
+
+/**
+ * 验证数据
+ *
+ * @return {boolean}
+ */
+function valid() {
+    let result = true;
+    let name = $("#name").val();
+    if (name === undefined || name === '') {
+        showError('您得填上姓名!', $("#name"));
+        return false;
+    }
+
+    let company = $("#company").val();
+    if (company === undefined || company === '') {
+        showError('您得填上公司名称!', $("#company"));
+        return false;
+    }
+
+    let province = $("#province").val();
+    if (province === undefined || province === '') {
+        showError('您得选择企业所在地区!', $("#province"));
+        return false;
+    }
+
+    return result;
+}
+
+/**
+ * 提示错误
+ *
+ * @param {string} msg
+ * @param {object} element
+ * @return {void}
+ */
+function showError(msg, element) {
+    element.addClass('orm-control-danger');
+    if (element !== null) {
+        element.parent().addClass('has-danger');
+    }
+    let html = '<div class="form-control-feedback">' + msg + '</div>';
+    if (element.siblings('.form-control-feedback').length > 0) {
+        element.siblings('.form-control-feedback').text(msg);
+    } else {
+        element.after(html);
+    }
+}
+
+/**
+ * 清除错误提示
+ *
+ * @return {void}
+ */
+function cleanError() {
+    $("input").removeClass('orm-control-danger');
+    $("input").parent().removeClass('has-danger');
+    $(".form-control-feedback").remove();
+}

+ 0 - 88
web/users/login-infoinput.html

@@ -1,88 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-
-<head>
-    <meta charset="utf-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
-    <meta http-equiv="x-ua-compatible" content="ie=edge">
-    <title>用户信息填写-Smartcost</title>
-    <link rel="stylesheet" href="css/bootstrap/bootstrap.min.css">
-    <link rel="stylesheet" href="css/bootstrap/themes.css">
-    <link rel="stylesheet" href="css/main.css">
-    <link rel="stylesheet" href="css/font-awesome/font-awesome.min.css">
-</head>
-
-<body>
-    <div class="header">
-        <nav class="navbar navbar-toggleable-lg navbar-light bg-faded p-0 justify-content-between">
-            <span class="header-logo px-2">Smartcost</span>
-            <div class="float-lg-right navbar-text pt-0">
-                <div class=" d-inline-block">
-                    <button class="btn btn-link btn-sm " type="button">15812644017</button>
-                </div>
-                <span class="btn btn-link btn-sm new-msg">
-                  <i class="fa fa-envelope-o" aria-hidden="true"></i>&nbsp;2
-                </span>
-                <button class="btn btn-link btn-sm">注销</button>
-            </div>
-        </nav>
-    </div>
-    <div class="container mt-3">
-        <div class="row">
-            <div class="col-lg-8 offset-lg-2">
-                <div class="card newuser-input">
-                    <div class="card-block">
-                        <h4 class="card-title">在开始使用前,请填写以下信息。</h4>
-                        <h6 class="card-subtitle text-muted">详细填写这些信息,可以让我们更好的服务您。</h6>
-                    </div>
-                    <div class="card-block">
-                            <div class="form-group">
-                                <input class="form-control" placeholder="你的姓名" required="" autofocus="">
-                            </div>
-                            <div class="form-group">
-                                <input class="form-control" placeholder="企业名称" required="" autofocus="">
-                            </div>
-                            <div class="form-group">
-                                <select class="form-control">
-                                  <option>请选择企业所在地区</option>
-                                  <option>广东省</option>
-                                  <option>北京市</option>
-                                </select>
-                            </div>
-                        <div class="form-group">
-                            <a class="btn btn-link" data-toggle="collapse" href="#moreinfo" aria-expanded="false" aria-controls="moreinfo">更多选项</a>
-                        </div>
-                        <div class="collapse" id="moreinfo">
-                                <div class="form-group">
-                                    <select class="form-control">
-                                     <option>请选择企业类型</option>
-                                     <option>设计</option>
-                                     <option>施工</option>
-                                   </select>
-                                </div>
-                                <div class="form-group">
-                                    <select class="form-control">
-                                     <option>请选择企业规模</option>
-                                     <option>1-20</option>
-                                     <option>20-50</option>
-                                     <option>50-100</option>
-                                     <option>100+</option>
-                                   </select>
-                                </div>
-                        </div>
-                        <div class="form-group">
-                            <a class="btn btn-primary btn-block" href="login-welcome.html">下一步</a>
-                        </div>
-                    </div>
-                </div>
-            </div>
-        </div>
-    </div>
-    <!-- JS. -->
-    <script src="js/jquery/jquery.min.js"></script>
-    <script src="js/tether/tether.min.js"></script>
-    <script src="js/bootstrap/bootstrap.min.js"></script>
-    <script src="js/global.js"></script>
-</body>
-
-</html>

+ 0 - 296
web/users/login-welcome.html

@@ -1,296 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-
-<head>
-    <meta charset="utf-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
-    <meta http-equiv="x-ua-compatible" content="ie=edge">
-    <title>项目管理-Smartcost</title>
-    <link rel="stylesheet" href="css/bootstrap/bootstrap.min.css">
-    <link rel="stylesheet" href="css/bootstrap/themes.css">
-    <link rel="stylesheet" href="css/main.css">
-    <link rel="stylesheet" href="css/font-awesome/font-awesome.min.css">
-</head>
-
-<body>
-    <div class="header">
-      <nav class="navbar navbar-toggleable-lg navbar-light bg-faded p-0 justify-content-between">
-      <span class="header-logo px-2">Smartcost</span>
-      <div class="navbar-text pt-0">
-          <div class="dropdown d-inline-block">
-              <button class="btn btn-link btn-sm dropdown-toggle" type="button" data-toggle="dropdown">陈特</button>
-              <div class="dropdown-menu dropdown-menu-right">
-                  <a class="dropdown-item" href="user-info.html" target="_blank">账号资料</a>
-                  <a class="dropdown-item" href="user-buy.html" target="_blank">产品购买</a>
-                  <a class="dropdown-item" href="user-set.html" target="_blank">偏好设置</a>
-              </div>
-          </div>
-          <span class="btn btn-link btn-sm new-msg">
-            <i class="fa fa-envelope-o" aria-hidden="true"></i>&nbsp;2
-          </span>
-          <button class="btn btn-link btn-sm">注销</button>
-      </div>
-    </nav>
-      <nav class="navbar navbar-toggleable-lg justify-content-between navbar-light p-0">
-        <ul class="nav navbar-nav px-1">
-            <li class="nav-item dropdown">
-                <a class="nav-link dropdown-toggle" href="http://example.com" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">文件</a>
-                <div class="dropdown-menu" aria-labelledby="supportedContentDropdown">
-                    <a class="dropdown-item" href="#">Action</a>
-                    <a class="dropdown-item" href="#">Another action</a>
-                    <a class="dropdown-item" href="#">Something else here</a>
-                </div>
-            </li>
-            <li class="nav-item dropdown">
-                <a class="nav-link dropdown-toggle" href="#" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">编辑</a>
-                <div class="dropdown-menu">
-                    <a class="dropdown-item" href="#">Action</a>
-                    <a class="dropdown-item" href="#">Another action</a>
-                    <a class="dropdown-item" href="#">Something else here</a>
-                </div>
-            </li>
-            <li class="nav-item dropdown">
-                <a class="nav-link dropdown-toggle" href="#" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">工具</a>
-                <div class="dropdown-menu">
-                    <a class="dropdown-item" href="#">Action</a>
-                    <a class="dropdown-item" href="#">Another action</a>
-                    <a class="dropdown-item" href="#">Something else here</a>
-                </div>
-            </li>
-            <li class="nav-item">
-                <a class="nav-link" href="#" aria-haspopup="true" aria-expanded="false">帮助</a>
-            </li>
-        </ul>
-        <form class="form-inline">
-            <input class="form-control form-control-sm mr-1" type="text" placeholder="告诉我你想做什么">
-        </form>
-    </nav>
-    </div>
-    <div class="main">
-        <div class="poj-manage container-fluid">
-            <div class="row">
-                <div class="col-lg-2">
-                    <div class="poj-cate">
-                        <input type="text" class="mt-1 mb-1 form-control form-control-sm" placeholder="搜索所有工程">
-                        <ul class="nav nav-pills flex-column">
-                            <li class="nav-item">
-                                <a class="nav-link active" href="#">全部</a>
-                            </li>
-                            <li class="nav-item">
-                                <a class="nav-link" href="#">最近使用</a>
-                            </li>
-                            <li class="nav-item">
-                                <a class="nav-link" href="#">共享</a>
-                            </li>
-                            <li class="nav-item">
-                                <a class="nav-link" href="#">协同工作</a>
-                            </li>
-                            <li class="nav-item">
-                                <a class="nav-link" href="#">归档</a>
-                            </li>
-                            <li class="nav-item">
-                                <a class="nav-link" href="#">回收站</a>
-                            </li>
-                        </ul>
-                    </div>
-                </div>
-                <div class="col-lg-10">
-                    <div class="toolsbar">
-                        <div class="tools-btn btn-group align-top">
-                            <a href="" class="btn btn-sm">新建工程</a>
-                            <a href="" class="btn btn-sm"><i class="fa fa-folder-o"></i>&nbsp;新建文件夹</a>
-                            <a href="" class="btn btn-sm">重命名</a>
-                            <a href="" class="btn btn-sm">删除</a>
-                            <a href="" class="btn btn-sm">移动到...</a>
-                            <a href="" class="btn btn-sm">复制到...</a>
-                            <a href="" class="btn btn-sm">共享</a>
-                            <a href="" class="btn btn-sm">协同</a>
-                        </div>
-                    </div>
-                    <div class="poj-list">
-                        <legend>全部</legend>
-                        <table class="table table-hover table-sm">
-                            <thead>
-                                <tr>
-                                    <th width="40"></th>
-                                    <th width="38%"></th>
-                                    <th width="40%">工程名称</th>
-                                    <th width="10%">最近使用</th>
-                                    <th width="10%">创建日期</th>
-                                </tr>
-                            </thead>
-                            <tbody>
-                                <tr>
-                                    <td></td>
-                                    <td><a href="#" class="tree-open" title="收起"><i class="fa fa-minus-square-o mr-1"></i></a><i class="fa fa-folder-open-o"></i>&nbsp;XX项目文件夹</td>
-                                    <td></td>
-                                    <td></td>
-                                    <td></td>
-                                </tr>
-                                <tr>
-                                    <td></td>
-                                    <td class="pl-1"><a href="#" class="tree-open" title="收起"><i class="fa fa-minus-square-o mr-1"></i></a><i class="fa fa-folder-open-o"></i>&nbsp;XX项目文件夹</td>
-                                    <td></td>
-                                    <td></td>
-                                    <td></td>
-                                </tr>
-                                <tr>
-                                    <td></td>
-                                    <td class="pl-2"><a href="#" class="tree-open" title="收起"><i class="fa fa-minus-square-o mr-1"></i></a><i class="fa fa-folder-open-o"></i>&nbsp;<a href="#">某某某某工厂工厂某某工厂建设某某工厂建设</a></td>
-                                    <td></td>
-                                    <td></td>
-                                    <td></td>
-                                </tr>
-                                <tr>
-                                    <td></td>
-                                    <td class="pl-3"><a href="#" class="tree-open" title="收起"><i class="fa fa-minus-square-o mr-1"></i></a><i class="fa fa-folder-open-o"></i>&nbsp;<a href="#" class="open-sidebar">1号生产车间(click)</a></td>
-                                    <td></td>
-                                    <td></td>
-                                    <td></td>
-                                </tr>
-                                <tr>
-                                    <td><i class="fa fa-sort" data-toggle="tooltip" data-placement="top" title="长安拖动"></i></td>
-                                    <td></td>
-                                    <td><a href="zaojiashu.html">建筑工程(click)</a></td>
-                                    <td>2016-01-01</td>
-                                    <td>2016-01-01</td>
-                                </tr>
-                                <tr>
-                                    <td></td>
-                                    <td></td>
-                                    <td><a href="#">机械设备安装工程</a></td>
-                                    <td>2016-01-01</td>
-                                    <td>2016-01-01</td>
-                                </tr>
-                                <tr>
-                                    <td></td>
-                                    <td class="pl-2"><a href="#" class="tree-close" title="展开"><i class="fa fa-plus-square-o  mr-1"></i></a><i class="fa fa-folder-o"></i>&nbsp;<a href="#">2号生产车间</a></td>
-                                    <td>......</td>
-                                    <td></td>
-                                    <td></td>
-                                </tr>
-                            </tbody>
-                        </table>
-                    </div>
-                </div>
-            </div>
-        </div>
-        <div class="slide-sidebar">
-            <div class="side-content">
-                <div class="p-1">
-                    <legend>1号生产车间 汇总</legend>
-                    <table class="table table-bordered table-hover table-sm">
-                        <thead>
-                            <tr>
-                                <th rowspan="2"></th>
-                                <th rowspan="2">序号</th>
-                                <th rowspan="2">名称</th>
-                                <th rowspan="2">金额</th>
-                                <th colspan="6">其中</th>
-                                <th rowspan="2">占造价比例(%)</th>
-                                <th rowspan="2">建筑面积</th>
-                                <th rowspan="2">单方造价</th>
-                            </tr>
-                            <tr>
-                                <th>分部分项合计</th>
-                                <th>措施项目合计</th>
-                                <th>其他项目合计</th>
-                                <th>安全文明施工费</th>
-                                <th>规费</th>
-                                <th>税金</th>
-                            </tr>
-                        </thead>
-                        <tbody>
-                            <tr>
-                                <td>1</td>
-                                <td>一</td>
-                                <td>建筑工程</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                            </tr>
-                            <tr>
-                                <td>2</td>
-                                <td>二</td>
-                                <td>建筑工程</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                            </tr>
-                            <tr>
-                                <td>3</td>
-                                <td> </td>
-                                <td> </td>
-                                <td> </td>
-                                <td> </td>
-                                <td> </td>
-                                <td> </td>
-                                <td> </td>
-                                <td> </td>
-                                <td> </td>
-                                <td> </td>
-                                <td> </td>
-                                <td> </td>
-                            </tr>
-                            <tr>
-                                <td>4</td>
-                                <td>一</td>
-                                <td>合计</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td> </td>
-                                <td> </td>
-                                <td> </td>
-                            </tr>
-                        </tbody>
-                    </table>
-                </div>
-            </div>
-        </div>
-    </div>
-    <!--弹出信息-->
-    <div class="modal fade" id="myModal" data-backdrop="static">
-        <div class="modal-dialog modal-lg" role="document">
-            <div class="modal-content">
-                <div class="modal-header">
-                    <h5 class="modal-title">欢迎使用Smartcost</h5>
-                </div>
-                <div class="modal-body">
-                    <p>推送内容在这</p>
-                </div>
-                <div class="modal-footer text-xs-center">
-                    <a href="project-management.html" class="btn btn-primary btn-lg">开始使用Smartcost</a>
-                </div>
-            </div>
-        </div>
-    </div>
-    <!-- JS. -->
-    <script src="js/jquery/jquery.min.js"></script>
-    <script src="js/tether/tether.min.js"></script>
-    <script src="js/bootstrap/bootstrap.min.js"></script>
-    <script src="js/global.js"></script>
-</body>
-<script type="text/javascript">
-    $('#myModal').modal('show')
-</script>
-
-</html>

+ 0 - 589
web/users/project-management.html

@@ -1,589 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-
-<head>
-    <meta charset="utf-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
-    <meta http-equiv="x-ua-compatible" content="ie=edge">
-    <title>项目管理-Smartcost</title>
-    <link rel="stylesheet" href="/lib/bootstrap/css/bootstrap.min.css">
-    <!--<link rel="stylesheet" href="/web/css/bootstrap/themes.css">-->
-    <link rel="stylesheet" href="/web/building_saas/css/main.css">
-    <link rel="stylesheet" href="/lib/font-awesome/font-awesome.min.css">
-    <!--zTree-->
-  	<link rel="stylesheet" href="/lib/ztree/css/zTreeStyle.css" type="text/css">
-
-    <script>
-        // 这里的变量供页面调用
-        var userAccount = '<%- userAccount %>';
-        var userID = '<%- userID %>';
-    </script>
-</head>
-
-<body>
-    <div class="header">
-<!--        <div class="top-msg clearfix">
-            <div class="alert alert-warning mb-0 py-0" role="alert">
-                <button type="button" class="close" data-dismiss="alert" aria-label="Close">
-                  <span aria-hidden="true">&times;</span>
-                </button>
-                <strong>注意!</strong> 这是一条消息通知 <a href="#">链接</a>
-            </div>
-        </div>-->
-        <nav class="navbar navbar-toggleable-lg navbar-light bg-faded p-0 justify-content-between">
-          <span class="header-logo px-2">Smartcost</span>
-          <div class="navbar-text pt-0">
-              <div class="dropdown d-inline-block">
-                  <button class="btn btn-link btn-sm dropdown-toggle" type="button" data-toggle="dropdown"><%- userAccount %></button>
-                  <div class="dropdown-menu dropdown-menu-right">
-                      <a class="dropdown-item" href="user-info.html" target="_blank">账号资料</a>
-                      <a class="dropdown-item" href="user-buy.html" target="_blank">产品购买</a>
-                      <a class="dropdown-item" href="user-set.html" target="_blank">偏好设置</a>
-                  </div>
-              </div>
-              <span class="btn btn-link btn-sm new-msg">
-                <i class="fa fa-envelope-o" aria-hidden="true"></i>&nbsp;2
-              </span>
-              <button id="logout" class="btn btn-link btn-sm">注销</button>
-          </div>
-        </nav>
-        <nav class="navbar navbar-toggleable-lg justify-content-between navbar-light p-0">
-            <ul class="nav navbar-nav px-1">
-                <li class="nav-item dropdown">
-                    <a class="nav-link dropdown-toggle" href="http://example.com" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">文件</a>
-                    <div class="dropdown-menu" aria-labelledby="supportedContentDropdown">
-                        <a class="dropdown-item" href="#">Action</a>
-                        <a class="dropdown-item" href="#">Another action</a>
-                        <a class="dropdown-item" href="#">Something else here</a>
-                    </div>
-                </li>
-                <li class="nav-item dropdown">
-                    <a class="nav-link dropdown-toggle" href="#" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">编辑</a>
-                    <div class="dropdown-menu">
-                        <a class="dropdown-item" href="#">Action</a>
-                        <a class="dropdown-item" href="#">Another action</a>
-                        <a class="dropdown-item" href="#">Something else here</a>
-                    </div>
-                </li>
-                <li class="nav-item dropdown">
-                    <a class="nav-link dropdown-toggle" href="#" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">工具</a>
-                    <div class="dropdown-menu">
-                        <a class="dropdown-item" href="#">Action</a>
-                        <a class="dropdown-item" href="#">Another action</a>
-                        <a class="dropdown-item" href="#">Something else here</a>
-                    </div>
-                </li>
-                <li class="nav-item">
-                    <a class="nav-link" href="#" aria-haspopup="true" aria-expanded="false">帮助</a>
-                </li>
-            </ul>
-            <form class="form-inline">
-                <input class="form-control form-control-sm mr-1" type="text" placeholder="告诉我你想做什么">
-            </form>
-        </nav>
-    </div>
-    <div class="main">
-        <div class="poj-manage container-fluid">
-            <div class="row">
-                <div class="col-lg-2">
-                    <div class="poj-cate">
-                        <input type="text" class="my-2 form-control form-control-sm" placeholder="搜索所有工程">
-                        <ul class="nav nav-pills flex-column">
-                            <li class="nav-item">
-                                <a class="nav-link active" href="#">全部</a>
-                            </li>
-                            <li class="nav-item">
-                                <a class="nav-link" href="#">最近使用</a>
-                            </li>
-                            <li class="nav-item">
-                                <a class="nav-link" href="#">共享</a>
-                            </li>
-                            <li class="nav-item">
-                                <a class="nav-link" href="#">协同工作</a>
-                            </li>
-                            <li class="nav-item">
-                                <a class="nav-link" href="#">归档</a>
-                            </li>
-                            <li class="nav-item">
-                                <a class="nav-link" href="#">回收站</a>
-                            </li>
-                        </ul>
-                    </div>
-                </div>
-                <div class="col-lg-10">
-                    <div class="toolsbar">
-                        <div class="tools-btn btn-group align-top">
-                            <a href="javacript:void(0);" data-toggle="modal" data-target="#addPoj" class="btn btn-sm">新建工程</a>
-                            <a href="javacript:void(0);" data-toggle="modal" data-target="#addFolder" class="btn btn-sm"><i class="fa fa-folder-o"></i>&nbsp;新建文件夹</a>
-                            <a href="javacript:void(0);" data-toggle="modal" data-target="#rename" class="btn btn-sm">重命名</a>
-                            <a href="javacript:void(0);" data-toggle="modal" data-target="#del" class="btn btn-sm">删除</a>
-                            <a href="javacript:void(0);" data-toggle="modal" data-target="#moveto" class="btn btn-sm">移动到...</a>
-                            <a href="javacript:void(0);" data-toggle="modal" data-target="#copyto" class="btn btn-sm">复制到...</a>
-                            <a href="" class="btn btn-sm">共享</a>
-                            <a href="" class="btn btn-sm">协同</a>
-                        </div>
-                    </div>
-                    <div class="poj-list">
-                        <legend>全部</legend>
-                        <table class="table table-hover table-sm">
-                            <thead>
-                                <tr>
-                                    <th width="40"></th>
-                                    <th width="78%">工程列表</th>
-                                    <th width="10%">最近使用</th>
-                                    <th width="10%">创建日期</th>
-                                </tr>
-                            </thead>
-                            <tbody>
-                                <tr>
-                                    <td></td>
-                                    <td class="in-1"><a href="#" class="tree-open" title="收起"><i class="fa fa-minus-square-o mr-1"></i></a><i class="fa fa-folder-open-o"></i>&nbsp;XX项目文件夹</td>
-                                    <td></td>
-                                    <td></td>
-                                </tr>
-                                  <tr>
-                                      <td></td>
-                                      <td class="in-2"><a href="#" class="tree-open" title="收起"><i class="fa fa-minus-square-o mr-1"></i></a><i class="fa fa-folder-open-o"></i>&nbsp;XX项目文件夹</td>
-                                      <td></td>
-                                      <td></td>
-                                  </tr>
-                                <tr>
-                                    <td></td>
-                                    <td class="in-3"><a href="#" class="tree-open" title="收起"><i class="fa fa-minus-square-o mr-1"></i></a><i class="fa fa-folder-open-o"></i>&nbsp;XX项目文件夹</td>
-                                    <td></td>
-                                    <td></td>
-                                </tr>
-                                <tr>
-                                    <td></td>
-                                    <td class="in-4"><a href="#" class="tree-open" title="收起"><i class="fa fa-minus-square-o mr-1"></i></a><i class="fa fa-folder-open-o"></i>&nbsp;<a href="#">某某某某工厂工厂某某工厂建设某某工厂建设</a></td>
-                                    <td></td>
-                                    <td></td>
-                                </tr>
-                                <tr>
-                                    <td></td>
-                                    <td class="in-5"><a href="#" class="tree-open" title="收起"><i class="fa fa-minus-square-o mr-1"></i></a><i class="fa fa-folder-open-o"></i>&nbsp;<a href="#" class="open-sidebar">左1号生产车间(click)</a></td>
-                                    <td></td>
-                                    <td></td>
-                                </tr>
-                                <tr>
-                                    <td><i class="fa fa-sort" data-toggle="tooltip" data-placement="top" title="长安拖动"></i></td>
-                                    <td class="in-6"><span class="in-3 poj-icon">└</span><a href="zaojiashu.html">建筑工程(click)</a></td>
-                                    <td>2016-01-01</td>
-                                    <td>2016-01-01</td>
-                                </tr>
-                                <tr>
-                                    <td></td>
-                                    <td class="in-6"><span class="in-3 poj-icon">└</span><a href="#">机械设备安装工程</a></td>
-                                    <td>2016-01-01</td>
-                                    <td>2016-01-01</td>
-                                </tr>
-                                <tr>
-                                    <td></td>
-                                    <td class="in-5"><a href="#" class="tree-close" title="展开"><i class="fa fa-plus-square-o  mr-1"></i></a><i class="fa fa-folder-o"></i>&nbsp;<a href="#">2号生产车间</a></td>
-                                    <td>......</td>
-                                    <td>......</td>
-                                </tr>
-                            </tbody>
-                        </table>
-                    </div>
-                </div>
-            </div>
-        </div>
-        <div class="slide-sidebar">
-            <div class="side-content">
-                <div class="p-3">
-                    <legend>1号生产车间 汇总</legend>
-                    <table class="table table-bordered table-hover table-sm">
-                        <thead>
-                            <tr>
-                                <th rowspan="2"></th>
-                                <th rowspan="2">序号</th>
-                                <th rowspan="2">名称</th>
-                                <th rowspan="2">金额</th>
-                                <th colspan="6">其中</th>
-                                <th rowspan="2">占造价比例(%)</th>
-                                <th rowspan="2">建筑面积</th>
-                                <th rowspan="2">单方造价</th>
-                            </tr>
-                            <tr>
-                                <th>分部分项合计</th>
-                                <th>措施项目合计</th>
-                                <th>其他项目合计</th>
-                                <th>安全文明施工费</th>
-                                <th>规费</th>
-                                <th>税金</th>
-                            </tr>
-                        </thead>
-                        <tbody>
-                            <tr>
-                                <td>1</td>
-                                <td>一</td>
-                                <td>建筑工程</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                            </tr>
-                            <tr>
-                                <td>2</td>
-                                <td>二</td>
-                                <td>建筑工程</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                            </tr>
-                            <tr>
-                                <td>3</td>
-                                <td> </td>
-                                <td> </td>
-                                <td> </td>
-                                <td> </td>
-                                <td> </td>
-                                <td> </td>
-                                <td> </td>
-                                <td> </td>
-                                <td> </td>
-                                <td> </td>
-                                <td> </td>
-                                <td> </td>
-                            </tr>
-                            <tr>
-                                <td>4</td>
-                                <td>一</td>
-                                <td>合计</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td>0</td>
-                                <td> </td>
-                                <td> </td>
-                                <td> </td>
-                            </tr>
-                        </tbody>
-                    </table>
-                </div>
-            </div>
-        </div>
-    </div>
-    <!--弹出新建工程-->
-    <div class="modal fade" id="addPoj" data-backdrop="static">
-        <div class="modal-dialog" role="document">
-            <div class="modal-content">
-                <div class="modal-header">
-                  <h5 class="modal-title">新建工程</h5>
-                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
-                      <span aria-hidden="true">&times;</span>
-                    </button>
-                </div>
-                <div class="modal-body">
-                    <form>
-                    <div class="collapse" id="moreinfo">
-                        <div class="form-group">
-                            <label>建设项目</label>
-                            <input type="text" class="form-control" placeholder="输入建设项目名称">
-                        </div>
-                        <div class="form-group">
-                            <label>单项工程</label>
-                            <input type="text" class="form-control" placeholder="输入单项工程名称">
-                        </div>
-                      </div>
-                        <div class="form-group">
-                            <label>单位工程</label>
-                            <input type="text" class="form-control" placeholder="输入单位工程名称">
-                        </div>
-                        <div class="form-group" >
-                            <label class="custom-control custom-checkbox">
-                              <input type="checkbox" class="custom-control-input" href="#moreinfo" data-toggle="collapse" data-parent="#moreinfo" aria-expanded="false" aria-controls="moreinfo">
-                              <span class="custom-control-indicator" ></span>
-                              <span class="custom-control-description">建立 <b>建设项目</b> 和 <b>单项工程</b> 文件夹</span>
-                            </label>
-                        </div>
-                        <div class="form-group">
-                            <label>计价方式</label>
-                            <div>
-                                <label class="custom-control custom-radio">
-                                  <input id="radio1" name="radio" type="radio" class="custom-control-input">
-                                  <span class="custom-control-indicator"></span>
-                                  <span class="custom-control-description">清单计价</span>
-                                </label>
-                                <label class="custom-control custom-radio">
-                                  <input id="radio2" name="radio" type="radio" class="custom-control-input">
-                                  <span class="custom-control-indicator"></span>
-                                  <span class="custom-control-description">定额计价</span>
-                                </label>
-                            </div>
-                        </div>
-                    </form>
-                </div>
-                <div class="modal-footer">
-                    <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
-                    <a href="project-management.html" class="btn btn-primary">确定</a>
-                </div>
-            </div>
-        </div>
-    </div>
-    <!--弹出新建文件夹-->
-    <div class="modal fade" id="addFolder" data-backdrop="static">
-        <div class="modal-dialog" role="document">
-            <div class="modal-content">
-                <div class="modal-header">
-                  <h5 class="modal-title">新建文件夹</h5>
-                  <button type="button" class="close" data-dismiss="modal" aria-label="Close">
-                    <span aria-hidden="true">&times;</span>
-                  </button>
-                </div>
-                <div class="modal-body">
-                    <form>
-                        <div class="form-group">
-                            <label>文件夹</label>
-                            <input type="text" class="form-control" placeholder="输入文件夹名称">
-                            <span class="form-text text-muted">Smartcost为你提供了灵活的工程管理功能,如:</span>
-                            <span class="form-text text-muted">当你想汇总多个 <b>单位工程</b> 时,只需把它们都放在一个文件夹即可。</span>
-                        </div>
-                    </form>
-                </div>
-                <div class="modal-footer">
-                    <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
-                    <a href="project-management.html" class="btn btn-primary">确定</a>
-                </div>
-            </div>
-        </div>
-    </div>
-    <!--弹出重命名-->
-    <div class="modal fade" id="rename" data-backdrop="static">
-        <div class="modal-dialog" role="document">
-            <div class="modal-content">
-                <div class="modal-header">
-                  <h5 class="modal-title">重命名</h5>
-                  <button type="button" class="close" data-dismiss="modal" aria-label="Close">
-                    <span aria-hidden="true">&times;</span>
-                  </button>
-                </div>
-                <div class="modal-body">
-                    <form>
-                        <div class="form-group">
-                            <input type="text" class="form-control" placeholder="输入名称">
-                        </div>
-                    </form>
-                </div>
-                <div class="modal-footer">
-                    <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
-                    <a href="project-management.html" class="btn btn-primary">确定</a>
-                </div>
-            </div>
-        </div>
-    </div>
-    <!--弹出删除-->
-    <div class="modal fade" id="del" data-backdrop="static">
-        <div class="modal-dialog" role="document">
-            <div class="modal-content">
-                <div class="modal-header">
-                  <h5 class="modal-title">删除确认</h5>
-                  <button type="button" class="close" data-dismiss="modal" aria-label="Close">
-                    <span aria-hidden="true">&times;</span>
-                  </button>
-                </div>
-                <div class="modal-body">
-                    <h5 class="text-danger">删除 "建筑工程" ?</h5>
-                    <h5 class="text-danger">删除 "XX项目文件夹" 以及它包含的子项?</h5>
-                    <p class="">删除后,你可以在回收站找到它。</p>
-                </div>
-                <div class="modal-footer">
-                    <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
-                    <a href="" class="btn btn-danger">删除</a>
-                </div>
-            </div>
-        </div>
-    </div>
-    <!--弹出移动到-->
-    <div class="modal fade" id="moveto" data-backdrop="static">
-        <div class="modal-dialog" role="document">
-            <div class="modal-content">
-                <div class="modal-header">
-                  <h5 class="modal-title">移动到...</h5>
-                  <button type="button" class="close" data-dismiss="modal" aria-label="Close">
-                    <span aria-hidden="true">&times;</span>
-                  </button>
-                </div>
-                <div class="modal-body">
-                  <ul id="treeDemo" class="ztree"></ul>
-                </div>
-                <div class="modal-footer">
-                    <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
-                    <a href="" class="btn btn-primary">确定</a>
-                </div>
-            </div>
-        </div>
-    </div>
-    <!--弹出复制到-->
-    <div class="modal fade" id="copyto" data-backdrop="static">
-        <div class="modal-dialog" role="document">
-            <div class="modal-content">
-                <div class="modal-header">
-                  <h5 class="modal-title">复制到...</h5>
-                  <button type="button" class="close" data-dismiss="modal" aria-label="Close">
-                    <span aria-hidden="true">&times;</span>
-                  </button>
-                </div>
-                <div class="modal-body">
-                  <ul id="treeDemo2" class="ztree"></ul>
-                </div>
-                <div class="modal-footer">
-                    <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
-                    <a href="" class="btn btn-primary">确定</a>
-                </div>
-            </div>
-        </div>
-    </div>
-    <!-- JS. -->
-    <script src="/lib/jquery/jquery.min.js"></script>
-    <script src="/lib/tether/tether.min.js"></script>
-    <script src="/lib/bootstrap/bootstrap.min.js"></script>
-    <script src="/web/building_saas/js/global.js"></script>
-    <!-- zTree -->
-  	<script type="text/javascript" src="/lib/ztree/jquery.ztree.core.js"></script>
-  	<script type="text/javascript" src="/lib/ztree/jquery.ztree.excheck.js"></script>
-    <SCRIPT type="text/javascript">
-  		<!--
-  		var setting = {	};
-
-  		var zNodes =[
-  			{ name:"父节点1 - 展开", open:true,
-  				children: [
-  					{ name:"父节点11 - 折叠",
-  						children: [
-  							{ name:"叶子节点111"},
-  							{ name:"叶子节点112"},
-  							{ name:"叶子节点113"},
-  							{ name:"叶子节点114"}
-  						]},
-  					{ name:"父节点12 - 折叠",
-  						children: [
-  							{ name:"叶子节点121"},
-  							{ name:"叶子节点122"},
-  							{ name:"叶子节点123"},
-  							{ name:"叶子节点124"}
-  						]},
-  					{ name:"父节点13 - 没有子节点", isParent:true}
-  				]},
-  			{ name:"父节点2 - 折叠",
-  				children: [
-  					{ name:"父节点21 - 展开", open:true,
-  						children: [
-  							{ name:"叶子节点211"},
-  							{ name:"叶子节点212"},
-  							{ name:"叶子节点213"},
-  							{ name:"叶子节点214"}
-  						]},
-  					{ name:"父节点22 - 折叠",
-  						children: [
-  							{ name:"叶子节点221"},
-  							{ name:"叶子节点222"},
-  							{ name:"叶子节点223"},
-  							{ name:"叶子节点224"}
-  						]},
-  					{ name:"父节点23 - 折叠",
-  						children: [
-  							{ name:"叶子节点231"},
-  							{ name:"叶子节点232"},
-  							{ name:"叶子节点233"},
-  							{ name:"叶子节点234"}
-  						]}
-  				]},
-  			{ name:"父节点3 - 没有子节点", isParent:true}
-
-  		];
-
-  		$(document).ready(function(){
-  			$.fn.zTree.init($("#treeDemo"), setting, zNodes);
-  		});
-  		//-->
-  	</SCRIPT>
-    <SCRIPT type="text/javascript">
-  		<!--
-  		var setting = {	};
-
-  		var zNodes =[
-  			{ name:"父节点1 - 展开", open:true,
-  				children: [
-  					{ name:"父节点11 - 折叠",
-  						children: [
-  							{ name:"叶子节点111"},
-  							{ name:"叶子节点112"},
-  							{ name:"叶子节点113"},
-  							{ name:"叶子节点114"}
-  						]},
-  					{ name:"父节点12 - 折叠",
-  						children: [
-  							{ name:"叶子节点121"},
-  							{ name:"叶子节点122"},
-  							{ name:"叶子节点123"},
-  							{ name:"叶子节点124"}
-  						]},
-  					{ name:"父节点13 - 没有子节点", isParent:true}
-  				]},
-  			{ name:"父节点2 - 折叠",
-  				children: [
-  					{ name:"父节点21 - 展开", open:true,
-  						children: [
-  							{ name:"叶子节点211"},
-  							{ name:"叶子节点212"},
-  							{ name:"叶子节点213"},
-  							{ name:"叶子节点214"}
-  						]},
-  					{ name:"父节点22 - 折叠",
-  						children: [
-  							{ name:"叶子节点221"},
-  							{ name:"叶子节点222"},
-  							{ name:"叶子节点223"},
-  							{ name:"叶子节点224"}
-  						]},
-  					{ name:"父节点23 - 折叠",
-  						children: [
-  							{ name:"叶子节点231"},
-  							{ name:"叶子节点232"},
-  							{ name:"叶子节点233"},
-  							{ name:"叶子节点234"}
-  						]}
-  				]},
-  			{ name:"父节点3 - 没有子节点", isParent:true}
-
-  		];
-
-  		$(document).ready(function(){
-  			$.fn.zTree.init($("#treeDemo2"), setting, zNodes);
-  		});
-  		//-->
-  	</SCRIPT>
-</body>
-<script type="text/javascript">
-    autoFlashHeight();
-</script>
-
-<script>
-    $(document).ready(function () {
-        $("#logout").click(function () {
-            location.href = '/logout';
-        });
-    });
-</script>
-
-
-
-</html>