工作笔记-前端封装
/** * @Date:2016/10/21 * @Author:Mona * @Description:tools */ (function(window) { /** * @Description get参数 * @return param */ window.param = function() { var href = window.location.href; var param = {}; if (href.indexOf('?') > -1) { var id = href.substring(href.indexOf('?') + 1); if (id.indexOf('&&') > -1) { $.each(id.split('&&'), function(i, item) { var info = item.split('='); var cur = info[0]; param[cur] = info[1]; }) } else { var list = id.split('='); var index = list[0]; param[index] = list[1]; } } return param }(); window.ajax = new Ajax(); window.formValidate = function(form,rules, messages) { $(form).validate({ rules: rules, messages:messages }) } })(window) var tools = {}; tools["_isMobile"] = function(value){ var length = value.length; //中国移动 var cm = /(^1(3[4-9]|4[7]|5[0-27-9]|7[8]|8[2-478])\d{8}$)|(^1705\d{7}$)/; //中国联通 var cu = /(^1(3[0-2]|4[5]|5[56]|7[6]|8[56])\d{8}$)|(^1709\d{7}$)/; //中国电信 var ct = /(^1(33|53|77|8[019])\d{8}$)|(^1700\d{7}$)/; return (length == 11 && (cm.test(value) || cu.test(value) || ct.test(value))) } /** * @Author Mona * @Date 2016-11-07 * @param {selector} string 当前要渲染的分页控件的容器 * @param {totalPage} int 总页数 * @param {renderDataCallBack} function 分页回调函数,按照当前的分页去获取数据 * @return 当前分页对象 */ function PageBar(selector,totalPage,renderDataCallBack){ var _this = this; _this.btnCount = 6; _this.selector = selector; _this.totalPage = totalPage; _this.renderDataCallBack = renderDataCallBack; _this._init(); } PageBar.prototype = { _init:function(){ var _this = this; _this._renderBar(1,1); }, getStartPage:function(currentPage){ var _this = this; var i=0; while(currentPage>_this.btnCount*i-i+1) { i++; }; return _this.btnCount*(i-1)-i+2; }, _renderBar:function(start,curPageNo){ var _this = this; var $ul=$("<ul></ul>"); var $firstLi=$('<li id="first" relAttr="first">首页</li>'); var $prevLi=$('<li id="prev" relAttr="prev">上一页</li>'); var $lastLi=$('<li id="first" relAttr="last">末页</li>'); var $nextLi=$('<li id="next" relAttr="next">下一页</li>'); var liArray=new Array(); liArray.push($firstLi); liArray.push($prevLi); liArray.push($lastLi); liArray.push($nextLi); for(var i=0;i<liArray.length;i++) { var $li=liArray[i]; $li.click(function(){ _this.liClick(this,2); }); } $ul.append($firstLi) $ul.append($prevLi); for(var i=0;i<_this.btnCount;i++){ if(i+start<=_this.totalPage){ var $li=$('<li relValue='+(i+start)+'>'+(i+start)+'</li>'); if(i+start==curPageNo) { $li.addClass('active'); } $li.click(function(){ _this.liClick(this,1); }); $ul.append($li); } } $ul.append($nextLi); $ul.append($lastLi); $('#pageBar').empty().append($ul); }, liClick:function(li,type){ var _this = this; var curPageNo = parseInt($(li).text()); var isShowFirst = false; var isShowLast = false; if(type==2){ curPageNo = parseInt($(_this.selector).find("li.active").text()); var relAttr=$(li).attr('relAttr'); switch(relAttr) { case "first": curPageNo=1; break; case "prev": if($(_this.selector).find("ul>li").eq(2).text()==curPageNo) { isShowFirst = true; }else{ curPageNo=(curPageNo==1)?1:curPageNo-1; li=$(_this.selector).find("ul>li[relValue='"+curPageNo+"']")[0]; } break; case "last": curPageNo=_this.totalPage; break; case "next": if($(_this.selector).find('ul>li').eq(7).text()==curPageNo){ isShowLast = true; }else{ curPageNo=(curPageNo==_this.totalPage)?_this.totalPage:curPageNo+1; li=$(_this.selector).find("ul>li[relValue='"+curPageNo+"']")[0]; } break; } } if(curPageNo==1)//当前页码是第一页 { _this._renderBar(1,1); } else if(curPageNo==_this.totalPage){//当前页是最后一页 var start1 = _this.getStartPage(_this.totalPage); _this._renderBar(start1,_this.totalPage); } else if(isShowFirst || $(li).index()==2&&curPageNo!==1){//点第一个翻页 var start1 = curPageNo-_this.btnCount+1; if(isShowFirst) { curPageNo = curPageNo-1; } _this._renderBar(start1,curPageNo); } else if(isShowLast ||$(li).index()==_this.btnCount+1&&curPageNo<_this.totalPage){//点最后一个翻页 _this._renderBar(curPageNo,curPageNo); } else {//点击其他页 if(type==1) { $(li).addClass('active').siblings().removeClass('active'); } else{ $(_this.selector).find("ul>li[relValue='"+curPageNo+"']").addClass('active').siblings().removeClass('active'); } } _this.renderDataCallBack(curPageNo); } } /** *@Author Mona *date 2016-11-14 *description ajax请求error回调中错误信息按照dom中请求参数的key对应的dom显示报错信息 */ function renderErrorMsg(jqXHR,textStatus,errorThrown){ var jsonObj = JSON.parse(jqXHR.responseText); var errors_hashMap = { Set: function(key, value) { this[key] = value }, Get: function(key) { return this[key] }, Contains: function(key) { return this.Get(key) == null ? false : true }, Remove: function(key) { delete this[key] } }; for ( var i in jsonObj.errors) { var error = jsonObj.errors[i]; for ( var j in error.nodesName) { var dom_name = (error.nodesName[j]); if (errors_hashMap.Contains(dom_name)) { errors_hashMap.Set(dom_name, errors_hashMap.Get(dom_name) + "<br>" + error.errorMessage); } else { errors_hashMap.Set(dom_name, error.errorMessage); } } } var keyList = Object.keys(errors_hashMap); for ( var i in keyList) { var keyName = keyList[i]; if (typeof (errors_hashMap.Get(keyName)) == "string") { var node_name = keyName; var dom = $("[name='" + node_name + "']"); if(node_name == 'publicError'){//pulicError 后端key未配置的错误信息提示位置 $(dom).html(''); var alert_box = $('<div>'); alert_box.attr({'class':'alert alert-warning alert-dismissible','role':'alert'}); var alert_box_btn = $('<button>'); alert_box_btn.attr({'type':'button','class':'close','data-dismiss':'alert'}); var alert_box_btn_span = $('<span>'); alert_box_btn_span.attr('aria-hidden','true'); alert_box_btn_span.html('×'); alert_box_btn.append(alert_box_btn_span); var alert_box_strong = $('<strong>'); alert_box_strong.text('警告!'); var alert_box_p = $('<p>'); alert_box_p.text(errors_hashMap.Get(keyName)); alert_box.append(alert_box_btn) alert_box.append(alert_box_strong) alert_box.append(alert_box_p) dom.append(alert_box); $(dom).fadeIn();//显示publicError dom节点 $('html,body').animate({scrollTop:0},500);//页面回到顶部 setTimeout(function(){ $(dom).fadeOut();},5000)// 5s后消失也可以点击右上角关闭按钮 }else{//后端key 已配置的错误信息提示位置 var error_len = dom.parent().find('label.error').length>0; if(error_len){ dom.parent().find('label.error').detach(); } var label_dom = $('<label>'); label_dom.attr({'id':node_name+'-error','class':'error','for':node_name}); label_dom.text(errors_hashMap.Get(keyName)); dom.parent().append(label_dom); } } } } /** *Author Mona 2016-11-14 *description jquery.validate 扩展方法 */ $.validator.addMethod("isMobile", function(value, element) { return (this.optional(element) || tools._isMobile(value)); }, "请填写正确的手机号码"); $.validator.addMethod("isVerificatCode", function(value, element) { var length = value.length; var verify = /^([0-9]{6})$/; return this.optional(element) || (length == 6 && verify.test(value)); }, "请正确的验证码"); $.validator.addMethod("isZipCode", function(value, element) { var zipCode = /^[0-9]{6}$/; return this.optional(element) || (zipCode.test(value)); }, "请正确填写您的邮政编码"); //输入固定长度的字符长度 // 中文字两个字节 $.validator.addMethod("fixedLength", function(value,element,param) { var length = value.length; return this.optional(element) || ( length == param); }, $.validator.format("请输入{0}位字符")); /** * @postMutipleData * @Author Mona * @date 2016-11-14 * @description 使用formdate 上传参数包括普通字段和文件 * @param {req_url} string 请求地址 * @param {param} object '提交的数据 data.files data.fileNames data.inputData' * @param {opt_suc} function '请求成功的回调' * @param {opt_fail} function '请求失败的回调' */ postMutipleData = function(req_url,param,opt_suc,opt_fail){ var url = contextPath+req_url; var formData = new FormData(); if(data.fileNames.length<1){ return } if(data.files.length<1){ return } $.each(data.files,function(k,info_name){ formData.append('files',document.getElementById(info_name).files[0]) }) $.each(data.fileNames,function(i,item){ formData.append('fileNames',item); }) formData.append('requestBean', new Blob([JSON.stringify(data.inputData)], { type: "application/json" })); $.ajax({ type:'post', data: formData, url:url, contentType:false, processData:false, success:function(data){ if($.isFunction(opt_suc)){ opt_suc(data) } }, error:function(jqXHR,textStatus,errorThrown){ renderErrorMsg(jqXHR,textStatus,errorThrown) } }); } /** *@Author Mona *@date 2016-11-14 *@description 获取验证码 *@param {target} string 需要实现获取验证码的dom元素 *@param {url} string 请求地址 *@param {param} object 请求参数 */ //使用方式 new GetVerifyCode('#get_code','/my_account',{userName:'Mona',mibile:'13052587892'}) function GetVerifyCode(target,cur_url,param){ var _this = this; _this.target = target; _this.url = contextPath+cur_url; _this.param = param; _this.init(); } GetVerifyCode.getCode = function(target,param,url){ $.ajax({ type:'get', data:param, url:contextPath+url, success:function(data){ if(data.statusCode=='200'){ var count = 60; var timer = setInterval(function(){ count--; if(count>0){ $(target).text(count+'秒后重新获取'); $(target).attr('disabled',''); }else{ clearInterval(timer); $(target).text('获取验证码'); $(target).removeAttr('disabled'); } },1000) }else{ $(target).removeAttr('disabled'); } }, error:function(jqXHR,textStatus,errorThrown){ renderErrorMsg(jqXHR,textStatus,errorThrown) } }); } /** * @Author Mona * @date 2016-11-04 * @description 审核结束提交组件 * @param selector {string} 组件最大的容器名称 * @param maxLength {int} 组件中文字输入的最大长度 */ function controlBtn(type,selector,curValLen){ var _this = this; _this.selector = selector; _this.maxlength = 140; _this.curValLen = curValLen; _this.type = type; _this.select_dom = $(_this.selector).find('select[data-role="control-btn"]'); _this.textarea_dom = $(_this.selector).find('textarea[data-role="control-btn"]'); _this.btn_dom = $(_this.selector).find('[data-role="target-btn"]'); _this.b_dom = $(_this.selector).find('[data-role="font-length"]>b'); _this.selectVal = $.trim(_this.select_dom.val()); _this.textareaVal = $.trim(_this.textarea_dom.val()); _this.setOn = function(){ _this.btn_dom.removeAttr('disabled'); } _this.setOff = function(){ _this.btn_dom.attr('disabled',''); } if(_this.selectVal!==''){ (_this.selectVal=='agree'||_this.type=='1' || _this.textareaVal.length>0)?_this.setOn():_this.setOff() } else{ _this.setOff() } _this.init(); curValLen?_this.b_dom.text(_this.maxlength-curValLen):_this.b_dom.text(_this.maxlength); } controlBtn.prototype = { init:function(){ var _this = this; var curSelectVal = _this.selectVal || ''; var curTextareaVal = _this.textareaVal || ''; _this.b_dom.text(_this.maxlength-_this.curValLen); _this.select_dom.on('change',function(){ curSelectVal = $.trim($(this).val()); console.debug('意见内容==='+curTextareaVal) if(curSelectVal!==''){ (curSelectVal=='agree'||_this.type=='1' || curTextareaVal.length>0)?_this.setOn():_this.setOff() } else{ _this.setOff() } }) _this.textarea_dom.bind('input propertychange',function(){ curTextareaVal = $.trim($(this).val()); if(curSelectVal!==''){ (curSelectVal=='agree'||_this.type=='1' || curTextareaVal.length>0)?_this.setOn():_this.setOff() } else{ _this.setOff() } if(curTextareaVal.length>0){ if(curTextareaVal.length>_this.maxlength){ _this.b_dom.text(0); $(this).val($(this).val().substring(0,140)); }else{ _this.b_dom.text(_this.maxlength-$(this).val().length); } }else{ _this.b_dom.text('140'); } }) } } /** *@Author Mona *@date 2016-11-21 *@description 获取用户信息/机构信息 */ function Role(){ var _this = this; _this.userInfo = _this.sendReqest(); } Role.prototype = { sendReqest:function(){ var _this = this; var userInfo = {}; $.ajax({ type:'get', async:false, url:contextPath+'/session.json', success:function(data){ if(data.statusCode=='200'){ userInfo = data.data; } }, error:function(arg0,arg1,arg2){ } }) return userInfo }, getRoleId:function(){ var _this = this; return _this.userInfo.roleId }, getRoleName:function(){ var _this = this; return _this.userInfo.roleName }, getUserName:function(){ var _this = this; return _this.userInfo.userName }, getUserId:function(){ var _this = this; return _this.userInfo.userId }, getInstitutionId(){ var _this = this; return _this.userInfo.institutionId; }, getInstitutionName(){ var _this = this; return _this.userInfo.institutionName; }, getInstitutionTypeId(){ var _this = this; return _this.userInfo.institutionTypeId; }, getInstitutionTypeName(){ var _this = this; return _this.userInfo.institutionTypeName; } } /** *@Author Mona *@date 2016-11-17 *@description 查询当前办理节点 *@param {businessKey} string */ function AllNodeStatus(businessKey){ var _this = this; _this.businessKey = businessKey; _this.init(); } AllNodeStatus.prototype = { init:function(){ var _this = this; _this.nodeInfo = null; _this.sendRequest(); }, sendRequest:function(){ var _this = this; if(!_this.businessKey){ return } $.ajax({ type:'get', data:{businessKey:_this.businessKey}, url:contextPath+'/activiti/all_node_status', async:false, success:function(data,textStatus){ if(textStatus=='success'){ _this.nodeInfo = data; console.debug('所有节点信息') console.debug(_this.nodeInfo) } }, error:function(jqXHR,textStatus,errorThrown){ renderErrorMsg(jqXHR,textStatus,errorThrown) } }) }, getNodeInfo:function(){//获取节点信息 var _this = this; if(_this.nodeInfo && _this.nodeInfo.data.nodes){ return _this.nodeInfo.data.nodes } }, getCurNodeName:function(data){//获取当前正在办理的节点的名称 var _this = this; var curNodeName = ''; if(_this.nodeInfo.data.length<1){ return } $.each(_this.nodeInfo.data.nodes,function(i,item){ if(item.currentActiviti){ curNodeName = item.name; return false } }) return curNodeName }, getCurNodeId:function(){//获取当前正在办理的节点的id var _this = this; var curNodeId = ''; if(!_this.nodeInfo || _this.nodeInfo.data.length<1){ return } $.each(_this.nodeInfo.data.nodes,function(i,item){ if(item.currentActiviti){ curNodeId = item.id; return false } }) if(_this.isFinished()){ var instanceName = _this.getProcessInstanceName(); switch(instanceName){ case 'settled'://入驻申请流程 curNodeId = "directorAudit"; break; case 'finance'://融资申请流程 curNodeId = "loan_aduit"; break; case 'risk'://融资申请流程 curNodeId = "capital_risk_audit"; break; case 'overdue'://逾期理赔流程 curNodeId = "zhongjiu_risk_receipt"; break; } } return curNodeId }, isFinished:function(){//流程有没有结束 var _this = this; if(!_this.nodeInfo||!_this.nodeInfo.data){ return } return _this.nodeInfo.data.isFinished }, getRefusedInfo:function(){//获取被拒绝的节点信息 var _this = this; var nodeData = _this.nodeInfo.data; var refusedInfo = {}; if(nodeData.length<1){ return } $.each(nodeData.nodes,function(i,item){ if(item.refuse){//找当前节点中是否有拒绝的 refusedInfo["isRefused"] = true refusedInfo["id"] = item.id; return false }else if(item.child && item.child.length>0){//找子节点中是否有拒绝的 $.each(item.child,function(j,info){ if(info.refuse){ refusedInfo["isRefused"] = true refusedInfo["id"] = item.id; return false } }) } }) return refusedInfo }, getProcessInstanceName:function(){//获取流程实例的名称 var _this = this; if(!_this.nodeInfo||!_this.nodeInfo.data){ return } return _this.nodeInfo.data.processInstanceName }, curNodeIsFinished:function(nodeId){ var _this = this; var nodesInfo = _this.nodeInfo.data.nodes; var cur_isFinished = false; $.each(nodesInfo,function(i,item){ if(nodeId==item.id){ item.currentActiviti?cur_isFinished=false:cur_isFinished=true;//先currentActiviti,再是refuse,再是complete, return false; } }) return cur_isFinished } } function setCurUrl(type,id,processInstanceName){ function setUrlAsProcessName(processInstanceName){ if(!processInstanceName){ return } switch(processInstanceName){ case 'settled'://入驻申请流程 curHref = '/winmanage/cooperative_application_page'; break; case 'finance'://融资申请流程 curHref = '/finance/financ_management_page'; break; case 'risk'://风险管理 curHref = '/riskmanagement/risk_warning_page'; break; case 'decompression'://到期解压流程 curHref = '/maturity/start_decompression_page'; break; case 'overdue'://逾期理赔流程 curHref = '/overdue/overdue_detail_page'; break; } return curHref } switch(id){ case 'assistantAudit': curHref = uiRouter["ru_zhu"]["assistantAudit"].url;//中酒 break; case 'assignment': curHref = uiRouter["ru_zhu"]["assignment"].url;//渠道总监审核 break; case 'managerAudit': curHref = uiRouter["ru_zhu"]["managerAudit"].url;//经理审核 break; case 'directorAudit': curHref = uiRouter["ru_zhu"]["directorAudit"].url;//总监审核 break; case 'information_Audit': curHref = uiRouter["rong_zi"]["information_Audit"].url;//信息审核 break; case 'qualification_Aduit': curHref = uiRouter["rong_zi"]["qualification_Aduit"].url;//资质审核 break; case 'finance_pledge': curHref = uiRouter["rong_zi"]["finance_pledge"].url;//质押物就位 break; case 'sampling_testing': curHref = uiRouter["rong_zi"]["sampling_testing"].url;//取样检测 break; case 'zhenAn_credit_upload_contract': curHref = uiRouter["rong_zi"]["zhenAn_credit_upload_contract"].url;//上传合同 break; case 'contract_aduit': curHref = uiRouter["rong_zi"]["contract_aduit"].url;//合同审核 break; case 'regulator_aduit': curHref = uiRouter["rong_zi"]["regulator_aduit"].url;//质押监管 break; case 'insurance_aduit': curHref = uiRouter["rong_zi"]["insurance_aduit"].url;//履约保险 break; case 'loan_aduit': curHref = uiRouter["rong_zi"]["loan_aduit"].url;//放款确认 break; case 'modifyApply': curHref = (type=='skip')?setUrlAsProcessName(processInstanceName):'javascript:void(0)'; break; case 'zhenAn_risk_risk_audit': curHref = uiRouter["risk"]["zhenAn_risk_risk_audit"].url;//放款确认 break; case 'capital_risk_audit': curHref = uiRouter["risk"]["capital_risk_audit"].url; break; case 'insurer_close_policy': (processInstanceName == 'overdue')?curHref = uiRouter["overdue"]["insurer_close_policy"].url:curHref = uiRouter["decompression"]["insurer_close_policy"].url; break; case 'regulator_close_pledge': (processInstanceName == 'overdue')?curHref = uiRouter["overdue"]["regulator_close_pledge"].url:curHref = uiRouter["decompression"]["regulator_close_pledge"].url; break; case 'winery_receipt': curHref = uiRouter["decompression"]["winery_receipt"].url;//收货 break; //逾期理赔 case 'insurance_claim': curHref = uiRouter["overdue"]["insurance_claim"].url;//发起理赔 break; case 'capital_collection': curHref = uiRouter["overdue"]["capital_collection"].url;//保险赔付 break; case 'winery_receipt': curHref = uiRouter["overdue"]["winery_receipt"].url;//资方收款 break; case 'zhongjiu_risk_start_back': curHref = uiRouter["overdue"]["zhongjiu_risk_start_back"].url;//启动回购 break; /*case 'insurer_close_policy': curHref = uiRouter["overdue"]["insurer_close_policy"].url;//解除保单 break; case 'regulator_close_pledge': curHref = uiRouter["overdue"]["regulator_close_pledge"].url;//解除质押 break;*/ case 'zhongjiu_risk_receipt': curHref = uiRouter["overdue"]["zhongjiu_risk_receipt"].url;//提货 break; } return curHref } //页面跳转 function skipPage(businessKey){ var curNodeName = ''; var curHref = ''; var allNodeStatus = new AllNodeStatus(businessKey); //var curNodeName = allNodeStatus.getCurNodeName(); var curNodeId = allNodeStatus.getCurNodeId(); var isFinished = allNodeStatus.isFinished()?allNodeStatus.isFinished():false; var processInstanceName = allNodeStatus.getProcessInstanceName(); //被拒绝的信息 var refusedInfo = allNodeStatus.getRefusedInfo(); if(refusedInfo.isRefused){//如果被拒绝就直接跳到被拒绝的节点[被拒绝也是结束了] curHref = setCurUrl('skip',refusedInfo.id,processInstanceName); } else if(isFinished){//如果顺利结束[不是被拒绝]则跳转到当前业务流程的最后一个节点 switch(processInstanceName){ case 'settled'://入驻申请流程 curHref = uiRouter["ru_zhu"]["directorAudit"].url; break; case 'finance'://融资申请流程 curHref = uiRouter["rong_zi"]["loan_aduit"].url; break; case 'expire'://到期解压流程 curHref = uiRouter["decompression"]["winery_receipt"].url; break; case 'overdue'://逾期理赔流程 curHref = uiRouter["overdue"]["zhongjiu_risk_receipt"].url; break; } }else{ curHref = setCurUrl('skip',curNodeId,processInstanceName); } return (contextPath+curHref) } /** *@Author Mona *@date 2016-11-28 *@description 流程节点渲染工厂方法 *@returns ul_dom */ function ProcessNodeMenu(type,businessKey){ var _this = this; _this.type = type; _this.businessKey = businessKey; _this.processInstanceName = null; if(!(this instanceof ProcessNodeMenu)){ return new ProcessNodeMenu(_this.type,_this.businessKey) } _this.init(); } ProcessNodeMenu.prototype = { ru_zhu:function(id){ var _this = this; var curUrl = ''; curUrl = setCurUrl('menu',id,_this.processInstanceName); return contextPath+curUrl }, rong_zi:function(id){ var _this = this; var curUrl = ''; curUrl = setCurUrl('menu',id,_this.processInstanceName); return contextPath+curUrl }, risk:function(id){ var _this = this; var curUrl = ''; curUrl = setCurUrl('menu',id,_this.processInstanceName); return contextPath+curUrl }, decompression:function(id){ var _this = this; var curUrl = ''; curUrl = setCurUrl('menu',id,_this.processInstanceName); return contextPath+curUrl }, overdue:function(id){ var _this = this; var curUrl = ''; curUrl = setCurUrl('menu',id,_this.processInstanceName); return contextPath+curUrl }, _setFirstTag:function(li,a,status,aHref){ if(status=='0'){ li.attr({'class':'active'}); a.attr({'href':aHref+'?management_status=0'}) }else if(status=='1'){ li.attr({'class':'done'}); a.attr({'href':aHref+'?management_status=1'}) } }, _coreRenderMethod:function(nodes,isFinished){ var _this = this; var modifyApplyUrl = ''; if(!nodes || nodes.length<1){ return } console.debug('流程类型'); console.debug(_this.type) switch(_this.type){ case 'ru_zhu': modifyApplyUrl = contextPath+'/winmanage/cooperative_application_page'; modifyApplyName = '入驻申请'; break; case 'rong_zi': modifyApplyUrl = contextPath+'/finance/financ_management_page'; modifyApplyName = '融资申请'; break; case 'risk': modifyApplyUrl = contextPath+'/riskmanagement/risk_warning_page'; modifyApplyName = '风险提示'; break; case 'decompression': modifyApplyUrl = contextPath+'/maturity/start_decompression_page'; modifyApplyName = '启动解押'; break; case 'overdue': modifyApplyUrl = contextPath+'/overdue/overdue_detail_page'; modifyApplyName = '发起理赔'; break; } var ul_dom = $('<ul>'); var li_dom_modify = $('<li>'); li_dom_modify.attr({'onclick':'javascript:clickCurrentLi(this)','id':'modifyApply'}); var li_a_dom_modify = $('<a>'); if(_this.type=='risk'){ var green_node_status = nodes[0].currentActiviti|| nodes[1].currentActiviti||isFinished; green_node_status?_this._setFirstTag(li_dom_modify,li_a_dom_modify,1,modifyApplyUrl):_this._setFirstTag(li_dom_modify,li_a_dom_modify,0,modifyApplyUrl) }else if(_this.type=='decompression'){ var decompression_green = nodes[0].currentActiviti|| nodes[1].currentActiviti||nodes[2].currentActiviti||isFinished; decompression_green?_this._setFirstTag(li_dom_modify,li_a_dom_modify,1,modifyApplyUrl):_this._setFirstTag(li_dom_modify,li_a_dom_modify,0,modifyApplyUrl) }else if(_this.type=='overdue'){ var overdue_green = false; var cur_over_due = false; $.each(nodes,function(j,info){ if(info.currentActiviti){ cur_over_due = true return false } }); (isFinished ||cur_over_due)?(overdue_green = true):''; overdue_green?_this._setFirstTag(li_dom_modify,li_a_dom_modify,1,modifyApplyUrl):_this._setFirstTag(li_dom_modify,li_a_dom_modify,0,modifyApplyUrl) } else{ $.each(nodes,function(i,item){ if(item.id=='modifyApply'){ item.currentActiviti?_this._setFirstTag(li_dom_modify,li_a_dom_modify,0,modifyApplyUrl):_this._setFirstTag(li_dom_modify,li_a_dom_modify,1,modifyApplyUrl) return false } }); } li_a_dom_modify.text(modifyApplyName); li_dom_modify.append(li_a_dom_modify); ul_dom.append(li_dom_modify) console.debug('节点信息'); console.debug(nodes); $.each(nodes,function(i,item){ var url = _this[_this.type](item.id); var cur_li_dom = $('<li>'); cur_li_dom.attr({'onclick':'javascript:clickCurrentLi(this)','id':item.id}); var cur_li_a_dom = $('<a>'); if(item.id=='modifyApply'){ return true } else if(item.currentActiviti){ cur_li_dom.attr({'class':'active small-triangle'}); cur_li_a_dom.attr({'href':url+'?management_status=0'}); cur_li_a_dom.text(item.name); cur_li_dom.append(cur_li_a_dom); ul_dom.append(cur_li_dom); } else if(item.refuse){ cur_li_dom.attr({'class':'refuse'}); cur_li_a_dom.attr({'href':url+'?management_status=1'}); cur_li_a_dom.text(item.name); cur_li_dom.append(cur_li_a_dom); ul_dom.append(cur_li_dom) } else if(item.complete){ var status = 'done'; if(item.child && item.child.length>0){ $.each(item.child,function(j,info){ if(info.refuse){ status = 'refuse'; return false } }) } cur_li_dom.attr({'class':status}); cur_li_a_dom.attr({'href':url+'?management_status=1'}); cur_li_a_dom.text(item.name); cur_li_dom.append(cur_li_a_dom); ul_dom.append(cur_li_dom); } else{ cur_li_dom.attr({'class':'default-status'}); cur_li_a_dom.attr({'href':'javascript:void(0)'}); cur_li_a_dom.text(item.name); cur_li_dom.append(cur_li_a_dom); ul_dom.append(cur_li_dom) } }); console.debug('ul_dom的内容'); console.debug(ul_dom); $('#left-menu').empty().append(ul_dom); }, init:function(){ var _this = this; var all_node_status = new AllNodeStatus(_this.businessKey); _this.processInstanceName = all_node_status.getProcessInstanceName(); var nodeInfo = all_node_status.getNodeInfo(); var isFinished = all_node_status.isFinished(); _this._coreRenderMethod(nodeInfo,isFinished); //渲染选中的样式 var cur_id = window.sessionStorage["cur_menu_id"]||all_node_status.getCurNodeId(); console.debug('当前节点的名称'); console.debug(all_node_status.getCurNodeId()); if(!cur_id){ return } $('#'+cur_id).siblings().removeClass('small-triangle'); setTimeout(function(){ $('#'+cur_id).addClass('small-triangle'); },300); } } function clickCurrentLi(targetTag){ var is_void_status = $(targetTag).find('a').attr('href')=='javascript:void(0)'; if($(targetTag).hasClass('default-status') || is_void_status ){ console.debug('如果节点是不可跳转状态则不存储节点的id信息') return } console.debug('当前节点信息'); console.debug(targetTag); var id = $(targetTag).attr('id'); window.sessionStorage['cur_menu_id'] = id; } /** * 文件操作工具方法 */ /** * 读取文件 * @param {target} 当前 dom */ function readFile(target){ var file = target.files[0]; var isPic = /image\/\w+/.test(file.type); var cur_file_name = file.name; var box = $(target).parent(); if(isPic){ var reader = new FileReader(); reader.readAsDataURL(file); reader.onload = function(){ var str= '<img src="'+this.result+'" width="100" height="100" onclick="javascript:reviewBigPic(this)"></img>'; str+='<span data-role="delete-file" onclick="javascript:deleteFile(this)">×</span>'; $(box).append(str); } }else{ var str = '<span class="file-name">'+cur_file_name+'</span>'; str+='<span data-role="delete-file" onclick="javascript:deleteFile(this)">×</span>'; $(box).append(str); } } function triggerClickFileInput(target){ $(target).parent().find('input').trigger('click') } /** * 读取文件 * @param {target} 当前 dom * @param {inputName} 当前input 的 name属性值 */ var inputNameStorage = []; var all_node_status = new AllNodeStatus(window.sessionStorage["businessKey"]); var cur_node_id = all_node_status.getCurNodeId(); function deleteFile(target,inputName){ var img_box = $(target).parents('.file-box').find('[data-role="img-box"]'); img_box.empty().text('请上传文件'); var file_dom = $('<input>'); file_dom.attr({'type':'file','onchange':'javascript:readFile(this,"'+inputName+'")','name':inputName,'id':inputName}); var file_default_img = '<span data-role="default-img" class="common-img submit-file-icon" onclick="javascript:triggerClickFileInput(this)"></span>' img_box.append(file_dom); img_box.append(file_default_img); if(inputName && $.inArray(inputName,inputNameStorage)<0){ inputNameStorage.push(inputName); } window.sessionStorage[cur_node_id] = JSON.stringify(inputNameStorage); } /** * 查看图片文件的大图 * @param {target} 当前 dom */ function reviewBigPic(target,text,id){ var cur_src = $(target).attr('src'); var html = ''; html+='<div class="modal fade" id="view-pic" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">' html+='<div class="modal-dialog">'; html+='<div class="modal-content">'; html+='<div class="modal-header">'; html+='<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>'; html+='<h4 class="modal-title" id="myModalLabel">图片预览</h4>'; html+='</div>'; html+='<div class="modal-body center">'; //html+='<img src="'+cur_src+'" width="200px" height="200px">'; html+='<img src="'+cur_src+'" width="300px" height="auto">'; var ref = contextPath+'/accessory/download/'+id; html+='<p class="center">点击下载图片:<a href="'+ref+'" download="true">'+text+'</a></p>'; html+='</div>'; html+='<div class="modal-footer">'; html+= '<button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>'; html+='</div>'; html+='</div>'; html+='</div>'; html+='</div>'; if($('#view-pic').length>0){ $('#view-pic').detach(); } $('body').append(html); $('#view-pic').modal('show'); } /** * Author Mona * Date 2016-12-07 * description 文件的显示和操作 * @param {target} string 目标元素dom * @param {text} string 文件的名称 * @param {id} 目标元素的地址id * @param {type} 文件类型 普通文件还是图片文件 * @param {operable} 是否可以操作 进行删除或修改操作 */ function setAccessory(target,text,id,type,operable){ var fileExt = /(jpg|jpeg|gif|bmp|png)/; var like_pic = fileExt.test(type); var url = contextPath+'/accessory/download/'; var inputName = $(target).attr('name'); var box_dom = $('<div>'); box_dom.attr({'class':'file-box'}); var delete_icon_dom = $('<span>'); delete_icon_dom.attr({'data-role':'delete-file','onclick':'javascript:deleteFile(this,"'+inputName+'")'}); delete_icon_dom.html('×'); var img_box_dom = $('<div>'); img_box_dom.attr({'data-role':'img-box'}); if(like_pic){//图片文件的渲染方式 var img_dom = $('<img>'); img_dom.attr({'src':url+id,'onclick':'javascript:reviewBigPic(this,"'+text+'","'+id+'")'}); img_dom.text(text); img_box_dom.append(img_dom); }else{//普通文件的渲染方式 var a_dom = $('<a>'); a_dom.attr({'href':url+id,'download':'true'}); a_dom.text(text); img_box_dom.append(a_dom); } operable?img_box_dom.append(delete_icon_dom):'';//只有办理状态时才能进行删除操作 //img_box_dom.append(delete_icon_dom); box_dom.append(img_box_dom) $(target).parent().empty().append(box_dom); } function Uploadfile(targetTag,option){ var fileExt = obj.value.substr(obj.value.lastIndexOf(".")).toLowerCase();//文件后缀名 var fileExp = /.jpg|.jpeg|.gif|.bmp|.word|.pdf|.zip|.rar/; fileExp.test(fileExt)?'':alert('请上传正确格式的文件,') } /** *@Author Mona *@date 2016-11-29 *@description 成功提交时的信息提示 *@param processEnd 流程是否结束 boolean */ function auditSuccess(alertInfo,processEnd,endInfo){ if($('#modal-success').length>0){ $('#modal-success').detach(); } var modal_dom = $('<div>');//1 modal_dom.attr({'id':'modal-success','class':'modal fade','tabindex':'-1','style':'display:none','aria-hidden':'true','role':'dialog'}); var modal_dialog_dom = $('<div>');//2 modal_dialog_dom.attr({'class':'modal-dialog'}); var modal_dialog_content_dom = $('<div>');//3 modal_dialog_content_dom.attr({'class':'modal-content'}); var modal_dialog_content_header_dom = $('<div>');//4 modal_dialog_content_header_dom.attr({'class':'modal-header'}); var modal_dialog_content_header_btn_dom = $('<button>'); modal_dialog_content_header_btn_dom.attr({'type':'button','class':'close','data-dismiss':'modal'}); modal_dialog_content_header_btn_dom.html('×'); var modal_dialog_content_header_h4_dom = $('<h4>'); modal_dialog_content_header_h4_dom.attr({'class':'blue bigger'}); modal_dialog_content_header_h4_dom.text('提示'); modal_dialog_content_header_dom.append(modal_dialog_content_header_btn_dom); modal_dialog_content_header_dom.append(modal_dialog_content_header_h4_dom); var modal_dialog_content_body_dom = $('<div>'); modal_dialog_content_body_dom.attr({'class':'modal-body'}); var modal_dialog_content_body_h4_dom = $('<h4>'); modal_dialog_content_body_h4_dom.attr({'data-modal-role':'alert-info'}); modal_dialog_content_body_dom.append(modal_dialog_content_body_h4_dom); modal_dialog_content_dom.append(modal_dialog_content_header_dom); modal_dialog_content_dom.append(modal_dialog_content_body_dom); modal_dialog_dom.append(modal_dialog_content_dom); modal_dom.append(modal_dialog_dom); $('body').append(modal_dom); var cur_modal_dom = $('#modal-success'); var cur_alert_info_dom = $('[data-modal-role="alert-info"]'); processEnd?cur_alert_info_dom.html(endInfo):cur_alert_info_dom.text('办理成功'); cur_modal_dom.modal('show'); var timer = processEnd?5000:2000; setTimeout(function(){ cur_alert_info_dom.modal('hide'); window.sessionStorage["historyRef"]?window.location.href = window.sessionStorage["historyRef"]:window.location.href = contextPath+'/anagement_page'; },timer); } /** * @param {option} object * option.type tip| operableModal * option.title 提示的标题 string * option.info 提示的内容 string/dom * option.historyRef 从哪里来回哪里去 string * option.timer 停留的时间 int * option.cancelText 左侧取消按钮的文案 * option.successText 右侧成功按钮的文案 * option.cancelCallback 取消的回调函数 * option.successCallback 成功的回调函数 */ function whaleModal(option){ if($('#whale-modal-form').length>0){ $('#whale-modal-form').detach(); } if(option && typeof option !=='object'){//如果存在 alert('请传入正确的参数!'); } var type = (option&&option.type) || 'tip'; var title = (option&&option.title) || '提示'; var info = (option&&option.info) || '办理成功!'; var removeStore = (option&&option.is_remove_store)||false; var historyRef = ''; if(option&&option.historyRef){ historyRef = contextPath+option.historyRef; }else if(window.sessionStorage["historyRef"]){ historyRef = window.sessionStorage["historyRef"] }else{ historyRef = contextPath+'/anagement_page'; } var timer = (option&&option.timer) || 2000; var cancelText = (option&&option.cancelText) || '取消'; var successText = (option&&option.successText) || '成功'; var cancelCallback = option&&option.cancelCallback; var successCallback = option&&option.successCallback; var is_operable_modal = (type == 'operableModal'); var h = ''; h+='<div id="whale-modal-form" class="modal fade" tabindex="-1" style="display: none;" aria-hidden="true">'; // h+='<div class="modal-backdrop"></div>'; h+='<div class="modal-dialog">'; h+='<div class="modal-content">'; h+='<div class="modal-header">'; h+='<span class="close" data-dismiss="modal">×</span>'; h+='<h4 class="blue bigger">'+title+'</h4>'; h+='</div>'; h+='<div class="modal-body">'+info+'</div>'; if(is_operable_modal){ h+='<div class="modal-footer">'; h+='<button class="btn btn-sm" data-dismiss="modal" data-role="cancel"><i class="ace-icon fa fa-times"></i></button>'; h+='<button class="btn btn-sm btn-primary" data-role="success"><i class="ace-icon fa fa-check"></i></button>'; h+='</div>'; } h+='</div>'; h+='</div>'; h+='</div>'; $('body').append(h); var cur_modal = $('#whale-modal-form'); var cancel_btn_dom = cur_modal.find('[data-role="cancel"]'); var success_btn_dom = cur_modal.find('[data-role="success"]'); cur_modal.modal('show'); //以下是给取消确定按钮注册点击事件 if(is_operable_modal){//如果不是需要自己去操作的modal 那么是不需要注册按钮的交互事件的 cancel_btn_dom.on('click',function(){ if($.isFunction(cancelCallback)){ cancelCallback(); } }); success_btn_dom.on('click',function(){ if($.isFunction(successCallback)){ successCallback(); } }); } //以下是设置自动跳转的逻辑 if(!is_operable_modal){//如果是需要自己去操作的modal那么就不用自动跳转 setTimeout(function(){ cur_modal.modal('hide'); removeStore?window.sessionStorage.clear():''; window.location.href = historyRef; },timer); } } $(function(){ //初始化时间组件 $('[data-date]').datetimepicker({format: 'yyyy/mm/dd',language:'zh-CN',startView:'month',todayHighlight:true,minView:'month',autoclose:true}); $('[data-date-time]').datetimepicker({format: 'yyyy/mm/dd hh:ii',language:'zh-CN'}); $('[data-date]').datetimepicker().on('changeDate',function(e){ var _this = this; if(e.date.valueOf()){ if($(_this).next().hasClass('error')){ $(_this).next('.error').remove(); } } }) //select-search $("[data-search-select]").select2({width: "100px"}); function animateContent(){ var win_width = parseInt($(window).width()); var cur_width = win_width-230-130-25;//230左侧栏宽度,130流程节点宽度,25流程节点与左侧栏间隔; var animate_dom = $('[data-animate-content]'); animate_dom.css({'left':cur_width}); animate_dom.animate({'left':0},500); } //animateContent(); })
感谢您的阅读,如果文中有任何技术上的错误或不妥,烦请留言指出,我会尽快更正。