define(function (require, exports, module) { var Window = require('system/views/pages/window'); var tpl = require('text!./change.tpl'); var md5 = CryptoJS.MD5; var isShowkeyBoard = null; function PwdWindow(options) { var self = this; isShowkeyBoard = Store.Cache.get('showkeyboard'); self.options = { title:'', content: '', width: 1024, height: 700, modal: false, closed: false, maximizable: false, closable: false, draggable: false, collapsible:false, data: null, shadow:false }; _.extend(self.options, options); getOpValue(self); _init(self); Window.call(self, self.options); } inherits(PwdWindow, Window); function _init(obj) { var self = obj; if (!self.options.initMsg) { self.options.content = Store.compile(tpl, Store.MSG); return; } var lang = Store.logOn.langId; var _frs = 'locale/'+ lang +'/frs'; var _msg = 'locale/'+ lang +'/common'; var _msgproject = 'locale/'+ lang +'/' + Store.project; require([_frs, _msg, _msgproject], function(msg1, msg2, msg3) { Store.MSG = _.extend(Store.MSG, msg1, msg2, msg3); self.options.content = Store.compile(tpl, Store.MSG); Window.call(self, self.options); if (self.options.initCb && typeof self.options.initCb === 'function') { self.options.initCb(self.enablePwdAndCycle); } }); }; function getOpValue(obj) { obj.enablePwdAndCycle = Store.bizDao.getOptionValueSync('FRS_IsEnablePwdAndCycle', Store.logOn.orgCode, '1'); if ('1' === obj.enablePwdAndCycle) { obj.pwdComplex = Store.bizDao.getOptionValueSync('FRS_SetPasswordComplex', Store.logOn.orgCode, '3'); obj.pwdCycle = Store.bizDao.getOptionValueSync('FRS_SetPasswordCycle', Store.logOn.orgCode, '30'); } } PwdWindow.prototype.open = function () { Window.prototype.open.call(this); }; PwdWindow.prototype.init = function () { }; function checkPwdComplex(pwd, pwdComplex) { var data = { success: true, msg: '' }; var reglevel1 = /^[0-9]{6,12}$/; var reglevel2 = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,12}$/; var reglevel3 = /^(?![a-zA-z]+$)(?!\d+$)(?![_\W]+$)(?![a-zA-Z\d]+$)(?![a-zA-Z_\W]+$)(?![\d_\W]+$)[a-zA-Z\d_\W]{6,12}$/; switch (pwdComplex.toString()) { case '1': // 6-12位数字 data.success = reglevel1.test(pwd) || reglevel2.test(pwd) || reglevel3.test(pwd); data.msg = data.success ? '' : Store.MSG.NUM_PASSWORD_CHECK; break; case '2': //6-12位数字字母组合 data.success = reglevel2.test(pwd) || reglevel3.test(pwd); data.msg = data.success ? '' : Store.MSG.NUM_ALPHABET_PASSWORD_CHECK; break; case '3': //6-12位数字-字母-特殊符号组合 data.success = reglevel3.test(pwd); data.msg = data.success ? '' : Store.MSG.NUM_ALPHA_OTHER_PASSWORD_CHECK; break; default: break; } return data; } PwdWindow.prototype.checkPwdComplex = function(pwd) { var result = { success: true, msg: '' }; if (this.enablePwdAndCycle === '1') { result = checkPwdComplex(pwd, this.pwdComplex); } return result; } PwdWindow.prototype.checkPwdCycle = function () { var data = {success: true, msg: ''}; // if (this.pwdCycle !== '0' || !this.pwdCycle) return data; // 从服务器获取剩余时间数目 var params = { sync: true }; var result = Store.services.checkPwdRecyle(params); if (!result) return data; var leftDay = result.leftDay; return { success: (leftDay > 0) ? true : false, msg: (leftDay > 5) ? '' : (leftDay > 0 ? Store.MSG['PASSWORD_LEFT'] + leftDay + Store.MSG['PASSWORD_LEFT_SUFFIX'] : Store.MSG['PASSWORD_OUT_OF_DATE']) } } var clickx=0; PwdWindow.prototype.customerize = function ($container) { var self = this; //重新计算窗体大小 $container.window('resize',{width:$(window).width(),height:$(window).height(),top:0,left:0}); $container.parent().addClass('edp-pwd-change-bg').css('z-index',6666).addClass('edp-pwd-change-border').end().addClass('edp-pwd-change-border'); this.$changeBtn = this.getElement('button.edp-pwd-change-confirm'); this.$oldPwd = this.getElement('.edp-pwd-change-oldpwd'); this.$newPwd = this.getElement('.edp-pwd-change-newpwd'); this.$cfmPwd = this.getElement('.edp-pwd-change-cfmpwd'); this.$tip = this.getElement('.edp-pwd-change-tip'); this.$changeSuccess = this.getElement('.edp-pwd-change-success'); this.$input= this.getElement('.edp-pwd-change-input'); this.$close = $container.find('.edp-pwd-change-close'); this.$close.click(function (e) { self.close(); }); if(clickx==0){ this.$input.on('focus',function (e) { if(isShowkeyBoard == 1) { Store.VK.openVK(e.target,1); } }); this.$input.on('blur',function (e) { if(isShowkeyBoard == 1) { Store.VK.closeVK(e.target); } }); clickx=1; } function showInfo(result) { if (!result.success) { self.$tip.text(result.msg); } else { self.$tip.text(''); } } this.$newPwd.on('blur', function(e) { var result = self.checkPwdComplex($(this).val()); showInfo(result); }); this.$cfmPwd.on('blur', function(e) { var result = self.checkPwdComplex($(this).val()); showInfo(result); }); this.$changeBtn.off('click').on('click', function (e) { var oldPwd = $.trim(self.$oldPwd.val()); var newPwd = $.trim(self.$newPwd.val()); var cfmPwd = $.trim(self.$cfmPwd.val()); var userId = Store.logOn.userId; var userCode = Store.logOn.userCode; if(oldPwd === '' ||newPwd === '' || cfmPwd === '') { self.$tip.text(Store.MSG.FRS007_12); return; } if(newPwd.length <6 ||newPwd.length>12|| cfmPwd.length < 6||cfmPwd.length > 12) { self.$tip.text(Store.MSG.FRS007_07); return; } if (newPwd !== cfmPwd) { self.$tip.text(Store.MSG.FRS007_02); //两次输入的新密码不一致,请重新输入。 return; } var result = self.checkPwdComplex(cfmPwd); if (!result.success) { self.$tip.text(result.msg); return; } Store.bizDao.executeplugin('userCommPlugin', { isClear: '0', userId: userId, userCode: userCode, oldPassword: md5(userCode.toLowerCase() +oldPwd).toString(), newPassword: md5(userCode.toLowerCase() +newPwd).toString() }, function (isOk, ret) { if (!isOk) throw '访问服务器失败'; if (self.options.doneCb && typeof self.options.doneCb === 'function') { self.options.doneCb({ success: true, msg: '修改成功!' }) } self.close(); }) }); }; return PwdWindow; });