'
+'
'
+''
+''
+'{{user.un}} '
+'
'
+'
',
replace: true
};
})
.directive('tabs', function() {
return {
restrict: 'E',
transclude: true,
scope: {},
controller: function($scope,$element) {
var panes = $scope.panes = [];
$scope.select = function(pane){
if(!pane){
if(!panes||panes.length==0)return;
angular.forEach(panes,function(p){
if(p.show){
pane = p;
}
});
}
else{
angular.forEach(panes,function(pane){
pane.selected = false;
});
pane.selected = true;
}
var callfun = pane.callfun;
if(callfun){
eval(callfun);
}
createContent(pane);
}
createContent = function(pane){
var param = window.location.search;
url = pane.url;
setTimeout(function(){
HT.openPopFrame(url,null,param);
uexWindow.bringPopoverToFront(url);
},500);
}
this.select = function(){
$scope.select();
}
this.addPane = function(pane){
if(pane.show){
angular.forEach(panes,function(pane){
pane.selected = false;
});
pane.selected = true;
}
panes.push(pane);
}
},
template:'
'
+'
'
+'{{pane.title}} '
+'
'
+'
',
replace: true
};
})
.directive('pane', function() {
return {
require:'^tabs',
restrict: 'E',
transclude: true,
scope: {
title:'@',
url:'@',
show:'@',
noCotent:"@",
callfun:"@"
},
link:function(scope,element,attrs,tabsCtrl){
tabsCtrl.addPane(scope);
if (!attrs.nocotent) {
var onloadedHandler = window.uexOnload;
window.uexOnload = function(type){
if(onloadedHandler)onloadedHandler(type);
if (!type) {
tabsCtrl.select();
}
}
}
},
template: '
',
replace: true
};
})
/**
* 表单展示html
*/
.directive('formHtmlBind', function($compile) {
return function(scope,elm,attrs){
scope.$watch(attrs.formHtmlBind,function(newVal,oldVal){
if(newVal&&newVal!==oldVal){
elm.html(newVal);
$compile(elm.parent().contents())(scope);
// __scxmainwindow=HT.scrollH('mainWindow');
}
});
};
})
/**
* 权限控制
* 例子:permission-bind这个属性
*
*
*
*/
.directive('permissionBind', function($compile) {
return {
priority:5,
link:function(scope,elm,attrs){
scope.$watch(attrs.permissionBind,function(newVal,oldVal){
if(HT.isEmpty(newVal))//如果值为空返回
return;
var ngModel=attrs.ngModel,
scopeVal = '',
formtype =attrs.formtype;
try{
if(attrs.controltype=="select"){
scopeVal=HT.getSelectedOption(elm);
}else{
scopeVal= eval('( scope.'+ngModel + ')')||'';
}
} catch (e) {
scopeVal = "";
}
if(HT.isEmpty(formtype) || formtype == 'field'){//字段权限
scope.fieldPermission(newVal,elm,scopeVal);
}else if(formtype == 'subTable'){//子表权限
scope.subTablePermission(newVal,elm,scopeVal);
}else if(formtype == 'opinion'){//意见权限
scope.opinionPermission(newVal,elm,scopeVal);
}
});
/**
* 字段权限
*/
scope.fieldPermission = function(val,elm,scopeVal){
switch (val) {
case 'b': //必填
//让字段必填
break;
case 'r': //只读
var parent=elm.parent().parent();
var type=elm.attr("type");
if(elm.attr("selector")=="selector"||elm.attr("selector")=="file"){
elm.children().find("div").eq(1).remove();
}else if(type=="checkbox"||type=="radio"){
elm.parent().parent().parent().attr("onclick","");
if(type=="checkbox"&&scopeVal&&HT.checkInArr(scopeVal.split(","),elm.val())){
elm.next().find("div").eq(1).removeClass("icon-checkbox").addClass("icon-disable-checkbox");
}else if(type=="checkbox"){
elm.next().find("div").eq(1).removeClass("icon-checkbox").addClass("icon-checkbox-eee");
}else if(scopeVal&&scopeVal==elm.val()){
elm.next().find("div").eq(1).removeClass("icon-radio").addClass("icon-disable-radio");
}
}else{
elm.parent().remove();
parent.html("
"+scopeVal+" ")
}
break;
case 'rp': //只读提交
var parent = elm.parent();
//然后加个隐藏
parent.addClass('uhide');
//设置
parent.parent().append(scopeVal);
break;
default://编辑没修改(w)
break;
}
};
/**
* 子表权限
*/
scope.subTablePermission = function(val,elm,scopeVal){
switch (val) {
case 'b': //必填
//让子表必填
break;
case 'r': //只读
elm.children().find("li").removeClass("icon-plus-square");
scope.$$childTail.isOnlyRead=true;
// elm.find("tr").attr("ng-click","");
// elm.children().attr("ng-click","");
break;
default://编辑没修改(w)
break;
};
/**
* 意见权限
*/
scope.opinionPermission = function(val,elm,scopeVal){
switch (val) {
case 'b': //必填
//让字段必填
break;
case 'r': //只读
var parent=elm.parent().parent();
elm.parent().remove();
parent.text(scopeVal);
break;
default://编辑没修改(w)
break;
}
}
}
}
};
})
/**
* 表单验证
*/
.directive('validate', function($compile) {
return {
require:'?ngModel',
priority:6,
link:function(scope,elm,attrs,ctrl){
if(!ctrl) return ;
scope._validRules = function(conf,me){
var _valid = true,
rules = conf.rules,//规则json
ruleName = conf.ruleName,// 规则名称
validValue = conf.validValue,//验证的值
value =conf.value;//实际的值
for (var m = 0; m < rules.length; m++) {
// 取得验证规则。
var rule = rules[m];
if (ruleName.toLowerCase() != rule.name.toLowerCase()) continue;
// 验证规则如下:
// email:true,url:true. 或者数组类型,
//验证规则是boolean类型
if (typeof validValue === "boolean")
_valid = (!rule.rule(value) && validValue == true) ? false:true;
else
_valid = rule.rule(value, validValue);
if (!_valid) //验证不通过返回消息
return me._format(rule.msg, validValue);
}
return "";
};
/**
* 消息格式化
**/
scope._format = function(msg,args){
//boolean类型的直接返回
if (typeof args === 'boolean')
return msg;
if (!angular.isArray(args)) //不是数组类型的
args = [args];
//数组类型的
angular.forEach(args,function(val, key) {
msg = msg.replace(RegExp("\\{" + key + "\\}", "g"), val)
});
return msg;
};
scope._rules = [{
name : "required",
rule : function(v) {
if( v === null || v === undefined || v === '')
return false;
if( v.length == 0)
return false;
return true;
},
msg : $i18n$.RULES.REQUIRED
}, {
name : "number",
rule : function(v) {
return /^((\d{1,3}(,\d{3})+?|\d+)(\.\d{1,5})?)$/
.test(v.trim());
},
msg : $i18n$.RULES.ENTER_A_REGAL_NUMBER
}, {
name : "variable",
rule : function(v) {
return /^[A-Za-z_0-9]*$/gi.test(v.trim());
},
msg : $i18n$.RULES.ONLY_LETTER_AND_UNDERLINE
}, {
name : "fields",
rule : function(v){
return /^[A-Za-z]{1}([a-zA-Z0-9_]{1,17})?$/gi.test(v.trim());
},
msg : $i18n$.RULES.LETTER_FIRST_AND_MAX_18
},{
name : "minLength",
rule : function(v, b) {
return (v.length >= b);
},
msg : $i18n$.RULES.MIN_LENGTH
}, {
name : "maxLength",
rule : function(v, b) {
return (v.trim().length <= b);
},
msg : $i18n$.RULES.MAX_LENGTH
}, {
name : "rangeLength",
rule : function(v, args) {
return (v.trim().length >= args[0] && v.trim().length <= args[1]);
},
msg : $i18n$.RULES.RANGE_LENGTH
}, {
name : "email",
rule : function(v) {
return /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i
.test(v.trim());
},
msg : $i18n$.RULES.ENTER_A_REGAL_EMAIL
}, {
name : "url",
rule : function(v) {
return /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i
.test(v.trim());
},
msg : $i18n$.RULES.ENTER_A_REGAL_URL
}, {
name : "date",
rule : function(v) {
var re = /^[\d]{4}-[\d]{1,2}-[\d]{1,2}\s*[\d]{1,2}:[\d]{1,2}:[\d]{1,2}|[\d]{4}-[\d]{1,2}-[\d]{1,2}|[\d]{1,2}:[\d]{1,2}:[\d]{1,2}$/g
.test(v.trim());
return re;
},
msg : $i18n$.RULES.ENTER_A_REGAL_DATE
}, {
name : "digits",
rule : function(v) {
return /^\d+$/.test(v.trim());
},
msg : $i18n$.RULES.ENTER_DIGITS
}, {
name : "equalTo",
rule : function(v, b) {
var a = $("#" + b).val();
return (v.trim() == a.trim());
},
msg : $i18n$.RULES.NOT_EQUAL_TWICE
}, {
name : "range",
rule : function(v, args) {
return v <= args[1] && v >= args[0];
},
msg : $i18n$.RULES.ENTER_NUM_RANGE
}, {
name : "maxvalue",
rule : function(v, max) {
return v <= max;
},
msg : $i18n$.RULES.MAX_VALUE
},{
name : "minvalue",
rule : function(v, min) {
return v >= min;
},
msg : $i18n$.RULES.MIN_VALUE
},{
// 判断数字整数位
name : "maxIntLen",
rule : function(v, b) {
return (v + '').split(".")[0].replaceAll(",","").length <= b;
},
msg : $i18n$.RULES.MAX_INT_LEN
}, {
// 判断数字小数位
name : "maxDecimalLen",
rule : function(v, b) {
return (v + '').replace(/^[^.]*[.]*/, '').length <= b;
},
msg : $i18n$.RULES.MAX_DECIMAL_LEN
}, {
// 判断日期范围{dateRangeStart:'xx'} xx:结束时间的日期的ID
name : "dateRangeStart",
rule : function(v, b) {
var end = $("#" + b).val();
return daysBetween(v, end);
},
msg : $i18n$.RULES.DATE_RANGE_START
}, {
// 判断日期范围{dateRangeEnd:'xx'} xx:开始时间的日期的ID
name : "dateRangeEnd",
rule : function(v, b) {
var start = $("#" + b).val();
return daysBetween(start, v);
},
msg : $i18n$.RULES.DATE_RANGE_END
}];
/**
* 验证每个元素
* @param me
* @param el
* @param validRule
* @param ngModel
* @param viewValue
* @returns
*/
scope._validEach = function (me,el,validRule,ngModel,viewValue){
var value = '';
try{
value= eval('( me.'+ngModel + ')');
if(value === null || value === undefined || value === '')
value = '';
} catch (e) {
}
value =viewValue?viewValue: value;
if(!validRule)
return '';
// 获取json。
var json = eval('(' + validRule + ')');
//必填
var isRequired = json.required;
// 非必填的字段且值为空 那么直接返回成功。
if ((isRequired == false || isRequired == undefined) && value == "" )
return '';
for (var name in json) {
var validValue = json[name];
var msg = me._validRules({
rules:me._rules,//规则json
ruleName:name,// 规则名称
validValue:validValue,//验证的值
value:value//实际的值
},me);
if (msg != '')
return msg;
}
return '';
}
/**
* 判断元素是否在不需要校验的范围内。
*/
scope._isInNotValid= function(el) {
var nodeName ,
type = el.attr('type');
if(el)
nodeName = el[0].nodeName.toLowerCase();
//判断是否隐藏
if(type== 'checkbox' ||
type == 'radio')//单选、复选
el = el.parent().parent().parent().parent().parent();
else if(nodeName && nodeName == 'select')//下拉
el = el.parent();
if(el.hasClass('uhide'))
return true;
//if($(obj).is(":hidden"))return true;
// if (!this.excludes)
// return false;
// var scope = $(this.excludes, this);
// var aryInput = $(
// "input:text,input:hidden,textarea,select,input:checkbox,input:radio",
// scope);
// for (var i = 0, len = aryInput.length; i < len; i++) {
// var tmp = aryInput.get(i);
// if (obj == tmp) {
// return true;
// }
// }
return false;
};
/**
* 错误提示
* @param el
* @param msg
* @returns
*/
scope._error = function(el,msg){
var parent = el.parent(),isdate= false,controltype=el.attr("controltype") ;
if(el.attr('type') == 'checkbox' ||
el.attr('type') == 'radio'){//单选、复选
parent = parent.parent().parent().parent().parent();
if(!parent.hasClass("has-error")) {
parent.addClass('has-error');
}
//日期格式是yyyy-MM-dd HH:mm:ss 有bug
}else if(el.attr('datefmt') && (el.attr('datefmt') == 'yyyy-MM-dd HH:mm:ss'||el.attr('datefmt') == 'yyyy-MM-dd HH:mm:00' )){
isdate = true;
parent = parent.parent();
if(!parent.hasClass("has-error")) {
parent.addClass('has-error');
}
}else if(controltype=="input"||controltype=="textarea"){
if(!parent.hasClass("has-error")) {
parent.addClass('has-error');
}
}else if(!el.hasClass("has-error")) {
el.addClass('has-error');
}
if(parent.parent()[0].querySelectorAll(".__cvToolTip").length==0){
var tips=angular.element('
');
if(controltype=="textarea"||controltype=="input"||controltype=="select" || (!isdate&&(controltype=="date" ||controltype=="time")) ){
parent.parent().append(tips);
tips.css({"float":"right"})
}else{
parent.append(tips);
}
}
};
/**
* 正确提示
* @param el
* @returns
*/
scope._success = function(el){
var parent = el.parent(),isdate= false,controltype=el.attr("controltype") ;
if(el.attr('type') == 'checkbox' ||
el.attr('type') == 'radio'){//单选、复选
parent = parent.parent().parent().parent();
if (parent.parent().hasClass("has-error")) {
parent.parent().removeClass('has-error');
}
}
if(el.attr('datefmt') && (el.attr('datefmt') == 'yyyy-MM-dd HH:mm:ss'||el.attr('datefmt') == 'yyyy-MM-dd HH:mm:00' )){
isdate = true;
if (parent.parent().hasClass("has-error")) {
parent.parent().removeClass('has-error');
}
if(controltype=="date"&&parent.next().next('div').hasClass("__cvToolTip")){
parent.next().next('div').remove();
}
if (parent.hasClass("has-error")) {
parent.removeClass('has-error');
}
}
if (el.hasClass("has-error")) {
el.removeClass('has-error');
}
if (parent.hasClass("has-error")) {
parent.removeClass('has-error');
}
if (parent.parent().hasClass("has-error")) {
parent.parent().removeClass('has-error');
}
if(controltype=="dicCombo"||el.attr("selector")=="selector"||el.attr("selector")=="file" ){
parent = el;
}
if((!isdate&&(controltype=="date" ||controltype=="time"))){
parent = el.parent();
}
if(el.next('div').hasClass("__cvToolTip"))
el.next('div').remove();
if(parent.next('div').hasClass("__cvToolTip"))
parent.next('div').remove();
if(parent.parent().next('div').hasClass("__cvToolTip"))
parent.parent().next('div').remove();
};
scope._handValidResult = function(me,el,validRule,ngModel,viewValue) {
// 是否在不需要验证的范围内,在的话就不需要验证。
if (me._isInNotValid(el)){
me._success(el);
return true;
}
var msg = me._validEach(me,el,validRule,ngModel,viewValue);
me._success(el);
if (msg != '') {
me._error(el,msg);
return false;
} else {
me._success(el);
return true;
}
};
/**
* 验证表单
* @param conf
* {
* ignoreRequired: 是否忽略必填
* element:angular的节点
* dom: dom属性
* withoutdom:
* }
* @returns
*/
scope.valid = function(conf){
scope.ignoreRequired= conf?((conf.ignoreRequired==undefined)?false:conf.ignoreRequired):false;
var _v = true,doms=[];
if(conf&&conf.element){
var el =conf.element,
me =el.scope(),
validate = el.attr("validate"),
ngModel = el.attr("ng-model");
var rtn = scope._handValidResult(me,el,validate,ngModel);
if (!rtn)
_v = false;
}else{
if(conf&&conf.dom){
doms = conf.dom.querySelectorAll("[validate]");
}else if(conf&&conf.withoutdom){
doms = document.querySelectorAll("[validate]");
for(var i=0;i
1950 ) ? tempDate : "";
});
}
};
})
/**
* 监听时间改变后的格式化
* @param {Object} $parse
*/
.directive('ngDateChange', function ($parse) {
return {
require:'^ngModel',
restrict:'A',
priority:2,
link:function (scope, elm, attrs, ctrl) {
var proxyExp = attrs.ngDateChange;
var modelExp = attrs.ngModel;
scope.$watch(proxyExp, function (nVal,oVal) {
if (nVal != oVal)
$parse(modelExp).assign(scope, nVal);
});
}
};
})
.directive('controltype', function($compile,$timeout){
return {
restrict: 'A',
scope: {},
priority:1,
link:function(scope,element,attrs){
var wrap="";
var html="";
switch(attrs.controltype){
case "radio":
element.addClass("uhide");
if(attrs.readonly){
element.parent().parent().parent().find("li").eq(0).addClass('t-disable');
}else{
element.parent().parent().attr({
"onclick": "zy_for_input(event)",
"ontouchstart": "zy_touch('c-foc')"
});
}
wrap='
';
html = '' ;
element.wrap(wrap).after(html);
if(attrs.checked)element[0].checked = "checked";
break;
case "checkbox":
element.addClass("uhide");
var ul = element.parent().parent();
ul.attr({
"onclick": "zy_for_input(event)",
"ontouchstart": "zy_touch('c-foc')"
});
wrap='
';
html = '' ;
element.wrap(wrap).after(html);
break;
case "date":
if(element.attr("ng-date-format")) return;
if(element.attr("wrap")){
element.parent().addClass("ub-f1").addClass("time-div").addClass("w95").addClass("mar-t043").removeClass("t-right").removeClass("umar-l1").removeClass("mar-t-03");
element.addClass("user-c-bd");
element.parent().parent().addClass("ub-ver");
var preli=element.parent().parent().find("li").eq(0);
preli.addClass("ub-f1").addClass("w100");
}
var dateWrap=' ' +
'
';
var timeWrap=' ' +
'
';
var html =''+
'
';
var dateFmt=attrs.datefmt;
//时间的格式
var formatArrs=["yyyy-MM-dd","yyyy-MM-dd HH:mm:ss","yyyy-MM-dd HH:mm:00","HH:mm:ss"];
//设置默认格式为yyyy-MM-dd
dateFmt=dateFmt?dateFmt:"yyyy-MM-dd";
var ngModel=attrs.ngModel;
element.attr({"ng-date-change":ngModel});
element.addClass("ub-f1").addClass("ipt-date").css("text-align","left");
switch(dateFmt) {
case formatArrs[0]:
element.wrap(dateWrap).after(html);
element.attr("ng-date-format",formatArrs[0]);
element.attr("ng-date-format","yyyy-MM-dd");
break;
case formatArrs[1]:
case formatArrs[2]:
var elementTemp=element.clone().attr({"controltype":"time","ng-date-format":"hh:mm","ng-date-change":ngModel});
// (elementTemp.wrap(timeWrap).after(html).parent().addClass("umar-t")).parent().after(element.wrap(dateWrap).after(html));
(element.wrap(dateWrap).after(html)).parent().after(elementTemp.wrap(timeWrap).after(html).parent().addClass("umar-t"));
element.attr({"ng-date-format":formatArrs[0]});
elementTemp.addClass("ub-f1").addClass("ipt-date").css("text-align","left");
$compile(elementTemp)(scope.$parent);
break;
case formatArrs[3]:
element.wrap(timeWrap).after(html);
element.attr("ng-date-format","hh:mm");
break;
}
$compile(element)(scope.$parent);
break;
case "select":
wrap='
';
html ='
';
element.wrap(wrap).addClass("select").parent().prepend(html);
break;
case "file":
// element.parent().addClass("user-c-bd").addClass("ub-f1").addClass("w95").removeClass("t-right").removeClass("umar-l1").removeClass("mar-t-03");
// var pui=element.parent().parent();
// pui.addClass("ub-ver");
// var preli=element.parent().parent().find("li").eq(0);
// preli.addClass("ub-f1").addClass("w100");
//
// wrap='
';
// html ='';
// element.removeClass("mr42");
// element.wrap(wrap).after(html);
break;
case "input":
if (element.attr("wrap")) {
element.parent().addClass("user-c-bd").addClass("ub-f1").addClass("w95").removeClass("t-right").removeClass("umar-l1").removeClass("mar-t-03");
var pui = element.parent().parent();
pui.addClass("ub-ver");
var preli = element.parent().parent().find("li").eq(0);
preli.addClass("ub-f1").addClass("w100");
}
wrap='
';
element.addClass("t-left").addClass("t-888");
element.wrap(wrap);
break;
case "textarea":
if (element.attr("wrap")) {
element.parent().addClass("user-c-bd").addClass("ub-f1").addClass("w95").removeClass("t-right").removeClass("umar-l1").removeClass("mar-t-03");
var pui = element.parent().parent();
pui.addClass("ub-ver");
var preli = element.parent().parent().find("li").eq(0);
preli.addClass("ub-f1").addClass("w100");
}
wrap='
';
element.addClass("t-888");
element.wrap(wrap);
break;
case "toggle":
wrap='
';
html =' ';
element.wrap(wrap).after(html);
break;
}
}
};
})
.directive('file', function() {
return {
restrict: 'E',
transclude: true,
scope: {},
controller: function($scope,$attrs,$element,baseService) {
$scope.files = [];
$scope.ngModel=$attrs.ngModel;
$scope.mutil = $attrs.mutil||"true";
$scope.readonly = true;
if($attrs.write&&$attrs.write=='true'){
$scope.readonly = false;
}
$scope.wrap = function(){
$element.parent().addClass("user-c-bd").addClass("ub-f1").addClass("w95").removeClass("t-right").removeClass("umar-l1").removeClass("mar-t-03");
var pui = $element.parent().parent();
pui.addClass("ub-ver");
var preli = $element.parent().parent().find("li").eq(0);
preli.addClass("ub-f1").addClass("w100");
}
$scope.open = function(ngModel){
HT.fileTarget.scope=$scope.$parent;
HT.fileTarget.ngModel=ngModel;
var html = '';
baseService.openDialog({
title: $i18n$.FILE.UPLOAD,
html: html,
buttons: [{
label: $i18n$.COMMON.CANCEL,
callback: function(){
baseService.closeDialog();
}
}]
})
}
/**
* //TODO 通过fileId获取用户信息,首先从常用联系人中获取,没有则从服务器获取
* @param file
* @returns
*/
$scope.displayDetail = function(file){
var buttons = [{
label: $i18n$.COMMON.CANCEL,
callback: function(){
baseService.closeDialog();
}
}]
var showdialog = function(u, buttons, digest){
var html = '';
baseService.openDialog({
title: $i18n$.FILE.FILEINFO,
html: html,
digest: digest,
buttons: buttons
});
}
showdialog(file,buttons,false);
};
if ($attrs.wrap)
$scope.wrap();
},
template:''
+'
'
+''
+''
+'{{file.name}}
'
+''
+'
',
replace: true
};
})
/**
* 选择器值监听
*/
.directive('selector', function($compile) {
return {
restrict: 'A',
priority:4,
link:function (scope, elm, attrs, ctrl) {
//修改该方法要修改util.addSubTableCol()
var parentScope = scope.$parent;
if(attrs.selector=="selector"){
parentScope.$watch(attrs.refid,function(newVal,oldVal){
var ary = [];
if(oldVal&&newVal==oldVal)return;
if (newVal) {
if (!HT.isStirng(newVal))
newVal = new String(newVal);
var ids = newVal.split(',');
var name = 'parentScope.' + attrs.ngModel;
var nameStr = eval('(' + name + ')');
var uns = nameStr.split(',');
var count = ids.length;
for (var i = 0; i < count; i++) {
var id = ids[i], un = uns[i];
if(un){
ary.push({
"id": id,
"un": un
});
}
}
}
scope.users = ary;
parentScope.valid();
});
}else if(attrs.selector=="file"){
parentScope.$watch(attrs.ngModel,function(newVal,oldVal){
if(!newVal||newVal.indexOf("¥@@¥")==-1)return;
var jsonArr=eval(newVal.replaceAll("¥@@¥","\""));
if(scope.files.length>0){
scope.files=jsonArr;
}else{
for(var i=0;i
';
var nullpic=attrs.nullPic?attrs.nullPic:'icon-smiley';
elm.parent().append("
");
var ngNullPage=HT.$($$("ngNullPage"));
scope.$watch(attrs.ngNullPage, function(newVal, oldVal) {
if((newVal&&newVal.length==0)||(attrs.isText&&!newVal)){
elm.addClass("uhide");
ngNullPage.removeClass("uhide");
}else{
elm.removeClass("uhide");
ngNullPage.addClass("uhide");
}
});
}
}
}).directive('modalDialog', function() {
return {
restrict: 'E',
scope: {
show: '='
},
replace: true, // Replace with the template below
transclude: true, // we want to insert custom content inside the directive
link: function(scope, element, attrs) {
scope.dialogStyle = {};
if (attrs.width) scope.dialogStyle.width = attrs.width;
if (attrs.height) scope.dialogStyle.height = attrs.height;
scope.hideModal = function() {
scope.show = false;
};
},
template: '
'
};
});