123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554 |
- /**
- * 字段管理。
- * @returns {FieldsManage}
- */
- FieldsManage=function(){
- {
- this.Fields=[];
- }
- /**
- * 设置字段
- */
- this.setFields=function(aryFields){
- this.Fields=aryFields;
- };
-
- /**
- * 添加字段。
- */
- this.addField=function(field){
- var rtn=this.isFieldExist(field.fieldName);
- if(rtn) return ;
- this.Fields.push(field);
- };
-
-
- this.delField=function(fieldName){
- for(var i=this.Fields.length-1;i>=0;i--){
- var field=this.Fields[i];
- if(field.fieldName.toLowerCase()==fieldName.toLowerCase()){
- this.Fields.splice(i,1);
- }
- }
- };
-
- /**
- * 更新字段。
- */
- this.updField=function(field){
- for(var i=this.Fields.length-1;i>=0;i--){
- var tmp=this.Fields[i];
- if(tmp.fieldName.toLowerCase()==field.fieldName.toLowerCase()){
- var defaults=this.Fields[i];
- field= $.extend({}, defaults, field);
- this.Fields[i]=field;
- }
- }
- };
-
- /**
- * 替换列字段。
- * oldFieldName:原来字段名称。
- * 代替的字段对象。
- */
- this.replaceByFieldName=function(oldFieldName,field){
- for(var i=0;i<this.Fields.length;i++){
- var tmpField=this.Fields[i];
- if(tmpField.fieldName.toLowerCase()==oldFieldName.toLowerCase()){
- var defaults=this.Fields[i];
- field= $.extend({}, defaults, field);
- this.Fields[i]=field;
- };
- };
- };
-
- /**
- * 判断字段是否存在。
- */
- this.isFieldExist=function(name){
- for(var i=0;i<this.Fields.length;i++){
- var field=this.Fields[i];
- var fieldName=field.fieldName.toLowerCase();
- name=name.toLowerCase();
- //判断选择控件。(用户,组织,岗位,角色)
- var rtn=this.isExecutorSelector(field.controlType);
- if(rtn){
- var fieldId=fieldName +"id";
- if(fieldName==name || fieldId==name){
- return true;
- }
- }
- else{
- if(fieldName==name){
- return true;
- }
- }
- }
- return false;
- };
-
- /**
- * 是否选择器。
- */
- this.isExecutorSelector =function(ctlType){
- ctlType=parseInt(ctlType);
- if(ctlType==4 || ctlType==8 || ctlType==17 || ctlType==5 || ctlType==18
- || ctlType==6 || ctlType==19 || ctlType==7)
- return true;
- return false;
- };
-
- /**
- * 将字段向上或向下移动。
- */
- this.moveField=function(fieldName,isUp){
- //获取索引
- var idx=this.getFieldIndex(fieldName);
-
- if(idx==-1)
- return false;
- var next=0;
- var canMove=false;
- if(isUp){
- if(idx>0){
- next=idx-1;
- canMove=true;
- }
- }
- else{
- if(idx<this.Fields.length-1){
- next=idx+1;
- canMove=true;
- }
- }
- //交换位置。
- if( canMove){
- var temp=this.Fields[idx];
- this.Fields[idx]=this.Fields[next];
- this.Fields[next]=temp;
- }
- return canMove;
- };
- /**
- * 根据字段名获取索引。
- */
- this.getFieldIndex=function(fieldName){
- for(var i=0;i<this.Fields.length;i++){
- var field=this.Fields[i];
- if(field.fieldName.toLowerCase()==fieldName.toLowerCase()){
- return i;
- }
- }
- return -1;
- };
-
- /**
- * 根据字段名称取得字段。
- */
- this.getFieldByName=function(fieldName){
- for(var i=0;i<this.Fields.length;i++){
- var field=this.Fields[i];
- if(field.fieldName.toLowerCase()==fieldName.toLowerCase()){
- return field;
- }
- }
- return null;
- };
-
- /**
- * 根据索引取得字段。
- */
- this.getFieldByIndex=function(idx){
- idx=parseInt(idx);
- if(idx>=0 && idx<this.Fields.length){
- return this.Fields[idx];
- }
- return null;
- };
-
- /**
- * 取得复选框。
- */
- this.getCheckBox=function(field,optionType){
- return "<input type='checkbox' name='"+optionType+"' "+((field[optionType]==1)?"checked":"")+"/>";
- };
-
- /**
- * 取得字段类型。
- */
- this.getFieldType=function(field){
- var fieldType=field.fieldType;
- if(fieldType=="varchar"){
- fieldType= fieldType + "(" + field.charLen +")";
- }
- else if(fieldType=="number"){
- var intLen=field.intLen;
- var decimalLen=field.decimalLen;
- if(decimalLen==0){
- fieldType= fieldType + "(" + intLen +")";
- }
- else{
- fieldType= fieldType + "(" + intLen +"," + decimalLen+")";
- }
-
- }
- return fieldType;
- };
- /**
- * 获取html
- */
- this.getHtml=function(conf){
- conf=conf || {showDel:true};
- var sb=new StringBuffer();
- for(var i=0;i<this.Fields.length;i++){
- var clsName=(i%2==0)?"odd":"even";
- var field=this.Fields[i];
- var fieldType=this.getFieldType(field);
-
- //隐藏字段不显示
- if(field.isHidden==1 ) continue;
- var del= ((field.isDeleted==0)?" ":"√"),isDel = ((field.isDeleted==0)?false:true);
- sb.append("<tr fieldName='"+field.fieldName+"' class='");
- sb.append(clsName);
- sb.append("'>");
- var desc = field.fieldDesc;
- sb.append("<td class='editField' name='fieldName' >"+this.delStyle(field.fieldName,isDel)+"</s></td>");
- if(desc.length>15){
- desc=desc.substr(0,15)+"...";
- }
- sb.append("<td class='editField' name='fieldDesc' "+"title='"+field.fieldDesc+"' >"+this.delStyle(desc,isDel)+"</td>");
- sb.append("<td>"+fieldType+"</td>");
- sb.append("<td style='text-align:center;'>"+this.getCheckBox(field,"isRequired") +"</td>");
- sb.append("<td style='text-align:center;' name='Listtd'>"+this.getCheckBox(field,"isList")+"</td>");
- if(fieldType.indexOf('clob')!=-1 || isHideFlowVar(field.controlType)){
- sb.append("<td style='text-align:center;'> </td>");
- }else{
- sb.append("<td style='text-align:center;'>"+this.getCheckBox(field,"isFlowVar") +"</td>");
- }
- if(conf.showDel){
- sb.append("<td style='text-align:center;'>"+del+"</td>");
- }
-
- // sb.append("<td style='text-align:center;'>"+this.getCheckBox(field,"isReference") +"</td>");
- // sb.append("<td style='text-align:center;'>"+this.getCheckBox(field,"ccisread") +"</td>");
- // if(fieldType.indexOf('number')!=-1){
- // sb.append("<td style='text-align:center;'>"+this.getCheckBox(field,"isShowComdify")+"</td>");
- // }else{
- // sb.append("<td style='text-align:center;'> </td>");
- // }
- sb.append("<td>" +((field.isDeleted==0)?"<a href='#"+field.fieldName+"' name='editColumn' >编辑</a>":" ")+"</td>");
- sb.append("</tr>");
- }
- return sb.toString();
- };
-
-
- /**
- * 获取指定列名的Element
- */
- this.getFieldItem=function(fieldName,showDel){
- var sb=new StringBuffer();
- for(var i=0;i<this.Fields.length;i++){
- var field=this.Fields[i];
- if(field.fieldName!=fieldName){
- continue;
- }
- var clsName=(i%2==0)?"odd":"even";
- var fieldType=this.getFieldType(field);
- //隐藏字段不显示
- if(field.isHidden==1 ) continue;
- var del= ((field.isDeleted==0)?" ":"√"),isDel = ((field.isDeleted==0)?false:true);
- sb.append("<tr fieldName='"+field.fieldName+"' class='");
- sb.append(clsName);
- sb.append("'>");
- sb.append("<td class='editField' name='fieldName' >"+this.delStyle(field.fieldName,isDel)+"</s></td>");
- sb.append("<td class='editField' name='fieldDesc'>"+this.delStyle(field.fieldDesc,isDel)+"</td>");
- sb.append("<td>"+fieldType+"</td>");
- sb.append("<td style='text-align:center;'>"+this.getCheckBox(field,"isRequired") +"</td>");
- sb.append("<td style='text-align:center;' name='Listtd'>"+this.getCheckBox(field,"isList")+"</td>");
- if(fieldType.indexOf('clob')!=-1 || isHideFlowVar(field.controlType)){
- sb.append("<td style='text-align:center;'> </td>");
- }else{
- sb.append("<td style='text-align:center;'>"+this.getCheckBox(field,"isFlowVar") +"</td>");
- }
- if(showDel==1){
- sb.append("<td style='text-align:center;' name='showdel'>"+del+"</td>");
- }
-
- // sb.append("<td style='text-align:center;'>"+this.getCheckBox(field,"isReference") +"</td>");
- // sb.append("<td style='text-align:center;'>"+this.getCheckBox(field,"ccisread") +"</td>");
- // if(fieldType.indexOf('number')!=-1){
- // sb.append("<td style='text-align:center;'>"+this.getCheckBox(field,"isShowComdify")+"</td>");
- // }else{
- // sb.append("<td style='text-align:center;'> </td>");
- // }
- sb.append("<td>" +((field.isDeleted==0)?"<a href='#' name='editColumn' >编辑</a>":" ")+"</td>");
- sb.append("</tr>");
- }
- return $(sb.toString());
- };
-
- /**
- * 删除字段
- */
- this.delStyle = function(name,isDel){
- if(isDel)
- return '<s>'+name+'</s>';
- return name
- };
-
- };
- var isEdited = false;
- /**
- * 表的行操作
- */
- if (typeof TableRow == 'undefined') {
- TableRow = {};
- }
- /**
- * 设置列管理对象。
- * @param fieldManage
- */
- TableRow.setFieldManage=function(fieldManage){
- TableRow.fieldManage=fieldManage;
- };
- /**
- * 设置字段名是否允许编辑
- * @param allowEditColName
- */
- TableRow.setAllowEditColName=function(allowEditColName){
- TableRow.allowEditColName=allowEditColName;
- };
- TableRow.setIsExternal=function(isExternal){
- TableRow.isExternal=isExternal;
- };
- TableRow.isEdit=false;
- /**
- * 是否编辑。
- */
- TableRow.setIsEdit=function(_isEdit){
- TableRow.isEdit=_isEdit;
- }
- /**
- * 删除行
- */
- TableRow.del=function(){
- var objTr=$("#tableColumnItem>tbody .over");
- if(objTr.length==0) {
- $.ligerDialog.warn('还没有选中列!','提示');
- return;
- };
- var fieldName=objTr.attr("fieldName");
- var field=TableRow.fieldManage.getFieldByName(fieldName);
- if(field.isRequired){
- $.ligerDialog.warn('该列为必填列,不能删除!','提示');
- return;
- }
- TableRow.fieldManage.delField(fieldName);
- objTr.remove();
- };
- /**
- * 移动行
- */
- TableRow.move=function(direct){
- var objTr=$("#tableColumnItem>tbody .over");
- if(objTr.length==0) return;
- var fieldName=objTr.attr("fieldName");
- var rtn=TableRow.fieldManage.moveField(fieldName,direct);
- if(!rtn) return;
- if(direct){
- var prevObj=objTr.prev();
- objTr.insertBefore(prevObj);
- }
- else{
- var nextObj=objTr.next();
- objTr.insertAfter(nextObj);
- }
- };
- /**
- * 添加列。
- */
- TableRow.addColumn=function(isMain){
- var isEdit=TableRow.isEdit;
- ColumnDialog({isAdd:true,isMain:isMain,fieldManage:TableRow.fieldManage,isExternal:0, callBack:function(field){
- isEdited = true;
- var rtn=TableRow.fieldManage.isFieldExist(field.fieldName);
- if(rtn) return false;
- TableRow.fieldManage.addField(field);
- //$("#tableColumnItem>tbody").empty();
- var newTr = $(TableRow.fieldManage.getFieldItem(field.fieldName,TableRow.allowEditColName?0:1));
- newTr.addClass("newColumn");
- newTr.attr('style','background-color:FFE2D7;')
- newtd = newTr.find("td[name='fieldDesc']");
- newtd.attr("title",field.fieldDesc)
- var desc= field.fieldDesc;
- if(desc.length>15){
- desc=desc.substr(0,15)+"...";
- }
- newtd.html(desc);
- $("#tableColumnItem>tbody").append(newTr);
- handisList();
- return true;
- }});
- };
- handisList=function(){
- var ismain=$("input[name='isMain']:checked").val();
- var objTd=$("td[name='Listtd']");
- var objTh=$("th[name='Listth']");
- if(ismain=='1'){
- objTd.show();
- objTh.show();
- }else{
- objTh.hide();
- objTd.hide();
- }
- }
- /**
- * 编辑字段
- */
- TableRow.editField=function(fieldName,isMain){
- var tmpField=TableRow.fieldManage.getFieldByName(fieldName);
- if(tmpField==null) return;
- //当前编辑的行
- var curTr =$("tr[fieldname="+fieldName+"]","#tableColumnItem>tbody");
- //最初,是否是流程变量
- var isFlowVar = $("[name=isFlowVar]",curTr).data("isFlowVar");
- ColumnDialog({isAdd:false,
- isMain:isMain,
- allowEditColName:TableRow.allowEditColName||curTr.hasClass("newColumn"),
- fieldManage:TableRow.fieldManage,
- field:tmpField,
- isFlowVar:isFlowVar,
- isExternal:TableRow.isExternal,
- callBack:function(field){
-
- if(TableRow.fieldManage.isFieldExist(field.fieldName)){
- TableRow.fieldManage.updField(field);
- }
- else{
- TableRow.fieldManage.replaceByFieldName(fieldName,field);
- }
- //$("#tableColumnItem>tbody").empty();
- var showDel=1;
- if(TableRow.allowEditColName || TableRow.isExternal==1){
- showDel=0;
- }
-
- var newTr = $(TableRow.fieldManage.getFieldItem(field.fieldName,showDel));
- if(curTr.length>0){
- $("[name=isFlowVar]",newTr).data("isFlowVar",isFlowVar);
- if(!TableRow.allowEditColName){
- if(isFlowVar){
- $("[name=isFlowVar]:checked",newTr).each(function(){
- var _this = $(this);
- _this.attr("disabled","disabled");
- });
- }
- }
- curTr.replaceWith(newTr);
- }else{
- newTr.data("isFlowVar",isFlowVar);
- $("#tableColumnItem>tbody").append(newTr);
- }
-
- if(tableId!=0){
- isEdited = true;
- $("#tableColumnItem>tbody>tr:[fieldname="+field.fieldName+"]").attr('style','background-color:#FFE2D7;');
- }
-
- handisList();
- return true;
- }});
- };
- /**
- * 编辑列名及注释
- */
- TableRow.editNameComment=function(tdObj){
- var trObj=tdObj.parent();
- var idx=$("#tableColumnItem>tbody>tr").index(trObj);
-
- var field=TableRow.fieldManage.getFieldByIndex(idx);
- var fieldName=tdObj.attr("name");
- //字段名称不允许编辑
- if(!TableRow.allowEditColName && !trObj.hasClass("newColumn")){
- //field.fieldId为undefined表示新添加的字段,否则为原来的字段。
- if(fieldName=="fieldName" )
- return ;
- }
- var hasInput=tdObj.has("input").length==1;
- if(!hasInput){
- var txtObj=$("<input type='text' class='inputText' maxlength='20' size='20' value='"+tdObj.text()+"' />");
- if(tdObj.attr("title")){
- txtObj=$("<input type='text' class='inputText' maxlength='20' size='20' value='"+tdObj.attr("title")+"' />");
- }
- txtObj.blur(function(){
- var tmpObj=$(this);
- var val=tmpObj.val();
- if(tmpObj.parent().attr("title")){
- tmpObj.parent().attr("title",val);
- }
- if(val.length>15){
- val=val.substr(0,15)+"...";
- }
- tmpObj.parent().text(val);
- tmpObj.remove();
- field[fieldName]=val;
- if(tableId!=0){
- isEdited = true;
- $("#tableColumnItem>tbody>tr:[fieldname="+field.fieldName+"]").attr('style','background-color:#FFE2D7;');
- }
- });
- tdObj.empty();
- tdObj.append(txtObj);
- txtObj.focus();
- }
- };
- /**
- * 编辑字段的选项。
- */
- TableRow.editFieldOption=function (chkObj){
- var fieldName=chkObj.attr("name");
- var checked=chkObj.attr("checked");
- var trObj=chkObj.parents("tr");
- var idx=$("#tableColumnItem>tbody>tr").index(trObj);
- var field=TableRow.fieldManage.getFieldByIndex(idx);
- field[fieldName]=(checked!=undefined)?1:0;
- };
- //根据字段描述生成字段名
- function autoGetKey(inputObj){
- var subject=$(inputObj).val();
- if($.trim(subject).length<1) return;
- $.ajax({
- url: __ctx + '/platform/form/bpmFormTable/getFieldKey.ht',
- //async:false,
- type:'POST',
- data: ({subject : subject}),
- success: function(data){
- var json=eval('('+data+')');
- if(json.result==1 && $.trim($('#fieldName').val()).length<1 ){
- $('#fieldName').val(json.message);
- validateField().form();
- }
- }
- });
- }
|