jt
2021-06-10 5d0d028456874576560552f5a5c4e8b801786f11
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
var viewModel = function () {
    var self = this;
    //窗体对象
    //observable在Knockoutjs中属于一个核心功能,在做监控数据的改变时,必须要用到 ko.observable的监控属性
    //
    this.form = {
        usercode: ko.observable(),
        password: ko.observable(),
        checkCode: ko.observable(),
        remember: ko.observable(false),
        ip: null,
        city: null
    };
    this.message = ko.observable();
    //事件
    this.loginClick = function (form) {
        var data = (new Function("", "return " + ko.toJSON(self.form)))();
        if (data.usercode == undefined || $.trim(data.usercode) == "") {
            $("#txtEmName").alert('请输入登录帐号!', { alertClass: 'corner', focus: true, position: 'top' });
            createCode();
            return false;
        }
        if (data.password == undefined ||  $.trim(data.password) == "") {
            $("#txtEmPwd").alert('请输入用户密码!', { alertClass: 'corner', focus: true, position: 'top' });
            createCode();
            return false;
        }
        //暂时不启用验证码验证,客户部署后请取消下列代码注释
        ////验证码是否正确
        //var txtverify = $("#checkCode").text();
        ////不匹配
        //if (txtverify != data.checkCode) {
        //    $("#txtverify").alert('验证码不正确!', { alertClass: 'corner', position: 'top' });
        //    createCode();
        //    return false;
        //}
        $.ajax({
            type: "POST",
            url: "/login/doAction",
            data: ko.toJSON(self.form),
            dataType: "json",
            contentType: "application/json",
            success: function (d) {
                if (d.status == '0') {
                    window.location.href = '/Home';
                }
                else {
                    if (d.status == "1") {
                        $(form).find("input.login_button").val("登录");
                        $("#txtEmName").alert(d.message, { alertClass: 'corner', focus: true, position: 'top' });
                        return false;
                    }
                    if (d.status == "2") {
                        $(form).find("input.login_button").val("登录");
                        $("#txtEmPwd").alert(d.message, { alertClass: 'corner', focus: true, position: 'top' });
                        return false;
                    }
                }
            },
            error: function (e) {
                self.message(e.responseText);
            },
            beforeSend: function () {
                $(form).find("input").attr("disabled", true);
                $(form).find("input.login_button").val("登录中,请稍候...");
            },
            complete: function () {
                $(form).find("input").attr("disabled", false);
            }
        });
    };
    //重置事件
    this.resetClick = function () {
        self.form.usercode("");
        self.form.password("");
        self.form.remember(false);
    };
 
};
//// Knockout调用applyBindings激活viewModel(即把viewModel和View中的声明式绑定data-bind关联起来)
$(function () {
    createCode();
    ko.applyBindings(new viewModel());
});
 
//生成验证码
function createCode() {
    var code = "";
    var codeLength = 4; //验证码的长度
    var checkCode = document.getElementById("checkCode");
    if (null != checkCode) {
        checkCode.value = "";
        var selectChar = new Array(2, 3, 4, 5, 6, 7, 8, 9, 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');
        for (var i = 0; i < codeLength; i++) {
            var charIndex = Math.floor(Math.random() * 32);
            code += selectChar[charIndex];
        }
        if (code.length != codeLength) {
            createCode();
        }
        $("#checkCode").html(code);
    }
}